diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/babel')
35 files changed, 367 insertions, 268 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua index a981db5b267..01e953123f3 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua +++ b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua @@ -32,7 +32,6 @@ -- and covered by LPPL is defined by the unpacking scripts (with -- extension |.ins|) which are part of the distribution. -- - Babel = Babel or {} Babel.bidi_enabled = true @@ -162,7 +161,7 @@ function Babel.bidi(head, ispar) elseif first_d and dir ~= strong_lr then dir_mark(head, first_d, last_d, outer) first_d, last_d = nil, nil - end + end end if dir and not last_lr and dir ~= 'l' and outer == 'r' then item.char = characters[item.char] and diff --git a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua index 4d0d19156f0..a903680a47f 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua +++ b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua @@ -32,7 +32,6 @@ -- and covered by LPPL is defined by the unpacking scripts (with -- extension |.ins|) which are part of the distribution. -- - Babel = Babel or {} -- eg, Babel.fontmap[1][<prefontid>]=<dirfontid> @@ -102,7 +101,7 @@ end -- TODO - \hbox with an explicit dir can lead to wrong results -- <R \hbox dir TLT{<R>}> and <L \hbox dir TRT{<L>}>. A small attempt --- was s made to improve the situation, but the problem is the 3-dir +-- was made to improve the situation, but the problem is the 3-dir -- model in babel/Unicode and the 2-dir model in LuaTeX don't fit -- well. @@ -124,6 +123,7 @@ function Babel.bidi(head, ispar, hdir) local has_hyperlink = false local ATDIR = Babel.attr_dir + local attr_d local save_outer local temp = node.get_attribute(head, ATDIR) @@ -158,6 +158,8 @@ function Babel.bidi(head, ispar, hdir) if glyph_not_symbol_font(item) or (item.id == 7 and item.subtype == 2) then + if node.get_attribute(item, ATDIR) == 128 then goto nextnode end + local d_font = nil local item_r if item.id == 7 and item.subtype == 2 then @@ -165,6 +167,7 @@ function Babel.bidi(head, ispar, hdir) else item_r = item end + local chardata = characters[item_r.char] d = chardata and chardata.d or nil if not d or d == 'nsm' then @@ -292,6 +295,7 @@ function Babel.bidi(head, ispar, hdir) -- Force mathdir in math if ON (currently works as expected only -- with 'l') + if inmath and d == 'on' then d = ('TRT' == tex.mathdir) and 'r' or 'l' end @@ -307,9 +311,12 @@ function Babel.bidi(head, ispar, hdir) table.insert(nodes, {item, d, outer_first}) end + node.set_attribute(item, ATDIR, 128) outer_first = nil - end + ::nextnode:: + + end -- for each node -- TODO -- repeated here in case EN/ET is the last node. Find a -- better way of doing things: @@ -470,3 +477,12 @@ function Babel.bidi(head, ispar, hdir) return head end +-- Make sure anything is marked as 'bidi done' (including nodes inserted +-- after the babel algorithm). +function Babel.unset_atdir(head) + local ATDIR = Babel.attr_dir + for item in node.traverse(head) do + node.set_attribute(item, ATDIR, 128) + end + return head +end diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex index d9e77aa25ea..837d83ff400 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex +++ b/Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex @@ -32,7 +32,6 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \def\bbl@ca@buddhist#1-#2-#3\@@#4#5#6{% \edef#4{\number\numexpr#1+543\relax}% \edef#5{#2}% diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex index 15eed489707..cff847e02c4 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex +++ b/Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex @@ -32,7 +32,6 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \ExplSyntaxOn \def\bbl@fpmod#1#2{(#1-#2*floor(#1/#2))} \def\bbl@cs@gregleap#1{% diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex index 449567ed8ad..43d23a1479e 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex +++ b/Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex @@ -32,7 +32,6 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \ExplSyntaxOn \def\bbl@fpmod#1#2{(#1-#2*floor(#1/#2))} \def\bbl@cs@gregleap#1{% diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex index b1d94e1a454..95a8ef64656 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex +++ b/Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex @@ -32,7 +32,6 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \ExplSyntaxOn \def\bbl@fpmod#1#2{(#1-#2*floor(#1/#2))} \def\bbl@cs@gregleap#1{% diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex index 8964a0c2417..88e7a997ba6 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex +++ b/Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex @@ -32,7 +32,6 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \newcount\bbl@cntcommon \def\bbl@remainder#1#2#3{% #3=#1\relax diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex index b769b5fcd11..28c5dd9dc03 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex +++ b/Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex @@ -32,7 +32,6 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \ExplSyntaxOn \def\bbl@fpmod#1#2{(#1-#2*floor(#1/#2))} \def\bbl@cs@gregleap#1{% diff --git a/Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex b/Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex index b0f26920b0b..f896cbeba63 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex +++ b/Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex @@ -32,7 +32,6 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \ExplSyntaxOn \def\bbl@fpmod#1#2{(#1-#2*floor(#1/#2))} \def\bbl@cs@gregleap#1{% diff --git a/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua b/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua index 7aa786c41cf..65e251fa88d 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua +++ b/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua @@ -32,7 +32,6 @@ -- and covered by LPPL is defined by the unpacking scripts (with -- extension |.ins|) which are part of the distribution. -- - -- Data from Unicode and ConTeXt Babel = Babel or {} @@ -43,16 +42,13 @@ Babel.ranges = { {0x07C0, 0x085F, 'r'}, {0x0860, 0x086F, 'al'}, {0x08A0, 0x08FF, 'al'}, - {0xE000, 0xF8FF, 'on'}, -- PUA {0xFB1D, 0xFB4F, 'r'}, {0xFB50, 0xFDFF, 'al'}, {0xFE70, 0xFEFF, 'al'}, {0x10800, 0x10C4F, 'r'}, {0x1E800, 0x1E8DF, 'r'}, {0x1E900, 0x1E95F, 'r'}, - {0x1F300, 0x1F9FF, 'on'}, - {0xF0000, 0xFFFFD, 'on'}, -- PUA - {0x100000, 0x10FFFD, 'on'} -- PUA + {0x1F300, 0x1F9FF, 'on'} } Babel.characters = { diff --git a/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua b/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua index fc6e5bb17dc..f175090b6f5 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua +++ b/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua @@ -32,7 +32,6 @@ -- and covered by LPPL is defined by the unpacking scripts (with -- extension |.ins|) which are part of the distribution. -- - Babel = Babel or {} Babel.cjk_characters = { @@ -196,14 +195,39 @@ Babel.cjk_characters = { [0x301D]={c='op'}, [0x301E]={c='cl'}, [0x301F]={c='cl'}, + [0x3043]={c='cj'}, + [0x3045]={c='cj'}, + [0x3047]={c='cj'}, + [0x3049]={c='cj'}, + [0x3063]={c='cj'}, + [0x3083]={c='cj'}, + [0x3085]={c='cj'}, + [0x3087]={c='cj'}, + [0x308E]={c='cj'}, + [0x3095]={c='cj'}, + [0x3096]={c='cj'}, [0x303B]={c='ns'}, [0x303C]={c='ns'}, + [0x3041]={c='cj'}, [0x309B]={c='ns'}, [0x309C]={c='ns'}, [0x309D]={c='ns'}, [0x309E]={c='ns'}, [0x30A0]={c='ns'}, + [0x30A1]={c='cj'}, + [0x30A3]={c='cj'}, + [0x30A5]={c='cj'}, + [0x30A7]={c='cj'}, + [0x30A9]={c='cj'}, + [0x30C3]={c='cj'}, + [0x30E3]={c='cj'}, + [0x30E5]={c='cj'}, + [0x30E7]={c='cj'}, + [0x30EE]={c='cj'}, + [0x30F5]={c='cj'}, + [0x30F6]={c='cj'}, [0x30FB]={c='ns'}, + [0x30FC]={c='cj'}, [0x30FD]={c='ns'}, [0x30FE]={c='ns'}, [0xA015]={c='ns'}, @@ -273,25 +297,33 @@ Babel.cjk_characters = { [0xFF61]={c='cl', w='h'}, [0xFF62]={c='op', w='h'}, [0xFF63]={c='cl', w='h'}, - [0xFF64]={c='cl', w='h'} + [0xFF64]={c='cl', w='h'}, + [0xFF70]={c='cj'} } Babel.cjk_class = setmetatable ( Babel.cjk_characters, { __index = function(_, k) if (k >= 0xAC00 and k <= 0xD7A3) -- H2/H3 - or (k >= 0x2E80 and k <= 0x9FFF) + or (k >= 0x2E80 and k <= 0x31E9) -- Skip small + or (k >= 0x3200 and k <= 0x9FFF) or (k >= 0xA000 and k <= 0xA48F) -- Yi or (k >= 0xA490 and k <= 0xA4CF) -- Yi or (k >= 0xF900 and k <= 0xFAFF) or (k >= 0xFE10 and k <= 0xFE1F) or (k >= 0xFE30 and k <= 0xFE6F) - or (k >= 0xFF00 and k <= 0xFFEF) + or (k >= 0xFF00 and k <= 0xFF66) -- Skip small + or (k >= 0xFF70 and k <= 0xFFEF) or (k >= 0x1F000 and k <= 0x1FFFD) or (k >= 0x20000 and k <= 0x2FFFD) or (k >= 0x30000 and k <= 0x3FFFD) then return {c='I'} elseif (k >= 0x20A0 and k <= 0x20CF) then return {c='pr'} + elseif (k >= 0x31F0 and k <= 0x31FF) + or (k >= 0xFF67 and k <= 0xFF6F) + or (k >= 0x1B150 and k <= 0x1B152) + or (k >= 0x1B164 and k <= 0x1B167) then + return {c='cj'} else return {c='O'} end diff --git a/Master/texmf-dist/tex/generic/babel/babel-transforms.lua b/Master/texmf-dist/tex/generic/babel/babel-transforms.lua index 08ee95e770c..db86cda98c0 100644 --- a/Master/texmf-dist/tex/generic/babel/babel-transforms.lua +++ b/Master/texmf-dist/tex/generic/babel/babel-transforms.lua @@ -32,11 +32,18 @@ -- and covered by LPPL is defined by the unpacking scripts (with -- extension |.ins|) which are part of the distribution. -- - Babel.linebreaking.replacements = {} Babel.linebreaking.replacements[0] = {} -- pre Babel.linebreaking.replacements[1] = {} -- post +function Babel.tovalue(v) + if type(v) == 'string' then + return loadstring('return ' .. v)() + else + return v + end +end + -- Discretionaries contain strings as nodes function Babel.str_to_nodes(fn, matches, base) local n, head, last diff --git a/Master/texmf-dist/tex/generic/babel/babel.def b/Master/texmf-dist/tex/generic/babel/babel.def index 79036acd022..9849206d626 100644 --- a/Master/texmf-dist/tex/generic/babel/babel.def +++ b/Master/texmf-dist/tex/generic/babel/babel.def @@ -32,7 +32,6 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \ifx\ldf@quit\@undefined\else \endinput\fi % Same line! \ifx\ProvidesFile\@undefined @@ -40,8 +39,8 @@ \wlog{File: #1 #4 #3 <#2>}% \let\ProvidesFile\@undefined} \fi -\ProvidesFile{babel.def}[2024/06/26 v24.7 Babel common definitions] -\ifx\AtBeginDocument\@undefined % TODO. change test. +\ProvidesFile{babel.def}[2024/09/18 v24.10 Babel common definitions] +\ifx\AtBeginDocument\@undefined \def\@empty{} \def\loadlocalcfg#1{% \openin0#1.cfg @@ -596,8 +595,8 @@ \toks@\expandafter{\bbl@tempc#3}% \expandafter\edef\csname extras\languagename\endcsname{\the\toks@}% \fi} -\def\bbl@version{24.7} -\def\bbl@date{2024/06/26} +\def\bbl@version{24.10} +\def\bbl@date{2024/09/18} \ifx\language\@undefined \csname newcount\endcsname\language \fi @@ -738,30 +737,8 @@ \let\endselectlanguage\relax \def\BabelContentsFiles{toc,lof,lot} \def\bbl@set@language#1{% from selectlanguage, pop@ - % The old buggy way. Preserved for compatibility. - \edef\languagename{% - \ifnum\escapechar=\expandafter`\string#1\@empty - \else\string#1\@empty\fi}% - \ifcat\relax\noexpand#1% - \expandafter\ifx\csname date\languagename\endcsname\relax - \edef\languagename{#1}% - \let\localename\languagename - \else - \bbl@info{Using '\string\language' instead of 'language' is\\% - deprecated. If what you want is to use a\\% - macro containing the actual locale, make\\% - sure it does not not match any language.\\% - Reported}% - \ifx\scantokens\@undefined - \def\localename{??}% - \else - \scantokens\expandafter{\expandafter - \def\expandafter\localename\expandafter{\languagename}}% - \fi - \fi - \else - \def\localename{#1}% This one has the correct catcodes - \fi + % The old buggy way. Preserved for compatibility, but simplified + \edef\languagename{\expandafter\string#1\@empty}% \select@language{\languagename}% % write to auxs \expandafter\ifx\csname date\languagename\endcsname\relax\else @@ -778,16 +755,21 @@ \let\bbl@savelastskip\relax \newif\ifbbl@bcpallowed \bbl@bcpallowedfalse -\def\select@language#1{% from set@, babel@aux +\def\select@language#1{% from set@, babel@aux, babel@toc \ifx\bbl@selectorname\@empty \def\bbl@selectorname{select}% - % set hymap \fi + % set hymap \ifnum\bbl@hymapsel=\@cclv\chardef\bbl@hymapsel4\relax\fi - % set name + % set name (when coming from babel@aux) \edef\languagename{#1}% \bbl@fixname\languagename - % TODO. name@map must be here? + % define \localename when coming from set@, with a trick + \ifx\scantokens\@undefined + \def\localename{??}% + \else + \bbl@exp{\\\scantokens{\def\\\localename{\languagename}\\\noexpand}\relax}% + \fi \bbl@provide@locale \bbl@iflanguage\languagename{% \let\bbl@select@type\z@ @@ -795,7 +777,7 @@ \def\babel@aux#1#2{% \select@language{#1}% \bbl@foreach\BabelContentsFiles{% \relax -> don't assume vertical mode - \@writefile{##1}{\babel@toc{#1}{#2}\relax}}}% TODO - plain? + \@writefile{##1}{\babel@toc{#1}{#2}\relax}}}% \def\babel@toc#1#2{% \select@language{#1}} \newif\ifbbl@usedategroup @@ -824,7 +806,7 @@ \csname captions#1\endcsname\relax \fi \bbl@xin@{,date,}{,\bbl@select@opts,}% - \ifin@ % if \foreign... within \<lang>date + \ifin@ % if \foreign... within \<language>date \csname date#1\endcsname\relax \fi \fi @@ -864,6 +846,12 @@ \ifin@\else\bbl@xin@{/k}{/\bbl@tempa}\fi % only kashida \ifin@\else\bbl@xin@{/p}{/\bbl@tempa}\fi % padding (eg, Tibetan) \ifin@\else\bbl@xin@{/v}{/\bbl@tempa}\fi % variable font + % hyphenation - save mins + \babel@savevariable\lefthyphenmin + \babel@savevariable\righthyphenmin + \ifnum\bbl@engine=\@ne + \babel@savevariable\hyphenationmin + \fi \ifin@ % unhyphenated/kashida/elongated/padding = allow stretching \language\l@unhyphenated @@ -875,16 +863,18 @@ % other = select patterns \bbl@patterns{#1}% \fi - % hyphenation - mins - \babel@savevariable\lefthyphenmin - \babel@savevariable\righthyphenmin + % hyphenation - set mins \expandafter\ifx\csname #1hyphenmins\endcsname\relax \set@hyphenmins\tw@\thr@@\relax + \@nameuse{bbl@hyphenmins@}% \else \expandafter\expandafter\expandafter\set@hyphenmins \csname #1hyphenmins\endcsname\relax \fi - % reset selector name + \@nameuse{bbl@hyphenmins@}% + \@nameuse{bbl@hyphenmins@\languagename}% + \@nameuse{bbl@hyphenatmin@}% + \@nameuse{bbl@hyphenatmin@\languagename}% \let\bbl@selectorname\@empty} \long\def\otherlanguage#1{% \def\bbl@selectorname{other}% @@ -928,6 +918,9 @@ \BabelText{#2}% Still in vertical mode! {\par}% \endgroup} +\providecommand\BabelWrapText[1]{% + \def\bbl@tempa{\def\BabelText####1}% + \expandafter\bbl@tempa\expandafter{\BabelText{#1}}} \def\foreign@language#1{% % set name \edef\languagename{#1}% @@ -936,6 +929,7 @@ \bbl@usedategroupfalse \fi \bbl@fixname\languagename + \let\localename\languagename % TODO. name@map here? \bbl@provide@locale \bbl@iflanguage\languagename{% @@ -1244,7 +1238,7 @@ \catcode`\@=\atcatcode \let\atcatcode\relax \catcode`\==\eqcatcode \let\eqcatcode\relax \endinput} -\def\bbl@afterldf#1{% TODO. Merge into the next macro? Unused elsewhere +\def\bbl@afterldf#1{% \bbl@afterlang \let\bbl@afterlang\relax \let\BabelModifiers\relax @@ -1260,11 +1254,14 @@ \@onlypreamble\ldf@finish \def\main@language#1{% \def\bbl@main@language{#1}% - \let\languagename\bbl@main@language % TODO. Set localename + \let\languagename\bbl@main@language + \let\localename\bbl@main@language + \let\mainlocalename\bbl@main@language \bbl@id@assign \bbl@patterns{\languagename}} \def\bbl@beforestart{% \def\@nolanerr##1{% + \bbl@carg\chardef{l@##1}\z@ \bbl@warning{Undefined language '##1' in aux.\\Reported}}% \bbl@usehooks{beforestart}{}% \global\let\bbl@beforestart\relax} @@ -1272,8 +1269,8 @@ {\@nameuse{bbl@beforestart}}% Group! \if@filesw \providecommand\babel@aux[2]{}% - \immediate\write\@mainaux{% - \string\providecommand\string\babel@aux[2]{}}% + \immediate\write\@mainaux{\unexpanded{% + \providecommand\babel@aux[2]{\global\let\babel@toc\@gobbletwo}}}% \immediate\write\@mainaux{\string\@nameuse{bbl@beforestart}}% \fi \expandafter\selectlanguage\expandafter{\bbl@main@language}% @@ -1283,7 +1280,7 @@ \global\let\babel@aux\@gobbletwo % Also as flag \fi} \ifcase\bbl@engine\or - \AtBeginDocument{\pagedir\bodydir} % TODO - a better place + \AtBeginDocument{\pagedir\bodydir} \fi \def\select@language@x#1{% \ifcase\bbl@select@type @@ -1420,7 +1417,7 @@ \bbl@afterfi\csname#1@sh@#2@sel\endcsname \fi} \begingroup -\bbl@ifunset{ifincsname}% TODO. Ugly. Correct? Only Plain? +\bbl@ifunset{ifincsname}% {\gdef\active@prefix#1{% \ifx\protect\@typeset@protect \else @@ -1502,7 +1499,7 @@ \expandafter\@firstoftwo \fi} \def\user@group{user} -\def\language@group{english} % TODO. I don't like defaults +\def\language@group{english} \def\system@group{system} \def\useshorthands{% \@ifstar\bbl@usesh@s{\bbl@usesh@x{}}} @@ -1794,6 +1791,23 @@ {\csname bbl@hyphenation@\bbl@tempa\endcsname\space}% #2}}}% \fi}} +\ifx\NewDocumentCommand\@undefined\else + \NewDocumentCommand\babelhyphenmins{sommo}{% + \IfNoValueTF{#2}% + {\protected@edef\bbl@hyphenmins@{\set@hyphenmins{#3}{#4}}% + \IfValueT{#5}{% + \protected@edef\bbl@hyphenatmin@{\hyphenationmin=#5\relax}}% + \IfBooleanT{#1}{% + \lefthyphenmin=#3\relax + \righthyphenmin=#4\relax + \IfValueT{#5}{\hyphenationmin=#5\relax}}}% + {\edef\bbl@tempb{\zap@space#2 \@empty}% + \bbl@for\bbl@tempa\bbl@tempb{% + \@namedef{bbl@hyphenmins@\bbl@tempa}{\set@hyphenmins{#3}{#4}}% + \IfValueT{#5}{% + \@namedef{bbl@hyphenatmin@\bbl@tempa}{\hyphenationmin=#5\relax}}}% + \IfBooleanT{#1}{\bbl@error{hyphenmins-args}{}{}{}}}} +\fi \def\bbl@allowhyphens{\ifvmode\else\nobreak\hskip\z@skip\fi} \def\bbl@t@one{T1} \def\allowhyphens{\ifx\cf@encoding\bbl@t@one\else\bbl@allowhyphens\fi} @@ -2026,7 +2040,7 @@ \bbl@xin@{,}{\bbl@language@opts}% \chardef\bbl@opt@hyphenmap\ifin@4\else\@ne\fi \fi} -\newcommand\setlocalecaption{% TODO. Catch typos. +\newcommand\setlocalecaption{% \@ifstar\bbl@setcaption@s\bbl@setcaption@x} \def\bbl@setcaption@x#1#2#3{% language caption-name string \bbl@trim@def\bbl@tempa{#2}% diff --git a/Master/texmf-dist/tex/generic/babel/babel.sty b/Master/texmf-dist/tex/generic/babel/babel.sty index 0c68ee32a62..02a6e7ca591 100644 --- a/Master/texmf-dist/tex/generic/babel/babel.sty +++ b/Master/texmf-dist/tex/generic/babel/babel.sty @@ -32,9 +32,8 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \NeedsTeXFormat{LaTeX2e}[2005/12/01] -\ProvidesPackage{babel}[2024/06/26 v24.7 The Babel package] +\ProvidesPackage{babel}[2024/09/18 v24.10 The Babel package] \@ifpackagewith{babel}{debug} {\providecommand\bbl@trace[1]{\message{^^J[ #1 ]}}% \let\bbl@debug\@firstofone @@ -308,7 +307,7 @@ #1\ifx\@empty#2\else,\bbl@afterfi\bbl@tempb#2\fi}% \def\bbl@tempe#1=#2\@@{% \bbl@csarg\edef{mod@#1}{\bbl@tempb#2}} -\def\bbl@tempd#1.#2\@nnil{% TODO. Refactor lists? +\def\bbl@tempd#1.#2\@nnil{% \ifx\@empty#2% \edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1}% \else @@ -317,7 +316,7 @@ \edef\bbl@tempc{% \ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1.\bbl@tempb#2}% \else - \in@{$modifiers$}{$#1$}% TODO. Allow spaces. + \in@{$modifiers$}{$#1$}% \ifin@ \bbl@tempe#2\@@ \else @@ -344,8 +343,8 @@ \DeclareOption{shorthands=off}{\bbl@tempa shorthands=\bbl@tempa} \chardef\bbl@iniflag\z@ \DeclareOption{provide=*}{\chardef\bbl@iniflag\@ne} % main -> +1 -\DeclareOption{provide+=*}{\chardef\bbl@iniflag\tw@} % add = 2 -\DeclareOption{provide*=*}{\chardef\bbl@iniflag\thr@@} % add + main +\DeclareOption{provide+=*}{\chardef\bbl@iniflag\tw@} % second = 2 +\DeclareOption{provide*=*}{\chardef\bbl@iniflag\thr@@} % second + main \let\bbl@autoload@options\@empty \DeclareOption{provide@=*}{\def\bbl@autoload@options{import}} \newif\ifbbl@single @@ -466,8 +465,8 @@ \expandafter\@secondoftwo \fi} \fi -\def\bbl@version{24.7} -\def\bbl@date{2024/06/26} +\def\bbl@version{24.10} +\def\bbl@date{2024/09/18} \ifx\language\@undefined \csname newcount\endcsname\language \fi @@ -551,7 +550,7 @@ \ifx\babelprovide\@undefined \bbl@error{base-on-the-fly}{}{}{}% \fi - \let\bbl@auxname\languagename % Still necessary. TODO + \let\bbl@auxname\languagename % Still necessary. \bbl@ifunset{bbl@bcp@map@\languagename}{}% Move uplevel?? {\edef\languagename{\@nameuse{bbl@bcp@map@\languagename}}}% \ifbbl@bcpallowed @@ -636,30 +635,8 @@ \let\endselectlanguage\relax \def\BabelContentsFiles{toc,lof,lot} \def\bbl@set@language#1{% from selectlanguage, pop@ - % The old buggy way. Preserved for compatibility. - \edef\languagename{% - \ifnum\escapechar=\expandafter`\string#1\@empty - \else\string#1\@empty\fi}% - \ifcat\relax\noexpand#1% - \expandafter\ifx\csname date\languagename\endcsname\relax - \edef\languagename{#1}% - \let\localename\languagename - \else - \bbl@info{Using '\string\language' instead of 'language' is\\% - deprecated. If what you want is to use a\\% - macro containing the actual locale, make\\% - sure it does not not match any language.\\% - Reported}% - \ifx\scantokens\@undefined - \def\localename{??}% - \else - \scantokens\expandafter{\expandafter - \def\expandafter\localename\expandafter{\languagename}}% - \fi - \fi - \else - \def\localename{#1}% This one has the correct catcodes - \fi + % The old buggy way. Preserved for compatibility, but simplified + \edef\languagename{\expandafter\string#1\@empty}% \select@language{\languagename}% % write to auxs \expandafter\ifx\csname date\languagename\endcsname\relax\else @@ -676,16 +653,21 @@ \let\bbl@savelastskip\relax \newif\ifbbl@bcpallowed \bbl@bcpallowedfalse -\def\select@language#1{% from set@, babel@aux +\def\select@language#1{% from set@, babel@aux, babel@toc \ifx\bbl@selectorname\@empty \def\bbl@selectorname{select}% - % set hymap \fi + % set hymap \ifnum\bbl@hymapsel=\@cclv\chardef\bbl@hymapsel4\relax\fi - % set name + % set name (when coming from babel@aux) \edef\languagename{#1}% \bbl@fixname\languagename - % TODO. name@map must be here? + % define \localename when coming from set@, with a trick + \ifx\scantokens\@undefined + \def\localename{??}% + \else + \bbl@exp{\\\scantokens{\def\\\localename{\languagename}\\\noexpand}\relax}% + \fi \bbl@provide@locale \bbl@iflanguage\languagename{% \let\bbl@select@type\z@ @@ -693,7 +675,7 @@ \def\babel@aux#1#2{% \select@language{#1}% \bbl@foreach\BabelContentsFiles{% \relax -> don't assume vertical mode - \@writefile{##1}{\babel@toc{#1}{#2}\relax}}}% TODO - plain? + \@writefile{##1}{\babel@toc{#1}{#2}\relax}}}% \def\babel@toc#1#2{% \select@language{#1}} \newif\ifbbl@usedategroup @@ -722,7 +704,7 @@ \csname captions#1\endcsname\relax \fi \bbl@xin@{,date,}{,\bbl@select@opts,}% - \ifin@ % if \foreign... within \<lang>date + \ifin@ % if \foreign... within \<language>date \csname date#1\endcsname\relax \fi \fi @@ -762,6 +744,12 @@ \ifin@\else\bbl@xin@{/k}{/\bbl@tempa}\fi % only kashida \ifin@\else\bbl@xin@{/p}{/\bbl@tempa}\fi % padding (eg, Tibetan) \ifin@\else\bbl@xin@{/v}{/\bbl@tempa}\fi % variable font + % hyphenation - save mins + \babel@savevariable\lefthyphenmin + \babel@savevariable\righthyphenmin + \ifnum\bbl@engine=\@ne + \babel@savevariable\hyphenationmin + \fi \ifin@ % unhyphenated/kashida/elongated/padding = allow stretching \language\l@unhyphenated @@ -773,16 +761,18 @@ % other = select patterns \bbl@patterns{#1}% \fi - % hyphenation - mins - \babel@savevariable\lefthyphenmin - \babel@savevariable\righthyphenmin + % hyphenation - set mins \expandafter\ifx\csname #1hyphenmins\endcsname\relax \set@hyphenmins\tw@\thr@@\relax + \@nameuse{bbl@hyphenmins@}% \else \expandafter\expandafter\expandafter\set@hyphenmins \csname #1hyphenmins\endcsname\relax \fi - % reset selector name + \@nameuse{bbl@hyphenmins@}% + \@nameuse{bbl@hyphenmins@\languagename}% + \@nameuse{bbl@hyphenatmin@}% + \@nameuse{bbl@hyphenatmin@\languagename}% \let\bbl@selectorname\@empty} \long\def\otherlanguage#1{% \def\bbl@selectorname{other}% @@ -826,6 +816,9 @@ \BabelText{#2}% Still in vertical mode! {\par}% \endgroup} +\providecommand\BabelWrapText[1]{% + \def\bbl@tempa{\def\BabelText####1}% + \expandafter\bbl@tempa\expandafter{\BabelText{#1}}} \def\foreign@language#1{% % set name \edef\languagename{#1}% @@ -834,6 +827,7 @@ \bbl@usedategroupfalse \fi \bbl@fixname\languagename + \let\localename\languagename % TODO. name@map here? \bbl@provide@locale \bbl@iflanguage\languagename{% @@ -1142,7 +1136,7 @@ \catcode`\@=\atcatcode \let\atcatcode\relax \catcode`\==\eqcatcode \let\eqcatcode\relax \endinput} -\def\bbl@afterldf#1{% TODO. Merge into the next macro? Unused elsewhere +\def\bbl@afterldf#1{% \bbl@afterlang \let\bbl@afterlang\relax \let\BabelModifiers\relax @@ -1158,11 +1152,14 @@ \@onlypreamble\ldf@finish \def\main@language#1{% \def\bbl@main@language{#1}% - \let\languagename\bbl@main@language % TODO. Set localename + \let\languagename\bbl@main@language + \let\localename\bbl@main@language + \let\mainlocalename\bbl@main@language \bbl@id@assign \bbl@patterns{\languagename}} \def\bbl@beforestart{% \def\@nolanerr##1{% + \bbl@carg\chardef{l@##1}\z@ \bbl@warning{Undefined language '##1' in aux.\\Reported}}% \bbl@usehooks{beforestart}{}% \global\let\bbl@beforestart\relax} @@ -1170,8 +1167,8 @@ {\@nameuse{bbl@beforestart}}% Group! \if@filesw \providecommand\babel@aux[2]{}% - \immediate\write\@mainaux{% - \string\providecommand\string\babel@aux[2]{}}% + \immediate\write\@mainaux{\unexpanded{% + \providecommand\babel@aux[2]{\global\let\babel@toc\@gobbletwo}}}% \immediate\write\@mainaux{\string\@nameuse{bbl@beforestart}}% \fi \expandafter\selectlanguage\expandafter{\bbl@main@language}% @@ -1193,7 +1190,7 @@ \let\bbl@normalsf\normalsfcodes \let\normalsfcodes\relax} % Hack, to delay the setting \ifcase\bbl@engine\or - \AtBeginDocument{\pagedir\bodydir} % TODO - a better place + \AtBeginDocument{\pagedir\bodydir} \fi \def\select@language@x#1{% \ifcase\bbl@select@type @@ -1330,7 +1327,7 @@ \bbl@afterfi\csname#1@sh@#2@sel\endcsname \fi} \begingroup -\bbl@ifunset{ifincsname}% TODO. Ugly. Correct? Only Plain? +\bbl@ifunset{ifincsname}% {\gdef\active@prefix#1{% \ifx\protect\@typeset@protect \else @@ -1412,7 +1409,7 @@ \expandafter\@firstoftwo \fi} \def\user@group{user} -\def\language@group{english} % TODO. I don't like defaults +\def\language@group{english} \def\system@group{system} \def\useshorthands{% \@ifstar\bbl@usesh@s{\bbl@usesh@x{}}} @@ -1704,6 +1701,23 @@ {\csname bbl@hyphenation@\bbl@tempa\endcsname\space}% #2}}}% \fi}} +\ifx\NewDocumentCommand\@undefined\else + \NewDocumentCommand\babelhyphenmins{sommo}{% + \IfNoValueTF{#2}% + {\protected@edef\bbl@hyphenmins@{\set@hyphenmins{#3}{#4}}% + \IfValueT{#5}{% + \protected@edef\bbl@hyphenatmin@{\hyphenationmin=#5\relax}}% + \IfBooleanT{#1}{% + \lefthyphenmin=#3\relax + \righthyphenmin=#4\relax + \IfValueT{#5}{\hyphenationmin=#5\relax}}}% + {\edef\bbl@tempb{\zap@space#2 \@empty}% + \bbl@for\bbl@tempa\bbl@tempb{% + \@namedef{bbl@hyphenmins@\bbl@tempa}{\set@hyphenmins{#3}{#4}}% + \IfValueT{#5}{% + \@namedef{bbl@hyphenatmin@\bbl@tempa}{\hyphenationmin=#5\relax}}}% + \IfBooleanT{#1}{\bbl@error{hyphenmins-args}{}{}{}}}} +\fi \def\bbl@allowhyphens{\ifvmode\else\nobreak\hskip\z@skip\fi} \def\bbl@t@one{T1} \def\allowhyphens{\ifx\cf@encoding\bbl@t@one\else\bbl@allowhyphens\fi} @@ -1936,7 +1950,7 @@ \bbl@xin@{,}{\bbl@language@opts}% \chardef\bbl@opt@hyphenmap\ifin@4\else\@ne\fi \fi} -\newcommand\setlocalecaption{% TODO. Catch typos. +\newcommand\setlocalecaption{% \@ifstar\bbl@setcaption@s\bbl@setcaption@x} \def\bbl@setcaption@x#1#2#3{% language caption-name string \bbl@trim@def\bbl@tempa{#2}% @@ -2284,7 +2298,7 @@ {}% \let\bbl@KVP@date\@empty \fi - \let\bbl@KVP@captions@@\bbl@KVP@captions % TODO. A dirty hack + \let\bbl@KVP@captions@@\bbl@KVP@captions \ifx\bbl@KVP@captions\@nnil \let\bbl@KVP@captions\bbl@KVP@import \fi @@ -2371,7 +2385,6 @@ \fi \bbl@exp{\\\bbl@add\\\bbl@starthyphens {\\\bbl@patterns@lua{\languagename}}}% - % TODO - error/warning if no script \directlua{ if Babel.script_blocks['\bbl@cl{sbcp}'] then Babel.loc_to_scr[\the\localeid] = Babel.script_blocks['\bbl@cl{sbcp}'] @@ -2442,7 +2455,7 @@ \bbl@csarg\edef{intsp@#2}{\bbl@KVP@intraspace}% \fi \bbl@provide@intraspace - % == Line breaking: CJK quotes == TODO -> @extras + % == Line breaking: CJK quotes == \ifcase\bbl@engine\or \bbl@xin@{/c}{/\bbl@cl{lnbrk}}% \ifin@ @@ -3251,7 +3264,7 @@ \bbl@csarg\let{inikv@transforms.posthyphenation}\bbl@inikv \def\bbl@transforms@aux#1#2#3#4,#5\relax{% #1[#2]{#3}{#4}{#5}} -\begingroup % A hack. TODO. Don't require an specific order +\begingroup % A hack. TODO. Don't require a specific order \catcode`\%=12 \catcode`\&=14 \gdef\bbl@transforms#1#2#3{&% @@ -3932,8 +3945,8 @@ \def\bbl@patchfont#1{\AddToHook{selectfont}{#1}} \bbl@trace{Loading basic (internal) bidi support} \ifodd\bbl@engine -\else % TODO. Move to txtbabel - \ifnum\bbl@bidimode>100 \ifnum\bbl@bidimode<200 % Any xe+lua bidi= +\else % TODO. Move to txtbabel. Any xe+lua bidi + \ifnum\bbl@bidimode>100 \ifnum\bbl@bidimode<200 \bbl@error{bidi-only-lua}{}{}{}% \let\bbl@beforeforeign\leavevmode \AtEndOfPackage{% @@ -3944,7 +3957,9 @@ \ifx\RTLfootnotetext\@undefined \AtEndOfPackage{% \EnableBabelHook{babel-bidi}% - \bbl@loadfontspec % bidi needs fontspec + \ifx\fontspec\@undefined + \usepackage{fontspec}% bidi needs fontspec + \fi \usepackage#1{bidi}% \let\bbl@digitsdotdash\DigitsDotDashInterCharToks \def\DigitsDotDashInterCharToks{% See the 'bidi' package @@ -3978,7 +3993,7 @@ \fi \bbl@trace{Macros to switch the text direction} \def\bbl@alscripts{,Arabic,Syriac,Thaana,} -\def\bbl@rscripts{% TODO. Base on codes ?? +\def\bbl@rscripts{% ,Imperial Aramaic,Avestan,Cypriot,Hatran,Hebrew,% Old Hungarian,Lydian,Mandaean,Manichaean,% Meroitic Cursive,Meroitic,Old North Arabian,% @@ -4015,8 +4030,10 @@ \bbl@pardir{#1}% <- Must precede \bbl@textdir \fi \bbl@textdir{#1}} -\AddBabelHook{babel-bidi}{afterextras}{\bbl@switchdir} -\DisableBabelHook{babel-bidi} +\ifnum\bbl@bidimode>\z@ + \AddBabelHook{babel-bidi}{afterextras}{\bbl@switchdir} + \DisableBabelHook{babel-bidi} +\fi \ifodd\bbl@engine % luatex=1 \else % pdftex=0, xetex=2 \newcount\bbl@dirlevel @@ -4072,19 +4089,15 @@ \else {\setbox\z@\lastbox\beginR\box\z@}% \fi}% - \let\bbl@severypar\everypar - \newtoks\everypar - \everypar=\bbl@severypar - \bbl@severypar{\bbl@xeeverypar\the\everypar}} + \AddToHook{para/begin}{\bbl@xeeverypar}} \ifnum\bbl@bidimode>200 % Any xe bidi= \let\bbl@textdir@i\@gobbletwo \let\bbl@xebidipar\@empty \AddBabelHook{bidi}{foreign}{% - \def\bbl@tempa{\def\BabelText####1}% \ifcase\bbl@thetextdir - \expandafter\bbl@tempa\expandafter{\BabelText{\LR{##1}}}% + \BabelWrapText{\LR{##1}}% \else - \expandafter\bbl@tempa\expandafter{\BabelText{\RL{##1}}}% + \BabelWrapText{\RL{##1}}% \fi} \def\bbl@pardir#1{\ifcase#1\relax\setLR\else\setRL\fi} \fi diff --git a/Master/texmf-dist/tex/generic/babel/blplain.tex b/Master/texmf-dist/tex/generic/babel/blplain.tex index f960bc6bf1d..e6a4076d6d1 100644 --- a/Master/texmf-dist/tex/generic/babel/blplain.tex +++ b/Master/texmf-dist/tex/generic/babel/blplain.tex @@ -32,7 +32,6 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \catcode`\{=1 % left brace is begin-group character \catcode`\}=2 % right brace is end-group character \catcode`\#=6 % hash mark is macro parameter character diff --git a/Master/texmf-dist/tex/generic/babel/bplain.tex b/Master/texmf-dist/tex/generic/babel/bplain.tex index b189e6f7dd7..0483d7eb722 100644 --- a/Master/texmf-dist/tex/generic/babel/bplain.tex +++ b/Master/texmf-dist/tex/generic/babel/bplain.tex @@ -32,7 +32,6 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \catcode`\{=1 % left brace is begin-group character \catcode`\}=2 % right brace is end-group character \catcode`\#=6 % hash mark is macro parameter character diff --git a/Master/texmf-dist/tex/generic/babel/errbabel.def b/Master/texmf-dist/tex/generic/babel/errbabel.def index 432899cb34e..9674a0fbf26 100644 --- a/Master/texmf-dist/tex/generic/babel/errbabel.def +++ b/Master/texmf-dist/tex/generic/babel/errbabel.def @@ -32,7 +32,6 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \catcode`\{=1 \catcode`\}=2 \catcode`\#=6 \catcode`\:=12 \catcode`\,=12 \catcode`\.=12 \catcode`\-=12 \catcode`\'=12 \catcode`\(=12 \catcode`\)=12 @@ -100,19 +99,19 @@ {This macro is available only in LuaLaTeX and XeLaTeX.}% {Consider switching to these engines.} \bbl@errmessage{only-lua} - {This macro is available only in LuaLaTeX.}% + {This macro is available only in LuaLaTeX}% {Consider switching to that engine.} \bbl@errmessage{unknown-provide-key} {Unknown key '#1' in \string\babelprovide}% {See the manual for valid keys}% \bbl@errmessage{unknown-mapfont} {Option '\bbl@KVP@mapfont' unknown for\\% - mapfont. Use 'direction'.}% + mapfont. Use 'direction'}% {See the manual for details.} \bbl@errmessage{no-ini-file} {There is no ini file for the requested language\\% (#1: \languagename). Perhaps you misspelled it or your\\% - installation is not complete.}% + installation is not complete}% {Fix the name or reinstall babel.} \bbl@errmessage{digits-is-reserved} {The counter name 'digits' is reserved for mapping\\% @@ -120,7 +119,7 @@ {Use another name.} \bbl@errmessage{limit-two-digits} {Currently two-digit years are restricted to the\\ - range 0-9999.}% + range 0-9999}% {There is little you can do. Sorry.} \bbl@errmessage{alphabetic-too-large} {Alphabetic numeral too large (#1)}% @@ -132,20 +131,20 @@ {See the manual for details.} \bbl@errmessage{unknown-ini-field} {Unknown field '#1' in \string\BCPdata.\\% - Perhaps you misspelled it.}% + Perhaps you misspelled it}% {See the manual for details.} \bbl@errmessage{unknown-locale-key} {Unknown key for locale '#2':\\% #3\\% - \string#1 will be set to \relax}% + \string#1 will be set to \string\relax}% {Perhaps you misspelled it.}% \bbl@errmessage{adjust-only-vertical} {Currently, #1 related features can be adjusted only\\% - in the main vertical list.}% + in the main vertical list}% {Maybe things change in the future, but this is what it is.} \bbl@errmessage{layout-only-vertical} {Currently, layout related features can be adjusted only\\% - in vertical mode.}% + in vertical mode}% {Maybe things change in the future, but this is what it is.} \bbl@errmessage{bidi-only-lua} {The bidi method 'basic' is available only in\\% @@ -175,11 +174,11 @@ {See the manual for further info} \bbl@errmessage{unknown-interchar} {'#1' for '\languagename' cannot be enabled.\\% - Maybe there is a typo.}% + Maybe there is a typo}% {See the manual for further details.} \bbl@errmessage{unknown-interchar-b} {'#1' for '\languagename' cannot be disabled.\\% - Maybe there is a typo.}% + Maybe there is a typo}% {See the manual for further details.} \bbl@errmessage{charproperty-only-vertical} {\string\babelcharproperty\space can be used only in\\% @@ -214,7 +213,11 @@ {The '#1' ldf style doesn't work with #2,\\% but you can use the ini locale instead.\\% Try adding 'provide=*' to the option list. You may\\% - also want to set 'bidi=' to some value.}% + also want to set 'bidi=' to some value}% + {See the manual for further details.} +\bbl@errmessage{hyphenmins-args} + {\string\babelhyphenmins\ accepts either the optional\\% + argument or the star, but not both at the same time}% {See the manual for further details.} \endinput %% diff --git a/Master/texmf-dist/tex/generic/babel/hyphen.cfg b/Master/texmf-dist/tex/generic/babel/hyphen.cfg index 53ff26e70c1..1bc77d78776 100644 --- a/Master/texmf-dist/tex/generic/babel/hyphen.cfg +++ b/Master/texmf-dist/tex/generic/babel/hyphen.cfg @@ -32,16 +32,15 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \ifx\ProvidesFile\@undefined \def\ProvidesFile#1[#2 #3 #4]{% \wlog{File: #1 #4 #3 <#2>}% \let\ProvidesFile\@undefined} \fi -\ProvidesFile{hyphen.cfg}[2024/06/26 v24.7 Babel hyphens] +\ProvidesFile{hyphen.cfg}[2024/09/18 v24.10 Babel hyphens] \xdef\bbl@format{\jobname} -\def\bbl@version{24.7} -\def\bbl@date{2024/06/26} +\def\bbl@version{24.10} +\def\bbl@date{2024/09/18} \ifx\AtBeginDocument\@undefined \def\@empty{} \fi diff --git a/Master/texmf-dist/tex/generic/babel/locale/ccp/babel-ccp.ini b/Master/texmf-dist/tex/generic/babel/locale/ccp/babel-ccp.ini index 0e0c9cc5734..d2f98bc65db 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/ccp/babel-ccp.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/ccp/babel-ccp.ini @@ -4,11 +4,12 @@ ; * Common Locale Data Repository (license Unicode): ; http://cldr.unicode.org/ ; http://unicode.org/copyright.html +; With some cleaning up by Stephen Huan (@stephen-huan) [identification] charset = utf8 -version = 1.0 -date = 2023-12-09 +version = 1.1 +date = 2024-08-11 name.local = 𑄌𑄋𑄴𑄟𑄳𑄦 name.english = Chakma name.babel = chakma @@ -146,8 +147,6 @@ hyphenationmin = [characters] ranges = 11100..1114F - -[characters] delimiters.quotes = auxiliary = exemplarCharacters = [𑄀 𑄁 𑄂 𑄃 𑄄 𑄅 𑄆 𑄇 𑄈 𑄉 𑄊 𑄋 𑄌 𑄍 𑄎 𑄏 𑄐 𑄑 𑄒 𑄓 𑄔 𑄕 𑄖 𑄗 𑄘 𑄙 𑄚 𑄛 𑄜 𑄝 𑄞 𑄟 𑄠 𑄡 𑄢 𑄣 𑄤 𑄥 𑄦 𑄧 𑄨 𑄩 𑄪 𑄫 𑄬 𑄭 𑄮 𑄯 𑄰 𑄱 𑄲 𑄳 𑄴] diff --git a/Master/texmf-dist/tex/generic/babel/locale/ckb/babel-ckb-Latn.ini b/Master/texmf-dist/tex/generic/babel/locale/ckb/babel-ckb-Latn.ini index 538f6426138..dd1f69945b3 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/ckb/babel-ckb-Latn.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/ckb/babel-ckb-Latn.ini @@ -8,11 +8,12 @@ ; * Common Locale Data Repository (license Unicode): ; http://cldr.unicode.org/ ; http://unicode.org/copyright.html +; With some cleaning up by Stephen Huan (@stephen-huan) [identification] charset = utf8 -version = 1.5 -date = 2022-12-08 +version = 1.6 +date = 2024-08-11 name.local = Kurdîy nawendî name.english = Central Kurdish name.babel = sorani centralkurdish-latin @@ -66,18 +67,6 @@ months.wide.9 = Eylûl months.wide.10 = Tişrînî Yekem months.wide.11 = Tişrînî Dûhem months.wide.12 = Kanûnî Dûhem -months.wide.1 = -months.wide.2 = -months.wide.3 = -months.wide.4 = -months.wide.5 = -months.wide.6 = -months.wide.7 = -months.wide.8 = -months.wide.9 = -months.wide.10 = -months.wide.11 = -months.wide.12 = months.narrow.1 = months.narrow.2 = months.narrow.3 = diff --git a/Master/texmf-dist/tex/generic/babel/locale/cu/babel-cu-Cyrs.ini b/Master/texmf-dist/tex/generic/babel/locale/cu/babel-cu-Cyrs.ini index 15248a46c52..27e5c237aec 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/cu/babel-cu-Cyrs.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/cu/babel-cu-Cyrs.ini @@ -6,11 +6,12 @@ ; * Common Locale Data Repository (license Unicode): ; http://cldr.unicode.org/ ; http://unicode.org/copyright.html +; With some cleaning up by Stephen Huan (@stephen-huan) [identification] charset = utf8 -version = 1.4 -date = 2022-12-08 +version = 1.5 +date = 2024-08-11 name.local = словѣ́ньскъ ѩꙁꙑ́къ name.english = Church Slavic name.babel = churchslavic-oldcyrillic @@ -36,7 +37,6 @@ contents = Содержа́нїе} listfigure = Надписа́нїе и҆з̾ѡбраже́нїй listtable = Надписа́нїе табли́цъ index = Предмѣ́тный ᲂу҆каза́тель -author = И҆менно́й ᲂу҆каза́тель figure = И҆з̾ѡбраже́нїе table = Табли́ца part = Ча́сть diff --git a/Master/texmf-dist/tex/generic/babel/locale/he/babel-he.ini b/Master/texmf-dist/tex/generic/babel/locale/he/babel-he.ini index 613a08b47b7..f0c1b90487f 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/he/babel-he.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/he/babel-he.ini @@ -6,11 +6,12 @@ ; * Common Locale Data Repository (license Unicode): ; http://cldr.unicode.org/ ; http://unicode.org/copyright.html +; With some cleaning up by Stephen Huan (@stephen-huan) [identification] charset = utf8 -version = 1.10 -date = 2023-08-31 +version = 1.11 +date = 2024-08-11 name.local = עברית name.english = Hebrew name.babel = hebrew @@ -47,7 +48,7 @@ headto = אל page = עמוד see = ראה also = ראה גם -proof = הוכחה} +proof = הוכחה glossary = מילון מונחים [captions.licr] diff --git a/Master/texmf-dist/tex/generic/babel/locale/ja/babel-ja.ini b/Master/texmf-dist/tex/generic/babel/locale/ja/babel-ja.ini index 1d44a83d6ae..eab65831399 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/ja/babel-ja.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/ja/babel-ja.ini @@ -1,3 +1,4 @@ + ; This file is part of babel. For further details see: ; https://www.ctan.org/pkg/babel ; Data has been collected mainly from the following sources: @@ -9,8 +10,8 @@ [identification] charset = utf8 -version = 1.11 -date = 2024-04-18 +version = 1.12 +date = 2024-08-27 name.local = 日本語 name.english = Japanese name.babel = japanese @@ -197,4 +198,35 @@ parenthesized.ideograph = ㈠ ㈡ ㈢ ㈣ ㈤ ㈥ ㈦ ㈧ ㈨ ㈩ fullwidth.lower.alpha = a b c d e f g h i j k l m n o p q r s t u v w x y z fullwidth.upper.alpha = A B C D E F G H I J K L M N O P Q R S T U V W X Y Z +[transforms.prehyphenation] +linebreak.strict.1.0 = { [々ぁぃぅぇぉっゃゅょゎ゛-ゞァィゥェォッャュョヮヵヶゕゖㇰ-ㇿ・-ヾ・-ゥェ-ー゙] } +linebreak.strict.1.1 = { insert, penalty = 10000, step = 1 } +linebreak.strict.1.2 = {} +; +spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.1.1 = { insert, kern = -.5 } +spacing.basic.1.2 = { insert, penalty = 0 } +spacing.basic.1.3 = { insert, kern = .5 } +spacing.basic.1.4 = { insert, norule = -.5 0 0 } +spacing.basic.1.5 = {} +spacing.basic.2.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[、。,.・:!?)]}〉》」』】〕〗〙〛”〞]() } +spacing.basic.2.1 = { insert, kern= -.5, step = -1 } +spacing.basic.2.2 = {} +spacing.basic.3.0 = { [([{〈《「『【〔〖〘〚“〝] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.3.1 = { insert, kern = -.5, step =- 1 } +spacing.basic.3.2 = {} +; +spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() } +spacing.basic.4.1 = { insert, kern = -.5, step = -1 } +spacing.basic.4.2 = { insert, penalty = 0 } +spacing.basic.4.3 = { insert, kern = .5 } +spacing.basic.4.4 = {} +spacing.basic.5.0 = { [{a}] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.5.1 = { insert, penalty = 0 } +spacing.basic.5.2 = { insert, kern = .5 } +spacing.basic.5.3 = { insert, norule = -.5 0 0 } +spacing.basic.5.4 = {} +spacing.basic.6.0 = { ^()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.6.1 = { insert, kern = -.5 } +spacing.basic.6.2 = {} diff --git a/Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko-Hani.ini b/Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko-Hani.ini index eff48777f29..1bd1ed86d61 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko-Hani.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko-Hani.ini @@ -6,11 +6,12 @@ ; * Common Locale Data Repository (license Unicode): ; http://cldr.unicode.org/ ; http://unicode.org/copyright.html +; With some cleaning up by Stephen Huan (@stephen-huan) [identification] charset = utf8 -version = 1.5 -date = 2024-04-18 +version = 1.6 +date = 2024-08-11 name.local = 한국어 name.english = Korean name.babel = korean-han korean-hani @@ -56,9 +57,6 @@ see = also = proof = 證明 glossary = 語 彙 -section.template = [[presection]] [section] [[postsection]] -presection = 第 -postsection = 節 [captions.licr] preface = diff --git a/Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko.ini b/Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko.ini index a56ab37a39c..5bb9db0de60 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko.ini @@ -6,11 +6,12 @@ ; * Common Locale Data Repository (license Unicode): ; http://cldr.unicode.org/ ; http://unicode.org/copyright.html +; With some cleaning up by Stephen Huan (@stephen-huan) [identification] charset = utf8 -version = 1.13 -date = 2024-04-18 +version = 1.14 +date = 2024-08-11 name.local = 한국어 name.english = Korean name.babel = korean @@ -57,9 +58,6 @@ see = also = proof = 증명 glossary = 용어집 -section.template = [[presection]] [section] [[postsection]] -presection = 제 -postsection = 절 [captions.licr] preface = diff --git a/Master/texmf-dist/tex/generic/babel/locale/mk/babel-mk.ini b/Master/texmf-dist/tex/generic/babel/locale/mk/babel-mk.ini index 1fa9142b128..937a336ea20 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/mk/babel-mk.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/mk/babel-mk.ini @@ -8,11 +8,12 @@ ; http://unicode.org/copyright.html ; * Some typos fixed by Stojan Trajanovski ; * Some typos fixed by Dario Gjorgjevski +; With some cleaning up by Stephen Huan (@stephen-huan) [identification] charset = utf8 -version = 1.6 -date = 2022-09-07 +version = 1.7 +date = 2024-08-11 name.local = македонски name.english = Macedonian name.babel = macedonian @@ -49,7 +50,7 @@ page = стр. see = види also = види исто така proof = доказ -glossaryname = Речник +glossary = Речник [captions.licr] preface = \CYRP\cyrr\cyre\cyrd\cyrg\cyro\cyrv\cyro\cyrr diff --git a/Master/texmf-dist/tex/generic/babel/locale/ro/babel-ro.ini b/Master/texmf-dist/tex/generic/babel/locale/ro/babel-ro.ini index d75c53e5428..734bd0049de 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/ro/babel-ro.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/ro/babel-ro.ini @@ -6,11 +6,12 @@ ; * Common Locale Data Repository (license Unicode): ; http://cldr.unicode.org/ ; http://unicode.org/copyright.html +; With some cleaning up by Stephen Huan (@stephen-huan) [identification] charset = utf8 -version = 1.4 -date = 2022-10-12 +version = 1.5 +date = 2024-08-11 name.local = română name.english = Romanian name.babel = romanian @@ -36,7 +37,7 @@ appendix = Anexa contents = Cuprins listfigure = Listă de figuri listtable = Listă de tabele -index = Index +index = Glosar figure = Figura table = Tabela part = Partea diff --git a/Master/texmf-dist/tex/generic/babel/locale/sl/babel-sl.ini b/Master/texmf-dist/tex/generic/babel/locale/sl/babel-sl.ini index 3fbf1a022e7..8b7531f6889 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/sl/babel-sl.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/sl/babel-sl.ini @@ -6,11 +6,12 @@ ; * Common Locale Data Repository (license Unicode): ; http://cldr.unicode.org/ ; http://unicode.org/copyright.html +; With some cleaning up by Stephen Huan (@stephen-huan) [identification] charset = utf8 -version = 1.3 -date = 2022-10-12 +version = 1.4 +date = 2024-08-11 name.local = slovenščina name.english = Slovenian name.babel = slovene slovenian @@ -47,7 +48,7 @@ page = Stran see = glej also = glej tudi proof = Dokaz -glossary = Glossary +glossary = Slovar [captions.licr] preface = Predgovor diff --git a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh.ini b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh.ini index 44bb43ad511..af779cf183d 100644 --- a/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh.ini +++ b/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh.ini @@ -11,8 +11,8 @@ [identification] charset = utf8 -version = 1.14 -date = 2023-10-24 +version = 1.15 +date = 2024-10-27 name.local = 中文 name.english = Chinese name.opentype = Chinese Simplified @@ -240,3 +240,31 @@ parenthesized.ideograph = ㈠ ㈡ ㈢ ㈣ ㈤ ㈥ ㈦ ㈧ ㈨ ㈩ fullwidth.lower.alpha = a b c d e f g h i j k l m n o p q r s t u v w x y z fullwidth.upper.alpha = A B C D E F G H I J K L M N O P Q R S T U V W X Y Z date.day = 初一 初二 初三 初四 初五 初六 初七 初八 初九 初十 十一 十二 十三 十四 十五 十六 十七 十八 十九 二十 廿一 廿二 廿三 廿四 廿五 廿六 廿七 廿八 廿九 三十 + +[transforms.prehyphenation] +spacing.basic.1.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.1.1 = { insert, kern = -.5 } +spacing.basic.1.2 = { insert, penalty = 0 } +spacing.basic.1.3 = { insert, kern = .5 } +spacing.basic.1.4 = { insert, norule = -.5 0 0 } +spacing.basic.1.5 = {} +spacing.basic.2.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[、。,.・:!?)]}〉》」』】〕〗〙〛”〞]() } +spacing.basic.2.1 = { insert, kern= -.5, step = -1 } +spacing.basic.2.2 = {} +spacing.basic.3.0 = { [([{〈《「『【〔〖〘〚“〝] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.3.1 = { insert, kern = -.5, step =- 1 } +spacing.basic.3.2 = {} +; +spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() } +spacing.basic.4.1 = { insert, kern = -.5, step = -1 } +spacing.basic.4.2 = { insert, penalty = 0 } +spacing.basic.4.3 = { insert, kern = .5 } +spacing.basic.4.4 = {} +spacing.basic.5.0 = { [{a}] ()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.5.1 = { insert, penalty = 0 } +spacing.basic.5.2 = { insert, kern = .5 } +spacing.basic.5.3 = { insert, norule = -.5 0 0 } +spacing.basic.5.4 = {} +spacing.basic.6.0 = { ^()[([{〈《「『【〔〖〘〚“〝]() } +spacing.basic.6.1 = { insert, kern = -.5 } +spacing.basic.6.2 = {} diff --git a/Master/texmf-dist/tex/generic/babel/luababel.def b/Master/texmf-dist/tex/generic/babel/luababel.def index f4383a33ce4..22f8fdadd5d 100644 --- a/Master/texmf-dist/tex/generic/babel/luababel.def +++ b/Master/texmf-dist/tex/generic/babel/luababel.def @@ -32,7 +32,6 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \ifx\AddBabelHook\@undefined % When plain.def, babel.sty starts \bbl@trace{Read language.dat} \ifx\bbl@readstream\@undefined @@ -178,8 +177,6 @@ {\expandafter\expandafter\expandafter\bbl@luapatterns \csname bbl@hyphendata@\the\language\endcsname}}{}} \endinput\fi - % Here ends \ifx\AddBabelHook\@undefined - % A few lines are only read by hyphen.cfg \ifx\DisableBabelHook\@undefined \AddBabelHook{luatex}{everylanguage}{% \def\process@language##1##2##3{% @@ -195,9 +192,6 @@ {\expandafter\expandafter\expandafter\bbl@tempb \csname bbl@hyphendata@\the\language\endcsname}} \endinput\fi - % Here stops reading code for hyphen.cfg - % The following is read the 2nd time it's loaded - % First, global declarations for lua \begingroup % TODO - to a lua file \catcode`\%=12 \catcode`\'=12 @@ -496,8 +490,10 @@ end class = props.cjk_quotes[item.char] end - if class == 'cp' then class = 'cl' end % )] as CL - if class == 'id' then class = 'I' end + if class == 'cp' then class = 'cl' % )] as CL + elseif class == 'id' then class = 'I' + elseif class == 'cj' then class = 'I' % loose + end local br = 0 if class and last_class and Babel.cjk_breaks[last_class][class] then @@ -544,10 +540,10 @@ end func(head) end end + lang.hyphenate(head) if Babel.cjk_enabled then Babel.cjk_linebreak(head) end - lang.hyphenate(head) if Babel.linebreaking.after then for k, func in ipairs(Babel.linebreaking.after) do func(head) @@ -844,23 +840,10 @@ end } \endgroup \fi\fi % ends Arabic just block: \ifnum\bbl@bidimode>100... +\bbl@trace{Font handling with fontspec} \AddBabelHook{babel-fontspec}{afterextras}{\bbl@switchfont} \AddBabelHook{babel-fontspec}{beforestart}{\bbl@ckeckstdfonts} \DisableBabelHook{babel-fontspec} -\bbl@trace{Font handling with fontspec} -\ifx\ExplSyntaxOn\@undefined\else - \def\bbl@fs@warn@nx#1#2{% \bbl@tempfs is the original macro - \in@{,#1,}{,no-script,language-not-exist,}% - \ifin@\else\bbl@tempfs@nx{#1}{#2}\fi} - \def\bbl@fs@warn@nxx#1#2#3{% - \in@{,#1,}{,no-script,language-not-exist,}% - \ifin@\else\bbl@tempfs@nxx{#1}{#2}{#3}\fi} - \def\bbl@loadfontspec{% - \let\bbl@loadfontspec\relax - \ifx\fontspec\@undefined - \usepackage{fontspec}% - \fi}% -\fi \@onlypreamble\babelfont \newcommand\babelfont[2][]{% 1=langs/scripts 2=fam \bbl@foreach{#1}{% @@ -871,8 +854,10 @@ end \fi}% \edef\bbl@tempa{#1}% \def\bbl@tempb{#2}% Used by \bbl@bblfont - \bbl@loadfontspec - \EnableBabelHook{babel-fontspec}% Just calls \bbl@switchfont + \ifx\fontspec\@undefined + \usepackage{fontspec}% + \fi + \EnableBabelHook{babel-fontspec}% \bbl@bblfont} \newcommand\bbl@bblfont[2][]{% 1=features 2=fontname, @font=rm|sf|tt \bbl@ifunset{\bbl@tempb family}% @@ -996,17 +981,10 @@ end {\\\newfontscript{\bbl@cl{sname}}{\bbl@cl{sotf}}}% \<keys_if_exist:nnF>{fontspec-opentype}{Language/\bbl@cl{lname}}% {\\\newfontlanguage{\bbl@cl{lname}}{\bbl@cl{lotf}}}% - \let\\\bbl@tempfs@nx\<__fontspec_warning:nx>% - \let\<__fontspec_warning:nx>\\\bbl@fs@warn@nx - \let\\\bbl@tempfs@nxx\<__fontspec_warning:nxx>% - \let\<__fontspec_warning:nxx>\\\bbl@fs@warn@nxx \\\renewfontfamily\\#4% [\bbl@cl{lsys},% xetex removes unknown features :-( \ifcase\bbl@engine\or RawFeature={family=\bbl@tempb},\fi #2]}{#3}% ie \bbl@exp{..}{#3} - \bbl@exp{% - \let\<__fontspec_warning:nx>\\\bbl@tempfs@nx - \let\<__fontspec_warning:nxx>\\\bbl@tempfs@nxx}% \begingroup #4% \xdef#1{\f@family}% eg, \bbl@rmdflt@lang{FreeSerif(0)} @@ -1392,7 +1370,7 @@ end return head end % - function Babel.pre_otfload_h(head, gc, sz, pt, dir) + function Babel.pre_otfload_h(head, gc, sz, pt, dir) %%% TODO if Babel.numbers and Babel.digits_mapped then head = Babel.numbers(head) end @@ -1415,7 +1393,7 @@ end 'luaotfload.node_processor') or nil) }} \breakafterdirmode=1 -\ifnum\bbl@bidimode>\@ne % Any bidi= except default=1 +\ifnum\bbl@bidimode>\@ne % Any bidi= except default (=1) \let\bbl@beforeforeign\leavevmode \AtEndOfPackage{\EnableBabelHook{babel-bidi}} \RequirePackage{luatexbase} @@ -1426,6 +1404,9 @@ end require('babel-bidi-basic.lua') \or require('babel-bidi-basic-r.lua') + table.insert(Babel.ranges, {0xE000, 0xF8FF, 'on'}) + table.insert(Babel.ranges, {0xF0000, 0xFFFFD, 'on'}) + table.insert(Babel.ranges, {0x100000, 0x10FFFD, 'on'}) \fi} \newattribute\bbl@attr@dir \directlua{ Babel.attr_dir = luatexbase.registernumber'bbl@attr@dir' } @@ -1493,6 +1474,12 @@ end end luatexbase.add_to_callback("hpack_filter", Babel.math_box_dir, "Babel.math_box_dir", 0) + if Babel.unset_atdir then + luatexbase.add_to_callback("pre_linebreak_filter", Babel.unset_atdir, + "Babel.unset_atdir") + luatexbase.add_to_callback("hpack_filter", Babel.unset_atdir, + "Babel.unset_atdir") + end }}% \fi \DeclareRobustCommand\localebox[1]{% @@ -1682,6 +1669,21 @@ end \bbl@replace\bbl@tempa{transforms.}{}% \bbl@carg\bbl@transforms{babel\bbl@tempa}{##2}{##3}% \fi}% + \bbl@exp{% + \\\bbl@ifblank{\bbl@cl{dgnat}}% + {\let\\\bbl@tempa\relax}% + {\def\\\bbl@tempa{% + \\\bbl@elt{transforms.prehyphenation}% + {digits.native.1.0}{([0-9])}% + \\\bbl@elt{transforms.prehyphenation}% + {digits.native.1.1}{string={1\string|0123456789\string|\bbl@cl{dgnat}}}}}}% + \ifx\bbl@tempa\relax\else + \toks@\expandafter\expandafter\expandafter{% + \csname bbl@inidata@\languagename\endcsname}% + \bbl@csarg\edef{inidata@\languagename}{% + \unexpanded\expandafter{\bbl@tempa}% + \the\toks@}% + \fi \csname bbl@inidata@\languagename\endcsname \bbl@release@transforms\relax % \relax closes the last item. \fi} @@ -1702,7 +1704,9 @@ end {\chardef\bbl@tabular@mode\z@}% {\chardef\bbl@tabular@mode\@ne}}% Mixed, with LTR cols \ifnum\bbl@bidimode>\@ne % Any lua bidi= except default=1 - \ifcase\bbl@tabular@mode\or % 1 + % Redefine: vrules mess up dirs. TODO: why? + \def\@arstrut{\relax\copy\@arstrutbox}% + \ifcase\bbl@tabular@mode\or % 1 = Mixed - default \let\bbl@parabefore\relax \AddToHook{para/before}{\bbl@parabefore} \AtBeginDocument{% @@ -1727,7 +1731,7 @@ end {\\\do@row@strut\<fi>}{\\\do@row@strut\<fi>\egroup}}}% {}}% \fi}% - \or % 2 + \or % 2 = All RTL - tabular \let\bbl@parabefore\relax \AddToHook{para/before}{\bbl@parabefore}% \AtBeginDocument{% @@ -1753,9 +1757,9 @@ end \ifnum\bbl@bidimode>\z@ % Any bidi= \def\bbl@nextfake#1{% non-local changes, use always inside a group! \bbl@exp{% - \def\\\bbl@insidemath{0}% \mathdir\the\bodydir #1% Once entered in math, set boxes to restore values + \def\\\bbl@insidemath{0}% \<ifmmode>% \everyvbox{% \the\everyvbox diff --git a/Master/texmf-dist/tex/generic/babel/nil.ldf b/Master/texmf-dist/tex/generic/babel/nil.ldf index b9728218eac..eb8e0593468 100644 --- a/Master/texmf-dist/tex/generic/babel/nil.ldf +++ b/Master/texmf-dist/tex/generic/babel/nil.ldf @@ -32,8 +32,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - -\ProvidesLanguage{nil}[2024/06/26 v24.7 Nil language] +\ProvidesLanguage{nil}[2024/09/18 v24.10 Nil language] \LdfInit{nil}{datenil} \ifx\l@nil\@undefined \newlanguage\l@nil diff --git a/Master/texmf-dist/tex/generic/babel/plain.def b/Master/texmf-dist/tex/generic/babel/plain.def index f5f85e202d9..6624d517539 100644 --- a/Master/texmf-dist/tex/generic/babel/plain.def +++ b/Master/texmf-dist/tex/generic/babel/plain.def @@ -32,7 +32,6 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \input babel.def \endinput %% diff --git a/Master/texmf-dist/tex/generic/babel/switch.def b/Master/texmf-dist/tex/generic/babel/switch.def index 13f56013121..e991164458d 100644 --- a/Master/texmf-dist/tex/generic/babel/switch.def +++ b/Master/texmf-dist/tex/generic/babel/switch.def @@ -32,7 +32,6 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \let\bbl@onlyswitch\@empty \input babel.def \let\bbl@onlyswitch\@undefined diff --git a/Master/texmf-dist/tex/generic/babel/txtbabel.def b/Master/texmf-dist/tex/generic/babel/txtbabel.def index 70ae95c5d4b..380fb2380c7 100644 --- a/Master/texmf-dist/tex/generic/babel/txtbabel.def +++ b/Master/texmf-dist/tex/generic/babel/txtbabel.def @@ -32,7 +32,6 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \providecommand\bbl@provide@intraspace{} \bbl@trace{Redefinitions for bidi layout} \def\bbl@sspre@caption{% TODO: Unused! diff --git a/Master/texmf-dist/tex/generic/babel/xebabel.def b/Master/texmf-dist/tex/generic/babel/xebabel.def index 9775e235b39..ccb2f14b9fd 100644 --- a/Master/texmf-dist/tex/generic/babel/xebabel.def +++ b/Master/texmf-dist/tex/generic/babel/xebabel.def @@ -32,7 +32,6 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension |.ins|) which are part of the distribution. %% - \def\BabelStringsDefault{unicode} \let\xebbl@stop\relax \AddBabelHook{xetex}{encodedcommands}{% @@ -94,23 +93,10 @@ \fi}% \fi} \ifx\DisableBabelHook\@undefined\endinput\fi %%%% TODO: why +\bbl@trace{Font handling with fontspec} \AddBabelHook{babel-fontspec}{afterextras}{\bbl@switchfont} \AddBabelHook{babel-fontspec}{beforestart}{\bbl@ckeckstdfonts} \DisableBabelHook{babel-fontspec} -\bbl@trace{Font handling with fontspec} -\ifx\ExplSyntaxOn\@undefined\else - \def\bbl@fs@warn@nx#1#2{% \bbl@tempfs is the original macro - \in@{,#1,}{,no-script,language-not-exist,}% - \ifin@\else\bbl@tempfs@nx{#1}{#2}\fi} - \def\bbl@fs@warn@nxx#1#2#3{% - \in@{,#1,}{,no-script,language-not-exist,}% - \ifin@\else\bbl@tempfs@nxx{#1}{#2}{#3}\fi} - \def\bbl@loadfontspec{% - \let\bbl@loadfontspec\relax - \ifx\fontspec\@undefined - \usepackage{fontspec}% - \fi}% -\fi \@onlypreamble\babelfont \newcommand\babelfont[2][]{% 1=langs/scripts 2=fam \bbl@foreach{#1}{% @@ -121,8 +107,10 @@ \fi}% \edef\bbl@tempa{#1}% \def\bbl@tempb{#2}% Used by \bbl@bblfont - \bbl@loadfontspec - \EnableBabelHook{babel-fontspec}% Just calls \bbl@switchfont + \ifx\fontspec\@undefined + \usepackage{fontspec}% + \fi + \EnableBabelHook{babel-fontspec}% \bbl@bblfont} \newcommand\bbl@bblfont[2][]{% 1=features 2=fontname, @font=rm|sf|tt \bbl@ifunset{\bbl@tempb family}% @@ -246,17 +234,10 @@ {\\\newfontscript{\bbl@cl{sname}}{\bbl@cl{sotf}}}% \<keys_if_exist:nnF>{fontspec-opentype}{Language/\bbl@cl{lname}}% {\\\newfontlanguage{\bbl@cl{lname}}{\bbl@cl{lotf}}}% - \let\\\bbl@tempfs@nx\<__fontspec_warning:nx>% - \let\<__fontspec_warning:nx>\\\bbl@fs@warn@nx - \let\\\bbl@tempfs@nxx\<__fontspec_warning:nxx>% - \let\<__fontspec_warning:nxx>\\\bbl@fs@warn@nxx \\\renewfontfamily\\#4% [\bbl@cl{lsys},% xetex removes unknown features :-( \ifcase\bbl@engine\or RawFeature={family=\bbl@tempb},\fi #2]}{#3}% ie \bbl@exp{..}{#3} - \bbl@exp{% - \let\<__fontspec_warning:nx>\\\bbl@tempfs@nx - \let\<__fontspec_warning:nxx>\\\bbl@tempfs@nxx}% \begingroup #4% \xdef#1{\f@family}% eg, \bbl@rmdflt@lang{FreeSerif(0)} |