diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-13 00:02:59 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-13 00:02:59 +0000 |
commit | a22c2562845b4ba32acd63d5a8ca954c94d33d21 (patch) | |
tree | 9e3e309b252aa8063b8c0cc56bb2559b70493cee /Master/texmf-dist/tex/latex/polyglot | |
parent | 59d6f64add8d777784b3f0c5ea3fc8fb79723cd9 (diff) |
polyglot
git-svn-id: svn://tug.org/texlive/trunk@1206 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/polyglot')
-rw-r--r-- | Master/texmf-dist/tex/latex/polyglot/polyglot.cfg | 40 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/polyglot/polyglot.def | 707 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/polyglot/polyglot.sty | 757 |
3 files changed, 1504 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/polyglot/polyglot.cfg b/Master/texmf-dist/tex/latex/polyglot/polyglot.cfg new file mode 100644 index 00000000000..415383c4150 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglot/polyglot.cfg @@ -0,0 +1,40 @@ +%% +%% This is file `polyglot.cfg', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% polyglot.dtx (with options: `config') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from polyglot.cfg. +%% +%% 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} + + +\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}{} +\endinput +%% +%% End of file `polyglot.cfg'. diff --git a/Master/texmf-dist/tex/latex/polyglot/polyglot.def b/Master/texmf-dist/tex/latex/polyglot/polyglot.def new file mode 100644 index 00000000000..1457cf6f7e4 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglot/polyglot.def @@ -0,0 +1,707 @@ +%% +%% This is file `polyglot.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% polyglot.dtx (with options: `preload') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from polyglot.def. +%% +%% 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} + + +\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}} + + +\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)}} + + +\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} + + +\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} + + +\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 + + +\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} + + +\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}} + + +\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 + + +\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 + + +\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} + + +\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} + + +\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 + + +\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 + + +\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}} + + +\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 + + +\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}}} + + +\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}}} + + +\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 + + +\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} + + +\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} + + +\everyjob\expandafter{\the\everyjob\SetWeekDay} + + +\@onlypreamble\PreLoadPatterns +\@onlypreamble\SetPatterns +\@onlypreamble\PreLoadLanguage +\@onlypreamble\LoadLanguage +\@onlypreamble\pg@input +\@onlypreamble\pg@load + +\endinput +%% +%% End of file `polyglot.def'. diff --git a/Master/texmf-dist/tex/latex/polyglot/polyglot.sty b/Master/texmf-dist/tex/latex/polyglot/polyglot.sty new file mode 100644 index 00000000000..131a35e88de --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglot/polyglot.sty @@ -0,0 +1,757 @@ +%% +%% This is file `polyglot.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% polyglot.dtx (with options: `package') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from polyglot.sty. +%% +%% 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} + + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{polyglot}[1997/02/05 Multilingual LaTeX Package] + +\DeclareOption{nofontenc}{\let\pg@extensions\@gobble} + +\DeclareOption{loadonly}{\let\pg@sel@opt\relax} + + +\ifx\pg@add@to\@undefined\else % ie, if preloaded + \input{polyglot.cfg} + \ProcessOptions + \pg@sel@opt +\expandafter\endinput\fi + + +\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}} + + +\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)}} + + +\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} + + +\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} + + +\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 + + +\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} + + +\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}} + + +\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 + + +\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 + + +\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} + + +\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} + + +\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 + + +\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 + + +\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}} + + +\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 + + +\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}}} + + +\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}}} + + +\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 + + +\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} + + +\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} + + +\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 + + +\@onlypreamble\PreLoadPatterns +\@onlypreamble\SetPatterns +\@onlypreamble\PreLoadLanguage +\@onlypreamble\LoadLanguage +\@onlypreamble\pg@input +\@onlypreamble\pg@load + + +\input{polyglot.cfg} +\ProcessOptions +\pg@sel@opt + +\endinput +%% +%% End of file `polyglot.sty'. |