%% %% This is file `luababel.def', %% generated with the docstrip utility. %% %% The original source files were: %% %% babel.dtx (with options: `luatex') %% %% %% Copyright (C) 2012-2019 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\AddBabelHook\@undefined \bbl@trace{Read language.dat} \begingroup \toks@{} \count@\z@ % 0=start, 1=0th, 2=normal \def\bbl@process@line#1#2 #3 #4 {% \ifx=#1% \bbl@process@synonym{#2}% \else \bbl@process@language{#1#2}{#3}{#4}% \fi \ignorespaces} \def\bbl@manylang{% \ifnum\bbl@last>\@ne \bbl@info{Non-standard hyphenation setup}% \fi \let\bbl@manylang\relax} \def\bbl@process@language#1#2#3{% \ifcase\count@ \@ifundefined{zth@#1}{\count@\tw@}{\count@\@ne}% \or \count@\tw@ \fi \ifnum\count@=\tw@ \expandafter\addlanguage\csname l@#1\endcsname \language\allocationnumber \chardef\bbl@last\allocationnumber \bbl@manylang \let\bbl@elt\relax \xdef\bbl@languages{% \bbl@languages\bbl@elt{#1}{\the\language}{#2}{#3}}% \fi \the\toks@ \toks@{}} \def\bbl@process@synonym@aux#1#2{% \global\expandafter\chardef\csname l@#1\endcsname#2\relax \let\bbl@elt\relax \xdef\bbl@languages{% \bbl@languages\bbl@elt{#1}{#2}{}{}}}% \def\bbl@process@synonym#1{% \ifcase\count@ \toks@\expandafter{\the\toks@\relax\bbl@process@synonym{#1}}% \or \@ifundefined{zth@#1}{\bbl@process@synonym@aux{#1}{0}}{}% \else \bbl@process@synonym@aux{#1}{\the\bbl@last}% \fi} \ifx\bbl@languages\@undefined % Just a (sensible?) guess \chardef\l@english\z@ \chardef\l@USenglish\z@ \chardef\bbl@last\z@ \global\@namedef{bbl@hyphendata@0}{{hyphen.tex}{}} \gdef\bbl@languages{% \bbl@elt{english}{0}{hyphen.tex}{}% \bbl@elt{USenglish}{0}{}{}} \else \global\let\bbl@languages@format\bbl@languages \def\bbl@elt#1#2#3#4{% Remove all except language 0 \ifnum#2>\z@\else \noexpand\bbl@elt{#1}{#2}{#3}{#4}% \fi}% \xdef\bbl@languages{\bbl@languages}% \fi \def\bbl@elt#1#2#3#4{\@namedef{zth@#1}{}} % Define flags \bbl@languages \openin1=language.dat \ifeof1 \bbl@warning{I couldn't find language.dat. No additional\\% patterns loaded. Reported}% \else \loop \endlinechar\m@ne \read1 to \bbl@line \endlinechar`\^^M \if T\ifeof1F\fi T\relax \ifx\bbl@line\@empty\else \edef\bbl@line{\bbl@line\space\space\space}% \expandafter\bbl@process@line\bbl@line\relax \fi \repeat \fi \endgroup \bbl@trace{Macros for reading patterns files} \def\bbl@get@enc#1:#2:#3\@@@{\def\bbl@hyph@enc{#2}} \ifx\babelcatcodetablenum\@undefined \def\babelcatcodetablenum{5211} \fi \def\bbl@luapatterns#1#2{% \bbl@get@enc#1::\@@@ \setbox\z@\hbox\bgroup \begingroup \ifx\catcodetable\@undefined \let\savecatcodetable\luatexsavecatcodetable \let\initcatcodetable\luatexinitcatcodetable \let\catcodetable\luatexcatcodetable \fi \savecatcodetable\babelcatcodetablenum\relax \initcatcodetable\numexpr\babelcatcodetablenum+1\relax \catcodetable\numexpr\babelcatcodetablenum+1\relax \catcode`\#=6 \catcode`\$=3 \catcode`\&=4 \catcode`\^=7 \catcode`\_=8 \catcode`\{=1 \catcode`\}=2 \catcode`\~=13 \catcode`\@=11 \catcode`\^^I=10 \catcode`\^^J=12 \catcode`\<=12 \catcode`\>=12 \catcode`\*=12 \catcode`\.=12 \catcode`\-=12 \catcode`\/=12 \catcode`\[=12 \catcode`\]=12 \catcode`\`=12 \catcode`\'=12 \catcode`\"=12 \input #1\relax \catcodetable\babelcatcodetablenum\relax \endgroup \def\bbl@tempa{#2}% \ifx\bbl@tempa\@empty\else \input #2\relax \fi \egroup}% \def\bbl@patterns@lua#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\relax \@namedef{lu@texhyphen@loaded@\the\language}{}% Temp \@ifundefined{bbl@hyphendata@\the\language}% {\def\bbl@elt##1##2##3##4{% \ifnum##2=\csname l@\bbl@tempa\endcsname % #2=spanish, dutch:OT1... \def\bbl@tempb{##3}% \ifx\bbl@tempb\@empty\else % if not a synonymous \def\bbl@tempc{{##3}{##4}}% \fi \bbl@csarg\xdef{hyphendata@##2}{\bbl@tempc}% \fi}% \bbl@languages \@ifundefined{bbl@hyphendata@\the\language}% {\bbl@info{No hyphenation patterns were set for\\% language '\bbl@tempa'. Reported}}% {\expandafter\expandafter\expandafter\bbl@luapatterns \csname bbl@hyphendata@\the\language\endcsname}}{}} \endinput\fi \begingroup \catcode`\%=12 \catcode`\'=12 \catcode`\"=12 \catcode`\:=12 \directlua{ Babel = Babel or {} function Babel.bytes(line) return line:gsub("(.)", function (chr) return unicode.utf8.char(string.byte(chr)) end) end function Babel.begin_process_input() if luatexbase and luatexbase.add_to_callback then luatexbase.add_to_callback('process_input_buffer', Babel.bytes,'Babel.bytes') else Babel.callback = callback.find('process_input_buffer') callback.register('process_input_buffer',Babel.bytes) end end function Babel.end_process_input () if luatexbase and luatexbase.remove_from_callback then luatexbase.remove_from_callback('process_input_buffer','Babel.bytes') else callback.register('process_input_buffer',Babel.callback) end end function Babel.addpatterns(pp, lg) local lg = lang.new(lg) local pats = lang.patterns(lg) or '' lang.clear_patterns(lg) for p in pp:gmatch('[^%s]+') do ss = '' for i in string.utfcharacters(p:gsub('%d', '')) do ss = ss .. '%d?' .. i end ss = ss:gsub('^%%d%?%.', '%%.') .. '%d?' ss = ss:gsub('%.%%d%?$', '%%.') pats, n = pats:gsub('%s' .. ss .. '%s', ' ' .. p .. ' ') if n == 0 then tex.sprint( [[\string\csname\space bbl@info\endcsname{New pattern: ]] .. p .. [[}]]) pats = pats .. ' ' .. p else tex.sprint( [[\string\csname\space bbl@info\endcsname{Renew pattern: ]] .. p .. [[}]]) end end lang.patterns(lg, pats) end } \endgroup \def\BabelStringsDefault{unicode} \let\luabbl@stop\relax \AddBabelHook{luatex}{encodedcommands}{% \def\bbl@tempa{utf8}\def\bbl@tempb{#1}% \ifx\bbl@tempa\bbl@tempb\else \directlua{Babel.begin_process_input()}% \def\luabbl@stop{% \directlua{Babel.end_process_input()}}% \fi}% \AddBabelHook{luatex}{stopcommands}{% \luabbl@stop \let\luabbl@stop\relax} \AddBabelHook{luatex}{patterns}{% \@ifundefined{bbl@hyphendata@\the\language}% {\def\bbl@elt##1##2##3##4{% \ifnum##2=\csname l@#2\endcsname % #2=spanish, dutch:OT1... \def\bbl@tempb{##3}% \ifx\bbl@tempb\@empty\else % if not a synonymous \def\bbl@tempc{{##3}{##4}}% \fi \bbl@csarg\xdef{hyphendata@##2}{\bbl@tempc}% \fi}% \bbl@languages \@ifundefined{bbl@hyphendata@\the\language}% {\bbl@info{No hyphenation patterns were set for\\% language '#2'. Reported}}% {\expandafter\expandafter\expandafter\bbl@luapatterns \csname bbl@hyphendata@\the\language\endcsname}}{}% \@ifundefined{bbl@patterns@}{}{% \begingroup \bbl@xin@{,\number\language,}{,\bbl@pttnlist}% \ifin@\else \ifx\bbl@patterns@\@empty\else \directlua{ Babel.addpatterns( [[\bbl@patterns@]], \number\language) }% \fi \@ifundefined{bbl@patterns@#1}% \@empty {\directlua{ Babel.addpatterns( [[\space\csname bbl@patterns@#1\endcsname]], \number\language) }}% \xdef\bbl@pttnlist{\bbl@pttnlist\number\language,}% \fi \endgroup}} \AddBabelHook{luatex}{everylanguage}{% \def\process@language##1##2##3{% \def\process@line####1####2 ####3 ####4 {}}} \AddBabelHook{luatex}{loadpatterns}{% \input #1\relax \expandafter\gdef\csname bbl@hyphendata@\the\language\endcsname {{#1}{}}} \AddBabelHook{luatex}{loadexceptions}{% \input #1\relax \def\bbl@tempb##1##2{{##1}{#1}}% \expandafter\xdef\csname bbl@hyphendata@\the\language\endcsname {\expandafter\expandafter\expandafter\bbl@tempb \csname bbl@hyphendata@\the\language\endcsname}} \@onlypreamble\babelpatterns \AtEndOfPackage{% \newcommand\babelpatterns[2][\@empty]{% \ifx\bbl@patterns@\relax \let\bbl@patterns@\@empty \fi \ifx\bbl@pttnlist\@empty\else \bbl@warning{% You must not intermingle \string\selectlanguage\space and\\% \string\babelpatterns\space or some patterns will not\\% be taken into account. Reported}% \fi \ifx\@empty#1% \protected@edef\bbl@patterns@{\bbl@patterns@\space#2}% \else \edef\bbl@tempb{\zap@space#1 \@empty}% \bbl@for\bbl@tempa\bbl@tempb{% \bbl@fixname\bbl@tempa \bbl@iflanguage\bbl@tempa{% \bbl@csarg\protected@edef{patterns@\bbl@tempa}{% \@ifundefined{bbl@patterns@\bbl@tempa}% \@empty {\csname bbl@patterns@\bbl@tempa\endcsname\space}% #2}}}% \fi}} \def\bbl@intraspace#1 #2 #3\@@{% \directlua{ Babel = Babel or {} Babel.intraspaces = Babel.intraspaces or {} Babel.intraspaces['\csname bbl@sbcp@\languagename\endcsname'] = % {b = #1, p = #2, m = #3} }} \def\bbl@intrapenalty#1\@@{% \directlua{ Babel = Babel or {} Babel.intrapenalties = Babel.intrapenalties or {} Babel.intrapenalties['\csname bbl@sbcp@\languagename\endcsname'] = #1 }} \begingroup \catcode`\%=12 \catcode`\^=14 \catcode`\'=12 \catcode`\~=12 \gdef\bbl@seaintraspace{^ \let\bbl@seaintraspace\relax \directlua{ Babel = Babel or {} Babel.sea_ranges = Babel.sea_ranges or {} function Babel.set_chranges (script, chrng) local c = 0 for s, e in string.gmatch(chrng..' ', '(.-)%.%.(.-)%s') do Babel.sea_ranges[script..c]={tonumber(s,16), tonumber(e,16)} c = c + 1 end end function Babel.sea_disc_to_space (head) local sea_ranges = Babel.sea_ranges local last_char = nil local quad = 655360 ^^ 10 pt = 655360 = 10 * 65536 for item in node.traverse(head) do local i = item.id if i == node.id'glyph' then last_char = item elseif i == 7 and item.subtype == 3 and last_char and last_char.char > 0x0C99 then quad = font.getfont(last_char.font).size for lg, rg in pairs(sea_ranges) do if last_char.char > rg[1] and last_char.char < rg[2] then lg = lg:sub(1, 4) local intraspace = Babel.intraspaces[lg] local intrapenalty = Babel.intrapenalties[lg] local n if intrapenalty ~= 0 then n = node.new(14, 0) ^^ penalty n.penalty = intrapenalty node.insert_before(head, item, n) end n = node.new(12, 13) ^^ (glue, spaceskip) node.setglue(n, intraspace.b * quad, intraspace.p * quad, intraspace.m * quad) node.insert_before(head, item, n) node.remove(head, item) end end end end end luatexbase.add_to_callback('hyphenate', function (head, tail) lang.hyphenate(head) Babel.sea_disc_to_space(head) end, 'Babel.sea_disc_to_space') }} \endgroup \AddBabelHook{luatex}{loadkernel}{% \begingroup % Reset chars "80-"C0 to category "other", no case mapping: \catcode`\@=11 \count@=128 \loop\ifnum\count@<192 \global\uccode\count@=0 \global\lccode\count@=0 \global\catcode\count@=12 \global\sfcode\count@=1000 \advance\count@ by 1 \repeat % Other: \def\O ##1 {% \global\uccode"##1=0 \global\lccode"##1=0 \global\catcode"##1=12 \global\sfcode"##1=1000 }% % Letter: \def\L ##1 ##2 ##3 {\global\catcode"##1=11 \global\uccode"##1="##2 \global\lccode"##1="##3 % Uppercase letters have sfcode=999: \ifnum"##1="##3 \else \global\sfcode"##1=999 \fi }% % Letter without case mappings: \def\l ##1 {\L ##1 ##1 ##1 }% \l 00AA \L 00B5 039C 00B5 \l 00BA \O 00D7 \l 00DF \O 00F7 \L 00FF 0178 00FF \endgroup \input #1\relax} \ifx\DisableBabelHook\@undefined\endinput\fi \AddBabelHook{babel-fontspec}{afterextras}{\bbl@switchfont} \DisableBabelHook{babel-fontspec} \bbl@trace{Font handling with fontspec} \@onlypreamble\babelfont \newcommand\babelfont[2][]{% 1=langs/scripts 2=fam \edef\bbl@tempa{#1}% \def\bbl@tempb{#2}% \ifx\fontspec\@undefined \usepackage{fontspec}% \fi \EnableBabelHook{babel-fontspec}% Just calls \bbl@switchfont \bbl@bblfont} \newcommand\bbl@bblfont[2][]{% 1=features 2=fontname \bbl@ifunset{\bbl@tempb family}{\bbl@providefam{\bbl@tempb}}{}% % For the default font, just in case: \bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}% \expandafter\bbl@ifblank\expandafter{\bbl@tempa}% {\bbl@csarg\edef{\bbl@tempb dflt@}{<>{#1}{#2}}% save bbl@rmdflt@ \bbl@exp{% \let\\% \\\bbl@font@set\% \<\bbl@tempb default>\<\bbl@tempb family>}}% {\bbl@foreach\bbl@tempa{% ie bbl@rmdflt@lang / *scrt \bbl@csarg\def{\bbl@tempb dflt@##1}{<>{#1}{#2}}}}}% \def\bbl@providefam#1{% \bbl@exp{% \\\newcommand\<#1default>{}% Just define it \\\bbl@add@list\\\bbl@font@fams{#1}% \\\DeclareRobustCommand\<#1family>{% \\\not@math@alphabet\<#1family>\relax \\\fontfamily\<#1default>\\\selectfont}% \\\DeclareTextFontCommand{\}{\<#1family>}}} \def\bbl@switchfont{% \bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}% \bbl@exp{% eg Arabic -> arabic \lowercase{\edef\\\bbl@tempa{\bbl@cs{sname@\languagename}}}}% \bbl@foreach\bbl@font@fams{% \bbl@ifunset{bbl@##1dflt@\languagename}% (1) language? {\bbl@ifunset{bbl@##1dflt@*\bbl@tempa}% (2) from script? {\bbl@ifunset{bbl@##1dflt@}% 2=F - (3) from generic? {}% 123=F - nothing! {\bbl@exp{% 3=T - from generic \global\let\% \}}}% {\bbl@exp{% 2=T - from script \global\let\% \}}}% {}}% 1=T - language, already defined \def\bbl@tempa{% \bbl@warning{The current font is not a standard family:\\% \fontname\font\\% Script and Language are not applied. Consider\\% defining a new family with \string\babelfont.\\% Reported}}% \bbl@foreach\bbl@font@fams{% don't gather with prev for \bbl@ifunset{bbl@##1dflt@\languagename}% {\bbl@cs{famrst@##1}% \global\bbl@csarg\let{famrst@##1}\relax}% {\bbl@exp{% order is relevant \\\bbl@add\\\originalTeX{% \\\bbl@font@rst{\bbl@cs{##1dflt@\languagename}}% \<##1default>\<##1family>{##1}}% \\\bbl@font@set\% the main part! \<##1default>\<##1family>}}}% \bbl@ifrestoring{}{\bbl@tempa}}% \def\bbl@font@set#1#2#3{% eg \bbl@rmdflt@lang \rmdefault \rmfamily \bbl@xin@{<>}{#1}% \ifin@ \bbl@exp{\\\bbl@fontspec@set\\#1\expandafter\@gobbletwo#1\\#3}% \fi \bbl@exp{% \def\\#2{#1}% eg, \rmdefault{\bbl@rmdflt@lang} \\\bbl@ifsamestring{#2}{\f@family}{\\#3\let\\\bbl@tempa\relax}{}}} \def\bbl@fontspec@set#1#2#3#4{% eg \bbl@rmdflt@lang fnt-opt fnt-nme \xxfamily \let\bbl@tempe\bbl@mapselect \let\bbl@mapselect\relax \let\bbl@temp@fam#4% eg, '\rmfamily', to be restored below \let#4\relax % So that can be used with \newfontfamily \bbl@exp{% \let\\\bbl@temp@pfam\<\bbl@stripslash#4\space>% eg, '\rmfamily ' \{fontspec-opentype}% {Script/\bbl@cs{sname@\languagename}}% {\\\newfontscript{\bbl@cs{sname@\languagename}}% {\bbl@cs{sotf@\languagename}}}% \{fontspec-opentype}% {Language/\bbl@cs{lname@\languagename}}% {\\\newfontlanguage{\bbl@cs{lname@\languagename}}% {\bbl@cs{lotf@\languagename}}}% \\\newfontfamily\\#4% [\bbl@cs{lsys@\languagename},#2]}{#3}% ie \bbl@exp{..}{#3} \begingroup #4% \xdef#1{\f@family}% eg, \bbl@rmdflt@lang{FreeSerif(0)} \endgroup \let#4\bbl@temp@fam \bbl@exp{\let\<\bbl@stripslash#4\space>}\bbl@temp@pfam \let\bbl@mapselect\bbl@tempe}% \def\bbl@font@rst#1#2#3#4{% \bbl@csarg\def{famrst@#4}{\bbl@font@set{#1}#2#3}} \def\bbl@font@fams{rm,sf,tt} \newcommand\babelFSstore[2][]{% \bbl@ifblank{#1}% {\bbl@csarg\def{sname@#2}{Latin}}% {\bbl@csarg\def{sname@#2}{#1}}% \bbl@provide@dirs{#2}% \bbl@csarg\ifnum{wdir@#2}>\z@ \let\bbl@beforeforeign\leavevmode \EnableBabelHook{babel-bidi}% \fi \bbl@foreach{#2}{% \bbl@FSstore{##1}{rm}\rmdefault\bbl@save@rmdefault \bbl@FSstore{##1}{sf}\sfdefault\bbl@save@sfdefault \bbl@FSstore{##1}{tt}\ttdefault\bbl@save@ttdefault}} \def\bbl@FSstore#1#2#3#4{% \bbl@csarg\edef{#2default#1}{#3}% \expandafter\addto\csname extras#1\endcsname{% \let#4#3% \ifx#3\f@family \edef#3{\csname bbl@#2default#1\endcsname}% \fontfamily{#3}\selectfont \else \edef#3{\csname bbl@#2default#1\endcsname}% \fi}% \expandafter\addto\csname noextras#1\endcsname{% \ifx#3\f@family \fontfamily{#4}\selectfont \fi \let#3#4}} \let\bbl@langfeatures\@empty \def\babelFSfeatures{% make sure \fontspec is redefined once \let\bbl@ori@fontspec\fontspec \renewcommand\fontspec[1][]{% \bbl@ori@fontspec[\bbl@langfeatures##1]} \let\babelFSfeatures\bbl@FSfeatures \babelFSfeatures} \def\bbl@FSfeatures#1#2{% \expandafter\addto\csname extras#1\endcsname{% \babel@save\bbl@langfeatures \edef\bbl@langfeatures{#2,}}} \bbl@trace{Redefinitions for bidi layout} \ifx\@eqnnum\@undefined\else \ifx\bbl@attr@dir\@undefined\else \edef\@eqnnum{{% \unexpanded{\ifcase\bbl@attr@dir\else\bbl@textdir\@ne\fi}% \unexpanded\expandafter{\@eqnnum}}} \fi \fi \ifx\bbl@opt@layout\@nnil\endinput\fi % if no layout \ifx\bbl@beforeforeign\leavevmode % A poor test for bidi= \def\bbl@nextfake#1{% non-local changes - always inside a group! \bbl@exp{% \mathdir\the\bodydir #1% Once entered in math, set boxes to restore values \everyvbox{% \the\everyvbox \bodydir\the\bodydir \mathdir\the\mathdir \everyhbox{\the\everyhbox}% \everyvbox{\the\everyvbox}}% \everyhbox{% \the\everyhbox \bodydir\the\bodydir \mathdir\the\mathdir \everyhbox{\the\everyhbox}% \everyvbox{\the\everyvbox}}}}% \def\@hangfrom#1{% \setbox\@tempboxa\hbox{{#1}}% \hangindent\wd\@tempboxa \ifnum\bbl@getluadir{page}=\bbl@getluadir{par}\else \shapemode\@ne \fi \noindent\box\@tempboxa} \fi \IfBabelLayout{tabular} {\def\@tabular{% \leavevmode\hbox\bgroup\bbl@nextfake$% %$ \let\@acol\@tabacol \let\@classz\@tabclassz \let\@classiv\@tabclassiv \let\\\@tabularcr\@tabarray}} {} \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 \leftmargin \parshape \@ne \@totalleftmargin \linewidth \ifnum\bbl@getluadir{page}=\bbl@getluadir{par}\else \shapemode\tw@ \fi \ignorespaces}} {} \IfBabelLayout{counters}% {\def\@textsuperscript#1{{% lua has separate settings for math \m@th \mathdir\pagedir % required with basic-r; ok with default, too \ensuremath{^{\mbox {\fontsize \sf@size \z@ #1}}}}}% \let\bbl@latinarabic=\@arabic \def\@arabic#1{\babelsublr{\bbl@latinarabic#1}}% \@ifpackagewith{babel}{bidi=default}% {\let\bbl@asciiroman=\@roman \def\@roman#1{\babelsublr{\ensureascii{\bbl@asciiroman#1}}}% \let\bbl@asciiRoman=\@Roman \def\@Roman#1{\babelsublr{\ensureascii{\bbl@asciiRoman#1}}}% \def\labelenumii{)\theenumii(}% \def\p@enumiii{\p@enumii)\theenumii(}}{}}{} \bbl@trace{Bidi footnotes} \ifx\bbl@beforeforeign\leavevmode \def\bbl@footnote#1#2#3{% \@ifnextchar[% {\bbl@footnote@o{#1}{#2}{#3}}% {\bbl@footnote@x{#1}{#2}{#3}}} \def\bbl@footnote@x#1#2#3#4{% \bgroup \select@language@x{\bbl@main@language}% \bbl@fn@footnote{#2#1{\ignorespaces#4}#3}% \egroup} \def\bbl@footnote@o#1#2#3[#4]#5{% \bgroup \select@language@x{\bbl@main@language}% \bbl@fn@footnote[#4]{#2#1{\ignorespaces#5}#3}% \egroup} \def\bbl@footnotetext#1#2#3{% \@ifnextchar[% {\bbl@footnotetext@o{#1}{#2}{#3}}% {\bbl@footnotetext@x{#1}{#2}{#3}}} \def\bbl@footnotetext@x#1#2#3#4{% \bgroup \select@language@x{\bbl@main@language}% \bbl@fn@footnotetext{#2#1{\ignorespaces#4}#3}% \egroup} \def\bbl@footnotetext@o#1#2#3[#4]#5{% \bgroup \select@language@x{\bbl@main@language}% \bbl@fn@footnotetext[#4]{#2#1{\ignorespaces#5}#3}% \egroup} \def\BabelFootnote#1#2#3#4{% \ifx\bbl@fn@footnote\@undefined \let\bbl@fn@footnote\footnote \fi \ifx\bbl@fn@footnotetext\@undefined \let\bbl@fn@footnotetext\footnotetext \fi \bbl@ifblank{#2}% {\def#1{\bbl@footnote{\@firstofone}{#3}{#4}} \@namedef{\bbl@stripslash#1text}% {\bbl@footnotetext{\@firstofone}{#3}{#4}}}% {\def#1{\bbl@exp{\\\bbl@footnote{\\\foreignlanguage{#2}}}{#3}{#4}}% \@namedef{\bbl@stripslash#1text}% {\bbl@exp{\\\bbl@footnotetext{\\\foreignlanguage{#2}}}{#3}{#4}}}} \fi \IfBabelLayout{footnotes}% {\BabelFootnote\footnote\languagename{}{}% \BabelFootnote\localfootnote\languagename{}{}% \BabelFootnote\mainfootnote{}{}{}} {} \IfBabelLayout{extras}% {\def\underline#1{% \relax \ifmmode\@@underline{#1}% \else\bbl@nextfake$\@@underline{\hbox{#1}}\m@th$\relax\fi}% \DeclareRobustCommand{\LaTeXe}{\mbox{\m@th \if b\expandafter\@car\f@series\@nil\boldmath\fi \babelsublr{% \LaTeX\kern.15em2\bbl@nextfake$_{\textstyle\varepsilon}$}}}} {} \endinput %% %% End of file `luababel.def'.