% \iffalse meta-comment % % Copyright © 1989–2005 Johannes L. Braams and any individual authors % listed elsewhere in this file. All rights reserved. % Copyright © 2022 by Marcin Woliński % % This file is intended to be used with the Babel system. % ------------------------------------------------------ % % It may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3 % of this license or (at your option) any later version. % The latest version of this license is in % http://www.latex-project.org/lppl.txt % and version 1.3 or later is part of all distributions of LaTeX % version 2003/12/01 or later. % % This work has the LPPL maintenance status "maintained". % % The Current Maintainer of this work is Marcin Woliński. % % The list of derived (unpacked) files belonging to the distribution % and covered by LPPL is defined by the unpacking scripts (with % extension .ins) which are part of the distribution. % \fi % \CheckSum{700} % % \iffalse % Tell the \LaTeX\ system who we are and write an entry on the % transcript. %<*dtx> \ProvidesFile{polish.dtx} % %\ProvidesLanguage{polish} %\fi %\ProvidesFile{polish.dtx} [2022/03/12 1.3 Babel support for Polish] %\iffalse %<*filedriver> \documentclass{ltxdoc} \usepackage{lmodern} \usepackage[QX]{fontenc} \usepackage{array,ot1patch} \usepackage[hidelinks]{hyperref} \title{Babel support for Polish} \author{\normalsize current maintainer: Marcin Woliński} \date{Version \fileversion, \filedate} \newcommand*\babel{\textsf{babel}} \newcommand*\langvar{$\langle \it lang \rangle$} \newcommand*\note[1]{} \newcommand*\Lopt[1]{\textsf{#1}} \newcommand*\file[1]{\texttt{#1}} \begin{document} \DocInput{polish.dtx} \end{document} % %\fi % \GetFileInfo{polish.dtx} % \maketitle % % \changes{polish-1.1c}{1994/06/26}{Removed the use of \cs{filedate} % and moved identification after the loading of babel.def} % \changes{polish-1.2d}{1996/10/10}{Replaced \cs{undefined} with % \cs{@undefined} and \cs{empty} with \cs{@empty} for consistency % with \LaTeX, moved the definition of \cs{atcatcode} right to the % beginning.} % % \section{Basic Usage} % % Typesetting Polish with \TeX\ is, surprisingly, more difficult % than setting most other European languages. Polish uses several % accented characters. Some of them, including \textit{ć, ń, ó, ś, % ź, ż, Ć, Ń, Ó, Ś, Ź, Ż}, can be reasonably rendered by attaching % “floating diacritics” to Latin letters. More problematic is the % letter \textit{ł/Ł}, but legend has it that Donald Knuth needed % to include the name \textit{Łukasiewicz} in his TAOCP, so he % included a “diacritic” stroke in his Computer Modern fonts. % Unfortunately, he had no reason to mention \textit{Wałęsa} % anywhere in TAOCP, and in result the % “ogonek\footnote{The Polish name seems to also be the official % English name of the diacritic:\\ % \url{https://en.wikipedia.org/wiki/Ogonek}.} accent” is not % present in original \TeX\ fonts. A different set of fonts is % necessary to properly render Polish characters with ogonek: % \emph{ą, ę, Ą, Ę} (these characters are also used in Lithuanian % along with \textit{į, ų, Į, Ų}). % % In Unicode \TeX\ engines (Xe\LaTeX, lua\LaTeX), Latin Modern % fonts are used by default and these include a rich repertoire of % accented Latin characters. With these engines, it’s enough to % load Babel with the Polish module: % \begin{verbatim} % \usepackage[polish]{babel} % \end{verbatim} % % The matter is more complicated in the case of classical \LaTeX\ % (including pdf\LaTeX). To obtain correct Polish letters, it is % necessary to switch the document to a suitable font encoding. % One possibility is: % \begin{verbatim} % \usepackage[OT4]{fontenc} % \usepackage[polish]{babel} % \end{verbatim} % This will result in a document typeset using the Polish % adaptation of Knuth’s classical Computer Modern fonts. % % A more flexible option is the European font encoding T1, which % covers most of European languages written in the Latin script. % Unfortunately, the default fonts in this encoding are bitmap % based, which will result in sub-optimal rendering. So with T1 it % is necessary to select a different font family as well. A safe % option is to use Latin Modern (Latin Modern is practically % identical to Computer Modern, a new name was needed to keep % backward compatibility of Computer Modern): % \begin{verbatim} % \usepackage{lmodern} % \usepackage[T1]{fontenc} % \usepackage[polish]{babel} % \end{verbatim} % Many font switching packages work with T1. Besides Latin Modern, % you can expect well designed Polish characters to be present in % all fonts from the \TeX\ Gyre collection (in particular the Times % lookalike \file{tgtermes}, Bookmanish \file{tgbonum}, Century % Schoolbook-like \file{tgschola}, etc.) and in other fonts % originating from the Polish \TeX\ Users Group % GUST\footnote{\url{http://www.gust.org.pl/projects/e-foundry}}. % With Unicode engines you can also use any OpenType font present % on your system (see the \texttt{fontspec} package). % % It is also worth noting, that ogonek is not really an accent: it % has to be separately designed for each base letter to get a % typographically acceptable result. This is not the case, e.g., % for the packages in the PSNFSS set, in particular % \file{times.sty}. Although these support the T1 encoding, the % ogonek protrudes from the characters at some random angle (this % is particularly visible in the case of the letter~ę): % \begin{center}\fontencoding{T1} % \begin{tabular}{l>\Huge l<{gąbkę}>{\Huge\itshape\strut} l<{gąbkę}} % \TeX\ Gyre Termes & \fontfamily{qtm}\selectfont & % \fontfamily{qtm}\selectfont \\ % PSNFF Times & \fontfamily{ptm}\selectfont & % \fontfamily{ptm}\selectfont \\ % \end{tabular} % \end{center} % If quality is your goal, do not use \file{times.sty} for Polish, % use \file{tgtermes.sty}. % % Another element necessary for successful typesetting of Polish is % a way to encode Polish accented characters in the source file. % Fortunately, nowadays all \LaTeX\ engines assume input files to % be in Unicode, in its UTF-8 form, so if you are on a modern % system, this will work by default. (If you are forced to use % some old byte-based encoding like the standard ISO 8859-2 or its % Windows counterpart CP1250, please consult the documentation of % the \file{inputenc} package.) % % %\section{The Functions of this Module} % % As of version 1.3 the code has been updated to the new syntax % provided by Babel to declare language specific elements. In its % current form, the module is pretty typical \texttt{.ldf} file: it % defines Polish translation of language specific strings used by % \LaTeX, it ensures Polish hyphenation patterns are used, and % activates the setting known as \cs{frenchspacing}. % % Language modules of Babel typically check for the hyphenation % patterns for the language in question. In their absence, a % warning is issued and English hyphenation patterns are activated. % We find this behaviour inappropriate. Polish hyphenation % patterns are a part of standard \TeX\ distributions for over 20 % years. Inability to load them signals some configuration problem % in the system. Moreover, the use of English patterns would lead % to very badly chosen breaks in a Polish text. Thus, we have % decided to block automatic hyphenation in Polish text in this % case. In consequence, system configuration has to be corrected or % hyphenation points selected manually. % % American typography has a rule, that space after punctuation % characters is larger than typical inter-word space. This rule is % by default followed by \TeX. In Polish tradition all spaces % should be of equal width, so we activate \cs{frenchspacing} for % Polish text. % % Babel provides a mechanism for language-specific short commands % (shorthands) consisting of the character \texttt{"} followed by % one more character. Table~\ref{tab:polish-short} lists the % commands available for Polish. The shorthand \texttt{"-} is % similar to the command \cs{-} but the former does not block % automatic hyphenation in the rest of the word. The shorthand % \texttt{"=} should be used for explicit hyphens in the text. % According to Polish rules, when a break occurs at an explicit % hyphen, the hyphen gets repeated at the beginning of the new % line. So, e.g., Polish compound adjectives like % \emph{biało-czerwony} `white-and-red' should be input as % \texttt{biało"=czerwony}. % \begin{table}[ht] % \caption{Shorthands provided by the Polish module} % \label{tab:polish-short} % \begin{center} % \begin{tabular}{lp{10cm}} % |"-| & soft hyphen\\ % |"=| & explicit hyphen repeated after the break \\ % \verb="|= & disable ligature at this position.\\ % |"`| & Polish left double quote: „ \\ % |"'| & Polish right double quote: ” \\ % |"<| & French left double quote: « (used in Polish as % second level quotes)\\ % |">| & French right double quote: »\\ % \end{tabular} % \end{center} % \end{table} % % % \section{A Note on Compatibility} % \label{sec:compat} % % Incompatible changes were introduced in version 1.3 of this module. % In case of problems with processing legacy documents, please % try replacing the module invocation with the following: % \begin{verbatim} % \usepackage[polish-compat]{babel} % \end{verbatim} % This causes an exact copy of the module version v1.2l of % 2005/03/31 to be loaded. However, please be aware that this old % code has known problems (see Section~\ref{sec:compat-code}). In % compatibility mode a different list of shorthands is available, % they are listed in Table~\ref{tab:polish-quote}. % \begin{table}[htb] % \caption{Shortcuts and commands provided in the compatibility % mode. Be aware that these do not provide typographically % acceptable shapes of Polish accented characters.} % \label{tab:polish-quote} % \begin{center}\fontencoding{OT1}\selectfont % \begin{tabular}{lp{10cm}} % |"a| & or |\aob|, for a-ogonek (rendered ą)\\ % |"A| & or |\Aob|, for A-ogonek (rendered \k{A})\\ % |"e| & or |\eob|, for e-ogonek (rendered \k{e})\\ % |"E| & or |\Eob|, for E-ogonek (rendered \k{E})\\ % |"c| & or |\'c|, for accented c (\'c), % same with uppercase letters and n, o, s\\ % |"l| & or |\lpb{}|, for l with stroke (\l)\\ % |"L| & or |\Lpb{}|, for L with stroke (\L)\\ % |"r| & or |\zkb{}|, for z-dot-accent (\.z), cf. % pronounciation\\ % |"R| & or |\Zkb{}|, for Z-dot-accent (\.Z)\\ % |"z| & or |\'z|, for accented z (ź)\\ % |"Z| & or |\'Z|, for accented Z (Ź)\\ % \verb="|= & disable ligature at this position.\\ % |"-| & an explicit hyphen sign, allowing hyphenation % in the rest of the word.\\ % |""| & like |"-|, but producing no hyphen sign % (for compund words with hyphen, e.g.\ |x-""y|). \\ % |"`| & for Polish left double quote (,,). \\ % |"'| & for Polish right double quote (''). \\ % |"<| & for French left double quote (\guillemotleft). \\ % |">| & for French right double quote (\guillemotright).\\ % \end{tabular} % \end{center} % \end{table} % % \StopEventually{}\newpage % % \section{The code} % \begin{macrocode} %<*code> \LdfInit{polish}\captionspolish % \end{macrocode} % % The new code requires at least the version 3.63 of Babel where % the macro \cs{babel@texpdf} was first introduced. % \begin{macrocode} \@ifpackagelater{babel}{2021/08/30}{% }{\PackageError{polish.ldf}{Babel too old, at least version 2021/08/30 required}{}% \providecommand\babel@texpdf[4]{#1}% } % \end{macrocode} % % When this file is read as an option, i.e. by the |\usepackage| % command, \texttt{polish} could be an `unknown' language in which % case we have to make it known. So we check for the existence of % |\l@polish| to see whether we have to do something here. % % \begin{macrocode} \ifx\l@polish\@undefined \@nopatterns{Polish} \adddialect\l@polish\l@unhyphenated\fi % \end{macrocode} % % \begin{macro}{\captionspolish} % The macro |\captionspolish| defines all strings used in the four % standard documentclasses provided with \LaTeX. % \begin{macrocode} \StartBabelCommands*{polish}{captions} [unicode, charset=utf8, fontenc=TU EU1 EU2] \SetString{\prefacename}{Przedmowa} \SetString{\refname}{Literatura} \SetString{\abstractname}{Streszczenie} \SetString{\bibname}{Bibliografia} \SetString{\chaptername}{Rozdział} \SetString{\appendixname}{Dodatek} \SetString{\contentsname}{Spis treści} \SetString{\listfigurename}{Spis rysunków} \SetString{\listtablename}{Spis tabel} \SetString{\indexname}{Skorowidz} \SetString{\figurename}{Rysunek} \SetString{\tablename}{Tabela} \SetString{\partname}{Część} \SetString{\enclname}{Załączniki} \SetString{\ccname}{Do wiadomości} \SetString{\headtoname}{Do} \SetString{\pagename}{Strona} \SetString{\seename}{zob.} \SetString{\alsoname}{zob. także} \SetString{\proofname}{Dowód} \SetString{\glossaryname}{Słowniczek} \StartBabelCommands*{polish}{date} [unicode, charset=utf8, fontenc=TU EU1 EU2] \SetStringLoop{month#1name}{% stycznia,lutego,marca,kwietnia,maja,czerwca,% lipca,sierpnia,września,października,listopada,grudnia} % \end{macrocode} % And now, the generic branch, using the LICR and assuming T1. % \begin{macrocode} \StartBabelCommands*{polish}{captions} \SetString{\prefacename}{Przedmowa} \SetString{\refname}{Literatura} \SetString{\abstractname}{Streszczenie} \SetString{\bibname}{Bibliografia} \SetString{\chaptername}{Rozdzia\l} \SetString{\appendixname}{Dodatek} \SetString{\contentsname}{Spis tre\'sci} \SetString{\listfigurename}{Spis rysunk\'ow} \SetString{\listtablename}{Spis tabel} \SetString{\indexname}{Skorowidz} \SetString{\figurename}{Rysunek} \SetString{\tablename}{Tabela} \SetString{\partname}{Cz\k{e}\'s\'c} \SetString{\enclname}{Za\l\k{a}czniki} \SetString{\ccname}{Do wiadomo\'sci} \SetString{\headtoname}{Do} \SetString{\pagename}{Strona} \SetString{\seename}{zob.} \SetString{\alsoname}{zob. tak\.ze} \SetString{\proofname}{Dow\'od} \SetString{\glossaryname}{S\l owniczek} \StartBabelCommands*{polish}{date} \SetStringLoop{month#1name}{% stycznia,lutego,marca,kwietnia,maja,czerwca,% lipca,sierpnia,wrze\'snia,pa\'zdziernika,listopada,grudnia} \SetString\today{% {\number\day}~\@nameuse{month\romannumeral\month name} {\number\year}} \EndBabelCommands % \end{macrocode} % \end{macro} % % \begin{macro}{\extraspolish} % \begin{macro}{\noextraspolish} % The macro |\extraspolish| will perform all the extra definitions % needed for the Polish language. The macro |\noextraspolish| is % used to cancel the actions of |\extraspolish|. % % \begin{macrocode} \initiate@active@char{"} \declare@shorthand{polish}{"-}{\bbl@hy@soft} \declare@shorthand{polish}{"=}{\babel@texpdf{\bbl@hy@repeat}{-}{-}{\textminus}} \declare@shorthand{polish}{"|}{\babel@texpdf{\discretionary{-}{}{\kern.03em}}{}{}{}} \declare@shorthand{polish}{"`}{\quotedblbase} \declare@shorthand{polish}{"'}{\textquotedblright} \declare@shorthand{polish}{"<}{\guillemotleft} \declare@shorthand{polish}{">}{\guillemotright} % \end{macrocode} % We specify that the polish group of shorthands should be used. % These characters are `turned on' once, later their definition may % vary. % \begin{macrocode} \addto\extraspolish{% \bbl@frenchspacing \languageshorthands{polish}% \bbl@activate{"}} % \end{macrocode} % % For Polish texts |\frenchspacing| should be in effect. We % make sure this is the case and reset it if necessary. % % \begin{macrocode} \addto\noextraspolish{% \bbl@nonfrenchspacing \bbl@deactivate{"}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macrocode} \ldf@finish{polish} % % \end{macrocode} % % \subsection{Compatibility code} % \label{sec:compat-code} % % This section contains the code and documentation of version v1.2l % (2005/03/31) of \file{polish.ldf}, which is used for % \file{polish-compat}. We keep % it as a compatibility fallback, since (more or less) this version was % available for almost 20 years and some documents may depend on its % idiosyncratic features. There are known problems with this code: % \begin{itemize} % \item The \texttt{"}-shorthands for Polish characters do not use % LICR, so even with modern fonts the precomposed characters from % the font are not used (in the case of \textit{ą, ę, ł, ż}). % \item The substitute for ogonek accent defined for OT1 is not % accessible with standard \cs{k} (besides being hideous). % \item Wrong shape of \textit{ę} is used in the word % \textit{Część} generated by the command \cs{part}. % \item The code is \textbf{evil}: it redefines \cs{selectfont}, % which leads to conflicts with some standard \LaTeX\ packages. % Another known incompatibility is the macro \cs{lll}, which % conflicts with AMS-\LaTeX. % \end{itemize} % % The macro |\LdfInit| takes care of preventing that this file is % loaded more than once, checking the category code of the % \texttt{@} sign, etc. % \changes{polish-1.2d}{1996/11/03}{Now use \cs{LdfInit} to perform % initial checks} % \begin{macrocode} %<*compat> \LdfInit{polish}\captionspolish % \end{macrocode} % \iffalse %% File `polish.dtx' %% Babel package for LaTeX version 2e %% Copyright (C) 1989 -- 2005 %% by Johannes Braams, TeXniek % %% Polish Language Definition File %% Copyright (C) 1989 - 2005 %% by Elmar Schalueck, Michael Janich % Universitaet-Gesamthochschule Paderborn % Warburger Strasse 100 % 4790 Paderborn % Germany % elmar at uni-paderborn.de % massa at uni-paderborn.de % %% Please report errors to: J.L. Braams %% babel at braams.cistron.nl % \fi % % This file is part of the babel system, it provides the source % code for the Polish language definition file. It was developped % out of Polish.tex, which was written by Elmar Schalueck and % Michael Janich. Polish.tex was based on code by Leszek % Holenderski, Jerzy Ryll and J. S. Bie\'n from Faculty of % Mathematics,Informatics and Mechanics of Warsaw University, exept % of Jerzy Ryll (Instytut Informatyki Uniwersytetu Warszawskiego). % % When this file is read as an option, i.e. by the |\usepackage| % command, \texttt{polish} could be an `unknown' language in which % case we have to make it known. So we check for the existence of % |\l@polish| to see whether we have to do something here. % % \changes{polish-1.1c}{1994/06/26}{Now use \cs{@nopatterns} to % produce the warning} % \begin{macrocode} \ifx\l@polish\@undefined \@nopatterns{Polish} \adddialect\l@polish0\fi % \end{macrocode} % % The next step consists of defining commands to switch to (and % from) the Polish language. % % \begin{macro}{\captionspolish} % The macro |\captionspolish| defines all strings used in the four % standard documentclasses provided with \LaTeX. % \changes{polish-1.2b}{1995/07/04}{Added \cs{proofname} for % AMS-\LaTeX} % \changes{polish-1.2f}{1997/09/11}{Added translation for Proof and % changed translation of Contents} % \changes{polish-1.2i}{2000/09/19}{\cs{bibname} and \cs{refname} were % swapped} % \changes{polish-1.2i}{2000/09/19}{Added \cs{glossaryname}} % \begin{macrocode} \addto\captionspolish{% \def\prefacename{Przedmowa}% \def\refname{Literatura}% \def\abstractname{Streszczenie}% \def\bibname{Bibliografia}% \def\chaptername{Rozdzia\l}% \def\appendixname{Dodatek}% \def\contentsname{Spis tre\'sci}% \def\listfigurename{Spis rysunk\'ow}% \def\listtablename{Spis tablic}% \def\indexname{Indeks}% \def\figurename{Rysunek}% \def\tablename{Tablica}% \def\partname{Cz\eob{}\'s\'c}% \def\enclname{Za\l\aob{}cznik}% \def\ccname{Kopie:}% \def\headtoname{Do}% \def\pagename{Strona}% \def\seename{Por\'ownaj}% \def\alsoname{Por\'ownaj tak\.ze}% \def\proofname{Dow\'od}% \def\glossaryname{Glossary}% <-- Needs translation } % \end{macrocode} % \end{macro} % % \begin{macro}{\datepolish} % The macro |\datepolish| redefines the command |\today| to produce % Polish dates. % \changes{polish-1.2f}{1997/10/01}{Use \cs{edef} to define % \cs{today} to save memory} % \changes{polish-1.2f}{1998/03/28}{use \cs{def} instead of \cs{edef}} % \changes{polish-1.2i}{2000/01/08}{A missing comment character caused % an unwanted space character in the output} % \begin{macrocode} \def\datepolish{% \def\today{\number\day~\ifcase\month\or stycznia\or lutego\or marca\or kwietnia\or maja\or czerwca\or lipca\or sierpnia\or wrze\'snia\or pa\'zdziernika\or listopada\or grudnia\fi \space\number\year}% } % \end{macrocode} % \end{macro} % % \begin{macro}{\extraspolish} % \begin{macro}{\noextraspolish} % The macro |\extraspolish| will perform all the extra definitions % needed for the Polish language. The macro |\noextraspolish| is % used to cancel the actions of |\extraspolish|. % % For Polish the \texttt{"} character is made active. This is % done once, later on its definition may vary. Other languages in % the same document may also use the \texttt{"} character for % shorthands; we specify that the polish group of shorthands % should be used. % % \begin{macrocode} \initiate@active@char{"} \addto\extraspolish{\languageshorthands{polish}} \addto\extraspolish{\bbl@activate{"}} % \end{macrocode} % Don't forget to turn the shorthands off again. % \changes{polish-1.2h}{1999/12/17}{Deactivate shorthands ouside of % Polish} % \begin{macrocode} \addto\noextraspolish{\bbl@deactivate{"}} % \end{macrocode} % \end{macro} % \end{macro} % % The code above is necessary because we need an extra % active character. This character is then used as indicated in % table~\ref{tab:polish-quote}. % % If you have problems at the end of a word with a linebreak, use % the other version without hyphenation tricks. Some TeX wizard may % produce a better solution with forcasting another token to decide % whether the character after the double quote is the last in a % word. Do it and let us know. % % In Polish texts some letters get special diacritical marks. % Leszek Holenderski designed the following code to position the % diacritics correctly for every font in every size. These macros % need a few extra dimension variables. % % \begin{macrocode} \newdimen\pl@left \newdimen\pl@down \newdimen\pl@right \newdimen\pl@temp % \end{macrocode} % % \begin{macro}{\sob} % The macro |\sob| is used to put the `ogonek' in the right % place. % % \changes{polish-1.2d}{1996/08/18}{This macro is meant to be used in % horizontal mode; so leave vertical mode if necessary} % \begin{macrocode} \def\sob#1#2#3#4#5{%parameters: letter and fractions hl,ho,vl,vo \setbox0\hbox{#1}\setbox1\hbox{$_\mathchar'454$}\setbox2\hbox{p}% \pl@right=#2\wd0 \advance\pl@right by-#3\wd1 \pl@down=#5\ht1 \advance\pl@down by-#4\ht0 \pl@left=\pl@right \advance\pl@left by\wd1 \pl@temp=-\pl@down \advance\pl@temp by\dp2 \dp1=\pl@temp \leavevmode \kern\pl@right\lower\pl@down\box1\kern-\pl@left #1} % \end{macrocode} % \end{macro} % % \begin{macro}{\aob} % \begin{macro}{\Aob} % \begin{macro}{\eob} % \begin{macro}{\Eob} % The ogonek is placed with the letters `a', `A', `e', and `E'. % \changes{polish-1.2d}{1996/08/18}{Use the constructed version of the % characters only in OT1; use proper characters in T1.} % \begin{macrocode} \DeclareTextCommand{\aob}{OT1}{\sob a{.66}{.20}{0}{.90}} \DeclareTextCommand{\Aob}{OT1}{\sob A{.80}{.50}{0}{.90}} \DeclareTextCommand{\eob}{OT1}{\sob e{.50}{.35}{0}{.93}} \DeclareTextCommand{\Eob}{OT1}{\sob E{.60}{.35}{0}{.90}} % \end{macrocode} % For the 'new' \texttt{T1} encoding we can provide simpler % definitions. % \begin{macrocode} \DeclareTextCommand{\aob}{T1}{\k a} \DeclareTextCommand{\Aob}{T1}{\k A} \DeclareTextCommand{\eob}{T1}{\k e} \DeclareTextCommand{\Eob}{T1}{\k E} % \end{macrocode} % Construct the characters by default from the OT1 encoding. % \begin{macrocode} \ProvideTextCommandDefault{\aob}{\UseTextSymbol{OT1}{\aob}} \ProvideTextCommandDefault{\Aob}{\UseTextSymbol{OT1}{\Aob}} \ProvideTextCommandDefault{\eob}{\UseTextSymbol{OT1}{\eob}} \ProvideTextCommandDefault{\Eob}{\UseTextSymbol{OT1}{\Eob}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\spb} % The macro |\spb| is used to put the `poprzeczka' in the % right place. % % \changes{polish-1.2d}{1996/08/18}{\cs{spb} is meant to be used in % horizontal mode; so leave vertical mode if necessary} % \begin{macrocode} \def\spb#1#2#3#4#5{% \setbox0\hbox{#1}\setbox1\hbox{\char'023}% \pl@right=#2\wd0 \advance\pl@right by-#3\wd1 \pl@down=#5\ht1 \advance\pl@down by-#4\ht0 \pl@left=\pl@right \advance\pl@left by\wd1 \ht1=\pl@down \dp1=-\pl@down \leavevmode \kern\pl@right\lower\pl@down\box1\kern-\pl@left #1} % \end{macrocode} % \end{macro} % % \begin{macro}{\skb} % The macro |\skb| is used to put the `kropka' in the % right place. % % \changes{polish-1.2d}{1996/08/18}{\cs{skb} is meant to be used in % horizontal mode; so leave vertical mode if necessary} % \begin{macrocode} \def\skb#1#2#3#4#5{% \setbox0\hbox{#1}\setbox1\hbox{\char'056}% \pl@right=#2\wd0 \advance\pl@right by-#3\wd1 \pl@down=#5\ht1 \advance\pl@down by-#4\ht0 \pl@left=\pl@right \advance\pl@left by\wd1 \leavevmode \kern\pl@right\lower\pl@down\box1\kern-\pl@left #1} % \end{macrocode} % \end{macro} % % \begin{macro}{\textpl} % For the `poprzeczka' and the `kropka' in text fonts we don't need % any special coding, but we can (almost) use what is already % available. % % \begin{macrocode} \def\textpl{% \def\lpb{\plll}% \def\Lpb{\pLLL}% \def\zkb{\.z}% \def\Zkb{\.Z}} % \end{macrocode} % Initially we assume that typesetting is done with text fonts. % \changes{polish-1.0a}{1993/11/05}{Initially execute `textpl} % \begin{macrocode} \textpl % \end{macrocode} % % \begin{macrocode} \let\lll=\l \let\LLL=\L \def\plll{\lll} \def\pLLL{\LLL} % \end{macrocode} % \end{macro} % % \begin{macro}{\telepl} % But for the `teletype' font in `OT1' encoding we have to take some % special actions, involving the macros defined above. % % \begin{macrocode} \def\telepl{% \def\lpb{\spb l{.45}{.5}{.4}{.8}}% \def\Lpb{\spb L{.23}{.5}{.4}{.8}}% \def\zkb{\skb z{.5}{.5}{1.2}{0}}% \def\Zkb{\skb Z{.5}{.5}{1.1}{0}}} % \end{macrocode} % \end{macro} % % To activate these codes the font changing commands as they are % defined in \LaTeX\ are modified. The same is done for plain % \TeX's font changing commands. % % When |\selectfont| is undefined the current format is spposed to be % either plain (based) or \LaTeX$\:$2.09. % \changes{polish-1.2a}{1995/06/06}{Don't modify \cs{rm} and friends for % \LaTeXe, take \cs{selectfont } instead} % \begin{macrocode} \ifx\selectfont\@undefined \ifx\prm\@undefined \addto\rm{\textpl}\else \addto\prm{\textpl}\fi \ifx\pit\@undefined \addto\it{\textpl}\else \addto\pit{\textpl}\fi \ifx\pbf\@undefined \addto\bf{\textpl}\else \addto\pbf{\textpl}\fi \ifx\psl\@undefined \addto\sl{\textpl}\else \addto\psl{\textpl}\fi \ifx\psf\@undefined \else \addto\psf{\textpl}\fi \ifx\psc\@undefined \else \addto\psc{\textpl}\fi \ifx\ptt\@undefined \addto\tt{\telepl}\else \addto\ptt{\telepl}\fi \else % \end{macrocode} % When |\selectfont| exists we assume \LaTeXe. % \begin{macrocode} \expandafter\addto\csname selectfont \endcsname{% \csname\f@encoding @pl\endcsname} \fi % \end{macrocode} % Currently we support the OT1 and T1 encodings. For T1 we don't % have to make a difference between typewriter fonts and other % fonts, they all have the same glyphs. % \begin{macrocode} \expandafter\let\csname T1@pl\endcsname\textpl % \end{macrocode} % For OT1 we need to check the current font family, stored in % |\f@family|. Unfortunately we need a hack as |\ttdefault| is % defined as a |\long| macro, while |\f@family| is not. % \begin{macrocode} \expandafter\def\csname OT1@pl\endcsname{% \long\edef\curr@family{\f@family}% \ifx\curr@family\ttdefault \telepl \else \textpl \fi} % \end{macrocode} % % \begin{macro}{\dq} % We save the original double quote character in |\dq| to keep % it available, the math accent |\"| can now be typed as |"|. % \begin{macrocode} \begingroup \catcode`\"12 \def\x{\endgroup \def\dq{"}} \x % \end{macrocode} % \end{macro} % % Now we can define the doublequote macros for diacritics, % \changes{polish-1.1d}{1995/01/31}{The dqmacro for C used \cs{'c}} % \begin{macrocode} \declare@shorthand{polish}{"a}{\textormath{\aob}{\ddot a}} \declare@shorthand{polish}{"A}{\textormath{\Aob}{\ddot A}} \declare@shorthand{polish}{"c}{\textormath{\'c}{\acute c}} \declare@shorthand{polish}{"C}{\textormath{\'C}{\acute C}} \declare@shorthand{polish}{"e}{\textormath{\eob}{\ddot e}} \declare@shorthand{polish}{"E}{\textormath{\Eob}{\ddot E}} \declare@shorthand{polish}{"l}{\textormath{\lpb}{\ddot l}} \declare@shorthand{polish}{"L}{\textormath{\Lpb}{\ddot L}} \declare@shorthand{polish}{"n}{\textormath{\'n}{\acute n}} \declare@shorthand{polish}{"N}{\textormath{\'N}{\acute N}} \declare@shorthand{polish}{"o}{\textormath{\'o}{\acute o}} \declare@shorthand{polish}{"O}{\textormath{\'O}{\acute O}} \declare@shorthand{polish}{"s}{\textormath{\'s}{\acute s}} \declare@shorthand{polish}{"S}{\textormath{\'S}{\acute S}} % \end{macrocode} % \begin{macro}{\polishrz} % \begin{macro}{\polishzx} % \changes{polish-1.2j}{2000/11/11}{Added support for two % notationstyles for kropka and accented z} % The command |\polishrz| defines the shorthands |"r|, |"z| and % |"x| to produce pointed z, accented z and |"x|. This is the % default as these shorthands were defined by this language % definition file for quite some time. % \begin{macrocode} \newcommand*{\polishrz}{% \declare@shorthand{polish}{"r}{\textormath{\zkb}{\ddot r}}% \declare@shorthand{polish}{"R}{\textormath{\Zkb}{\ddot R}}% \declare@shorthand{polish}{"z}{\textormath{\'z}{\acute z}}% \declare@shorthand{polish}{"Z}{\textormath{\'Z}{\acute Z}}% \declare@shorthand{polish}{"x}{\dq x}% \declare@shorthand{polish}{"X}{\dq X}% } \polishrz % \end{macrocode} % The command |\polishzx| switches to a different set of % shorthands, |"z|, |"x| and |"r| to produce pointed z, accented z % and |"r|; a different shorthand notation also in use. % \changes{polish-1.2k}{2003/10/12}{Fixed a typo} % \begin{macrocode} \newcommand*{\polishzx}{% \declare@shorthand{polish}{"z}{\textormath{\zkb}{\ddot z}}% \declare@shorthand{polish}{"Z}{\textormath{\Zkb}{\ddot Z}}% \declare@shorthand{polish}{"x}{\textormath{\'z}{\acute x}}% \declare@shorthand{polish}{"X}{\textormath{\'Z}{\acute X}}% \declare@shorthand{polish}{"r}{\dq r}% \declare@shorthand{polish}{"R}{\dq R}% } % \end{macrocode} % \end{macro} % \end{macro} % % Then we define access to two forms of quotation marks, similar % to the german and french quotation marks. % \changes{polish-1.2e}{1997/04/03}{Removed empty groups after % double quote and guillemot characters} % \changes{polish-1.2l}{2004/02/18}{Changed closing quote} % \begin{macrocode} \declare@shorthand{polish}{"`}{% \textormath{\quotedblbase}{\mbox{\quotedblbase}}} \declare@shorthand{polish}{"'}{% \textormath{\textquotedblright}{\mbox{\textquotedblright}}} \declare@shorthand{polish}{"<}{% \textormath{\guillemotleft}{\mbox{\guillemotleft}}} \declare@shorthand{polish}{">}{% \textormath{\guillemotright}{\mbox{\guillemotright}}} % \end{macrocode} % then we define two shorthands to be able to specify hyphenation % breakpoints that behavew a little different from |\-|. % \begin{macrocode} \declare@shorthand{polish}{"-}{\nobreak-\bbl@allowhyphens} \declare@shorthand{polish}{""}{\hskip\z@skip} % \end{macrocode} % And we want to have a shorthand for disabling a ligature. % \begin{macrocode} \declare@shorthand{polish}{"|}{% \textormath{\discretionary{-}{}{\kern.03em}}{}} % \end{macrocode} % % % \begin{macro}{\mdqon} % \begin{macro}{\mdqoff} % All that's left to do now is to define a couple of commands % for reasons of compatibility with \file{polish.tex}. % \changes{polish-1.2f}{1998/06/07}{Now use \cs{shorthandon} and % \cs{shorthandoff}} % \begin{macrocode} \def\mdqon{\shorthandon{"}} \def\mdqoff{\shorthandoff{"}} % \end{macrocode} % \end{macro} % \end{macro} % % The macro |\ldf@finish| takes care of looking for a % configuration file, setting the main language to be switched on % at |\begin{document}| and resetting the category code of % \texttt{@} to its original value. % \changes{polish-1.2d}{1996/11/03}{Now use \cs{ldf@finish} to wrap % up} % \begin{macrocode} \ldf@finish{polish} % % \end{macrocode} % % \Finale % %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} %% \endinput % \endinput % Local Variables: % mode: doctex % TeX-master: t % End: