summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/babel/babel.def
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-04-28 21:14:00 +0000
committerKarl Berry <karl@freefriends.org>2020-04-28 21:14:00 +0000
commit47b05827e36c70484f9a11ecd9677b22537a8910 (patch)
tree57910a8036fc25acd19f0ce56335dfcc801a484c /Master/texmf-dist/tex/generic/babel/babel.def
parentf5324bd184b19d1e2b0aca934969a4af95f2ed3e (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.def')
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.def1473
1 files changed, 966 insertions, 507 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/babel.def b/Master/texmf-dist/tex/generic/babel/babel.def
index 8c88c5f619e..3db01a667c0 100644
--- a/Master/texmf-dist/tex/generic/babel/babel.def
+++ b/Master/texmf-dist/tex/generic/babel/babel.def
@@ -32,20 +32,344 @@
%% extension |.ins|) which are part of the distribution.
%%
-\ifx\ldf@quit\@undefined
-\else
- \expandafter\endinput
-\fi
+\ifx\ldf@quit\@undefined\else
+\endinput\fi % Same line!
\ifx\ProvidesFile\@undefined
\def\ProvidesFile#1[#2 #3 #4]{%
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{babel.def}[2020/03/22 3.42 Babel common definitions]
-\ifx\AtBeginDocument\@undefined
- \input plain.def\relax
+\ProvidesFile{babel.def}[2020/04/28 3.43 Babel common definitions]
+\ifx\AtBeginDocument\@undefined % TODO. change test.
+ % == Code for plain ==
+\def\@empty{}
+\def\loadlocalcfg#1{%
+ \openin0#1.cfg
+ \ifeof0
+ \closein0
+ \else
+ \closein0
+ {\immediate\write16{*************************************}%
+ \immediate\write16{* Local config file #1.cfg used}%
+ \immediate\write16{*}%
+ }
+ \input #1.cfg\relax
+ \fi
+ \@endofldf}
+\long\def\@firstofone#1{#1}
+\long\def\@firstoftwo#1#2{#1}
+\long\def\@secondoftwo#1#2{#2}
+\def\@nnil{\@nil}
+\def\@gobbletwo#1#2{}
+\def\@ifstar#1{\@ifnextchar *{\@firstoftwo{#1}}}
+\def\@star@or@long#1{%
+ \@ifstar
+ {\let\l@ngrel@x\relax#1}%
+ {\let\l@ngrel@x\long#1}}
+\let\l@ngrel@x\relax
+\def\@car#1#2\@nil{#1}
+\def\@cdr#1#2\@nil{#2}
+\let\@typeset@protect\relax
+\let\protected@edef\edef
+\long\def\@gobble#1{}
+\edef\@backslashchar{\expandafter\@gobble\string\\}
+\def\strip@prefix#1>{}
+\def\g@addto@macro#1#2{{%
+ \toks@\expandafter{#1#2}%
+ \xdef#1{\the\toks@}}}
+\def\@namedef#1{\expandafter\def\csname #1\endcsname}
+\def\@nameuse#1{\csname #1\endcsname}
+\def\@ifundefined#1{%
+ \expandafter\ifx\csname#1\endcsname\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+\def\@expandtwoargs#1#2#3{%
+ \edef\reserved@a{\noexpand#1{#2}{#3}}\reserved@a}
+\def\zap@space#1 #2{%
+ #1%
+ \ifx#2\@empty\else\expandafter\zap@space\fi
+ #2}
+\let\bbl@trace\@gobble
+\ifx\@preamblecmds\@undefined
+ \def\@preamblecmds{}
+\fi
+\def\@onlypreamble#1{%
+ \expandafter\gdef\expandafter\@preamblecmds\expandafter{%
+ \@preamblecmds\do#1}}
+\@onlypreamble\@onlypreamble
+\def\begindocument{%
+ \@begindocumenthook
+ \global\let\@begindocumenthook\@undefined
+ \def\do##1{\global\let##1\@undefined}%
+ \@preamblecmds
+ \global\let\do\noexpand}
+\ifx\@begindocumenthook\@undefined
+ \def\@begindocumenthook{}
+\fi
+\@onlypreamble\@begindocumenthook
+\def\AtBeginDocument{\g@addto@macro\@begindocumenthook}
+\def\AtEndOfPackage#1{\g@addto@macro\@endofldf{#1}}
+\@onlypreamble\AtEndOfPackage
+\def\@endofldf{}
+\@onlypreamble\@endofldf
+\let\bbl@afterlang\@empty
+\chardef\bbl@opt@hyphenmap\z@
+\catcode`\&=\z@
+\ifx&if@filesw\@undefined
+ \expandafter\let\csname if@filesw\expandafter\endcsname
+ \csname iffalse\endcsname
+\fi
+\catcode`\&=4
+\def\newcommand{\@star@or@long\new@command}
+\def\new@command#1{%
+ \@testopt{\@newcommand#1}0}
+\def\@newcommand#1[#2]{%
+ \@ifnextchar [{\@xargdef#1[#2]}%
+ {\@argdef#1[#2]}}
+\long\def\@argdef#1[#2]#3{%
+ \@yargdef#1\@ne{#2}{#3}}
+\long\def\@xargdef#1[#2][#3]#4{%
+ \expandafter\def\expandafter#1\expandafter{%
+ \expandafter\@protected@testopt\expandafter #1%
+ \csname\string#1\expandafter\endcsname{#3}}%
+ \expandafter\@yargdef \csname\string#1\endcsname
+ \tw@{#2}{#4}}
+\long\def\@yargdef#1#2#3{%
+ \@tempcnta#3\relax
+ \advance \@tempcnta \@ne
+ \let\@hash@\relax
+ \edef\reserved@a{\ifx#2\tw@ [\@hash@1]\fi}%
+ \@tempcntb #2%
+ \@whilenum\@tempcntb <\@tempcnta
+ \do{%
+ \edef\reserved@a{\reserved@a\@hash@\the\@tempcntb}%
+ \advance\@tempcntb \@ne}%
+ \let\@hash@##%
+ \l@ngrel@x\expandafter\def\expandafter#1\reserved@a}
+\def\providecommand{\@star@or@long\provide@command}
+\def\provide@command#1{%
+ \begingroup
+ \escapechar\m@ne\xdef\@gtempa{{\string#1}}%
+ \endgroup
+ \expandafter\@ifundefined\@gtempa
+ {\def\reserved@a{\new@command#1}}%
+ {\let\reserved@a\relax
+ \def\reserved@a{\new@command\reserved@a}}%
+ \reserved@a}%
+\def\DeclareRobustCommand{\@star@or@long\declare@robustcommand}
+\def\declare@robustcommand#1{%
+ \edef\reserved@a{\string#1}%
+ \def\reserved@b{#1}%
+ \edef\reserved@b{\expandafter\strip@prefix\meaning\reserved@b}%
+ \edef#1{%
+ \ifx\reserved@a\reserved@b
+ \noexpand\x@protect
+ \noexpand#1%
+ \fi
+ \noexpand\protect
+ \expandafter\noexpand\csname
+ \expandafter\@gobble\string#1 \endcsname
+ }%
+ \expandafter\new@command\csname
+ \expandafter\@gobble\string#1 \endcsname
+}
+\def\x@protect#1{%
+ \ifx\protect\@typeset@protect\else
+ \@x@protect#1%
+ \fi
+}
+\catcode`\&=\z@ % Trick to hide conditionals
+ \def\@x@protect#1&fi#2#3{&fi\protect#1}
+ \def\bbl@tempa{\csname newif\endcsname&ifin@}
+\catcode`\&=4
+\ifx\in@\@undefined
+ \def\in@#1#2{%
+ \def\in@@##1#1##2##3\in@@{%
+ \ifx\in@##2\in@false\else\in@true\fi}%
+ \in@@#2#1\in@\in@@}
+\else
+ \let\bbl@tempa\@empty
+\fi
+\bbl@tempa
+\def\@ifpackagewith#1#2#3#4{#3}
+\def\@ifl@aded#1#2#3#4{}
+\ifx\@tempcnta\@undefined
+ \csname newcount\endcsname\@tempcnta\relax
+\fi
+\ifx\@tempcntb\@undefined
+ \csname newcount\endcsname\@tempcntb\relax
+\fi
+\ifx\bye\@undefined
+ \advance\count10 by -2\relax
+\fi
+\ifx\@ifnextchar\@undefined
+ \def\@ifnextchar#1#2#3{%
+ \let\reserved@d=#1%
+ \def\reserved@a{#2}\def\reserved@b{#3}%
+ \futurelet\@let@token\@ifnch}
+ \def\@ifnch{%
+ \ifx\@let@token\@sptoken
+ \let\reserved@c\@xifnch
+ \else
+ \ifx\@let@token\reserved@d
+ \let\reserved@c\reserved@a
+ \else
+ \let\reserved@c\reserved@b
+ \fi
+ \fi
+ \reserved@c}
+ \def\:{\let\@sptoken= } \: % this makes \@sptoken a space token
+ \def\:{\@xifnch} \expandafter\def\: {\futurelet\@let@token\@ifnch}
\fi
-\ifx\bbl@ifshorthand\@undefined
+\def\@testopt#1#2{%
+ \@ifnextchar[{#1}{#1[#2]}}
+\def\@protected@testopt#1{%
+ \ifx\protect\@typeset@protect
+ \expandafter\@testopt
+ \else
+ \@x@protect#1%
+ \fi}
+\long\def\@whilenum#1\do #2{\ifnum #1\relax #2\relax\@iwhilenum{#1\relax
+ #2\relax}\fi}
+\long\def\@iwhilenum#1{\ifnum #1\expandafter\@iwhilenum
+ \else\expandafter\@gobble\fi{#1}}
+\def\DeclareTextCommand{%
+ \@dec@text@cmd\providecommand
+}
+\def\ProvideTextCommand{%
+ \@dec@text@cmd\providecommand
+}
+\def\DeclareTextSymbol#1#2#3{%
+ \@dec@text@cmd\chardef#1{#2}#3\relax
+}
+\def\@dec@text@cmd#1#2#3{%
+ \expandafter\def\expandafter#2%
+ \expandafter{%
+ \csname#3-cmd\expandafter\endcsname
+ \expandafter#2%
+ \csname#3\string#2\endcsname
+ }%
+ \expandafter#1\csname#3\string#2\endcsname
+}
+\def\@current@cmd#1{%
+ \ifx\protect\@typeset@protect\else
+ \noexpand#1\expandafter\@gobble
+ \fi
+}
+\def\@changed@cmd#1#2{%
+ \ifx\protect\@typeset@protect
+ \expandafter\ifx\csname\cf@encoding\string#1\endcsname\relax
+ \expandafter\ifx\csname ?\string#1\endcsname\relax
+ \expandafter\def\csname ?\string#1\endcsname{%
+ \@changed@x@err{#1}%
+ }%
+ \fi
+ \global\expandafter\let
+ \csname\cf@encoding \string#1\expandafter\endcsname
+ \csname ?\string#1\endcsname
+ \fi
+ \csname\cf@encoding\string#1%
+ \expandafter\endcsname
+ \else
+ \noexpand#1%
+ \fi
+}
+\def\@changed@x@err#1{%
+ \errhelp{Your command will be ignored, type <return> to proceed}%
+ \errmessage{Command \protect#1 undefined in encoding \cf@encoding}}
+\def\DeclareTextCommandDefault#1{%
+ \DeclareTextCommand#1?%
+}
+\def\ProvideTextCommandDefault#1{%
+ \ProvideTextCommand#1?%
+}
+\expandafter\let\csname OT1-cmd\endcsname\@current@cmd
+\expandafter\let\csname?-cmd\endcsname\@changed@cmd
+\def\DeclareTextAccent#1#2#3{%
+ \DeclareTextCommand#1{#2}[1]{\accent#3 ##1}
+}
+\def\DeclareTextCompositeCommand#1#2#3#4{%
+ \expandafter\let\expandafter\reserved@a\csname#2\string#1\endcsname
+ \edef\reserved@b{\string##1}%
+ \edef\reserved@c{%
+ \expandafter\@strip@args\meaning\reserved@a:-\@strip@args}%
+ \ifx\reserved@b\reserved@c
+ \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
+ \expandafter\def\csname\expandafter\string\csname
+ #2\endcsname\string#1-\string#3\endcsname{#4}
+ \else
+ \errhelp{Your command will be ignored, type <return> to proceed}%
+ \errmessage{\string\DeclareTextCompositeCommand\space used on
+ inappropriate command \protect#1}
+ \fi
+}
+\def\@text@composite#1#2#3\@text@composite{%
+ \expandafter\@text@composite@x
+ \csname\string#1-\string#2\endcsname
+}
+\def\@text@composite@x#1#2{%
+ \ifx#1\relax
+ #2%
+ \else
+ #1%
+ \fi
+}
+\def\@strip@args#1:#2-#3\@strip@args{#2}
+\def\DeclareTextComposite#1#2#3#4{%
+ \def\reserved@a{\DeclareTextCompositeCommand#1{#2}{#3}}%
+ \bgroup
+ \lccode`\@=#4%
+ \lowercase{%
+ \egroup
+ \reserved@a @%
+ }%
+}
+\def\UseTextSymbol#1#2{%
+ #2%
+}
+\def\UseTextAccent#1#2#3{%
+}
+\def\@use@text@encoding#1{%
+}
+\def\DeclareTextSymbolDefault#1#2{%
+ \DeclareTextCommandDefault#1{\UseTextSymbol{#2}#1}%
+}
+\def\DeclareTextAccentDefault#1#2{%
+ \DeclareTextCommandDefault#1{\UseTextAccent{#2}#1}%
+}
+\def\cf@encoding{OT1}
+\DeclareTextAccent{\"}{OT1}{127}
+\DeclareTextAccent{\'}{OT1}{19}
+\DeclareTextAccent{\^}{OT1}{94}
+\DeclareTextAccent{\`}{OT1}{18}
+\DeclareTextAccent{\~}{OT1}{126}
+\DeclareTextSymbol{\textquotedblleft}{OT1}{92}
+\DeclareTextSymbol{\textquotedblright}{OT1}{`\"}
+\DeclareTextSymbol{\textquoteleft}{OT1}{`\`}
+\DeclareTextSymbol{\textquoteright}{OT1}{`\'}
+\DeclareTextSymbol{\i}{OT1}{16}
+\DeclareTextSymbol{\ss}{OT1}{25}
+\ifx\scriptsize\@undefined
+ \let\scriptsize\sevenrm
+\fi
+ % End of code for plain
+ \def\languagename{english}%
\let\bbl@opt@shorthands\@nnil
\def\bbl@ifshorthand#1#2#3{#2}%
\let\bbl@language@opts\@empty
@@ -67,32 +391,503 @@
\ifx\bbl@trace\@undefined\def\bbl@trace#1{}\fi
\expandafter\newif\csname ifbbl@single\endcsname
\fi
-\ifx\bbl@switchflag\@undefined % Prevent double input
- \let\bbl@switchflag\relax
- \input switch.def\relax
+\ifx\bbl@trace\@undefined
+ \let\LdfInit\endinput
+ \def\ProvidesLanguage#1{\endinput}
+\endinput\fi % Same line!
+\ifx\language\@undefined
+ \csname newcount\endcsname\language
\fi
-\bbl@trace{Compatibility with language.def}
-\ifx\bbl@languages\@undefined
- \ifx\directlua\@undefined
- \openin1 = language.def
- \ifeof1
- \closein1
- \message{I couldn't find the file language.def}
+\ifx\newlanguage\@undefined
+ \csname newcount\endcsname\last@language
+ \def\addlanguage#1{%
+ \global\advance\last@language\@ne
+ \ifnum\last@language<\@cclvi
\else
- \closein1
- \begingroup
- \def\addlanguage#1#2#3#4#5{%
- \expandafter\ifx\csname lang@#1\endcsname\relax\else
- \global\expandafter\let\csname l@#1\expandafter\endcsname
- \csname lang@#1\endcsname
- \fi}%
- \def\uselanguage#1{}%
- \input language.def
- \endgroup
+ \errmessage{No room for a new \string\language!}%
+ \fi
+ \global\chardef#1\last@language
+ \wlog{\string#1 = \string\language\the\last@language}}
+\else
+ \countdef\last@language=19
+ \def\addlanguage{\alloc@9\language\chardef\@cclvi}
+\fi
+\def\bbl@version{3.43}
+\def\bbl@date{2020/04/28}
+\def\adddialect#1#2{%
+ \global\chardef#1#2\relax
+ \bbl@usehooks{adddialect}{{#1}{#2}}%
+ \begingroup
+ \count@#1\relax
+ \def\bbl@elt##1##2##3##4{%
+ \ifnum\count@=##2\relax
+ \bbl@info{\string#1 = using hyphenrules for ##1\\%
+ (\string\language\the\count@)}%
+ \def\bbl@elt####1####2####3####4{}%
+ \fi}%
+ \bbl@cs{languages}%
+ \endgroup}
+\def\bbl@fixname#1{%
+ \begingroup
+ \def\bbl@tempe{l@}%
+ \edef\bbl@tempd{\noexpand\@ifundefined{\noexpand\bbl@tempe#1}}%
+ \bbl@tempd
+ {\lowercase\expandafter{\bbl@tempd}%
+ {\uppercase\expandafter{\bbl@tempd}%
+ \@empty
+ {\edef\bbl@tempd{\def\noexpand#1{#1}}%
+ \uppercase\expandafter{\bbl@tempd}}}%
+ {\edef\bbl@tempd{\def\noexpand#1{#1}}%
+ \lowercase\expandafter{\bbl@tempd}}}%
+ \@empty
+ \edef\bbl@tempd{\endgroup\def\noexpand#1{#1}}%
+ \bbl@tempd
+ \bbl@exp{\\\bbl@usehooks{languagename}{{\languagename}{#1}}}}
+\def\bbl@iflanguage#1{%
+ \@ifundefined{l@#1}{\@nolanerr{#1}\@gobble}\@firstofone}
+\def\bbl@bcpcase#1#2#3#4\@@#5{%
+ \ifx\@empty#3%
+ \uppercase{\def#5{#1#2}}%
+ \else
+ \uppercase{\def#5{#1}}%
+ \lowercase{\edef#5{#5#2#3#4}}%
+ \fi}
+\def\bbl@bcplookup#1-#2-#3-#4\@@{%
+ \let\bbl@bcp\relax
+ \lowercase{\def\bbl@tempa{#1}}%
+ \ifx\@empty#2%
+ \IfFileExists{babel-\bbl@tempa.ini}{\let\bbl@bcp\bbl@tempa}{}%
+ \else\ifx\@empty#3%
+ \bbl@bcpcase#2\@empty\@empty\@@\bbl@tempb
+ \IfFileExists{babel-\bbl@tempa-\bbl@tempb.ini}%
+ {\edef\bbl@bcp{\bbl@tempa-\bbl@tempb}}%
+ {}%
+ \ifx\bbl@bcp\relax
+ \IfFileExists{babel-\bbl@tempa.ini}{\let\bbl@bcp\bbl@tempa}{}%
\fi
+ \else
+ \bbl@bcpcase#2\@empty\@empty\@@\bbl@tempb
+ \bbl@bcpcase#3\@empty\@empty\@@\bbl@tempc
+ \IfFileExists{babel-\bbl@tempa-\bbl@tempb-\bbl@tempc.ini}%
+ {\edef\bbl@bcp{\bbl@tempa-\bbl@tempb-\bbl@tempc}}%
+ {}%
+ \ifx\bbl@bcp\relax
+ \IfFileExists{babel-\bbl@tempa-\bbl@tempc.ini}%
+ {\edef\bbl@bcp{\bbl@tempa-\bbl@tempc}}%
+ {}%
+ \fi
+ \ifx\bbl@bcp\relax
+ \IfFileExists{babel-\bbl@tempa-\bbl@tempc.ini}%
+ {\edef\bbl@bcp{\bbl@tempa-\bbl@tempc}}%
+ {}%
+ \fi
+ \ifx\bbl@bcp\relax
+ \IfFileExists{babel-\bbl@tempa.ini}{\let\bbl@bcp\bbl@tempa}{}%
+ \fi
+ \fi\fi}
+\let\bbl@autoload@options\@empty
+\let\bbl@initoload\relax
+\def\bbl@provide@locale{%
+ \ifx\babelprovide\@undefined
+ \bbl@error{For a language to be defined on the fly 'base'\\%
+ is not enough, and the whole package must be\\%
+ loaded. Either delete the 'base' option or\\%
+ request the languages explicitly}%
+ {See the manual for further details.}%
\fi
- \chardef\l@english\z@
+ \let\bbl@auxname\languagename % Still necessary. TODO
+ \bbl@ifunset{bbl@bcp@map@\languagename}{}% Move uplevel??
+ {\edef\languagename{\@nameuse{bbl@bcp@map@\languagename}}}%
+ \ifbbl@bcpallowed
+ \expandafter\ifx\csname date\languagename\endcsname\relax
+ \expandafter
+ \bbl@bcplookup\languagename-\@empty-\@empty-\@empty\@@
+ \ifx\bbl@bcp\relax\else % Returned by \bbl@bcplookup
+ \edef\languagename{\bbl@bcp@prefix\bbl@bcp}%
+ \edef\localename{\bbl@bcp@prefix\bbl@bcp}%
+ \expandafter\ifx\csname date\languagename\endcsname\relax
+ \let\bbl@initoload\bbl@bcp
+ \bbl@exp{\\\babelprovide[\bbl@autoload@bcpoptions]{\languagename}}%
+ \let\bbl@initoload\relax
+ \fi
+ \bbl@csarg\xdef{bcp@map@\bbl@bcp}{\localename}%
+ \fi
+ \fi
+ \fi
+ \expandafter\ifx\csname date\languagename\endcsname\relax
+ \IfFileExists{babel-\languagename.tex}%
+ {\bbl@exp{\\\babelprovide[\bbl@autoload@options]{\languagename}}}%
+ {}%
+ \fi}
+\def\iflanguage#1{%
+ \bbl@iflanguage{#1}{%
+ \ifnum\csname l@#1\endcsname=\language
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}}
+\let\bbl@select@type\z@
+\edef\selectlanguage{%
+ \noexpand\protect
+ \expandafter\noexpand\csname selectlanguage \endcsname}
+\ifx\@undefined\protect\let\protect\relax\fi
+\let\xstring\string
+\def\bbl@language@stack{}
+\def\bbl@push@language{%
+ \ifx\languagename\@undefined\else
+ \xdef\bbl@language@stack{\languagename+\bbl@language@stack}%
+ \fi}
+\def\bbl@pop@lang#1+#2&#3{%
+ \edef\languagename{#1}\xdef#3{#2}}
+\let\bbl@ifrestoring\@secondoftwo
+\def\bbl@pop@language{%
+ \expandafter\bbl@pop@lang\bbl@language@stack&\bbl@language@stack
+ \let\bbl@ifrestoring\@firstoftwo
+ \expandafter\bbl@set@language\expandafter{\languagename}%
+ \let\bbl@ifrestoring\@secondoftwo}
+\chardef\localeid\z@
+\def\bbl@id@last{0} % No real need for a new counter
+\def\bbl@id@assign{%
+ \bbl@ifunset{bbl@id@@\languagename}%
+ {\count@\bbl@id@last\relax
+ \advance\count@\@ne
+ \bbl@csarg\chardef{id@@\languagename}\count@
+ \edef\bbl@id@last{\the\count@}%
+ \ifcase\bbl@engine\or
+ \directlua{
+ Babel = Babel or {}
+ Babel.locale_props = Babel.locale_props or {}
+ Babel.locale_props[\bbl@id@last] = {}
+ Babel.locale_props[\bbl@id@last].name = '\languagename'
+ }%
+ \fi}%
+ {}%
+ \chardef\localeid\bbl@cl{id@}}
+\expandafter\def\csname selectlanguage \endcsname#1{%
+ \ifnum\bbl@hymapsel=\@cclv\let\bbl@hymapsel\tw@\fi
+ \bbl@push@language
+ \aftergroup\bbl@pop@language
+ \bbl@set@language{#1}}
+\def\BabelContentsFiles{toc,lof,lot}
+\def\bbl@set@language#1{% from selectlanguage, pop@
+ % The old buggy way. Preserved for compatibility.
+ \edef\languagename{%
+ \ifnum\escapechar=\expandafter`\string#1\@empty
+ \else\string#1\@empty\fi}%
+ \ifcat\relax\noexpand#1%
+ \expandafter\ifx\csname date\languagename\endcsname\relax
+ \edef\languagename{#1}%
+ \let\localename\languagename
+ \else
+ \bbl@info{Using '\string\language' instead of 'language' is\\%
+ deprecated. If what you want is to use a\\%
+ macro containing the actual locale, make\\%
+ sure it does not not match any language.\\%
+ Reported}%
+ \ifx\scantokens\@undefined
+ \def\localename{??}%
+ \else
+ \scantokens\expandafter{\expandafter
+ \def\expandafter\localename\expandafter{\languagename}}%
+ \fi
+ \fi
+ \else
+ \def\localename{#1}% This one has the correct catcodes
+ \fi
+ \select@language{\languagename}%
+ % write to auxs
+ \expandafter\ifx\csname date\languagename\endcsname\relax\else
+ \if@filesw
+ \ifx\babel@aux\@gobbletwo\else % Set if single in the first, redundant
+ \protected@write\@auxout{}{\string\babel@aux{\bbl@auxname}{}}%
+ \fi
+ \bbl@usehooks{write}{}%
+ \fi
+ \fi}
+\newif\ifbbl@bcpallowed
+\bbl@bcpallowedfalse
+\def\select@language#1{% from set@, babel@aux
+ % set hymap
+ \ifnum\bbl@hymapsel=\@cclv\chardef\bbl@hymapsel4\relax\fi
+ % set name
+ \edef\languagename{#1}%
+ \bbl@fixname\languagename
+ % TODO. name@map must be here?
+ \bbl@provide@locale
+ \bbl@iflanguage\languagename{%
+ \expandafter\ifx\csname date\languagename\endcsname\relax
+ \bbl@error
+ {Unknown language `\languagename'. Either you have\\%
+ misspelled its name, it has not been installed,\\%
+ or you requested it in a previous run. Fix its name,\\%
+ install it or just rerun the file, respectively. In\\%
+ some cases, you may need to remove the aux file}%
+ {You may proceed, but expect wrong results}%
+ \else
+ % set type
+ \let\bbl@select@type\z@
+ \expandafter\bbl@switch\expandafter{\languagename}%
+ \fi}}
+\def\babel@aux#1#2{%
+ \select@language{#1}%
+ \bbl@foreach\BabelContentsFiles{%
+ \@writefile{##1}{\babel@toc{#1}{#2}}}}% %% TODO - ok in plain?
+\def\babel@toc#1#2{%
+ \select@language{#1}}
+\newif\ifbbl@usedategroup
+\def\bbl@switch#1{% from select@, foreign@
+ % make sure there is info for the language if so requested
+ \bbl@ensureinfo{#1}%
+ % restore
+ \originalTeX
+ \expandafter\def\expandafter\originalTeX\expandafter{%
+ \csname noextras#1\endcsname
+ \let\originalTeX\@empty
+ \babel@beginsave}%
+ \bbl@usehooks{afterreset}{}%
+ \languageshorthands{none}%
+ % set the locale id
+ \bbl@id@assign
+ % switch captions, date
+ \ifcase\bbl@select@type
+ \ifhmode
+ \hskip\z@skip % trick to ignore spaces
+ \csname captions#1\endcsname\relax
+ \csname date#1\endcsname\relax
+ \loop\ifdim\lastskip>\z@\unskip\repeat\unskip
+ \else
+ \csname captions#1\endcsname\relax
+ \csname date#1\endcsname\relax
+ \fi
+ \else
+ \ifbbl@usedategroup % if \foreign... within \<lang>date
+ \bbl@usedategroupfalse
+ \ifhmode
+ \hskip\z@skip % trick to ignore spaces
+ \csname date#1\endcsname\relax
+ \loop\ifdim\lastskip>\z@\unskip\repeat\unskip
+ \else
+ \csname date#1\endcsname\relax
+ \fi
+ \fi
+ \fi
+ % switch extras
+ \bbl@usehooks{beforeextras}{}%
+ \csname extras#1\endcsname\relax
+ \bbl@usehooks{afterextras}{}%
+ % > babel-ensure
+ % > babel-sh-<short>
+ % > babel-bidi
+ % > babel-fontspec
+ % hyphenation - case mapping
+ \ifcase\bbl@opt@hyphenmap\or
+ \def\BabelLower##1##2{\lccode##1=##2\relax}%
+ \ifnum\bbl@hymapsel>4\else
+ \csname\languagename @bbl@hyphenmap\endcsname
+ \fi
+ \chardef\bbl@opt@hyphenmap\z@
+ \else
+ \ifnum\bbl@hymapsel>\bbl@opt@hyphenmap\else
+ \csname\languagename @bbl@hyphenmap\endcsname
+ \fi
+ \fi
+ \global\let\bbl@hymapsel\@cclv
+ % hyphenation - patterns
+ \bbl@patterns{#1}%
+ % hyphenation - mins
+ \babel@savevariable\lefthyphenmin
+ \babel@savevariable\righthyphenmin
+ \expandafter\ifx\csname #1hyphenmins\endcsname\relax
+ \set@hyphenmins\tw@\thr@@\relax
+ \else
+ \expandafter\expandafter\expandafter\set@hyphenmins
+ \csname #1hyphenmins\endcsname\relax
+ \fi}
+\long\def\otherlanguage#1{%
+ \ifnum\bbl@hymapsel=\@cclv\let\bbl@hymapsel\thr@@\fi
+ \csname selectlanguage \endcsname{#1}%
+ \ignorespaces}
+\long\def\endotherlanguage{%
+ \global\@ignoretrue\ignorespaces}
+\expandafter\def\csname otherlanguage*\endcsname#1{%
+ \ifnum\bbl@hymapsel=\@cclv\chardef\bbl@hymapsel4\relax\fi
+ \foreign@language{#1}}
+\expandafter\let\csname endotherlanguage*\endcsname\relax
+\providecommand\bbl@beforeforeign{}
+\edef\foreignlanguage{%
+ \noexpand\protect
+ \expandafter\noexpand\csname foreignlanguage \endcsname}
+\expandafter\def\csname foreignlanguage \endcsname{%
+ \@ifstar\bbl@foreign@s\bbl@foreign@x}
+\def\bbl@foreign@x#1#2{%
+ \begingroup
+ \let\BabelText\@firstofone
+ \bbl@beforeforeign
+ \foreign@language{#1}%
+ \bbl@usehooks{foreign}{}%
+ \BabelText{#2}% Now in horizontal mode!
+ \endgroup}
+\def\bbl@foreign@s#1#2{% TODO - \shapemode, \@setpar, ?\@@par
+ \begingroup
+ {\par}%
+ \let\BabelText\@firstofone
+ \foreign@language{#1}%
+ \bbl@usehooks{foreign*}{}%
+ \bbl@dirparastext
+ \BabelText{#2}% Still in vertical mode!
+ {\par}%
+ \endgroup}
+\def\foreign@language#1{%
+ % set name
+ \edef\languagename{#1}%
+ \bbl@fixname\languagename
+ % TODO. name@map here?
+ \bbl@provide@locale
+ \bbl@iflanguage\languagename{%
+ \expandafter\ifx\csname date\languagename\endcsname\relax
+ \bbl@warning % TODO - why a warning, not an error?
+ {Unknown language `#1'. Either you have\\%
+ misspelled its name, it has not been installed,\\%
+ or you requested it in a previous run. Fix its name,\\%
+ install it or just rerun the file, respectively. In\\%
+ some cases, you may need to remove the aux file.\\%
+ I'll proceed, but expect wrong results.\\%
+ Reported}%
+ \fi
+ % set type
+ \let\bbl@select@type\@ne
+ \expandafter\bbl@switch\expandafter{\languagename}}}
+\let\bbl@hyphlist\@empty
+\let\bbl@hyphenation@\relax
+\let\bbl@pttnlist\@empty
+\let\bbl@patterns@\relax
+\let\bbl@hymapsel=\@cclv
+\def\bbl@patterns#1{%
+ \language=\expandafter\ifx\csname l@#1:\f@encoding\endcsname\relax
+ \csname l@#1\endcsname
+ \edef\bbl@tempa{#1}%
+ \else
+ \csname l@#1:\f@encoding\endcsname
+ \edef\bbl@tempa{#1:\f@encoding}%
+ \fi
+ \@expandtwoargs\bbl@usehooks{patterns}{{#1}{\bbl@tempa}}%
+ % > luatex
+ \@ifundefined{bbl@hyphenation@}{}{% Can be \relax!
+ \begingroup
+ \bbl@xin@{,\number\language,}{,\bbl@hyphlist}%
+ \ifin@\else
+ \@expandtwoargs\bbl@usehooks{hyphenation}{{#1}{\bbl@tempa}}%
+ \hyphenation{%
+ \bbl@hyphenation@
+ \@ifundefined{bbl@hyphenation@#1}%
+ \@empty
+ {\space\csname bbl@hyphenation@#1\endcsname}}%
+ \xdef\bbl@hyphlist{\bbl@hyphlist\number\language,}%
+ \fi
+ \endgroup}}
+\def\hyphenrules#1{%
+ \edef\bbl@tempf{#1}%
+ \bbl@fixname\bbl@tempf
+ \bbl@iflanguage\bbl@tempf{%
+ \expandafter\bbl@patterns\expandafter{\bbl@tempf}%
+ \languageshorthands{none}%
+ \expandafter\ifx\csname\bbl@tempf hyphenmins\endcsname\relax
+ \set@hyphenmins\tw@\thr@@\relax
+ \else
+ \expandafter\expandafter\expandafter\set@hyphenmins
+ \csname\bbl@tempf hyphenmins\endcsname\relax
+ \fi}}
+\let\endhyphenrules\@empty
+\def\providehyphenmins#1#2{%
+ \expandafter\ifx\csname #1hyphenmins\endcsname\relax
+ \@namedef{#1hyphenmins}{#2}%
+ \fi}
+\def\set@hyphenmins#1#2{%
+ \lefthyphenmin#1\relax
+ \righthyphenmin#2\relax}
+\ifx\ProvidesFile\@undefined
+ \def\ProvidesLanguage#1[#2 #3 #4]{%
+ \wlog{Language: #1 #4 #3 <#2>}%
+ }
+\else
+ \def\ProvidesLanguage#1{%
+ \begingroup
+ \catcode`\ 10 %
+ \@makeother\/%
+ \@ifnextchar[%]
+ {\@provideslanguage{#1}}{\@provideslanguage{#1}[]}}
+ \def\@provideslanguage#1[#2]{%
+ \wlog{Language: #1 #2}%
+ \expandafter\xdef\csname ver@#1.ldf\endcsname{#2}%
+ \endgroup}
\fi
+\ifx\originalTeX\@undefined\let\originalTeX\@empty\fi
+\ifx\babel@beginsave\@undefined\let\babel@beginsave\relax\fi
+\providecommand\setlocale{%
+ \bbl@error
+ {Not yet available}%
+ {Find an armchair, sit down and wait}}
+\let\uselocale\setlocale
+\let\locale\setlocale
+\let\selectlocale\setlocale
+\let\localename\setlocale
+\let\textlocale\setlocale
+\let\textlanguage\setlocale
+\let\languagetext\setlocale
+\edef\bbl@nulllanguage{\string\language=0}
+\ifx\PackageError\@undefined % TODO. Move to Plain
+ \def\bbl@error#1#2{%
+ \begingroup
+ \newlinechar=`\^^J
+ \def\\{^^J(babel) }%
+ \errhelp{#2}\errmessage{\\#1}%
+ \endgroup}
+ \def\bbl@warning#1{%
+ \begingroup
+ \newlinechar=`\^^J
+ \def\\{^^J(babel) }%
+ \message{\\#1}%
+ \endgroup}
+ \let\bbl@infowarn\bbl@warning
+ \def\bbl@info#1{%
+ \begingroup
+ \newlinechar=`\^^J
+ \def\\{^^J}%
+ \wlog{#1}%
+ \endgroup}
+\fi
+\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}}
+\let\bbl@usehooks\@gobbletwo
+\ifx\bbl@onlyswitch\@empty\endinput\fi
+ % Here ended switch.def
\ifx\directlua\@undefined\else
\ifx\bbl@luapatterns\@undefined
\input luababel.def
@@ -246,6 +1041,28 @@
\else
\@ne
\fi
+\bbl@trace{Compatibility with language.def}
+\ifx\bbl@languages\@undefined
+ \ifx\directlua\@undefined
+ \openin1 = language.def % TODO. Remove hardcoded number
+ \ifeof1
+ \closein1
+ \message{I couldn't find the file language.def}
+ \else
+ \closein1
+ \begingroup
+ \def\addlanguage#1#2#3#4#5{%
+ \expandafter\ifx\csname lang@#1\endcsname\relax\else
+ \global\expandafter\let\csname l@#1\expandafter\endcsname
+ \csname lang@#1\endcsname
+ \fi}%
+ \def\uselanguage#1{}%
+ \input language.def
+ \endgroup
+ \fi
+ \fi
+ \chardef\l@english\z@
+\fi
\def\addto#1#2{%
\ifx#1\@undefined
\def#1{#2}%
@@ -304,7 +1121,7 @@
adddialect=2,patterns=2,defaultcommands=0,encodedcommands=2,write=0,%
beforeextras=0,afterextras=0,stopcommands=0,stringprocess=0,%
hyphenation=2,initiateactive=3,afterreset=0,foreign=0,foreign*=0,%
- beforestart=0,languagename=0}
+ beforestart=0,languagename=2}
\bbl@trace{Defining babelensure}
\newcommand\babelensure[2][]{% TODO - revise test files
\AddBabelHook{babel-ensure}{afterextras}{%
@@ -331,7 +1148,7 @@
\def\<bbl@e@#2>{\the\toks@{\bbl@ens@fontenc}}}}
\def\bbl@ensure#1#2#3{% 1: include 2: exclude 3: fontenc
\def\bbl@tempb##1{% elt for (excluding) \bbl@captionslist list
- \ifx##1\@undefined % 3.32 - Don't assume the macros exists
+ \ifx##1\@undefined % 3.32 - Don't assume the macro exists
\edef##1{\noexpand\bbl@nocaption
{\bbl@stripslash##1}{\languagename\bbl@stripslash##1}}%
\fi
@@ -370,7 +1187,7 @@
\tablename\partname\enclname\ccname\headtoname\pagename\seename
\alsoname\proofname\glossaryname}
\bbl@trace{Macros for setting language files up}
-\def\bbl@ldfinit{%
+\def\bbl@ldfinit{% TODO. Merge into the next macro? Unused elsewhere
\let\bbl@screset\@empty
\let\BabelStrings\bbl@opt@string
\let\BabelOptions\@empty
@@ -401,13 +1218,15 @@
\catcode`\@=\atcatcode \let\atcatcode\relax
\catcode`\==\eqcatcode \let\eqcatcode\relax
\endinput}
-\def\bbl@afterldf#1{%
+\def\bbl@afterldf#1{% TODO. Merge into the next macro? Unused elsewhere
\bbl@afterlang
\let\bbl@afterlang\relax
\let\BabelModifiers\relax
\let\bbl@screset\relax}%
\def\ldf@finish#1{%
- \loadlocalcfg{#1}%
+ \ifx\loadlocalcfg\@undefined\else % For LaTeX 209
+ \loadlocalcfg{#1}%
+ \fi
\bbl@afterldf{#1}%
\expandafter\main@language\expandafter{#1}%
\catcode`\@=\atcatcode \let\atcatcode\relax
@@ -417,24 +1236,24 @@
\@onlypreamble\ldf@finish
\def\main@language#1{%
\def\bbl@main@language{#1}%
- \let\languagename\bbl@main@language
+ \let\languagename\bbl@main@language % TODO. Set localename
\bbl@id@assign
\bbl@patterns{\languagename}}
\def\bbl@beforestart{%
\bbl@usehooks{beforestart}{}%
\global\let\bbl@beforestart\relax}
\AtBeginDocument{%
- \bbl@cs{beforestart}%
+ \@nameuse{bbl@beforestart}%
\if@filesw
- \immediate\write\@mainaux{\string\bbl@cs{beforestart}}%
+ \immediate\write\@mainaux{\string\@nameuse{bbl@beforestart}}%
\fi
\expandafter\selectlanguage\expandafter{\bbl@main@language}%
- \ifbbl@single % must go after the line above
+ \ifbbl@single % must go after the line above.
\renewcommand\selectlanguage[1]{}%
\renewcommand\foreignlanguage[2]{#2}%
\global\let\babel@aux\@gobbletwo % Also as flag
\fi
- \ifcase\bbl@engine\or\pagedir\bodydir\fi} % TODO - a better place
+ \ifcase\bbl@engine\or\pagedir\bodydir\fi} % TODO - a better place
\def\select@language@x#1{%
\ifcase\bbl@select@type
\bbl@ifsamestring\languagename{#1}{}{\select@language{#1}}%
@@ -570,7 +1389,7 @@
\bbl@afterfi\csname#1@sh@#2@sel\endcsname
\fi}
\begingroup
-\bbl@ifunset{ifincsname}%
+\bbl@ifunset{ifincsname}% TODO. Ugly. Correct?
{\gdef\active@prefix#1{%
\ifx\protect\@typeset@protect
\else
@@ -641,7 +1460,7 @@
\expandafter\@firstoftwo
\fi}
\def\user@group{user}
-\def\language@group{english}
+\def\language@group{english} % TODO. I don't like defaults
\def\system@group{system}
\def\useshorthands{%
\@ifstar\bbl@usesh@s{\bbl@usesh@x{}}}
@@ -947,7 +1766,7 @@
\def\bbl@disc#1#2{\nobreak\discretionary{#2-}{}{#1}\bbl@allowhyphens}
\bbl@trace{Multiencoding strings}
\def\bbl@toglobal#1{\global\let#1#1}
-\def\bbl@recatcode#1{%
+\def\bbl@recatcode#1{% TODO. Used only once?
\@tempcnta="7F
\def\bbl@tempa{%
\ifnum\@tempcnta>"FF\else
@@ -1190,6 +2009,20 @@
\box\z@\kern-.04em\bbl@allowhyphens}}
\ProvideTextCommandDefault{\quotesinglbase}{%
\UseTextSymbol{OT1}{\quotesinglbase}}
+\ProvideTextCommand{\guillemetleft}{OT1}{%
+ \ifmmode
+ \ll
+ \else
+ \save@sf@q{\nobreak
+ \raise.2ex\hbox{$\scriptscriptstyle\ll$}\bbl@allowhyphens}%
+ \fi}
+\ProvideTextCommand{\guillemetright}{OT1}{%
+ \ifmmode
+ \gg
+ \else
+ \save@sf@q{\nobreak
+ \raise.2ex\hbox{$\scriptscriptstyle\gg$}\bbl@allowhyphens}%
+ \fi}
\ProvideTextCommand{\guillemotleft}{OT1}{%
\ifmmode
\ll
@@ -1204,6 +2037,10 @@
\save@sf@q{\nobreak
\raise.2ex\hbox{$\scriptscriptstyle\gg$}\bbl@allowhyphens}%
\fi}
+\ProvideTextCommandDefault{\guillemetleft}{%
+ \UseTextSymbol{OT1}{\guillemetleft}}
+\ProvideTextCommandDefault{\guillemetright}{%
+ \UseTextSymbol{OT1}{\guillemetright}}
\ProvideTextCommandDefault{\guillemotleft}{%
\UseTextSymbol{OT1}{\guillemotleft}}
\ProvideTextCommandDefault{\guillemotright}{%
@@ -1287,9 +2124,9 @@
\ProvideTextCommandDefault{\frq}{%
\textormath{\guilsinglright}{\mbox{\guilsinglright}}}
\ProvideTextCommandDefault{\flqq}{%
- \textormath{\guillemotleft}{\mbox{\guillemotleft}}}
+ \textormath{\guillemetleft}{\mbox{\guillemetleft}}}
\ProvideTextCommandDefault{\frqq}{%
- \textormath{\guillemotright}{\mbox{\guillemotright}}}
+ \textormath{\guillemetright}{\mbox{\guillemetright}}}
\def\umlauthigh{%
\def\bbl@umlauta##1{\leavevmode\bgroup%
\expandafter\accent\csname\f@encoding dqpos\endcsname
@@ -1329,7 +2166,6 @@
\ifx\l@english\@undefined
\chardef\l@english\z@
\fi
-\main@language{english}
\bbl@trace{Bidi layout}
\providecommand\IfBabelLayout[3]{#3}%
\newcommand\BabelPatchSection[1]{%
@@ -1406,10 +2242,14 @@
% == import, captions ==
\ifx\bbl@KVP@import\@nil\else
\bbl@exp{\\\bbl@ifblank{\bbl@KVP@import}}%
- {\begingroup
- \def\BabelBeforeIni##1##2{\gdef\bbl@KVP@import{##1}\endinput}%
- \InputIfFileExists{babel-#2.tex}{}{}%
- \endgroup}%
+ {\ifx\bbl@initoload\relax
+ \begingroup
+ \def\BabelBeforeIni##1##2{\gdef\bbl@KVP@import{##1}\endinput}%
+ \InputIfFileExists{babel-#2.tex}{}{}%
+ \endgroup
+ \else
+ \xdef\bbl@KVP@import{\bbl@initoload}%
+ \fi}%
{}%
\fi
\ifx\bbl@KVP@captions\@nil
@@ -1433,11 +2273,14 @@
\\\foreignlanguage{\languagename}%
{####1}}}}%
{}%
+ \bbl@exp{%
+ \\\bbl@toglobal\<bbl@ensure@\languagename>%
+ \\\bbl@toglobal\<bbl@ensure@\languagename\space>}%
% At this point all parameters are defined if 'import'. Now we
% execute some code depending on them. But what about if nothing was
% imported? We just load the very basic parameters: ids and a few
% more.
- \bbl@ifunset{bbl@lname@#2}%
+ \bbl@ifunset{bbl@lname@#2}% TODO. Duplicated
{\def\BabelBeforeIni##1##2{%
\begingroup
\catcode`\[=12 \catcode`\]=12 \catcode`\==12 \catcode`\;=12 %
@@ -1448,14 +2291,21 @@
\bbl@exportkey{dgnat}{numbers.digits.native}{}%
\bbl@exportkey{prehc}{typography.prehyphenchar}{}%
\bbl@exportkey{lnbrk}{typography.linebreaking}{h}%
+ \bbl@exportkey{lfthm}{typography.lefthyphenmin}{2}%
+ \bbl@exportkey{rgthm}{typography.righthyphenmin}{3}%
\bbl@exportkey{hyphr}{typography.hyphenrules}{}%
\bbl@exportkey{hyoth}{typography.hyphenate.other}{}%
\bbl@exportkey{intsp}{typography.intraspace}{}%
- \endinput
- \endgroup}% boxed, to avoid extra spaces:
- {\setbox\z@\hbox{\InputIfFileExists{babel-#2.tex}{}{}}}}%
+ \ifx\bbl@initoload\relax\endinput\fi
+ \endgroup}%
+ \begingroup % boxed, to avoid extra spaces:
+ \ifx\bbl@initoload\relax
+ \setbox\z@\hbox{\InputIfFileExists{babel-#2.tex}{}{}}%
+ \else
+ \setbox\z@\hbox{\BabelBeforeIni{\bbl@initoload}{}}%
+ \fi
+ \endgroup}%
{}%
- % -
% == script, language ==
% Override the values from ini or defines them
\ifx\bbl@KVP@script\@nil\else
@@ -1706,7 +2556,11 @@
\fi}%
\expandafter\bbl@tempb\bbl@captionslist\@empty
\else
- \bbl@read@ini{\bbl@KVP@captions}{data}% Here all letters cat = 11
+ \ifx\bbl@initoload\relax
+ \bbl@read@ini{\bbl@KVP@captions}{data}% Here letters cat = 11
+ \else
+ \bbl@read@ini{\bbl@initoload}{data}% Here all letters cat = 11
+ \fi
\bbl@after@ini
\bbl@savestrings
\fi
@@ -1719,8 +2573,34 @@
\bbl@savedate
\fi
\bbl@endcommands
+ \bbl@ifunset{bbl@lname@#1}% TODO. Duplicated
+ {\def\BabelBeforeIni##1##2{%
+ \begingroup
+ \catcode`\[=12 \catcode`\]=12 \catcode`\==12 \catcode`\;=12 %
+ \let\bbl@ini@captions@aux\@gobbletwo
+ \def\bbl@inidate ####1.####2.####3.####4\relax ####5####6{}%
+ \bbl@read@ini{##1}{basic data}%
+ \bbl@exportkey{prehc}{typography.prehyphenchar}{}%
+ \bbl@exportkey{lnbrk}{typography.linebreaking}{h}%
+ \bbl@exportkey{lfthm}{typography.lefthyphenmin}{2}%
+ \bbl@exportkey{rgthm}{typography.righthyphenmin}{3}%
+ \bbl@exportkey{hyphr}{typography.hyphenrules}{}%
+ \bbl@exportkey{hyoth}{typography.hyphenate.other}{}%
+ \bbl@exportkey{intsp}{typography.intraspace}{}%
+ \bbl@exportkey{chrng}{characters.ranges}{}%
+ \bbl@exportkey{dgnat}{numbers.digits.native}{}%
+ \ifx\bbl@initoload\relax\endinput\fi
+ \endgroup}%
+ \begingroup % boxed, to avoid extra spaces:
+ \ifx\bbl@initoload\relax
+ \setbox\z@\hbox{\InputIfFileExists{babel-#1.tex}{}{}}%
+ \else
+ \setbox\z@\hbox{\BabelBeforeIni{\bbl@initoload}{}}%
+ \fi
+ \endgroup}%
+ {}%
\bbl@exp{%
- \def\<#1hyphenmins>{%
+ \gdef\<#1hyphenmins>{%
{\bbl@ifunset{bbl@lfthm@#1}{2}{\bbl@cs{lfthm@#1}}}%
{\bbl@ifunset{bbl@rgthm@#1}{3}{\bbl@cs{rgthm@#1}}}}}%
\bbl@provide@hyphens{#1}%
@@ -1758,7 +2638,14 @@
\fi}%
\fi
\ifx\bbl@tempa\relax % if no opt or no language in opt found
- \ifx\bbl@KVP@import\@nil\else % if importing
+ \ifx\bbl@KVP@import\@nil
+ \ifx\bbl@initoload\relax\else
+ \bbl@exp{% and hyphenrules is not empty
+ \\\bbl@ifblank{\bbl@cs{hyphr@#1}}%
+ {}%
+ {\let\\\bbl@tempa\<l@\bbl@cl{hyphr}>}}%
+ \fi
+ \else % if importing
\bbl@exp{% and hyphenrules is not empty
\\\bbl@ifblank{\bbl@cs{hyphr@#1}}%
{}%
@@ -1899,13 +2786,13 @@
\in@{.1$}{#1$}%
\ifin@
\bbl@replace\bbl@tempc{.1}{}%
- \bbl@csarg\xdef{cntr@\bbl@tempc @\languagename}{%
+ \bbl@csarg\protected@xdef{cntr@\bbl@tempc @\languagename}{%
\noexpand\bbl@alphnumeral{\bbl@tempc}}%
\fi
\in@{.F.}{#1}%
\ifin@\else\in@{.S.}{#1}\fi
\ifin@
- \bbl@csarg\xdef{cntr@#1@\languagename}{\bbl@tempb*}%
+ \bbl@csarg\protected@xdef{cntr@#1@\languagename}{\bbl@tempb*}%
\else
\toks@{}% Required by \bbl@buildifcase, which returns \bbl@tempa
\expandafter\bbl@buildifcase\bbl@tempb* \\ % Space after \\
@@ -2117,7 +3004,10 @@
\fi}
\newcommand\LocaleForEach{\bbl@foreach\bbl@ini@loaded}
\newcommand\babeladjust[1]{% TODO. Error handling.
- \bbl@forkv{#1}{\bbl@cs{ADJ@##1@##2}}}
+ \bbl@forkv{#1}{%
+ \bbl@ifunset{bbl@ADJ@##1@##2}%
+ {\bbl@cs{ADJ@##1}{##2}}%
+ {\bbl@cs{ADJ@##1@##2}}}}
\def\bbl@adjust@lua#1#2{%
\ifvmode
\ifnum\currentgrouplevel=\z@
@@ -2168,455 +3058,24 @@
\bbl@adjust@layout{\let\list\bbl@OL@list}}
\@namedef{bbl@ADJ@hyphenation.extra@on}{%
\bbl@activateposthyphen}
-{\def\format{lplain}
-\ifx\fmtname\format
-\else
- \def\format{LaTeX2e}
- \ifx\fmtname\format
- \else
- \aftergroup\endinput
- \fi
-\fi}
-\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{%
- \@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{%
- \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}%
+\@namedef{bbl@ADJ@autoload.bcp47@on}{%
+ \bbl@bcpallowedtrue}
+\@namedef{bbl@ADJ@autoload.bcp47@off}{%
+ \bbl@bcpallowedfalse}
+\@namedef{bbl@ADJ@autoload.bcp47.prefix}#1{%
+ \def\bbl@bcp@prefix{#1}}
+\def\bbl@bcp@prefix{bcp47-}
+\@namedef{bbl@ADJ@autoload.options}#1{%
+ \def\bbl@autoload@options{#1}}
+\let\bbl@autoload@bcpoptions\@empty
+\@namedef{bbl@ADJ@autoload.bcp47.options}#1{%
+ \def\bbl@autoload@bcpoptions{#1}}
+\ifx\directlua\@undefined\else
+ \ifx\bbl@luapatterns\@undefined
+ \input luababel.def
\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
+
\endinput
%%
%% End of file `babel.def'.