summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/babel
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/babel')
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua3
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua22
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-buddhist.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-chinese.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-coptic.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-ethiopic.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-islamic.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-ca-persian.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua6
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua40
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-transforms.lua9
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.def108
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.sty149
-rw-r--r--Master/texmf-dist/tex/generic/babel/blplain.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/bplain.tex1
-rw-r--r--Master/texmf-dist/tex/generic/babel/errbabel.def27
-rw-r--r--Master/texmf-dist/tex/generic/babel/hyphen.cfg7
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ccp/babel-ccp.ini7
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ckb/babel-ckb-Latn.ini17
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/cu/babel-cu-Cyrs.ini6
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/he/babel-he.ini7
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ja/babel-ja.ini36
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko-Hani.ini8
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ko/babel-ko.ini8
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/mk/babel-mk.ini7
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ro/babel-ro.ini7
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sl/babel-sl.ini7
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh.ini32
-rw-r--r--Master/texmf-dist/tex/generic/babel/luababel.def78
-rw-r--r--Master/texmf-dist/tex/generic/babel/nil.ldf3
-rw-r--r--Master/texmf-dist/tex/generic/babel/plain.def1
-rw-r--r--Master/texmf-dist/tex/generic/babel/switch.def1
-rw-r--r--Master/texmf-dist/tex/generic/babel/txtbabel.def1
-rw-r--r--Master/texmf-dist/tex/generic/babel/xebabel.def29
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)}