diff options
author | Karl Berry <karl@freefriends.org> | 2021-01-26 21:47:29 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-01-26 21:47:29 +0000 |
commit | b160cf306d45454709fdbedefdd5bb3be65ad28c (patch) | |
tree | 3244de238f0f015e88ca4fbd274edbadac3a7d94 /Master/texmf-dist/tex/generic/babel/babel.def | |
parent | eb7f2b3abbc0b1da0f7eb6e28319387ff7637b7a (diff) |
babel (26jan21)
git-svn-id: svn://tug.org/texlive/trunk@57530 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 | 270 |
1 files changed, 150 insertions, 120 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/babel.def b/Master/texmf-dist/tex/generic/babel/babel.def index 4ad65905c01..e02952cb58b 100644 --- a/Master/texmf-dist/tex/generic/babel/babel.def +++ b/Master/texmf-dist/tex/generic/babel/babel.def @@ -7,7 +7,7 @@ %% babel.dtx (with options: `core') %% %% -%% Copyright (C) 2012-2020 Javier Bezos and Johannes L. Braams. +%% Copyright (C) 2012-2021 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. @@ -39,7 +39,7 @@ \wlog{File: #1 #4 #3 <#2>}% \let\ProvidesFile\@undefined} \fi -\ProvidesFile{babel.def}[2020/12/16 3.52 Babel common definitions] +\ProvidesFile{babel.def}[2021/01/26 3.53 Babel common definitions] \ifx\AtBeginDocument\@undefined % TODO. change test. % == Code for plain == \def\@empty{} @@ -397,8 +397,8 @@ \fi \countdef\last@language=19 % TODO. why? remove? \def\addlanguage{\csname newlanguage\endcsname} -\def\bbl@version{3.52} -\def\bbl@date{2020/12/16} +\def\bbl@version{3.53} +\def\bbl@date{2021/01/26} \def\adddialect#1#2{% \global\chardef#1#2\relax \bbl@usehooks{adddialect}{{#1}{#2}}% @@ -584,11 +584,25 @@ \expandafter\ifx\csname date\languagename\endcsname\relax\else \if@filesw \ifx\babel@aux\@gobbletwo\else % Set if single in the first, redundant + % \bbl@savelastskip \protected@write\@auxout{}{\string\babel@aux{\bbl@auxname}{}}% + % \bbl@restorelastskip \fi \bbl@usehooks{write}{}% \fi \fi} +\def\bbl@savelastskip{% + \let\bbl@restorelastskip\relax + \ifvmode + \ifdim\lastskip=\z@ + \let\bbl@restorelastskip\nobreak + \else + \bbl@exp{% + \def\\\bbl@restorelastskip{% + \skip@=\the\lastskip + \\\nobreak \vskip-\skip@ \vskip\skip@}}% + \fi + \fi} \newif\ifbbl@bcpallowed \bbl@bcpallowedfalse \def\select@language#1{% from set@, babel@aux @@ -860,8 +874,9 @@ \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{..}\\% + in the preamble) with the help of\\% + \string\setlocalecaption. An example is\\% + \string\setlocalecaption{mylang}{chapter}{..}\\ Reported}} \def\bbl@tentative{\protect\bbl@tentative@i} \def\bbl@tentative@i#1{% @@ -1206,7 +1221,7 @@ \tablename\partname\enclname\ccname\headtoname\pagename\seename \alsoname\proofname\glossaryname} \bbl@trace{Macros for setting language files up} -\def\bbl@ldfinit{% TODO. Merge into the next macro? Unused elsewhere +\def\bbl@ldfinit{% \let\bbl@screset\@empty \let\BabelStrings\bbl@opt@string \let\BabelOptions\@empty @@ -2028,51 +2043,56 @@ \newcommand\setlocalecaption{% TODO. Catch typos. What about ensure? \@ifstar\bbl@setcaption@s\bbl@setcaption@x} \def\bbl@setcaption@x#1#2#3{% language caption-name string - \edef\bbl@tempa{#1}% - \edef\bbl@tempd{% - \expandafter\expandafter\expandafter - \strip@prefix\expandafter\meaning\csname captions#1\endcsname}% - \bbl@xin@ - {\expandafter\string\csname #2name\endcsname}% - {\bbl@tempd}% - \ifin@ % Renew caption - \bbl@xin@{\string\bbl@scset}{\bbl@tempd}% - \ifin@ - \bbl@exp{% - \\\bbl@ifsamestring{\bbl@tempa}{\languagename}% - {\\\bbl@scset\<#2name>\<#1#2name>}% - {}}% - \else % Old way converts to new way - \bbl@ifunset{#1#2name}% - {\bbl@exp{% + \bbl@trim@def\bbl@tempa{#2}% + \bbl@xin@{.template}{\bbl@tempa}% + \ifin@ + \bbl@ini@captions@template{#3}{#1}% + \else + \edef\bbl@tempd{% + \expandafter\expandafter\expandafter + \strip@prefix\expandafter\meaning\csname captions#1\endcsname}% + \bbl@xin@ + {\expandafter\string\csname #2name\endcsname}% + {\bbl@tempd}% + \ifin@ % Renew caption + \bbl@xin@{\string\bbl@scset}{\bbl@tempd}% + \ifin@ + \bbl@exp{% + \\\bbl@ifsamestring{\bbl@tempa}{\languagename}% + {\\\bbl@scset\<#2name>\<#1#2name>}% + {}}% + \else % Old way converts to new way + \bbl@ifunset{#1#2name}% + {\bbl@exp{% + \\\bbl@add\<captions#1>{\def\<#2name>{\<#1#2name>}}% + \\\bbl@ifsamestring{\bbl@tempa}{\languagename}% + {\def\<#2name>{\<#1#2name>}}% + {}}}% + {}% + \fi + \else + \bbl@xin@{\string\bbl@scset}{\bbl@tempd}% New + \ifin@ % New way + \bbl@exp{% + \\\bbl@add\<captions#1>{\\\bbl@scset\<#2name>\<#1#2name>}% + \\\bbl@ifsamestring{\bbl@tempa}{\languagename}% + {\\\bbl@scset\<#2name>\<#1#2name>}% + {}}% + \else % Old way, but defined in the new way + \bbl@exp{% \\\bbl@add\<captions#1>{\def\<#2name>{\<#1#2name>}}% \\\bbl@ifsamestring{\bbl@tempa}{\languagename}% {\def\<#2name>{\<#1#2name>}}% - {}}}% - {}% + {}}% + \fi% + \fi + \@namedef{#1#2name}{#3}% + \toks@\expandafter{\bbl@captionslist}% + \bbl@exp{\\\in@{\<#2name>}{\the\toks@}}% + \ifin@\else + \bbl@exp{\\\bbl@add\\\bbl@captionslist{\<#2name>}}% + \bbl@toglobal\bbl@captionslist \fi - \else - \bbl@xin@{\string\bbl@scset}{\bbl@tempd}% New - \ifin@ % New way - \bbl@exp{% - \\\bbl@add\<captions#1>{\\\bbl@scset\<#2name>\<#1#2name>}% - \\\bbl@ifsamestring{\bbl@tempa}{\languagename}% - {\\\bbl@scset\<#2name>\<#1#2name>}% - {}}% - \else % Old way, but defined in the new way - \bbl@exp{% - \\\bbl@add\<captions#1>{\def\<#2name>{\<#1#2name>}}% - \\\bbl@ifsamestring{\bbl@tempa}{\languagename}% - {\def\<#2name>{\<#1#2name>}}% - {}}% - \fi% - \fi - \@namedef{#1#2name}{#3}% - \toks@\expandafter{\bbl@captionslist}% - \bbl@exp{\\\in@{\<#2name>}{\the\toks@}}% - \ifin@\else - \bbl@exp{\\\bbl@add\\\bbl@captionslist{\<#2name>}}% - \bbl@toglobal\bbl@captionslist \fi} \bbl@trace{Macros related to glyphs} \def\set@low@box#1{\setbox\tw@\hbox{,}\setbox\z@\hbox{#1}% @@ -2326,6 +2346,20 @@ \else \bbl@csarg\def{KVP@##1}{##2}% \fi}% + % == 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 + \let\bbl@lbkflag\@empty + \fi}% % == import, captions == \ifx\bbl@KVP@import\@nil\else \bbl@exp{\\\bbl@ifblank{\bbl@KVP@import}}% @@ -2346,30 +2380,31 @@ \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. See the manual for the\\% - available options.}% - {Use this macro as documented}}% + {}% With \bbl@load@basic below {\bbl@provide@renew{#2}}}% % Post tasks - \bbl@ifunset{bbl@extracaps@#2}% - {\bbl@exp{\\\babelensure[exclude=\\\today]{#2}}}% - {\toks@\expandafter\expandafter\expandafter - {\csname bbl@extracaps@#2\endcsname}% - \bbl@exp{\\\babelensure[exclude=\\\today,include=\the\toks@}]{#2}}% - \bbl@ifunset{bbl@ensure@\languagename}% - {\bbl@exp{% - \\\DeclareRobustCommand\<bbl@ensure@\languagename>[1]{% - \\\foreignlanguage{\languagename}% - {####1}}}}% - {}% - \bbl@exp{% - \\\bbl@toglobal\<bbl@ensure@\languagename>% - \\\bbl@toglobal\<bbl@ensure@\languagename\space>}% + % ---------- + % == ensure captions == + \ifx\bbl@KVP@captions\@nil\else + \bbl@ifunset{bbl@extracaps@#2}% + {\bbl@exp{\\\babelensure[exclude=\\\today]{#2}}}% + {\toks@\expandafter\expandafter\expandafter + {\csname bbl@extracaps@#2\endcsname}% + \bbl@exp{\\\babelensure[exclude=\\\today,include=\the\toks@}]{#2}}% + \bbl@ifunset{bbl@ensure@\languagename}% + {\bbl@exp{% + \\\DeclareRobustCommand\<bbl@ensure@\languagename>[1]{% + \\\foreignlanguage{\languagename}% + {####1}}}}% + {}% + \bbl@exp{% + \\\bbl@toglobal\<bbl@ensure@\languagename>% + \\\bbl@toglobal\<bbl@ensure@\languagename\space>}% + \fi + % == % At this point all parameters are defined if 'import'. Now we % execute some code depending on them. But what about if nothing was - % imported? We just load the very basic parameters. + % imported? We just set the very basic parameters. \bbl@load@basic{#2}% % == script, language == % Override the values from ini or defines them @@ -2466,30 +2501,31 @@ \bbl@csarg\edef{intsp@#2}{\bbl@KVP@intraspace}% \fi \bbl@provide@intraspace - % == Line breaking: hyphenate.other.locale == - \bbl@ifunset{bbl@hyotl@\languagename}{}% - {\bbl@csarg\bbl@replace{hyotl@\languagename}{ }{,}% - \bbl@startcommands*{\languagename}{}% - \bbl@csarg\bbl@foreach{hyotl@\languagename}{% + % == Line breaking: hyphenate.other.locale/.script== + \ifx\bbl@lbkflag\@empty + \bbl@ifunset{bbl@hyotl@\languagename}{}% + {\bbl@csarg\bbl@replace{hyotl@\languagename}{ }{,}% + \bbl@startcommands*{\languagename}{}% + \bbl@csarg\bbl@foreach{hyotl@\languagename}{% + \ifcase\bbl@engine + \ifnum##1<257 + \SetHyphenMap{\BabelLower{##1}{##1}}% + \fi + \else + \SetHyphenMap{\BabelLower{##1}{##1}}% + \fi}% + \bbl@endcommands}% + \bbl@ifunset{bbl@hyots@\languagename}{}% + {\bbl@csarg\bbl@replace{hyots@\languagename}{ }{,}% + \bbl@csarg\bbl@foreach{hyots@\languagename}{% \ifcase\bbl@engine \ifnum##1<257 - \SetHyphenMap{\BabelLower{##1}{##1}}% + \global\lccode##1=##1\relax \fi \else - \SetHyphenMap{\BabelLower{##1}{##1}}% - \fi}% - \bbl@endcommands}% - % == Line breaking: hyphenate.other.script == - \bbl@ifunset{bbl@hyots@\languagename}{}% - {\bbl@csarg\bbl@replace{hyots@\languagename}{ }{,}% - \bbl@csarg\bbl@foreach{hyots@\languagename}{% - \ifcase\bbl@engine - \ifnum##1<257 \global\lccode##1=##1\relax - \fi - \else - \global\lccode##1=##1\relax - \fi}}% + \fi}}% + \fi % == Counters: maparabic == % Native digits, if provided in ini (TeX level, xe and lua) \ifcase\bbl@engine\else @@ -2672,7 +2708,9 @@ \EndBabelCommands \fi % == hyphenrules == - \bbl@provide@hyphens{#1}} + \ifx\bbl@lbkflag\@empty + \bbl@provide@hyphens{#1}% + \fi} \def\bbl@linebreak@export{% \bbl@exportkey{lnbrk}{typography.linebreaking}{h}% \bbl@exportkey{hyphr}{typography.hyphenrules}{}% @@ -2722,10 +2760,10 @@ {\bbl@exp{\let\bbl@tempa\<l@##1>}}% \fi}% \fi - \ifx\bbl@tempa\relax % if no opt or no language in opt found + \ifx\bbl@tempa\relax % if no opt or no language in opt found \ifx\bbl@KVP@import\@nil \ifx\bbl@initoload\relax\else - \bbl@exp{% and hyphenrules is not empty + \bbl@exp{% and hyphenrules is not empty \\\bbl@ifblank{\bbl@cs{hyphr@#1}}% {}% {\let\\\bbl@tempa\<l@\bbl@cl{hyphr}>}}% @@ -2742,7 +2780,6 @@ {\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 - \ifx\bbl@readstream\@undefined \csname newread\endcsname\bbl@readstream \fi @@ -2946,37 +2983,29 @@ \def\bbl@inikv@captions#1=#2\@@{% \bbl@ini@captions@aux{#1}{#2}} \fi +\def\bbl@ini@captions@template#1#2{% string language tempa=capt-name + \bbl@replace\bbl@tempa{.template}{}% + \def\bbl@toreplace{#1{}}% + \bbl@replace\bbl@toreplace{[ ]}{\nobreakspace{}}% + \bbl@replace\bbl@toreplace{[[}{\csname}% + \bbl@replace\bbl@toreplace{[}{\csname the}% + \bbl@replace\bbl@toreplace{]]}{name\endcsname{}}% + \bbl@replace\bbl@toreplace{]}{\endcsname{}}% + \bbl@xin@{,\bbl@tempa,}{,chapter,appendix,part,}% + \ifin@ + \@nameuse{bbl@patch\bbl@tempa}% + \global\bbl@csarg\let{\bbl@tempa fmt@#2}\bbl@toreplace + \fi + \bbl@xin@{,\bbl@tempa,}{,figure,table,}% + \ifin@ + \toks@\expandafter{\bbl@toreplace}% + \bbl@exp{\gdef\<fnum@\bbl@tempa>{\the\toks@}}% + \fi} \def\bbl@ini@captions@aux#1#2{% \bbl@trim@def\bbl@tempa{#1}% \bbl@xin@{.template}{\bbl@tempa}% \ifin@ - \bbl@replace\bbl@tempa{.template}{}% - \def\bbl@toreplace{#2}% - \bbl@replace\bbl@toreplace{[ ]}{\nobreakspace{}}% - \bbl@replace\bbl@toreplace{[[}{\csname}% - \bbl@replace\bbl@toreplace{[}{\csname the}% - \bbl@replace\bbl@toreplace{]]}{name\endcsname{}}% - \bbl@replace\bbl@toreplace{]}{\endcsname{}}% - \bbl@xin@{,\bbl@tempa,}{,chapter,}% - \ifin@ - \bbl@patchchapter - \global\bbl@csarg\let{chapfmt@\languagename}\bbl@toreplace - \fi - \bbl@xin@{,\bbl@tempa,}{,appendix,}% - \ifin@ - \bbl@patchchapter - \global\bbl@csarg\let{appxfmt@\languagename}\bbl@toreplace - \fi - \bbl@xin@{,\bbl@tempa,}{,part,}% - \ifin@ - \bbl@patchpart - \global\bbl@csarg\let{partfmt@\languagename}\bbl@toreplace - \fi - \bbl@xin@{,\bbl@tempa,}{,figure,table,}% - \ifin@ - \toks@\expandafter{\bbl@toreplace}% - \bbl@exp{\gdef\<fnum@\bbl@tempa>{\the\toks@}}% - \fi + \bbl@ini@captions@template{#2}\languagename \else \bbl@ifblank{#2}% {\bbl@exp{% @@ -3050,7 +3079,7 @@ \\\bbl@toglobal\<extras\languagename>}% \fi \fi} -\def\bbl@chaptype{chap} +\def\bbl@chaptype{chapter} \ifx\@makechapterhead\@undefined \let\bbl@patchchapter\relax \else\ifx\thechapter\@undefined @@ -3060,7 +3089,7 @@ \else \def\bbl@patchchapter{% \global\let\bbl@patchchapter\relax - \bbl@add\appendix{\def\bbl@chaptype{appx}}% Not harmful, I hope + \bbl@add\appendix{\def\bbl@chaptype{appendix}}% Not harmful, I hope \bbl@toglobal\appendix \bbl@sreplace\ps@headings {\@chapapp\ \thechapter}% @@ -3078,6 +3107,7 @@ \bbl@ifunset{bbl@\bbl@chaptype fmt@\languagename}% {\@chapapp\space\thechapter} {\@nameuse{bbl@\bbl@chaptype fmt@\languagename}}}} + \let\bbl@patchappendix\bbl@patchchapter \fi\fi\fi \ifx\@part\@undefined \let\bbl@patchpart\relax |