summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/babel/babel.def
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-03-22 20:52:59 +0000
committerKarl Berry <karl@freefriends.org>2020-03-22 20:52:59 +0000
commitd5535006714af4dadb798ade1ece7583c36ea5a0 (patch)
treeef7952c619d6bb1cfb3bd38733e453a9f5b4b836 /Master/texmf-dist/tex/generic/babel/babel.def
parent65dc386401b6dc1d3fbe95d1954f88ec537a990c (diff)
babel (22mar20)
git-svn-id: svn://tug.org/texlive/trunk@54487 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.def153
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}%