Skip to content

Instantly share code, notes, and snippets.

@dginev
Created March 1, 2018 19:37
Show Gist options
  • Save dginev/e87b32ccdfa2e5e6cceeda38ec480e0f to your computer and use it in GitHub Desktop.
Save dginev/e87b32ccdfa2e5e6cceeda38ec480e0f to your computer and use it in GitHub Desktop.

Revisions

  1. dginev created this gist Mar 1, 2018.
    2,103 changes: 2,103 additions & 0 deletions babel.def
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,2103 @@
    %%
    %% This is file `babel.def',
    %% generated with the docstrip utility.
    %%
    %% The original source files were:
    %%
    %% babel.dtx (with options: `core')
    %%
    %%
    %% Copyright (C) 2012-2017 Javier Bezos and Johannes L. Braams.
    %% Copyright (C) 1989-2012 Johannes L. Braams and
    %% any individual authors listed elsewhere in this file.
    %% All rights reserved.
    %%
    %% This file is part of the Babel system.
    %% --------------------------------------
    %%
    %% It may be distributed and/or modified under the
    %% conditions of the LaTeX Project Public License, either version 1.3
    %% of this license or (at your option) any later version.
    %% The latest version of this license is in
    %% http://www.latex-project.org/lppl.txt
    %% and version 1.3 or later is part of all distributions of LaTeX
    %% version 2003/12/01 or later.
    %%
    %% This work has the LPPL maintenance status "maintained".
    %%
    %% The Current Maintainer of this work is Javier Bezos.
    %%
    %% The list of derived (unpacked) files belonging to the distribution
    %% and covered by LPPL is defined by the unpacking scripts (with
    %% extension |.ins|) which are part of the distribution.
    %%
    \ifx\ldf@quit\@undefined
    \else
    \expandafter\endinput
    \fi
    \ifx\ProvidesFile\@undefined
    \def\ProvidesFile#1[#2 #3 #4]{%
    \wlog{File: #1 #4 #3 <#2>}%
    \let\ProvidesFile\@undefined}
    \fi
    \ProvidesFile{babel.def}[2018/01/04 3.16 Babel common definitions]
    \ifx\AtBeginDocument\@undefined
    \input plain.def\relax
    \fi
    \ifx\bbl@ifshorthand\@undefined
    \def\bbl@ifshorthand#1#2#3{#2}%
    \def\bbl@opt@safe{BR}
    \def\AfterBabelLanguage#1#2{}
    \let\bbl@afterlang\relax
    \let\bbl@language@opts\@empty
    \fi
    \input switch.def\relax
    \ifx\bbl@languages\@undefined
    \ifx\directlua\@undefined
    \openin1 = language.def
    \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
    \ifx\directlua\@undefined\else
    \ifx\bbl@luapatterns\@undefined
    \input luababel.def
    \fi
    \fi
    \def\bbl@stripslash{\expandafter\@gobble\string}
    \def\bbl@add#1#2{%
    \bbl@ifunset{\bbl@stripslash#1}%
    {\def#1{#2}}%
    {\expandafter\def\expandafter#1\expandafter{#1#2}}}
    \def\bbl@xin@{\@expandtwoargs\in@}
    \def\bbl@csarg#1#2{\expandafter#1\csname bbl@#2\endcsname}%
    \def\bbl@cs#1{\csname bbl@#1\endcsname}
    \def\bbl@loop#1#2#3{\bbl@@loop#1{#3}#2,\@nnil,}
    \def\bbl@loopx#1#2{\expandafter\bbl@loop\expandafter#1\expandafter{#2}}
    \def\bbl@@loop#1#2#3,{%
    \ifx\@nnil#3\relax\else
    \def#1{#3}#2\bbl@afterfi\bbl@@loop#1{#2}%
    \fi}
    \def\bbl@for#1#2#3{\bbl@loopx#1{#2}{\ifx#1\@empty\else#3\fi}}
    \def\bbl@add@list#1#2{%
    \edef#1{%
    \bbl@ifunset{\bbl@stripslash#1}%
    {}%
    {\ifx#1\@empty\else#1,\fi}%
    #2}}
    \long\def\bbl@afterelse#1\else#2\fi{\fi#1}
    \long\def\bbl@afterfi#1\fi{\fi#1}
    \def\bbl@tempa#1{%
    \long\def\bbl@trim##1##2{%
    \futurelet\bbl@trim@a\bbl@trim@c##2\@nil\@nil#1\@nil\relax{##1}}%
    \def\bbl@trim@c{%
    \ifx\bbl@trim@a\@sptoken
    \expandafter\bbl@trim@b
    \else
    \expandafter\bbl@trim@b\expandafter#1%
    \fi}%
    \long\def\bbl@trim@b#1##1 \@nil{\bbl@trim@i##1}}
    \bbl@tempa{ }
    \long\def\bbl@trim@i#1\@nil#2\relax#3{#3{#1}}
    \long\def\bbl@trim@def#1{\bbl@trim{\def#1}}
    \def\bbl@ifunset#1{%
    \expandafter\ifx\csname#1\endcsname\relax
    \expandafter\@firstoftwo
    \else
    \expandafter\@secondoftwo
    \fi}
    \bbl@ifunset{ifcsname}%
    {}%
    {\def\bbl@ifunset#1{%
    \ifcsname#1\endcsname
    \expandafter\ifx\csname#1\endcsname\relax
    \bbl@afterelse\expandafter\@firstoftwo
    \else
    \bbl@afterfi\expandafter\@secondoftwo
    \fi
    \else
    \expandafter\@firstoftwo
    \fi}}
    \def\bbl@ifblank#1{%
    \bbl@ifblank@i#1\@nil\@nil\@secondoftwo\@firstoftwo\@nil}
    \long\def\bbl@ifblank@i#1#2\@nil#3#4#5\@nil{#4}
    \def\bbl@forkv#1#2{%
    \def\bbl@kvcmd##1##2##3{#2}%
    \bbl@kvnext#1,\@nil,}
    \def\bbl@kvnext#1,{%
    \ifx\@nil#1\relax\else
    \bbl@ifblank{#1}{}{\bbl@forkv@eq#1=\@empty=\@nil{#1}}%
    \expandafter\bbl@kvnext
    \fi}
    \def\bbl@forkv@eq#1=#2=#3\@nil#4{%
    \bbl@trim@def\bbl@forkv@a{#1}%
    \bbl@trim{\expandafter\bbl@kvcmd\expandafter{\bbl@forkv@a}}{#2}{#4}}
    \def\bbl@vforeach#1#2{%
    \def\bbl@forcmd##1{#2}%
    \bbl@fornext#1,\@nil,}
    \def\bbl@fornext#1,{%
    \ifx\@nil#1\relax\else
    \bbl@ifblank{#1}{}{\bbl@trim\bbl@forcmd{#1}}%
    \expandafter\bbl@fornext
    \fi}
    \def\bbl@foreach#1{\expandafter\bbl@vforeach\expandafter{#1}}
    \def\bbl@replace#1#2#3{% in #1 -> repl #2 by #3
    \toks@{}%
    \def\bbl@replace@aux##1#2##2#2{%
    \ifx\bbl@nil##2%
    \toks@\expandafter{\the\toks@##1}%
    \else
    \toks@\expandafter{\the\toks@##1#3}%
    \bbl@afterfi
    \bbl@replace@aux##2#2%
    \fi}%
    \expandafter\bbl@replace@aux#1#2\bbl@nil#2%
    \edef#1{\the\toks@}}
    \def\bbl@exp#1{%
    \begingroup
    \let\\\noexpand
    \def\<##1>{\expandafter\noexpand\csname##1\endcsname}%
    \edef\bbl@exp@aux{\endgroup#1}%
    \bbl@exp@aux}
    \def\bbl@ifsamestring#1#2{%
    \begingroup
    \protected@edef\bbl@tempb{#1}%
    \edef\bbl@tempb{\expandafter\strip@prefix\meaning\bbl@tempb}%
    \protected@edef\bbl@tempc{#2}%
    \edef\bbl@tempc{\expandafter\strip@prefix\meaning\bbl@tempc}%
    \ifx\bbl@tempb\bbl@tempc
    \aftergroup\@firstoftwo
    \else
    \aftergroup\@secondoftwo
    \fi
    \endgroup}
    \chardef\bbl@engine=%
    \ifx\directlua\@undefined
    \ifx\XeTeXinputencoding\@undefined
    \z@
    \else
    \tw@
    \fi
    \else
    \@ne
    \fi
    \def\addto#1#2{%
    \ifx#1\@undefined
    \def#1{#2}%
    \else
    \ifx#1\relax
    \def#1{#2}%
    \else
    {\toks@\expandafter{#1#2}%
    \xdef#1{\the\toks@}}%
    \fi
    \fi}
    \def\bbl@withactive#1#2{%
    \begingroup
    \lccode`~=`#2\relax
    \lowercase{\endgroup#1~}}
    \def\bbl@redefine#1{%
    \edef\bbl@tempa{\bbl@stripslash#1}%
    \expandafter\let\csname org@\bbl@tempa\endcsname#1%
    \expandafter\def\csname\bbl@tempa\endcsname}
    \@onlypreamble\bbl@redefine
    \def\bbl@redefine@long#1{%
    \edef\bbl@tempa{\bbl@stripslash#1}%
    \expandafter\let\csname org@\bbl@tempa\endcsname#1%
    \expandafter\long\expandafter\def\csname\bbl@tempa\endcsname}
    \@onlypreamble\bbl@redefine@long
    \def\bbl@redefinerobust#1{%
    \edef\bbl@tempa{\bbl@stripslash#1}%
    \bbl@ifunset{\bbl@tempa\space}%
    {\expandafter\let\csname org@\bbl@tempa\endcsname#1%
    \bbl@exp{\def\\#1{\\\protect\<\bbl@tempa\space>}}}%
    {\bbl@exp{\let\<org@\bbl@tempa>\<\bbl@tempa\space>}}%
    \@namedef{\bbl@tempa\space}}
    \@onlypreamble\bbl@redefinerobust
    \def\AddBabelHook#1#2{%
    \bbl@ifunset{bbl@hk@#1}{\EnableBabelHook{#1}}{}%
    \def\bbl@tempa##1,#2=##2,##3\@empty{\def\bbl@tempb{##2}}%
    \expandafter\bbl@tempa\bbl@evargs,#2=,\@empty
    \bbl@ifunset{bbl@ev@#1@#2}%
    {\bbl@csarg\bbl@add{ev@#2}{\bbl@elt{#1}}%
    \bbl@csarg\newcommand}%
    {\bbl@csarg\let{ev@#1@#2}\relax
    \bbl@csarg\newcommand}%
    {ev@#1@#2}[\bbl@tempb]}
    \def\EnableBabelHook#1{\bbl@csarg\let{hk@#1}\@firstofone}
    \def\DisableBabelHook#1{\bbl@csarg\let{hk@#1}\@gobble}
    \def\bbl@usehooks#1#2{%
    \def\bbl@elt##1{%
    \@nameuse{bbl@hk@##1}{\@nameuse{bbl@ev@##1@#1}#2}}%
    \@nameuse{bbl@ev@#1}}
    \def\bbl@evargs{,% don't delete the comma
    everylanguage=1,loadkernel=1,loadpatterns=1,loadexceptions=1,%
    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}
    \newcommand\babelensure[2][]{% TODO - revise test files
    \AddBabelHook{babel-ensure}{afterextras}{%
    \ifcase\bbl@select@type
    \@nameuse{bbl@e@\languagename}%
    \fi}%
    \begingroup
    \let\bbl@ens@include\@empty
    \let\bbl@ens@exclude\@empty
    \def\bbl@ens@fontenc{\relax}%
    \def\bbl@tempb##1{%
    \ifx\@empty##1\else\noexpand##1\expandafter\bbl@tempb\fi}%
    \edef\bbl@tempa{\bbl@tempb#1\@empty}%
    \def\bbl@tempb##1=##2\@@{\@namedef{bbl@ens@##1}{##2}}%
    \bbl@foreach\bbl@tempa{\bbl@tempb##1\@@}%
    \def\bbl@tempc{\bbl@ensure}%
    \expandafter\bbl@add\expandafter\bbl@tempc\expandafter{%
    \expandafter{\bbl@ens@include}}%
    \expandafter\bbl@add\expandafter\bbl@tempc\expandafter{%
    \expandafter{\bbl@ens@exclude}}%
    \toks@\expandafter{\bbl@tempc}%
    \bbl@exp{%
    \endgroup
    \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\@empty\else
    \in@{##1}{#2}%
    \ifin@\else
    \bbl@ifunset{bbl@ensure@\languagename}%
    {\bbl@exp{%
    \\\DeclareRobustCommand\<bbl@ensure@\languagename>[1]{%
    \\\foreignlanguage{\languagename}%
    {\ifx\relax#3\else
    \\\fontencoding{#3}\\\selectfont
    \fi
    ########1}}}}%
    {}%
    \toks@\expandafter{##1}%
    \edef##1{%
    \bbl@csarg\noexpand{ensure@\languagename}%
    {\the\toks@}}%
    \fi
    \expandafter\bbl@tempb
    \fi}%
    \expandafter\bbl@tempb\bbl@captionslist\today\@empty
    \def\bbl@tempa##1{% elt for include list
    \ifx##1\@empty\else
    \bbl@csarg\in@{ensure@\languagename\expandafter}\expandafter{##1}%
    \ifin@\else
    \bbl@tempb##1\@empty
    \fi
    \expandafter\bbl@tempa
    \fi}%
    \bbl@tempa#1\@empty}
    \def\bbl@captionslist{%
    \prefacename\refname\abstractname\bibname\chaptername\appendixname
    \contentsname\listfigurename\listtablename\indexname\figurename
    \tablename\partname\enclname\ccname\headtoname\pagename\seename
    \alsoname\proofname\glossaryname}
    \def\bbl@ldfinit{%
    \let\bbl@screset\@empty
    \let\BabelStrings\bbl@opt@string
    \let\BabelOptions\@empty
    \let\BabelLanguages\relax
    \ifx\originalTeX\@undefined
    \let\originalTeX\@empty
    \else
    \originalTeX
    \fi}
    \def\LdfInit#1#2{%
    \chardef\atcatcode=\catcode`\@
    \catcode`\@=11\relax
    \chardef\eqcatcode=\catcode`\=
    \catcode`\==12\relax
    \expandafter\if\expandafter\@backslashchar
    \expandafter\@car\string#2\@nil
    \ifx#2\@undefined\else
    \ldf@quit{#1}%
    \fi
    \else
    \expandafter\ifx\csname#2\endcsname\relax\else
    \ldf@quit{#1}%
    \fi
    \fi
    \bbl@ldfinit}
    \def\ldf@quit#1{%
    \expandafter\main@language\expandafter{#1}%
    \catcode`\@=\atcatcode \let\atcatcode\relax
    \catcode`\==\eqcatcode \let\eqcatcode\relax
    \endinput}
    \def\bbl@afterldf#1{%
    \bbl@afterlang
    \let\bbl@afterlang\relax
    \let\BabelModifiers\relax
    \let\bbl@screset\relax}%
    \def\ldf@finish#1{%
    \loadlocalcfg{#1}%
    \bbl@afterldf{#1}%
    \expandafter\main@language\expandafter{#1}%
    \catcode`\@=\atcatcode \let\atcatcode\relax
    \catcode`\==\eqcatcode \let\eqcatcode\relax}
    \@onlypreamble\LdfInit
    \@onlypreamble\ldf@quit
    \@onlypreamble\ldf@finish
    \def\main@language#1{%
    \def\bbl@main@language{#1}%
    \let\languagename\bbl@main@language
    \bbl@patterns{\languagename}}
    \AtBeginDocument{%
    \expandafter\selectlanguage\expandafter{\bbl@main@language}%
    \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}}%
    \else
    \select@language{#1}%
    \fi}
    \def\bbl@add@special#1{% 1:a macro like \", \?, etc.
    \bbl@add\dospecials{\do#1}% test @sanitize = \relax, for back. compat.
    \bbl@ifunset{@sanitize}{}{\bbl@add\@sanitize{\@makeother#1}}%
    \ifx\nfss@catcodes\@undefined\else % TODO - same for above
    \begingroup
    \catcode`#1\active
    \nfss@catcodes
    \ifnum\catcode`#1=\active
    \endgroup
    \bbl@add\nfss@catcodes{\@makeother#1}%
    \else
    \endgroup
    \fi
    \fi}
    \def\bbl@remove@special#1{%
    \begingroup
    \def\x##1##2{\ifnum`#1=`##2\noexpand\@empty
    \else\noexpand##1\noexpand##2\fi}%
    \def\do{\x\do}%
    \def\@makeother{\x\@makeother}%
    \edef\x{\endgroup
    \def\noexpand\dospecials{\dospecials}%
    \expandafter\ifx\csname @sanitize\endcsname\relax\else
    \def\noexpand\@sanitize{\@sanitize}%
    \fi}%
    \x}
    \def\bbl@active@def#1#2#3#4{%
    \@namedef{#3#1}{%
    \expandafter\ifx\csname#2@sh@#1@\endcsname\relax
    \bbl@afterelse\bbl@sh@select#2#1{#3@arg#1}{#4#1}%
    \else
    \bbl@afterfi\csname#2@sh@#1@\endcsname
    \fi}%
    \long\@namedef{#3@arg#1}##1{%
    \expandafter\ifx\csname#2@sh@#1@\string##1@\endcsname\relax
    \bbl@afterelse\csname#4#1\endcsname##1%
    \else
    \bbl@afterfi\csname#2@sh@#1@\string##1@\endcsname
    \fi}}%
    \def\initiate@active@char#1{%
    \bbl@ifunset{active@char\string#1}%
    {\bbl@withactive
    {\expandafter\@initiate@active@char\expandafter}#1\string#1#1}%
    {}}
    \def\@initiate@active@char#1#2#3{%
    \bbl@csarg\edef{oricat@#2}{\catcode`#2=\the\catcode`#2\relax}%
    \ifx#1\@undefined
    \bbl@csarg\edef{oridef@#2}{\let\noexpand#1\noexpand\@undefined}%
    \else
    \bbl@csarg\let{oridef@@#2}#1%
    \bbl@csarg\edef{oridef@#2}{%
    \let\noexpand#1%
    \expandafter\noexpand\csname bbl@oridef@@#2\endcsname}%
    \fi
    \ifx#1#3\relax
    \expandafter\let\csname normal@char#2\endcsname#3%
    \else
    \bbl@info{Making #2 an active character}%
    \ifnum\mathcode`#2="8000
    \@namedef{normal@char#2}{%
    \textormath{#3}{\csname bbl@oridef@@#2\endcsname}}%
    \else
    \@namedef{normal@char#2}{#3}%
    \fi
    \bbl@restoreactive{#2}%
    \AtBeginDocument{%
    \catcode`#2\active
    \if@filesw
    \immediate\write\@mainaux{\catcode`\string#2\active}%
    \fi}%
    \expandafter\bbl@add@special\csname#2\endcsname
    \catcode`#2\active
    \fi
    \let\bbl@tempa\@firstoftwo
    \if\string^#2%
    \def\bbl@tempa{\noexpand\textormath}%
    \else
    \ifx\bbl@mathnormal\@undefined\else
    \let\bbl@tempa\bbl@mathnormal
    \fi
    \fi
    \expandafter\edef\csname active@char#2\endcsname{%
    \bbl@tempa
    {\noexpand\if@safe@actives
    \noexpand\expandafter
    \expandafter\noexpand\csname normal@char#2\endcsname
    \noexpand\else
    \noexpand\expandafter
    \expandafter\noexpand\csname bbl@doactive#2\endcsname
    \noexpand\fi}%
    {\expandafter\noexpand\csname normal@char#2\endcsname}}%
    \bbl@csarg\edef{doactive#2}{%
    \expandafter\noexpand\csname user@active#2\endcsname}%
    \bbl@csarg\edef{active@#2}{%
    \noexpand\active@prefix\noexpand#1%
    \expandafter\noexpand\csname active@char#2\endcsname}%
    \bbl@csarg\edef{normal@#2}{%
    \noexpand\active@prefix\noexpand#1%
    \expandafter\noexpand\csname normal@char#2\endcsname}%
    \expandafter\let\expandafter#1\csname bbl@normal@#2\endcsname
    \bbl@active@def#2\user@group{user@active}{language@active}%
    \bbl@active@def#2\language@group{language@active}{system@active}%
    \bbl@active@def#2\system@group{system@active}{normal@char}%
    \expandafter\edef\csname\user@group @sh@#2@@\endcsname
    {\expandafter\noexpand\csname normal@char#2\endcsname}%
    \expandafter\edef\csname\user@group @sh@#2@\string\protect@\endcsname
    {\expandafter\noexpand\csname user@active#2\endcsname}%
    \if\string'#2%
    \let\prim@s\bbl@prim@s
    \let\active@math@prime#1%
    \fi
    \bbl@usehooks{initiateactive}{{#1}{#2}{#3}}}
    \@ifpackagewith{babel}{KeepShorthandsActive}%
    {\let\bbl@restoreactive\@gobble}%
    {\def\bbl@restoreactive#1{%
    \bbl@exp{%
    \\\AfterBabelLanguage\\\CurrentOption
    {\catcode`#1=\the\catcode`#1\relax}%
    \\\AtEndOfPackage
    {\catcode`#1=\the\catcode`#1\relax}}}%
    \AtEndOfPackage{\let\bbl@restoreactive\@gobble}}
    \def\bbl@sh@select#1#2{%
    \expandafter\ifx\csname#1@sh@#2@sel\endcsname\relax
    \bbl@afterelse\bbl@scndcs
    \else
    \bbl@afterfi\csname#1@sh@#2@sel\endcsname
    \fi}
    \def\active@prefix#1{%
    \ifx\protect\@typeset@protect
    \else
    \ifx\protect\@unexpandable@protect
    \noexpand#1%
    \else
    \protect#1%
    \fi
    \expandafter\@gobble
    \fi}
    \newif\if@safe@actives
    \@safe@activesfalse
    \def\bbl@restore@actives{\if@safe@actives\@safe@activesfalse\fi}
    \def\bbl@activate#1{%
    \bbl@withactive{\expandafter\let\expandafter}#1%
    \csname bbl@active@\string#1\endcsname}
    \def\bbl@deactivate#1{%
    \bbl@withactive{\expandafter\let\expandafter}#1%
    \csname bbl@normal@\string#1\endcsname}
    \def\bbl@firstcs#1#2{\csname#1\endcsname}
    \def\bbl@scndcs#1#2{\csname#2\endcsname}
    \def\declare@shorthand#1#2{\@decl@short{#1}#2\@nil}
    \def\@decl@short#1#2#3\@nil#4{%
    \def\bbl@tempa{#3}%
    \ifx\bbl@tempa\@empty
    \expandafter\let\csname #1@sh@\string#2@sel\endcsname\bbl@scndcs
    \bbl@ifunset{#1@sh@\string#2@}{}%
    {\def\bbl@tempa{#4}%
    \expandafter\ifx\csname#1@sh@\string#2@\endcsname\bbl@tempa
    \else
    \bbl@info
    {Redefining #1 shorthand \string#2\\%
    in language \CurrentOption}%
    \fi}%
    \@namedef{#1@sh@\string#2@}{#4}%
    \else
    \expandafter\let\csname #1@sh@\string#2@sel\endcsname\bbl@firstcs
    \bbl@ifunset{#1@sh@\string#2@\string#3@}{}%
    {\def\bbl@tempa{#4}%
    \expandafter\ifx\csname#1@sh@\string#2@\string#3@\endcsname\bbl@tempa
    \else
    \bbl@info
    {Redefining #1 shorthand \string#2\string#3\\%
    in language \CurrentOption}%
    \fi}%
    \@namedef{#1@sh@\string#2@\string#3@}{#4}%
    \fi}
    \def\textormath{%
    \ifmmode
    \expandafter\@secondoftwo
    \else
    \expandafter\@firstoftwo
    \fi}
    \def\user@group{user}
    \def\language@group{english}
    \def\system@group{system}
    \def\useshorthands{%
    \@ifstar\bbl@usesh@s{\bbl@usesh@x{}}}
    \def\bbl@usesh@s#1{%
    \bbl@usesh@x
    {\AddBabelHook{babel-sh-\string#1}{afterextras}{\bbl@activate{#1}}}%
    {#1}}
    \def\bbl@usesh@x#1#2{%
    \bbl@ifshorthand{#2}%
    {\def\user@group{user}%
    \initiate@active@char{#2}%
    #1%
    \bbl@activate{#2}}%
    {\bbl@error
    {Cannot declare a shorthand turned off (\string#2)}
    {Sorry, but you cannot use shorthands which have been\\%
    turned off in the package options}}}
    \def\user@language@group{user@\language@group}
    \def\bbl@set@user@generic#1#2{%
    \bbl@ifunset{user@generic@active#1}%
    {\bbl@active@def#1\user@language@group{user@active}{user@generic@active}%
    \bbl@active@def#1\user@group{user@generic@active}{language@active}%
    \expandafter\edef\csname#2@sh@#1@@\endcsname{%
    \expandafter\noexpand\csname normal@char#1\endcsname}%
    \expandafter\edef\csname#2@sh@#1@\string\protect@\endcsname{%
    \expandafter\noexpand\csname user@active#1\endcsname}}%
    \@empty}
    \newcommand\defineshorthand[3][user]{%
    \edef\bbl@tempa{\zap@space#1 \@empty}%
    \bbl@for\bbl@tempb\bbl@tempa{%
    \if*\expandafter\@car\bbl@tempb\@nil
    \edef\bbl@tempb{user@\expandafter\@gobble\bbl@tempb}%
    \@expandtwoargs
    \bbl@set@user@generic{\expandafter\string\@car#2\@nil}\bbl@tempb
    \fi
    \declare@shorthand{\bbl@tempb}{#2}{#3}}}
    \def\languageshorthands#1{\def\language@group{#1}}
    \def\aliasshorthand#1#2{%
    \bbl@ifshorthand{#2}%
    {\expandafter\ifx\csname active@char\string#2\endcsname\relax
    \ifx\document\@notprerr
    \@notshorthand{#2}%
    \else
    \initiate@active@char{#2}%
    \expandafter\let\csname active@char\string#2\expandafter\endcsname
    \csname active@char\string#1\endcsname
    \expandafter\let\csname normal@char\string#2\expandafter\endcsname
    \csname normal@char\string#1\endcsname
    \bbl@activate{#2}%
    \fi
    \fi}%
    {\bbl@error
    {Cannot declare a shorthand turned off (\string#2)}
    {Sorry, but you cannot use shorthands which have been\\%
    turned off in the package options}}}
    \def\@notshorthand#1{%
    \bbl@error{%
    The character `\string #1' should be made a shorthand character;\\%
    add the command \string\useshorthands\string{#1\string} to
    the preamble.\\%
    I will ignore your instruction}%
    {You may proceed, but expect unexpected results}}
    \newcommand*\shorthandon[1]{\bbl@switch@sh\@ne#1\@nnil}
    \DeclareRobustCommand*\shorthandoff{%
    \@ifstar{\bbl@shorthandoff\tw@}{\bbl@shorthandoff\z@}}
    \def\bbl@shorthandoff#1#2{\bbl@switch@sh#1#2\@nnil}
    \def\bbl@switch@sh#1#2{%
    \ifx#2\@nnil\else
    \bbl@ifunset{bbl@active@\string#2}%
    {\bbl@error
    {I cannot switch `\string#2' on or off--not a shorthand}%
    {This character is not a shorthand. Maybe you made\\%
    a typing mistake? I will ignore your instruction}}%
    {\ifcase#1%
    \catcode`#212\relax
    \or
    \catcode`#2\active
    \or
    \csname bbl@oricat@\string#2\endcsname
    \csname bbl@oridef@\string#2\endcsname
    \fi}%
    \bbl@afterfi\bbl@switch@sh#1%
    \fi}
    \def\babelshorthand{\active@prefix\babelshorthand\bbl@putsh}
    \def\bbl@putsh#1{%
    \bbl@ifunset{bbl@active@\string#1}%
    {\bbl@putsh@i#1\@empty\@nnil}%
    {\csname bbl@active@\string#1\endcsname}}
    \def\bbl@putsh@i#1#2\@nnil{%
    \csname\languagename @sh@\string#1@%
    \ifx\@empty#2\else\string#2@\fi\endcsname}
    \ifx\bbl@opt@shorthands\@nnil\else
    \let\bbl@s@initiate@active@char\initiate@active@char
    \def\initiate@active@char#1{%
    \bbl@ifshorthand{#1}{\bbl@s@initiate@active@char{#1}}{}}
    \let\bbl@s@switch@sh\bbl@switch@sh
    \def\bbl@switch@sh#1#2{%
    \ifx#2\@nnil\else
    \bbl@afterfi
    \bbl@ifshorthand{#2}{\bbl@s@switch@sh#1{#2}}{\bbl@switch@sh#1}%
    \fi}
    \let\bbl@s@activate\bbl@activate
    \def\bbl@activate#1{%
    \bbl@ifshorthand{#1}{\bbl@s@activate{#1}}{}}
    \let\bbl@s@deactivate\bbl@deactivate
    \def\bbl@deactivate#1{%
    \bbl@ifshorthand{#1}{\bbl@s@deactivate{#1}}{}}
    \fi
    \def\bbl@prim@s{%
    \prime\futurelet\@let@token\bbl@pr@m@s}
    \def\bbl@if@primes#1#2{%
    \ifx#1\@let@token
    \expandafter\@firstoftwo
    \else\ifx#2\@let@token
    \bbl@afterelse\expandafter\@firstoftwo
    \else
    \bbl@afterfi\expandafter\@secondoftwo
    \fi\fi}
    \begingroup
    \catcode`\^=7 \catcode`\*=\active \lccode`\*=`\^
    \catcode`\'=12 \catcode`\"=\active \lccode`\"=`\'
    \lowercase{%
    \gdef\bbl@pr@m@s{%
    \bbl@if@primes"'%
    \pr@@@s
    {\bbl@if@primes*^\pr@@@t\egroup}}}
    \endgroup
    \initiate@active@char{~}
    \declare@shorthand{system}{~}{\leavevmode\nobreak\ }
    \bbl@activate{~}
    \expandafter\def\csname OT1dqpos\endcsname{127}
    \expandafter\def\csname T1dqpos\endcsname{4}
    \ifx\f@encoding\@undefined
    \def\f@encoding{OT1}
    \fi
    \newcommand\languageattribute[2]{%
    \def\bbl@tempc{#1}%
    \bbl@fixname\bbl@tempc
    \bbl@iflanguage\bbl@tempc{%
    \bbl@vforeach{#2}{%
    \ifx\bbl@known@attribs\@undefined
    \in@false
    \else
    \bbl@xin@{,\bbl@tempc-##1,}{,\bbl@known@attribs,}%
    \fi
    \ifin@
    \bbl@warning{%
    You have more than once selected the attribute '##1'\\%
    for language #1}%
    \else
    \bbl@exp{%
    \\\bbl@add@list\\\bbl@known@attribs{\bbl@tempc-##1}}%
    \edef\bbl@tempa{\bbl@tempc-##1}%
    \expandafter\bbl@ifknown@ttrib\expandafter{\bbl@tempa}\bbl@attributes%
    {\csname\bbl@tempc @attr@##1\endcsname}%
    {\@attrerr{\bbl@tempc}{##1}}%
    \fi}}}
    \@onlypreamble\languageattribute
    \newcommand*{\@attrerr}[2]{%
    \bbl@error
    {The attribute #2 is unknown for language #1.}%
    {Your command will be ignored, type <return> to proceed}}
    \def\bbl@declare@ttribute#1#2#3{%
    \bbl@xin@{,#2,}{,\BabelModifiers,}%
    \ifin@
    \AfterBabelLanguage{#1}{\languageattribute{#1}{#2}}%
    \fi
    \bbl@add@list\bbl@attributes{#1-#2}%
    \expandafter\def\csname#1@attr@#2\endcsname{#3}}
    \def\bbl@ifattributeset#1#2#3#4{%
    \ifx\bbl@known@attribs\@undefined
    \in@false
    \else
    \bbl@xin@{,#1-#2,}{,\bbl@known@attribs,}%
    \fi
    \ifin@
    \bbl@afterelse#3%
    \else
    \bbl@afterfi#4%
    \fi
    }
    \def\bbl@ifknown@ttrib#1#2{%
    \let\bbl@tempa\@secondoftwo
    \bbl@loopx\bbl@tempb{#2}{%
    \expandafter\in@\expandafter{\expandafter,\bbl@tempb,}{,#1,}%
    \ifin@
    \let\bbl@tempa\@firstoftwo
    \else
    \fi}%
    \bbl@tempa
    }
    \def\bbl@clear@ttribs{%
    \ifx\bbl@attributes\@undefined\else
    \bbl@loopx\bbl@tempa{\bbl@attributes}{%
    \expandafter\bbl@clear@ttrib\bbl@tempa.
    }%
    \let\bbl@attributes\@undefined
    \fi}
    \def\bbl@clear@ttrib#1-#2.{%
    \expandafter\let\csname#1@attr@#2\endcsname\@undefined}
    \AtBeginDocument{\bbl@clear@ttribs}
    \def\babel@beginsave{\babel@savecnt\z@}
    \newcount\babel@savecnt
    \babel@beginsave
    \def\babel@save#1{%
    \expandafter\let\csname babel@\number\babel@savecnt\endcsname#1\relax
    \toks@\expandafter{\originalTeX\let#1=}%
    \bbl@exp{%
    \def\\\originalTeX{\the\toks@\<babel@\number\babel@savecnt>\relax}}%
    \advance\babel@savecnt\@ne}
    \def\babel@savevariable#1{%
    \toks@\expandafter{\originalTeX #1=}%
    \bbl@exp{\def\\\originalTeX{\the\toks@\the#1\relax}}}
    \def\bbl@frenchspacing{%
    \ifnum\the\sfcode`\.=\@m
    \let\bbl@nonfrenchspacing\relax
    \else
    \frenchspacing
    \let\bbl@nonfrenchspacing\nonfrenchspacing
    \fi}
    \let\bbl@nonfrenchspacing\nonfrenchspacing
    \def\babeltags#1{%
    \edef\bbl@tempa{\zap@space#1 \@empty}%
    \def\bbl@tempb##1=##2\@@{%
    \edef\bbl@tempc{%
    \noexpand\newcommand
    \expandafter\noexpand\csname ##1\endcsname{%
    \noexpand\protect
    \expandafter\noexpand\csname otherlanguage*\endcsname{##2}}
    \noexpand\newcommand
    \expandafter\noexpand\csname text##1\endcsname{%
    \noexpand\foreignlanguage{##2}}}
    \bbl@tempc}%
    \bbl@for\bbl@tempa\bbl@tempa{%
    \expandafter\bbl@tempb\bbl@tempa\@@}}
    \@onlypreamble\babelhyphenation
    \AtEndOfPackage{%
    \newcommand\babelhyphenation[2][\@empty]{%
    \ifx\bbl@hyphenation@\relax
    \let\bbl@hyphenation@\@empty
    \fi
    \ifx\bbl@hyphlist\@empty\else
    \bbl@warning{%
    You must not intermingle \string\selectlanguage\space and\\%
    \string\babelhyphenation\space or some exceptions will not\\%
    be taken into account. Reported}%
    \fi
    \ifx\@empty#1%
    \protected@edef\bbl@hyphenation@{\bbl@hyphenation@\space#2}%
    \else
    \bbl@vforeach{#1}{%
    \def\bbl@tempa{##1}%
    \bbl@fixname\bbl@tempa
    \bbl@iflanguage\bbl@tempa{%
    \bbl@csarg\protected@edef{hyphenation@\bbl@tempa}{%
    \bbl@ifunset{bbl@hyphenation@\bbl@tempa}%
    \@empty
    {\csname bbl@hyphenation@\bbl@tempa\endcsname\space}%
    #2}}}%
    \fi}}
    \def\bbl@allowhyphens{\ifvmode\else\nobreak\hskip\z@skip\fi}
    \def\bbl@t@one{T1}
    \def\allowhyphens{\ifx\cf@encoding\bbl@t@one\else\bbl@allowhyphens\fi}
    \newcommand\babelnullhyphen{\char\hyphenchar\font}
    \def\babelhyphen{\active@prefix\babelhyphen\bbl@hyphen}
    \def\bbl@hyphen{%
    \@ifstar{\bbl@hyphen@i @}{\bbl@hyphen@i\@empty}}
    \def\bbl@hyphen@i#1#2{%
    \bbl@ifunset{bbl@hy@#1#2\@empty}%
    {\csname bbl@#1usehyphen\endcsname{\discretionary{#2}{}{#2}}}%
    {\csname bbl@hy@#1#2\@empty\endcsname}}
    \def\bbl@usehyphen#1{%
    \leavevmode
    \ifdim\lastskip>\z@\mbox{#1}\else\nobreak#1\fi
    \nobreak\hskip\z@skip}
    \def\bbl@@usehyphen#1{%
    \leavevmode\ifdim\lastskip>\z@\mbox{#1}\else#1\fi}
    \def\bbl@hyphenchar{%
    \ifnum\hyphenchar\font=\m@ne
    \babelnullhyphen
    \else
    \char\hyphenchar\font
    \fi}
    \def\bbl@hy@soft{\bbl@usehyphen{\discretionary{\bbl@hyphenchar}{}{}}}
    \def\bbl@hy@@soft{\bbl@@usehyphen{\discretionary{\bbl@hyphenchar}{}{}}}
    \def\bbl@hy@hard{\bbl@usehyphen\bbl@hyphenchar}
    \def\bbl@hy@@hard{\bbl@@usehyphen\bbl@hyphenchar}
    \def\bbl@hy@nobreak{\bbl@usehyphen{\mbox{\bbl@hyphenchar}}}
    \def\bbl@hy@@nobreak{\mbox{\bbl@hyphenchar}}
    \def\bbl@hy@repeat{%
    \bbl@usehyphen{%
    \discretionary{\bbl@hyphenchar}{\bbl@hyphenchar}{\bbl@hyphenchar}}}
    \def\bbl@hy@@repeat{%
    \bbl@@usehyphen{%
    \discretionary{\bbl@hyphenchar}{\bbl@hyphenchar}{\bbl@hyphenchar}}}
    \def\bbl@hy@empty{\hskip\z@skip}
    \def\bbl@hy@@empty{\discretionary{}{}{}}
    \def\bbl@disc#1#2{\nobreak\discretionary{#2-}{}{#1}\bbl@allowhyphens}
    \def\bbl@toglobal#1{\global\let#1#1}
    \def\bbl@recatcode#1{%
    \@tempcnta="7F
    \def\bbl@tempa{%
    \ifnum\@tempcnta>"FF\else
    \catcode\@tempcnta=#1\relax
    \advance\@tempcnta\@ne
    \expandafter\bbl@tempa
    \fi}%
    \bbl@tempa}
    \@ifpackagewith{babel}{nocase}%
    {\let\bbl@patchuclc\relax}%
    {\def\bbl@patchuclc{%
    \global\let\bbl@patchuclc\relax
    \g@addto@macro\@uclclist{\reserved@b{\reserved@b\bbl@uclc}}%
    \gdef\bbl@uclc##1{%
    \let\bbl@encoded\bbl@encoded@uclc
    \bbl@ifunset{\languagename @bbl@uclc}% and resumes it
    {##1}%
    {\let\bbl@tempa##1\relax % Used by LANG@bbl@uclc
    \csname\languagename @bbl@uclc\endcsname}%
    {\bbl@tolower\@empty}{\bbl@toupper\@empty}}%
    \gdef\bbl@tolower{\csname\languagename @bbl@lc\endcsname}%
    \gdef\bbl@toupper{\csname\languagename @bbl@uc\endcsname}}}
    \@onlypreamble\StartBabelCommands
    \def\StartBabelCommands{%
    \begingroup
    \bbl@recatcode{11}%
    \def\SetStringLoop##1##2{%
    \def\bbl@templ####1{\expandafter\noexpand\csname##1\endcsname}%
    \count@\z@
    \bbl@loop\bbl@tempa{##2}{% empty items and spaces are ok
    \advance\count@\@ne
    \toks@\expandafter{\bbl@tempa}%
    \bbl@exp{%
    \\\SetString\bbl@templ{\romannumeral\count@}{\the\toks@}%
    \count@=\the\count@\relax}}}%
    \newcommand\SetCase[3][]{%
    \bbl@patchuclc
    \bbl@forlang\bbl@tempa{%
    \expandafter\bbl@encstring
    \csname\bbl@tempa @bbl@uclc\endcsname{\bbl@tempa##1}%
    \expandafter\bbl@encstring
    \csname\bbl@tempa @bbl@uc\endcsname{##2}%
    \expandafter\bbl@encstring
    \csname\bbl@tempa @bbl@lc\endcsname{##3}}}%
    \newcommand\SetHyphenMap[1]{%
    \bbl@forlang\bbl@tempa{%
    \expandafter\bbl@stringdef
    \csname\bbl@tempa @bbl@hyphenmap\endcsname{##1}}}
    \def\bbl@provstring##1##2{%
    \providecommand##1{##2}%
    \bbl@toglobal##1}%
    \global\let\bbl@scafter\@empty
    \let\StartBabelCommands\bbl@startcmds
    \ifx\BabelLanguages\relax
    \let\BabelLanguages\CurrentOption
    \fi
    \begingroup
    \let\bbl@screset\@nnil % local flag - disable 1st stopcommands
    \StartBabelCommands}
    \def\bbl@startcmds{%
    \ifx\bbl@screset\@nnil\else
    \bbl@usehooks{stopcommands}{}%
    \fi
    \endgroup
    \begingroup
    \@ifstar
    {\ifx\bbl@opt@strings\@nnil
    \let\bbl@opt@strings\BabelStringsDefault
    \fi
    \bbl@startcmds@i}%
    \bbl@startcmds@i}
    \def\bbl@startcmds@i#1#2{%
    \edef\bbl@L{\zap@space#1 \@empty}%
    \edef\bbl@G{\zap@space#2 \@empty}%
    \bbl@startcmds@ii}
    \newcommand\bbl@startcmds@ii[1][\@empty]{%
    \let\SetString\@gobbletwo
    \let\bbl@stringdef\@gobbletwo
    \let\AfterBabelCommands\@gobble
    \ifx\@empty#1%
    \def\bbl@sc@label{generic}%
    \def\bbl@encstring##1##2{%
    \ProvideTextCommandDefault##1{##2}%
    \bbl@toglobal##1%
    \expandafter\bbl@toglobal\csname\string?\string##1\endcsname}%
    \let\bbl@sctest\in@true
    \else
    \let\bbl@sc@charset\space % <- zapped below
    \let\bbl@sc@fontenc\space % <- " "
    \def\bbl@tempa##1=##2\@nil{%
    \bbl@csarg\edef{sc@\zap@space##1 \@empty}{##2 }}%
    \bbl@vforeach{label=#1}{\bbl@tempa##1\@nil}%
    \def\bbl@tempa##1 ##2{% space -> comma
    ##1%
    \ifx\@empty##2\else\ifx,##1,\else,\fi\bbl@afterfi\bbl@tempa##2\fi}%
    \edef\bbl@sc@fontenc{\expandafter\bbl@tempa\bbl@sc@fontenc\@empty}%
    \edef\bbl@sc@label{\expandafter\zap@space\bbl@sc@label\@empty}%
    \edef\bbl@sc@charset{\expandafter\zap@space\bbl@sc@charset\@empty}%
    \def\bbl@encstring##1##2{%
    \bbl@foreach\bbl@sc@fontenc{%
    \bbl@ifunset{T@####1}%
    {}%
    {\ProvideTextCommand##1{####1}{##2}%
    \bbl@toglobal##1%
    \expandafter
    \bbl@toglobal\csname####1\string##1\endcsname}}}%
    \def\bbl@sctest{%
    \bbl@xin@{,\bbl@opt@strings,}{,\bbl@sc@label,\bbl@sc@fontenc,}}%
    \fi
    \ifx\bbl@opt@strings\@nnil % ie, no strings key -> defaults
    \else\ifx\bbl@opt@strings\relax % ie, strings=encoded
    \let\AfterBabelCommands\bbl@aftercmds
    \let\SetString\bbl@setstring
    \let\bbl@stringdef\bbl@encstring
    \else % ie, strings=value
    \bbl@sctest
    \ifin@
    \let\AfterBabelCommands\bbl@aftercmds
    \let\SetString\bbl@setstring
    \let\bbl@stringdef\bbl@provstring
    \fi\fi\fi
    \bbl@scswitch
    \ifx\bbl@G\@empty
    \def\SetString##1##2{%
    \bbl@error{Missing group for string \string##1}%
    {You must assign strings to some category, typically\\%
    captions or extras, but you set none}}%
    \fi
    \ifx\@empty#1%
    \bbl@usehooks{defaultcommands}{}%
    \else
    \@expandtwoargs
    \bbl@usehooks{encodedcommands}{{\bbl@sc@charset}{\bbl@sc@fontenc}}%
    \fi}
    \def\bbl@forlang#1#2{%
    \bbl@for#1\bbl@L{%
    \bbl@xin@{,#1,}{,\BabelLanguages,}%
    \ifin@#2\relax\fi}}
    \def\bbl@scswitch{%
    \bbl@forlang\bbl@tempa{%
    \ifx\bbl@G\@empty\else
    \ifx\SetString\@gobbletwo\else
    \edef\bbl@GL{\bbl@G\bbl@tempa}%
    \bbl@xin@{,\bbl@GL,}{,\bbl@screset,}%
    \ifin@\else
    \global\expandafter\let\csname\bbl@GL\endcsname\@undefined
    \xdef\bbl@screset{\bbl@screset,\bbl@GL}%
    \fi
    \fi
    \fi}}
    \AtEndOfPackage{%
    \def\bbl@forlang#1#2{\bbl@for#1\bbl@L{\bbl@ifunset{date#1}{}{#2}}}%
    \let\bbl@scswitch\relax}
    \@onlypreamble\EndBabelCommands
    \def\EndBabelCommands{%
    \bbl@usehooks{stopcommands}{}%
    \endgroup
    \endgroup
    \bbl@scafter}
    \def\bbl@setstring#1#2{%
    \bbl@forlang\bbl@tempa{%
    \edef\bbl@LC{\bbl@tempa\bbl@stripslash#1}%
    \bbl@ifunset{\bbl@LC}% eg, \germanchaptername
    {\global\expandafter % TODO - con \bbl@exp ?
    \bbl@add\csname\bbl@G\bbl@tempa\expandafter\endcsname\expandafter
    {\expandafter\bbl@scset\expandafter#1\csname\bbl@LC\endcsname}}%
    {}%
    \def\BabelString{#2}%
    \bbl@usehooks{stringprocess}{}%
    \expandafter\bbl@stringdef
    \csname\bbl@LC\expandafter\endcsname\expandafter{\BabelString}}}
    \ifx\bbl@opt@strings\relax
    \def\bbl@scset#1#2{\def#1{\bbl@encoded#2}}
    \bbl@patchuclc
    \let\bbl@encoded\relax
    \def\bbl@encoded@uclc#1{%
    \@inmathwarn#1%
    \expandafter\ifx\csname\cf@encoding\string#1\endcsname\relax
    \expandafter\ifx\csname ?\string#1\endcsname\relax
    \TextSymbolUnavailable#1%
    \else
    \csname ?\string#1\endcsname
    \fi
    \else
    \csname\cf@encoding\string#1\endcsname
    \fi}
    \else
    \def\bbl@scset#1#2{\def#1{#2}}
    \fi
    \def\bbl@aftercmds#1{%
    \toks@\expandafter{\bbl@scafter#1}%
    \xdef\bbl@scafter{\the\toks@}}
    \newcommand\BabelLower[2]{% one to one.
    \ifnum\lccode#1=#2\else
    \babel@savevariable{\lccode#1}%
    \lccode#1=#2\relax
    \fi}
    \newcommand\BabelLowerMM[4]{% many-to-many
    \@tempcnta=#1\relax
    \@tempcntb=#4\relax
    \def\bbl@tempa{%
    \ifnum\@tempcnta>#2\else
    \@expandtwoargs\BabelLower{\the\@tempcnta}{\the\@tempcntb}%
    \advance\@tempcnta#3\relax
    \advance\@tempcntb#3\relax
    \expandafter\bbl@tempa
    \fi}%
    \bbl@tempa}
    \newcommand\BabelLowerMO[4]{% many-to-one
    \@tempcnta=#1\relax
    \def\bbl@tempa{%
    \ifnum\@tempcnta>#2\else
    \@expandtwoargs\BabelLower{\the\@tempcnta}{#4}%
    \advance\@tempcnta#3
    \expandafter\bbl@tempa
    \fi}%
    \bbl@tempa}
    \AtEndOfPackage{%
    \ifx\bbl@opt@hyphenmap\@undefined
    \bbl@xin@{,}{\bbl@language@opts}%
    \chardef\bbl@opt@hyphenmap\ifin@4\else\@ne\fi
    \fi}
    \def\set@low@box#1{\setbox\tw@\hbox{,}\setbox\z@\hbox{#1}%
    \dimen\z@\ht\z@ \advance\dimen\z@ -\ht\tw@%
    \setbox\z@\hbox{\lower\dimen\z@ \box\z@}\ht\z@\ht\tw@ \dp\z@\dp\tw@}
    \def\save@sf@q#1{\leavevmode
    \begingroup
    \edef\@SF{\spacefactor\the\spacefactor}#1\@SF
    \endgroup}
    \ProvideTextCommand{\quotedblbase}{OT1}{%
    \save@sf@q{\set@low@box{\textquotedblright\/}%
    \box\z@\kern-.04em\bbl@allowhyphens}}
    \ProvideTextCommandDefault{\quotedblbase}{%
    \UseTextSymbol{OT1}{\quotedblbase}}
    \ProvideTextCommand{\quotesinglbase}{OT1}{%
    \save@sf@q{\set@low@box{\textquoteright\/}%
    \box\z@\kern-.04em\bbl@allowhyphens}}
    \ProvideTextCommandDefault{\quotesinglbase}{%
    \UseTextSymbol{OT1}{\quotesinglbase}}
    \ProvideTextCommand{\guillemotleft}{OT1}{%
    \ifmmode
    \ll
    \else
    \save@sf@q{\nobreak
    \raise.2ex\hbox{$\scriptscriptstyle\ll$}\bbl@allowhyphens}%
    \fi}
    \ProvideTextCommand{\guillemotright}{OT1}{%
    \ifmmode
    \gg
    \else
    \save@sf@q{\nobreak
    \raise.2ex\hbox{$\scriptscriptstyle\gg$}\bbl@allowhyphens}%
    \fi}
    \ProvideTextCommandDefault{\guillemotleft}{%
    \UseTextSymbol{OT1}{\guillemotleft}}
    \ProvideTextCommandDefault{\guillemotright}{%
    \UseTextSymbol{OT1}{\guillemotright}}
    \ProvideTextCommand{\guilsinglleft}{OT1}{%
    \ifmmode
    <%
    \else
    \save@sf@q{\nobreak
    \raise.2ex\hbox{$\scriptscriptstyle<$}\bbl@allowhyphens}%
    \fi}
    \ProvideTextCommand{\guilsinglright}{OT1}{%
    \ifmmode
    >%
    \else
    \save@sf@q{\nobreak
    \raise.2ex\hbox{$\scriptscriptstyle>$}\bbl@allowhyphens}%
    \fi}
    \ProvideTextCommandDefault{\guilsinglleft}{%
    \UseTextSymbol{OT1}{\guilsinglleft}}
    \ProvideTextCommandDefault{\guilsinglright}{%
    \UseTextSymbol{OT1}{\guilsinglright}}
    \DeclareTextCommand{\ij}{OT1}{%
    i\kern-0.02em\bbl@allowhyphens j}
    \DeclareTextCommand{\IJ}{OT1}{%
    I\kern-0.02em\bbl@allowhyphens J}
    \DeclareTextCommand{\ij}{T1}{\char188}
    \DeclareTextCommand{\IJ}{T1}{\char156}
    \ProvideTextCommandDefault{\ij}{%
    \UseTextSymbol{OT1}{\ij}}
    \ProvideTextCommandDefault{\IJ}{%
    \UseTextSymbol{OT1}{\IJ}}
    \def\crrtic@{\hrule height0.1ex width0.3em}
    \def\crttic@{\hrule height0.1ex width0.33em}
    \def\ddj@{%
    \setbox0\hbox{d}\dimen@=\ht0
    \advance\dimen@1ex
    \[email protected]\dimen@
    \dimen@ii\expandafter\rem@pt\the\fontdimen\@ne\font\dimen@
    \advance\[email protected]
    \leavevmode\rlap{\raise\dimen@\hbox{\kern\dimen@ii\vbox{\crrtic@}}}}
    \def\DDJ@{%
    \setbox0\hbox{D}\dimen@=.55\ht0
    \dimen@ii\expandafter\rem@pt\the\fontdimen\@ne\font\dimen@
    \advance\[email protected] % correction for the dash position
    \advance\[email protected]\fontdimen7\font % correction for cmtt font
    \dimen\thr@@\expandafter\rem@pt\the\fontdimen7\font\dimen@
    \leavevmode\rlap{\raise\dimen@\hbox{\kern\dimen@ii\vbox{\crttic@}}}}
    \DeclareTextCommand{\dj}{OT1}{\ddj@ d}
    \DeclareTextCommand{\DJ}{OT1}{\DDJ@ D}
    \ProvideTextCommandDefault{\dj}{%
    \UseTextSymbol{OT1}{\dj}}
    \ProvideTextCommandDefault{\DJ}{%
    \UseTextSymbol{OT1}{\DJ}}
    \DeclareTextCommand{\SS}{OT1}{SS}
    \ProvideTextCommandDefault{\SS}{\UseTextSymbol{OT1}{\SS}}
    \ProvideTextCommandDefault{\glq}{%
    \textormath{\quotesinglbase}{\mbox{\quotesinglbase}}}
    \ProvideTextCommand{\grq}{T1}{%
    \textormath{\textquoteleft}{\mbox{\textquoteleft}}}
    \ProvideTextCommand{\grq}{TU}{%
    \textormath{\textquoteleft}{\mbox{\textquoteleft}}}
    \ProvideTextCommand{\grq}{OT1}{%
    \save@sf@q{\kern-.0125em
    \textormath{\textquoteleft}{\mbox{\textquoteleft}}%
    \kern.07em\relax}}
    \ProvideTextCommandDefault{\grq}{\UseTextSymbol{OT1}\grq}
    \ProvideTextCommandDefault{\glqq}{%
    \textormath{\quotedblbase}{\mbox{\quotedblbase}}}
    \ProvideTextCommand{\grqq}{T1}{%
    \textormath{\textquotedblleft}{\mbox{\textquotedblleft}}}
    \ProvideTextCommand{\grqq}{TU}{%
    \textormath{\textquotedblleft}{\mbox{\textquotedblleft}}}
    \ProvideTextCommand{\grqq}{OT1}{%
    \save@sf@q{\kern-.07em
    \textormath{\textquotedblleft}{\mbox{\textquotedblleft}}%
    \kern.07em\relax}}
    \ProvideTextCommandDefault{\grqq}{\UseTextSymbol{OT1}\grqq}
    \ProvideTextCommandDefault{\flq}{%
    \textormath{\guilsinglleft}{\mbox{\guilsinglleft}}}
    \ProvideTextCommandDefault{\frq}{%
    \textormath{\guilsinglright}{\mbox{\guilsinglright}}}
    \ProvideTextCommandDefault{\flqq}{%
    \textormath{\guillemotleft}{\mbox{\guillemotleft}}}
    \ProvideTextCommandDefault{\frqq}{%
    \textormath{\guillemotright}{\mbox{\guillemotright}}}
    \def\umlauthigh{%
    \def\bbl@umlauta##1{\leavevmode\bgroup%
    \expandafter\accent\csname\f@encoding dqpos\endcsname
    ##1\bbl@allowhyphens\egroup}%
    \let\bbl@umlaute\bbl@umlauta}
    \def\umlautlow{%
    \def\bbl@umlauta{\protect\lower@umlaut}}
    \def\umlautelow{%
    \def\bbl@umlaute{\protect\lower@umlaut}}
    \umlauthigh
    \expandafter\ifx\csname U@D\endcsname\relax
    \csname newdimen\endcsname\U@D
    \fi
    \def\lower@umlaut#1{%
    \leavevmode\bgroup
    \U@D 1ex%
    {\setbox\z@\hbox{%
    \expandafter\char\csname\f@encoding dqpos\endcsname}%
    \dimen@ -.45ex\advance\dimen@\ht\z@
    \ifdim 1ex<\dimen@ \fontdimen5\font\dimen@ \fi}%
    \expandafter\accent\csname\f@encoding dqpos\endcsname
    \fontdimen5\font\U@D #1%
    \egroup}
    \AtBeginDocument{%
    \DeclareTextCompositeCommand{\"}{OT1}{a}{\bbl@umlauta{a}}%
    \DeclareTextCompositeCommand{\"}{OT1}{e}{\bbl@umlaute{e}}%
    \DeclareTextCompositeCommand{\"}{OT1}{i}{\bbl@umlaute{\i}}%
    \DeclareTextCompositeCommand{\"}{OT1}{\i}{\bbl@umlaute{\i}}%
    \DeclareTextCompositeCommand{\"}{OT1}{o}{\bbl@umlauta{o}}%
    \DeclareTextCompositeCommand{\"}{OT1}{u}{\bbl@umlauta{u}}%
    \DeclareTextCompositeCommand{\"}{OT1}{A}{\bbl@umlauta{A}}%
    \DeclareTextCompositeCommand{\"}{OT1}{E}{\bbl@umlaute{E}}%
    \DeclareTextCompositeCommand{\"}{OT1}{I}{\bbl@umlaute{I}}%
    \DeclareTextCompositeCommand{\"}{OT1}{O}{\bbl@umlauta{O}}%
    \DeclareTextCompositeCommand{\"}{OT1}{U}{\bbl@umlauta{U}}%
    }
    \ifx\l@english\@undefined
    \chardef\l@english\z@
    \fi
    \main@language{english}
    \providecommand\IfBabelLayout[3]{#3}%
    \newcommand\BabelPatchSection[1]{%
    \@ifundefined{#1}{}{%
    \bbl@exp{\let\<bbl@ss@#1>\<#1>}%
    \@namedef{#1}{%
    \@ifstar{\bbl@presec@s{#1}}%
    {\@dblarg{\bbl@presec@x{#1}}}}}}
    \def\bbl@presec@x#1[#2]#3{%
    \bbl@exp{%
    \\\select@language@x{\bbl@main@language}%
    \\\@nameuse{bbl@ss@#1}%
    [\\\foreignlanguage{\languagename}{\unexpanded{#2}}]%
    {\\\foreignlanguage{\languagename}{\unexpanded{#3}}}%
    \\\select@language@x{\languagename}}}
    \def\bbl@presec@s#1#2{%
    \bbl@exp{%
    \\\select@language@x{\bbl@main@language}%
    \\\@nameuse{bbl@ss@#1}*%
    {\\\foreignlanguage{\languagename}{\unexpanded{#2}}}%
    \\\select@language@x{\languagename}}}
    \IfBabelLayout{sectioning}% at begin document ???
    {\BabelPatchSection{part}%
    \BabelPatchSection{chapter}%
    \BabelPatchSection{section}%
    \BabelPatchSection{subsection}%
    \BabelPatchSection{subsubsection}%
    \BabelPatchSection{paragraph}%
    \BabelPatchSection{subparagraph}%
    \def\babel@toc#1{%
    \select@language@x{\bbl@main@language}}}{}
    \ifcase\bbl@engine
    \input txtbabel.def
    \or
    \input luababel.def
    \or
    \input xebabel.def
    \fi
    {\def\format{lplain}
    \ifx\fmtname\format
    \else
    \def\format{LaTeX2e}
    \ifx\fmtname\format
    \else
    \aftergroup\endinput
    \fi
    \fi}
    \newcommand\babelprovide[2][]{%
    \let\bbl@savelangname\languagename
    \def\languagename{#2}%
    \let\bbl@KVP@captions\@nil
    \let\bbl@KVP@import\@nil
    \let\bbl@KVP@main\@nil
    \let\bbl@KVP@script\@nil
    \let\bbl@KVP@language\@nil
    \let\bbl@KVP@dir\@nil
    \let\bbl@KVP@hyphenrules\@nil
    \bbl@forkv{#1}{\bbl@csarg\def{KVP@##1}{##2}}% TODO - error handling
    \ifx\bbl@KVP@captions\@nil
    \let\bbl@KVP@captions\bbl@KVP@import
    \fi
    \bbl@ifunset{date#2}%
    {\bbl@provide@new{#2}}%
    {\bbl@ifblank{#1}%
    {\bbl@error
    {If you want to modify `#2' you must tell how in\\%
    the optional argument. Currently there are three\\%
    options: captions=lang-tag, hyphenrules=lang-list\\%
    import=lang-tag}%
    {Use this macro as documented}}%
    {\bbl@provide@renew{#2}}}%
    \bbl@exp{\\\babelensure[exclude=\\\today]{#2}}%
    \bbl@ifunset{bbl@ensure@\languagename}%
    {\bbl@exp{%
    \\\DeclareRobustCommand\<bbl@ensure@\languagename>[1]{%
    \\\foreignlanguage{\languagename}%
    {####1}}}}%
    {}%
    \ifx\bbl@KVP@script\@nil\else
    \bbl@csarg\edef{sname@#2}{\bbl@KVP@script}%
    \fi
    \ifx\bbl@KVP@language\@nil\else
    \bbl@csarg\edef{lname@#2}{\bbl@KVP@language}%
    \fi
    \let\languagename\bbl@savelangname}
    \def\bbl@provide@new#1{%
    \@namedef{date#1}{}% marks lang exists - required by \StartBabelCommands
    \@namedef{extras#1}{}%
    \@namedef{noextras#1}{}%
    \StartBabelCommands*{#1}{captions}%
    \ifx\bbl@KVP@captions\@nil % and also if import, implicit
    \def\bbl@tempb##1{% elt for \bbl@captionslist
    \ifx##1\@empty\else
    \bbl@exp{%
    \\\SetString\\##1{%
    \\\bbl@nocaption{\bbl@stripslash##1}{\<#1\bbl@stripslash##1>}}}%
    \expandafter\bbl@tempb
    \fi}%
    \expandafter\bbl@tempb\bbl@captionslist\@empty
    \else
    \bbl@read@ini{\bbl@KVP@captions}% Here all letters cat = 11
    \bbl@after@ini
    \bbl@savestrings
    \fi
    \StartBabelCommands*{#1}{date}%
    \ifx\bbl@KVP@import\@nil
    \bbl@exp{%
    \\\SetString\\\today{\\\bbl@nocaption{today}{\<#1today>}}}%
    \else
    \bbl@savetoday
    \bbl@savedate
    \fi
    \EndBabelCommands
    \bbl@exp{%
    \def\<#1hyphenmins>{%
    {\bbl@ifunset{bbl@lfthm@#1}{2}{\@nameuse{bbl@lfthm@#1}}}%
    {\bbl@ifunset{bbl@rgthm@#1}{3}{\@nameuse{bbl@rgthm@#1}}}}}%
    \bbl@provide@hyphens{#1}%
    \ifx\bbl@KVP@main\@nil\else
    \expandafter\main@language\expandafter{#1}%
    \fi}
    \def\bbl@provide@renew#1{%
    \ifx\bbl@KVP@captions\@nil\else
    \StartBabelCommands*{#1}{captions}%
    \bbl@read@ini{\bbl@KVP@captions}% Here all letters cat = 11
    \bbl@after@ini
    \bbl@savestrings
    \EndBabelCommands
    \fi
    \ifx\bbl@KVP@import\@nil\else
    \StartBabelCommands*{#1}{date}%
    \bbl@savetoday
    \bbl@savedate
    \EndBabelCommands
    \fi
    \bbl@provide@hyphens{#1}}
    \def\bbl@provide@hyphens#1{%
    \let\bbl@tempa\relax
    \ifx\bbl@KVP@hyphenrules\@nil\else
    \bbl@replace\bbl@KVP@hyphenrules{ }{,}%
    \bbl@foreach\bbl@KVP@hyphenrules{%
    \ifx\bbl@tempa\relax % if not yet found
    \bbl@ifsamestring{##1}{+}%
    {{\bbl@exp{\\\addlanguage\<l@##1>}}}%
    {}%
    \bbl@ifunset{l@##1}%
    {}%
    {\bbl@exp{\let\bbl@tempa\<l@##1>}}%
    \fi}%
    \fi
    \ifx\bbl@tempa\relax % if no opt or no language in opt found
    \ifx\bbl@KVP@import\@nil\else % if importing
    \bbl@exp{% and hyphenrules is not empty
    \\\bbl@ifblank{\@nameuse{bbl@hyphr@#1}}%
    {}%
    {\let\\\bbl@tempa\<l@\@nameuse{bbl@hyphr@\languagename}>}}%
    \fi
    \fi
    \bbl@ifunset{bbl@tempa}% ie, relax or undefined
    {\bbl@ifunset{l@#1}% no hyphenrules found - fallback
    {\bbl@exp{\\\adddialect\<l@#1>\language}}%
    {}}% so, l@<lang> is ok - nothing to do
    {\bbl@exp{\\\adddialect\<l@#1>\bbl@tempa}}}% found in opt list or ini
    \def\bbl@read@ini#1{%
    \openin1=babel-#1.ini
    \ifeof1
    \bbl@error
    {There is no ini file for the requested language\\%
    (#1). Perhaps you misspelled it or your installation\\%
    is not complete.}%
    {Fix the name or reinstall babel.}%
    \else
    \let\bbl@section\@empty
    \let\bbl@savestrings\@empty
    \let\bbl@savetoday\@empty
    \let\bbl@savedate\@empty
    \let\bbl@inireader\bbl@iniskip
    \bbl@info{Importing data from babel-#1.ini for \languagename}%
    \loop
    \if T\ifeof1F\fi T\relax % Trick, because inside \loop
    \endlinechar\m@ne
    \read1 to \bbl@line
    \endlinechar`\^^M
    \ifx\bbl@line\@empty\else
    \expandafter\bbl@iniline\bbl@line\bbl@iniline
    \fi
    \repeat
    \fi}
    \def\bbl@iniline#1\bbl@iniline{%
    \@ifnextchar[\bbl@inisec{\@ifnextchar;\bbl@iniskip\bbl@inireader}#1\@@}% ]
    \def\bbl@iniskip#1\@@{}% if starts with ;
    \def\bbl@inisec[#1]#2\@@{% if starts with opening bracket
    \@nameuse{bbl@secpost@\bbl@section}% ends previous section
    \def\bbl@section{#1}%
    \@nameuse{bbl@secpre@\bbl@section}% starts current section
    \bbl@ifunset{bbl@secline@#1}%
    {\let\bbl@inireader\bbl@iniskip}%
    {\bbl@exp{\let\\\bbl@inireader\<bbl@secline@#1>}}}
    \def\bbl@inikv#1=#2\@@{% key=value
    \bbl@trim@def\bbl@tempa{#1}%
    \bbl@trim\toks@{#2}%
    \bbl@csarg\edef{@kv@\bbl@section.\bbl@tempa}{\the\toks@}}
    \def\bbl@exportkey#1#2#3{%
    \bbl@ifunset{bbl@@kv@#2}%
    {\bbl@csarg\gdef{#1@\languagename}{#3}}%
    {\expandafter\ifx\csname bbl@@kv@#2\endcsname\@empty
    \bbl@csarg\gdef{#1@\languagename}{#3}%
    \else
    \bbl@exp{\global\let\<bbl@#1@\languagename>\<bbl@@kv@#2>}%
    \fi}}
    \let\bbl@secline@identification\bbl@inikv
    \def\bbl@secpost@identification{%
    \bbl@exportkey{lname}{identification.name.english}{}%
    \bbl@exportkey{lbcp}{identification.tag.bcp47}{}%
    \bbl@exportkey{lotf}{identification.tag.opentype}{dflt}%
    \bbl@exportkey{sname}{identification.script.name}{}%
    \bbl@exportkey{sbcp}{identification.script.tag.bcp47}{}%
    \bbl@exportkey{sotf}{identification.script.tag.opentype}{DFLT}}
    \let\bbl@secline@typography\bbl@inikv
    \def\bbl@after@ini{%
    \bbl@exportkey{lfthm}{typography.lefthyphenmin}{2}%
    \bbl@exportkey{rgthm}{typography.righthyphenmin}{3}%
    \bbl@exportkey{hyphr}{typography.hyphenrules}{}%
    \def\bbl@tempa{0.9}%
    \bbl@csarg\ifx{@[email protected]}\bbl@tempa
    \bbl@warning{%
    The `\languagename' date format may not be suitable\\%
    for proper typesetting, and therefore it very likely will\\%
    change in a future release. Reported}%
    \fi
    \bbl@toglobal\bbl@savetoday
    \bbl@toglobal\bbl@savedate}
    \ifcase\bbl@engine
    \bbl@csarg\def{[email protected]}#1=#2\@@{%
    \bbl@ini@captions@aux{#1}{#2}}
    \bbl@csarg\def{[email protected]}#1=#2\@@{% for defaults
    \bbl@ini@dategreg#1...\relax{#2}}
    \bbl@csarg\def{[email protected]}#1=#2\@@{% override
    \bbl@ini@dategreg#1...\relax{#2}}
    \else
    \def\bbl@secline@captions#1=#2\@@{%
    \bbl@ini@captions@aux{#1}{#2}}
    \bbl@csarg\def{[email protected]}#1=#2\@@{%
    \bbl@ini@dategreg#1...\relax{#2}}
    \fi
    \def\bbl@ini@captions@aux#1#2{%
    \bbl@trim@def\bbl@tempa{#1}%
    \bbl@ifblank{#2}%
    {\bbl@exp{%
    \toks@{\\\bbl@nocaption{\bbl@tempa}\<\languagename\bbl@tempa name>}}}%
    {\bbl@trim\toks@{#2}}%
    \bbl@exp{%
    \\\bbl@add\\\bbl@savestrings{%
    \\\SetString\<\bbl@tempa name>{\the\toks@}}}}
    \bbl@csarg\def{[email protected]}{%
    \ifcase\bbl@engine\let\bbl@savedate\@empty\fi}
    \def\bbl@ini@dategreg#1.#2.#3.#4\relax#5{% TODO - ignore with 'captions'
    \bbl@trim@def\bbl@tempa{#1.#2}%
    \bbl@ifsamestring{\bbl@tempa}{months.wide}%
    {\bbl@trim@def\bbl@tempa{#3}%
    \bbl@trim\toks@{#5}%
    \bbl@exp{%
    \\\bbl@add\\\bbl@savedate{%
    \\\SetString\<month\romannumeral\bbl@tempa name>{\the\toks@}}}}%
    {\bbl@ifsamestring{\bbl@tempa}{date.long}%
    {\bbl@trim@def\bbl@toreplace{#5}%
    \bbl@TG@@date
    \global\bbl@csarg\let{date@\languagename}\bbl@toreplace
    \bbl@exp{%
    \gdef\<\languagename date>{\\\protect\<\languagename date >}%
    \gdef\<\languagename date >####1####2####3{%
    \\\bbl@usedategrouptrue
    \<bbl@ensure@\languagename>{%
    \<bbl@date@\languagename>{####1}{####2}{####3}}}%
    \\\bbl@add\\\bbl@savetoday{%
    \\\SetString\\\today{%
    \<\languagename date>{\\\the\year}{\\\the\month}{\\\the\day}}}}}}%
    {}}
    \newcommand\BabelDateSpace{\nobreakspace}
    \newcommand\BabelDateDot{.\@}
    \newcommand\BabelDated[1]{{\number#1}}
    \newcommand\BabelDatedd[1]{{\ifnum#1<10 0\fi\number#1}}
    \newcommand\BabelDateM[1]{{\number#1}}
    \newcommand\BabelDateMM[1]{{\ifnum#1<10 0\fi\number#1}}
    \newcommand\BabelDateMMMM[1]{{%
    \csname month\romannumeral#1name\endcsname}}%
    \newcommand\BabelDatey[1]{{\number#1}}%
    \newcommand\BabelDateyy[1]{{%
    \ifnum#1<10 0\number#1 %
    \else\ifnum#1<100 \number#1 %
    \else\ifnum#1<1000 \expandafter\@gobble\number#1 %
    \else\ifnum#1<10000 \expandafter\@gobbletwo\number#1 %
    \else
    \bbl@error
    {Currently two-digit years are restricted to the\\
    range 0-9999.}%
    {There is little you can do. Sorry.}%
    \fi\fi\fi\fi}}
    \newcommand\BabelDateyyyy[1]{{\number#1}}
    \def\bbl@replace@finish@iii#1{%
    \bbl@exp{\def\\#1####1####2####3{\the\toks@}}}
    \def\bbl@TG@@date{%
    \bbl@replace\bbl@toreplace{[ ]}{\BabelDateSpace{}}%
    \bbl@replace\bbl@toreplace{[.]}{\BabelDateDot{}}%
    \bbl@replace\bbl@toreplace{[d]}{\BabelDated{####3}}%
    \bbl@replace\bbl@toreplace{[dd]}{\BabelDatedd{####3}}%
    \bbl@replace\bbl@toreplace{[M]}{\BabelDateM{####2}}%
    \bbl@replace\bbl@toreplace{[MM]}{\BabelDateMM{####2}}%
    \bbl@replace\bbl@toreplace{[MMMM]}{\BabelDateMMMM{####2}}%
    \bbl@replace\bbl@toreplace{[y]}{\BabelDatey{####1}}%
    \bbl@replace\bbl@toreplace{[yy]}{\BabelDateyy{####1}}%
    \bbl@replace\bbl@toreplace{[yyyy]}{\BabelDateyyyy{####1}}%
    \bbl@replace@finish@iii\bbl@toreplace}
    \def\bbl@provide@lsys#1{%
    \bbl@ifunset{bbl@lname@#1}%
    {\bbl@ini@ids{#1}}%
    {}%
    \bbl@csarg\let{lsys@#1}\@empty
    \bbl@ifunset{bbl@sname@#1}{\bbl@csarg\gdef{sname@#1}{Default}}{}%
    \bbl@ifunset{bbl@sotf#1}{\bbl@csarg\gdef{sotf@#1}{DFLT}}{}%
    \bbl@csarg\bbl@add@list{lsys@#1}{Script=\bbl@cs{sname@#1}}%
    \bbl@ifunset{bbl@lname@#1}{}%
    {\bbl@csarg\bbl@add@list{lsys@#1}{Language=\bbl@cs{lname@#1}}}%
    \bbl@csarg\bbl@toglobal{lsys@#1}}%
    % \bbl@exp{% TODO - should be global
    % \<keys_if_exist:nnF>{fontspec-opentype/Script}{\bbl@cs{sname@#1}}%
    % {\\\newfontscript{\bbl@cs{sname@#1}}{\bbl@cs{sotf@#1}}}%
    % \<keys_if_exist:nnF>{fontspec-opentype/Language}{\bbl@cs{lname@#1}}%
    % {\\\newfontlanguage{\bbl@cs{lname@#1}}{\bbl@cs{lotf@#1}}}}}
    \def\bbl@ini@ids#1{%
    \def\BabelBeforeIni##1##2{%
    \begingroup
    \bbl@add\bbl@secpost@identification{\closein1 }%
    \catcode`\[=12 \catcode`\]=12 \catcode`\==12
    \bbl@read@ini{##1}%
    \endgroup}% boxed, to avoid extra spaces:
    {\setbox\z@\hbox{\InputIfFileExists{babel-#1.tex}{}{}}}}
    \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
    \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}%
    \fi}
    {\bbl@redefine\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@redefine\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} % end \IfBabelLayout
    \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
    \newcommand\BabelNonASCII{LGR,X2,OT2,OT3,OT6,LHE,LWN,LMA,LMC,LMS,LMU,}
    \let\org@TeX\TeX
    \let\org@LaTeX\LaTeX
    \let\ensureascii\@firstofone
    \AtBeginDocument{%
    \in@false
    \bbl@foreach\BabelNonASCII{% is there a non-ascii enc?
    \ifin@\else
    \lowercase{\bbl@xin@{,#1enc.def,}{,\@filelist,}}%
    \fi}%
    \ifin@ % if a 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,}%
    \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,}%
    \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
    \@ifl@aded{def}{t1enc}{\xdef\latinencoding{\bbl@t@one}}{}%
    \fi}}
    \DeclareRobustCommand{\latintext}{%
    \fontencoding{\latinencoding}\selectfont
    \def\encodingdefault{\latinencoding}}
    \ifx\@undefined\DeclareTextFontCommand
    \DeclareRobustCommand{\textlatin}[1]{\leavevmode{\latintext #1}}
    \else
    \DeclareTextFontCommand{\textlatin}{\latintext}
    \fi
    \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}
    \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@cs{wdir@\languagename}}}
    \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}
    \def\bbl@getluadir#1{%
    \directlua{
    if tex.#1dir == 'TLT' then
    tex.sprint('0')
    elseif tex.#1dir == 'TRT' then
    tex.sprint('1')
    end}}
    \def\bbl@setdir#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@setdir{text}\textdir{#1}% TODO - ?\linedir
    \setattribute\bbl@attr@dir{#1}}
    \def\bbl@pardir{\bbl@setdir{par}\pardir}
    \def\bbl@bodydir{\bbl@setdir{body}\bodydir}
    \def\bbl@pagedir{\bbl@setdir{page}\pagedir}
    \def\bbl@dirparastext{\pardir\the\textdir\relax}% %%%%
    \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}}
    \fi
    \DeclareRobustCommand\babelsublr[1]{\leavevmode{\bbl@textdir\z@#1}}
    \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'.
    ```
    The ```\ifcase``` calls up ```txtbabel.def```, which may well be the source of the problem, so here it is:
    ```
    %%
    %% This is file `txtbabel.def',
    %% generated with the docstrip utility.
    %%
    %% The original source files were:
    %%
    %% babel.dtx (with options: `texxet')
    %%
    %%
    %% Copyright (C) 2012-2017 Javier Bezos and Johannes L. Braams.
    %% Copyright (C) 1989-2012 Johannes L. Braams and
    %% any individual authors listed elsewhere in this file.
    %% All rights reserved.
    %%
    %% This file is part of the Babel system.
    %% --------------------------------------
    %%
    %% It may be distributed and/or modified under the
    %% conditions of the LaTeX Project Public License, either version 1.3
    %% of this license or (at your option) any later version.
    %% The latest version of this license is in
    %% http://www.latex-project.org/lppl.txt
    %% and version 1.3 or later is part of all distributions of LaTeX
    %% version 2003/12/01 or later.
    %%
    %% This work has the LPPL maintenance status "maintained".
    %%
    %% The Current Maintainer of this work is Javier Bezos.
    %%
    %% The list of derived (unpacked) files belonging to the distribution
    %% and covered by LPPL is defined by the unpacking scripts (with
    %% extension |.ins|) which are part of the distribution.
    %%
    \ifx\bbl@opt@layout\@nnil\endinput\fi % No layout
    \def\bbl@startskip{\ifcase\bbl@thepardir\leftskip\else\rightskip\fi}
    \def\bbl@endskip{\ifcase\bbl@thepardir\rightskip\else\leftskip\fi}
    \ifx\bbl@beforeforeign\leavevmode % A poor test for bidi=
    \def\@hangfrom#1{%
    \setbox\@tempboxa\hbox{{#1}}%
    \hangindent\ifcase\bbl@thepardir\wd\@tempboxa\else-\wd\@tempboxa\fi
    \noindent\box\@tempboxa}
    \def\raggedright{%
    \let\\\@centercr
    \bbl@startskip\z@skip
    \@rightskip\@flushglue
    \bbl@endskip\@rightskip
    \parindent\z@
    \parfillskip\bbl@startskip}
    \def\raggedleft{%
    \let\\\@centercr
    \bbl@startskip\@flushglue
    \bbl@endskip\z@skip
    \parindent\z@
    \parfillskip\bbl@endskip}
    \fi
    \IfBabelLayout{lists}
    {\def\list#1#2{%
    \ifnum \@listdepth >5\relax
    \@toodeep
    \else
    \global\advance\@listdepth\@ne
    \fi
    \rightmargin\z@
    \listparindent\z@
    \itemindent\z@
    \csname @list\romannumeral\the\@listdepth\endcsname
    \def\@itemlabel{#1}%
    \let\makelabel\@mklab
    \@nmbrlistfalse
    #2\relax
    \@trivlist
    \parskip\parsep
    \parindent\listparindent
    \advance\linewidth-\rightmargin
    \advance\linewidth-\leftmargin
    \advance\@totalleftmargin
    \ifcase\bbl@thepardir\leftmargin\else\rightmargin\fi
    \parshape\@ne\@totalleftmargin\linewidth
    \ignorespaces}%
    \def\labelenumii{)\theenumii(}%
    \def\p@enumiii{\p@enumii)\theenumii(}}
    {}
    \IfBabelLayout{contents}
    {\def\@dottedtocline#1#2#3#4#5{%
    \ifnum#1>\c@tocdepth\else
    \vskip \z@ \@plus.2\p@
    {\bbl@startskip#2\relax
    \bbl@endskip\@tocrmarg
    \parfillskip-\bbl@endskip
    \parindent#2\relax
    \@afterindenttrue
    \interlinepenalty\@M
    \leavevmode
    \@tempdima#3\relax
    \advance\bbl@startskip\@tempdima
    \null\nobreak\hskip-\bbl@startskip
    {#4}\nobreak
    \leaders\hbox{%
    $\m@th\mkern\@dotsep mu\hbox{.}\mkern\@dotsep mu$}%
    \hfill\nobreak
    \hb@xt@\@pnumwidth{\hfil\normalfont\normalcolor#5}%
    \par}%
    \fi}}
    {}
    \IfBabelLayout{columns}
    {\def\@outputdblcol{%
    \if@firstcolumn
    \global\@firstcolumnfalse
    \global\setbox\@leftcolumn\copy\@outputbox
    \splitmaxdepth\maxdimen
    \vbadness\maxdimen
    \setbox\@outputbox\vbox{\unvbox\@outputbox\unskip}%
    \setbox\@outputbox\vsplit\@outputbox to\maxdimen
    \toks@\expandafter{\topmark}%
    \xdef\@firstcoltopmark{\the\toks@}%
    \toks@\expandafter{\splitfirstmark}%
    \xdef\@firstcolfirstmark{\the\toks@}%
    \ifx\@firstcolfirstmark\@empty
    \global\let\@setmarks\relax
    \else
    \gdef\@setmarks{%
    \let\firstmark\@firstcolfirstmark
    \let\topmark\@firstcoltopmark}%
    \fi
    \else
    \global\@firstcolumntrue
    \setbox\@outputbox\vbox{%
    \hb@xt@\textwidth{%
    \hskip\columnwidth
    \hfil
    {\normalcolor\vrule \@width\columnseprule}%
    \hfil
    \hb@xt@\columnwidth{\box\@leftcolumn \hss}%
    \hskip-\textwidth
    \hb@xt@\columnwidth{\box\@outputbox \hss}%
    \hskip\columnsep
    \hskip\columnwidth}}%
    \@combinedblfloats
    \@setmarks
    \@outputpage
    \begingroup
    \@dblfloatplacement
    \@startdblcolumn
    \@whilesw\if@fcolmade \fi{\@outputpage
    \@startdblcolumn}%
    \endgroup
    \fi}}%
    {}
    \IfBabelLayout{counters}% Global or language dependent? At begin doc?
    {\let\bbl@latinarabic=\@arabic
    \def\@arabic#1{\babelsublr{\bbl@latinarabic#1}}%
    \let\bbl@asciiroman=\@roman
    \def\@roman#1{\babelsublr{\ensureascii{\bbl@asciiroman#1}}}%
    \let\bbl@asciiRoman=\@Roman
    \def\@Roman#1{\babelsublr{\ensureascii{\bbl@asciiRoman#1}}}}{}
    \endinput
    %%
    %% End of file `txtbabel.def'.