diff options
author | Karl Berry <karl@freefriends.org> | 2019-05-02 22:52:12 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-05-02 22:52:12 +0000 |
commit | 827d1879347a5aacecb471a576e1654149ad8a39 (patch) | |
tree | 773b8042298d8d685b88fd99261838dea531324f /Master/texmf-dist/tex/generic/babel/babel.def | |
parent | 4de7376b42147ed2246d7320e079bdebd84d9503 (diff) |
babel (22apr19)
git-svn-id: svn://tug.org/texlive/trunk@50951 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 | 80 |
1 files changed, 70 insertions, 10 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/babel.def b/Master/texmf-dist/tex/generic/babel/babel.def index 530548f8eec..1b65f99346f 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/04/03 3.29 Babel common definitions] +\ProvidesFile{babel.def}[2019/04/22 3.30 Babel common definitions] \ifx\AtBeginDocument\@undefined \input plain.def\relax \fi @@ -1304,7 +1304,11 @@ \bbl@trace{Creating languages and reading ini files} \newcommand\babelprovide[2][]{% \let\bbl@savelangname\languagename + \edef\bbl@savelocaleid{\the\localeid}% + % Set name and locale id \def\languagename{#2}% + \bbl@id@assign + \chardef\localeid\@nameuse{bbl@id@@\languagename}% \let\bbl@KVP@captions\@nil \let\bbl@KVP@import\@nil \let\bbl@KVP@main\@nil @@ -1314,6 +1318,7 @@ \let\bbl@KVP@hyphenrules\@nil \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}{\bbl@csarg\def{KVP@##1}{##2}}% TODO - error handling @@ -1346,7 +1351,25 @@ \\\foreignlanguage{\languagename}% {####1}}}}% {}% - % To override script and language names + % 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: ids and a few + % more. + \bbl@ifunset{bbl@lname@#2}% + {\def\BabelBeforeIni##1##2{% + \begingroup + \catcode`\[=12 \catcode`\]=12 \catcode`\==12 % + \let\bbl@ini@captions@aux\@gobbletwo + \def\bbl@inidate ####1.####2.####3.####4\relax ####5####6{}% + \let\bbl@inikv@typography\bbl@iniskip + \bbl@read@ini{##1}% + \bbl@exportkey{chrng}{characters.ranges}{}% + \bbl@exportkey{dgnat}{numbers.digits.native}{}% + \endgroup}% boxed, to avoid extra spaces: + {\setbox\z@\hbox{\InputIfFileExists{babel-#2.tex}{}{}}}}% + {}% + % - + % Override script and language names with script= and language= \ifx\bbl@KVP@script\@nil\else \bbl@csarg\edef{sname@#2}{\bbl@KVP@script}% \fi @@ -1378,7 +1401,7 @@ \fi \bbl@exp{\\\bbl@add\\\bbl@mapselect{\\\bbl@mapdir{\languagename}}}% \fi - % For Southeast Asian, if interspace in ini + % For Southeast Asian, if interspace in ini -- TODO: as hook \ifcase\bbl@engine\or \bbl@ifunset{bbl@intsp@\languagename}{}% {\expandafter\ifx\csname bbl@intsp@\languagename\endcsname\@empty\else @@ -1430,7 +1453,7 @@ \fi}% \fi \fi - % Native digits, if provided in ini + % Native digits, if provided in ini (TeX level, xe and lua) \ifcase\bbl@engine\else \bbl@ifunset{bbl@dgnat@\languagename}{}% {\expandafter\ifx\csname bbl@dgnat@\languagename\endcsname\@empty\else @@ -1447,6 +1470,42 @@ \fi \fi}% \fi + % Native digits (lua level). + \ifodd\bbl@engine + \ifx\bbl@KVP@mapdigits\@nil\else + \bbl@ifunset{bbl@dgnat@\languagename}{}% + {\RequirePackage{luatexbase}% + \bbl@activate@preotf + \directlua{ + Babel = Babel or {} %%% -> presets in luababel + Babel.digits_mapped = true + Babel.digits = Babel.digits or {} + Babel.digits[\the\localeid] = + table.pack(string.utfvalue('\bbl@cs{dgnat@\languagename}')) + if not Babel.numbers then + function Babel.numbers(head) + local LOCALE = luatexbase.registernumber'bbl@attr@locale' + local GLYPH = node.id'glyph' + local inmath = false + for item in node.traverse(head) do + if not inmath and item.id == GLYPH then + local temp = node.get_attribute(item, LOCALE) + if Babel.digits[temp] then + local chr = item.char + if chr > 47 and chr < 58 then + item.char = Babel.digits[temp][chr-47] + end + end + elseif item.id == node.id'math' then + inmath = (item.subtype == 0) + end + end + return head + end + end + }} + \fi + \fi % 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 @@ -1457,7 +1516,8 @@ \catcode`\@=\atcatcode \let\atcatcode\relax \fi}% - \let\languagename\bbl@savelangname} + \let\languagename\bbl@savelangname + \chardef\localeid\bbl@savelocaleid\relax} \def\bbl@setdigits#1#2#3#4#5{% \bbl@exp{% \def\<\languagename digits>####1{% ie, \langdigits @@ -1567,7 +1627,7 @@ {}}% so, l@<lang> is ok - nothing to do {\bbl@exp{\\\adddialect\<l@#1>\bbl@tempa}}}% found in opt list or ini \def\bbl@read@ini#1{% - \openin1=babel-#1.ini + \openin1=babel-#1.ini % FIXME - number must not be hardcoded \ifeof1 \bbl@error {There is no ini file for the requested language\\% @@ -1678,7 +1738,7 @@ \ifcase\bbl@engine \bbl@csarg\def{inikv@date.gregorian.licr}#1=#2\@@{% override \bbl@inidate#1...\relax{#2}{}} - \bbl@csarg\def{secpre@date.gregorian.licr}{% discard uni + \bbl@csarg\def{secpre@date.gregorian.licr}{% discard uni \ifcase\bbl@engine\let\bbl@savedate\@empty\fi} \fi \def\bbl@inidate#1.#2.#3.#4\relax#5#6{% TODO - ignore with 'captions' @@ -2063,7 +2123,7 @@ \fi \fi} \def\bbl@textdir#1{% - \bbl@setluadir{text}\textdir{#1}% TODO - ?\linedir + \bbl@setluadir{text}\textdir{#1}% \chardef\bbl@thetextdir#1\relax \setattribute\bbl@attr@dir{\numexpr\bbl@thepardir*3+#1}} \def\bbl@pardir#1{% @@ -2076,9 +2136,9 @@ % Activated every math with the package option bidi=: \def\bbl@mathboxdir{% \ifcase\bbl@thetextdir\relax - \everyhbox{\bgroup\aftergroup\egroup\textdir TLT\relax}% + \everyhbox{\textdir TLT\relax}% \else - \everyhbox{\bgroup\aftergroup\egroup\textdir TRT\relax}% + \everyhbox{\textdir TRT\relax}% \fi} \else % pdftex=0, xetex=2 \AddBabelHook{babel-bidi}{afterextras}{\bbl@switchdir} |