texlive[75958] Master/texmf-dist: babel (3aug25)

commits+karl at tug.org commits+karl at tug.org
Sun Aug 3 21:05:05 CEST 2025


Revision: 75958
          https://tug.org/svn/texlive?view=revision&revision=75958
Author:   karl
Date:     2025-08-03 21:05:05 +0200 (Sun, 03 Aug 2025)
Log Message:
-----------
babel (3aug25)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/babel/README.md
    trunk/Master/texmf-dist/doc/latex/babel/babel-code.pdf
    trunk/Master/texmf-dist/doc/latex/babel/babel.pdf
    trunk/Master/texmf-dist/source/latex/babel/babel.dtx
    trunk/Master/texmf-dist/source/latex/babel/babel.ins
    trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx
    trunk/Master/texmf-dist/source/latex/babel/locale.zip
    trunk/Master/texmf-dist/tex/generic/babel/babel.def
    trunk/Master/texmf-dist/tex/generic/babel/babel.sty
    trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg
    trunk/Master/texmf-dist/tex/generic/babel/locale/shared/babel-Arab.ini
    trunk/Master/texmf-dist/tex/generic/babel/luababel.def
    trunk/Master/texmf-dist/tex/generic/babel/nil.ldf

Modified: trunk/Master/texmf-dist/doc/latex/babel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/babel/README.md	2025-08-03 19:03:26 UTC (rev 75957)
+++ trunk/Master/texmf-dist/doc/latex/babel/README.md	2025-08-03 19:05:05 UTC (rev 75958)
@@ -1,6 +1,6 @@
-## Babel 25.11
+## Babel 25.12
 
-2025-07-13
+2025-08-03
 
 `Babel` is the multilingual framework to localize documents. It fully
 supports pdfLaTeX and the Unicode engines LuaLaTeX and XeLaTeX. A few
@@ -21,9 +21,9 @@
 
 The latest stable version is available on <https://ctan.org/pkg/babel>.
 
-Changes in version 25.11 are described in:
+Changes in version 25.12 are described in:
 
-https://latex3.github.io/babel/news/whats-new-in-babel-25.11.html
+https://latex3.github.io/babel/news/whats-new-in-babel-25.12.html
 
 Apart from the manual, you can find information and examples in:
 
@@ -59,20 +59,16 @@
 
 ### Summary of latest changes
 
+#### 25.12 (2025-08-03)
+
+* New option in provide: mapdot. A default is provide for the Arabic
+  locales, mapping the dot in counters to a hyphen.
+* Fix misaligned first line with kashida inside a \vbox (tsx747027).
+
 #### 25.11 (2025-07-13)
 
 * Fix error with `import` in `\PassOptionsToLocale` and lazy loading.
 * Changes related to Austrian German.
-
-#### 25.10 (2025-06-10)
-
-* A locale in `\DocumentMetada` not recognized by `babel` raised
-  a cryptic error (see issue #343).
-* Fixed error with `\ShowLocaleProperties` with some locales with
-  Unicode engines.
-* With `\DocumentMetadata` `\foreignlanguage enters in horizontal
-  mode.
-* New transform, for Russian: `transliteration.gost779b`.
        
 ### Previous changes
 

Modified: trunk/Master/texmf-dist/doc/latex/babel/babel-code.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/babel/babel.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/babel/babel.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/babel/babel.dtx	2025-08-03 19:03:26 UTC (rev 75957)
+++ trunk/Master/texmf-dist/source/latex/babel/babel.dtx	2025-08-03 19:05:05 UTC (rev 75958)
@@ -37,7 +37,7 @@
   lang       = en-001,
 }
 \ProvidesFile{babel.dtx}%
-  [2025/07/13 v25.11
+  [2025/08/03 v25.12
    The multilingual framework for pdfLaTeX, LuaLaTeX and XeLaTeX] 
 \documentclass{ltxdoc}
 \GetFileInfo{babel.dtx}
@@ -71,7 +71,7 @@
 \newcommand*\luatex{\textsf{luatex}}
 \newcommand\largetex{T\kern -.1517em\lower .45ex\hbox {E}\kern -.09emX}
 \newcommand*\nb[1]{}
-\newcommand*\m[1]{\mbox{$\langle$\normalfont\itshape#1\/$\rangle$}}
+\newcommand*\m[1]{\mbox{{\fontspec{FreeSerif}〈}\normalfont\itshape#1\/}{\fontspec{FreeSerif}〉}}
 \newcommand*\langlist{%
   \meta{language}\texttt{,}\meta{language}\texttt{,}...}
 \newcommand*\langvar{\m{language}}
@@ -149,7 +149,7 @@
   \catcode`\>=13
   \catcode`\|=13
   \AtBeginDocument{%
-    \gdef|{\verb|\def<##1>{$\langle${\rmfamily\itshape##1}$\rangle$}}}
+    \gdef|{\verb|\def<##1>{{\fontspec{FreeSerif}〈}{\rmfamily\itshape##1}{\fontspec{FreeSerif}〉}}}}
 \endgroup
 \def\verbatim{%
   \fboxsep=.8em
@@ -200,7 +200,7 @@
 \let\check at percent\relax
 % Changes to doc.sty (add <<...>> syntax)
 \def\Module#1{%
-  \mod at math@codes$\langle${\color{thered}$\mathsf{#1}$}$\rangle$}
+  \mod at math@codes$\langle${\color{thered}$\mathsf{#1}$}〉}
 \begingroup 
   \catcode`\<\active
   \catcode`\>\active
@@ -3996,7 +3996,7 @@
 the native digits of that language; the second takes a counter name as
 argument. With the option |maparabic| in |\babelprovide|, |\arabic| is
 redefined to produce the native digits (this is done \textit{globally},
-to avoid inconsistencies in, for example, page numbering, and note as
+to avoid inconsistencies in, for example, page numbering; note as
 well dates do not rely on |\arabic|.)
 
 For example:
@@ -4170,6 +4170,15 @@
 \New{3.45} In addition, native digits (in languages defining them) may
 be printed with the numeral style |digits|.
 
+\New{25.12} With |mapdot=|\m{text} as an option in ‘provide’, the
+standard counters (those starting with |\the...|) are traversed to
+replace each dot by the provided \m{text} in a locale-dependent way.
+Without a value, a default is used — currenty the only default value is
+for the Arabic (\texttt{ar}) locales, which is set to a hyphen (because
+the zero and the dot are very similar in this script). See the news
+page for further details.
+
+
 \subsection{Dates}
 
 \New{3.45} When the data is taken from an |ini| file, you may print the
@@ -4567,6 +4576,39 @@
 the current language. Font dependent transforms are always enabled and
 cannot be disabled.
 
+\Describe{\SetTrasformValue}{\marg{locale-name}\marg{variable-name}\marg{value}}
+
+This command allows adjustments (specifically numeric parameters in
+prehyphenation) in transform, which can be useful in those predeclared
+in \texttt{ini} files. Something like
+\verb+{<variable-name>|<default>}+
+employs the variable as set by this macro. The following variables are
+currently defined:
+\begin{itemize}
+\item For French and \texttt{punctuation.space}: \texttt{guillemet.natural},
+  \texttt{guillemet.plus}, \texttt{guillemet.minus},
+  \texttt{colon.natural}, \texttt{colon.plus}, \texttt{colon.minus},
+  \texttt{high.natural}, \texttt{high.plus}, \texttt{high.minus}. A
+  value of 1 is the current ordinary space. \New{24.13}
+\item For languages in the Hebrew script and \texttt{justification.interletter}:
+  |interletter.plus|, which sets the factor for the glue ‘plus’ value. By
+  default, .5. \New{25.8}
+\item For Japanese and \texttt{linebreak.strict}:
+  \texttt{small.natural}, \texttt{small.plus} and \texttt{small.minus}.
+  They are set when the transform is activated to the intraspace values.
+  In addition, the penalty, by default 10000, can be set with
+  \texttt{small.penalty}. \New{24.14}
+\end{itemize}
+
+\begin{example}
+  With:
+\begin{verbatim}
+\SetTransformValue{french}{colon.natural}{.8}
+\end{verbatim}
+the natural spacing with the colon is made slightly smaller (default is 1). 
+\end{example}
+
+
 \Describe{\ShowBabelTransforms}{\marg{string}}
 
 \New{25.7} Applies the current transforms to the string and shows in
@@ -6136,8 +6178,8 @@
 % \section{Tools}
 %
 %    \begin{macrocode}
-%<<version=25.11>>
-%<<date=2025/07/13>>
+%<<version=25.12>>
+%<<date=2025/08/03>>
 %    \end{macrocode}
 %
 % \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -6301,9 +6343,9 @@
 % For each element in the comma separated <key>|=|<value> list,
 % execute <code> with |#1| and |#2| as the key and the value of
 % current item (trimmed). In addition, the item is passed verbatim as
-% |#3|. With the <key> alone, it passes |\@empty| (i.e., the macro thus
-% named, not an empty argument, which is what you get with <key>|=|
-% and no value).
+% |#3|. With the <key> alone, it passes |\@empty| as value (i.e., the
+% macro thus named, not an empty argument, which is what you get with
+% <key>|=| and no value).
 %
 %    \begin{macrocode}
 \def\bbl at forkv#1#2{%
@@ -10373,7 +10415,8 @@
   \bbl at vforeach{captions,date,import,main,script,language,%
       hyphenrules,linebreaking,justification,mapfont,maparabic,%
       mapdigits,intraspace,intrapenalty,onchar,transforms,alph,%
-      Alph,labels,labels*,calendar,date,casing,interchar, at import}%
+      Alph,labels,labels*,mapdot,calendar,date,casing,interchar,%
+      @import}%
     {\bbl at csarg\let{KVP@##1}\@nnil}%
   \global\let\bbl at release@transforms\@empty
   \global\let\bbl at release@casing\@empty
@@ -10388,7 +10431,6 @@
   \expandafter\bbl at forkv\expandafter{\bbl at tempa}{%
     \in@{/}{##1}% With /, (re)sets a value in the ini
     \ifin@ 
-      \global\let\bbl at extend@ini\bbl at extend@ini at aux
       \bbl at renewinikey##1\@@{##2}%
     \else
       \bbl at csarg\ifx{KVP@##1}\@nnil\else
@@ -10446,7 +10488,15 @@
   \ifx\bbl at KVP@transforms\@nnil\else
     \bbl at replace\bbl at KVP@transforms{ }{,}%
   \fi
-  % == Load ini ==
+  % ==
+  \ifx\bbl at KVP@mapdot\@nnil\else
+    \def\bbl at tempa{\@empty}%
+    \ifx\bbl at KVP@mapdot\bbl at tempa\else
+      \bbl at exp{\gdef\<bbl at map@@.@@\languagename>{\[bbl at KVP@mapdot]}}%
+    \fi
+  \fi
+  % Load ini
+  % --------
   \ifcase\bbl at howloaded
     \bbl at provide@new{#2}%
   \else
@@ -10579,6 +10629,24 @@
         \\\babel at save\\\@Alph
         \let\\\@Alph\<bbl at cntr@\bbl at KVP@Alph @\languagename>}}%
   \fi
+  % == Counters: mapdot ==
+  \ifx\bbl at KVP@mapdot\@nnil\else
+    \bbl at foreach\bbl at list@the{%
+        \bbl at ifunset{the##1}{}%
+      {{\bbl at ncarg\let\bbl at tempd{the##1}%
+       \bbl at carg\bbl at sreplace{the##1}{.}{\bbl at map@lbl{.}}%
+       \expandafter\ifx\csname the##1\endcsname\bbl at tempd\else
+         \bbl at exp{\gdef\<the##1>{{\[the##1]}}}%
+       \fi}}}%
+    \edef\bbl at tempb{enumi,enumii,enumiii,enumiv}%
+    \bbl at foreach\bbl at tempb{%
+        \bbl at ifunset{label##1}{}%
+      {{\bbl at ncarg\let\bbl at tempd{label##1}%
+       \bbl at carg\bbl at sreplace{label##1}{.}{\bbl at map@lbl{.}}%
+       \expandafter\ifx\csname label##1\endcsname\bbl at tempd\else
+         \bbl at exp{\gdef\<label##1>{{\[label##1]}}}%
+       \fi}}}%
+  \fi
   % == Casing ==
   \bbl at release@casing
   \ifx\bbl at KVP@casing\@nnil\else
@@ -10920,6 +10988,7 @@
     \bbl at error{no-ini-file}{#1}{}{}%
   \else
     % == Store ini data in \bbl at inidata ==
+    \catcode`\ =10 \catcode`\"=12
     \catcode`\[=12 \catcode`\]=12 \catcode`\==12 \catcode`\&=12
     \catcode`\;=12 \catcode`\|=12 \catcode`\%=14 \catcode`\-=12
     \ifnum#2=\m at ne % Just for the info
@@ -11044,6 +11113,7 @@
 %
 %    \begin{macrocode}
 \def\bbl at renewinikey#1/#2\@@#3{%
+  \global\let\bbl at extend@ini\bbl at extend@ini at aux
   \edef\bbl at tempa{\zap at space #1 \@empty}%   section
   \edef\bbl at tempb{\zap at space #2 \@empty}%   key
   \bbl at trim\toks@{#3}%                      value
@@ -11317,59 +11387,46 @@
     {\@nameuse{bbl at map@#1@\languagename}}}
 %
 \def\bbl at map@lbl#1{%  #1:a sign, eg, .
-  \bbl at ifunset{bbl at map@@#1@@\languagename}%
-    {#1}%
-    {\@nameuse{bbl at map@@#1@@\languagename}}}
+  \ifincsname#1\else
+    \bbl at ifunset{bbl at map@@#1@@\languagename}%
+      {#1}%
+      {\@nameuse{bbl at map@@#1@@\languagename}}%
+  \fi}
 %
 \def\bbl at inikv@labels#1#2{%
-  \in@{,dot.map,}{,#1,}%
+  \in@{.map}{#1}%
   \ifin@
-    \global\@namedef{bbl at map@@.@@\languagename}{#2}%
-    \bbl at foreach\bbl at list@the{%
-        \bbl at ifunset{the##1}{}%
-      {{\bbl at ncarg\let\bbl at tempd{the##1}%
-       \bbl at carg\bbl at sreplace{the##1}{.}{\bbl at map@lbl{.}}%
-       \expandafter\ifx\csname the##1\endcsname\bbl at tempd\else
-         \bbl at exp{\gdef\<the##1>{{\[the##1]}}}%
-       \fi}}}%
-    \edef\bbl at tempb{enumi,enumii,enumiii,enumiv}%
-    \bbl at foreach\bbl at tempb{%
-        \bbl at ifunset{label##1}{}%
-      {{\bbl at ncarg\let\bbl at tempd{label##1}%
-       \bbl at carg\bbl at sreplace{label##1}{.}{\bbl at map@lbl{.}}%
-       \expandafter\ifx\csname label##1\endcsname\bbl at tempd\else
-         \bbl at exp{\gdef\<label##1>{{\[label##1]}}}%
-       \fi}}}%
-  \else
-    \in@{.map}{#1}%
+    \in@{,dot.map,}{,#1,}%
     \ifin@
-      \ifx\bbl at KVP@labels\@nnil\else
-        \bbl at xin@{ map }{ \bbl at KVP@labels\space}%
-        \ifin@
-          \def\bbl at tempc{#1}%
-          \bbl at replace\bbl at tempc{.map}{}%
-          \in@{,#2,}{,arabic,roman,Roman,alph,Alph,fnsymbol,}%
-          \bbl at exp{%
-            \gdef\<bbl at map@\bbl at tempc @\languagename>%
-              {\ifin@\<#2>\else\\\localecounter{#2}\fi}}%
-          \bbl at foreach\bbl at list@the{%
+      \global\@namedef{bbl at map@@.@@\languagename}{#2}%
+    \fi
+    \ifx\bbl at KVP@labels\@nnil\else
+      \bbl at xin@{ map }{ \bbl at KVP@labels\space}%
+      \ifin@
+        \def\bbl at tempc{#1}%
+        \bbl at replace\bbl at tempc{.map}{}%
+        \in@{,#2,}{,arabic,roman,Roman,alph,Alph,fnsymbol,}%
+        \bbl at exp{%
+          \gdef\<bbl at map@\bbl at tempc @\languagename>%
+            {\ifin@\<#2>\else\\\localecounter{#2}\fi}}%
+        \bbl at foreach\bbl at list@the{%
           \bbl at ifunset{the##1}{}%
             {\bbl at ncarg\let\bbl at tempd{the##1}%
-             \bbl at exp{%
-               \\\bbl at sreplace\<the##1>%
-                 {\<\bbl at tempc>{##1}}%
-                 {\\\bbl at map@cnt{\bbl at tempc}{##1}}%
-               \\\bbl at sreplace\<the##1>%
-                 {\<\@empty @\bbl at tempc>\<c@##1>}%
-                 {\\\bbl at map@cnt{\bbl at tempc}{##1}}%
-               \\\bbl at sreplace\<the##1>%
-                 {\\\csname @\bbl at tempc\\\endcsname\<c@##1>}%
-                 {{\\\bbl at map@cnt{\bbl at tempc}{##1}}}}%
-              \expandafter\ifx\csname the##1\endcsname\bbl at tempd\else
-                \bbl at exp{\gdef\<the##1>{{\[the##1]}}}%
-              \fi}}%
-        \fi
+            \bbl at exp{%
+              \\\bbl at sreplace\<the##1>%
+                {\<\bbl at tempc>{##1}}%
+                {\\\bbl at map@cnt{\bbl at tempc}{##1}}%
+              \\\bbl at sreplace\<the##1>%
+                {\<\@empty @\bbl at tempc>\<c@##1>}%
+                {\\\bbl at map@cnt{\bbl at tempc}{##1}}%
+              \\\bbl at sreplace\<the##1>%
+                {\\\csname @\bbl at tempc\\\endcsname\<c@##1>}%
+                {{\\\bbl at map@cnt{\bbl at tempc}{##1}}}}%
+             \expandafter\ifx\csname the##1\endcsname\bbl at tempd\else
+               \bbl at exp{\gdef\<the##1>{{\[the##1]}}}%
+             \fi}}%
       \fi
+    \fi
 %
   \else
     % The following code is still under study. You can test it and make
@@ -11390,8 +11447,7 @@
           \def\<labelenum\romannumeral\bbl at tempa>{\the\toks@}}%
         \\\bbl at toglobal\<extras\languagename>}%
     \fi
-  \fi
-    \fi}
+  \fi}
 %    \end{macrocode}
 %
 % To show correctly some captions in a few languages, we need to patch
@@ -15480,6 +15536,8 @@
   for line in node.traverse_id(node.id'hlist', head) do
     Babel.arabic.justify_hlist(head, line)
   end
+  % In case the very first item is a line (eg, in \vbox):
+  while head.prev do head = head.prev end
   return head
 end
 

Modified: trunk/Master/texmf-dist/source/latex/babel/babel.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/babel/babel.ins	2025-08-03 19:03:26 UTC (rev 75957)
+++ trunk/Master/texmf-dist/source/latex/babel/babel.ins	2025-08-03 19:05:05 UTC (rev 75958)
@@ -26,7 +26,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
 %%
-\def\filedate{2025/07/13}
+\def\filedate{2025/08/03}
 \def\batchfile{babel.ins}
 \input docstrip.tex
 

Modified: trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx	2025-08-03 19:03:26 UTC (rev 75957)
+++ trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx	2025-08-03 19:05:05 UTC (rev 75958)
@@ -30,7 +30,7 @@
 %
 % \iffalse
 %<*dtx>
-\ProvidesFile{bbcompat.dtx}[2025/07/13 v25.11]
+\ProvidesFile{bbcompat.dtx}[2025/08/03 v25.12]
 %</dtx>
 %
 %% File 'bbcompat.dtx'

Modified: trunk/Master/texmf-dist/source/latex/babel/locale.zip
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/tex/generic/babel/babel.def
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/babel.def	2025-08-03 19:03:26 UTC (rev 75957)
+++ trunk/Master/texmf-dist/tex/generic/babel/babel.def	2025-08-03 19:05:05 UTC (rev 75958)
@@ -39,7 +39,7 @@
     \wlog{File: #1 #4 #3 <#2>}%
     \let\ProvidesFile\@undefined}
 \fi
-\ProvidesFile{babel.def}[2025/07/13 v25.11 Babel common definitions]
+\ProvidesFile{babel.def}[2025/08/03 v25.12 Babel common definitions]
 \ifx\AtBeginDocument\@undefined
   \def\@empty{}
 \def\loadlocalcfg#1{%
@@ -602,8 +602,8 @@
     \toks@\expandafter{\bbl at tempc#3}%
     \expandafter\edef\csname extras\languagename\endcsname{\the\toks@}%
   \fi}
-\def\bbl at version{25.11}
-\def\bbl at date{2025/07/13}
+\def\bbl at version{25.12}
+\def\bbl at date{2025/08/03}
 \ifx\language\@undefined
   \csname newcount\endcsname\language
 \fi

Modified: trunk/Master/texmf-dist/tex/generic/babel/babel.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/babel.sty	2025-08-03 19:03:26 UTC (rev 75957)
+++ trunk/Master/texmf-dist/tex/generic/babel/babel.sty	2025-08-03 19:05:05 UTC (rev 75958)
@@ -34,7 +34,7 @@
 %%
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{babel}%
-  [2025/07/13 v25.11
+  [2025/08/03 v25.12
    The multilingual framework for LuaLaTeX, pdfLaTeX and XeLaTeX]
 \@ifpackagewith{babel}{debug}
   {\providecommand\bbl at trace[1]{\message{^^J[ #1 ]}}%
@@ -474,8 +474,8 @@
       \expandafter\@secondoftwo
     \fi}
 \fi
-\def\bbl at version{25.11}
-\def\bbl at date{2025/07/13}
+\def\bbl at version{25.12}
+\def\bbl at date{2025/08/03}
 \ifx\language\@undefined
   \csname newcount\endcsname\language
 \fi
@@ -2176,7 +2176,8 @@
   \bbl at vforeach{captions,date,import,main,script,language,%
       hyphenrules,linebreaking,justification,mapfont,maparabic,%
       mapdigits,intraspace,intrapenalty,onchar,transforms,alph,%
-      Alph,labels,labels*,calendar,date,casing,interchar, at import}%
+      Alph,labels,labels*,mapdot,calendar,date,casing,interchar,%
+      @import}%
     {\bbl at csarg\let{KVP@##1}\@nnil}%
   \global\let\bbl at release@transforms\@empty
   \global\let\bbl at release@casing\@empty
@@ -2191,7 +2192,6 @@
   \expandafter\bbl at forkv\expandafter{\bbl at tempa}{%
     \in@{/}{##1}% With /, (re)sets a value in the ini
     \ifin@
-      \global\let\bbl at extend@ini\bbl at extend@ini at aux
       \bbl at renewinikey##1\@@{##2}%
     \else
       \bbl at csarg\ifx{KVP@##1}\@nnil\else
@@ -2249,7 +2249,15 @@
   \ifx\bbl at KVP@transforms\@nnil\else
     \bbl at replace\bbl at KVP@transforms{ }{,}%
   \fi
-  % == Load ini ==
+  % ==
+  \ifx\bbl at KVP@mapdot\@nnil\else
+    \def\bbl at tempa{\@empty}%
+    \ifx\bbl at KVP@mapdot\bbl at tempa\else
+      \bbl at exp{\gdef\<bbl at map@@.@@\languagename>{\[bbl at KVP@mapdot]}}%
+    \fi
+  \fi
+  % Load ini
+  % --------
   \ifcase\bbl at howloaded
     \bbl at provide@new{#2}%
   \else
@@ -2374,6 +2382,24 @@
         \\\babel at save\\\@Alph
         \let\\\@Alph\<bbl at cntr@\bbl at KVP@Alph @\languagename>}}%
   \fi
+  % == Counters: mapdot ==
+  \ifx\bbl at KVP@mapdot\@nnil\else
+    \bbl at foreach\bbl at list@the{%
+        \bbl at ifunset{the##1}{}%
+      {{\bbl at ncarg\let\bbl at tempd{the##1}%
+       \bbl at carg\bbl at sreplace{the##1}{.}{\bbl at map@lbl{.}}%
+       \expandafter\ifx\csname the##1\endcsname\bbl at tempd\else
+         \bbl at exp{\gdef\<the##1>{{\[the##1]}}}%
+       \fi}}}%
+    \edef\bbl at tempb{enumi,enumii,enumiii,enumiv}%
+    \bbl at foreach\bbl at tempb{%
+        \bbl at ifunset{label##1}{}%
+      {{\bbl at ncarg\let\bbl at tempd{label##1}%
+       \bbl at carg\bbl at sreplace{label##1}{.}{\bbl at map@lbl{.}}%
+       \expandafter\ifx\csname label##1\endcsname\bbl at tempd\else
+         \bbl at exp{\gdef\<label##1>{{\[label##1]}}}%
+       \fi}}}%
+  \fi
   % == Casing ==
   \bbl at release@casing
   \ifx\bbl at KVP@casing\@nnil\else
@@ -2640,6 +2666,7 @@
     \bbl at error{no-ini-file}{#1}{}{}%
   \else
     % == Store ini data in \bbl at inidata ==
+    \catcode`\ =10 \catcode`\"=12
     \catcode`\[=12 \catcode`\]=12 \catcode`\==12 \catcode`\&=12
     \catcode`\;=12 \catcode`\|=12 \catcode`\%=14 \catcode`\-=12
     \ifnum#2=\m at ne % Just for the info
@@ -2743,6 +2770,7 @@
        \\\bbl at inidate####1...\relax{####2}{\bbl at tempa}}}%
  \fi}
 \def\bbl at renewinikey#1/#2\@@#3{%
+  \global\let\bbl at extend@ini\bbl at extend@ini at aux
   \edef\bbl at tempa{\zap at space #1 \@empty}%   section
   \edef\bbl at tempb{\zap at space #2 \@empty}%   key
   \bbl at trim\toks@{#3}%                      value
@@ -2925,58 +2953,45 @@
     {\@nameuse{#1}}%
     {\@nameuse{bbl at map@#1@\languagename}}}
 \def\bbl at map@lbl#1{%  #1:a sign, eg, .
-  \bbl at ifunset{bbl at map@@#1@@\languagename}%
-    {#1}%
-    {\@nameuse{bbl at map@@#1@@\languagename}}}
+  \ifincsname#1\else
+    \bbl at ifunset{bbl at map@@#1@@\languagename}%
+      {#1}%
+      {\@nameuse{bbl at map@@#1@@\languagename}}%
+  \fi}
 \def\bbl at inikv@labels#1#2{%
-  \in@{,dot.map,}{,#1,}%
+  \in@{.map}{#1}%
   \ifin@
-    \global\@namedef{bbl at map@@.@@\languagename}{#2}%
-    \bbl at foreach\bbl at list@the{%
-        \bbl at ifunset{the##1}{}%
-      {{\bbl at ncarg\let\bbl at tempd{the##1}%
-       \bbl at carg\bbl at sreplace{the##1}{.}{\bbl at map@lbl{.}}%
-       \expandafter\ifx\csname the##1\endcsname\bbl at tempd\else
-         \bbl at exp{\gdef\<the##1>{{\[the##1]}}}%
-       \fi}}}%
-    \edef\bbl at tempb{enumi,enumii,enumiii,enumiv}%
-    \bbl at foreach\bbl at tempb{%
-        \bbl at ifunset{label##1}{}%
-      {{\bbl at ncarg\let\bbl at tempd{label##1}%
-       \bbl at carg\bbl at sreplace{label##1}{.}{\bbl at map@lbl{.}}%
-       \expandafter\ifx\csname label##1\endcsname\bbl at tempd\else
-         \bbl at exp{\gdef\<label##1>{{\[label##1]}}}%
-       \fi}}}%
-  \else
-    \in@{.map}{#1}%
+    \in@{,dot.map,}{,#1,}%
     \ifin@
-      \ifx\bbl at KVP@labels\@nnil\else
-        \bbl at xin@{ map }{ \bbl at KVP@labels\space}%
-        \ifin@
-          \def\bbl at tempc{#1}%
-          \bbl at replace\bbl at tempc{.map}{}%
-          \in@{,#2,}{,arabic,roman,Roman,alph,Alph,fnsymbol,}%
-          \bbl at exp{%
-            \gdef\<bbl at map@\bbl at tempc @\languagename>%
-              {\ifin@\<#2>\else\\\localecounter{#2}\fi}}%
-          \bbl at foreach\bbl at list@the{%
+      \global\@namedef{bbl at map@@.@@\languagename}{#2}%
+    \fi
+    \ifx\bbl at KVP@labels\@nnil\else
+      \bbl at xin@{ map }{ \bbl at KVP@labels\space}%
+      \ifin@
+        \def\bbl at tempc{#1}%
+        \bbl at replace\bbl at tempc{.map}{}%
+        \in@{,#2,}{,arabic,roman,Roman,alph,Alph,fnsymbol,}%
+        \bbl at exp{%
+          \gdef\<bbl at map@\bbl at tempc @\languagename>%
+            {\ifin@\<#2>\else\\\localecounter{#2}\fi}}%
+        \bbl at foreach\bbl at list@the{%
           \bbl at ifunset{the##1}{}%
             {\bbl at ncarg\let\bbl at tempd{the##1}%
-             \bbl at exp{%
-               \\\bbl at sreplace\<the##1>%
-                 {\<\bbl at tempc>{##1}}%
-                 {\\\bbl at map@cnt{\bbl at tempc}{##1}}%
-               \\\bbl at sreplace\<the##1>%
-                 {\<\@empty @\bbl at tempc>\<c@##1>}%
-                 {\\\bbl at map@cnt{\bbl at tempc}{##1}}%
-               \\\bbl at sreplace\<the##1>%
-                 {\\\csname @\bbl at tempc\\\endcsname\<c@##1>}%
-                 {{\\\bbl at map@cnt{\bbl at tempc}{##1}}}}%
-              \expandafter\ifx\csname the##1\endcsname\bbl at tempd\else
-                \bbl at exp{\gdef\<the##1>{{\[the##1]}}}%
-              \fi}}%
-        \fi
+            \bbl at exp{%
+              \\\bbl at sreplace\<the##1>%
+                {\<\bbl at tempc>{##1}}%
+                {\\\bbl at map@cnt{\bbl at tempc}{##1}}%
+              \\\bbl at sreplace\<the##1>%
+                {\<\@empty @\bbl at tempc>\<c@##1>}%
+                {\\\bbl at map@cnt{\bbl at tempc}{##1}}%
+              \\\bbl at sreplace\<the##1>%
+                {\\\csname @\bbl at tempc\\\endcsname\<c@##1>}%
+                {{\\\bbl at map@cnt{\bbl at tempc}{##1}}}}%
+             \expandafter\ifx\csname the##1\endcsname\bbl at tempd\else
+               \bbl at exp{\gdef\<the##1>{{\[the##1]}}}%
+             \fi}}%
       \fi
+    \fi
   \else
     % The following code is still under study. You can test it and make
     % suggestions. E.g., enumerate.2 = ([enumi]).([enumii]). It's
@@ -2996,8 +3011,7 @@
           \def\<labelenum\romannumeral\bbl at tempa>{\the\toks@}}%
         \\\bbl at toglobal\<extras\languagename>}%
     \fi
-  \fi
-    \fi}
+  \fi}
 \def\bbl at chaptype{chapter}
 \ifx\@makechapterhead\@undefined
   \let\bbl at patchchapter\relax

Modified: trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg	2025-08-03 19:03:26 UTC (rev 75957)
+++ trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg	2025-08-03 19:05:05 UTC (rev 75958)
@@ -37,10 +37,10 @@
     \wlog{File: #1 #4 #3 <#2>}%
     \let\ProvidesFile\@undefined}
 \fi
-\ProvidesFile{hyphen.cfg}[2025/07/13 v25.11 Babel hyphens]
+\ProvidesFile{hyphen.cfg}[2025/08/03 v25.12 Babel hyphens]
 \xdef\bbl at format{\jobname}
-\def\bbl at version{25.11}
-\def\bbl at date{2025/07/13}
+\def\bbl at version{25.12}
+\def\bbl at date{2025/08/03}
 \ifx\AtBeginDocument\@undefined
   \def\@empty{}
 \fi

Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/shared/babel-Arab.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/shared/babel-Arab.ini	2025-08-03 19:03:26 UTC (rev 75957)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/shared/babel-Arab.ini	2025-08-03 19:05:05 UTC (rev 75958)
@@ -51,4 +51,4 @@
 kashida.base.5.1 =   { kashida = 0 }
 
 [labels]
-; dot.map = -
\ No newline at end of file
+dot.map = -
\ No newline at end of file

Modified: trunk/Master/texmf-dist/tex/generic/babel/luababel.def
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/luababel.def	2025-08-03 19:03:26 UTC (rev 75957)
+++ trunk/Master/texmf-dist/tex/generic/babel/luababel.def	2025-08-03 19:05:05 UTC (rev 75958)
@@ -700,6 +700,8 @@
   for line in node.traverse_id(node.id'hlist', head) do
     Babel.arabic.justify_hlist(head, line)
   end
+  % In case the very first item is a line (eg, in \vbox):
+  while head.prev do head = head.prev end
   return head
 end
 

Modified: trunk/Master/texmf-dist/tex/generic/babel/nil.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/nil.ldf	2025-08-03 19:03:26 UTC (rev 75957)
+++ trunk/Master/texmf-dist/tex/generic/babel/nil.ldf	2025-08-03 19:05:05 UTC (rev 75958)
@@ -32,7 +32,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension |.ins|) which are part of the distribution.
 %%
-\ProvidesLanguage{nil}[2025/07/13 v25.11 Nil language]
+\ProvidesLanguage{nil}[2025/08/03 v25.12 Nil language]
 \LdfInit{nil}{datenil}
 \ifx\l at nil\@undefined
   \newlanguage\l at nil



More information about the tex-live-commits mailing list.