summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/babel/babel.def
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2019-11-14 21:55:14 +0000
committerKarl Berry <karl@freefriends.org>2019-11-14 21:55:14 +0000
commite7c52b7fbf07f5e89c3cae711e6ec9752a1e361f (patch)
tree7e13aa54baac3b8a44bb3f4c9cc286d65078c445 /Master/texmf-dist/tex/generic/babel/babel.def
parent76a4b4b9cfab13a7adbdbeb36b3b0d3478648484 (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.def127
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