diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-11 23:56:15 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-11 23:56:15 +0000 |
commit | a745346629ebfbb2e379cef8f87dfbabd2751932 (patch) | |
tree | 0f996162ea39b64a7be240cadcb944fbb43ff7ec /Master | |
parent | 5dd2e7b835f8b859f5f4cd144f6f20d8d4d50976 (diff) |
trunk/Master/texmf-dist/source/latex/polyglot
git-svn-id: svn://tug.org/texlive/trunk@454 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
11 files changed, 3307 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/polyglot/langs/english.ld b/Master/texmf-dist/source/latex/polyglot/langs/english.ld new file mode 100644 index 00000000000..47abfa4342b --- /dev/null +++ b/Master/texmf-dist/source/latex/polyglot/langs/english.ld @@ -0,0 +1,101 @@ +% Copyright 1997 Javier Bezos-L\'opez. All rights reserved. +% +% This file is part of the polyglot system release 1.1. +% -------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +\ProvidesFile{english.ld}[1997/09/01 v1.0.1] + +\DeclareLanguage{english} +\DeclareDialect{american} + +\DeclareLanguageCommand{\partname}{names} + {Part} +\DeclareLanguageCommand{\contentsname}{names} + {Contents} +\DeclareLanguageCommand{\listfigurename}{names} + {List of Figures} +\DeclareLanguageCommand{\listtablename}{names} + {List of Tables} +\DeclareLanguageCommand{\bibname}{names} + {Bibliography} +\DeclareLanguageCommand{\indexname}{names} + {Index} +\DeclareLanguageCommand{\figurename}{names} + {Figure} +\DeclareLanguageCommand{\tablename}{names} + {Table} +\DeclareLanguageCommand{\refname}{names} + {References} +\DeclareLanguageCommand{\abstractname}{names} + {Abstract} +\DeclareLanguageCommand{\chaptername}{names} + {Chapter} +\DeclareLanguageCommand{\appendixname}{names} + {Appendix} +\DeclareLanguageCommand{\enclname}{names} + {encl} +\DeclareLanguageCommand{\ccname}{names} + {cc} +\DeclareLanguageCommand{\pagename}{names} + {Page} +\DeclareLanguageCommand{\headtoname}{names} + {To} +\DeclareLanguageCommand{\seename}{names} + {see} + +% date +% ~~~~ + +\DeclareDateFunction{ddd}{\english@arabicth{day}} + +\DeclareDateFunction{mmm}{\ifcase\month\or Jan.\or Feb.\or + Mar.\or Abr.\or May\or Jun.\or Jul.\or Aug.\or Sep.\or Oct.\or + Nov.\or Dic.\fi\@} + +\DeclareDateFunction{mmmm}{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi}% + +\DeclareDateFunction{www}{\ifcase\month\or Sun.\or Mon.\or + Tue.\or Wes.\or Thu.\or Fri.\or Sat.\fi\@} + +\DeclareDateFunction{wwww}{\ifcase\month\or Sunday\or Monday\or + Tuesday\or Wesnesday\or Thursday\or Friday\or Saturday\fi} + +% Continued below + +% ordinal numbers +% ~~~~~~~~~~~~~~~ + +\newif\ifenglish@orddec + +\DeclareLanguageCommand{\arabicth}{tools}{\protect\english@arabicth} + +\newcommand\english@arabicth[1]{% + \expandafter\english@@arabicth\csname c@#1\endcsname} + +\newcommand\english@@arabicth[1]{% + \expandafter\english@@@arabicth\number#1\relax\@nil}% + +\def\english@@@arabicth#1#2\@nil{\def\@tempa{#1}\def\@tempb{#2}% + \def\@tempc{\relax}#1\relax + \ifx\@tempb\@tempc\ifenglish@orddec th\else + \ifcase#1th\or st\or nd\or rd\else th\fi\fi + \else\ifnum0#1=1\relax\english@orddectrue + \else\english@orddecfalse\fi + \expandafter\english@@@arabicth#2\@nil\fi}% + +\SetDialect{english} + +\DeclareDateCommand{\today}{<ddd> <mmmm> <yyyy>} + +\SetDialect{american} + +\DeclareDateCommand{\today}{<mmmm> <d>, <yyyy>} + +\endinput diff --git a/Master/texmf-dist/source/latex/polyglot/langs/french.ld b/Master/texmf-dist/source/latex/polyglot/langs/french.ld new file mode 100644 index 00000000000..04f2afdcb46 --- /dev/null +++ b/Master/texmf-dist/source/latex/polyglot/langs/french.ld @@ -0,0 +1,180 @@ +% Copyright 1997 Javier Bezos-L\'opez. All rights reserved. +% +% This file is part of the polyglot system release 1.1. +% -------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +\ProvidesFile{french.ld}[1997/04/15 v1.0] +\DeclareLanguage{french} + +\DeclareLanguageCommand{\prefacename}{names} + {Pr\'eface} +\DeclareLanguageCommand{\refname}{names} + {R\'ef\'erences} +\DeclareLanguageCommand{\abstractname}{names} + {R\'esum\'e} +\DeclareLanguageCommand{\bibname}{names} + {Bibliographie} +\DeclareLanguageCommand{\chaptername}{names} + {Chapitre} +\DeclareLanguageCommand{\appendixname}{names} + {Annexe} +\DeclareLanguageCommand{\contentsname}{names} + {Table des mati\`eres} +\DeclareLanguageCommand{\listfigurename}{names} + {Liste des figures} +\DeclareLanguageCommand{\listtablename}{names} + {Liste des tableaux} +\DeclareLanguageCommand{\indexname}{names} + {Index} +\DeclareLanguageCommand{\figurename}{names} + {Figure} +\DeclareLanguageCommand{\tablename}{names} + {Tableau} +\DeclareLanguageCommand{\partname}{names} + {Partie} +\DeclareLanguageCommand{\enclname}{names} + {P.~J.} +\DeclareLanguageCommand{\ccname}{names} + {Copie \`a} +\DeclareLanguageCommand{\headtoname}{names} + {A} +\DeclareLanguageCommand{\pagename}{names} + {Page} +\DeclareLanguageCommand{\seename}{names} + {voir} +\DeclareLanguageCommand{\alsoname}{names} + {voir aussi} + +% Date +% ~~~~ + +\DeclareDateFunction{wwww}{\ifcase\weekday\or dimanche\or + lundi\or mardi\or mercredi\or jeudi\or vendredi\or samedi\fi} + +\DeclareDateFunction{mmmm}{% + \ifcase\month\or janvier\or f\'evrier\or mars\or avril\or + mai\or juin\or juillet\or ao\^ut\or septembre\or octobre\or + novembre\or d\'ecembre\fi} + +\DeclareDateFunction{ddd}{% + \ifnum\day=\@ne 1\protect\french@sptext{er}\else\the\day\fi} + +\DeclareDateCommand{\today}{<ddd> <mmmm> <yyyy>} + +% Spacing +% ~~~~~~~ + +\DeclareLanguageSymbolCommand{;}{text} + {\unskip\penalty\@M\,;} +\DeclareLanguageSymbolCommand{:}{text} + {\unskip\penalty\@M\,:} +\DeclareLanguageSymbolCommand{?}{text} + {\unskip\penalty\@M\,?} +\DeclareLanguageSymbolCommand{!}{text} + {\unskip\penalty\@M\,!} + +% Ligatures +% ~~~~~~~~~ + +\DeclareLigatureCommand{<}{<}{\guillemotleft\,\ignorespaces} +\DeclareLigatureCommand{>}{>}{\unskip\,\guillemotright} + +\DeclareLigatureCommand{"}{e}{\"e} % As in Saint-Sa"ens +\DeclareLigatureCommand{"}{y}{\"y} % As in Ysa"ye + +\DeclareLigatureCommand{"}{o}{\oe\@gobble} +\DeclareLigatureCommand{"}{a}{\ae\@gobble} + +\DeclareLigatureCommand{^}{a}{\^a} +\DeclareLigatureCommand{^}{e}{\^e} +\DeclareLigatureCommand{^}{i}{\^\i} +\DeclareLigatureCommand{^}{o}{\^o} +\DeclareLigatureCommand{^}{u}{\^u} + +\DeclareLigatureCommand{`}{a}{\@tabacckludge`a} +\DeclareLigatureCommand{`}{e}{\@tabacckludge`e} +\DeclareLigatureCommand{`}{u}{\@tabacckludge`u} + +\DeclareLigatureCommand{'}{e}{\@tabacckludge'e} + +\DeclareLigatureCommand{/}{c}{\c{c}} + +\DeclareLigatureCommand{"}{E}{\"E} +\DeclareLigatureCommand{"}{Y}{\"Y} + +\DeclareLigatureCommand{"}{O}{\OE\@gobble} +\DeclareLigatureCommand{"}{A}{\AE\@gobble} + +\DeclareLigatureCommand{^}{A}{\^A} +\DeclareLigatureCommand{^}{E}{\^E} +\DeclareLigatureCommand{^}{I}{\^I} +\DeclareLigatureCommand{^}{O}{\^O} +\DeclareLigatureCommand{^}{U}{\^U} + +\DeclareLigatureCommand{`}{A}{\@tabacckludge`A} +\DeclareLigatureCommand{`}{E}{\@tabacckludge`E} +\DeclareLigatureCommand{`}{U}{\@tabacckludge`U} + +\DeclareLigatureCommand{'}{E}{\@tabacckludge'E} + +\DeclareLigatureCommand{/}{C}{\c{C}} + +% Layout +% ~~~~~~ + +\DeclareLanguageCommand{\labelitemi}{layout}{--} +\DeclareLanguageCommand{\labelitemii}{layout}{--} +\DeclareLanguageCommand{\labelitemiii}{layout}{--} +\DeclareLanguageCommand{\labelitemiv}{layout}{--} + +\DeclareLanguageCommand{\@afterindentfalse}{layout}{} + +% French ordinals +% ~~~~~~~~~~~~~~~ + +\DeclareLanguageCommand{\sptext}{tools}{\protect\french@sptext} + +\newcommand\french@sptext[1]{% + {\setbox\z@\hbox{8}\@tempdima\ht\z@ + \csname S@\f@size\endcsname + \edef\@tempa{\def\noexpand\@tempc{#1}% + \lowercase{\def\noexpand\@tempb{#1}}}\@tempa + \ifx\@tempb\@tempc\fontsize\sf@size\z@\selectfont + \advance\@tempdima-1.2ex + \else\fontsize\ssf@size\z@\selectfont + \advance\@tempdima-1.6ex\fi + \math@fontsfalse\raise\@tempdima\hbox{#1}}} + +% frenchspacing +% ~~~~~~~~~~~~~ + +\SetLanguageCode{\sfcode}{text}{`.}{\@m} +\SetLanguageCode{\sfcode}{text}{`,}{\@m} +\SetLanguageCode{\sfcode}{text}{`:}{\@m} +\SetLanguageCode{\sfcode}{text}{`!}{\@m} +\SetLanguageCode{\sfcode}{text}{`?}{\@m} +\SetLanguageCode{\sfcode}{text}{`;}{\@m} + +\endinput + +%% \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 \~} +%% diff --git a/Master/texmf-dist/source/latex/polyglot/langs/french.ot1 b/Master/texmf-dist/source/latex/polyglot/langs/french.ot1 new file mode 100644 index 00000000000..4367ba89241 --- /dev/null +++ b/Master/texmf-dist/source/latex/polyglot/langs/french.ot1 @@ -0,0 +1,75 @@ +% Copyright 1997 Javier Bezos-L\'opez. All rights reserved. +% +% This file is part of the polyglot system release 1.1. +% -------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +\ProvidesFile{french.ot1} + +\def\french@accent#1#2{% + \allowhyphens\accent#1 #2\allowhyphens} + +\DeclareLanguageCompositeCommand{\"}{OT1}{e} + {\french@accent{127}e} +\DeclareLanguageCompositeCommand{\"}{OT1}{E} + {\french@accent{127}E} +\DeclareLanguageCompositeCommand{\"}{OT1}{y} + {\french@accent{127}y} +\DeclareLanguageCompositeCommand{\"}{OT1}{Y} + {\french@accent{127}Y} + +\DeclareLanguageCompositeCommand{\^}{OT1}{a} + {\french@accent{94}a} +\DeclareLanguageCompositeCommand{\^}{OT1}{e} + {\french@accent{94}e} +\DeclareLanguageCompositeCommand{\^}{OT1}{i} + {\french@accent{94}\i} +\DeclareLanguageCompositeCommand{\^}{OT1}{\i} + {\french@accent{94}\i} +\DeclareLanguageCompositeCommand{\^}{OT1}{o} + {\french@accent{94}o} +\DeclareLanguageCompositeCommand{\^}{OT1}{u} + {\french@accent{94}u} +\DeclareLanguageCompositeCommand{\^}{OT1}{A} + {\french@accent{94}A} +\DeclareLanguageCompositeCommand{\^}{OT1}{E} + {\french@accent{94}E} +\DeclareLanguageCompositeCommand{\^}{OT1}{I} + {\french@accent{94}I} +\DeclareLanguageCompositeCommand{\^}{OT1}{O} + {\french@accent{94}O} +\DeclareLanguageCompositeCommand{\^}{OT1}{U} + {\french@accent{94}U} + +\DeclareLanguageCompositeCommand{\`}{OT1}{a} + {\french@accent{18}a} +\DeclareLanguageCompositeCommand{\`}{OT1}{e} + {\french@accent{18}e} +\DeclareLanguageCompositeCommand{\`}{OT1}{u} + {\french@accent{18}u} +\DeclareLanguageCompositeCommand{\`}{OT1}{A} + {\french@accent{18}A} +\DeclareLanguageCompositeCommand{\`}{OT1}{E} + {\french@accent{18}E} +\DeclareLanguageCompositeCommand{\`}{OT1}{U} + {\french@accent{18}U} + +\DeclareLanguageCompositeCommand{\'}{OT1}{e} + {\french@accent{19}e} +\DeclareLanguageCompositeCommand{\'}{OT1}{E} + {\french@accent{19}E} + +\DeclareLanguageTextCommand{\guillemotleft}{OT1} + {{\leavevmode\count@\spacefactor + \sbox\z@{$\scriptscriptstyle\langle\mkern-4mu\langle$}% + \raise.74\dp\z@\box\z@\spacefactor\count@}} +\DeclareLanguageTextCommand{\guillemotright}{OT1} + {{\leavevmode\count@\spacefactor + \sbox\z@{$\scriptscriptstyle\rangle\mkern-4mu\rangle$}% + \raise.74\dp\z@\box\z@\spacefactor\count@}} + +\endinput diff --git a/Master/texmf-dist/source/latex/polyglot/langs/german.ld b/Master/texmf-dist/source/latex/polyglot/langs/german.ld new file mode 100644 index 00000000000..1324c1daae9 --- /dev/null +++ b/Master/texmf-dist/source/latex/polyglot/langs/german.ld @@ -0,0 +1,153 @@ +% Copyright 1997 Javier Bezos-L\'opez. All rights reserved. +% +% This file is part of the polyglot system release 1.1. +% -------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +\ProvidesFile{german.ld}[1997/09/1 v1.0.1] + +\DeclareLanguage{german} +\DeclareDialect{austrian} + +\DeclareLanguageCommand{\prefacename}{names} + {Vorwort} +\DeclareLanguageCommand{\refname}{names} + {Literatur} +\DeclareLanguageCommand{\abstractname}{names} + {Zusammenfassung} +\DeclareLanguageCommand{\bibname}{names} + {Literaturverzeichnis} +\DeclareLanguageCommand{\chaptername}{names} + {Kapitel} +\DeclareLanguageCommand{\appendixname}{names} + {Anhang} +\DeclareLanguageCommand{\contentsname}{names} + {Inhaltsverzeichnis} +\DeclareLanguageCommand{\listfigurename}{names} + {Abbildungsverzeichnis} +\DeclareLanguageCommand{\listtablename}{names} + {Tabellenverzeichnis} +\DeclareLanguageCommand{\indexname}{names} + {Index} +\DeclareLanguageCommand{\figurename}{names} + {Abbildung} +\DeclareLanguageCommand{\tablename}{names} + {Tabelle} +\DeclareLanguageCommand{\partname}{names} + {Teil} +\DeclareLanguageCommand{\enclname}{names} + {Anlage(n)} +\DeclareLanguageCommand{\ccname}{names} + {Verteiler} +\DeclareLanguageCommand{\headtoname}{names} + {An} +\DeclareLanguageCommand{\pagename}{names} + {Seite} +\DeclareLanguageCommand{\seename}{names} + {siehe} +\DeclareLanguageCommand{\alsoname}{names} + {siehe auch} + +\DeclareLigatureCommand{"}{a}{\"a} +\DeclareLigatureCommand{"}{o}{\"o} +\DeclareLigatureCommand{"}{u}{\"u} +\DeclareLigatureCommand{"}{A}{\"A} +\DeclareLigatureCommand{"}{O}{\"O} +\DeclareLigatureCommand{"}{U}{\"U} + +\DeclareLigatureCommand{"}{e}{\"e} +\DeclareLigatureCommand{"}{E}{\"E} +\DeclareLigatureCommand{"}{i}{\"\i} +\DeclareLigatureCommand{"}{I}{\"I} + +\DeclareLigatureCommand{"}{s}{\ss} +\DeclareLigatureCommand{"}{S}{SS} + +\DeclareLigatureCommand{"}{<}{\guillemotright} +\DeclareLigatureCommand{"}{>}{\guillemotleft} + +\DeclareLigatureCommand{"}{`}{\quotedblbase} +\DeclareLigatureCommand{"}{'}{``} + +\def\german@discretionary#1{\allowhyphens + \discretionary{#1#1-}{}{#1}\allowhyphens} + +\DeclareLigatureCommand{"}{c}% + {\allowhyphens\discretionary{k-}{}{c}\allowhyphens} +\DeclareLigatureCommand{"}{C}% + {\allowhyphens\discretionary{K-}{}{C}\allowhyphens} +\DeclareLigatureCommand{"}{f}{\german@discretionary f} +\DeclareLigatureCommand{"}{F}{\german@discretionary F} +\DeclareLigatureCommand{"}{l}{\german@discretionary l} +\DeclareLigatureCommand{"}{L}{\german@discretionary L} +\DeclareLigatureCommand{"}{m}{\german@discretionary m} +\DeclareLigatureCommand{"}{M}{\german@discretionary M} +\DeclareLigatureCommand{"}{n}{\german@discretionary n} +\DeclareLigatureCommand{"}{N}{\german@discretionary N} +\DeclareLigatureCommand{"}{p}{\german@discretionary p} +\DeclareLigatureCommand{"}{P}{\german@discretionary P} +\DeclareLigatureCommand{"}{t}{\german@discretionary t} +\DeclareLigatureCommand{"}{T}{\german@discretionary T} + +\DeclareLigatureCommand{"}{-}{\allowhyphens\-\allowhyphens} +\DeclareLigatureCommand{"}{|}{\discretionary{-}{}{\kern.03em}} +\DeclareLigatureCommand{"}{"}{\hskip\z@skip} + +% Date + +\DeclareDateFunction{www}{\ifcase\weekday\or So.\or Mo.\or Di.\or + Mi.\or Do.\or Fr.\or Sa.\fi\@} + +\DeclareDateFunction{wwww}{\ifcase\weekday\or Sonntag\or Montag\or + Dienstag\or Mittwoch\or Donnerstag\or Freitag\or Samstag\fi} + +\SetDialect{german} + +\DeclareDateFunction{mmm}% + {\ifcase\month\or + Jan.\or Febr.\or M\"arz\or Apr.\or Mai\or Juni\or + Juli\or Aug.\or Sept.\or Okt.\or Nov.\or Dez.\fi\@} + +\DeclareDateFunction{mmmm}% + {\ifcase\month\or + Januar\or Februar\or M\"arz\or April\or Mai\or Juni\or + Juli\or August\or September\or Oktober\or November\or Dezember\fi} + +\SetDialect{austrian} + +\DeclareDateFunction{mmm}% + {\ifcase\month\or + J\"an.\or Febr.\or M\"arz\or Apr.\or Mai\or Juni\or + Juli\or Aug.\or Sept.\or Okt.\or Nov.\or Dez.\fi\@} + +\DeclareDateFunction{mmmm}% + {\ifcase\month\or + J\"anner\or Februar\or M\"arz\or April\or Mai\or Juni\or + Juli\or August\or September\or Oktober\or November\or Dezember\fi} + +\SetLanguage{german} + +\DeclareDateCommand{\today}{<d>.~<mmmm> <yyyy>} + +%% +%% \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 diff --git a/Master/texmf-dist/source/latex/polyglot/langs/german.ot1 b/Master/texmf-dist/source/latex/polyglot/langs/german.ot1 new file mode 100644 index 00000000000..de1edfbb8fb --- /dev/null +++ b/Master/texmf-dist/source/latex/polyglot/langs/german.ot1 @@ -0,0 +1,52 @@ +% Copyright 1997 Javier Bezos-L\'opez. All rights reserved. +% +% This file is part of the polyglot system release 1.1. +% -------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +\ProvidesFile{german.ot1} + +\def\german@lowumlaut#1{\allowhyphens + {\@tempdima\fontdimen5\font\setbox\z@\hbox{\char127}% + \@tempdimb-.45ex\advance\@tempdimb\ht\z@ + \ifdim1ex<\@tempdimb\fontdimen5\font\@tempdimb\fi% + {\accent127 \fontdimen5\font\@tempdima #1}}\allowhyphens } + +\DeclareLanguageCompositeCommand{\"}{OT1}{a} + {\german@lowumlaut a} +\DeclareLanguageCompositeCommand{\"}{OT1}{o} + {\german@lowumlaut o} +\DeclareLanguageCompositeCommand{\"}{OT1}{u} + {\german@lowumlaut u} +\DeclareLanguageCompositeCommand{\"}{OT1}{A} + {\german@lowumlaut A} +\DeclareLanguageCompositeCommand{\"}{OT1}{O} + {\german@lowumlaut O} +\DeclareLanguageCompositeCommand{\"}{OT1}{U} + {\german@lowumlaut U} + +\DeclareLanguageTextCommand{\guillemotleft}{OT1} + {{\leavevmode\count@\spacefactor + \setbox\z@\hbox{$\scriptscriptstyle\langle\mkern-4mu\langle$}% + \raise.74\dp\z@\box\z@\spacefactor\count@}} +\DeclareLanguageTextCommand{\guillemotright}{OT1} + {{\leavevmode\count@\spacefactor + \setbox\z@\hbox{$\scriptscriptstyle\rangle\mkern-4mu\rangle$}% + \raise.74\dp\z@\box\z@}} + +\DeclareLanguageTextCommand{\quotedblbase}{OT1} + {{\leavevmode\count@\spacefactor + \setbox\z@\hbox{,}\@tempdima-\ht\z@ + \setbox\z@\hbox{''}\advance\@tempdima\ht\z@ + \lower\@tempdima\box\z@\spacefactor\count@}} +\DeclareLanguageTextCommand{\quotesinglbase}{OT1} + {{\leavevmode\count@\spacefactor + \setbox\z@\hbox{,}\@tempdima-\ht\z@ + \setbox\z@\hbox{'}\advance\@tempdima\ht\z@ + \lower\@tempdima\box\z@\spacefactor\count@}} + +\endinput diff --git a/Master/texmf-dist/source/latex/polyglot/langs/r_hebrew.ld b/Master/texmf-dist/source/latex/polyglot/langs/r_hebrew.ld new file mode 100644 index 00000000000..1353624ab61 --- /dev/null +++ b/Master/texmf-dist/source/latex/polyglot/langs/r_hebrew.ld @@ -0,0 +1,145 @@ +% Copyright 1997 Javier Bezos-L\'opez. All rights reserved. +% +% This file is part of the polyglot system release 1.1. +% -------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +\ProvidesFile{hebrew.ld}[1997/09/01 v1.0.1] +\DeclareLanguage{hebrew} + +\edef\@tempb{% + \catcode`\noexpand\^^A=\the\catcode`\^^A + \catcode`\noexpand\^^B=\the\catcode`\^^B + \catcode`\noexpand\^^C=\the\catcode`\^^C + \catcode`\noexpand\^^D=\the\catcode`\^^D} + +\catcode`\^^A=13\catcode`\^^B=13 +\catcode`\^^C=13\catcode`\^^D=13 + +\DeclareLigatureCommand{.}{a}{\d{a}} +\DeclareLigatureCommand{.}{e}{\k{e}} +\DeclareLigatureCommand{.}{o}{\d{o}} + +\DeclareLigatureCommand{.}{h}{\d{h}} +\DeclareLigatureCommand{.}{t}{\d{t}} + +\DeclareLigatureCommand{^}{e}{\^e} +\DeclareLigatureCommand{^}{i}{\^\i} +\DeclareLigatureCommand{^}{o}{\^o} +\DeclareLigatureCommand{^}{u}{\^u} +\DeclareLigatureCommand{^}{.}{^^B} + +\DeclareLigatureCommand{^^B}{e}{\k{\^{e}}} + +\DeclareLigatureCommand{^}{s}{\v{s}} + +\DeclareLigatureCommand{'}{a}{\u{a}} +\DeclareLigatureCommand{'}{e}{\u{e}} +\DeclareLigatureCommand{'}{o}{\u{o}} +\DeclareLigatureCommand{'}{.}{^^A} + +\DeclareLigatureCommand{^^A}{e}{\k{\u{e}}} + +\DeclareLigatureCommand{'}{s}{\@tabacckludge's} + +\DeclareLanguageTextCommand{\texthamza}?% + {{\fontfamily{cmtt}\selectfont\kern-.1em'\kern-.1em}} +\DeclareLigatureCommand{'}{'}{\texthamza} + +\DeclareLanguageTextCommand{\textayn}?% + {{\fontfamily{cmtt}\selectfont\kern-.1em`\kern-.1em}} +\DeclareLanguageSymbolCommand{`}{ligatures}{\textayn} + +\DeclareLigatureCommand{-}{a}{\@tabacckludge={a}} +\DeclareLigatureCommand{-}{e}{\@tabacckludge={e}} +\DeclareLigatureCommand{-}{i}{\@tabacckludge={\i}} +\DeclareLigatureCommand{-}{o}{\@tabacckludge={o}} +\DeclareLigatureCommand{-}{u}{\@tabacckludge={u}} +\DeclareLigatureCommand{-}{.}{^^C} + +\DeclareLigatureCommand{^^C}{e}{\k{\@tabacckludge={e}}} +\DeclareLigatureCommand{^^C}{a}{\d{\@tabacckludge={a}}} +\DeclareLigatureCommand{^^C}{o}{\d{\@tabacckludge={o}}} + +\DeclareLigatureCommand{-}{b}{\b{b}} +\DeclareLigatureCommand{-}{g}{\@tabacckludge={g}} +\DeclareLigatureCommand{-}{d}{\b{d}} +\DeclareLigatureCommand{-}{k}{\b{k}} +\DeclareLigatureCommand{-}{z}{\b{z}} +\DeclareLigatureCommand{-}{t}{\b{t}} +\DeclareLigatureCommand{-}{p}{\@tabacckludge={p}} +\DeclareLigatureCommand{-}{-}{-} + +\DeclareLigatureCommand{"}{a}{\"{a}} +\DeclareLigatureCommand{"}{e}{\"{e}} +\DeclareLigatureCommand{"}{i}{\"{\i}} +\DeclareLigatureCommand{"}{o}{\"{o}} +\DeclareLigatureCommand{"}{u}{\"{u}} +\DeclareLigatureCommand{"}{.}{^^D} + +\DeclareLigatureCommand{^^D}{e}{\k{\"{e}}} +\DeclareLigatureCommand{^^D}{a}{\d{\"{a}}} +\DeclareLigatureCommand{^^D}{o}{\d{\"{o}}} + +% Uppercase + +\DeclareLigatureCommand{.}{A}{\d{A}} +\DeclareLigatureCommand{.}{E}{\k{E}} +\DeclareLigatureCommand{.}{O}{\d{O}} + +\DeclareLigatureCommand{.}{H}{\d{H}} +\DeclareLigatureCommand{.}{T}{\d{T}} + +\DeclareLigatureCommand{^}{E}{\^E} +\DeclareLigatureCommand{^}{I}{\^I} +\DeclareLigatureCommand{^}{O}{\^O} +\DeclareLigatureCommand{^}{U}{\^U} + +\DeclareLigatureCommand{^^B}{E}{\k{\^{E}}} + +\DeclareLigatureCommand{^}{S}{\v{S}} + +\DeclareLigatureCommand{'}{A}{\u{A}} +\DeclareLigatureCommand{'}{E}{\u{E}} +\DeclareLigatureCommand{'}{O}{\u{O}} + +\DeclareLigatureCommand{^^A}{E}{\k{\u{E}}} + +\DeclareLigatureCommand{'}{S}{\@tabacckludge'S} + +\DeclareLigatureCommand{-}{A}{\@tabacckludge={A}} +\DeclareLigatureCommand{-}{E}{\@tabacckludge={E}} +\DeclareLigatureCommand{-}{I}{\@tabacckludge={I}} +\DeclareLigatureCommand{-}{O}{\@tabacckludge={O}} +\DeclareLigatureCommand{-}{U}{\@tabacckludge={U}} + +\DeclareLigatureCommand{^^C}{E}{\k{\@tabacckludge={E}}} +\DeclareLigatureCommand{^^C}{A}{\d{\@tabacckludge={A}}} +\DeclareLigatureCommand{^^C}{O}{\d{\@tabacckludge={O}}} + +\DeclareLigatureCommand{-}{B}{\b{B}} +\DeclareLigatureCommand{-}{G}{\@tabacckludge={G}} +\DeclareLigatureCommand{-}{D}{\b{D}} +\DeclareLigatureCommand{-}{K}{\b{K}} +\DeclareLigatureCommand{-}{Z}{\b{Z}} +\DeclareLigatureCommand{-}{T}{\b{T}} +\DeclareLigatureCommand{-}{P}{\@tabacckludge={P}} + +\DeclareLigatureCommand{"}{A}{\"{A}} +\DeclareLigatureCommand{"}{E}{\"{E}} +\DeclareLigatureCommand{"}{I}{\"{I}} +\DeclareLigatureCommand{"}{O}{\"{O}} +\DeclareLigatureCommand{"}{U}{\"{U}} + +\DeclareLigatureCommand{^^D}{E}{\k{\"{E}}} +\DeclareLigatureCommand{^^D}{A}{\d{\"{A}}} +\DeclareLigatureCommand{^^D}{O}{\d{\"{O}}} + +\@tempb + +\endinput + diff --git a/Master/texmf-dist/source/latex/polyglot/langs/spanish.ld b/Master/texmf-dist/source/latex/polyglot/langs/spanish.ld new file mode 100644 index 00000000000..cff76ae977a --- /dev/null +++ b/Master/texmf-dist/source/latex/polyglot/langs/spanish.ld @@ -0,0 +1,250 @@ +% Copyright 1997 Javier Bezos-L\'opez. All rights reserved. +% +% This file is part of the polyglot system release 1.1. +% -------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +\ProvidesFile{spanish.ld}[1997/04/15 v1.0] +\DeclareLanguage{spanish} + +\DeclareLanguageCommand{\partname}{names}{Parte} +% In rare cases Libro is better +\DeclareLanguageCommand{\contentsname}{names}{\'Indice general} +% Tabla de contenidos is bad, Indice general is good +% Capitalized titles IS NOT the Spanish norm! +\DeclareLanguageCommand{\listfigurename}{names} + {\'Indice de figuras} +\DeclareLanguageCommand{\listtablename}{names} + {\'Indice de cuadros} +\DeclareLanguageCommand{\bibname}{names}{Bibliograf\'ia} +\DeclareLanguageCommand{\indexname}{names} + {\'Indice anal\'itico} +\DeclareLanguageCommand{\figurename}{names}{Figura} +\DeclareLanguageCommand{\tablename}{names}{Cuadro} +% Tabla is not bad, but Cuadro is better +\DeclareLanguageCommand{\refname}{names} + {Referencias bibliogr\'aficas} +\DeclareLanguageCommand{\abstractname}{names}{Resumen} +\DeclareLanguageCommand{\chaptername}{names}{Cap\'itulo} +\DeclareLanguageCommand{\appendixname}{names}{Ap\'endice} +\DeclareLanguageCommand{\enclname}{names}{Adjunto} +\DeclareLanguageCommand{\ccname}{names}{Copia a} +\DeclareLanguageCommand{\pagename}{names}{P\'agina} +\DeclareLanguageCommand{\headtoname}{names}{A} +\DeclareLanguageCommand{\subjectname}{names}{Asunto} +\DeclareLanguageCommand{\seename}{names}{v\'ease} +% Perhaps is preferable `v.' + + +% date +% ~~~~ + +\DeclareDateFunction{www}{% + \ifcase\weekday\or lun.\or mart.\or mcles.\or jves.\or + vnes.\or S\@tabacckludge'ab.\or Dom.\fi\@} + +\DeclareDateFunction{wwww}{% + \ifcase\weekday\or lunes\or martes\or mi\@tabacckludge'ercoles\or jueves\or + viernes\or s\@tabacckludge'abado\or domingo\fi} + +\DeclareDateFunction{mmm}{% + \ifcase\month\or en.\or feb.\or mzo.\or abr.\or + mayo\or jun.\or jul.\or ag.\or sept.\or oct.\or nov.\or dic.\fi\@} + +\DeclareDateFunction{mmmm}{\ifcase\month\or enero\or febrero\or + marzo\or abril\or mayo\or junio\or julio\or agosto\or septiembre\or + octubre\or noviembre\or diciembre\fi} + +\DeclareDateCommand{\today}{<d> de <mmmm> de <yyyy>} + +% math +% ~~~~ + +\DeclareLanguageGroup{math} + +% This part requires adaptation to LaTeX2e + +\DeclareLanguageCommand{\lim}{math} + {\mathop{\hbox{\rm l\@tabacckludge'\i m}}\limits}% +\DeclareLanguageCommand{\max}{math} + {\mathop{\rm m\acute ax}}% +\DeclareLanguageCommand{\sen}{math} + {\mathop{\rm sen}\nolimits}% +\DeclareLanguageCommand{\arcsen}{math} + {\mathop{\rm arc\,sen}\nolimits}% +\DeclareLanguageCommand{\senh}{math} + {\mathop{\rm senh}\nolimits}% +\DeclareLanguageCommand{\arccos}{math} + {\mathop{\rm arc\,cos}\nolimits}% +\DeclareLanguageCommand{\tg}{math} + {\mathop{\rm tg}\nolimits}% +\DeclareLanguageCommand{\arctg}{math} + {\mathop{\rm arc\,tg}\nolimits}% +\DeclareLanguageCommand{\tgh}{math} + {\mathop{\rm tgh}\nolimits}% +\DeclareLanguageCommand{\cotg}{math} + {\mathop{\rm cot}\nolimits}% +\DeclareLanguageCommand{\cotgh}{math} + {\mathop{\rm coth}\nolimits}% +\DeclareLanguageCommand{\cosec}{math} + {\mathop{\rm cosec}\nolimits}% + + +% \roman not allowed in Spanish. enumerate changed +% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +% labels are: 1. a) 1) a'); references are 1, a, 1, a'. +% The main problem is that enumeration depends on the number of levels, +% v.g. with 1 level: a); with 2: 1. a); with 3: A. 1. a), etc. +% Use of . and ) also depends on the length of items. +% So a mixed style is used. + +\DeclareLanguageCommand{\labelenumi}{layout} + {\theenumi.\enspace} +\DeclareLanguageCommand{\theenumi}{layout} + {\arabic{enumi}}% + +\DeclareLanguageCommand{\labelenumii}{layout} + {\theenumii)\enspace} +\DeclareLanguageCommand{\theenumii}{layout} + {\emph{\alph{enumii}}} +\DeclareLanguageCommand{\p@enumii}{layout} + {\theenumi, } + +\DeclareLanguageCommand{\labelenumiii}{layout}{\theenumiii)\enspace} +\DeclareLanguageCommand{\theenumiii}{layout}{\arabic{enumiii}} +\DeclareLanguageCommand{\p@enumiii}{layout}{\theenumi, \theenumii, } + +\DeclareLanguageCommand{\labelenumiv}{layout} + {\theenumiv)\enspace} +\DeclareLanguageCommand{\theenumiv}{layout} + {\emph{\alph{enumiv}}$'$} +\DeclareLanguageCommand{\p@enumiv}{layout} + {\p@enumiii\theenumiii, } + +\DeclareLanguageCommand{\labelitemi}{layout}{---} +\DeclareLanguageCommand{\labelitemii}{layout}{---} +\DeclareLanguageCommand{\labelitemiii}{layout}{---} +\DeclareLanguageCommand{\labelitemiv}{layout}{---} + +\SetLanguageVariable{\leftmargin}{layout}{2.6em} +\SetLanguageVariable{\leftmargini}{layout}{2.6em} +\SetLanguageVariable{\leftmarginii}{layout}{2em} +\SetLanguageVariable{\leftmarginiii}{layout}{2em} +\SetLanguageVariable{\leftmarginiv}{layout}{2em} + +% \fnsymbol and alpha +% ~~~~~~~~~~~~~~~~~~ + +\DeclareLanguageCommand{\@fnsymbol}{layout}[1]% + {\ifcase#1\or*\or**\or*{*}*\or*{**}*\or{**}*{**}\or\@ctrerr\fi} + +\DeclareLanguageCommand{\@alph}{layout}[1]% + {\ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or + k\or l\or m\or n\or \~n \or o\or p\or q\or r\or s\or t\or u\or v\or + w\or x\or y\or z\else\@ctrerr\fi} + +% spanish ordinals +% ~~~~~~~~~~~~~~~~ + +\DeclareLanguageCommand{\sptext}{tools}{\protect\spanish@sptext} + +\newcommand\spanish@sptext[1]{% + {\setbox\z@\hbox{8}\@tempdima\ht\z@ + \csname S@\f@size\endcsname + \edef\@tempa{\def\noexpand\@tempc{#1}% + \lowercase{\def\noexpand\@tempb{#1}}}\@tempa + \ifx\@tempb\@tempc\fontsize\sf@size\z@\selectfont + \advance\@tempdima-1.1ex + \else\fontsize\ssf@size\z@\selectfont + \advance\@tempdima-1.5ex\fi + \math@fontsfalse.\raise\@tempdima\hbox{#1}}} + +% Ligatures +% ~~~~~~~~~ + +\DeclareLigatureCommand{'}{a}{\@tabacckludge'a} +\DeclareLigatureCommand{'}{A}{\@tabacckludge'A} +\DeclareLigatureCommand{'}{e}{\@tabacckludge'e} +\DeclareLigatureCommand{'}{E}{\@tabacckludge'E} +\DeclareLigatureCommand{'}{i}{\@tabacckludge'\i} +\DeclareLigatureCommand{'}{I}{\@tabacckludge'I} +\DeclareLigatureCommand{'}{o}{\@tabacckludge'o} +\DeclareLigatureCommand{'}{O}{\@tabacckludge'O} +\DeclareLigatureCommand{'}{u}{\@tabacckludge'u} +\DeclareLigatureCommand{'}{U}{\@tabacckludge'U} + +\DeclareLigatureCommand{'}{n}{\~n} +\DeclareLigatureCommand{'}{N}{\~N} + +% Old Castilian has \c c + +\DeclareLigatureCommand{'}{c}{\c c} +\DeclareLigatureCommand{'}{C}{\c C} + +\DeclareLigatureCommand{>}{>}{\guillemotright} +\DeclareLigatureCommand{<}{<}{\guillemotleft} + +\DeclareLigatureCommand{'}{r}% + {\allowhyphens\discretionary{-}{}{r}\allowhyphens} +\DeclareLigatureCommand{'}{-}% + {\allowhyphens-\allowhyphens} +\DeclareLigatureCommand{'}{|}{\hskip\z@skip} + +\DeclareLigatureCommand{~}{n}{\~n} +\DeclareLigatureCommand{~}{N}{\~N} + +\DeclareLigatureCommand{"}{u}{\"u} +\DeclareLigatureCommand{"}{U}{\"U} + +% misc +% ~~~~ +% The following command is tricky but shows how to handle +% the case when we redefine a command which uses the +% old definition. The first solution would be +% \begin{verbatim} +% \let\spanish@dot\. +% \end{verbatim} +% at this point, but perhaps you -or some package- have (or +% is to) redefined it. +% So, since the old value is stored in +% \verb=\lang-spanish-\.=, the right solution is: + +\DeclareLanguageCommand{\.}{tools}{% + \@ifnextchar.{\spanish@dots}{\csname lang-spanish-\string\.\endcsname}} + +\def\spanish@dots..{\hbox{...}\@} + +\DeclareLanguageTextCommand{\%}?% + {\unskip\,\char"25\relax} + +% Now, the french spacing + +\SetLanguageCode{\sfcode}{text}{`.}{\@m} +\SetLanguageCode{\sfcode}{text}{`,}{\@m} +\SetLanguageCode{\sfcode}{text}{`:}{\@m} +\SetLanguageCode{\sfcode}{text}{`!}{\@m} +\SetLanguageCode{\sfcode}{text}{`?}{\@m} +\SetLanguageCode{\sfcode}{text}{`;}{\@m} + +\endinput + +%% \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 \~} +%% diff --git a/Master/texmf-dist/source/latex/polyglot/langs/spanish.ot1 b/Master/texmf-dist/source/latex/polyglot/langs/spanish.ot1 new file mode 100644 index 00000000000..5bbb00e1926 --- /dev/null +++ b/Master/texmf-dist/source/latex/polyglot/langs/spanish.ot1 @@ -0,0 +1,64 @@ +% Copyright 1997 Javier Bezos-L\'opez. All rights reserved. +% +% This file is part of the polyglot system release 1.1. +% -------------------------------------------------- +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. + +\ProvidesFile{spanish.ot1} + +\def\spanish@accent#1#2{% + \allowhyphens\accent#1 #2\allowhyphens } + +\def\spanish@lowacute#1{\leavevmode\allowhyphens + {\@tempdima\fontdimen5\font\setbox\z@\hbox{\char19}% + \@tempdimb-.52ex\advance\@tempdimb\ht\z@ + \ifdim1ex<\@tempdimb\fontdimen5\font\@tempdimb\fi% + {\accent19 \fontdimen5\font\@tempdima #1}}\allowhyphens} + +\DeclareLanguageCompositeCommand{\~}{OT1}{n} + {\spanish@accent{126}n} +\DeclareLanguageCompositeCommand{\~}{OT1}{N} + {\spanish@accent{126}N} + +\DeclareLanguageCompositeCommand{\"}{OT1}{u} + {\spanish@accent{127}u} +\DeclareLanguageCompositeCommand{\"}{OT1}{U} + {\spanish@accent{127}U} + +\DeclareLanguageCompositeCommand{\'}{OT1}{a} + {\spanish@accent{19}a} +\DeclareLanguageCompositeCommand{\'}{OT1}{e} + {\spanish@accent{19}e} +\DeclareLanguageCompositeCommand{\'}{OT1}{\i} + {\spanish@accent{19}\i} +\DeclareLanguageCompositeCommand{\'}{OT1}{i} + {\spanish@accent{19}\i} +\DeclareLanguageCompositeCommand{\'}{OT1}{o} + {\spanish@accent{19}o} +\DeclareLanguageCompositeCommand{\'}{OT1}{u} + {\spanish@accent{19}u} +\DeclareLanguageCompositeCommand{\'}{OT1}{A} + {\spanish@lowacute A} +\DeclareLanguageCompositeCommand{\'}{OT1}{E} + {\spanish@lowacute E} +\DeclareLanguageCompositeCommand{\'}{OT1}{I} + {\spanish@lowacute I} +\DeclareLanguageCompositeCommand{\'}{OT1}{O} + {\spanish@lowacute O} +\DeclareLanguageCompositeCommand{\'}{OT1}{U} + {\spanish@lowacute U} + +\DeclareLanguageTextCommand{\guillemotleft}{OT1}% + {{\leavevmode\count@\spacefactor + \setbox\z@\hbox{$\scriptscriptstyle\langle\mkern-4mu\langle$}% + \raise.74\dp\z@\box\z@\spacefactor\count@}} +\DeclareLanguageTextCommand{\guillemotright}{OT1}% + {{\leavevmode\count@\spacefactor + \setbox\z@\hbox{$\scriptscriptstyle\rangle\mkern-4mu\rangle$}% + \raise.74\dp\z@\box\z@\spacefactor\count@}} + +\endinput diff --git a/Master/texmf-dist/source/latex/polyglot/polyglot.dtx b/Master/texmf-dist/source/latex/polyglot/polyglot.dtx new file mode 100644 index 00000000000..efd148de74c --- /dev/null +++ b/Master/texmf-dist/source/latex/polyglot/polyglot.dtx @@ -0,0 +1,2189 @@ +%\iffalse +% Copyright 1997 Javier Bezos-L\'opez. All rights reserved. +% +% This file is part of the polyglot system release 1.1. +% ------------------------------------------------------ +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. +% +%\fi + +\def\fileversion{1.1} +\def\filedate{September 1, 1997} +\def\docdate{September 1, 1997} + +% +% \title{The \textsf{Polyglot} Package\footnote{This +% package is currently at version 1.1.}} +% +% \author{Javier Bezos-L\'opez\footnote{Please, send your +% comments and suggestions to \texttt{jbezos@mx3.redestb.es}, or +% to my postal address: Apartado 116.035, E-28080 Madrid, Spain. +% English is not my strong point, so contact me when you +% find mistakes in the manual.}} +% +% \date{\docdate} +% +% \maketitle +% +% \def\abstractname{Notice to Users of Version 1.0} +% +% \begin{abstract} +% I'm afraid some user commands have been changed, +% specially |\selectlanguage| and |\uselanguage|, +% and some other supressed---|\enablegroup| +% and |\disablegroup|, which have been merged into +% |\selectlanguage|. These changes will be definitive, and I +% had to do them in order to implement a right communication +% to files and marks, and avoid mixing up definitions which sometimes +% made \LaTeX\ enter in an endless loop. +% Furthermore, the new syntax is far more robust, +% flexible and readable. +% +% Most of commands for description +% files haven't changed at all, though some of them has been +% reimplemented. Yet, handling of dialects has been +% much improved; there is a new |\SetLanguage| (the old one +% has been renamed to |\SetDialect|) and you can create +% a dialect at any time with |\DeclareDialect| without the restrictions +% of the now obsolete |\GenerateDialects|. +% \end{abstract} +% +% +% \section{Introduction} +% +% The package \textsf{polyglot} provides a new language selection +% system taking advantage of the features of \LaTeXe. It provides some +% utilities which make writing a language style quite easy and +% straightforward. +% +% Some of the features implemeted by polyglot are: +% +% \begin{itemize} +% \item You can switch between languages freely. You have not +% to take care of neither head lines nor toc and bib +% entries---the right language is always used.\footnote{Index +% entries follow a special syntax and +% the current version of \textsf{polyglot} cannot handle that. For this +% reason the index entries remain untouched and you may +% use language commands only to some extent.} +% You can even get just a few commands from a language, not all. +% +% \item ``Ligatures,'' which are shortcuts for diacritical +% marks; for instance, in French |^e| is a synonymous +% to |\^{e}|. Some other ligatures perform special actions, +% as Spanish |'r| which allows divide ``extrarradio'' as +% ``extra-radio''. A very cool feature: in most of cases, +% ligatures does not interfere with other definitions; +% for instance, with the \textsf{index} package +% |^{<entry>}| still works, provided the <entry> has +% two or more tokens.\footnote{And provided +% \textsf{index} is loaded before \textsf{polyglot}. +% \textsf{index} is a package by David Jones.} +% +% \item Dialects---small language variants---are supported. For +% instance American is a variant of English with another date +% format. Hyphenations patterns are attached to dialects and +% different rules for US and British English can be used. +% +% \item New glyphs are created if necessary. For instance, if +% you are using |OT1| the German umlauts are lowered, but if you +% switch to |T1| the actual font glyphs are used. Some other font +% encoding may have their own glyphs which will be used only +% with that encoding. +% +% \item Customization is quite easy---just redefine a command +% of a language with |\renewcommand| when the language +% is in force. The new definition will be remembered, +% even if you switch back and forth between languages. +% +% \item An unique layout can be used through the document, +% even with lots of languages. If you use a class with +% a certain layout you don't want to modify, you or the +% class can tell \textsf{polyglot} not to touch +% it at all. +% \end{itemize} +% +% \section{Quick start} +% +% \subsection{Installation} +% +% To install the package follow these steps: +% \begin{enumerate} +% \item First, run |polyglot.ins|. The files |polyglot.sty|, +% |polyglot.ltx|, |polyglot.def| and |polyglot.cfg| are generated. +% +% \item Remove |polyglot.ltx| and +% |polyglot.def| as they are not needed in the basic installation. +% +% \item Move |polyglot.sty| and |polyglot.cfg| as well as the files +% with extensions |.ld| and |.ot1| to a place where \LaTeX{} +% can find them. +% \end{enumerate} +% +% The files are: +% +% \begin{itemize} +% \item |polyglot.sty| is the file to be read with |\usepackage|. +% +% \item |polyglot.cfg| gives your system configuration. +% +% \item Languages are stored in files with +% extension |.ld|, as, for instance, |spanish.ld|, |english.ld| +% and so on. +% +% \item |polyglot.ltx| has some definitions for instalation of hyphenation +% patterns as well as preloading of languages and the \textsf{polyglot} style +% (actually |polyglot.def|). +% +% \item Finally, there are some files named like languages, but with extensions +% like font encodings. +% \end{itemize} +% +% Once installed, you can use polyglot. +% To write a, say, German document simply state the +% |german| option in the |\documentclass| and load +% the package with |\usepackage{polyglot}|. +% That's all. A new layout, with new commands, +% ligatures and, if the |OT1| encoding is in force, +% new glyphs will be available to you, as described +% at the end of this manual. If you are happy with +% that you need not go further; but if you are +% interested in advanced features (how to insert a +% Spanish date or how to create your own ligatures, +% for instance) just continue. +% +% \section{User Interface} +% +% \subsection{Groups} +% +% A language has a series of commands and variables (counters and lengths) +% stored in several groups. These groups are: +% \begin{description} +% \item[names] Translation of commands for titles, etc., following +% the international \LaTeX{} conventions. +% \item[layout] Commands and variables for the general layout of the +% document (|enumerate|, |itemize|, etc.) +% \item[date] Logically, commands concerning dates. +% \item[ligatures] A way to provide ligatures, i.e., shorthands for accented +% letters, and other special symbols. +% \item[text] Modifications of some typografical conventions: spacing +% before o after characters (French `:' or `;', Spanish `\%'), etc. +% \item[tools] Supplemetary command definitions. +% \end{description} +% These groups belong to two categories: names, layout, and date are +% considered \emph{document} groups, since they are intended for +% formatting the document; ligatures, tools and text, are considered +% \emph{text} groups, since you will want to use them temporarily +% for a short text in some language. +% +% \subsection{Selecting a Language} +% +% You must load languages with |\usepackage|: +% \begin{sample} +% |\usepackage[english,spanish]{polyglot}| +% \end{sample} +% +% Global options (those of |\documentclass|) will be recognized as usual. +% The very first language will be automatically +% selected (with the starred version, see below). +% For this purpose, class options are taken in consideration \emph{before} package +% options. (Perhaps this is not the usual convention in \LaTeXe, but it is +% more logical; in general, you will state the main language as class option +% and the secondary ones as package options.) You can cancel this automatic +% selection with the package option |loadonly|: +% \begin{sample} +% |\usepackage[german,spanish,loadonly]{polyglot}| +% \end{sample} +% +% \begin{cmd} +% |\selectlanguage*[<no-groups>]{<language>}| +% \end{cmd} +% +% Selects all groups from <language>, except if there is the optional +% argument. <no-groups> is a list of groups \emph{not} to be selected, in the +% form |no<group>,no<group>,...|. For instance, if you dislike +% using ligatures: +% \begin{sample} +% |\selectlanguage*[noligatures]{french}| +% \end{sample} +% This command also sets defaults to be used by the +% unstarred version (see below). +% +% \begin{cmd} +% |\selectlanguage[<groups>]{<language>}| +% \end{cmd} +% +% Where <groups> is a list of <group>s and/or |no<group>|s. +% +% There are three posibilities: +% \begin{itemize} +% \item When a group is cited in the form <group> +% (e.g., |date| or |names|), this group is selected +% for the current language, i.e., that of the current +% |\selectlanguage|. +% +% \item When a group is cited in the form |no<group>| +% (e.g., |nodate| or |nonames|), this group is cancelled. +% +% \item When a group is not cited, then the default, i.e., that +% set by the |\selectlanguage*| in force, is used; it can be +% a |no|-form, and then the group will be disabled if +% necessary. If there is +% no a previous starred selection, the |no|-form will be +% presumed in all of groups. +% \end{itemize} +% If no optional argument is given, then |text,ligatures,tools| are +% presumed. Thus, at most two languages are selected at time. +% +% Here is an example: +% \begin{sample} +% |\selectlanguage*[noligatures]{spanish}|\\ +% Now we have Spanish |names|, |date|, |layout|, |text| and |tools|,\\ +% but no |ligatures| at all.\\ +% |\selectlanguage[date,notools]{french}|\\ +% Now we have Spanish |names|, |layout| and |text|, French |date|,\\ +% but neither |ligatures| nor |tools|.\\ +% |\selectlanguage[ligatures]{german}|\\ +% Now we have Spanish |names|, |date|, |layout|, |text| and |tools|,\\ +% and German |ligatures|.\\ +% \end{sample} +% +% Selection is always local. There is also the possibility +% to use |selectlanguage| as environment. +% \begin{sample} +% |\begin{selectlanguage}*[<no-groups>]{<language>} <text> \end{selectlanguage}|\\ +% |\begin{selectlanguage}[<groups>]{<language>} <text> \end{selectlanguage}| +% \end{sample} +% +% In general, you will use these commands without the optional +% argument---the starred version as command at the very +% beginning of documents and the starless version as environment +% in a temporary change of language. +% +% For the sake of clarity, spaces are ignored in the optional +% argument, so that you can write +% \begin{sample} +% |\selectlanguage[date, tools, no ligatures]{spanish}| +% \end{sample} +% +% \begin{cmd} +% |\uselanguage[<groups>]{<language>}{<text>}| +% \end{cmd} +% +% A command version of the |selectlanguage| environment, although only +% the unstarred version is allowed. +% +% \begin{cmd} +% |\unselectlanguage| +% \end{cmd} +% +% You can switch all of groups off +% with |\unselectlanguage|. Thus, you return to the +% original \LaTeX{} as far as \textsf{polyglot} +% is concerned.\footnote{Well, not exactly. But you +% should not notice it at all.} +% +% A typical file will look like this +% \begin{sample} +% |\documentclass[german]{...}|\\ +% |\usepackage[spanish]{polyglot}|\\ +% |\newenvironment{spanish}%|\\ +% | {\begin{quote}\begin{selectlanguage}{spanish}}%|\\ +% | {\end{selectlanguage}\end{quote}}|\\ +% |\begin{document}|\\ +% |Deutsche text|\\ +% |\begin{spanish}|\\ +% | Texto en espa'nol|\\ +% |\end{spanish}|\\ +% |Deutsche text|\\ +% |\end{document}|\\ +% \end{sample} +% +% Note that |\selectlanguage*{german}| is not necessary, since +% it is selected by the package. (Because there is no |loadonly| +% package option.) +% +% \subsection{Tools} +% +% \begin{cmd} +% |\thelanguage| +% \end{cmd} +% +% The name of the current language. You \emph{cannot} redefine this command +% in a document. +% +% \begin{cmd} +% |\languagelist| +% \end{cmd} +% +% A list of languages requested. +% +% \begin{cmd} +% |\allowhyphens| +% \end{cmd} +% +% Allows further hyphenation in words with the primitive |\accent|. +% +% \begin{cmd} +% |\hexnumber \octalnumber \charnumber| +% \end{cmd} +% +% Synonymous to |"|, |'| and |`| for numbers (|\hexnumber F3| $=$ |"F3|) +% provided for convenience. +% +% \begin{cmd} +% |\nofiles| +% \end{cmd} +% +% Not a new command really, but it has been reimplemented to optimize +% some internal macros related with file writing. +% +% \begin{cmd} +% |\ensurelanguage| +% \end{cmd} +% +% The \textsf{polyglot} package modifies internally some +% \LaTeX{} commands in order to do its best for making +% sure the current language is used +% in a head/foot line, even if the page is shipped out when another +% language is in force. +% Take for instance +% \begin{sample} +% (With |\selectlanguage*{spanish}|)\\ +% |\section{Sobre la confecci'on de t'itulos}| +% \end{sample} +% In this case, if the page is broken inside, say, a German text +% |\ensurelanguage| restores |spanish| and hence the accents. +% +% Yet, some non-standard classes or packages can modify the marks. +% Most of times (but not always) |\ensurelanguage| solves +% the problem:\,\footnote{For instance, it will not work when the line is +% automatically capitalized.} +% +% \begin{sample} +% (With |\selectlanguage*{spanish}|)\\ +% |\section{\ensurelanguage Sobre la confecci'on de t'itulos}| +% \end{sample} +% In typeset, writing and other modes it's ignored. +% +% \begin{cmd} +% |\ensuredcommand{<cmd>}{<text>}| +% \end{cmd} +% +% Saves the <text> in <cmd> so that you can +% use it in a ``ensured'' form later. Neither |\selectlanguage| nor |\uselanguage| +% can be passed in an argument---you must save the text with this command and then +% release it. The language is the +% current one. No arguments are allowed, and <text> is fragile, but +% a construction like |\uselanguage{...}{\ensuredcommand...}| is valid. +% +% Spanish |\chaptername| uses a |\'i| which is not +% set by standard |OT1| and hence is provided by |spanish.ot1|. +% If you use |\chaptername| in a text with, say, the German |text| +% group you will get an accented dotted i. In this +% case, you can use |\ensuredcommand|. +% +% \subsection{Extensions} +% +% The \textsf{polyglot} package provides \emph{extensions} +% so that its functionality will be extended to and from +% some package with the help of some commands +% in the |polyglot.cfg| file, +% sometimes with automatic loading. At the current moment, +% only font enconding extensions +% are implemented, which are automatically taken care of. +% (In future releases, you will be allowed +% to by-pass the current default settings, and add further extensions.) +% +% \subsubsection{Font Encoding Extensions} +% +% With the help of this extension, you are allowed +% to change some commands depending of font +% encodings. When a language is loaded, the package reads +% automatically the files named |<language-file>.<ENC>|, +% if they exist, where <language-file> is the exact name of the +% file |.ld| which the language is defined in, and <ENC> +% is the name of encodings declared. So, for instance, if you +% have preinstalled |T1| (besides |OMS|, etc.) and: +% \begin{sample} +% |\documentclass{article}|\\ +% |\usepackage[LXX,OT1]{fontenc}|\\ +% |\usepackage[spanish,german]{polyglot}| +% \end{sample} +% the following files will be read \emph{if they exist} (if not, nothing +% happens): +% \begin{sample} +% |spanish.t1 spanish.ot1 spanish.lxx spanish.oms |etc.\\ +% | german.t1 german.ot1 german.lxx german.oms |etc. +% \end{sample} +% So, for example, |german.ot1| redefines some umlauted vowels in order to +% modify the accent position and to allow hyphenation. +% +% Loading of these files may be inhibited by means of the option +% |nofontenc| when calling \textsf{polyglot}: +% \begin{sample} +% |\usepackage[spanish,german,nofontenc]{polyglot}| +% \end{sample} +% +% \section{Developpers Commands} +% +% Some command names could seem inconsistent with that of the user commands. In +% particular, when you refer to a language in a document you are referring in fact +% to a dialect, which belogs to a language. As user, you cannot access to a +% language and you instead access to a dialect named like the language. +% From now on, when we say ``current language'' we mean +% ``current language or dialect.'' For more details on dialects, see below. +% +% \subsection{General} +% +% \begin{cmd} +% |\DeclareLanguage{<language>}| +% \end{cmd} +% +% The first command in the |.ld| must be this one. Files don't always +% have the same name as the language, so this command makes things work. +% +% \begin{cmd} +% |\DeclareLanguageCommand{<cmd-name>}{<group>}[<num-arg>][<default>]{<definition>}| +% \end{cmd} +% +% Stores a command in a group of the current language. The definition will be +% activated when the group is selected, and the old definition, if any, +% will be stored for later recovery if the group is switched off. +% +% There is a point to note (which applies also to the next commands). +% Suppose the following code: +% \begin{sample} +% At |spanish.ld|:\\ +% |\DeclareLanguageCommand{\partname}{names}{Parte}|\\ +% | |\\ +% At document:\\ +% |\selectlanguage*{spanish}|\\ +% |\renewcommand{\partname}{Libro}|\\ +% |\selectlanguage*{english}|\\ +% |\partname| +% \end{sample} +% Obviously, at this point |\partname| is `Part'. But if you follow with +% \begin{sample} +% |\selectlanguage*{spanish}|\\ +% |\partname| +% \end{sample} +% Surprise! \emph{Your} value of |\partname|, i.e., `Libro', is recovered. So +% you can customize easily these macros in your document, even if you switch +% back and forth between languages. +% +% \begin{cmd} +% |\SetLanguageVariable{<var-name>}{<group>}{<value>}| +% \end{cmd} +% +% Here <var-name> stands for the internal name of a counter or a lenght as +% defined by |\newconter| (|\c@...|) or |\newlenght|. The variable must be +% already defined. When the group is selected, the new value will be assigned to +% the variable, and the old one will be stored. +% +% \begin{cmd} +% |\SetLanguageCode{<code-cmd>}{<group>}{<char-num>}{<value>}| +% \end{cmd} +% +% Similar to |\SetLanguageVariable| but for codes. For instance: +% \begin{sample} +% |\SetLanguageCode{\sfcode}{text}{`.}{1000}| +% \end{sample} +% +% Languages with |\frenchspacing| should set the |\sfcodes| with this command, so +% that a change with |\nonfrenchspacing| is recovered after a switch. +% +% \begin{cmd} +% |\DeclareLanguageSymbolCommand{<char>}{<group>}[<num-arg>][<default>]{<definition>}| +% \end{cmd} +% +% First makes <char> active and then defines it just as +% |\DeclareLanguageCommand| does. +% +% For instance, in French: +% \begin{sample} +% |\DeclareLanguageSymbolCommand{:}{spacing}{\unskip\,:}| +% \end{sample} +% Note that this command \emph{does not} change the category yet, +% and hence the previous command is valid. (Well, except if the |:| +% is already active. If you want to avoid any infinite loop, you can just +% say |{\unskip\,\string:}|). +% +% \begin{cmd} +% |\UpdateSpecial{<char>}| +% \end{cmd} +% +% Updates |\dospecials| and |\@sanitize|. First removes <char> +% from both lists; then adds it if it has categorie +% other than `other' or `letter'. With this method we avoid duplicated +% entries, as well as removing a character being usually special (for +% instance |~|). +% +% \subsection{Groups} +% +% \begin{cmd} +% |\DeclareLanguageGroup{<group>}|\\ +% |\DeclareLanguageGroup*{<group>}| +% \end{cmd} +% +% Adds a new group. With the starred version, the group will be +% considered a |text| group, and hence included in the default +% of |\selectlanguage|. Group names cannot begin with |no| +% because of the |no|-form convention given above. +% +% \subsection{Ligatures} +% +% \begin{cmd} +% |\DeclareLigatureCommand{<char-1>}{<char-2>}{<definition>}| +% \end{cmd} +% +% Makes the pair |<char-1><char-2>| a shorthand for <definition>. +% For instance: +% \begin{sample} +% |\DeclareLigatureCommand{"}{u}{\"u}| +% \end{sample} +% There are some points to note: +% \begin{itemize} +% \item Spaces between <char-1> and <char-2> are not significant. So +% |"u| and \verb*=" u= will give the same result. Be careful then. +% \item If <char-1> is followed by a char which there is no +% ligature for, the original value (i.e., the value of <char-1> at +% |\selectlanguage|) is used. +% +% \item If <char-1> is followed by an ``argument'' which is +% empty or with more +% than one token, its original value is also used. This is very important +% in order to break ligatures. In German, you get `\,''und' with +% |"{}und| or |"{und}|; in French, you get `C'est' with +% |C'{}est| or |C'{est}|; in Spanish, you write +% a non-breaking space before `n' with |~{}n|, and before `\~n', with +% |~{~n}| or |~~n|. If some package (there are in fact a lot) has defined, +% say, |^| with some special function which requires an argument, +% this will be keept in most of cases (multi-token arguments), even +% when we define |^| as a ligature; if the argument has only a token +% you may trick the |^| with, say, |^{e{}}| (two tokens, `e' and +% empty). In math mode, the original math meaning is used +% (even if the |\mathcode| was |"8000|). +% +% \item Some languages, such as Spanish, make active \lc{} and \rc{} in +% order to +% declare the ligatures \lc\lc{} and \rc\rc{} for guillemets. If you define +% macros testing some counters or lengths are lesser or greater, +% load the package with option |loadonly| and select the language +% after these commands. +% +% \item Any definitionn attached to a +% ligature char is preserved, even if not +% currently `active'. This makes switching a language very +% robust.\footnote{Don't try to change the catcode of a char to `other' +% before selecting a language +% in order to `lost' its definition---that won't work. Instead, +% let it to relax if you really need it. +% (In fact, \textsf{polyglot} uses three internal variables, the +% first storing the text value, the second the +% math value, and the third the definition, which is used +% when the catcode was `active' or the mathcode was |"8000|.)} +% +% \item Yet, an error is given +% when a ligature char has certain character codes +% at the selection, namely +% `escape' (|\|), `open' (|{|), `close' (|}|), +% `return' (|^^M|) or `comment' (|%|). +% This is a very unlikely situation and for the moment +% there is nothing I can do. Furthermore, `invalid' chars +% are validated (as `other') in the scope of the language. +% \end{itemize} +% +% \begin{cmd} +% |\DeclareLigature{<char-1>}| +% \end{cmd} +% In some instances, you might wish to declare a ligature char before +% |\DeclareLigatureCommand| (which has an implicit |\DeclareLigature|). +% (I wonder when, but here it is.) +% +% \subsection{Dates} +% +% \begin{cmd} +% |\DeclareDateFunction{<date-function-name>}{<definition>}|\\ +% |\DeclareDateFunctionDefault{<date-function-name>}{<definition>}|\\ +% |\DeclareDateCommand{<cmd-name>}{<definition>}| +% \end{cmd} +% By means of |\DeclareDateCommand| you can define commands like |\today|. The +% good news is that a special syntax is allowed in <definition> with date +% functions called with \lc<date-funtion-name>\rc. Here +% \lc<date-funtion-name>\rc{} stands for the definition given in +% |\DeclareDateFunction| for the current language. If no such function for +% the language is given then the definition of |\DeclareDateFunctionDefault| +% is used. See |english.ld| for a very illustrative example. (The +% \lc{} and \rc{} are actual lesser and greater signs.) +% +% Predeclared functions (with |\DeclareDateFunctionDefault|) are: +% \begin{itemize} +% \item \lc|d|\rc{} one or two digits day: 1, 2, \dots, 30, 31. +% \item \lc|dd|\rc{} two digits day: 01, 02, \dots +% \item \lc|m|\rc{} one or two digits month. +% \item \lc|mm|\rc{} two digits month. +% \item \lc|yy|\rc{} two digits year: 96, 97, 98, \dots +% \item \lc|yyyy|\rc{} four digits year: 1996, 1997, 1998, \dots +% \end{itemize} +% +% Functions which are not predeclared, and hence should be declared +% by the |.ld| file, are: +% +% \begin{itemize} +% \item \lc|www|\rc{} short weekday: mon., tue., wes., \dots +% \item \lc|wwww|\rc{} weekday in full: Monday, Tuesday, \dots +% \item \lc|mmm|\rc{} short month: jan., feb., mar., \dots +% \item \lc|mmmm|\rc{} month in full: January, February, \dots +% \end{itemize} +% +% The counter |\weekday| (also |\value{weekday}|) gives a number between 1 +% and 7 for Sunday, Monday, etc. +% +% For instance: +% \begin{sample} +% |\DeclareDateFunction{wwww}{\ifcase\weekday\or Sunday\or Monday\or|\\ +% | Tuesday\or Wesneday\or Thursday\or Friday\or Saturday\fi}|\\ +% |\DeclareDateCommand{\weektoday}{|\lc|wwww|\rc +% |, |\lc|mmmm|\rc| |\lc|dd|\rc| |\lc|yyyy|\rc|}| +% \end{sample} +% +% \subsection{Dialects} +% +% As stated above, |\selectlanguage| access to dialects rather than +% languages. |\DeclareLanguage| declares both a language and a dialect +% with the same name, and selects the actual language. +% +% \begin{cmd} +% |\DeclareDialect{<dialect>}|\\ +% |\SetDialect{<dialect>}|\\ +% |\SetLanguage{<language>}| +% \end{cmd} +% +% |\DeclareDialect| declares a dialect, which shares all +% of declarations for the current actual language. +% With |\SetDialect| you set the dialect so that new declarations +% will belong only to +% this dialect. |\DeclareDialect| just declares but does not set it. +% +% A dialect with the same name as the language is always implicit. +% You can handle this dialect exactly as any other dialect. +% In other words, after setting the dialect, new +% declarations belong only to this one. If you want to return to the +% actual language, so that +% new declarations will be shared by all dialects, use |\SetLanguage|. +% +% Note that commands and variables declared for a language are +% set by |\selectlanguage| before those of dialects, +% doesn't matter the order you declared it. +% +% For example: +% \begin{sample} +% |\DeclareLanguage{english}|\\ +% |\DeclareDialect{american}|\\ +% Declarations\\ +% |\SetDialect{english}|\\ +% |\DeclareDateCommmand{\today}{...}|\\ +% |\SetDialect{american}|\\ +% |\DeclareDateCommand{\today}{...}|\\ +% |\SetLanguage{english}|\\ +% More declarations shared by both |english| and |american| +% \end{sample} +% +% \subsection{Font Encoding} +% +% \begin{cmd} +% |\DeclareLanguageCompositeCommand{<cmd>}{<encoding>}{<letter>}|% +% |[<arg-num>][<default>]{<definition>}|\\ +% |\DeclareLanguageTextCommand{<cmd>}{<encoding>}|% +% |[<arg-num>][<default>]{<definition>}| +% \end{cmd} +% +% The equivalent to |\DeclareTextCompositeCommand| +% and |\DeclareTextCommand| in this package. (That's +% all.) New values are +% stored in the |text| group. No default versions are provided; +% default values may be assigned to the |?| encoding. +% +% A typical file looks like: +% \begin{sample} +% |\ProvidesFile{spanish.ot1}|\\ +% |\def\spanish@acute#1{\allowhyphens\accent19 #1\allowhyphens}|\\ +% |\DeclareLanguageCompositeCommand{\'}{OT1}{a}{\spanish@acute a}|\\ +% |\DeclareLanguageCompositeCommand{\'}{OT1}{A}{\spanish@acute A}|\\ +% (And so on.) +% \end{sample} +% +% You may add files +% for your local encodings, and you can modify the files supplied +% with the package (mainly for |OT1|) provided you state clearly at +% their beginning the changes and does not distribute them as part of +% the \textsf{polyglot} package. +% +% We note a very important point here. Perhaps |\DeclareLanguageCompositeCommand| +% change the internal definition of <cmd> which is not recovered after +% you exit from a language. You will not notice that in a document at all, but if +% you are trying to access to the original value you must do it before +% selecting the language for the first time. +% Yet, if <cmd> has a particular definition declared for +% this language, the old value \emph{will} be restored, as you can expect. +% +% |\PreLoadLanguage| loads +% these files always, but you cannot +% |\PreLoadLanguage|s with these encoding extensions for encoding schemes +% not preloaded. (As far as \LaTeX\ is concerned, they don't +% exist yet!) If you want them, there are two tactics: +% \begin{enumerate} +% \item Preloading the encoding in the corresponding |.cfg| +% \LaTeXe\ file. Then both encoding a the language extensions to it are +% directly available in your \LaTeX\ instalation. +% \item Accepting the fact these files +% will be loaded when typesetting the +% document. +% \end{enumerate} +% In order to avoid a new loading, you must +% move the files preloaded to a folder where \LaTeX\ cannot find them. +% +% \subsection{Interaction with Classes} +% +% \begin{cmd} +% |\pg@no<group>|\\ +% (i.e. |\pg@nonames|, |\pg@nolayout|, |\pg@noligatures|, etc.) +% \end{cmd} +% +% Initially, these commands are not defined, but if they are, the +% corresponding groups are not loaded. This mechanism is intended +% for classes designed for a certain publication and with a +% very concrete layout which we don't want to be changed. +% You simply write in the class file +% \begin{sample} +% |\newcommand{\pg@nolayout}{}| +% \end{sample} +% Note this procedure does not ever load the group---if +% you select it nothing happens. +% +% \section{Configuration} +% +% There \emph{must} be a file called |polyglot.cfg| which will define the +% configuration for your system. This file consists of two parts, the first +% one being used by the installation procedure, and the second one mainly by +% |\usepackage|. When compilling \LaTeX, you must load in some point the file +% |polyglot.ltx| if you want to install hyphenation patterns other than +% English. +% +% \begin{cmd} +% |\PreLoadPatterns{<patterns>}{<hyphens-file>}| +% \end{cmd} +% Defines a new language with the patterns in <hyphens-file>. Internally, +% these languages will be referred to as |\pgh@<language>|. +% +% \begin{cmd} +% |\PreLoadLanguage{<language>}[<file>]{<patterns>}{<more>}| +% \end{cmd} +% Loads a language \emph{at the time of installation} so that the +% language has not to be read by |\usepackage|. Even more, if you only +% want preloaded languages, you needn't call |polyglot.sty| in your +% document at all. The file read is |<file>.ld| +% or, if no optional argument, |<language>.ld|; and <patterns> has to be any +% set preloaded with |\PreLoadPatterns|. This command also preloads +% |polyglot.def|. In the part <more> you may insert commands just between +% the loading of the |.ld| file and the +% final settings made by the command. +% +% In running +% time, this command is ignored. +% +% \begin{cmd} +% |\PreLoadPolyGlot| +% \end{cmd} +% Preloads |polyglot.def|, so that the style is directly available +% in your system. +% +% \begin{cmd} +% |\LoadLanguage{<language>}[<file>]{<patterns>}{<more>}| +% \end{cmd} +% Quite similar to |\PreLoadLanguage| but in running time (i.e., when read +% with |\usepackage|). In installation time +% this command is ignored. +% +% \begin{cmd} +% |\LanguagePath{<file-path>}| +% \end{cmd} +% +% Add a path to |\input@path|. (See |ltdirchk| and the +% \emph{Local Guide} for details.) If \textsf{polyglot} has been installed, +% this command will be ignored in running time. +% +% This is a tipical |polyglot.cfg|: +% \begin{sample} +% |\PreLoadPatterns{english}{hyphen.tex}|\\ +% |\PreLoadPatterns{spanish}{sphyph.tex}|\\ +% | |\\ +% |\LoadLanguage{english}{english}|\\ +% |\LoadLanguage{spanish}{spanish}|\\ +% |\LoadLanguage{german}{english}|\\ +% |\LoadLanguage{austrian}[german]{english}|\\ +% |\LoadLanguage{french}{spanish}| +% \end{sample} +% +% \section{Installation} +% +% If you want install the package in your basic \LaTeX\ configuration, +% follow these steps: +% \begin{enumerate} +% \item First, run |polyglot.ins|. The files |polyglot.sty|, +% |polyglot.ltx|, |polyglot.def| and |polyglot.cfg| are generated. +% \item Create a file named |hyphen.cfg| which has to include the line +% \begin{sample} +% |\input{polyglot.ltx}| +% \end{sample} +% You may also rename |polyglot.ltx| as |hyphen.cfg|. +% \item Move the package and hyphen files where \LaTeX\ can find them. +% \item Modify |polyglot.cfg| following your requirements. At this +% stage, only |\LanguagePath|, |\PreLoadPatterns|, |\PreLoadPolyGlot|, +% and |\PreLoadLanguage| are mandatory, provided you want them and you +% won't remove nor modify later at all the |\PreLoadLanguage| commands. +% (Once installed +% you are allowed to add |\LoadLanguage|s to this file freely.) +% \item Run |latex.ltx|. +% \item If installation didn't failed, remove |polyglot.ltx| and +% |polyglot.def| as they are no longer needed. +% \end{enumerate} +% +% \section{Customization} +% +% ``Well, but I dislike |spanish.ld|.'' +% You can customize easily a language once +% loaded, with new commands or by redefininig the existing ones. +% \begin{itemize} +% \item If want to redefine a language command, simply select the +% group of this language which defines it +% (as with |\selectlanguage*|) and then +% redefine it with |\renewcommand|. +% \item If, in turn, you want to define a +% new command for a language, first +% make sure no language is selected +% (for instance, with |\unselectlanguage|). +% Then |\SetLanguage| and use the declaration +% commands provided by the +% package and described above. +% \end{itemize} +% +% A further step is creating a new file, +% by copying it, modifying the commands +% and, of course, renaming the file! Or with +% a file with extension |.ld| as: +% \begin{sample} +% |\ProvidesFile{...ld}|\\ +% |\input{...ld} | the file you want customize\\ +% |\selectlanguage*{...}|\\ +% Commands to be redefined\\ +% |\unselectlanguage|\\ +% |\SetLanguage{...}|\\ +% Commands to be created +% \end{sample} +% Then, add a line to |polyglot.cfg| with |\LoadLanguage|... +% +% \section{Errors} +% +% \begin{cmd} +% |Unknown group| +% \end{cmd} +% +% You are trying to assign a command to an inexistent group. +% Perhaps you have misspelled it. +% +% \begin{cmd} +% |Missing language file| +% \end{cmd} +% +% Probable causes: +% \begin{itemize} +% \item Wrong configuration, |\PreLoadLanguage| +% instead of |\LoadLanguage| with a language +% not preloaded. +% +% \item The corresponding |.ld| file is missing. +% +% \item Wrong path. +% \end{itemize} +% +% \begin{cmd} +% |Unknown language| +% \end{cmd} +% +% You forgot requesting it. Note that dialects +% stand apart from languages; i.e., you have no +% access to |austrian| just requesting |german|. +% +% \begin{cmd} +% |Invalid option skipped| +% \end{cmd} +% +% In the starred version of |\selectlanguage| +% you must use the |no|-forms only. +% +% \begin{cmd} +% |Bad ligature| +% \end{cmd} +% +% A very unlikely error which is generated by a bug in the +% description file of the current +% language, but also if some package has changed some categories +% to very, very extrange values. +% +% \begin{cmd} +% |Bug found (<n>)| +% \end{cmd} +% +% You will only find this error when using +% the developpers commands---never with the user ones---or if +% there is a bug in description files +% written by others. In the latter case, contact +% with the author. The meaning of the parameter <n> is +% \begin{enumerate} +% \item \emph{Unknown group in declaration.} The group hasn't been +% declared. Perhaps you misspelled it. +% +% \item \emph{Invalid group name.} Group names cannot begin +% with |no| to avoid mistakes when disabling a group. +% +% \item \emph{Declaration clash.} You are trying to +% redeclare a command or to set a new +% value to a variable for this language. +% If you want redefine it, select the language and simply +% use |\renewcommand| (or |\set..|). +% If you intend to define a new command +% for the language, sorry, you must change its name. +% +% \item \emph{Invalid language/dialect setting.} Generated by +% |\SetLanguage| or |\SetDialect| when the argument is not +% a declared language/dialect. +% \end{enumerate} +% +% Now we describe how polyglot generates \TeX{} +% and \LaTeX{} errors because of intrinsic syntax +% problems. +% +% \begin{cmd} +% |Argument of \pg@text@ligature has an extra }| +% \end{cmd} +% +% An usual problem with ligatures because the second +% letter is taken as a macro argument. If the first +% letter, for instance |"| in German, is followed +% by a |}| then |TeX| gets confused. For instance, +% \begin{sample} +% (Current language is German in full.)\\ +% |\uselanguage[date]{english}{\emph{``\today"}}| +% \end{sample} +% +% Note that German ligatures are active. Fix: +% type |{}| just after |"|. (A ligature just before +% the closing |}| in |\uselanguage| is OK.) +% +% \begin{cmd} +% |TeX capacity exceeded, sorry [save_size=<n>]| +% \end{cmd} +% +% You are using to many ungrouped languages. +% Fix: use the environment version of |selectlanguage| +% or alternatively use |\unselectlanguage| before +% a new |\selectlanguage|. +% +% \section{Conventions} +% +% I strongly encourage the following conventions: +% \begin{itemize} +% \item Concerning dates, see above. +% +% \item There must be a main ligature, which will precede some special +% features. For instance, the obvious main ligature in German is |"|, and +% so we have \verb=""=, |"-|, |"ck|, etc. +% +% \item Default values for encodings, in the |.ld| file. +% +% \item A mandatory convention. The language names must consist of +% lowercase letters. +% +% \item Don't name your own language files with the name of some language. +% I'd like to reserve these to official descriptions, +% supported by myself or a group. +% \end{itemize} +% +% \section{Languages} +% +% Now follows a brief description of the languages provided. All of them +% include the group |names| and |\today| in |date|. +% +% \subsection{\texttt{american}} +% +% |english| dialect. Same as English with date in American format. +% +% \subsection{\texttt{austrian}} +% +% |german| dialect. Same as German with ``January'' in Austrian. +% +% \subsection{\texttt{english}} +% +% \begin{description} +% \item[date] Functions \lc|ddd|\rc{} (ordinal date), \lc|mmm|\rc, +% \lc|mmmm|\rc{}, \lc|www|\rc{} and \lc|wwww|\rc. +% \item[tools] |\arabicth{<counter>}|: ordinal form of <counter>. +% \end{description} +% +% \subsection{\texttt{french}} +% +% \begin{description} +% \item[date] Functions \lc|ddd|\rc{} (ordinal first), +% \lc|mmmm|\rc{} and \lc|wwww|\rc{}. +% \item[layout] |itemize| with |--|. Paragraph after section +% indented. +% \item[ligatures] Accents |`a|, |`e|, |`u|, |'e|, |^a|, +% |^e|, |^i|, |^o|, |^u|, |"y|, |"e| and |/c| (also uppercase). +% Composite letters |"ae| and |"oe| (also uppercase). +% Guillemets with automatic +% spacing \lc\lc{} and \rc\rc. +% \item[text] |OT1| guillemets and accents. Spaces before +% double punctuation signs. French spacing. +% \item[tools] |\sptext{<text>}|: small and raised text for +% abbreviations. +% \end{description} +% +% \subsection{\texttt{german}} +% +% \begin{description} +% \item[date] Functions \lc|mmm|\rc, +% \lc|mmm|\rc, \lc|www|\rc{} and \lc|wwww|\rc. +% \item[ligatures] Accents |"a|, |"e|, |"i|, |"o|, +% |"u| (also uppercase). Scharfes s |"s| and |"S|. +% Hyphenation |"ck|, |"ff|, |"ll|, etc. German quotes +% |"`| and |"'|. Guillemets |"|\lc{} and |"|\rc. Other |"-|, +% {\ttfamily\string"\string|} and |""|. +% \item[text] |OT1| guillemets, german quotes and accents +% (with lower umlauts in a, o and u). +% \end{description} +% +% \subsection{\texttt{spanish}} +% +% A new group |math| is defined for some functions names: |\lim| +% giving l\'\i m, |\tg|, etc. +% +% \begin{description} +% \item[date] Functions \lc|mmm|\rc, +% \lc|mmmm|\rc, \lc|www|\rc{} and \lc|wwww|\rc. +% \item[layout] |itemize| with |---|. |enumerate| with ``1.'', +% ``\emph{a})'', ``1)'', ``\emph{a}$'$)''. |\fnsymbol| +% produces one, two, three\ldots{} asteriscs. |\alpha| +% includes the letter ``\~n''. +% \item[ligatures] Accents |'a|, |'e|, |'i|, |'o|, +% |'u|, |"u|, |'c| (\c{c}), |~n| $=$ |'n| (also uppercase). +% Hyphenation |'rr| and |'-|. +% \item[text] |OT1| guillemets and accents. French +% spacing. Space before |\%|. +% \item[tools] |\sptext{<text>}|: small and raised text for +% abbreviations (the preceptive dot is included). |\...| +% for ellipsis. +% \end{description} +% +% \section{Comming soon} +% +% \begin{itemize} +% \item More extension facilities. +% +% \item Time, besides date, will be supported. +% +% \item Multiple ligatures (with three or more chars). +% +% \item Ligatures in index entries, which will +% provide automatic ``alphabetize as''. +% (By expanding, say, French |"oeil| into +% |oeil@\oe il| or a similar +% device.) +% +% \item Plain \TeX\ compatibility. (Not a priority.) +% +% \item Modularity, so that only required commands will be loaded. (Since this +% is one of the goals of \LaTeX3, is very unlikely I implement this +% point before the release of the new \LaTeX.) +% +% \item Releasing of unnecessary commands, if required. (For example, if +% you are going to use just a language.) +% +% \item More languages. (My goal is not to provide a large set of language files +% but rather a set of tools for users---\TeX{} groups in particular. +% I will answer to people asking for help, and of course +% contributions will be credited.) +% +% \end{itemize} +% +% \StopEventually{} +% +%<*driver> +\documentclass{article} +\usepackage{doc} + +\addtolength{\topmargin}{-3pc} +\addtolength{\textwidth}{6pc} +\addtolength{\oddsidemargin}{-2pc} +\addtolength{\textheight}{7pc} + +\def\lc{\texttt{\string<}} +\def\rc{\texttt{\string>}} + +\DeclareRobustCommand{\cs}[1]{\texttt{\char`\\#1}} + +\newenvironment{cmd}% + {\par\addvspace{4.5ex plus 1ex}% + \vskip-\parskip\small + \renewcommand{\arraystretch}{1.2}% + \noindent\hspace{-\leftmargini}% + \begin{tabular}{|l|}\hline\ignorespaces} + {\\\hline\end{tabular}\nobreak\par\nobreak + \vspace{2.3ex}\vskip-\parskip} + +\newenvironment{sample}{\small\quote}{\endquote} + +\catcode`>=11 +\catcode`<=\active +\def<#1>{\textit{#1}} +\catcode`|=\active +\gdef|{\verb|\def<{|\syntx}} +\gdef\syntx#1>{\textit{#1}|} + +\raggedright +\parindent1em +\nofiles +\OnlyDescription + +\begin{document} +\DocInput{polyglot.dtx} +\end{document} + +%</driver> +% +% \section{The File |polyglot.ltx|} +% +% Internal code is still evolving. +% +% \begin{macrocode} +%<*install> +\count19=-1 % The language allocator + +\def\LanguagePath#1{\edef\input@path{\input@path{#1}}} + +% \end{macrocode} +% +% The |\csname| trick by-passes the |\outer| checking. +% +% \begin{macrocode} + +\def\PreLoadPatterns#1#2{% + \csname newlanguage\expandafter\endcsname\csname pgh@#1\endcsname + \language\csname pgh@#1\endcsname + \input{#2}} + +\def\SetPatterns#1#2{\expandafter\chardef + \csname pgh@#1\endcsname#2\relax} + +\def\PreLoadPolyGlot{% + \ifx\pg@add@to\@undefined\input{polyglot.def}\fi} + +\def\PreLoadLanguage#1{\PreLoadPolyGlot + \@ifnextchar[{\pg@load{#1}}{\pg@load{#1}[#1]}} + +\def\pg@load#1[#2]{\pg@input{#1}{#2}} + +\def\pg@@{pg-} + +\def\pg@input#1#2#3#4{% + \pg@to@list{#1}% + \@ifundefined{pgh@#1}% + {\expandafter\let\csname pgh@#1\expandafter\endcsname + \csname pgh@#3\endcsname% + \PackageInfo{polyglot}% + {#1 with #3 patterns\@gobble}}\@empty + \@ifundefined{\pg@@?#1}% + {\InputIfFileExists{#2.ld}{}% + {\pg@err{Missing language file}}% + \pg@extensions{#2}}\@empty + \edef\thelanguage{\csname\pg@@?#1\endcsname}#4} + +\def\LoadLanguage#1#2#{\@gobbletwo} + +\input{polyglot.cfg} + +\language\z@ + +\let\LanguagePath\@gobble + +\let\PreLoadPatterns\@gobbletwo + +\def\PreLoadLanguage#1{% + \@ifnextchar[{\pg@preld{#1}}{\pg@preld{#1}[#1]}} +\def\pg@preld#1[#2]#3#4{% + \DeclareOption{#1}{\@ifundefined{pge@#2}% + {\pg@extensions{#2}\@namedef{pge@#2}{}}\@empty}} + +\def\LoadLanguage#1{\@ifnextchar[{\pg@load{#1}}{\pg@load{#1}[#1]}} + +\def\pg@load#1[#2]#3#4{% + \DeclareOption{#1}{\pg@input{#1}{#2}{#3}{#4}}} + +%</install> +% \end{macrocode} +% +% \section{The Files |polyglot.sty| and |polyglot.def|} +% +% These files are quite similar. +% +% \begin{macrocode} +%<*package> + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{polyglot}[1997/02/05 Multilingual LaTeX Package] + +\DeclareOption{nofontenc}{\let\pg@extensions\@gobble} + +\DeclareOption{loadonly}{\let\pg@sel@opt\relax} + +% \end{macrocode} +% +% If we preloaded |polyglot| only this short code will +% be executed. We simply test if |\pg@add@to| is defined. +% +% \begin{macrocode} + +\ifx\pg@add@to\@undefined\else % ie, if preloaded + \input{polyglot.cfg} + \ProcessOptions + \pg@sel@opt +\expandafter\endinput\fi + +%</package> +% \end{macrocode} +% +% Some shortcuts to save memory, and initial settings. +% +% \begin{macrocode} +%<*preload|package> + +\chardef\f@@r=4 +\newcount\pg@count + +\def\pg@@{pg-} +\def\pg@@text{pg-text-} +\def\pg@@math{pg-math-} + +\def\pg@flag#1{\csname\pg@@#1-flag\endcsname} +\def\pg@@flag#1{\pg@@#1-flag} + +\def\pg@last{{}{}} + +\def\pg@err#1{\PackageError{polyglot}{#1}% + {See polyglot documentation for explanation}} + +% \end{macrocode} +% +% If there is |\nofiles|, some commands are +% canceled to save memory and speed up typesetting. +% +% \begin{macrocode} + +\AtBeginDocument{\if@filesw\else + \def\pg@file@setup#1#2#3{}% + \let\pg@file@write\@gobble + \let\pg@file@ends\relax\fi} + +\def\pg@bug@err#1{\pg@err{Bug found (#1)}} + +% \end{macrocode} +% +% \subsection{Internal Tools} +% +% Language commands are stored at commands in the +% form |pg-!<language>-<group>| or |pg-<language>-<group>|. +% The best way to +% understand them is with |\show|. The next command +% add something (implicit second argument) to a group (|#1|) +% of the current language (\thelanguage|) +% +% \begin{macrocode} + +\def\pg@add@to#1{% + \@ifundefined{\pg@@flag{#1}}% + {\pg@err{Unknown group}} + {\@ifundefined{pg@no#1}% + {\@ifundefined{\pg@@\thelanguage-#1}% + {\expandafter\let\csname\pg@@\thelanguage-#1\endcsname\@empty}% + \@empty + \expandafter\pg@after + \csname\pg@@\thelanguage-#1\expandafter\endcsname}\@gobble}} + +\@onlypreamble\pg@add@to + +\def\pg@after#1#2{% + \expandafter\def\expandafter#1\expandafter{#1#2}} + +\def\pg@to@list#1{\@ifundefined{languagelist}% + {\edef\languagelist{#1}}% + {\edef\languagelist{\languagelist,#1}}} + +\@onlypreamble\pg@to@list + +\def\pg@process#1#2{% + \begingroup\edef\pg@a{\endgroup + \noexpand\pg@xproc\noexpand#1#2,\noexpand\@nil,}\pg@a} +\def\pg@xproc#1#2,{\ifx\@nil#2\else + #1{#2}\expandafter\pg@xproc\expandafter#1\fi} + +\def\pg@idend#1{#1\egroup} + +% \end{macrocode} +% +% The following command returns |pg-#1-#2| (dialect form) if defined. +% If not, it returns |pg-!#1-#2| (language form). |#1| is either +% |\thelanguage| or |\pg@lig|. +% +% \begin{macrocode} + +\long\def\pg@cmd#1#2{% + \pg@@ + \expandafter\ifx\csname\pg@@?#1\endcsname\relax#1% + \else\expandafter\ifx\csname\pg@@#1-\string#2\endcsname\relax + \csname\pg@@?#1\endcsname + \else#1\fi\fi-\string#2} + +% \end{macrocode} +% +% \subsection{Selecting a language} +% +% |\pg@ifno| tests if |#1#2| is |no|. +% +% \begin{macrocode} + +\def\pg@ifno#1#2#3#4{% + \if#1n\if#2o#3\else\@firstoftwo\fi\else#4\fi} + +\def\pg@step{\afterassignment\pg@groups\def\pg@elt##1} + +\def\selectlanguage{% + \@ifstar{\pg@sel@i*}{\pg@sel@i{}}} + +\def\pg@sel@i#1{\begingroup\catcode`\ =9 % + \@ifnextchar[{\pg@sel@ii{#1}{}}{\pg@sel@ii{#1}{}[]}} + +\def\pg@sel@ii#1#2[#3]#4{% + \endgroup + \if!#1!% + \edef\pg@a{{\expandafter\@firstoftwo\pg@last}{[#3]{#4}}}% + \else + \def\pg@a{{[#3]{#4}}{}}% + \fi + \ifx\pg@a\pg@last\else + \let\pg@last\pg@a + \aftergroup\pg@file@ends + \pg@file@setup{#1}{#3}{#4}% + \pg@sel@iii#1[#3]{#4}% + \fi#2} + +\def\pg@sel@iii#1[#2]#3{% + \@ifundefined{pgh@#3}% + {\pg@err{Unknown language}\language\z@}% + {\language\csname pgh@#3\endcsname}% + \pg@step{\ifcase\pg@flag{##1}\or\or + \@gobble\or\pg@disable{##1}\else + \advance\pg@flag{##1}-\tw@\fi}% + \let\thelanguage\pg@main + \def\pg@elt##1{\pg@a##1\pg@a}% + \if!#1!% + \def\pg@a##1##2##3\pg@a{% + \pg@ifno##1##2% + {\pg@ifgroup{##3}{\advance\pg@flag{##3}\f@@r}}% + {\pg@ifgroup{##1##2##3}% + {\pg@after\pg@d{\pg@elt{##1##2##3}}% + \advance\pg@flag{##1##2##3}\f@@r}}}% + \let\pg@d\@empty + \if!#2!\pg@text@groups\else + \pg@process\pg@elt{#2}\fi + \pg@step{\ifnum\pg@flag{##1}=\tw@\pg@enable{##1}\fi}% + \pg@step{\ifnum\pg@flag{##1}=\f@@r\pg@disable{##1}\fi}% + \pg@step{\pg@count\pg@flag{##1}% + \pg@flag{##1}\ifnum\pg@count>\thr@@\f@@r\else\z@\fi + \ifodd\pg@count\advance\pg@flag{##1}\@ne\fi}% + \edef\thelanguage{#3}% + \def\pg@elt##1{\pg@enable{##1}\advance\pg@flag{##1}-\tw@}% + \pg@d\let\pg@d\@undefined + \else + \pg@step{\ifnum\pg@flag{##1}=\z@\pg@disable{##1}\fi}% + \def\pg@elt##1{\pg@a##1\pg@a}% + \if!#2!\else% + \def\pg@a##1##2##3\pg@a{% + \pg@ifno##1##2% + {\pg@ifgroup{##3}{\advance\pg@flag{##3}-\@m}}% Just a mark + {\pg@err{Invalid option skipped}{}}}% + \pg@process\pg@elt{#2}% + \fi + \edef\pg@main{#3}% + \edef\thelanguage{#3}% + \pg@step{\ifnum\pg@flag{##1}<\z@\pg@flag{##1}\@ne + \else\pg@flag{##1}\z@\pg@enable{##1}\fi}% + \fi} + +\def\uselanguage{\bgroup\begingroup\catcode`\ =9 + \@ifnextchar[{\pg@sel@ii{}\pg@idend}% + {\pg@sel@ii{}\pg@idend[]}} + +\def\unselectlanguage{\@ifstar{\selectlanguage[]{\pg@main}}% + {\pg@unsel@i\pg@unsel@ii}} + +\def\pg@unsel@i{% + \c@pg@depth\z@\pg@file@ends + \def\pg@elt##1{% + \expandafter\let\csname\pg@@slot##1\endcsname\@empty}% + \pg@elt{}\pg@streams} + +\def\pg@unsel@ii{% + \language\z@ + \pg@step{\ifcase\pg@flag{##1}\or\or + \@gobble\or\pg@disable{##1}\fi}% + \pg@step{\ifnum\pg@flag{##1}=\z@\pg@disable{##1}\fi}% + \pg@step{\pg@flag{##1}\@ne}% + \let\thelanguage\@empty\let\pg@main\@empty + \def\pg@last{{}{}}} + +\def\pg@enable#1{% + \let\pg@switch\@firstoftwo + \def\pg@group{#1}% + \edef\pg@a{\csname\pg@@?\thelanguage\endcsname}% + \expandafter\edef\csname\pg@@/#1\endcsname + {\edef\noexpand\thelanguage{\pg@a}% + \expandafter\noexpand\csname\pg@@\pg@a-#1\endcsname}% + \def\pg@b##1\pg@b{% + \let\thelanguage\pg@a + \@nameuse{\pg@@\thelanguage-#1}% + \edef\thelanguage{##1}% + \expandafter\pg@after\csname\pg@@/#1\endcsname + {\edef\thelanguage{##1}% + \csname\pg@@##1-#1\endcsname}% + \@nameuse{\pg@@\thelanguage-#1}}% + \expandafter\pg@b\thelanguage\pg@b} + +\def\pg@disable#1{% + \let\pg@switch\@secondoftwo + \csname\pg@@/#1\endcsname + \expandafter\let\csname\pg@@/#1\endcsname\relax} + +\def\pg@sel@opt{% + \@tempswatrue + \def\pg@d##1{\@ifundefined{pgh@##1}\@empty + {\if@tempswa + \PackageInfo{polyglot}% + {Selecting document language:\MessageBreak + ##1\@gobble}% + \selectlanguage*{##1}\@tempswafalse\fi}}% + \ifx\@classoptionslist\@empty\else + \pg@process\pg@d\@classoptionslist\fi + \ifx\@curroptions\@empty\else + \if@tempswa\pg@process\pg@d\@curroptions\fi\fi + \let\pg@d\@undefined} + +\@onlypreamble\pg@sel@opt + +% \end{macrocode} +% +% \subsection{Wrinting to files} +% +% \begin{macrocode} + +\let\pg@immediate\relax + +\def\pg@@slot{pg@slot@} + +\def\pg@file@setup#1#2#3{% + \advance\c@pg@depth\@ne + \def\pg@elt##1{% + \expandafter\pg@after\csname\pg@@slot##1\endcsname + {\addtocounter{\pg@@slot\the\pg@count}\@ne + \pg@immediate\write\pg@count + {\pg@begin\noexpand\selectlanguage#1[#2]{#3}}}}% + \pg@elt\@empty\pg@streams} + +\def\pg@file@write#1{% + \pg@count=#1\relax + \@ifundefined{c@\pg@@slot\the\pg@count}% + {\newcounter{\pg@@slot\the\pg@count}% + \pg@slot@\let\pg@elt\relax + \xdef\pg@streams{\pg@streams\pg@elt{\the\pg@count}}}{}% + {\@nameuse{\pg@@slot\the\pg@count}}% + \expandafter\gdef\csname\pg@@slot\the\pg@count\endcsname{}} + +\def\pg@file@ends{% + \def\pg@elt##1% + {\ifnum\value{\pg@@slot##1}>\c@pg@depth + \pg@immediate\write##1{\pg@end}% + \addtocounter{\pg@@slot##1}\m@ne + \expandafter\pg@elt\else\expandafter\@gobble\fi{##1}}% + \pg@streams\let\pg@elt\relax}% + +\let\pg@streams\@empty +\let\pg@slot@\@empty + +\let\pg@begin\begingroup +\let\pg@end\endgroup + +\newcounter{pg@depth} + +\AtEndDocument{\unselectlanguage + \let\pg@immediate\immediate} + +% \end{macromode} +% +% Now three \LaTeX\ commands are redefined. (Sad.) The +% first and the second to write a |\selectlanguage| if necessary. +% The third to sincronize |\bibitem| with the +% language selection, since +% originally is |\immediate|. +% +% \begin{macrocode} + +\long\def\protected@write#1#2#3{% + \pg@file@write{#1}% + \begingroup + \let\thepage\relax + #2% + \let\LanguageLigature\string + \let\protect\@unexpandable@protect + \edef\reserved@a{\write#1{#3}}% + \reserved@a + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi} + +\long\def\@writefile#1#2{% + \@ifundefined{tf@#1}\relax + {\pg@file@write{\csname tf@#1\endcsname}% + \@temptokena{#2}% + \pg@immediate\write\csname tf@#1\endcsname{\the\@temptokena}}} + +\def\@lbibitem[#1]#2{\item[\@biblabel{#1}\hfill]% + \if@filesw + \protected@write\@auxout{}% + {\string\bibcite{#2}{\protect\pg@ensure\pg@last#1}}% + \fi\ignorespaces} + +\def\DeclareLanguageCommand#1#2{% + \@ifundefined{\pg@cmd\thelanguage{#1}}% + {\pg@add@to{#2}{\pg@switch@cmd#1}% + \expandafter\newcommand + \csname\pg@@\thelanguage-\string#1\endcsname}% + {\pg@bug@err3}} + +\@onlypreamble\DeclareLanguageCommand + +\def\pg@switch@cmd#1{% + \pg@switch + {\ifx#1\@undefined + \expandafter\pg@after + \csname\pg@@/\pg@group\endcsname{\let#1\@undefined}% + \fi}{}% + \let\pg@c=#1% + \expandafter\let\expandafter + #1\csname\pg@@\thelanguage-\string#1\endcsname + \expandafter\let + \csname\pg@@\thelanguage-\string#1\endcsname=\pg@c} + +\def\SetLanguageVariable#1#2{% + \@ifundefined{\pg@cmd\thelanguage{#1}}% + {\pg@add@to{#2}{\pg@switch@var{#1}} + \@namedef{\pg@@\thelanguage-\string#1}}% + {\pg@bug@err3}} + +\@onlypreamble\SetLanguageVariable + +\def\pg@switch@var#1{% + \edef\pg@c{\the#1}% + #1=\csname\pg@@\thelanguage-\string#1\endcsname\relax + \expandafter\edef\csname\pg@@\thelanguage-\string#1\endcsname{\pg@c}} + +% \end{macrocode} +% +% \subsection{Special codes} +% +% \begin{macrocode} + +\def\SetLanguageCode#1#2#3{\pg@count=#3\relax + \edef\pg@a{\noexpand\SetLanguageVariable + {\noexpand#1\the\pg@count}}% + \pg@a{#2}} + +\@onlypreamble\SetLanguageCode + +\begingroup +\catcode`~=\active +\gdef\DeclareLanguageSymbolCommand#1#2{% + \SetLanguageCode{\catcode}{#2}{`#1}{\active}% + \def\pg@a{#2}% + \begingroup \lccode`~=`#1 \lccode`#1=`#1 + \lowercase{\endgroup + \pg@add@to\pg@a{\UpdateSpecial{#1}}% + \DeclareLanguageCommand{~}\pg@a}} +\endgroup + +\@onlypreamble\DeclareLanguageSymbolCommand + +% \end{macrocode} +% +% \subsection{Declaring things} +% +% \begin{macrocode} + +\def\DeclareLanguage#1{% + \def\thelanguage{!#1}% + \@namedef{\pg@@?#1}{!#1}% + \def\pg@main{!#1}} + +\def\DeclareDialect#1{% + \expandafter\let\csname\pg@@?#1\endcsname\pg@main} + +\@onlypreamble\DeclareLanguage +\@onlypreamble\DeclareDialect + +\def\SetLanguage#1{% + \@ifundefined{\pg@@?#1}% + {\pg@bug@err4}% + {\edef\thelanguage{!#1}}} + +\def\SetDialect#1{ + \@ifundefined{\pg@@?#1}% + {\pg@bug@err4}% + {\edef\thelanguage{#1}}} + +\@onlypreamble\SetLanguage +\@onlypreamble\SetDialect + +% \end{macrocode} +% +% \subsection{Groups} +% +% \begin{macrocode} + +\def\pg@ifgroup#1{\@ifundefined{\pg@@flag{#1}}% + {\pg@bug@err1\@gobble}} + +\def\DeclareLanguageGroup{% + \@ifstar{\pg@newgroup\pg@c}% + {\pg@newgroup\pg@text@groups}} + +\def\pg@newgroup#1#2{% + \def\pg@a##1##2##3\pg@a{% + \pg@ifno##1##2}% + \pg@a#2\pg@a + {\pg@bug@err2}% + {\@ifundefined{\pg@@flag{#2}}% + {\pg@after\pg@groups{\pg@elt{#2}}% + \pg@after#1{\pg@elt{#2}}% + \expandafter\newcount\csname\pg@@flag{#2}\endcsname + \pg@flag{#2}\@ne}% + {\PackageInfo{polyglot}% + {Ignoring group declaration: #2.^^J% + Already declared\@gobble}}}} + +\@onlypreamble\DeclareLanguageGroup +\@onlypreamble\pg@newgroup + +\let\pg@groups\@empty +\let\pg@text@groups\@empty +\let\pg@c\@empty + +\DeclareLanguageGroup*{names} +\DeclareLanguageGroup*{layout} +\DeclareLanguageGroup*{date} + +\DeclareLanguageGroup{ligatures} +\DeclareLanguageGroup{text} +\DeclareLanguageGroup{tools} + +% \end{macrocode} +% +% \section{Date} +% +% \begin{macrocode} + +\def\DeclareDateFunctionDefault#1{% + \expandafter\providecommand\csname\pg@@ DF-#1\endcsname} + +\def\DeclareDateFunction#1{% + \expandafter\DeclareLanguageCommand + \csname\pg@@ DF-#1\endcsname{date}} + +\@onlypreamble\DeclareDateFunctionDefault +\@onlypreamble\DeclareDateFunction + +\begingroup +\catcode`<=\active +\gdef\DeclareDateCommand#1{% + \begingroup + \let\protect\@unexpandable@protect + \catcode`<=\active + \def<##1>{\expandafter\noexpand\csname\pg@@ DF-##1\endcsname}% + \def\pg@a{% + \edef\pg@b{\endgroup% + \noexpand\DeclareLanguageCommand{\noexpand#1}{date}{\pg@c}} + \pg@b}% + \afterassignment\pg@a\def\pg@c} +\endgroup + +\@onlypreamble\DeclareDateCommand + +\newcount\weekday + +\let\c@day\day +\let\c@weekday\weekday +\let\c@month\month +\let\c@year\year + +\def\SetWeekDay{\pg@count=\year\divide\pg@count4 + \weekday=\pg@count + \multiply\pg@count4 + \advance\pg@count-\year + \ifnum\pg@count=\z@ + \ifnum\month<\thr@@\advance\weekday -1\fi\fi + \advance\weekday\year + \advance\weekday-1899 + \advance\weekday\ifcase\month\or0 \or31 \or59 \or90 \or120 + \or151 \or181 \or212 \or243 \or293 \or304 \or334 \fi + \advance\weekday\day + \pg@count=\weekday + \divide\pg@count7 + \multiply\pg@count7 + \advance\weekday-\pg@count + \advance\weekday\@ne} + +\SetWeekDay + +\DeclareDateFunctionDefault{d}{\the\day} +\DeclareDateFunctionDefault{dd}{\ifnum\day<10 0\fi\the\day} + +\DeclareDateFunctionDefault{m}{\the\month} +\DeclareDateFunctionDefault{mm}{\ifnum\month<10 0\fi\the\month} + +\DeclareDateFunctionDefault{yy}{\expandafter\@gobbletwo\the\year} +\DeclareDateFunctionDefault{yyyy}{\the\year} + +% \end{macrocode} +% +% \subsection{Ligatures} +% +% \begin{macrocode} + +\def\pg@lig{\ifcase\pg@flag{ligatures}\pg@main\or\or + \@gobble\or\thelanguage\fi} + +\def\pg@cs@lig{% + \ifmmode\expandafter\pg@math@ligature + \else\expandafter\pg@text@ligature\fi} + +\def\LanguageLigature{% + \ifx\protect\@unexpandable@protect + \expandafter\noexpand + \else\ifx\protect\@typeset@protect + \expandafter\expandafter\expandafter\pg@cs@lig + \else\expandafter\expandafter\expandafter\protect + \fi\fi} + +\begingroup +\catcode`~=\active +\gdef\DeclareLigature#1{% + \pg@add@to{ligatures}{\pg@switch{\pg@set@lig{#1}}{}}% + \begingroup \lccode`~=`#1 \lccode`#1=`#1 + \lowercase{\endgroup + \DeclareLanguageSymbolCommand{#1}{ligatures}% + {\LanguageLigature~}}} +\endgroup + +\@onlypreamble\DeclareLigature + +% \end{macrocode} +%\begin{verbatim} +%\def\DeclareLigatureSubtitution#1#2{% +% \@ifundefined{\pg@@root}\@empty +% {\pg@err{Ligature subtitution in dialect}% +% {You cannot subtitute a ligature after^^J% +% \string\GenerateDialects}}% +% \pg@add@to{ligatures}% +% {\@namedef{\pg@@text\string#1}{#2}}} +%\end{verbatim} +% +% The optional argument will be used in index +% entries. Not yet implemented. +% +% \begin{macrocode} + +\def\DeclareLigatureCommand#1#2{% + \@ifnextchar[% + {\pg@declare@lig{#1}{#2}}% + {\pg@declare@lig{#1}{#2}[]}} + +\def\pg@declare@lig#1#2[#3]{% + \@ifundefined{\pg@cmd\thelanguage{#1}}% + {\DeclareLigature{#1}}\@empty + \@ifundefined{\pg@cmd\thelanguage{#1-\string#2}}% + {\@namedef{\pg@@\thelanguage-\string#1-\string#2}}% + {\pg@bug@err3}} + +\@onlypreamble\DeclareLigatureCommand + +% \end{macrocode} +% +% We need take care of categorie codes because they can +% be changed by a package or by the user. Most of them +% perform the same action does not matter its char code; +% however, 11 and 12 mean ``I print myself'' and 13 +% means ``I'm a command''. The right char is +% set by |\lccode|. Here |^^<letter>| is conventional, and +% is used for letter (|L|), and other (|O|). +% If the setting is valid, |\pg@b| expands to +% |\let \pg@text@<char> <other char>| but if not it +% expands simply to |\let \pg@text@<char>| which +% gobbles |\@gobbletwo| and makes the error to be +% expanded. +% +% \begin{macrocode} + +\begingroup +\catcode`\$=3 \catcode`\&=4 +\catcode`\#=6 +\catcode`\^=7 \catcode`\_=8 +\catcode`\ =10 \gdef\pg@space{ } +\catcode`\^^L=11 \catcode`\^^O=12 +\catcode`\~=13 +\gdef\pg@set@lig#1{\begingroup + \lccode`^^L=`#1 \lccode`^^O=`#1 \lccode`~=`#1 \lccode`#1=`#1 + \lowercase{\endgroup + \edef\pg@b{\noexpand\let + \expandafter\noexpand\csname\pg@@text\string#1\endcsname + \ifcase\catcode`#1 \or\or\or$\or&\or + \or####\or^\or_\or\or\noexpand\pg@space + \or ^^L\or^^O\or\noexpand~\or\or^^O\fi}% + \pg@b\@gobbletwo\pg@lig@err{\string#1}% + \expandafter\let\csname\pg@@math\string#1\expandafter + \endcsname\csname\pg@@text\string#1\endcsname + \ifnum\catcode`#1>10 \ifnum\catcode`#1<13 \ifnum\mathcode`#1="8000 + \expandafter\let\csname\pg@@math\string#1\endcsname=~% + \fi\fi\fi}} +\endgroup + +\def\pg@lig@err{\pg@err{Bad ligature}} + +% \end{macrocode} +% +% In the following lines note the change of categories! +% This command checks there are exactly one token +% in the argument. Commands are long to handle the +% case the ligature comes at the end of a paragraph. +% +% \begin{macrocode} + +\begingroup +\catcode`\%=12 \catcode`\&=14 +\long\gdef\pg@text@ligature#1#2{& + \expandafter\if\expandafter%\@gobble#2%\@empty + \expandafter\pg@ligature\expandafter#1& + \else + \csname\pg@@text\string#1\expandafter\endcsname + \fi{#2}} +\endgroup + +\long\def\pg@ligature#1#2{% + \expandafter\ifx\csname\pg@cmd\pg@lig{#1-\string#2}\endcsname\relax + \csname\pg@@text\string#1\expandafter\endcsname\expandafter#2% + \else + \csname\pg@cmd\pg@lig{#1-\string#2}\expandafter\endcsname + \fi} + +\long\def\pg@math@ligature#1{% + \@nameuse{\pg@@math\string#1}} + +\def\UpdateSpecial#1{\expandafter\pg@update@special + \csname\string#1\endcsname} + +\def\pg@update@special#1{% + \def\pg@b##1##2{\ifnum`#1=`##2 \else + \noexpand##1\noexpand##2\fi}% + \def\pg@c##1##2{\ifnum\catcode`##2<\active + \ifnum\catcode`##2>10 \else\@firstoftwo\fi + \else\noexpand##1\noexpand##2\fi}% + \def\do{\pg@b\do}% + \def\@makeother{\pg@b\@makeother}% + \edef\dospecials{\dospecials\pg@c\do#1}% + \edef\@sanitize{\@sanitize\pg@c\@makeother#1}% + \let\do\relax + \def\@makeother##1{\catcode`##1=12\relax}} + +\begingroup +\catcode`*=\active \catcode`^=7 +\catcode`~=\active \catcode`'=12 +\lccode`*=`^ \lccode`^=`^ \lccode`~=`' \lccode`'=`' +\lowercase{% +\gdef\pr@m@s{% + \ifx~\@let@token\let\@let@token='\fi + \ifx*\@let@token\let\@let@token=^\fi + \ifx'\@let@token + \expandafter\pr@@@s + \else\ifx^\@let@token + \expandafter\expandafter\expandafter\pr@@@t + \else + \egroup + \fi\fi}} +\endgroup + +% \end{macrocode} +% +% \section{Tools} +% +% Take, for instance, catalan. We may say: +% |\DeclareLigatureCommand{`}{a}{\`a}|. +% This command cancels any possibility to say: +% |\counterx=`a|. The following commands allow us +% to subtitute |\charnumber| by |`|: +% |\counterx=\charnumber a|. The same applies to +% |"| (|\DeclareLigatureCommand{"}{A}{\"A}|) or |'|. +% +% \begin{macrocode} + +\begingroup +\catcode`"=12 \catcode`'=12 \catcode``=12 +\gdef\hexnumber{"} +\gdef\octalnumber{'} +\gdef\charnumber{`} +\endgroup + +\def\allowhyphens{\ifhmode\nobreak\hskip\z@skip\fi} + +\providecommand\@tabacckludge[1]{% + \expandafter\@changed@cmd\csname#1\endcsname\relax} + +\def\ensurelanguage{\ifx\glossary\relax + \protect\pg@ensure\pg@last\fi} + +\def\pg@ensure#1#2{% + \def\pg@a{{#1}{#2}}% + \ifx\pg@a\pg@last\else + \def\pg@a{#1}% + \ifx\pg@a\@empty\def\pg@c{\pg@unsel@ii}\else + \def\pg@c{\pg@sel@iii*#1}\fi + \def\pg@a{#2}% + \ifx\pg@a\@empty\else + \def\pg@a{#1}\edef\pg@b{\expandafter\@firstoftwo\pg@last}% + \ifx\pg@b\pg@a\expandafter\def\else\expandafter\pg@after\fi + \pg@c{\pg@sel@iii{}#2}% + \fi + \expandafter\pg@c + \fi} + +\def\ensuredcommand#1#2{% + \expandafter\gdef\expandafter#1\expandafter + {\expandafter{\expandafter\pg@ensure\pg@last#2}}} + + +% \end{macrocode} +% +% Two \LaTeX\ commands for marks are redefined. (Sad.) +% +% \begin{macrocode} + +\def\markboth#1#2{% + \gdef\@themark{{\ensurelanguage#1}{\ensurelanguage#2}}{% + \let\protect\@unexpandable@protect + \let\label\relax \let\index\relax \let\glossary\relax + \mark{\@themark}}\if@nobreak\ifvmode\nobreak\fi\fi} + +\def\@markright#1#2#3{% + \gdef\@themark{{#1}{\ensurelanguage#3}}} + +% \end{macrocode} +% +% \section{Font Encoding Commands} +% +% \begin{macrocode} + +\def\DeclareLanguageCompositeCommand#1#2#3{% + \pg@add@to{text}{\pg@composite{#1}{#2}}% + \expandafter\DeclareLanguageCommand + \csname\expandafter\string\csname#2\endcsname + \string#1-\string#3\endcsname{text}} + +\def\pg@composite#1#2{% + \@ifundefined{\pg@cmd\thelanguage{#1}}% + {\expandafter\let\csname\pg@@\thelanguage-\string#1\endcsname#1% + \expandafter\pg@after\csname\pg@@/text\endcsname + {\expandafter\let\expandafter + #1\csname\pg@@\thelanguage-\string#1\endcsname}}{}% + \expandafter\let\expandafter\reserved@a\csname#2\string#1\endcsname + \expandafter\expandafter\expandafter\ifx + \expandafter\@car\reserved@a\relax\relax\@nil \@text@composite \else + \edef\reserved@b##1{% + \def\expandafter\noexpand + \csname#2\string#1\endcsname####1{% + \noexpand\@text@composite + \expandafter\noexpand\csname#2\string#1\endcsname + ####1\noexpand\@empty\noexpand\@text@composite + {##1}}}% + \expandafter\reserved@b\expandafter{\reserved@a{##1}}% + \fi} + +\@onlypreamble\DeclareLanguageCompositeCommand + +% \end{macrocode} +% +% The following code was written but eventually +% discarded. It was intended for an argument +% expanded in full with some others not expanded +% at all. +% \begin{verbatim} +% \def\pg@expand#1{\edef\pg@b{#1}% +% \afterassignment\pg@@expand\def\pg@c##1\pg@c} +% \pg@@expand{\expandafter\pg@c\pg@b\pg@c} +% \end{verbatim} +% For example, in |\SetLanguageCode| +% \begin{verbatim} +% \pg@expand{\the\count@}{\SetLanguageVariable{#1##1}}{#2} +% \end{verbatim} +% +% \begin{macrocode} + +\def\DeclareLanguageTextCommand#1#2{% + \@ifundefined{\pg@cmd\thelanguage{#1}}% + {\DeclareLanguageCommand{#1}{text}% + {\pg@text@cmd{#1}{#2}}% + \expandafter\DeclareLanguageCommand + \csname#2\string#1\endcsname{text}}% + {\expandafter\let\expandafter\pg@a + \csname\pg@@\thelanguage-\string#1\endcsname + \expandafter\in@\expandafter\pg@text@cmd + \expandafter{\pg@a}% + \ifin@\def\pg@a{\expandafter\DeclareLanguageCommand + \csname#2\string#1\endcsname{text}}% + \expandafter\pg@a + \else\pg@bug@err3\fi}} + +\@onlypreamble\DeclareLanguageTextCommand + +\def\pg@text@cmd#1#2{% + \csname#2-cmd\expandafter\endcsname + \expandafter#1% + \csname#2\string#1\endcsname} + +% \end{macrocode} +% +% \subsection{Extensions handling} +% +% Not yet implemented. |\pge@<language>| will keep +% track of loaded extensions; now is just a flag. +% The next command is provisional. (If you read the manual +% you have guessed it.) +% +% \begin{macrocode} + +\def\pg@extensions#1{% + \edef\cdp@elt##1##2##3##4{% + \def\noexpand\DeclareCompositeLanguageCommand####1{% + \noexpand\pg@composite{####1}{##1}}% + \def\noexpand\DeclareTextLanguageCommand####1{% + \noexpand\pg@text{####1}{##1}}% + \noexpand\InputIfFileExists{#1.##1}{}{}}% + \cdp@list} + + +%</preload|package> +%<*package> +% \end{macrocode} +% +% \subsection{Loading requested languages} +% +% Some commands will be defined if you didn't +% use the installation procedure. +% +% \begin{macrocode} + +\ifx\PreLoadPatterns\@undefined + + \def\LanguagePath#1{\edef\input@path{\input@path{#1}}} + + \let\PreLoadPatterns\@gobbletwo + + \def\SetPatterns#1#2{\expandafter\chardef + \csname pgh@#1\endcsname=#2\relax} + + \def\PreLoadLanguage#1#2#{\@gobbletwo} + + \def\LoadLanguage#1{\@ifnextchar[{\pg@load{#1}}% + {\pg@load{#1}[#1]}} + + \def\pg@load#1[#2]#3#4{% + \DeclareOption{#1}{\pg@input{#1}{#2}{#3}{#4}}} + + \def\pg@input#1#2#3#4{% + \pg@to@list{#1}% + \@ifundefined{pgh@#1}% + {\expandafter\let\csname pgh@#1\expandafter\endcsname + \csname pgh@#3\endcsname% + \PackageInfo{polyglot}% + {#1 with #3 patterns\@gobble}}\@empty + \@ifundefined{\pg@@?#1}% + {\InputIfFileExists{#2.ld}{}% + {\pg@err{Missing language file}}% + \pg@extensions{#2}}\@empty + \edef\thelanguage{\csname\pg@@?#1\endcsname}#4} + +\fi + +%</package> +%<*preload> + +\everyjob\expandafter{\the\everyjob\SetWeekDay} + +%</preload> +%<*preload|package> + +\@onlypreamble\PreLoadPatterns +\@onlypreamble\SetPatterns +\@onlypreamble\PreLoadLanguage +\@onlypreamble\LoadLanguage +\@onlypreamble\pg@input +\@onlypreamble\pg@load + +%</preload|package> +%<*package> + +\input{polyglot.cfg} +\ProcessOptions +\pg@sel@opt + +%</package> +% \end{macrocode} +% +% \section{A basic |polyglot.cfg| file} +% +% \begin{macrocode} +%<*config> + +\SetPatterns{english}{0} + +\LoadLanguage{english}{english}{} +\LoadLanguage{american}[english]{english}{} +\LoadLanguage{french}{english}{} +\LoadLanguage{german}{english}{} +\LoadLanguage{austrian}[german]{english}{} +\LoadLanguage{spanish}{english}{} +\LoadLanguage{hebrew}[r_hebrew]{english}{} +%</config> +% \end{macrocode} +\endinput +% \Finale + + diff --git a/Master/texmf-dist/source/latex/polyglot/polyglot.ins b/Master/texmf-dist/source/latex/polyglot/polyglot.ins new file mode 100644 index 00000000000..a974893ac5d --- /dev/null +++ b/Master/texmf-dist/source/latex/polyglot/polyglot.ins @@ -0,0 +1,11 @@ +\def\batchfile{polyglot.ins} + +\input docstrip.tex + +\keepsilent + +\generateFile{polyglot.sty}{t}{\from{polyglot.dtx}{package}} +\generateFile{polyglot.def}{t}{\from{polyglot.dtx}{preload}} +\generateFile{polyglot.ltx}{t}{\from{polyglot.dtx}{install}} +\generateFile{polyglot.cfg}{t}{\from{polyglot.dtx}{config}} + diff --git a/Master/texmf-dist/source/latex/polyglot/polyglot.ltx b/Master/texmf-dist/source/latex/polyglot/polyglot.ltx new file mode 100644 index 00000000000..09a2c9e1a66 --- /dev/null +++ b/Master/texmf-dist/source/latex/polyglot/polyglot.ltx @@ -0,0 +1,87 @@ +%% +%% This is file `polyglot.ltx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% polyglot.dtx (with options: `install') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from polyglot.ltx. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file polyglot.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) + +\def\fileversion{1.1} +\def\filedate{September 1, 1997} +\def\docdate{September 1, 1997} + +\count19=-1 % The language allocator + +\def\LanguagePath#1{\edef\input@path{\input@path{#1}}} + + +\def\PreLoadPatterns#1#2{% + \csname newlanguage\expandafter\endcsname\csname pgh@#1\endcsname + \language\csname pgh@#1\endcsname + \input{#2}} + +\def\SetPatterns#1#2{\expandafter\chardef + \csname pgh@#1\endcsname#2\relax} + +\def\PreLoadPolyGlot{% + \ifx\pg@add@to\@undefined\input{polyglot.def}\fi} + +\def\PreLoadLanguage#1{\PreLoadPolyGlot + \@ifnextchar[{\pg@load{#1}}{\pg@load{#1}[#1]}} + +\def\pg@load#1[#2]{\pg@input{#1}{#2}} + +\def\pg@@{pg-} + +\def\pg@input#1#2#3#4{% + \pg@to@list{#1}% + \@ifundefined{pgh@#1}% + {\expandafter\let\csname pgh@#1\expandafter\endcsname + \csname pgh@#3\endcsname% + \PackageInfo{polyglot}% + {#1 with #3 patterns\@gobble}}\@empty + \@ifundefined{\pg@@?#1}% + {\InputIfFileExists{#2.ld}{}% + {\pg@err{Missing language file}}% + \pg@extensions{#2}}\@empty + \edef\thelanguage{\csname\pg@@?#1\endcsname}#4} + +\def\LoadLanguage#1#2#{\@gobbletwo} + +\input{polyglot.cfg} + +\language\z@ + +\let\LanguagePath\@gobble + +\let\PreLoadPatterns\@gobbletwo + +\def\PreLoadLanguage#1{% + \@ifnextchar[{\pg@preld{#1}}{\pg@preld{#1}[#1]}} +\def\pg@preld#1[#2]#3#4{% + \DeclareOption{#1}{\@ifundefined{pge@#2}% + {\pg@extensions{#2}\@namedef{pge@#2}{}}\@empty}} + +\def\LoadLanguage#1{\@ifnextchar[{\pg@load{#1}}{\pg@load{#1}[#1]}} + +\def\pg@load#1[#2]#3#4{% + \DeclareOption{#1}{\pg@input{#1}{#2}{#3}{#4}}} + +\endinput +%% +%% End of file `polyglot.ltx'. |