diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/babel/babel.def')
-rw-r--r-- | Master/texmf-dist/tex/generic/babel/babel.def | 153 |
1 files changed, 93 insertions, 60 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/babel.def b/Master/texmf-dist/tex/generic/babel/babel.def index 8fe5b53db95..8c88c5f619e 100644 --- a/Master/texmf-dist/tex/generic/babel/babel.def +++ b/Master/texmf-dist/tex/generic/babel/babel.def @@ -41,7 +41,7 @@ \wlog{File: #1 #4 #3 <#2>}% \let\ProvidesFile\@undefined} \fi -\ProvidesFile{babel.def}[2020/02/28 3.41 Babel common definitions] +\ProvidesFile{babel.def}[2020/03/22 3.42 Babel common definitions] \ifx\AtBeginDocument\@undefined \input plain.def\relax \fi @@ -107,6 +107,7 @@ \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,{% @@ -291,24 +292,24 @@ \newcommand\DisableBabelHook[1]{\bbl@csarg\let{hk@#1}\@gobble} \def\bbl@usehooks#1#2{% \def\bbl@elt##1{% - \@nameuse{bbl@hk@##1}{\@nameuse{bbl@ev@##1@#1@}#2}}% - \@nameuse{bbl@ev@#1@}% + \bbl@cs{hk@##1}{\bbl@cs{ev@##1@#1@}#2}}% + \bbl@cs{ev@#1@}% \ifx\languagename\@undefined\else % Test required for Plain (?) \def\bbl@elt##1{% - \@nameuse{bbl@hk@##1}{\@nameuse{bbl@ev@##1@#1@\languagename}#2}}% - \@nameuse{bbl@ev@#1@\languagename}% + \bbl@cs{hk@##1}{\bbl@cl{ev@##1@#1}#2}}% + \bbl@cl{ev@#1}% \fi} \def\bbl@evargs{,% <- don't delete this comma everylanguage=1,loadkernel=1,loadpatterns=1,loadexceptions=1,% adddialect=2,patterns=2,defaultcommands=0,encodedcommands=2,write=0,% beforeextras=0,afterextras=0,stopcommands=0,stringprocess=0,% hyphenation=2,initiateactive=3,afterreset=0,foreign=0,foreign*=0,% - beforestart=0} + beforestart=0,languagename=0} \bbl@trace{Defining babelensure} \newcommand\babelensure[2][]{% TODO - revise test files \AddBabelHook{babel-ensure}{afterextras}{% \ifcase\bbl@select@type - \@nameuse{bbl@e@\languagename}% + \bbl@cl{e}% \fi}% \begingroup \let\bbl@ens@include\@empty @@ -423,9 +424,9 @@ \bbl@usehooks{beforestart}{}% \global\let\bbl@beforestart\relax} \AtBeginDocument{% - \@nameuse{bbl@beforestart}% + \bbl@cs{beforestart}% \if@filesw - \immediate\write\@mainaux{\string\@nameuse{bbl@beforestart}}% + \immediate\write\@mainaux{\string\bbl@cs{beforestart}}% \fi \expandafter\selectlanguage\expandafter{\bbl@main@language}% \ifbbl@single % must go after the line above @@ -1340,16 +1341,16 @@ \def\bbl@presec@x#1[#2]#3{% \bbl@exp{% \\\select@language@x{\bbl@main@language}% - \\\@nameuse{bbl@sspre@#1}% - \\\@nameuse{bbl@ss@#1}% + \\\bbl@cs{sspre@#1}% + \\\bbl@cs{ss@#1}% [\\\foreignlanguage{\languagename}{\unexpanded{#2}}]% {\\\foreignlanguage{\languagename}{\unexpanded{#3}}}% \\\select@language@x{\languagename}}} \def\bbl@presec@s#1#2{% \bbl@exp{% \\\select@language@x{\bbl@main@language}% - \\\@nameuse{bbl@sspre@#1}% - \\\@nameuse{bbl@ss@#1}*% + \\\bbl@cs{sspre@#1}% + \\\bbl@cs{ss@#1}*% {\\\foreignlanguage{\languagename}{\unexpanded{#2}}}% \\\select@language@x{\languagename}}} \IfBabelLayout{sectioning}% @@ -1394,6 +1395,7 @@ \let\bbl@KVP@onchar\@nil \let\bbl@KVP@alph\@nil \let\bbl@KVP@Alph\@nil + \let\bbl@KVP@info\@nil % Ignored with import? Or error/warning? \bbl@forkv{#1}{% TODO - error handling \in@{/}{##1}% \ifin@ @@ -1444,6 +1446,7 @@ \bbl@read@ini{##1}{basic data}% \bbl@exportkey{chrng}{characters.ranges}{}% \bbl@exportkey{dgnat}{numbers.digits.native}{}% + \bbl@exportkey{prehc}{typography.prehyphenchar}{}% \bbl@exportkey{lnbrk}{typography.linebreaking}{h}% \bbl@exportkey{hyphr}{typography.hyphenrules}{}% \bbl@exportkey{hyoth}{typography.hyphenate.other}{}% @@ -1480,9 +1483,9 @@ {\\\bbl@patterns@lua{\languagename}}}% % TODO - error/warning if no script \directlua{ - if Babel.script_blocks['\bbl@cs{sbcp@\languagename}'] then + if Babel.script_blocks['\bbl@cl{sbcp}'] then Babel.loc_to_scr[\the\localeid] = - Babel.script_blocks['\bbl@cs{sbcp@\languagename}'] + Babel.script_blocks['\bbl@cl{sbcp}'] Babel.locale_props[\the\localeid].lc = \the\localeid\space Babel.locale_props[\the\localeid].lg = \the\@nameuse{l@\languagename}\space end @@ -1493,9 +1496,9 @@ \bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}% \bbl@ifunset{bbl@wdir@\languagename}{\bbl@provide@dirs{\languagename}}{}% \directlua{ - if Babel.script_blocks['\bbl@cs{sbcp@\languagename}'] then + if Babel.script_blocks['\bbl@cl{sbcp}'] then Babel.loc_to_scr[\the\localeid] = - Babel.script_blocks['\bbl@cs{sbcp@\languagename}'] + Babel.script_blocks['\bbl@cl{sbcp}'] end}% \ifx\bbl@mapselect\@undefined \AtBeginDocument{% @@ -1560,7 +1563,7 @@ \else \SetHyphenMap{\BabelLower{##1}{##1}}% \fi}% - \bbl@endcommands} + \bbl@endcommands}% % == maparabic == % Native digits, if provided in ini (TeX level, xe and lua) \ifcase\bbl@engine\else @@ -1591,7 +1594,7 @@ Babel.digits_mapped = true Babel.digits = Babel.digits or {} Babel.digits[\the\localeid] = - table.pack(string.utfvalue('\bbl@cs{dgnat@\languagename}')) + table.pack(string.utfvalue('\bbl@cl{dgnat}')) if not Babel.numbers then function Babel.numbers(head) local LOCALE = luatexbase.registernumber'bbl@attr@locale' @@ -1718,8 +1721,8 @@ \bbl@endcommands \bbl@exp{% \def\<#1hyphenmins>{% - {\bbl@ifunset{bbl@lfthm@#1}{2}{\@nameuse{bbl@lfthm@#1}}}% - {\bbl@ifunset{bbl@rgthm@#1}{3}{\@nameuse{bbl@rgthm@#1}}}}}% + {\bbl@ifunset{bbl@lfthm@#1}{2}{\bbl@cs{lfthm@#1}}}% + {\bbl@ifunset{bbl@rgthm@#1}{3}{\bbl@cs{rgthm@#1}}}}}% \bbl@provide@hyphens{#1}% \ifx\bbl@KVP@main\@nil\else \expandafter\main@language\expandafter{#1}% @@ -1756,30 +1759,33 @@ \fi \ifx\bbl@tempa\relax % if no opt or no language in opt found \ifx\bbl@KVP@import\@nil\else % if importing - \bbl@exp{% and hyphenrules is not empty - \\\bbl@ifblank{\@nameuse{bbl@hyphr@#1}}% + \bbl@exp{% and hyphenrules is not empty + \\\bbl@ifblank{\bbl@cs{hyphr@#1}}% {}% - {\let\\\bbl@tempa\<l@\@nameuse{bbl@hyphr@\languagename}>}}% + {\let\\\bbl@tempa\<l@\bbl@cl{hyphr}>}}% \fi \fi \bbl@ifunset{bbl@tempa}% ie, relax or undefined {\bbl@ifunset{l@#1}% no hyphenrules found - fallback {\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 - \bbl@ifunset{bbl@prehc@\languagename}% - {}% TODO - XeTeX, based on \babelfont and HyphenChar? - {\ifodd\bbl@engine\bbl@exp{% - \\\bbl@ifblank{\@nameuse{bbl@prehc@#1}}% - {}% - {\\\AddBabelHook[\languagename]{babel-prehc-\languagename}{patterns}% - {\prehyphenchar=\@nameuse{bbl@prehc@\languagename}\relax}}}% - \fi}} + {\bbl@exp{\\\adddialect\<l@#1>\bbl@tempa}}}% found in opt list or ini + \ifx\bbl@readstream\@undefined \csname newread\endcsname\bbl@readstream \fi +\def\bbl@inipreread#1=#2\@@{% + \bbl@trim@def\bbl@tempa{#1}% Redundant below !! + \bbl@trim\toks@{#2}% + % Move trims here ?? + \bbl@ifunset{bbl@KVP@\bbl@section/\bbl@tempa}% + {\bbl@exp{% + \\\g@addto@macro\\\bbl@inidata{% + \\\bbl@elt{\bbl@section}{\bbl@tempa}{\the\toks@}}}% + \expandafter\bbl@inireader\bbl@tempa=#2\@@}% + {}}% \def\bbl@read@ini#1#2{% - \global\@namedef{bbl@lini@\languagename}{#1}% + \bbl@csarg\edef{lini@\languagename}{#1}% \openin\bbl@readstream=babel-#1.ini \ifeof\bbl@readstream \bbl@error @@ -1788,16 +1794,11 @@ is not complete.}% {Fix the name or reinstall babel.}% \else + \bbl@exp{\def\\\bbl@inidata{\\\bbl@elt{identificacion}{tag.ini}{#1}}}% \let\bbl@section\@empty \let\bbl@savestrings\@empty \let\bbl@savetoday\@empty \let\bbl@savedate\@empty - \def\bbl@inipreread##1=##2\@@{% - \bbl@trim@def\bbl@tempa{##1}% Redundant below !! - % Move trims here ?? - \bbl@ifunset{bbl@KVP@\bbl@section/\bbl@tempa}% - {\expandafter\bbl@inireader\bbl@tempa=##2\@@}% - {}}% \let\bbl@inireader\bbl@iniskip \bbl@info{Importing #2 for \languagename\\% from babel-#1.ini. Reported}% @@ -1815,23 +1816,33 @@ \global\let\bbl@renewlist\@empty % Ends last section. See \bbl@inisec \def\bbl@elt##1##2{\bbl@inireader##1=##2\@@}% - \@nameuse{bbl@renew@\bbl@section}% + \bbl@cs{renew@\bbl@section}% \global\bbl@csarg\let{renew@\bbl@section}\relax - \@nameuse{bbl@secpost@\bbl@section}% + \bbl@cs{secpost@\bbl@section}% + \bbl@csarg{\global\expandafter\let}{inidata@\languagename}\bbl@inidata + \bbl@exp{\\\bbl@add@list\\\bbl@ini@loaded{\languagename}}% + \bbl@toglobal\bbl@ini@loaded \fi} \def\bbl@iniline#1\bbl@iniline{% \@ifnextchar[\bbl@inisec{\@ifnextchar;\bbl@iniskip\bbl@inipreread}#1\@@}% ] \def\bbl@iniskip#1\@@{}% if starts with ; \def\bbl@inisec[#1]#2\@@{% if starts with opening bracket - \def\bbl@elt##1##2{\bbl@inireader##1=##2\@@}% - \@nameuse{bbl@renew@\bbl@section}% + \def\bbl@elt##1##2{% + \expandafter\toks@\expandafter{% + \expandafter{\bbl@section}{##1}{##2}}% + \bbl@exp{% + \\\g@addto@macro\\\bbl@inidata{\\\bbl@elt\the\toks@}}% + \bbl@inireader##1=##2\@@}% + \bbl@cs{renew@\bbl@section}% \global\bbl@csarg\let{renew@\bbl@section}\relax - \@nameuse{bbl@secpost@\bbl@section}% ends previous section - \def\bbl@section{#1}% starts current section + \bbl@cs{secpost@\bbl@section}% + % The previous code belongs to the previous section. + % Now start the current one. + \def\bbl@section{#1}% \def\bbl@elt##1##2{% \@namedef{bbl@KVP@#1/##1}{}}% - \@nameuse{bbl@renew@#1}% - \@nameuse{bbl@secpre@#1}% pre-section `hook' + \bbl@cs{renew@#1}% + \bbl@cs{secpre@#1}% pre-section `hook' \bbl@ifunset{bbl@inikv@#1}% {\let\bbl@inireader\bbl@iniskip}% {\bbl@exp{\let\\\bbl@inireader\<bbl@inikv@#1>}}} @@ -1856,8 +1867,8 @@ \def\bbl@iniwarning#1{% \bbl@ifunset{bbl@@kv@identification.warning#1}{}% {\bbl@warning{% - From babel-\@nameuse{bbl@lini@\languagename}.ini:\\% - \@nameuse{bbl@@kv@identification.warning#1}\\% + From babel-\bbl@cs{lini@\languagename}.ini:\\% + \bbl@cs{@kv@identification.warning#1}\\% Reported }}} \let\bbl@inikv@identification\bbl@inikv \def\bbl@secpost@identification{% @@ -2014,6 +2025,12 @@ \bbl@csarg\bbl@add@list{lsys@#1}{Script=\bbl@cs{sname@#1}}% \bbl@ifunset{bbl@lname@#1}{}% {\bbl@csarg\bbl@add@list{lsys@#1}{Language=\bbl@cs{lname@#1}}}% + \ifcase\bbl@engine\or\or + \bbl@ifunset{bbl@prehc@#1}{}% + {\bbl@exp{\\\bbl@ifblank{\bbl@cs{prehc@#1}}}% + {}% + {\bbl@csarg\bbl@add@list{lsys@#1}{HyphenChar="200B}}}% + \fi \bbl@csarg\bbl@toglobal{lsys@#1}} \def\bbl@ini@basic#1{% \def\BabelBeforeIni##1##2{% @@ -2033,7 +2050,7 @@ \toks@\expandafter{\the\toks@\or #1}% \expandafter\bbl@buildifcase \fi} -\newcommand\localenumeral[2]{\@nameuse{bbl@cntr@#1@\languagename}{#2}} +\newcommand\localenumeral[2]{\bbl@cs{cntr@#1@\languagename}{#2}} \def\bbl@localecntr#1#2{\localenumeral{#2}{#1}} \newcommand\localecounter[2]{% \expandafter\bbl@localecntr\csname c@#2\endcsname{#1}} @@ -2049,15 +2066,15 @@ \fi} \def\bbl@alphnumeral@ii#1#2#3#4#5#6#7#8{% \bbl@ifunset{bbl@cntr@#1.F.\number#5#6#7#8@\languagename}% - {\@nameuse{bbl@cntr@#1.4@\languagename}#5% - \@nameuse{bbl@cntr@#1.3@\languagename}#6% - \@nameuse{bbl@cntr@#1.2@\languagename}#7% - \@nameuse{bbl@cntr@#1.1@\languagename}#8% + {\bbl@cs{cntr@#1.4@\languagename}#5% + \bbl@cs{cntr@#1.3@\languagename}#6% + \bbl@cs{cntr@#1.2@\languagename}#7% + \bbl@cs{cntr@#1.1@\languagename}#8% \ifnum#6#7#8>\z@ % An ad hod rule for Greek. Ugly. To be fixed. \bbl@ifunset{bbl@cntr@#1.S.321@\languagename}{}% - {\@nameuse{bbl@cntr@#1.S.321@\languagename}}% + {\bbl@cs{cntr@#1.S.321@\languagename}}% \fi}% - {\@nameuse{bbl@cntr@#1.F.\number#5#6#7#8@\languagename}}} + {\bbl@cs{cntr@#1.F.\number#5#6#7#8@\languagename}}} \def\bbl@alphnum@invalid#1{% \bbl@error{Alphabetic numeral too large (#1)}% {Currently this is the limit.}} @@ -2067,7 +2084,7 @@ The corresponding ini file has not been loaded\\% Perhaps it doesn't exist}% {See the manual for details.}}% - {\@nameuse{bbl@\csname bbl@info@#1\endcsname @\languagename}}} + {\bbl@cs{\csname bbl@info@#1\endcsname @\languagename}}} \@namedef{bbl@info@tag.ini}{lini} \@namedef{bbl@info@name.english}{elname} \@namedef{bbl@info@name.opentype}{lname} @@ -2083,8 +2100,24 @@ \ifx\InputIfFileExists\@undefined\else % not in plain \bbl@ifunset{bbl@lname@##1}{\bbl@ini@basic{##1}}{}% \fi}} +\newcommand\getlocaleproperty[3]{% + \let#1\relax + \def\bbl@elt##1##2##3{% + \bbl@ifsamestring{##1/##2}{#3}% + {\providecommand#1{##3}% + \def\bbl@elt####1####2####3{}}% + {}}% + \bbl@cs{inidata@#2}% + \ifx#1\relax + \bbl@error + {Unknown key for locale '#2':\\% + #3\\% + \string#1 will be set to \relax}% + {Perhaps you misspelled it.}% + \fi} +\newcommand\LocaleForEach{\bbl@foreach\bbl@ini@loaded} \newcommand\babeladjust[1]{% TODO. Error handling. - \bbl@forkv{#1}{\@nameuse{bbl@ADJ@##1@##2}}} + \bbl@forkv{#1}{\bbl@cs{ADJ@##1@##2}}} \def\bbl@adjust@lua#1#2{% \ifvmode \ifnum\currentgrouplevel=\z@ @@ -2433,7 +2466,7 @@ \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@cs{wdir@\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}% |