diff options
author | Karl Berry <karl@freefriends.org> | 2020-04-28 21:14:00 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-04-28 21:14:00 +0000 |
commit | 47b05827e36c70484f9a11ecd9677b22537a8910 (patch) | |
tree | 57910a8036fc25acd19f0ce56335dfcc801a484c /Master/texmf-dist/tex/generic/babel/babel.sty | |
parent | f5324bd184b19d1e2b0aca934969a4af95f2ed3e (diff) |
babel (28apr20)
git-svn-id: svn://tug.org/texlive/trunk@54930 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/babel/babel.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/babel/babel.sty | 566 |
1 files changed, 532 insertions, 34 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/babel.sty b/Master/texmf-dist/tex/generic/babel/babel.sty index 3d6be430945..bfa5ab18295 100644 --- a/Master/texmf-dist/tex/generic/babel/babel.sty +++ b/Master/texmf-dist/tex/generic/babel/babel.sty @@ -33,21 +33,12 @@ %% \NeedsTeXFormat{LaTeX2e}[2005/12/01] -\ProvidesPackage{babel}[2020/03/22 3.42 The Babel package] +\ProvidesPackage{babel}[2020/04/28 3.43 The Babel package] \@ifpackagewith{babel}{debug} {\providecommand\bbl@trace[1]{\message{^^J[ #1 ]}}% \let\bbl@debug\@firstofone} {\providecommand\bbl@trace[1]{}% \let\bbl@debug\@gobble} -\ifx\bbl@switchflag\@undefined % Prevent double input - \let\bbl@switchflag\relax - \input switch.def\relax -\fi -\ifx\directlua\@undefined\else - \ifx\bbl@luapatterns\@undefined - \input luababel.def - \fi -\fi \bbl@trace{Basic macros} \def\bbl@stripslash{\expandafter\@gobble\string} \def\bbl@add#1#2{% @@ -196,6 +187,64 @@ \else \@ne \fi + % Temporarily repeat here the code for errors + \def\bbl@error#1#2{% + \begingroup + \def\\{\MessageBreak}% + \PackageError{babel}{#1}{#2}% + \endgroup} + \def\bbl@warning#1{% + \begingroup + \def\\{\MessageBreak}% + \PackageWarning{babel}{#1}% + \endgroup} + \def\bbl@infowarn#1{% + \begingroup + \def\\{\MessageBreak}% + \GenericWarning + {(babel) \@spaces\@spaces\@spaces}% + {Package babel Info: #1}% + \endgroup} + \def\bbl@info#1{% + \begingroup + \def\\{\MessageBreak}% + \PackageInfo{babel}{#1}% + \endgroup} + \def\bbl@nocaption{\protect\bbl@nocaption@i} +\def\bbl@nocaption@i#1#2{% 1: text to be printed 2: caption macro \langXname + \global\@namedef{#2}{\textbf{?#1?}}% + \@nameuse{#2}% + \bbl@warning{% + \@backslashchar#2 not set. Please, define\\% + it in the preamble with something like:\\% + \string\renewcommand\@backslashchar#2{..}\\% + Reported}} +\def\bbl@tentative{\protect\bbl@tentative@i} +\def\bbl@tentative@i#1{% + \bbl@warning{% + Some functions for '#1' are tentative.\\% + They might not work as expected and their behavior\\% + could change in the future.\\% + Reported}} +\def\@nolanerr#1{% + \bbl@error + {You haven't defined the language #1\space yet.\\% + Perhaps you misspelled it or your installation\\% + is not complete}% + {Your command will be ignored, type <return> to proceed}} +\def\@nopatterns#1{% + \bbl@warning + {No hyphenation patterns were preloaded for\\% + the language `#1' into the format.\\% + Please, configure your TeX system to add them and\\% + rebuild the format. Now I will use the patterns\\% + preloaded for \bbl@nulllanguage\space instead}} + % End of errors +\@ifpackagewith{babel}{silent} + {\let\bbl@info\@gobble + \let\bbl@infowarn\@gobble + \let\bbl@warning\@gobble} + {} \def\AfterBabelLanguage#1{% \global\expandafter\bbl@add\csname#1.ldf-h@@k\endcsname}% \ifx\bbl@languages\@undefined\else @@ -215,7 +264,27 @@ \def\bbl@elt##1##2##3##4{}% \fi}% \bbl@languages -\fi +\fi% +\bbl@trace{Defining option 'base'} +\@ifpackagewith{babel}{base}{% + \let\bbl@onlyswitch\@empty + \let\bbl@provide@locale\relax + \input babel.def + \let\bbl@onlyswitch\@undefined + \ifx\directlua\@undefined + \DeclareOption*{\bbl@patterns{\CurrentOption}}% + \else + \input luababel.def + \DeclareOption*{\bbl@patterns@lua{\CurrentOption}}% + \fi + \DeclareOption{base}{}% + \DeclareOption{showlanguages}{}% + \ProcessOptions + \global\expandafter\let\csname opt@babel.sty\endcsname\relax + \global\expandafter\let\csname ver@babel.sty\endcsname\relax + \global\let\@ifl@ter@@\@ifl@ter + \def\@ifl@ter#1#2#3#4#5{\global\let\@ifl@ter\@ifl@ter@@}% + \endinput}{}% \ifodd\bbl@engine \def\bbl@activate@preotf{% \let\bbl@activate@preotf\relax % only once @@ -271,21 +340,6 @@ \bbl@activate@preotf \fi \fi -\bbl@trace{Defining option 'base'} -\@ifpackagewith{babel}{base}{% - \ifx\directlua\@undefined - \DeclareOption*{\bbl@patterns{\CurrentOption}}% - \else - \DeclareOption*{\bbl@patterns@lua{\CurrentOption}}% - \fi - \DeclareOption{base}{}% - \DeclareOption{showlanguages}{}% - \ProcessOptions - \global\expandafter\let\csname opt@babel.sty\endcsname\relax - \global\expandafter\let\csname ver@babel.sty\endcsname\relax - \global\let\@ifl@ter@@\@ifl@ter - \def\@ifl@ter#1#2#3#4#5{\global\let\@ifl@ter\@ifl@ter@@}% - \endinput}{}% \bbl@trace{key=value and another general options} \bbl@csarg\let{tempa\expandafter}\csname opt@babel.sty\endcsname \def\bbl@tempb#1.#2{% @@ -315,6 +369,9 @@ \DeclareOption{shorthands=off}{\bbl@tempa shorthands=\bbl@tempa} \newif\ifbbl@single \DeclareOption{selectors=off}{\bbl@singletrue} +\DeclareOption{safe=none}{\let\bbl@opt@safe\@empty} +\DeclareOption{safe=bib}{\def\bbl@opt@safe{B}} +\DeclareOption{safe=ref}{\def\bbl@opt@safe{R}} \DeclareOption{math=active}{} \DeclareOption{math=normal}{\def\bbl@mathnormal{\noexpand\textormath}} \DeclareOption{nocase}{} @@ -327,9 +384,6 @@ \DeclareOption{hyphenmap=select}{\chardef\bbl@opt@hyphenmap\tw@} \DeclareOption{hyphenmap=other}{\chardef\bbl@opt@hyphenmap\thr@@} \DeclareOption{hyphenmap=other*}{\chardef\bbl@opt@hyphenmap4\relax} -\DeclareOption{safe=none}{\let\bbl@opt@safe\@empty} -\DeclareOption{safe=bib}{\def\bbl@opt@safe{B}} -\DeclareOption{safe=ref}{\def\bbl@opt@safe{R}} \ifodd\bbl@engine \DeclareOption{bidi=basic-r}% {\ExecuteOptions{bidi=basic}} @@ -396,11 +450,12 @@ \bbl@csarg\ifx{opt@#1}\@nnil \bbl@csarg\edef{opt@#1}{#2}% \else - \bbl@error{% - Bad option `#1=#2'. Either you have misspelled the\\% - key or there is a previous setting of `#1'}{% - Valid keys are `shorthands', `config', `strings', `main',\\% - `headfoot', `safe', `math', among others.} + \bbl@error + {Bad option `#1=#2'. Either you have misspelled the\\% + key or there is a previous setting of `#1'. Valid\\% + keys are, among others, `shorthands', `main', `bidi',\\% + `strings', `config', `headfoot', `safe', `math'.}% + {See the manual for further details.} \fi} \let\bbl@language@opts\@empty \DeclareOption*{% @@ -465,6 +520,447 @@ \expandafter\@secondoftwo \fi} \fi +\input babel.def +\bbl@trace{Cross referencing macros} +\ifx\bbl@opt@safe\@empty\else + \def\@newl@bel#1#2#3{% + {\@safe@activestrue + \bbl@ifunset{#1@#2}% + \relax + {\gdef\@multiplelabels{% + \@latex@warning@no@line{There were multiply-defined labels}}% + \@latex@warning@no@line{Label `#2' multiply defined}}% + \global\@namedef{#1@#2}{#3}}} + \CheckCommand*\@testdef[3]{% + \def\reserved@a{#3}% + \expandafter\ifx\csname#1@#2\endcsname\reserved@a + \else + \@tempswatrue + \fi} + \def\@testdef#1#2#3{% TODO. With @samestring? + \@safe@activestrue + \expandafter\let\expandafter\bbl@tempa\csname #1@#2\endcsname + \def\bbl@tempb{#3}% + \@safe@activesfalse + \ifx\bbl@tempa\relax + \else + \edef\bbl@tempa{\expandafter\strip@prefix\meaning\bbl@tempa}% + \fi + \edef\bbl@tempb{\expandafter\strip@prefix\meaning\bbl@tempb}% + \ifx\bbl@tempa\bbl@tempb + \else + \@tempswatrue + \fi} +\fi +\bbl@xin@{R}\bbl@opt@safe +\ifin@ + \bbl@redefinerobust\ref#1{% + \@safe@activestrue\org@ref{#1}\@safe@activesfalse} + \bbl@redefinerobust\pageref#1{% + \@safe@activestrue\org@pageref{#1}\@safe@activesfalse} +\else + \let\org@ref\ref + \let\org@pageref\pageref +\fi +\bbl@xin@{B}\bbl@opt@safe +\ifin@ + \bbl@redefine\@citex[#1]#2{% + \@safe@activestrue\edef\@tempa{#2}\@safe@activesfalse + \org@@citex[#1]{\@tempa}} + \AtBeginDocument{% + \@ifpackageloaded{natbib}{% + \def\@citex[#1][#2]#3{% + \@safe@activestrue\edef\@tempa{#3}\@safe@activesfalse + \org@@citex[#1][#2]{\@tempa}}% + }{}} + \AtBeginDocument{% + \@ifpackageloaded{cite}{% + \def\@citex[#1]#2{% + \@safe@activestrue\org@@citex[#1]{#2}\@safe@activesfalse}% + }{}} + \bbl@redefine\nocite#1{% + \@safe@activestrue\org@nocite{#1}\@safe@activesfalse} + \bbl@redefine\bibcite{% + \bbl@cite@choice + \bibcite} + \def\bbl@bibcite#1#2{% + \org@bibcite{#1}{\@safe@activesfalse#2}} + \def\bbl@cite@choice{% + \global\let\bibcite\bbl@bibcite + \@ifpackageloaded{natbib}{\global\let\bibcite\org@bibcite}{}% + \@ifpackageloaded{cite}{\global\let\bibcite\org@bibcite}{}% + \global\let\bbl@cite@choice\relax} + \AtBeginDocument{\bbl@cite@choice} + \bbl@redefine\@bibitem#1{% + \@safe@activestrue\org@@bibitem{#1}\@safe@activesfalse} +\else + \let\org@nocite\nocite + \let\org@@citex\@citex + \let\org@bibcite\bibcite + \let\org@@bibitem\@bibitem +\fi +\bbl@trace{Marks} +\IfBabelLayout{sectioning} + {\ifx\bbl@opt@headfoot\@nnil + \g@addto@macro\@resetactivechars{% + \set@typeset@protect + \expandafter\select@language@x\expandafter{\bbl@main@language}% + \let\protect\noexpand + \edef\thepage{% TODO. Only with bidi. See also above + \noexpand\babelsublr{\unexpanded\expandafter{\thepage}}}}% + \fi} + {\ifbbl@single\else + \bbl@ifunset{markright }\bbl@redefine\bbl@redefinerobust + \markright#1{% + \bbl@ifblank{#1}% + {\org@markright{}}% + {\toks@{#1}% + \bbl@exp{% + \\\org@markright{\\\protect\\\foreignlanguage{\languagename}% + {\\\protect\\\bbl@restore@actives\the\toks@}}}}}% + \ifx\@mkboth\markboth + \def\bbl@tempc{\let\@mkboth\markboth} + \else + \def\bbl@tempc{} + \fi + \bbl@ifunset{markboth }\bbl@redefine\bbl@redefinerobust + \markboth#1#2{% + \protected@edef\bbl@tempb##1{% + \protect\foreignlanguage + {\languagename}{\protect\bbl@restore@actives##1}}% + \bbl@ifblank{#1}% + {\toks@{}}% + {\toks@\expandafter{\bbl@tempb{#1}}}% + \bbl@ifblank{#2}% + {\@temptokena{}}% + {\@temptokena\expandafter{\bbl@tempb{#2}}}% + \bbl@exp{\\\org@markboth{\the\toks@}{\the\@temptokena}}} + \bbl@tempc + \fi} % end ifbbl@single, end \IfBabelLayout +\bbl@trace{Preventing clashes with other packages} +\bbl@xin@{R}\bbl@opt@safe +\ifin@ + \AtBeginDocument{% + \@ifpackageloaded{ifthen}{% + \bbl@redefine@long\ifthenelse#1#2#3{% + \let\bbl@temp@pref\pageref + \let\pageref\org@pageref + \let\bbl@temp@ref\ref + \let\ref\org@ref + \@safe@activestrue + \org@ifthenelse{#1}% + {\let\pageref\bbl@temp@pref + \let\ref\bbl@temp@ref + \@safe@activesfalse + #2}% + {\let\pageref\bbl@temp@pref + \let\ref\bbl@temp@ref + \@safe@activesfalse + #3}% + }% + }{}% + } + \AtBeginDocument{% + \@ifpackageloaded{varioref}{% + \bbl@redefine\@@vpageref#1[#2]#3{% + \@safe@activestrue + \org@@@vpageref{#1}[#2]{#3}% + \@safe@activesfalse}% + \bbl@redefine\vrefpagenum#1#2{% + \@safe@activestrue + \org@vrefpagenum{#1}{#2}% + \@safe@activesfalse}% + \expandafter\def\csname Ref \endcsname#1{% + \protected@edef\@tempa{\org@ref{#1}}\expandafter\MakeUppercase\@tempa} + }{}% + } +\fi +\AtEndOfPackage{% + \AtBeginDocument{% + \@ifpackageloaded{hhline}% + {\expandafter\ifx\csname normal@char\string:\endcsname\relax + \else + \makeatletter + \def\@currname{hhline}\input{hhline.sty}\makeatother + \fi}% + {}}} +\AtBeginDocument{% + \ifx\pdfstringdefDisableCommands\@undefined\else + \pdfstringdefDisableCommands{\languageshorthands{system}}% + \fi} +\DeclareRobustCommand{\FOREIGNLANGUAGE}[1]{% + \lowercase{\foreignlanguage{#1}}} +\def\substitutefontfamily#1#2#3{% + \lowercase{\immediate\openout15=#1#2.fd\relax}% + \immediate\write15{% + \string\ProvidesFile{#1#2.fd}% + [\the\year/\two@digits{\the\month}/\two@digits{\the\day} + \space generated font description file]^^J + \string\DeclareFontFamily{#1}{#2}{}^^J + \string\DeclareFontShape{#1}{#2}{m}{n}{<->ssub * #3/m/n}{}^^J + \string\DeclareFontShape{#1}{#2}{m}{it}{<->ssub * #3/m/it}{}^^J + \string\DeclareFontShape{#1}{#2}{m}{sl}{<->ssub * #3/m/sl}{}^^J + \string\DeclareFontShape{#1}{#2}{m}{sc}{<->ssub * #3/m/sc}{}^^J + \string\DeclareFontShape{#1}{#2}{b}{n}{<->ssub * #3/bx/n}{}^^J + \string\DeclareFontShape{#1}{#2}{b}{it}{<->ssub * #3/bx/it}{}^^J + \string\DeclareFontShape{#1}{#2}{b}{sl}{<->ssub * #3/bx/sl}{}^^J + \string\DeclareFontShape{#1}{#2}{b}{sc}{<->ssub * #3/bx/sc}{}^^J + }% + \closeout15 + } +\@onlypreamble\substitutefontfamily +\bbl@trace{Encoding and fonts} +\newcommand\BabelNonASCII{LGR,X2,OT2,OT3,OT6,LHE,LWN,LMA,LMC,LMS,LMU,PU,PD1} +\newcommand\BabelNonText{TS1,T3,TS3} +\let\org@TeX\TeX +\let\org@LaTeX\LaTeX +\let\ensureascii\@firstofone +\AtBeginDocument{% + \in@false + \bbl@foreach\BabelNonASCII{% is there a text non-ascii enc? + \ifin@\else + \lowercase{\bbl@xin@{,#1enc.def,}{,\@filelist,}}% + \fi}% + \ifin@ % if a text non-ascii has been loaded + \def\ensureascii#1{{\fontencoding{OT1}\selectfont#1}}% + \DeclareTextCommandDefault{\TeX}{\org@TeX}% + \DeclareTextCommandDefault{\LaTeX}{\org@LaTeX}% + \def\bbl@tempb#1\@@{\uppercase{\bbl@tempc#1}ENC.DEF\@empty\@@}% + \def\bbl@tempc#1ENC.DEF#2\@@{% + \ifx\@empty#2\else + \bbl@ifunset{T@#1}% + {}% + {\bbl@xin@{,#1,}{,\BabelNonASCII,\BabelNonText,}% + \ifin@ + \DeclareTextCommand{\TeX}{#1}{\ensureascii{\org@TeX}}% + \DeclareTextCommand{\LaTeX}{#1}{\ensureascii{\org@LaTeX}}% + \else + \def\ensureascii##1{{\fontencoding{#1}\selectfont##1}}% + \fi}% + \fi}% + \bbl@foreach\@filelist{\bbl@tempb#1\@@}% TODO - \@@ de mas?? + \bbl@xin@{,\cf@encoding,}{,\BabelNonASCII,\BabelNonText,}% + \ifin@\else + \edef\ensureascii#1{{% + \noexpand\fontencoding{\cf@encoding}\noexpand\selectfont#1}}% + \fi + \fi} +\AtEndOfPackage{\edef\latinencoding{\cf@encoding}} +\AtBeginDocument{% + \@ifpackageloaded{fontspec}% + {\xdef\latinencoding{% + \ifx\UTFencname\@undefined + EU\ifcase\bbl@engine\or2\or1\fi + \else + \UTFencname + \fi}}% + {\gdef\latinencoding{OT1}% + \ifx\cf@encoding\bbl@t@one + \xdef\latinencoding{\bbl@t@one}% + \else + \ifx\@fontenc@load@list\@undefined + \@ifl@aded{def}{t1enc}{\xdef\latinencoding{\bbl@t@one}}{}% + \else + \def\@elt#1{,#1,}% + \edef\bbl@tempa{\expandafter\@gobbletwo\@fontenc@load@list}% + \let\@elt\relax + \bbl@xin@{,T1,}\bbl@tempa + \ifin@ + \xdef\latinencoding{\bbl@t@one}% + \fi + \fi + \fi}} +\DeclareRobustCommand{\latintext}{% + \fontencoding{\latinencoding}\selectfont + \def\encodingdefault{\latinencoding}} +\ifx\@undefined\DeclareTextFontCommand + \DeclareRobustCommand{\textlatin}[1]{\leavevmode{\latintext #1}} +\else + \DeclareTextFontCommand{\textlatin}{\latintext} +\fi +\bbl@trace{Basic (internal) bidi support} +\def\bbl@alscripts{,Arabic,Syriac,Thaana,} +\def\bbl@rscripts{% + ,Imperial Aramaic,Avestan,Cypriot,Hatran,Hebrew,% + Old Hungarian,Old Hungarian,Lydian,Mandaean,Manichaean,% + Manichaean,Meroitic Cursive,Meroitic,Old North Arabian,% + Nabataean,N'Ko,Orkhon,Palmyrene,Inscriptional Pahlavi,% + Psalter Pahlavi,Phoenician,Inscriptional Parthian,Samaritan,% + Old South Arabian,}% +\def\bbl@provide@dirs#1{% + \bbl@xin@{\csname bbl@sname@#1\endcsname}{\bbl@alscripts\bbl@rscripts}% + \ifin@ + \global\bbl@csarg\chardef{wdir@#1}\@ne + \bbl@xin@{\csname bbl@sname@#1\endcsname}{\bbl@alscripts}% + \ifin@ + \global\bbl@csarg\chardef{wdir@#1}\tw@ % useless in xetex + \fi + \else + \global\bbl@csarg\chardef{wdir@#1}\z@ + \fi + \ifodd\bbl@engine + \bbl@csarg\ifcase{wdir@#1}% + \directlua{ Babel.locale_props[\the\localeid].textdir = 'l' }% + \or + \directlua{ Babel.locale_props[\the\localeid].textdir = 'r' }% + \or + \directlua{ Babel.locale_props[\the\localeid].textdir = 'al' }% + \fi + \fi} +\def\bbl@switchdir{% + \bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}% + \bbl@ifunset{bbl@wdir@\languagename}{\bbl@provide@dirs{\languagename}}{}% + \bbl@exp{\\\bbl@setdirs\bbl@cl{wdir}}} +\def\bbl@setdirs#1{% TODO - math + \ifcase\bbl@select@type % TODO - strictly, not the right test + \bbl@bodydir{#1}% + \bbl@pardir{#1}% + \fi + \bbl@textdir{#1}} +\ifodd\bbl@engine % luatex=1 + \AddBabelHook{babel-bidi}{afterextras}{\bbl@switchdir} + \DisableBabelHook{babel-bidi} + \chardef\bbl@thetextdir\z@ + \chardef\bbl@thepardir\z@ + \def\bbl@getluadir#1{% + \directlua{ + if tex.#1dir == 'TLT' then + tex.sprint('0') + elseif tex.#1dir == 'TRT' then + tex.sprint('1') + end}} + \def\bbl@setluadir#1#2#3{% 1=text/par.. 2=\textdir.. 3=0 lr/1 rl + \ifcase#3\relax + \ifcase\bbl@getluadir{#1}\relax\else + #2 TLT\relax + \fi + \else + \ifcase\bbl@getluadir{#1}\relax + #2 TRT\relax + \fi + \fi} + \def\bbl@textdir#1{% + \bbl@setluadir{text}\textdir{#1}% + \chardef\bbl@thetextdir#1\relax + \setattribute\bbl@attr@dir{\numexpr\bbl@thepardir*3+#1}} + \def\bbl@pardir#1{% + \bbl@setluadir{par}\pardir{#1}% + \chardef\bbl@thepardir#1\relax} + \def\bbl@bodydir{\bbl@setluadir{body}\bodydir} + \def\bbl@pagedir{\bbl@setluadir{page}\pagedir} + \def\bbl@dirparastext{\pardir\the\textdir\relax}% %%%% + % Sadly, we have to deal with boxes in math with basic. + % Activated every math with the package option bidi=: + \def\bbl@mathboxdir{% + \ifcase\bbl@thetextdir\relax + \everyhbox{\textdir TLT\relax}% + \else + \everyhbox{\textdir TRT\relax}% + \fi} +\else % pdftex=0, xetex=2 + \AddBabelHook{babel-bidi}{afterextras}{\bbl@switchdir} + \DisableBabelHook{babel-bidi} + \newcount\bbl@dirlevel + \chardef\bbl@thetextdir\z@ + \chardef\bbl@thepardir\z@ + \def\bbl@textdir#1{% + \ifcase#1\relax + \chardef\bbl@thetextdir\z@ + \bbl@textdir@i\beginL\endL + \else + \chardef\bbl@thetextdir\@ne + \bbl@textdir@i\beginR\endR + \fi} + \def\bbl@textdir@i#1#2{% + \ifhmode + \ifnum\currentgrouplevel>\z@ + \ifnum\currentgrouplevel=\bbl@dirlevel + \bbl@error{Multiple bidi settings inside a group}% + {I'll insert a new group, but expect wrong results.}% + \bgroup\aftergroup#2\aftergroup\egroup + \else + \ifcase\currentgrouptype\or % 0 bottom + \aftergroup#2% 1 simple {} + \or + \bgroup\aftergroup#2\aftergroup\egroup % 2 hbox + \or + \bgroup\aftergroup#2\aftergroup\egroup % 3 adj hbox + \or\or\or % vbox vtop align + \or + \bgroup\aftergroup#2\aftergroup\egroup % 7 noalign + \or\or\or\or\or\or % output math disc insert vcent mathchoice + \or + \aftergroup#2% 14 \begingroup + \else + \bgroup\aftergroup#2\aftergroup\egroup % 15 adj + \fi + \fi + \bbl@dirlevel\currentgrouplevel + \fi + #1% + \fi} + \def\bbl@pardir#1{\chardef\bbl@thepardir#1\relax} + \let\bbl@bodydir\@gobble + \let\bbl@pagedir\@gobble + \def\bbl@dirparastext{\chardef\bbl@thepardir\bbl@thetextdir} + \def\bbl@xebidipar{% + \let\bbl@xebidipar\relax + \TeXXeTstate\@ne + \def\bbl@xeeverypar{% + \ifcase\bbl@thepardir + \ifcase\bbl@thetextdir\else\beginR\fi + \else + {\setbox\z@\lastbox\beginR\box\z@}% + \fi}% + \let\bbl@severypar\everypar + \newtoks\everypar + \everypar=\bbl@severypar + \bbl@severypar{\bbl@xeeverypar\the\everypar}} + \def\bbl@tempb{% + \let\bbl@textdir@i\@gobbletwo + \let\bbl@xebidipar\@empty + \AddBabelHook{bidi}{foreign}{% + \def\bbl@tempa{\def\BabelText########1}% + \ifcase\bbl@thetextdir + \expandafter\bbl@tempa\expandafter{\BabelText{\LR{####1}}}% + \else + \expandafter\bbl@tempa\expandafter{\BabelText{\RL{####1}}}% + \fi} + \def\bbl@pardir##1{\ifcase##1\relax\setLR\else\setRL\fi}} + \@ifpackagewith{babel}{bidi=bidi}{\bbl@tempb}{}% + \@ifpackagewith{babel}{bidi=bidi-l}{\bbl@tempb}{}% + \@ifpackagewith{babel}{bidi=bidi-r}{\bbl@tempb}{}% +\fi +\DeclareRobustCommand\babelsublr[1]{\leavevmode{\bbl@textdir\z@#1}} +\AtBeginDocument{% + \ifx\pdfstringdefDisableCommands\@undefined\else + \ifx\pdfstringdefDisableCommands\relax\else + \pdfstringdefDisableCommands{\let\babelsublr\@firstofone}% + \fi + \fi} +\bbl@trace{Local Language Configuration} +\ifx\loadlocalcfg\@undefined + \@ifpackagewith{babel}{noconfigs}% + {\let\loadlocalcfg\@gobble}% + {\def\loadlocalcfg#1{% + \InputIfFileExists{#1.cfg}% + {\typeout{*************************************^^J% + * Local config file #1.cfg used^^J% + *}}% + \@empty}} +\fi +\ifx\@unexpandable@protect\@undefined + \def\@unexpandable@protect{\noexpand\protect\noexpand} + \long\def\protected@write#1#2#3{% + \begingroup + \let\thepage\relax + #2% + \let\protect\@unexpandable@protect + \edef\reserved@a{\write#1{#3}}% + \reserved@a + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi} +\fi \bbl@trace{Language options} \let\bbl@afterlang\relax \let\BabelModifiers\relax @@ -541,6 +1037,7 @@ \bbl@ifsamestring\CurrentOption{#1}{\global\bbl@add\bbl@afterlang}{}} \DeclareOption*{} \ProcessOptions* +\bbl@trace{Option 'main'} \ifx\bbl@opt@main\@nnil \edef\bbl@tempa{\@classoptionslist,\bbl@language@opts} \let\bbl@tempc\@empty @@ -573,6 +1070,7 @@ as the main language. Reported} \bbl@load@language{nil} \fi + \endinput %% %% End of file `babel.sty'. |