diff options
author | Karl Berry <karl@freefriends.org> | 2019-11-14 21:55:14 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-11-14 21:55:14 +0000 |
commit | e7c52b7fbf07f5e89c3cae711e6ec9752a1e361f (patch) | |
tree | 7e13aa54baac3b8a44bb3f4c9cc286d65078c445 /Master/texmf-dist/tex/generic/babel/babel.def | |
parent | 76a4b4b9cfab13a7adbdbeb36b3b0d3478648484 (diff) |
babel (14nov19)
git-svn-id: svn://tug.org/texlive/trunk@52794 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 | 127 |
1 files changed, 96 insertions, 31 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/babel.def b/Master/texmf-dist/tex/generic/babel/babel.def index 5fe9abb09e7..e5c5d8f6ac6 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}[2019/10/15 3.35 Babel common definitions] +\ProvidesFile{babel.def}[2019/11/14 3.36 Babel common definitions] \ifx\AtBeginDocument\@undefined \input plain.def\relax \fi @@ -422,11 +422,9 @@ \bbl@usehooks{beforestart}{}% \global\let\bbl@beforestart\relax} \AtBeginDocument{% - \bbl@beforestart + \@nameuse{bbl@beforestart}% \if@filesw - \immediate\write\@mainaux{% - % \let\string\bbl@nostdfont\string\@gobble - \string\bbl@beforestart}% + \immediate\write\@mainaux{\string\@nameuse{bbl@beforestart}}% \fi \expandafter\selectlanguage\expandafter{\bbl@main@language}% \ifbbl@single % must go after the line above @@ -1384,20 +1382,20 @@ \let\bbl@KVP@main\@nil \let\bbl@KVP@script\@nil \let\bbl@KVP@language\@nil - \let\bbl@KVP@dir\@nil - \let\bbl@KVP@hyphenrules\@nil + \let\bbl@KVP@hyphenrules\@nil % only for provide@new \let\bbl@KVP@mapfont\@nil \let\bbl@KVP@maparabic\@nil \let\bbl@KVP@mapdigits\@nil \let\bbl@KVP@intraspace\@nil \let\bbl@KVP@intrapenalty\@nil \bbl@forkv{#1}{% TODO - error handling - \in@{/}{##1}% + \in@{..}{##1}% \ifin@ \bbl@renewinikey##1\@@{##2}% \else \bbl@csarg\def{KVP@##1}{##2}% \fi}% + % == import, captions == \ifx\bbl@KVP@import\@nil\else \bbl@exp{\\\bbl@ifblank{\bbl@KVP@import}}% {\begingroup @@ -1437,21 +1435,25 @@ \catcode`\[=12 \catcode`\]=12 \catcode`\==12 % \let\bbl@ini@captions@aux\@gobbletwo \def\bbl@inidate ####1.####2.####3.####4\relax ####5####6{}% - \bbl@read@ini{##1}% + \bbl@read@ini{##1}{basic data}% \bbl@exportkey{chrng}{characters.ranges}{}% \bbl@exportkey{dgnat}{numbers.digits.native}{}% + % \bbl@exportkey{hyphr}{typography.hyphenrules}{}% + % \bbl@exportkey{intsp}{typography.intraspace}{}% \endgroup}% boxed, to avoid extra spaces: {\setbox\z@\hbox{\InputIfFileExists{babel-#2.tex}{}{}}}}% {}% % - - % Override script and language names with script= and language= + % == script, language == + % Override the values from ini or defines them \ifx\bbl@KVP@script\@nil\else \bbl@csarg\edef{sname@#2}{\bbl@KVP@script}% \fi \ifx\bbl@KVP@language\@nil\else \bbl@csarg\edef{lname@#2}{\bbl@KVP@language}% \fi - % For bidi texts, to switch the language based on direction + % == mapfont == + % For bidi texts, to switch the font based on direction \ifx\bbl@KVP@mapfont\@nil\else \bbl@ifsamestring{\bbl@KVP@mapfont}{direction}{}% {\bbl@error{Option `\bbl@KVP@mapfont' unknown for\\% @@ -1476,15 +1478,16 @@ \fi \bbl@exp{\\\bbl@add\\\bbl@mapselect{\\\bbl@mapdir{\languagename}}}% \fi - % For East Asian, Southeast Asian, if interspace in ini - TODO: as hook? - \ifx\bbl@KVP@intraspace\@nil\else % We may override the ini + % == intraspace, intrapenalty == + % For CJK, East Asian, Southeast Asian, if interspace in ini + \ifx\bbl@KVP@intraspace\@nil\else % We can override the ini or set \bbl@csarg\edef{intsp@#2}{\bbl@KVP@intraspace}% \fi - \ifcase\bbl@engine\or + \ifcase\bbl@engine\or % lua \bbl@ifunset{bbl@intsp@\languagename}{}% {\expandafter\ifx\csname bbl@intsp@\languagename\endcsname\@empty\else \bbl@xin@{\bbl@cs{sbcp@\languagename}}{Hant,Hans,Jpan,Kore,Kana}% - \ifin@ + \ifin@ % cjk \bbl@cjkintraspace \directlua{ Babel = Babel or {} @@ -1495,7 +1498,7 @@ \ifx\bbl@KVP@intrapenalty\@nil \bbl@intrapenalty0\@@ \fi - \else + \else % sea \bbl@seaintraspace \bbl@exp{\\\bbl@intraspace\bbl@cs{intsp@\languagename}\\\@@}% \directlua{ @@ -1512,9 +1515,9 @@ \ifx\bbl@KVP@intrapenalty\@nil\else \expandafter\bbl@intrapenalty\bbl@KVP@intrapenalty\@@ \fi}% - \or + \or % xe \bbl@xin@{\bbl@cs{sbcp@\languagename}}{Thai,Laoo,Khmr}% - \ifin@ + \ifin@ % sea (currently ckj not handled) \bbl@ifunset{bbl@intsp@\languagename}{}% {\expandafter\ifx\csname bbl@intsp@\languagename\endcsname\@empty\else \ifx\bbl@KVP@intraspace\@nil @@ -1539,6 +1542,7 @@ \fi}% \fi \fi + % == maparabic == % Native digits, if provided in ini (TeX level, xe and lua) \ifcase\bbl@engine\else \bbl@ifunset{bbl@dgnat@\languagename}{}% @@ -1556,6 +1560,7 @@ \fi \fi}% \fi + % == mapdigits == % Native digits (lua level). \ifodd\bbl@engine \ifx\bbl@KVP@mapdigits\@nil\else @@ -1592,6 +1597,7 @@ }} \fi \fi + % == require.babel in ini == % To load or reaload the babel-*.tex, if require.babel in ini \bbl@ifunset{bbl@rqtex@\languagename}{}% {\expandafter\ifx\csname bbl@rqtex@\languagename\endcsname\@empty\else @@ -1602,6 +1608,7 @@ \catcode`\@=\atcatcode \let\atcatcode\relax \fi}% + % == main == \ifx\bbl@KVP@main\@nil % Restore only if not 'main' \let\languagename\bbl@savelangname \chardef\localeid\bbl@savelocaleid\relax @@ -1651,7 +1658,7 @@ \fi}% \expandafter\bbl@tempb\bbl@captionslist\@empty \else - \bbl@read@ini{\bbl@KVP@captions}% Here all letters cat = 11 + \bbl@read@ini{\bbl@KVP@captions}{data}% Here all letters cat = 11 \bbl@after@ini \bbl@savestrings \fi @@ -1675,7 +1682,7 @@ \def\bbl@provide@renew#1{% \ifx\bbl@KVP@captions\@nil\else \StartBabelCommands*{#1}{captions}% - \bbl@read@ini{\bbl@KVP@captions}% Here all letters cat = 11 + \bbl@read@ini{\bbl@KVP@captions}{data}% Here all letters cat = 11 \bbl@after@ini \bbl@savestrings \EndBabelCommands @@ -1686,6 +1693,7 @@ \bbl@savedate \EndBabelCommands \fi + % == hyphenrules == \bbl@provide@hyphens{#1}} \def\bbl@provide@hyphens#1{% \let\bbl@tempa\relax @@ -1722,7 +1730,7 @@ {\\\AddBabelHook[\languagename]{babel-prehc-\languagename}{patterns}% {\prehyphenchar=\@nameuse{bbl@prehc@\languagename}\relax}}}% \fi}} -\def\bbl@read@ini#1{% +\def\bbl@read@ini#1#2{% \openin1=babel-#1.ini % FIXME - number must not be hardcoded \ifeof1 \bbl@error @@ -1738,11 +1746,12 @@ \def\bbl@inipreread##1=##2\@@{% \bbl@trim@def\bbl@tempa{##1}% Redundant below !! % Move trims here ?? - \bbl@ifunset{bbl@KVP@\bbl@section/\bbl@tempa}% + \bbl@ifunset{bbl@KVP@\bbl@section..\bbl@tempa}% {\expandafter\bbl@inireader\bbl@tempa=##2\@@}% {}}% \let\bbl@inireader\bbl@iniskip - \bbl@info{Importing data from babel-#1.ini for \languagename}% + \bbl@info{Importing #2 for \languagename\\% + from babel-#1.ini. Reported}% \loop \if T\ifeof1F\fi T\relax % Trick, because inside \loop \endlinechar\m@ne @@ -1763,12 +1772,14 @@ \@nameuse{bbl@secpost@\bbl@section}% ends previous section \def\bbl@section{#1}% \def\bbl@elt##1##2{% - \@namedef{bbl@KVP@#1/##1}{}}% + \@namedef{bbl@KVP@#1..##1}{}}% \@nameuse{bbl@renew@#1}% \@nameuse{bbl@secpre@#1}% starts current section \bbl@ifunset{bbl@inikv@#1}% {\let\bbl@inireader\bbl@iniskip}% {\bbl@exp{\let\\\bbl@inireader\<bbl@inikv@#1>}}} +\def\bbl@renewinikey#1..#2\@@#3{% + \bbl@csarg\bbl@add{renew@#1}{\bbl@elt{#2}{#3}}} \def\bbl@inikv#1=#2\@@{% key=value \bbl@trim@def\bbl@tempa{#1}% \bbl@trim\toks@{#2}% @@ -1783,10 +1794,14 @@ \fi}} \let\bbl@inikv@identification\bbl@inikv \def\bbl@secpost@identification{% - \bbl@exportkey{lname}{identification.name.english}{}% + \bbl@ifunset{bbl@@kv@identification.name.opentype}% + {\bbl@exportkey{lname}{identification.name.english}{}}% + {\bbl@exportkey{lname}{identification.name.opentype}{}}% \bbl@exportkey{lbcp}{identification.tag.bcp47}{}% \bbl@exportkey{lotf}{identification.tag.opentype}{dflt}% - \bbl@exportkey{sname}{identification.script.name}{}% + \bbl@ifunset{bbl@@kv@identification.script.name.opentype}% + {\bbl@exportkey{sname}{identification.script.name}{}}% + {\bbl@exportkey{sname}{identification.script.name.opentype}{}}% \bbl@exportkey{sbcp}{identification.script.tag.bcp47}{}% \bbl@exportkey{sotf}{identification.script.tag.opentype}{DFLT}} \let\bbl@inikv@typography\bbl@inikv @@ -1910,7 +1925,7 @@ \bbl@replace@finish@iii\bbl@toreplace} \def\bbl@provide@lsys#1{% \bbl@ifunset{bbl@lname@#1}% - {\bbl@ini@ids{#1}}% + {\bbl@ini@basic{#1}}% {}% \bbl@csarg\let{lsys@#1}\@empty \bbl@ifunset{bbl@sname@#1}{\bbl@csarg\gdef{sname@#1}{Default}}{}% @@ -1919,15 +1934,65 @@ \bbl@ifunset{bbl@lname@#1}{}% {\bbl@csarg\bbl@add@list{lsys@#1}{Language=\bbl@cs{lname@#1}}}% \bbl@csarg\bbl@toglobal{lsys@#1}} -\def\bbl@ini@ids#1{% +\def\bbl@ini@basic#1{% \def\BabelBeforeIni##1##2{% \begingroup \bbl@add\bbl@secpost@identification{\closein1 }% \catcode`\[=12 \catcode`\]=12 \catcode`\==12 % - \bbl@read@ini{##1}% - \endinput - \endgroup}% boxed, to avoid extra spaces: + \bbl@read@ini{##1}{font and identification data}% + \endinput % babel- .tex may contain onlypreamble's + \endgroup}% boxed, to avoid extra spaces: {\setbox\z@\hbox{\InputIfFileExists{babel-#1.tex}{}{}}}} +\newcommand\babeladjust[1]{% TODO. Error handling. + \bbl@forkv{#1}{\@nameuse{bbl@ADJ@##1@##2}}} +\def\bbl@adjust@lua#1#2{% + \ifvmode + \ifnum\currentgrouplevel=\z@ + \directlua{ Babel.#2 }% + \expandafter\expandafter\expandafter\@gobble + \fi + \fi + {\bbl@error % The error is gobbled if everything went ok. + {Currently, #1 related features can be adjusted only\\% + in the main vertical list.}% + {Maybe things change in the future, but this is what it is.}}} +\@namedef{bbl@ADJ@bidi.mirroring@on}{% + \bbl@adjust@lua{bidi}{mirroring_enabled=true}} +\@namedef{bbl@ADJ@bidi.mirroring@off}{% + \bbl@adjust@lua{bidi}{mirroring_enabled=false}} +\@namedef{bbl@ADJ@bidi.text@on}{% + \bbl@adjust@lua{bidi}{bidi_enabled=true}} +\@namedef{bbl@ADJ@bidi.text@off}{% + \bbl@adjust@lua{bidi}{bidi_enabled=false}} +\@namedef{bbl@ADJ@bidi.mapdigits@on}{% + \bbl@adjust@lua{bidi}{digits_mapped=true}} +\@namedef{bbl@ADJ@bidi.mapdigits@off}{% + \bbl@adjust@lua{bidi}{digits_mapped=false}} +\@namedef{bbl@ADJ@linebreak.sea@on}{% + \bbl@adjust@lua{linebreak}{sea_enabled=true}} +\@namedef{bbl@ADJ@linebreak.sea@off}{% + \bbl@adjust@lua{linebreak}{sea_enabled=false}} +\@namedef{bbl@ADJ@linebreak.cjk@on}{% + \bbl@adjust@lua{linebreak}{cjk_enabled=true}} +\@namedef{bbl@ADJ@linebreak.cjk@off}{% + \bbl@adjust@lua{linebreak}{cjk_enabled=false}} +\def\bbl@adjust@layout#1{% + \ifvmode + #1% + \expandafter\@gobble + \fi + {\bbl@error % The error is gobbled if everything went ok. + {Currently, layout related features can be adjusted only\\% + in vertical mode.}% + {Maybe things change in the future, but this is what it is.}}} +\@namedef{bbl@ADJ@layout.tabular@on}{% + \bbl@adjust@layout{\let\@tabular\bbl@NL@@tabular}} +\@namedef{bbl@ADJ@layout.tabular@off}{% + \bbl@adjust@layout{\let\@tabular\bbl@OL@@tabular}} +\@namedef{bbl@ADJ@layout.lists@on}{% + \bbl@adjust@layout{\let\list\bbl@NL@list}} +\@namedef{bbl@ADJ@layout.lists@on}{% + \bbl@adjust@layout{\let\list\bbl@OL@list}} {\def\format{lplain} \ifx\fmtname\format \else |