You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1081 lines
35 KiB
1081 lines
35 KiB
%%
|
|
%% This is file `babel.sty',
|
|
%% generated with the docstrip utility.
|
|
%%
|
|
%% The original source files were:
|
|
%%
|
|
%% babel.dtx (with options: `package')
|
|
%%
|
|
%%
|
|
%% Copyright (C) 2012-2020 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.
|
|
%%
|
|
|
|
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
|
|
\ProvidesPackage{babel}[2020/07/13 3.47 The Babel package]
|
|
\@ifpackagewith{babel}{debug}
|
|
{\providecommand\bbl@trace[1]{\message{^^J[ #1 ]}}%
|
|
\let\bbl@debug\@firstofone}
|
|
{\providecommand\bbl@trace[1]{}%
|
|
\let\bbl@debug\@gobble}
|
|
\bbl@trace{Basic macros}
|
|
\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@cl#1{\csname bbl@#1@\languagename\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@exp#1{%
|
|
\begingroup
|
|
\let\\\noexpand
|
|
\def\<##1>{\expandafter\noexpand\csname##1\endcsname}%
|
|
\edef\bbl@exp@aux{\endgroup#1}%
|
|
\bbl@exp@aux}
|
|
\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}}
|
|
\begingroup
|
|
\gdef\bbl@ifunset#1{%
|
|
\expandafter\ifx\csname#1\endcsname\relax
|
|
\expandafter\@firstoftwo
|
|
\else
|
|
\expandafter\@secondoftwo
|
|
\fi}
|
|
\bbl@ifunset{ifcsname}%
|
|
{}%
|
|
{\gdef\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}}
|
|
\endgroup
|
|
\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@}}
|
|
\ifx\detokenize\@undefined\else % Unused macros if old Plain TeX
|
|
\bbl@exp{\def\\\bbl@parsedef##1\detokenize{macro:}}#2->#3\relax{%
|
|
\def\bbl@tempa{#1}%
|
|
\def\bbl@tempb{#2}%
|
|
\def\bbl@tempe{#3}}
|
|
\def\bbl@sreplace#1#2#3{%
|
|
\begingroup
|
|
\expandafter\bbl@parsedef\meaning#1\relax
|
|
\def\bbl@tempc{#2}%
|
|
\edef\bbl@tempc{\expandafter\strip@prefix\meaning\bbl@tempc}%
|
|
\def\bbl@tempd{#3}%
|
|
\edef\bbl@tempd{\expandafter\strip@prefix\meaning\bbl@tempd}%
|
|
\bbl@xin@{\bbl@tempc}{\bbl@tempe}% If not in macro, do nothing
|
|
\ifin@
|
|
\bbl@exp{\\\bbl@replace\\\bbl@tempe{\bbl@tempc}{\bbl@tempd}}%
|
|
\def\bbl@tempc{% Expanded an executed below as 'uplevel'
|
|
\\\makeatletter % "internal" macros with @ are assumed
|
|
\\\scantokens{%
|
|
\bbl@tempa\\\@namedef{\bbl@stripslash#1}\bbl@tempb{\bbl@tempe}}%
|
|
\catcode64=\the\catcode64\relax}% Restore @
|
|
\else
|
|
\let\bbl@tempc\@empty % Not \relax
|
|
\fi
|
|
\bbl@exp{% For the 'uplevel' assignments
|
|
\endgroup
|
|
\bbl@tempc}} % empty or expand to set #1 with changes
|
|
\fi
|
|
\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\bbl@bsphack{%
|
|
\ifhmode
|
|
\hskip\z@skip
|
|
\def\bbl@esphack{\loop\ifdim\lastskip>\z@\unskip\repeat\unskip}%
|
|
\else
|
|
\let\bbl@esphack\@empty
|
|
\fi}
|
|
% Temporarily repeat here the code for errors
|
|
\def\bbl@error#1#2{%
|
|
\begingroup
|
|
\def\\{\MessageBreak}%
|
|
\PackageError{babel}{#1}{#2}%
|
|
\endgroup}
|
|
\def\bbl@warning#1{%
|
|
\begingroup
|
|
\def\\{\MessageBreak}%
|
|
\PackageWarning{babel}{#1}%
|
|
\endgroup}
|
|
\def\bbl@infowarn#1{%
|
|
\begingroup
|
|
\def\\{\MessageBreak}%
|
|
\GenericWarning
|
|
{(babel) \@spaces\@spaces\@spaces}%
|
|
{Package babel Info: #1}%
|
|
\endgroup}
|
|
\def\bbl@info#1{%
|
|
\begingroup
|
|
\def\\{\MessageBreak}%
|
|
\PackageInfo{babel}{#1}%
|
|
\endgroup}
|
|
\def\bbl@nocaption{\protect\bbl@nocaption@i}
|
|
\def\bbl@nocaption@i#1#2{% 1: text to be printed 2: caption macro \langXname
|
|
\global\@namedef{#2}{\textbf{?#1?}}%
|
|
\@nameuse{#2}%
|
|
\bbl@warning{%
|
|
\@backslashchar#2 not set. Please, define it\\%
|
|
after the language has been loaded (typically\\%
|
|
in the preamble) with something like:\\%
|
|
\string\renewcommand\@backslashchar#2{..}\\%
|
|
Reported}}
|
|
\def\bbl@tentative{\protect\bbl@tentative@i}
|
|
\def\bbl@tentative@i#1{%
|
|
\bbl@warning{%
|
|
Some functions for '#1' are tentative.\\%
|
|
They might not work as expected and their behavior\\%
|
|
could change in the future.\\%
|
|
Reported}}
|
|
\def\@nolanerr#1{%
|
|
\bbl@error
|
|
{You haven't defined the language #1\space yet.\\%
|
|
Perhaps you misspelled it or your installation\\%
|
|
is not complete}%
|
|
{Your command will be ignored, type <return> to proceed}}
|
|
\def\@nopatterns#1{%
|
|
\bbl@warning
|
|
{No hyphenation patterns were preloaded for\\%
|
|
the language `#1' into the format.\\%
|
|
Please, configure your TeX system to add them and\\%
|
|
rebuild the format. Now I will use the patterns\\%
|
|
preloaded for \bbl@nulllanguage\space instead}}
|
|
% End of errors
|
|
\@ifpackagewith{babel}{silent}
|
|
{\let\bbl@info\@gobble
|
|
\let\bbl@infowarn\@gobble
|
|
\let\bbl@warning\@gobble}
|
|
{}
|
|
\def\AfterBabelLanguage#1{%
|
|
\global\expandafter\bbl@add\csname#1.ldf-h@@k\endcsname}%
|
|
\ifx\bbl@languages\@undefined\else
|
|
\begingroup
|
|
\catcode`\^^I=12
|
|
\@ifpackagewith{babel}{showlanguages}{%
|
|
\begingroup
|
|
\def\bbl@elt#1#2#3#4{\wlog{#2^^I#1^^I#3^^I#4}}%
|
|
\wlog{<*languages>}%
|
|
\bbl@languages
|
|
\wlog{</languages>}%
|
|
\endgroup}{}
|
|
\endgroup
|
|
\def\bbl@elt#1#2#3#4{%
|
|
\ifnum#2=\z@
|
|
\gdef\bbl@nulllanguage{#1}%
|
|
\def\bbl@elt##1##2##3##4{}%
|
|
\fi}%
|
|
\bbl@languages
|
|
\fi%
|
|
\bbl@trace{Defining option 'base'}
|
|
\@ifpackagewith{babel}{base}{%
|
|
\let\bbl@onlyswitch\@empty
|
|
\let\bbl@provide@locale\relax
|
|
\input babel.def
|
|
\let\bbl@onlyswitch\@undefined
|
|
\ifx\directlua\@undefined
|
|
\DeclareOption*{\bbl@patterns{\CurrentOption}}%
|
|
\else
|
|
\input luababel.def
|
|
\DeclareOption*{\bbl@patterns@lua{\CurrentOption}}%
|
|
\fi
|
|
\DeclareOption{base}{}%
|
|
\DeclareOption{showlanguages}{}%
|
|
\ProcessOptions
|
|
\global\expandafter\let\csname opt@babel.sty\endcsname\relax
|
|
\global\expandafter\let\csname ver@babel.sty\endcsname\relax
|
|
\global\let\@ifl@ter@@\@ifl@ter
|
|
\def\@ifl@ter#1#2#3#4#5{\global\let\@ifl@ter\@ifl@ter@@}%
|
|
\endinput}{}%
|
|
\bbl@trace{key=value and another general options}
|
|
\bbl@csarg\let{tempa\expandafter}\csname opt@babel.sty\endcsname
|
|
\def\bbl@tempb#1.#2{%
|
|
#1\ifx\@empty#2\else,\bbl@afterfi\bbl@tempb#2\fi}%
|
|
\def\bbl@tempd#1.#2\@nnil{%
|
|
\ifx\@empty#2%
|
|
\edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1}%
|
|
\else
|
|
\in@{=}{#1}\ifin@
|
|
\edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1.#2}%
|
|
\else
|
|
\edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1}%
|
|
\bbl@csarg\edef{mod@#1}{\bbl@tempb#2}%
|
|
\fi
|
|
\fi}
|
|
\let\bbl@tempc\@empty
|
|
\bbl@foreach\bbl@tempa{\bbl@tempd#1.\@empty\@nnil}
|
|
\expandafter\let\csname opt@babel.sty\endcsname\bbl@tempc
|
|
\DeclareOption{KeepShorthandsActive}{}
|
|
\DeclareOption{activeacute}{}
|
|
\DeclareOption{activegrave}{}
|
|
\DeclareOption{debug}{}
|
|
\DeclareOption{noconfigs}{}
|
|
\DeclareOption{showlanguages}{}
|
|
\DeclareOption{silent}{}
|
|
\DeclareOption{mono}{}
|
|
\DeclareOption{shorthands=off}{\bbl@tempa shorthands=\bbl@tempa}
|
|
\newif\ifbbl@single
|
|
\DeclareOption{selectors=off}{\bbl@singletrue}
|
|
\DeclareOption{safe=none}{\let\bbl@opt@safe\@empty}
|
|
\DeclareOption{safe=bib}{\def\bbl@opt@safe{B}}
|
|
\DeclareOption{safe=ref}{\def\bbl@opt@safe{R}}
|
|
\DeclareOption{math=active}{}
|
|
\DeclareOption{math=normal}{\def\bbl@mathnormal{\noexpand\textormath}}
|
|
\DeclareOption{nocase}{}
|
|
\let\bbl@opt@strings\@nnil % accept strings=value
|
|
\DeclareOption{strings}{\def\bbl@opt@strings{\BabelStringsDefault}}
|
|
\DeclareOption{strings=encoded}{\let\bbl@opt@strings\relax}
|
|
\def\BabelStringsDefault{generic}
|
|
\DeclareOption{hyphenmap=off}{\chardef\bbl@opt@hyphenmap\z@}
|
|
\DeclareOption{hyphenmap=first}{\chardef\bbl@opt@hyphenmap\@ne}
|
|
\DeclareOption{hyphenmap=select}{\chardef\bbl@opt@hyphenmap\tw@}
|
|
\DeclareOption{hyphenmap=other}{\chardef\bbl@opt@hyphenmap\thr@@}
|
|
\DeclareOption{hyphenmap=other*}{\chardef\bbl@opt@hyphenmap4\relax}
|
|
\chardef\bbl@bidimode\z@
|
|
\DeclareOption{bidi=default}{\chardef\bbl@bidimode=\@ne}
|
|
\DeclareOption{bidi=basic}{\chardef\bbl@bidimode=101 }
|
|
\DeclareOption{bidi=basic-r}{\chardef\bbl@bidimode=102 }
|
|
\DeclareOption{bidi=bidi}{\chardef\bbl@bidimode=201 }
|
|
\DeclareOption{bidi=bidi-r}{\chardef\bbl@bidimode=202 }
|
|
\DeclareOption{bidi=bidi-l}{\chardef\bbl@bidimode=203 }
|
|
\let\bbl@opt@shorthands\@nnil
|
|
\let\bbl@opt@config\@nnil
|
|
\let\bbl@opt@main\@nnil
|
|
\let\bbl@opt@headfoot\@nnil
|
|
\let\bbl@opt@layout\@nnil
|
|
\def\bbl@tempa#1=#2\bbl@tempa{%
|
|
\bbl@csarg\ifx{opt@#1}\@nnil
|
|
\bbl@csarg\edef{opt@#1}{#2}%
|
|
\else
|
|
\bbl@error
|
|
{Bad option `#1=#2'. Either you have misspelled the\\%
|
|
key or there is a previous setting of `#1'. Valid\\%
|
|
keys are, among others, `shorthands', `main', `bidi',\\%
|
|
`strings', `config', `headfoot', `safe', `math'.}%
|
|
{See the manual for further details.}
|
|
\fi}
|
|
\let\bbl@language@opts\@empty
|
|
\DeclareOption*{%
|
|
\bbl@xin@{\string=}{\CurrentOption}%
|
|
\ifin@
|
|
\expandafter\bbl@tempa\CurrentOption\bbl@tempa
|
|
\else
|
|
\bbl@add@list\bbl@language@opts{\CurrentOption}%
|
|
\fi}
|
|
\ProcessOptions*
|
|
\bbl@trace{Conditional loading of shorthands}
|
|
\def\bbl@sh@string#1{%
|
|
\ifx#1\@empty\else
|
|
\ifx#1t\string~%
|
|
\else\ifx#1c\string,%
|
|
\else\string#1%
|
|
\fi\fi
|
|
\expandafter\bbl@sh@string
|
|
\fi}
|
|
\ifx\bbl@opt@shorthands\@nnil
|
|
\def\bbl@ifshorthand#1#2#3{#2}%
|
|
\else\ifx\bbl@opt@shorthands\@empty
|
|
\def\bbl@ifshorthand#1#2#3{#3}%
|
|
\else
|
|
\def\bbl@ifshorthand#1{%
|
|
\bbl@xin@{\string#1}{\bbl@opt@shorthands}%
|
|
\ifin@
|
|
\expandafter\@firstoftwo
|
|
\else
|
|
\expandafter\@secondoftwo
|
|
\fi}
|
|
\edef\bbl@opt@shorthands{%
|
|
\expandafter\bbl@sh@string\bbl@opt@shorthands\@empty}%
|
|
\bbl@ifshorthand{'}%
|
|
{\PassOptionsToPackage{activeacute}{babel}}{}
|
|
\bbl@ifshorthand{`}%
|
|
{\PassOptionsToPackage{activegrave}{babel}}{}
|
|
\fi\fi
|
|
\ifx\bbl@opt@headfoot\@nnil\else
|
|
\g@addto@macro\@resetactivechars{%
|
|
\set@typeset@protect
|
|
\expandafter\select@language@x\expandafter{\bbl@opt@headfoot}%
|
|
\let\protect\noexpand}
|
|
\fi
|
|
\ifx\bbl@opt@safe\@undefined
|
|
\def\bbl@opt@safe{BR}
|
|
\fi
|
|
\ifx\bbl@opt@main\@nnil\else
|
|
\edef\bbl@language@opts{%
|
|
\ifx\bbl@language@opts\@empty\else\bbl@language@opts,\fi
|
|
\bbl@opt@main}
|
|
\fi
|
|
\bbl@trace{Defining IfBabelLayout}
|
|
\ifx\bbl@opt@layout\@nnil
|
|
\newcommand\IfBabelLayout[3]{#3}%
|
|
\else
|
|
\newcommand\IfBabelLayout[1]{%
|
|
\@expandtwoargs\in@{.#1.}{.\bbl@opt@layout.}%
|
|
\ifin@
|
|
\expandafter\@firstoftwo
|
|
\else
|
|
\expandafter\@secondoftwo
|
|
\fi}
|
|
\fi
|
|
\input babel.def
|
|
\bbl@trace{Cross referencing macros}
|
|
\ifx\bbl@opt@safe\@empty\else
|
|
\def\@newl@bel#1#2#3{%
|
|
{\@safe@activestrue
|
|
\bbl@ifunset{#1@#2}%
|
|
\relax
|
|
{\gdef\@multiplelabels{%
|
|
\@latex@warning@no@line{There were multiply-defined labels}}%
|
|
\@latex@warning@no@line{Label `#2' multiply defined}}%
|
|
\global\@namedef{#1@#2}{#3}}}
|
|
\CheckCommand*\@testdef[3]{%
|
|
\def\reserved@a{#3}%
|
|
\expandafter\ifx\csname#1@#2\endcsname\reserved@a
|
|
\else
|
|
\@tempswatrue
|
|
\fi}
|
|
\def\@testdef#1#2#3{% TODO. With @samestring?
|
|
\@safe@activestrue
|
|
\expandafter\let\expandafter\bbl@tempa\csname #1@#2\endcsname
|
|
\def\bbl@tempb{#3}%
|
|
\@safe@activesfalse
|
|
\ifx\bbl@tempa\relax
|
|
\else
|
|
\edef\bbl@tempa{\expandafter\strip@prefix\meaning\bbl@tempa}%
|
|
\fi
|
|
\edef\bbl@tempb{\expandafter\strip@prefix\meaning\bbl@tempb}%
|
|
\ifx\bbl@tempa\bbl@tempb
|
|
\else
|
|
\@tempswatrue
|
|
\fi}
|
|
\fi
|
|
\bbl@xin@{R}\bbl@opt@safe
|
|
\ifin@
|
|
\bbl@redefinerobust\ref#1{%
|
|
\@safe@activestrue\org@ref{#1}\@safe@activesfalse}
|
|
\bbl@redefinerobust\pageref#1{%
|
|
\@safe@activestrue\org@pageref{#1}\@safe@activesfalse}
|
|
\else
|
|
\let\org@ref\ref
|
|
\let\org@pageref\pageref
|
|
\fi
|
|
\bbl@xin@{B}\bbl@opt@safe
|
|
\ifin@
|
|
\bbl@redefine\@citex[#1]#2{%
|
|
\@safe@activestrue\edef\@tempa{#2}\@safe@activesfalse
|
|
\org@@citex[#1]{\@tempa}}
|
|
\AtBeginDocument{%
|
|
\@ifpackageloaded{natbib}{%
|
|
\def\@citex[#1][#2]#3{%
|
|
\@safe@activestrue\edef\@tempa{#3}\@safe@activesfalse
|
|
\org@@citex[#1][#2]{\@tempa}}%
|
|
}{}}
|
|
\AtBeginDocument{%
|
|
\@ifpackageloaded{cite}{%
|
|
\def\@citex[#1]#2{%
|
|
\@safe@activestrue\org@@citex[#1]{#2}\@safe@activesfalse}%
|
|
}{}}
|
|
\bbl@redefine\nocite#1{%
|
|
\@safe@activestrue\org@nocite{#1}\@safe@activesfalse}
|
|
\bbl@redefine\bibcite{%
|
|
\bbl@cite@choice
|
|
\bibcite}
|
|
\def\bbl@bibcite#1#2{%
|
|
\org@bibcite{#1}{\@safe@activesfalse#2}}
|
|
\def\bbl@cite@choice{%
|
|
\global\let\bibcite\bbl@bibcite
|
|
\@ifpackageloaded{natbib}{\global\let\bibcite\org@bibcite}{}%
|
|
\@ifpackageloaded{cite}{\global\let\bibcite\org@bibcite}{}%
|
|
\global\let\bbl@cite@choice\relax}
|
|
\AtBeginDocument{\bbl@cite@choice}
|
|
\bbl@redefine\@bibitem#1{%
|
|
\@safe@activestrue\org@@bibitem{#1}\@safe@activesfalse}
|
|
\else
|
|
\let\org@nocite\nocite
|
|
\let\org@@citex\@citex
|
|
\let\org@bibcite\bibcite
|
|
\let\org@@bibitem\@bibitem
|
|
\fi
|
|
\bbl@trace{Marks}
|
|
\IfBabelLayout{sectioning}
|
|
{\ifx\bbl@opt@headfoot\@nnil
|
|
\g@addto@macro\@resetactivechars{%
|
|
\set@typeset@protect
|
|
\expandafter\select@language@x\expandafter{\bbl@main@language}%
|
|
\let\protect\noexpand
|
|
\edef\thepage{% TODO. Only with bidi. See also above
|
|
\noexpand\babelsublr{\unexpanded\expandafter{\thepage}}}}%
|
|
\fi}
|
|
{\ifbbl@single\else
|
|
\bbl@ifunset{markright }\bbl@redefine\bbl@redefinerobust
|
|
\markright#1{%
|
|
\bbl@ifblank{#1}%
|
|
{\org@markright{}}%
|
|
{\toks@{#1}%
|
|
\bbl@exp{%
|
|
\\\org@markright{\\\protect\\\foreignlanguage{\languagename}%
|
|
{\\\protect\\\bbl@restore@actives\the\toks@}}}}}%
|
|
\ifx\@mkboth\markboth
|
|
\def\bbl@tempc{\let\@mkboth\markboth}
|
|
\else
|
|
\def\bbl@tempc{}
|
|
\fi
|
|
\bbl@ifunset{markboth }\bbl@redefine\bbl@redefinerobust
|
|
\markboth#1#2{%
|
|
\protected@edef\bbl@tempb##1{%
|
|
\protect\foreignlanguage
|
|
{\languagename}{\protect\bbl@restore@actives##1}}%
|
|
\bbl@ifblank{#1}%
|
|
{\toks@{}}%
|
|
{\toks@\expandafter{\bbl@tempb{#1}}}%
|
|
\bbl@ifblank{#2}%
|
|
{\@temptokena{}}%
|
|
{\@temptokena\expandafter{\bbl@tempb{#2}}}%
|
|
\bbl@exp{\\\org@markboth{\the\toks@}{\the\@temptokena}}}
|
|
\bbl@tempc
|
|
\fi} % end ifbbl@single, end \IfBabelLayout
|
|
\bbl@trace{Preventing clashes with other packages}
|
|
\bbl@xin@{R}\bbl@opt@safe
|
|
\ifin@
|
|
\AtBeginDocument{%
|
|
\@ifpackageloaded{ifthen}{%
|
|
\bbl@redefine@long\ifthenelse#1#2#3{%
|
|
\let\bbl@temp@pref\pageref
|
|
\let\pageref\org@pageref
|
|
\let\bbl@temp@ref\ref
|
|
\let\ref\org@ref
|
|
\@safe@activestrue
|
|
\org@ifthenelse{#1}%
|
|
{\let\pageref\bbl@temp@pref
|
|
\let\ref\bbl@temp@ref
|
|
\@safe@activesfalse
|
|
#2}%
|
|
{\let\pageref\bbl@temp@pref
|
|
\let\ref\bbl@temp@ref
|
|
\@safe@activesfalse
|
|
#3}%
|
|
}%
|
|
}{}%
|
|
}
|
|
\AtBeginDocument{%
|
|
\@ifpackageloaded{varioref}{%
|
|
\bbl@redefine\@@vpageref#1[#2]#3{%
|
|
\@safe@activestrue
|
|
\org@@@vpageref{#1}[#2]{#3}%
|
|
\@safe@activesfalse}%
|
|
\bbl@redefine\vrefpagenum#1#2{%
|
|
\@safe@activestrue
|
|
\org@vrefpagenum{#1}{#2}%
|
|
\@safe@activesfalse}%
|
|
\expandafter\def\csname Ref \endcsname#1{%
|
|
\protected@edef\@tempa{\org@ref{#1}}\expandafter\MakeUppercase\@tempa}
|
|
}{}%
|
|
}
|
|
\fi
|
|
\AtEndOfPackage{%
|
|
\AtBeginDocument{%
|
|
\@ifpackageloaded{hhline}%
|
|
{\expandafter\ifx\csname normal@char\string:\endcsname\relax
|
|
\else
|
|
\makeatletter
|
|
\def\@currname{hhline}\input{hhline.sty}\makeatother
|
|
\fi}%
|
|
{}}}
|
|
\AtBeginDocument{%
|
|
\ifx\pdfstringdefDisableCommands\@undefined\else
|
|
\pdfstringdefDisableCommands{\languageshorthands{system}}%
|
|
\fi}
|
|
\DeclareRobustCommand{\FOREIGNLANGUAGE}[1]{%
|
|
\lowercase{\foreignlanguage{#1}}}
|
|
\def\substitutefontfamily#1#2#3{%
|
|
\lowercase{\immediate\openout15=#1#2.fd\relax}%
|
|
\immediate\write15{%
|
|
\string\ProvidesFile{#1#2.fd}%
|
|
[\the\year/\two@digits{\the\month}/\two@digits{\the\day}
|
|
\space generated font description file]^^J
|
|
\string\DeclareFontFamily{#1}{#2}{}^^J
|
|
\string\DeclareFontShape{#1}{#2}{m}{n}{<->ssub * #3/m/n}{}^^J
|
|
\string\DeclareFontShape{#1}{#2}{m}{it}{<->ssub * #3/m/it}{}^^J
|
|
\string\DeclareFontShape{#1}{#2}{m}{sl}{<->ssub * #3/m/sl}{}^^J
|
|
\string\DeclareFontShape{#1}{#2}{m}{sc}{<->ssub * #3/m/sc}{}^^J
|
|
\string\DeclareFontShape{#1}{#2}{b}{n}{<->ssub * #3/bx/n}{}^^J
|
|
\string\DeclareFontShape{#1}{#2}{b}{it}{<->ssub * #3/bx/it}{}^^J
|
|
\string\DeclareFontShape{#1}{#2}{b}{sl}{<->ssub * #3/bx/sl}{}^^J
|
|
\string\DeclareFontShape{#1}{#2}{b}{sc}{<->ssub * #3/bx/sc}{}^^J
|
|
}%
|
|
\closeout15
|
|
}
|
|
\@onlypreamble\substitutefontfamily
|
|
\bbl@trace{Encoding and fonts}
|
|
\newcommand\BabelNonASCII{LGR,X2,OT2,OT3,OT6,LHE,LWN,LMA,LMC,LMS,LMU,PU,PD1}
|
|
\newcommand\BabelNonText{TS1,T3,TS3}
|
|
\let\org@TeX\TeX
|
|
\let\org@LaTeX\LaTeX
|
|
\let\ensureascii\@firstofone
|
|
\AtBeginDocument{%
|
|
\in@false
|
|
\bbl@foreach\BabelNonASCII{% is there a text non-ascii enc?
|
|
\ifin@\else
|
|
\lowercase{\bbl@xin@{,#1enc.def,}{,\@filelist,}}%
|
|
\fi}%
|
|
\ifin@ % if a text non-ascii has been loaded
|
|
\def\ensureascii#1{{\fontencoding{OT1}\selectfont#1}}%
|
|
\DeclareTextCommandDefault{\TeX}{\org@TeX}%
|
|
\DeclareTextCommandDefault{\LaTeX}{\org@LaTeX}%
|
|
\def\bbl@tempb#1\@@{\uppercase{\bbl@tempc#1}ENC.DEF\@empty\@@}%
|
|
\def\bbl@tempc#1ENC.DEF#2\@@{%
|
|
\ifx\@empty#2\else
|
|
\bbl@ifunset{T@#1}%
|
|
{}%
|
|
{\bbl@xin@{,#1,}{,\BabelNonASCII,\BabelNonText,}%
|
|
\ifin@
|
|
\DeclareTextCommand{\TeX}{#1}{\ensureascii{\org@TeX}}%
|
|
\DeclareTextCommand{\LaTeX}{#1}{\ensureascii{\org@LaTeX}}%
|
|
\else
|
|
\def\ensureascii##1{{\fontencoding{#1}\selectfont##1}}%
|
|
\fi}%
|
|
\fi}%
|
|
\bbl@foreach\@filelist{\bbl@tempb#1\@@}% TODO - \@@ de mas??
|
|
\bbl@xin@{,\cf@encoding,}{,\BabelNonASCII,\BabelNonText,}%
|
|
\ifin@\else
|
|
\edef\ensureascii#1{{%
|
|
\noexpand\fontencoding{\cf@encoding}\noexpand\selectfont#1}}%
|
|
\fi
|
|
\fi}
|
|
\AtEndOfPackage{\edef\latinencoding{\cf@encoding}}
|
|
\AtBeginDocument{%
|
|
\@ifpackageloaded{fontspec}%
|
|
{\xdef\latinencoding{%
|
|
\ifx\UTFencname\@undefined
|
|
EU\ifcase\bbl@engine\or2\or1\fi
|
|
\else
|
|
\UTFencname
|
|
\fi}}%
|
|
{\gdef\latinencoding{OT1}%
|
|
\ifx\cf@encoding\bbl@t@one
|
|
\xdef\latinencoding{\bbl@t@one}%
|
|
\else
|
|
\ifx\@fontenc@load@list\@undefined
|
|
\@ifl@aded{def}{t1enc}{\xdef\latinencoding{\bbl@t@one}}{}%
|
|
\else
|
|
\def\@elt#1{,#1,}%
|
|
\edef\bbl@tempa{\expandafter\@gobbletwo\@fontenc@load@list}%
|
|
\let\@elt\relax
|
|
\bbl@xin@{,T1,}\bbl@tempa
|
|
\ifin@
|
|
\xdef\latinencoding{\bbl@t@one}%
|
|
\fi
|
|
\fi
|
|
\fi}}
|
|
\DeclareRobustCommand{\latintext}{%
|
|
\fontencoding{\latinencoding}\selectfont
|
|
\def\encodingdefault{\latinencoding}}
|
|
\ifx\@undefined\DeclareTextFontCommand
|
|
\DeclareRobustCommand{\textlatin}[1]{\leavevmode{\latintext #1}}
|
|
\else
|
|
\DeclareTextFontCommand{\textlatin}{\latintext}
|
|
\fi
|
|
\ifodd\bbl@engine
|
|
\def\bbl@activate@preotf{%
|
|
\let\bbl@activate@preotf\relax % only once
|
|
\directlua{
|
|
Babel = Babel or {}
|
|
%
|
|
function Babel.pre_otfload_v(head)
|
|
if Babel.numbers and Babel.digits_mapped then
|
|
head = Babel.numbers(head)
|
|
end
|
|
if Babel.bidi_enabled then
|
|
head = Babel.bidi(head, false, dir)
|
|
end
|
|
return head
|
|
end
|
|
%
|
|
function Babel.pre_otfload_h(head, gc, sz, pt, dir)
|
|
if Babel.numbers and Babel.digits_mapped then
|
|
head = Babel.numbers(head)
|
|
end
|
|
if Babel.bidi_enabled then
|
|
head = Babel.bidi(head, false, dir)
|
|
end
|
|
return head
|
|
end
|
|
%
|
|
luatexbase.add_to_callback('pre_linebreak_filter',
|
|
Babel.pre_otfload_v,
|
|
'Babel.pre_otfload_v',
|
|
luatexbase.priority_in_callback('pre_linebreak_filter',
|
|
'luaotfload.node_processor') or nil)
|
|
%
|
|
luatexbase.add_to_callback('hpack_filter',
|
|
Babel.pre_otfload_h,
|
|
'Babel.pre_otfload_h',
|
|
luatexbase.priority_in_callback('hpack_filter',
|
|
'luaotfload.node_processor') or nil)
|
|
}}
|
|
\fi
|
|
\bbl@trace{Loading basic (internal) bidi support}
|
|
\ifodd\bbl@engine
|
|
\ifnum\bbl@bidimode>100 \ifnum\bbl@bidimode<200
|
|
\let\bbl@beforeforeign\leavevmode
|
|
\AtEndOfPackage{\EnableBabelHook{babel-bidi}}
|
|
\RequirePackage{luatexbase}
|
|
\bbl@activate@preotf
|
|
\directlua{
|
|
require('babel-data-bidi.lua')
|
|
\ifcase\expandafter\@gobbletwo\the\bbl@bidimode\or
|
|
require('babel-bidi-basic.lua')
|
|
\or
|
|
require('babel-bidi-basic-r.lua')
|
|
\fi}
|
|
% TODO - to locale_props, not as separate attribute
|
|
\newattribute\bbl@attr@dir
|
|
% TODO. I don't like it, hackish:
|
|
\bbl@exp{\output{\bodydir\pagedir\the\output}}
|
|
\AtEndOfPackage{\EnableBabelHook{babel-bidi}}
|
|
\fi\fi
|
|
\else
|
|
\ifnum\bbl@bidimode>100 \ifnum\bbl@bidimode<200
|
|
\bbl@error
|
|
{The bidi method `basic' is available only in\\%
|
|
luatex. I'll continue with `bidi=default', so\\%
|
|
expect wrong results}%
|
|
{See the manual for further details.}%
|
|
\let\bbl@beforeforeign\leavevmode
|
|
\AtEndOfPackage{%
|
|
\EnableBabelHook{babel-bidi}%
|
|
\bbl@xebidipar}
|
|
\fi\fi
|
|
\def\bbl@loadxebidi#1{%
|
|
\ifx\RTLfootnotetext\@undefined
|
|
\AtEndOfPackage{%
|
|
\EnableBabelHook{babel-bidi}%
|
|
\ifx\fontspec\@undefined
|
|
\usepackage{fontspec}% bidi needs fontspec
|
|
\fi
|
|
\usepackage#1{bidi}}%
|
|
\fi}
|
|
\ifnum\bbl@bidimode>200
|
|
\ifcase\expandafter\@gobbletwo\the\bbl@bidimode\or
|
|
\bbl@tentative{bidi=bidi}
|
|
\bbl@loadxebidi{}
|
|
\or
|
|
\bbl@tentative{bidi=bidi-r}
|
|
\bbl@loadxebidi{[rldocument]}
|
|
\or
|
|
\bbl@tentative{bidi=bidi-l}
|
|
\bbl@loadxebidi{}
|
|
\fi
|
|
\fi
|
|
\fi
|
|
\ifnum\bbl@bidimode=\@ne
|
|
\let\bbl@beforeforeign\leavevmode
|
|
\ifodd\bbl@engine
|
|
\newattribute\bbl@attr@dir
|
|
\bbl@exp{\output{\bodydir\pagedir\the\output}}%
|
|
\fi
|
|
\AtEndOfPackage{%
|
|
\EnableBabelHook{babel-bidi}%
|
|
\ifodd\bbl@engine\else
|
|
\bbl@xebidipar
|
|
\fi}
|
|
\fi
|
|
\bbl@trace{Macros to switch the text direction}
|
|
\def\bbl@alscripts{,Arabic,Syriac,Thaana,}
|
|
\def\bbl@rscripts{% TODO. Base on codes ??
|
|
,Imperial Aramaic,Avestan,Cypriot,Hatran,Hebrew,%
|
|
Old Hungarian,Old Hungarian,Lydian,Mandaean,Manichaean,%
|
|
Manichaean,Meroitic Cursive,Meroitic,Old North Arabian,%
|
|
Nabataean,N'Ko,Orkhon,Palmyrene,Inscriptional Pahlavi,%
|
|
Psalter Pahlavi,Phoenician,Inscriptional Parthian,Samaritan,%
|
|
Old South Arabian,}%
|
|
\def\bbl@provide@dirs#1{%
|
|
\bbl@xin@{\csname bbl@sname@#1\endcsname}{\bbl@alscripts\bbl@rscripts}%
|
|
\ifin@
|
|
\global\bbl@csarg\chardef{wdir@#1}\@ne
|
|
\bbl@xin@{\csname bbl@sname@#1\endcsname}{\bbl@alscripts}%
|
|
\ifin@
|
|
\global\bbl@csarg\chardef{wdir@#1}\tw@ % useless in xetex
|
|
\fi
|
|
\else
|
|
\global\bbl@csarg\chardef{wdir@#1}\z@
|
|
\fi
|
|
\ifodd\bbl@engine
|
|
\bbl@csarg\ifcase{wdir@#1}%
|
|
\directlua{ Babel.locale_props[\the\localeid].textdir = 'l' }%
|
|
\or
|
|
\directlua{ Babel.locale_props[\the\localeid].textdir = 'r' }%
|
|
\or
|
|
\directlua{ Babel.locale_props[\the\localeid].textdir = 'al' }%
|
|
\fi
|
|
\fi}
|
|
\def\bbl@switchdir{%
|
|
\bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}%
|
|
\bbl@ifunset{bbl@wdir@\languagename}{\bbl@provide@dirs{\languagename}}{}%
|
|
\bbl@exp{\\\bbl@setdirs\bbl@cl{wdir}}}
|
|
\def\bbl@setdirs#1{% TODO - math
|
|
\ifcase\bbl@select@type % TODO - strictly, not the right test
|
|
\bbl@bodydir{#1}%
|
|
\bbl@pardir{#1}%
|
|
\fi
|
|
\bbl@textdir{#1}}
|
|
\AddBabelHook{babel-bidi}{afterextras}{\bbl@switchdir}
|
|
\DisableBabelHook{babel-bidi}
|
|
\ifodd\bbl@engine % luatex=1
|
|
\chardef\bbl@thetextdir\z@
|
|
\chardef\bbl@thepardir\z@
|
|
\def\bbl@getluadir#1{%
|
|
\directlua{
|
|
if tex.#1dir == 'TLT' then
|
|
tex.sprint('0')
|
|
elseif tex.#1dir == 'TRT' then
|
|
tex.sprint('1')
|
|
end}}
|
|
\def\bbl@setluadir#1#2#3{% 1=text/par.. 2=\textdir.. 3=0 lr/1 rl
|
|
\ifcase#3\relax
|
|
\ifcase\bbl@getluadir{#1}\relax\else
|
|
#2 TLT\relax
|
|
\fi
|
|
\else
|
|
\ifcase\bbl@getluadir{#1}\relax
|
|
#2 TRT\relax
|
|
\fi
|
|
\fi}
|
|
\def\bbl@textdir#1{%
|
|
\bbl@setluadir{text}\textdir{#1}%
|
|
\chardef\bbl@thetextdir#1\relax
|
|
\setattribute\bbl@attr@dir{\numexpr\bbl@thepardir*3+#1}}
|
|
\def\bbl@pardir#1{%
|
|
\bbl@setluadir{par}\pardir{#1}%
|
|
\chardef\bbl@thepardir#1\relax}
|
|
\def\bbl@bodydir{\bbl@setluadir{body}\bodydir}
|
|
\def\bbl@pagedir{\bbl@setluadir{page}\pagedir}
|
|
\def\bbl@dirparastext{\pardir\the\textdir\relax}% %%%%
|
|
% Sadly, we have to deal with boxes in math with basic.
|
|
% Activated every math with the package option bidi=:
|
|
\def\bbl@mathboxdir{%
|
|
\ifcase\bbl@thetextdir\relax
|
|
\everyhbox{\textdir TLT\relax}%
|
|
\else
|
|
\everyhbox{\textdir TRT\relax}%
|
|
\fi}
|
|
\frozen@everymath\expandafter{%
|
|
\expandafter\bbl@mathboxdir\the\frozen@everymath}
|
|
\frozen@everydisplay\expandafter{%
|
|
\expandafter\bbl@mathboxdir\the\frozen@everydisplay}
|
|
\else % pdftex=0, xetex=2
|
|
\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}}
|
|
\ifnum\bbl@bidimode>200
|
|
\let\bbl@textdir@i\@gobbletwo
|
|
\let\bbl@xebidipar\@empty
|
|
\AddBabelHook{bidi}{foreign}{%
|
|
\def\bbl@tempa{\def\BabelText####1}%
|
|
\ifcase\bbl@thetextdir
|
|
\expandafter\bbl@tempa\expandafter{\BabelText{\LR{##1}}}%
|
|
\else
|
|
\expandafter\bbl@tempa\expandafter{\BabelText{\RL{##1}}}%
|
|
\fi}
|
|
\def\bbl@pardir#1{\ifcase#1\relax\setLR\else\setRL\fi}
|
|
\fi
|
|
\fi
|
|
\DeclareRobustCommand\babelsublr[1]{\leavevmode{\bbl@textdir\z@#1}}
|
|
\AtBeginDocument{%
|
|
\ifx\pdfstringdefDisableCommands\@undefined\else
|
|
\ifx\pdfstringdefDisableCommands\relax\else
|
|
\pdfstringdefDisableCommands{\let\babelsublr\@firstofone}%
|
|
\fi
|
|
\fi}
|
|
\bbl@trace{Local Language Configuration}
|
|
\ifx\loadlocalcfg\@undefined
|
|
\@ifpackagewith{babel}{noconfigs}%
|
|
{\let\loadlocalcfg\@gobble}%
|
|
{\def\loadlocalcfg#1{%
|
|
\InputIfFileExists{#1.cfg}%
|
|
{\typeout{*************************************^^J%
|
|
* Local config file #1.cfg used^^J%
|
|
*}}%
|
|
\@empty}}
|
|
\fi
|
|
\ifx\@unexpandable@protect\@undefined
|
|
\def\@unexpandable@protect{\noexpand\protect\noexpand}
|
|
\long\def\protected@write#1#2#3{%
|
|
\begingroup
|
|
\let\thepage\relax
|
|
#2%
|
|
\let\protect\@unexpandable@protect
|
|
\edef\reserved@a{\write#1{#3}}%
|
|
\reserved@a
|
|
\endgroup
|
|
\if@nobreak\ifvmode\nobreak\fi\fi}
|
|
\fi
|
|
\bbl@trace{Language options}
|
|
\let\bbl@afterlang\relax
|
|
\let\BabelModifiers\relax
|
|
\let\bbl@loaded\@empty
|
|
\def\bbl@load@language#1{%
|
|
\InputIfFileExists{#1.ldf}%
|
|
{\edef\bbl@loaded{\CurrentOption
|
|
\ifx\bbl@loaded\@empty\else,\bbl@loaded\fi}%
|
|
\expandafter\let\expandafter\bbl@afterlang
|
|
\csname\CurrentOption.ldf-h@@k\endcsname
|
|
\expandafter\let\expandafter\BabelModifiers
|
|
\csname bbl@mod@\CurrentOption\endcsname}%
|
|
{\bbl@error{%
|
|
Unknown option `\CurrentOption'. Either you misspelled it\\%
|
|
or the language definition file \CurrentOption.ldf was not found}{%
|
|
Valid options are: shorthands=, KeepShorthandsActive,\\%
|
|
activeacute, activegrave, noconfigs, safe=, main=, math=\\%
|
|
headfoot=, strings=, config=, hyphenmap=, or a language name.}}}
|
|
\def\bbl@try@load@lang#1#2#3{%
|
|
\IfFileExists{\CurrentOption.ldf}%
|
|
{\bbl@load@language{\CurrentOption}}%
|
|
{#1\bbl@load@language{#2}#3}}
|
|
\DeclareOption{afrikaans}{\bbl@try@load@lang{}{dutch}{}}
|
|
\DeclareOption{hebrew}{%
|
|
\input{rlbabel.def}%
|
|
\bbl@load@language{hebrew}}
|
|
\DeclareOption{hungarian}{\bbl@try@load@lang{}{magyar}{}}
|
|
\DeclareOption{lowersorbian}{\bbl@try@load@lang{}{lsorbian}{}}
|
|
\DeclareOption{nynorsk}{\bbl@try@load@lang{}{norsk}{}}
|
|
\DeclareOption{polutonikogreek}{%
|
|
\bbl@try@load@lang{}{greek}{\languageattribute{greek}{polutoniko}}}
|
|
\DeclareOption{russian}{\bbl@try@load@lang{}{russianb}{}}
|
|
\DeclareOption{ukrainian}{\bbl@try@load@lang{}{ukraineb}{}}
|
|
\DeclareOption{uppersorbian}{\bbl@try@load@lang{}{usorbian}{}}
|
|
\ifx\bbl@opt@config\@nnil
|
|
\@ifpackagewith{babel}{noconfigs}{}%
|
|
{\InputIfFileExists{bblopts.cfg}%
|
|
{\typeout{*************************************^^J%
|
|
* Local config file bblopts.cfg used^^J%
|
|
*}}%
|
|
{}}%
|
|
\else
|
|
\InputIfFileExists{\bbl@opt@config.cfg}%
|
|
{\typeout{*************************************^^J%
|
|
* Local config file \bbl@opt@config.cfg used^^J%
|
|
*}}%
|
|
{\bbl@error{%
|
|
Local config file `\bbl@opt@config.cfg' not found}{%
|
|
Perhaps you misspelled it.}}%
|
|
\fi
|
|
\bbl@for\bbl@tempa\bbl@language@opts{%
|
|
\bbl@ifunset{ds@\bbl@tempa}%
|
|
{\edef\bbl@tempb{%
|
|
\noexpand\DeclareOption
|
|
{\bbl@tempa}%
|
|
{\noexpand\bbl@load@language{\bbl@tempa}}}%
|
|
\bbl@tempb}%
|
|
\@empty}
|
|
\bbl@foreach\@classoptionslist{%
|
|
\bbl@ifunset{ds@#1}%
|
|
{\IfFileExists{#1.ldf}%
|
|
{\DeclareOption{#1}{\bbl@load@language{#1}}}%
|
|
{}}%
|
|
{}}
|
|
\ifx\bbl@opt@main\@nnil\else
|
|
\expandafter
|
|
\let\expandafter\bbl@loadmain\csname ds@\bbl@opt@main\endcsname
|
|
\DeclareOption{\bbl@opt@main}{}
|
|
\fi
|
|
\def\AfterBabelLanguage#1{%
|
|
\bbl@ifsamestring\CurrentOption{#1}{\global\bbl@add\bbl@afterlang}{}}
|
|
\DeclareOption*{}
|
|
\ProcessOptions*
|
|
\bbl@trace{Option 'main'}
|
|
\ifx\bbl@opt@main\@nnil
|
|
\edef\bbl@tempa{\@classoptionslist,\bbl@language@opts}
|
|
\let\bbl@tempc\@empty
|
|
\bbl@for\bbl@tempb\bbl@tempa{%
|
|
\bbl@xin@{,\bbl@tempb,}{,\bbl@loaded,}%
|
|
\ifin@\edef\bbl@tempc{\bbl@tempb}\fi}
|
|
\def\bbl@tempa#1,#2\@nnil{\def\bbl@tempb{#1}}
|
|
\expandafter\bbl@tempa\bbl@loaded,\@nnil
|
|
\ifx\bbl@tempb\bbl@tempc\else
|
|
\bbl@warning{%
|
|
Last declared language option is `\bbl@tempc',\\%
|
|
but the last processed one was `\bbl@tempb'.\\%
|
|
The main language cannot be set as both a global\\%
|
|
and a package option. Use `main=\bbl@tempc' as\\%
|
|
option. Reported}%
|
|
\fi
|
|
\else
|
|
\DeclareOption{\bbl@opt@main}{\bbl@loadmain}
|
|
\ExecuteOptions{\bbl@opt@main}
|
|
\DeclareOption*{}
|
|
\ProcessOptions*
|
|
\fi
|
|
\def\AfterBabelLanguage{%
|
|
\bbl@error
|
|
{Too late for \string\AfterBabelLanguage}%
|
|
{Languages have been loaded, so I can do nothing}}
|
|
\ifx\bbl@main@language\@undefined
|
|
\bbl@info{%
|
|
You haven't specified a language. I'll use 'nil'\\%
|
|
as the main language. Reported}
|
|
\bbl@load@language{nil}
|
|
\fi
|
|
|
|
\endinput
|
|
%%
|
|
%% End of file `babel.sty'.
|
|
|