diff options
author | Karl Berry <karl@freefriends.org> | 2021-06-28 20:38:19 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-06-28 20:38:19 +0000 |
commit | a977864eac6d306a206d3c4535fe0e397a10ab4a (patch) | |
tree | eef32e46d36c0092e1062db037e8000e4862fc26 /Master/texmf-dist/tex/generic/babel/babel.def | |
parent | 472bc9cb1b41fa04197e7684ac38bb1ea6550ee0 (diff) |
babel (28jun21)
git-svn-id: svn://tug.org/texlive/trunk@59740 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/babel/babel.def')
-rw-r--r-- | Master/texmf-dist/tex/generic/babel/babel.def | 251 |
1 files changed, 155 insertions, 96 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/babel.def b/Master/texmf-dist/tex/generic/babel/babel.def index 4424be14a61..9797455fe42 100644 --- a/Master/texmf-dist/tex/generic/babel/babel.def +++ b/Master/texmf-dist/tex/generic/babel/babel.def @@ -12,6 +12,7 @@ %% any individual authors listed elsewhere in this file. %% All rights reserved. %% +%% %% This file is part of the Babel system. %% -------------------------------------- %% @@ -26,7 +27,6 @@ %% 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 @@ -40,7 +40,7 @@ \wlog{File: #1 #4 #3 <#2>}% \let\ProvidesFile\@undefined} \fi -\ProvidesFile{babel.def}[2021/06/02 3.60 Babel common definitions] +\ProvidesFile{babel.def}[2021/06/28 3.61 Babel common definitions] \ifx\AtBeginDocument\@undefined % TODO. change test. % == Code for plain == \def\@empty{} @@ -398,8 +398,8 @@ \fi \countdef\last@language=19 % TODO. why? remove? \def\addlanguage{\csname newlanguage\endcsname} -\def\bbl@version{3.60} -\def\bbl@date{2021/06/02} +\def\bbl@version{3.61} +\def\bbl@date{2021/06/28} \def\adddialect#1#2{% \global\chardef#1#2\relax \bbl@usehooks{adddialect}{{#1}{#2}}% @@ -587,13 +587,14 @@ \expandafter\ifx\csname date\languagename\endcsname\relax\else \if@filesw \ifx\babel@aux\@gobbletwo\else % Set if single in the first, redundant - % \bbl@savelastskip + \bbl@savelastskip \protected@write\@auxout{}{\string\babel@aux{\bbl@auxname}{}}% - % \bbl@restorelastskip + \bbl@restorelastskip \fi \bbl@usehooks{write}{}% \fi \fi} +\let\bbl@restorelastskip\relax \def\bbl@savelastskip{% \let\bbl@restorelastskip\relax \ifvmode @@ -1093,6 +1094,16 @@ \else \expandafter\@firstofone \fi} +\def\bbl@extras@wrap#1#2#3{% 1:in-test, 2:before, 3:after + \toks@\expandafter\expandafter\expandafter{% + \csname extras\languagename\endcsname}% + \bbl@exp{\\\in@{#1}{\the\toks@}}% + \ifin@\else + \@temptokena{#2}% + \edef\bbl@tempc{\the\@temptokena\the\toks@}% + \toks@\expandafter{\bbl@tempc#3}% + \expandafter\edef\csname extras\languagename\endcsname{\the\toks@}% + \fi} \bbl@trace{Compatibility with language.def} \ifx\bbl@languages\@undefined \ifx\directlua\@undefined @@ -1363,7 +1374,7 @@ \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}% + \bbl@csarg\def{oridef@#2}{\def#1{\active@prefix#1\@undefined}}% \else \bbl@csarg\let{oridef@@#2}#1% \bbl@csarg\edef{oridef@#2}{% @@ -1541,8 +1552,8 @@ #1% \bbl@activate{#2}}% {\bbl@error - {Cannot declare a shorthand turned off (\string#2)} - {Sorry, but you cannot use shorthands which have been\\% + {I can't declare a shorthand turned off (\string#2)} + {Sorry, but you can't 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{% @@ -1767,6 +1778,29 @@ \bbl@elt{\string.}\@m{3000}\bbl@elt{\string?}\@m{3000}% \bbl@elt{\string!}\@m{3000}\bbl@elt{\string:}\@m{2000}% \bbl@elt{\string;}\@m{1500}\bbl@elt{\string,}\@m{1250}} +\def\bbl@pre@fs{% + \def\bbl@elt##1##2##3{\sfcode`##1=\the\sfcode`##1\relax}% + \edef\bbl@save@sfcodes{\bbl@fs@chars}}% +\def\bbl@post@fs{% + \bbl@save@sfcodes + \edef\bbl@tempa{\bbl@cl{frspc}}% + \edef\bbl@tempa{\expandafter\@car\bbl@tempa\@nil}% + \if u\bbl@tempa % do nothing + \else\if n\bbl@tempa % non french + \def\bbl@elt##1##2##3{% + \ifnum\sfcode`##1=##2\relax + \babel@savevariable{\sfcode`##1}% + \sfcode`##1=##3\relax + \fi}% + \bbl@fs@chars + \else\if y\bbl@tempa % french + \def\bbl@elt##1##2##3{% + \ifnum\sfcode`##1=##3\relax + \babel@savevariable{\sfcode`##1}% + \sfcode`##1=##2\relax + \fi}% + \bbl@fs@chars + \fi\fi\fi} \bbl@trace{Short tags} \def\babeltags#1{% \edef\bbl@tempa{\zap@space#1 \@empty}% @@ -2347,13 +2381,14 @@ \input xebabel.def \fi \bbl@trace{Creating languages and reading ini files} +\let\bbl@extend@ini\@gobble \newcommand\babelprovide[2][]{% \let\bbl@savelangname\languagename \edef\bbl@savelocaleid{\the\localeid}% % Set name and locale id \edef\languagename{#2}% - % \global\@namedef{bbl@lcname@#2}{#2}% \bbl@id@assign + % Initialize keys \let\bbl@KVP@captions\@nil \let\bbl@KVP@date\@nil \let\bbl@KVP@import\@nil @@ -2376,27 +2411,34 @@ \let\bbl@KVP@labels\@nil \bbl@csarg\let{KVP@labels*}\@nil \global\let\bbl@inidata\@empty + \global\let\bbl@extend@ini\@gobble + \gdef\bbl@key@list{;}% \bbl@forkv{#1}{% TODO - error handling \in@{/}{##1}% \ifin@ + \global\let\bbl@extend@ini\bbl@extend@ini@aux \bbl@renewinikey##1\@@{##2}% \else \bbl@csarg\def{KVP@##1}{##2}% \fi}% + \chardef\bbl@howloaded=% 0:none; 1:ldf without ini; 2:ini + \bbl@ifunset{date#2}\z@{\bbl@ifunset{bbl@llevel@#2}\@ne\tw@}% % == init == \ifx\bbl@screset\@undefined \bbl@ldfinit \fi % == \let\bbl@lbkflag\relax % \@empty = do setup linebreak - \bbl@ifunset{date#2}% - {\let\bbl@lbkflag\@empty}% new - {\ifx\bbl@KVP@hyphenrules\@nil\else - \let\bbl@lbkflag\@empty - \fi - \ifx\bbl@KVP@import\@nil\else + \ifcase\bbl@howloaded + \let\bbl@lbkflag\@empty % new + \else + \ifx\bbl@KVP@hyphenrules\@nil\else \let\bbl@lbkflag\@empty - \fi}% + \fi + \ifx\bbl@KVP@import\@nil\else + \let\bbl@lbkflag\@empty + \fi + \fi % == import, captions == \ifx\bbl@KVP@import\@nil\else \bbl@exp{\\\bbl@ifblank{\bbl@KVP@import}}% @@ -2418,13 +2460,19 @@ \bbl@replace\bbl@KVP@transforms{ }{,}% \fi % Load ini - \bbl@ifunset{date#2}% - {\bbl@provide@new{#2}}% - {\bbl@ifblank{#1}% + \ifcase\bbl@howloaded + \bbl@provide@new{#2}% + \else + \bbl@ifblank{#1}% {}% With \bbl@load@basic below - {\bbl@provide@renew{#2}}}% + {\bbl@provide@renew{#2}}% + \fi % Post tasks % ---------- + % == subsequent calls after the first provide for a locale == + \ifx\bbl@inidata\@empty\else + \bbl@extend@ini{#2}% + \fi % == ensure captions == \ifx\bbl@KVP@captions\@nil\else \bbl@ifunset{bbl@extracaps@#2}% @@ -2543,7 +2591,7 @@ \bbl@csarg\edef{intsp@#2}{\bbl@KVP@intraspace}% \fi \bbl@provide@intraspace - % + % == Line breaking: justification == \ifx\bbl@KVP@justification\@nil\else \let\bbl@KVP@linebreaking\bbl@KVP@justification \fi @@ -2557,7 +2605,7 @@ \bbl@xin@{/e}{/\bbl@cl{lnbrk}}% \ifin@\else\bbl@xin@{/k}{/\bbl@cl{lnbrk}}\fi \ifin@\bbl@arabicjust\fi - % == Line breaking: hyphenate.other.locale/.script== + % == Line breaking: hyphenate.other.(locale|script) == \ifx\bbl@lbkflag\@empty \bbl@ifunset{bbl@hyotl@\languagename}{}% {\bbl@csarg\bbl@replace{hyotl@\languagename}{ }{,}% @@ -2642,25 +2690,21 @@ % restored correctly when exiting the language, so we ignore % this change with the \bbl@alph@saved trick. \ifx\bbl@KVP@alph\@nil\else - \toks@\expandafter\expandafter\expandafter{% - \csname extras\languagename\endcsname}% + \bbl@extras@wrap{\\\bbl@alph@saved}% + {\let\bbl@alph@saved\@alph}% + {\let\@alph\bbl@alph@saved + \babel@save\@alph}% \bbl@exp{% - \def\<extras\languagename>{% - \let\\\bbl@alph@saved\\\@alph - \the\toks@ - \let\\\@alph\\\bbl@alph@saved - \\\babel@save\\\@alph + \\\bbl@add\<extras\languagename>{% \let\\\@alph\<bbl@cntr@\bbl@KVP@alph @\languagename>}}% \fi \ifx\bbl@KVP@Alph\@nil\else - \toks@\expandafter\expandafter\expandafter{% - \csname extras\languagename\endcsname}% + \bbl@extras@wrap{\\\bbl@Alph@saved}% + {\let\bbl@Alph@saved\@Alph}% + {\let\@Alph\bbl@Alph@saved + \babel@save\@Alph}% \bbl@exp{% - \def\<extras\languagename>{% - \let\\\bbl@Alph@saved\\\@Alph - \the\toks@ - \let\\\@Alph\\\bbl@Alph@saved - \\\babel@save\\\@Alph + \\\bbl@add\<extras\languagename>{% \let\\\@Alph\<bbl@cntr@\bbl@KVP@Alph @\languagename>}}% \fi % == require.babel in ini == @@ -2674,8 +2718,17 @@ \bbl@input@texini{\bbl@cs{rqtex@\languagename}}% \catcode`\@=\atcatcode \let\atcatcode\relax + \global\bbl@csarg\let{rqtex@\languagename}\relax \fi}% \fi + % == frenchspacing == + \ifcase\bbl@howloaded\in@true\else\in@false\fi + \ifin@\else\bbl@xin@{typography/frenchspacing}{\bbl@key@list}\fi + \ifin@ + \bbl@extras@wrap{\\\bbl@pre@fs}% + {\bbl@pre@fs}% + {\bbl@post@fs}% + \fi % == Release saved transforms == \bbl@release@transforms\relax % \relax closes the last item. % == main == @@ -2719,36 +2772,11 @@ \gdef\<#1hyphenmins>{% {\bbl@ifunset{bbl@lfthm@#1}{2}{\bbl@cs{lfthm@#1}}}% {\bbl@ifunset{bbl@rgthm@#1}{3}{\bbl@cs{rgthm@#1}}}}}% - % == hyphenrules == + % == hyphenrules (also in renew) == \bbl@provide@hyphens{#1}% - % == frenchspacing == (only if new) - \bbl@ifunset{bbl@frspc@#1}{}% - {\edef\bbl@tempa{\bbl@cl{frspc}}% - \edef\bbl@tempa{\expandafter\@car\bbl@tempa\@nil}% - \if u\bbl@tempa % do nothing - \else\if n\bbl@tempa % non french - \expandafter\bbl@add\csname extras#1\endcsname{% - \let\bbl@elt\bbl@fs@elt@i - \bbl@fs@chars}% - \else\if y\bbl@tempa % french - \expandafter\bbl@add\csname extras#1\endcsname{% - \let\bbl@elt\bbl@fs@elt@ii - \bbl@fs@chars}% - \fi\fi\fi}% - % \ifx\bbl@KVP@main\@nil\else \expandafter\main@language\expandafter{#1}% \fi} -\def\bbl@fs@elt@i#1#2#3{% - \ifnum\sfcode`#1=#2\relax - \babel@savevariable{\sfcode`#1}% - \sfcode`#1=#3\relax - \fi}% -\def\bbl@fs@elt@ii#1#2#3{% - \ifnum\sfcode`#1=#3\relax - \babel@savevariable{\sfcode`#1}% - \sfcode`#1=#2\relax - \fi}% \def\bbl@provide@renew#1{% \ifx\bbl@KVP@captions\@nil\else \StartBabelCommands*{#1}{captions}% @@ -2761,16 +2789,16 @@ \bbl@savedate \EndBabelCommands \fi - % == hyphenrules == + % == hyphenrules (also in new) == \ifx\bbl@lbkflag\@empty \bbl@provide@hyphens{#1}% \fi} \def\bbl@load@basic#1{% - \bbl@ifunset{bbl@inidata@\languagename}{}% - {\getlocaleproperty\bbl@tempa{\languagename}{identification/load.level}% - \ifcase\bbl@tempa - \bbl@csarg\let{lname@\languagename}\relax - \fi}% + \ifcase\bbl@howloaded\or\or + \ifcase\csname bbl@llevel@\languagename\endcsname + \bbl@csarg\let{lname@\languagename}\relax + \fi + \fi \bbl@ifunset{bbl@lname@#1}% {\def\BabelBeforeIni##1##2{% \begingroup @@ -2834,16 +2862,17 @@ \bbl@esphack} \def\bbl@iniline#1\bbl@iniline{% \@ifnextchar[\bbl@inisect{\@ifnextchar;\bbl@iniskip\bbl@inistore}#1\@@}% ] -\def\bbl@inisect[#1]#2\@@{\def\bbl@section{#1}}% +\def\bbl@inisect[#1]#2\@@{\def\bbl@section{#1}} \def\bbl@iniskip#1\@@{}% if starts with ; \def\bbl@inistore#1=#2\@@{% full (default) \bbl@trim@def\bbl@tempa{#1}% \bbl@trim\toks@{#2}% - \bbl@ifunset{bbl@KVP@\bbl@section/\bbl@tempa}% - {\bbl@exp{% + \bbl@xin@{;\bbl@section/\bbl@tempa;}{\bbl@key@list}% + \ifin@\else + \bbl@exp{% \\\g@addto@macro\\\bbl@inidata{% - \\\bbl@elt{\bbl@section}{\bbl@tempa}{\the\toks@}}}}% - {}}% + \\\bbl@elt{\bbl@section}{\bbl@tempa}{\the\toks@}}}% + \fi} \def\bbl@inistore@min#1=#2\@@{% minimal (maybe set in \bbl@read@ini) \bbl@trim@def\bbl@tempa{#1}% \bbl@trim\toks@{#2}% @@ -2851,11 +2880,12 @@ \ifin@ \bbl@exp{\\\g@addto@macro\\\bbl@inidata{% \\\bbl@elt{identification}{\bbl@tempa}{\the\toks@}}}% - \fi}% + \fi} \ifx\bbl@readstream\@undefined \csname newread\endcsname\bbl@readstream \fi \def\bbl@read@ini#1#2{% + \global\let\bbl@extend@ini\@gobble \openin\bbl@readstream=babel-#1.ini \ifeof\bbl@readstream \bbl@error @@ -2864,7 +2894,7 @@ is not complete.}% {Fix the name or reinstall babel.}% \else - % Store ini data in \bbl@inidata + % == Store ini data in \bbl@inidata == \catcode`\[=12 \catcode`\]=12 \catcode`\==12 \catcode`\&=12 \catcode`\;=12 \catcode`\|=12 \catcode`\%=14 \catcode`\-=12 \bbl@info{Importing @@ -2887,28 +2917,56 @@ \expandafter\bbl@iniline\bbl@line\bbl@iniline \fi \repeat - % Process stored data + % == Process stored data == \bbl@csarg\xdef{lini@\languagename}{#1}% - \let\bbl@savestrings\@empty - \let\bbl@savetoday\@empty - \let\bbl@savedate\@empty - \def\bbl@elt##1##2##3{% - \def\bbl@section{##1}% - \in@{=date.}{=##1}% Find a better place - \ifin@ - \bbl@ini@calendar{##1}% - \fi - \global\bbl@csarg\let{bbl@KVP@##1/##2}\relax - \bbl@ifunset{bbl@inikv@##1}{}% - {\csname bbl@inikv@##1\endcsname{##2}{##3}}}% - \bbl@inidata - % 'Export' data + \bbl@read@ini@aux + % == 'Export' data == \bbl@ini@exports{#2}% \global\bbl@csarg\let{inidata@\languagename}\bbl@inidata \global\let\bbl@inidata\@empty \bbl@exp{\\\bbl@add@list\\\bbl@ini@loaded{\languagename}}% \bbl@toglobal\bbl@ini@loaded \fi} +\def\bbl@read@ini@aux{% + \let\bbl@savestrings\@empty + \let\bbl@savetoday\@empty + \let\bbl@savedate\@empty + \def\bbl@elt##1##2##3{% + \def\bbl@section{##1}% + \in@{=date.}{=##1}% Find a better place + \ifin@ + \bbl@ini@calendar{##1}% + \fi + \bbl@ifunset{bbl@inikv@##1}{}% + {\csname bbl@inikv@##1\endcsname{##2}{##3}}}% + \bbl@inidata} +\def\bbl@extend@ini@aux#1{% + \bbl@startcommands*{#1}{captions}% + % Activate captions/... and modify exports + \bbl@csarg\def{inikv@captions.licr}##1##2{% + \setlocalecaption{#1}{##1}{##2}}% + \def\bbl@inikv@captions##1##2{% + \bbl@ini@captions@aux{##1}{##2}}% + \def\bbl@stringdef##1##2{\gdef##1{##2}}% + \def\bbl@exportkey##1##2##3{% + \bbl@ifunset{bbl@@kv@##2}{}% + {\expandafter\ifx\csname bbl@@kv@##2\endcsname\@empty\else + \bbl@exp{\global\let\<bbl@##1@\languagename>\<bbl@@kv@##2>}% + \fi}}% + % As with \bbl@read@ini, but with some changes + \bbl@read@ini@aux + \bbl@ini@exports\tw@ + % Update inidata@lang by pretending the ini is read. + \def\bbl@elt##1##2##3{% + \def\bbl@section{##1}% + \bbl@iniline##2=##3\bbl@iniline}% + \csname bbl@inidata@#1\endcsname + \global\bbl@csarg\let{inidata@#1}\bbl@inidata + \StartBabelCommands*{#1}{date}% And from the import stuff + \def\bbl@stringdef##1##2{\gdef##1{##2}}% + \bbl@savetoday + \bbl@savedate + \bbl@endcommands} \def\bbl@ini@calendar#1{% \lowercase{\def\bbl@tempa{=#1=}}% \bbl@replace\bbl@tempa{=date.gregorian}{}% @@ -2932,7 +2990,7 @@ \edef\bbl@tempb{\zap@space #2 \@empty}% key \bbl@trim\toks@{#3}% value \bbl@exp{% - \global\let\<bbl@KVP@\bbl@tempa/\bbl@tempb>\\\@empty % just a flag + \edef\\\bbl@key@list{\bbl@key@list \bbl@tempa/\bbl@tempb;}% \\\g@addto@macro\\\bbl@inidata{% \\\bbl@elt{\bbl@tempa}{\bbl@tempb}{\the\toks@}}}}% \def\bbl@exportkey#1#2#3{% @@ -2960,6 +3018,7 @@ \or \bbl@iniwarning{.xelatex}% \fi% + \bbl@exportkey{llevel}{identification.load.level}{}% \bbl@exportkey{elname}{identification.name.english}{}% \bbl@exp{\\\bbl@exportkey{lname}{identification.name.opentype}% {\csname bbl@elname@\languagename\endcsname}}% @@ -2985,9 +3044,9 @@ \bbl@exportkey{hyotl}{typography.hyphenate.other.locale}{}% \bbl@exportkey{hyots}{typography.hyphenate.other.script}{}% \bbl@exportkey{intsp}{typography.intraspace}{}% + \bbl@exportkey{frspc}{typography.frenchspacing}{u}% \bbl@exportkey{chrng}{characters.ranges}{}% \bbl@exportkey{dgnat}{numbers.digits.native}{}% - \bbl@exportkey{frspc}{typography.frenchspacing}{u}% \ifnum#1=\tw@ % only (re)new \bbl@exportkey{rqtex}{identification.require.babel}{}% \bbl@toglobal\bbl@savetoday @@ -3121,6 +3180,7 @@ \bbl@replace\bbl@toreplace{[}{\csname the}% \bbl@replace\bbl@toreplace{]}{\endcsname{}}% \toks@\expandafter{\bbl@toreplace}% + % TODO. Execute only once: \bbl@exp{% \\\bbl@add\<extras\languagename>{% \\\babel@save\<labelenum\romannumeral\bbl@tempa>% @@ -3207,9 +3267,7 @@ \bbl@trim@def\bbl@toreplace{#5}% \bbl@TG@@date \bbl@ifunset{bbl@date@\languagename @}% - {\global\bbl@csarg\let{date@\languagename @}\bbl@toreplace - % TODO. Move to a better place. - \bbl@exp{% + {\bbl@exp{% TODO. Move to a better place. \gdef\<\languagename date>{\\\protect\<\languagename date >}% \gdef\<\languagename date >####1####2####3{% \\\bbl@usedategrouptrue @@ -3220,6 +3278,7 @@ \<\languagename date>% {\\\the\year}{\\\the\month}{\\\the\day}}}}}% {}% + \global\bbl@csarg\let{date@\languagename @}\bbl@toreplace \ifx\bbl@tempb\@empty\else \global\bbl@csarg\let{date@\languagename @\bbl@tempb}\bbl@toreplace \fi}% |