diff options
author | Karl Berry <karl@freefriends.org> | 2020-10-03 21:50:00 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-10-03 21:50:00 +0000 |
commit | 310a23d36634820b4ea52d65bbc37810e5265929 (patch) | |
tree | 36418c2a73eba43af0e0df2a175db643cf315dd2 /Master/texmf-dist/tex/generic/babel/babel.sty | |
parent | 00a39cac37f80a75dbdf467250d8bf75cecb4db6 (diff) |
babel (3oct20)
git-svn-id: svn://tug.org/texlive/trunk@56531 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/babel/babel.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/babel/babel.sty | 139 |
1 files changed, 109 insertions, 30 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/babel.sty b/Master/texmf-dist/tex/generic/babel/babel.sty index 7cd6d69fe7b..29e5321158a 100644 --- a/Master/texmf-dist/tex/generic/babel/babel.sty +++ b/Master/texmf-dist/tex/generic/babel/babel.sty @@ -33,7 +33,7 @@ %% \NeedsTeXFormat{LaTeX2e}[2005/12/01] -\ProvidesPackage{babel}[2020/09/01 3.48 The Babel package] +\ProvidesPackage{babel}[2020/10/03 3.49 The Babel package] \@ifpackagewith{babel}{debug} {\providecommand\bbl@trace[1]{\message{^^J[ #1 ]}}% \let\bbl@debug\@firstofone} @@ -106,6 +106,8 @@ \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@ifset#1#2#3{% + \bbl@ifunset{#1}{#3}{\bbl@exp{\\\bbl@ifblank{#1}}{#3}{#2}}} \def\bbl@forkv#1#2{% \def\bbl@kvcmd##1##2##3{#2}% \bbl@kvnext#1,\@nil,} @@ -194,6 +196,18 @@ \else \let\bbl@esphack\@empty \fi} +\def\bbl@cased{% + \ifx\oe\OE + \expandafter\in@\expandafter + {\expandafter\OE\expandafter}\expandafter{\oe}% + \ifin@ + \bbl@afterelse\expandafter\MakeUppercase + \else + \bbl@afterfi\expandafter\MakeLowercase + \fi + \else + \expandafter\@firstofone + \fi} % Temporarily repeat here the code for errors \def\bbl@error#1#2{% \begingroup @@ -295,17 +309,24 @@ \endinput}{}% \bbl@trace{key=value and another general options} \bbl@csarg\let{tempa\expandafter}\csname opt@babel.sty\endcsname -\def\bbl@tempb#1.#2{% +\def\bbl@tempb#1.#2{% Remove trailing dot #1\ifx\@empty#2\else,\bbl@afterfi\bbl@tempb#2\fi}% -\def\bbl@tempd#1.#2\@nnil{% +\def\bbl@tempd#1.#2\@nnil{% TODO. Refactor lists? \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}% + \in@{,provide,}{,#1,}% + \ifin@ + \edef\bbl@tempc{% + \ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1.\bbl@tempb#2}% \else - \edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1}% - \bbl@csarg\edef{mod@#1}{\bbl@tempb#2}% + \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 \fi} \let\bbl@tempc\@empty @@ -320,8 +341,16 @@ \DeclareOption{silent}{} \DeclareOption{mono}{} \DeclareOption{shorthands=off}{\bbl@tempa shorthands=\bbl@tempa} +\chardef\bbl@iniflag\z@ +\DeclareOption{provide=*}{\chardef\bbl@iniflag\@ne} % main -> +1 +\DeclareOption{provide+=*}{\chardef\bbl@iniflag\tw@} % add = 2 +\DeclareOption{provide*=*}{\chardef\bbl@iniflag\thr@@} % add + main \newif\ifbbl@single \DeclareOption{selectors=off}{\bbl@singletrue} +\DeclareOption{provide@=*}{} % autoload with cat @=letter +\makeatother +\DeclareOption{provide@=*}{} % autoload with cat @=other +\makeatletter \DeclareOption{safe=none}{\let\bbl@opt@safe\@empty} \DeclareOption{safe=bib}{\def\bbl@opt@safe{B}} \DeclareOption{safe=ref}{\def\bbl@opt@safe{R}} @@ -755,7 +784,7 @@ \AtEndOfPackage{% \EnableBabelHook{babel-bidi}% \ifx\fontspec\@undefined - \usepackage{fontspec}% bidi needs fontspec + \bbl@loadfontspec % bidi needs fontspec \fi \usepackage#1{bidi}}% \fi} @@ -764,10 +793,8 @@ \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 @@ -982,13 +1009,13 @@ {\bbl@error{% Unknown option `\CurrentOption'. Either you misspelled it\\% or the language definition file \CurrentOption.ldf was not found}{% - Valid options are: shorthands=, KeepShorthandsActive,\\% + Valid options are, among others: 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}} + \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}% @@ -1017,24 +1044,69 @@ 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} +\let\bbl@tempc\relax +\bbl@foreach\bbl@language@opts{% + \ifcase\bbl@iniflag + \bbl@ifunset{ds@#1}% + {\DeclareOption{#1}{\bbl@load@language{#1}}}% + {}% + \or + \@gobble % case 2 same as 1 + \or + \bbl@ifunset{ds@#1}% + {\IfFileExists{#1.ldf}{}% + {\IfFileExists{babel-#1.tex}{}{\DeclareOption{#1}{}}}}% + {}% + \bbl@ifunset{ds@#1}% + {\def\bbl@tempc{#1}% + \DeclareOption{#1}{% + \ifnum\bbl@iniflag>\@ne + \bbl@ldfinit + \babelprovide[import]{#1}% + \bbl@afterldf{}% + \else + \bbl@load@language{#1}% + \fi}}% + {}% + \or + \def\bbl@tempc{#1}% + \bbl@ifunset{ds@#1}% + {\DeclareOption{#1}{% + \bbl@ldfinit + \babelprovide[import]{#1}% + \bbl@afterldf{}}}% + {}% + \fi} +\let\bbl@tempb\@nnil \bbl@foreach\@classoptionslist{% \bbl@ifunset{ds@#1}% - {\IfFileExists{#1.ldf}% - {\DeclareOption{#1}{\bbl@load@language{#1}}}% - {}}% + {\IfFileExists{#1.ldf}{}% + {\IfFileExists{babel-#1.tex}{}{\DeclareOption{#1}{}}}}% + {}% + \bbl@ifunset{ds@#1}% + {\def\bbl@tempb{#1}% + \DeclareOption{#1}{% + \ifnum\bbl@iniflag>\@ne + \bbl@ldfinit + \babelprovide[import]{#1}% + \bbl@afterldf{}% + \else + \bbl@load@language{#1}% + \fi}}% {}} +\ifnum\bbl@iniflag=\z@\else + \ifx\bbl@opt@main\@nnil + \ifx\bbl@tempc\relax + \let\bbl@opt@main\bbl@tempb + \else + \let\bbl@opt@main\bbl@tempc + \fi + \fi +\fi \ifx\bbl@opt@main\@nnil\else \expandafter \let\expandafter\bbl@loadmain\csname ds@\bbl@opt@main\endcsname - \DeclareOption{\bbl@opt@main}{} + \expandafter\let\csname ds@\bbl@opt@main\endcsname\@empty \fi \def\AfterBabelLanguage#1{% \bbl@ifsamestring\CurrentOption{#1}{\global\bbl@add\bbl@afterlang}{}} @@ -1058,10 +1130,17 @@ option. Reported}% \fi \else - \DeclareOption{\bbl@opt@main}{\bbl@loadmain} - \ExecuteOptions{\bbl@opt@main} - \DeclareOption*{} - \ProcessOptions* + \ifodd\bbl@iniflag % case 1,3 + \bbl@ldfinit + \let\CurrentOption\bbl@opt@main + \bbl@exp{\\\babelprovide[import,main]{\bbl@opt@main}} + \bbl@afterldf{}% + \else % case 0,2 + \chardef\bbl@iniflag\z@ % Force ldf + \expandafter\let\csname ds@\bbl@opt@main\endcsname\bbl@loadmain + \DeclareOption*{}% + \ProcessOptions* + \fi \fi \def\AfterBabelLanguage{% \bbl@error |