texlive[72320] Master/texmf-dist: babel (18sep24)

commits+karl at tug.org commits+karl at tug.org
Wed Sep 18 21:25:46 CEST 2024


Revision: 72320
          https://tug.org/svn/texlive?view=revision&revision=72320
Author:   karl
Date:     2024-09-18 21:25:46 +0200 (Wed, 18 Sep 2024)
Log Message:
-----------
babel (18sep24)

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/errbabel.def
    trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg
    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	2024-09-18 19:24:24 UTC (rev 72319)
+++ trunk/Master/texmf-dist/doc/latex/babel/README.md	2024-09-18 19:25:46 UTC (rev 72320)
@@ -1,6 +1,6 @@
-## Babel 24.9
+## Babel 24.10
 
-2024-08-29
+2024-09-18
 
 `babel` is the multilingual framework for localizing documents in
 LaTeX, LuaLaTeX, XeLaTeX. It manages culturally-determined
@@ -10,9 +10,9 @@
 
 The latest stable version is available on <https://ctan.org/pkg/babel>.
 
-Changes in version 24.9 are described in:
+Changes in version 24.10 are described in:
 
-https://latex3.github.io/babel/news/whats-new-in-babel-24.9.html
+https://latex3.github.io/babel/news/whats-new-in-babel-24.10.html
 
 Apart from the manual, you can find information on some aspects of babel at:
 
@@ -48,9 +48,11 @@
 
 ### Summary of latest changes
 ```
-24.9  2024-08-29
-      * New transform 'digits.native' (alternative to `mapdigits').
-      * Tentative transforms for CJK spacing and line breaking.
+24.10  2024-09-18
+       * \localename replaces the buggy \languagename. Added
+         \mainlocalename.
+       * \babelhyphenmins for better control of those parameters and,
+         in lualatex, \hyphenationmin.
 ```
 
 ### 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	2024-09-18 19:24:24 UTC (rev 72319)
+++ trunk/Master/texmf-dist/source/latex/babel/babel.dtx	2024-09-18 19:25:46 UTC (rev 72320)
@@ -32,7 +32,7 @@
 %
 % \iffalse
 %<*filedriver>
-\ProvidesFile{babel.dtx}[2024/08/29 v24.9 The Babel package]
+\ProvidesFile{babel.dtx}[2024/09/18 v24.10 The Babel package]
 \documentclass{ltxdoc}
 \GetFileInfo{babel.dtx}
 \usepackage{fontspec}
@@ -168,7 +168,10 @@
 \def\args#1{%
   \def\bbl at tempa{#1}%
   \ifx\bbl at tempa\@empty\else#1\vskip1ex\fi\ignorespaces}
-\begingroup % Changes to ltxdoc (add <<...>> syntax)
+% Changes to doc.sty (add <<...>> syntax)
+\def\Module#1{%
+  \mod at math@codes$\langle${\color{thered}$\mathsf{#1}$}$\rangle$}
+\begingroup 
   \catcode`\<\active
   \catcode`\>\active
   \gdef\check at plus@etc{%
@@ -182,8 +185,8 @@
     \fi\fi\fi
     \bbl at next}
   \gdef\var at module#1#2#3>>{%
-    $\langle$\pm at module#2#3>$\rangle$%
-    \ifx*#2\ $\equiv$\fi}
+     $\langle$\pm at module#2#3>$\rangle$%
+     \ifx*#2\ $\equiv$\fi}
 \endgroup
 \renewcommand*\l at section[2]{%
   \ifnum \c at tocdepth >\z@
@@ -281,6 +284,19 @@
 and \pdftex, \xetex{} and \luatex{} with the \babel{} package. There
 are also some notes on its use with e-Plain and pdf-Plain \TeX.
 
+\item[\sffamily\color{messages}I only need learn the most basic
+features.] The first subsections (1.1-1.3) describe the traditional way
+of loading a language (with |ldf| files), which is usually all you need.
+The alternative way based on |ini| files, which complements the
+previous one (it does \textit{not} replace it, although it is still
+necessary in some languages), is described below; go to \ref{inifiles}.
+
+\item[\sffamily\color{messages}I don’t like manuals. I prefer sample
+  files.] This manual contains lots of examples and tips, but in GitHub
+  there are many
+  \href{https://github.com/latex3/babel/tree/master/samples}{sample
+  files}.
+
 \item[\sffamily\color{messages}What if I’m interested only in the
 latest changes?] Changes and new features with relation to version 3.8
 are highlighted with \New{X.XX}\hspace{-.5em}
@@ -312,19 +328,6 @@
 \item[\sffamily\color{messages}How can I contribute a new
 language?] See section \ref{contribute} for contributing a language.
 
-\item[\sffamily\color{messages}I only need learn the most basic
-features.] The first subsections (1.1-1.3) describe the traditional way
-of loading a language (with |ldf| files), which is usually all you need.
-The alternative way based on |ini| files, which complements the
-previous one (it does \textit{not} replace it, although it is still
-necessary in some languages), is described below; go to \ref{inifiles}.
-
-\item[\sffamily\color{messages}I don’t like manuals. I prefer sample
-  files.] This manual contains lots of examples and tips, but in GitHub
-  there are many
-  \href{https://github.com/latex3/babel/tree/master/samples}{sample
-  files}.
-
 \item[\sffamily\color{messages}Where is the code?]
   Run |lualatex --jobname=babel-code \let\babelcode\relax\input{babel.dtx}|.
 \end{description}
@@ -657,6 +660,100 @@
   for |lubakatanga|). See section \ref{bcp47} for further details.
 \end{note}
 
+\subsection{Languages supported by \babel{} with \textsf{ldf} files}
+
+(To be updated.) In the following table most of the languages supported
+by \babel{} with and |.ldf| file are listed, together with the names of
+the option which you can load \babel\ with for each language. Note this
+list is open and the current options may be different. It does not
+include |ini| files (see below). Except in a few cases (eg, |ngerman|,
+|serbianc|, |acadian|) names are those of the Unicode CLDR (or based on
+them).
+
+\begin{description}
+\itemsep=-\parskip
+\sffamily
+\item[Afrikaans] afrikaans
+\item[Azerbaijani] azerbaijani
+\item[Basque] basque
+\item[Breton] breton
+\item[Bulgarian] bulgarian
+\item[Catalan] catalan
+\item[Croatian] croatian
+\item[Czech] czech
+\item[Danish] danish
+\item[Dutch] dutch
+\item[English] english, american (\textit{preferred to} USenglish), british (\textit{preferred to} 
+  UKenglish), canadian, australian, newzealand
+\item[Esperanto] esperanto
+\item[Estonian] estonian
+\item[Finnish] finnish
+\item[French] french, acadian
+\item[Galician] galician
+\item[German] ngerman, naustrian, german, austrian
+\item[Greek] greek, polutonikogreek
+\item[Hebrew] hebrew
+\item[Icelandic] icelandic
+\item[Indonesian] indonesian
+\item[Interlingua] interlingua
+\item[Irish Gaelic] irish
+\item[Italian] italian
+\item[Latin] latin
+\item[Lower Sorbian] lowersorbian
+\item[Malay] malay (\textit{preferred to} melayu)
+\item[Northern Sami] northernsami
+\item[Norwegian] norsk, nynorsk
+\item[Polish] polish
+\item[Portuguese] portuguese, brazilian
+\item[Romanian] romanian
+\item[Russian] russian
+\item[Scottish Gaelic] scottishgaelic (\textit{preferred to} scottish)
+\item[Spanish]  spanish
+\item[Slovakian] slovak
+\item[Slovenian]  slovene
+\item[Swedish] swedish
+\item[Serbian] serbian
+\item[Turkish] turkish
+\item[Ukrainian] ukrainian
+\item[Upper Sorbian] uppersorbian
+\item[Welsh] welsh
+\end{description}
+
+There are more languages not listed above, including \textsf{hindi,
+thai, thaicjk, latvian, turkmen, magyar, mongolian, romansh,
+lithuanian, spanglish, vietnamese, japanese, pinyin, arabic, farsi,
+ibygreek, bgreek, serbianc, frenchle, ethiop} and \textsf{friulan}.
+
+\begin{note}
+  There are also some deprecated names (a few has been even removed):
+  \textsf{frenchb} or \textsf{francais}, as well as \textsf{canadien}
+  (\textsf{french}), \textsf{germanb} (\textsf{german}),
+  \textsf{bahasa}, \textsf{indon} or \textsf{bahasai}
+  (\textsf{indonesian}), \textsf{lsorbian} (\textsf{lowersorbian}),
+  \textsf{bahasam} (\textsf{malay}), \textsf{portuges}
+  (\textsf{portuguese}), \textsf{brazil} (\textsf{brazilian}),
+  \textsf{russianb} (\textsf{russian}), \textsf{usorbian}
+  (\textsf{uppersorbian}), \textsf{vietnam} (\textsf{vietnamese}),
+  \textsf{samin} (\textsf{northernsami}), \textsf{ukraineb}
+  (\textsf{ukrainian}). Deprecated names come in many cases from the
+  times when they had to be shortened to 8 characters. 
+\end{note}
+
+Most of them work out of the box, but some may require extra fonts,
+encoding files, a preprocessor or even a complete framework (like
+\textsf{CJK} or \textsf{luatexja}). For example, if you have got the
+\textsf{velthuis/devnag} package, you can create a file with extension
+|.dn|:
+\begin{verbatim}
+\documentclass{article}
+\usepackage[hindi]{babel}
+\begin{document}
+{\dn devaanaa.m priya.h}
+\end{document}
+\end{verbatim}
+Then you preprocess it with |devnag| \m{file}, which creates
+\m{file}|.tex|; you can then typeset the latter with \LaTeX.
+
 \subsection{Modifiers}
 
 \New{3.9c} The basic behavior of some languages can be modified when
@@ -3069,26 +3166,28 @@
 
 \subsection{Accessing language info}
 
-\Describe{\languagename}{}
-The control sequence |\languagename| contains the name of the
-current language.
+\Describe{\localename}{}
+\DescribeOther{\mainlocalename}
+\DescribeOther{\languagename}
+\New{29.10} The control sequence |\localename| contains the name of the current
+locale. This is now the recommended way to retrieve the current
+language. In addtion, |\mainlocalename| contains the main language.
 
+|\languagename| is still used internally, but it is now discouraged at
+the user level.
+
 \begin{warning}
-  Due to some internal inconsistencies in catcodes, it should
-  \textit{not} be used to test its value. Use \textsf{iflang}, by
-  Heiko Oberdiek.
+  Due to a bug, which lead to some internal inconsistencies in
+  catcodes, |\languagename| should \textit{not} be used to test which
+  is the current language. Rely on |\localename| or, if you still need
+  |\languagename| for some reason, on \textsf{iflang}, by Heiko Oberdiek.
 \end{warning}
 
 \Describe{\iflanguage}{\marg{language}\marg{true}\marg{false}}
 
-If more than one language is used, it might be necessary to know which
-language is active at a specific time. This can be checked by a call
-to |\iflanguage|, but note here ``language'' is used in the \TeX{}
-sense, as a set of hyphenation patterns, and \textit{not} as its
-\textsf{babel} name. This macro takes three arguments.  The first
-argument is the name of a language; the second and third arguments are
-the actions to take if the result of the test is true or false
-respectively.
+Here ``language'' is used in the \TeX{} sense, as a set of hyphenation
+patterns, and \textit{not} as its \textsf{babel} name. The first
+argument is the name of a language.
 
 \Describe{\localeinfo}{%
  \colorbox{thegrey}{\ttfamily\hskip-.2em*\hskip-.2em}{\marg{field}}}
@@ -3099,8 +3198,6 @@
 \begin{description}
 \itemsep=-\parskip
 \item[|name.english|] as provided by the Unicode CLDR.
-%%% \item[|name.locale|] is the equivalent of |\languagename|. Not yet
-%%% activated because the bug in \languagename is far from trivial.
 \item[|tag.ini|] is the tag of the |ini| file (the way this
   file is identified in its name).
 \item[|tag.bcp47|] is the full BCP 47 tag (see the warning below). This
@@ -3297,8 +3394,16 @@
 \begin{note}
   Using |\babelhyphenation| with Southeast Asian scripts is mostly
   pointless. But with |\babelpatterns| (below) you may fine-tune line
-  breaking (only \luatex). Even if there are no patterns for the
-  language, you can add at least some typical cases.
+  breaking (only \luatex). For example:
+\begingroup
+\catcode`@=13
+\def@#1@{{\fontspec{Loma}#1}}
+\begin{verbatim}
+\babelpatterns[thai]{@ศึก@2@ษา@}
+\end{verbatim}
+\endgroup
+  Even if there are no patterns for the language, you can add at least
+  some typical cases.
 \end{note}
 
 \begin{note}
@@ -3308,21 +3413,6 @@
   fully set up and an error can be raised.
 \end{note}
 
-\Describe{\begin\menv{hyphenrules}}{\marg{language}\Eenv{hyphenrules}}
-
-The environment \Lenv{hyphenrules} can be used to select \emph{only} the
-hyphenation rules to be used (it can be used as command, too). This can
-for instance be used to select ‘nohyphenation’, provided that in
-\file{language.dat} the ‘language’ \textsf{nohyphenation} is defined by
-loading \file{zerohyph.tex}. It deactivates language shorthands, too
-(but not user shorthands).
-
-Except for these simple uses, |hyphenrules| is deprecated and
-|otherlanguage*| (the starred version) is preferred, because the former
-does not take into account possible changes in encodings of characters
-like, say, |'| done by some languages (eg, \textsf{italian},
-\textsf{french}, \textsf{ukrainian}).
-
 \Describe{\babelpatterns}{\texttt{[}\langlist\texttt{]}%
     \marg{patterns}}
 
@@ -3374,6 +3464,46 @@
 alternative to a transform is |\babelpatterns|.
 \end{note}
 
+\Describe{\babelhyphenmins}{%
+  \colorbox{thegrey}{\ttfamily\hskip-.2em*\hskip-.2em}%
+  \texttt{[}\langlist\texttt{]}%
+  \marg{left}\marg{right}\oarg{hyphenationmin}}
+
+\New{24.10} See the news page for the rationale for this commands. It
+sets the corresponding values for the given languages (all languages
+without the optional argument). With the star, the values are also
+applied immediately (the optional argument and the star are currently
+incompatible). The optional argument is available only in \luatex.
+\begin{example}
+You are typesetting a book with wide lines and want to limit the
+number of hyphens in all languages:
+\begin{verbatim}
+  \babelhyphenmins{3}{4}
+\end{verbatim}
+But there are also some 3-column text and you want to be more flexible:
+\begin{verbatim}
+  \begin{multicols}{3}
+  \babelhyphenmins*{2}{3}
+  ...
+  \end{multicols}
+\end{verbatim}
+\end{example}
+
+\Describe{\begin\menv{hyphenrules}}{\marg{language}\Eenv{hyphenrules}}
+
+The environment \Lenv{hyphenrules} can be used to select \emph{only} the
+hyphenation rules to be used (it can be used as command, too). This can
+for instance be used to select ‘nohyphenation’, provided that in
+\file{language.dat} the ‘language’ \textsf{nohyphenation} is defined by
+loading \file{zerohyph.tex}. It deactivates language shorthands, too
+(but not user shorthands).
+
+Except for these simple uses, |hyphenrules| is deprecated and
+|otherlanguage*| (the starred version) is preferred, because the former
+does not take into account possible changes in encodings of characters
+like, say, |'| done by some languages (eg, \textsf{italian},
+\textsf{french}, \textsf{ukrainian}).
+
 \subsection{Transforms}
 \label{transforms}
 
@@ -4385,99 +4515,6 @@
 |toc,lof,lot|, but you may redefine it with |\renewcommand| (it's up
 to you to make sure no toc type is duplicated).
 
-\subsection{Languages supported by \babel{} with \textsf{ldf} files}
-
-In the following table most of the languages supported by \babel{} with
-and |.ldf| file are listed, together with the names of the option which
-you can load \babel\ with for each language. Note this list is open and
-the current options may be different. It does not include |ini| files
-(see below). Except in a few cases (eg, |ngerman|, |serbianc|,
-|acadian|) names are those of the Unicode CLDR (or based on them). 
-
-\begin{description}
-\itemsep=-\parskip
-\sffamily
-\item[Afrikaans] afrikaans
-\item[Azerbaijani] azerbaijani
-\item[Basque] basque
-\item[Breton] breton
-\item[Bulgarian] bulgarian
-\item[Catalan] catalan
-\item[Croatian] croatian
-\item[Czech] czech
-\item[Danish] danish
-\item[Dutch] dutch
-\item[English] english, american (\textit{preferred to} USenglish), british (\textit{preferred to} 
-  UKenglish), canadian, australian, newzealand
-\item[Esperanto] esperanto
-\item[Estonian] estonian
-\item[Finnish] finnish
-\item[French] french, acadian
-\item[Galician] galician
-\item[German] ngerman, naustrian, german, austrian
-\item[Greek] greek, polutonikogreek
-\item[Hebrew] hebrew
-\item[Icelandic] icelandic
-\item[Indonesian] indonesian
-\item[Interlingua] interlingua
-\item[Irish Gaelic] irish
-\item[Italian] italian
-\item[Latin] latin
-\item[Lower Sorbian] lowersorbian
-\item[Malay] malay (\textit{preferred to} melayu)
-\item[Northern Sami] northernsami
-\item[Norwegian] norsk, nynorsk
-\item[Polish] polish
-\item[Portuguese] portuguese, brazilian
-\item[Romanian] romanian
-\item[Russian] russian
-\item[Scottish Gaelic] scottishgaelic (\textit{preferred to} scottish)
-\item[Spanish]  spanish
-\item[Slovakian] slovak
-\item[Slovenian]  slovene
-\item[Swedish] swedish
-\item[Serbian] serbian
-\item[Turkish] turkish
-\item[Ukrainian] ukrainian
-\item[Upper Sorbian] uppersorbian
-\item[Welsh] welsh
-\end{description}
-
-There are more languages not listed above, including \textsf{hindi,
-thai, thaicjk, latvian, turkmen, magyar, mongolian, romansh,
-lithuanian, spanglish, vietnamese, japanese, pinyin, arabic, farsi,
-ibygreek, bgreek, serbianc, frenchle, ethiop} and \textsf{friulan}.
-
-\begin{note}
-  There are also some deprecated names (a few has been even removed):
-  \textsf{frenchb} or \textsf{francais}, as well as \textsf{canadien}
-  (\textsf{french}), \textsf{germanb} (\textsf{german}),
-  \textsf{bahasa}, \textsf{indon} or \textsf{bahasai}
-  (\textsf{indonesian}), \textsf{lsorbian} (\textsf{lowersorbian}),
-  \textsf{bahasam} (\textsf{malay}), \textsf{portuges}
-  (\textsf{portuguese}), \textsf{brazil} (\textsf{brazilian}),
-  \textsf{russianb} (\textsf{russian}), \textsf{usorbian}
-  (\textsf{uppersorbian}), \textsf{vietnam} (\textsf{vietnamese}),
-  \textsf{samin} (\textsf{northernsami}), \textsf{ukraineb}
-  (\textsf{ukrainian}). Deprecated names come in many cases from the
-  times when they had to be shortened to 8 characters. 
-\end{note}
-
-Most of them work out of the box, but some may require extra fonts,
-encoding files, a preprocessor or even a complete framework (like
-\textsf{CJK} or \textsf{luatexja}). For example, if you have got the
-\textsf{velthuis/devnag} package, you can create a file with extension
-|.dn|:
-\begin{verbatim}
-\documentclass{article}
-\usepackage[hindi]{babel}
-\begin{document}
-{\dn devaanaa.m priya.h}
-\end{document}
-\end{verbatim}
-Then you preprocess it with |devnag| \m{file}, which creates
-\m{file}|.tex|; you can then typeset the latter with \LaTeX.
-
 \subsection{Unicode character properties in \luatex}
 
 \New{3.32} Part of the \babel{} job is to apply Unicode rules to some
@@ -4616,38 +4653,6 @@
 \item[zhspacing] Spacing for CJK documents in \xetex.
 \end{description}
 
-\subsection{Current and future work}
-
-The current work is focused on the so-called complex scripts in \luatex{}.
-In 8-bit engines, \babel{} provided a basic support for bidi text as
-part of the style for Hebrew, but it is somewhat unsatisfactory and
-internally replaces some hardwired commands by other hardwired commands
-(generic changes would be much better).
-
-Useful additions would be, for example, time, currency, addresses and
-personal names.\footnote{See for example POSIX, ISO 14652 and the
-Unicode Common Locale Data Repository (CLDR). Those systems, however,
-have limited application to \TeX\ because their aim is just to display
-information and not fine typesetting.}. But that is the easy
-part, because they don't require modifying the \LaTeX{} internals.
-Calendars (Arabic, Persian, Indic, etc.) are under study.
-
-Also interesting are differences in the sentence structure or related
-to it. For example, in Basque the number precedes the name (including
-chapters), in Hungarian ``from (1)'' is ``(1)-b\H{o}l'', but ``from
-(3)'' is ``(3)-b\'{o}l'', in Spanish an item labelled
-``3.$^{\textrm{\scriptsize o}}$'' may be referred to as either
-``\'{\i}tem 3.$^{\textrm{\scriptsize o}}$'' or
-``3.$^{\textrm{\scriptsize er}}$ \'{\i}tem'', and so on.
-
-An option to manage bidirectional document layout in \luatex{} (lists,
-footnotes, etc.) is almost finished, but \xetex{} required more work.
-Unfortunately, proper support for \xetex{} requires patching somehow
-lots of macros and packages (and some issues related to |\special|s
-remain, like color and hyperlinks), so \babel{} resorts to the
-\textsf{bidi} package (by Vafa Khalighi). See the \babel{} repository
-for a small example (|xe-bidi|).
-
 \subsection{Tentative and experimental code}
 
 See the code section for |\foreignlanguage*| (a new starred
@@ -5507,8 +5512,8 @@
 % \section{Tools}
 %
 %    \begin{macrocode}
-%<<version=24.9>>
-%<<date=2024/08/29>>
+%<<version=24.10>>
+%<<date=2024/09/18>>
 %    \end{macrocode}
 %
 % \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -6070,7 +6075,7 @@
    #1\ifx\@empty#2\else,\bbl at afterfi\bbl at tempb#2\fi}%
 \def\bbl at tempe#1=#2\@@{%
   \bbl at csarg\edef{mod@#1}{\bbl at tempb#2}}
-\def\bbl at tempd#1.#2\@nnil{%  TODO. Refactor lists?
+\def\bbl at tempd#1.#2\@nnil{%
   \ifx\@empty#2%
     \edef\bbl at tempc{\ifx\bbl at tempc\@empty\else\bbl at tempc,\fi#1}%
   \else
@@ -6079,7 +6084,7 @@
       \edef\bbl at tempc{%
         \ifx\bbl at tempc\@empty\else\bbl at tempc,\fi#1.\bbl at tempb#2}%
     \else
-      \in@{$modifiers$}{$#1$}% TODO. Allow spaces.
+      \in@{$modifiers$}{$#1$}%
       \ifin@
         \bbl at tempe#2\@@
       \else
@@ -6316,7 +6321,7 @@
 \endinput\fi % Same line!
 <@Make sure ProvidesFile is defined@>
 \ProvidesFile{babel.def}[<@date@> v<@version@> Babel common definitions]
-\ifx\AtBeginDocument\@undefined  % TODO. change test.
+\ifx\AtBeginDocument\@undefined
   <@Emulate LaTeX@>
 \fi
 <@Basic macros@>
@@ -6454,12 +6459,13 @@
     \fi
   \fi\fi}
 \let\bbl at initoload\relax
-%<-core>
+%</package|core>
+%<*package>
 \def\bbl at provide@locale{%
   \ifx\babelprovide\@undefined
     \bbl at error{base-on-the-fly}{}{}{}%
   \fi
-  \let\bbl at auxname\languagename % Still necessary. TODO
+  \let\bbl at auxname\languagename % Still necessary.
   \bbl at ifunset{bbl at bcp@map@\languagename}{}% Move uplevel??
     {\edef\languagename{\@nameuse{bbl at bcp@map@\languagename}}}%
   \ifbbl at bcpallowed
@@ -6483,7 +6489,8 @@
       {\bbl at exp{\\\babelprovide[\bbl at autoload@options]{\languagename}}}%
       {}%
   \fi}
-%<+core>
+%</package>
+%<*package|core>
 %    \end{macrocode}
 %
 % \begin{macro}{\iflanguage}
@@ -6700,30 +6707,8 @@
 %    \begin{macrocode}
 \def\BabelContentsFiles{toc,lof,lot}
 \def\bbl at 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 at 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 at language{\languagename}%
   % write to auxs
   \expandafter\ifx\csname date\languagename\endcsname\relax\else
@@ -6742,16 +6727,22 @@
 %
 \newif\ifbbl at bcpallowed
 \bbl at bcpallowedfalse
-\def\select at language#1{% from set@, babel at aux
+%
+\def\select at language#1{% from set@, babel at aux, babel at toc
   \ifx\bbl at selectorname\@empty
     \def\bbl at selectorname{select}%
+  \fi
   % set hymap
-  \fi
   \ifnum\bbl at hymapsel=\@cclv\chardef\bbl at hymapsel4\relax\fi
-  % set name
+  % set name (when coming from babel at aux)
   \edef\languagename{#1}%
   \bbl at fixname\languagename
-  % TODO. name at map must be here?
+  % define \localename when coming from set@, with a trick 
+  \ifx\scantokens\@undefined
+    \def\localename{??}%
+  \else
+    \bbl at exp{\\\scantokens{\def\\\localename{\languagename}\\\noexpand}\relax}%
+  \fi
   \bbl at provide@locale
   \bbl at iflanguage\languagename{%
     \let\bbl at select@type\z@
@@ -6759,7 +6750,7 @@
 \def\babel at aux#1#2{%
   \select at language{#1}%
   \bbl at foreach\BabelContentsFiles{% \relax -> don't assume vertical mode
-    \@writefile{##1}{\babel at toc{#1}{#2}\relax}}}% TODO - plain?
+    \@writefile{##1}{\babel at toc{#1}{#2}\relax}}}%
 \def\babel at toc#1#2{%
   \select at language{#1}}
 %    \end{macrocode}
@@ -6862,6 +6853,12 @@
   \ifin@\else\bbl at xin@{/k}{/\bbl at tempa}\fi % only kashida
   \ifin@\else\bbl at xin@{/p}{/\bbl at tempa}\fi % padding (eg, Tibetan)
   \ifin@\else\bbl at xin@{/v}{/\bbl at tempa}\fi % variable font
+  % hyphenation - save mins
+  \babel at savevariable\lefthyphenmin
+  \babel at savevariable\righthyphenmin
+  \ifnum\bbl at engine=\@ne
+    \babel at savevariable\hyphenationmin
+  \fi
   \ifin@
     % unhyphenated/kashida/elongated/padding = allow stretching
     \language\l at unhyphenated
@@ -6873,16 +6870,18 @@
     % other = select patterns
     \bbl at patterns{#1}%
   \fi
-  % hyphenation - mins
-  \babel at savevariable\lefthyphenmin
-  \babel at savevariable\righthyphenmin
+  % hyphenation - set mins
   \expandafter\ifx\csname #1hyphenmins\endcsname\relax
     \set at hyphenmins\tw@\thr@@\relax
+    \@nameuse{bbl at hyphenmins@}%
   \else
     \expandafter\expandafter\expandafter\set at hyphenmins
       \csname #1hyphenmins\endcsname\relax
   \fi
-  % reset selector name
+  \@nameuse{bbl at hyphenmins@}%
+  \@nameuse{bbl at hyphenmins@\languagename}%
+  \@nameuse{bbl at hyphenatmin@}%
+  \@nameuse{bbl at hyphenatmin@\languagename}%
   \let\bbl at selectorname\@empty}
 %    \end{macrocode}
 %
@@ -7026,6 +7025,7 @@
     \bbl at usedategroupfalse
   \fi
   \bbl at fixname\languagename
+  \let\localename\languagename
   % TODO. name at map here?
   \bbl at provide@locale
   \bbl at iflanguage\languagename{%
@@ -7634,7 +7634,7 @@
 % code of the @-sign.
 %
 %    \begin{macrocode}
-\def\bbl at afterldf#1{% TODO. Merge into the next macro? Unused elsewhere
+\def\bbl at afterldf#1{%
   \bbl at afterlang
   \let\bbl at afterlang\relax
   \let\BabelModifiers\relax
@@ -7668,7 +7668,9 @@
 %    \begin{macrocode}
 \def\main at language#1{%
   \def\bbl at main@language{#1}%
-  \let\languagename\bbl at main@language % TODO. Set localename
+  \let\languagename\bbl at main@language
+  \let\localename\bbl at main@language
+  \let\mainlocalename\bbl at main@language
   \bbl at id@assign
   \bbl at patterns{\languagename}}
 %    \end{macrocode}
@@ -7677,8 +7679,7 @@
 % beginning of the document, either when the |aux| file is read or, if
 % it does not exist, when the |\AtBeginDocument| is executed. Languages
 % do not set |\pagedir|, so we set here for the whole document to the
-% main |\bodydir|. TODO. Handle correctly the 'nil' language, to avoid
-% errors in toc files if there was a typo in a name.
+% main |\bodydir|.
 %
 % The code written to the |aux| file attempts to avoid errors if
 % \babel\ is removed from the document.
@@ -7699,7 +7700,8 @@
     \immediate\write\@mainaux{\string\@nameuse{bbl at beforestart}}%
   \fi
   \expandafter\selectlanguage\expandafter{\bbl at main@language}%
-%<-core>
+%</package|core>
+%<*package>
   \ifx\bbl at normalsf\@empty
     \ifnum\sfcode`\.=\@m
       \let\normalsfcodes\frenchspacing
@@ -7709,19 +7711,22 @@
   \else
     \let\normalsfcodes\bbl at normalsf
   \fi
-%<+core>
+%</package>
+%<*package|core>
   \ifbbl at single  % must go after the line above.
     \renewcommand\selectlanguage[1]{}%
     \renewcommand\foreignlanguage[2]{#2}%
     \global\let\babel at aux\@gobbletwo  % Also as flag
   \fi}
-%<-core>
+%</package|core>
+%<*package>
 \AddToHook{begindocument/before}{%
   \let\bbl at normalsf\normalsfcodes
   \let\normalsfcodes\relax} % Hack, to delay the setting
-%<+core>
+%</package>%
+%<*package|core>
 \ifcase\bbl at engine\or
-  \AtBeginDocument{\pagedir\bodydir} % TODO - a better place
+  \AtBeginDocument{\pagedir\bodydir}
 \fi
 %    \end{macrocode}
 %
@@ -8079,7 +8084,7 @@
 %
 %    \begin{macrocode}
 \begingroup
-\bbl at ifunset{ifincsname}% TODO. Ugly. Correct? Only Plain?
+\bbl at ifunset{ifincsname}%
   {\gdef\active at prefix#1{%
      \ifx\protect\@typeset at protect
      \else
@@ -8262,7 +8267,7 @@
 %
 %    \begin{macrocode}
 \def\user at group{user}
-\def\language at group{english} % TODO. I don't like defaults
+\def\language at group{english}
 \def\system at group{system}
 %    \end{macrocode}
 %
@@ -8337,7 +8342,6 @@
 % used. Unfortunately, \babel{} currently does not keep track of
 % defined groups, and therefore there is no way to catch a possible
 % change in casing to fix it in the same way languages names are fixed.
-% [TODO].
 %
 %    \begin{macrocode}
 \def\languageshorthands#1{\def\language at group{#1}}
@@ -8897,6 +8901,32 @@
 %
 % \end{macro}
 %
+% \begin{macro}{\babelhyphenmins}
+%
+% Only \LaTeX (basically because it’s defined with a \LaTeX{} tool).
+%
+%    \begin{macrocode}
+\ifx\NewDocumentCommand\@undefined\else
+  \NewDocumentCommand\babelhyphenmins{sommo}{%
+    \IfNoValueTF{#2}%
+      {\protected at edef\bbl at hyphenmins@{\set at hyphenmins{#3}{#4}}%
+       \IfValueT{#5}{%
+         \protected at edef\bbl at hyphenatmin@{\hyphenationmin=#5\relax}}%
+       \IfBooleanT{#1}{%
+         \lefthyphenmin=#3\relax
+         \righthyphenmin=#4\relax
+         \IfValueT{#5}{\hyphenationmin=#5\relax}}}%
+      {\edef\bbl at tempb{\zap at space#2 \@empty}%
+       \bbl at for\bbl at tempa\bbl at tempb{%
+         \@namedef{bbl at hyphenmins@\bbl at tempa}{\set at hyphenmins{#3}{#4}}%
+         \IfValueT{#5}{%
+           \@namedef{bbl at hyphenatmin@\bbl at tempa}{\hyphenationmin=#5\relax}}}%
+       \IfBooleanT{#1}{\bbl at error{hyphenmins-args}{}{}{}}}}
+\fi
+%    \end{macrocode}
+%
+% \end{macro}
+%
 % \begin{macro}{\bbl at allowhyphens}
 %
 % This macro makes hyphenation possible. Basically its definition
@@ -9228,7 +9258,7 @@
       \csname\bbl at LC\expandafter\endcsname\expandafter{\BabelString}}}
 %    \end{macrocode}
 %
-% A little auxiliary command sets the string. TODO: Formerly used with
+% A little auxiliary command sets the string. Formerly used with
 % casing. Very likely no longer necessary, although it’s used in
 % |\setlocalecaption|.
 %
@@ -9362,7 +9392,7 @@
 % separates these two steps.
 %
 %    \begin{macrocode}
-\newcommand\setlocalecaption{%  TODO. Catch typos.
+\newcommand\setlocalecaption{%
   \@ifstar\bbl at setcaption@s\bbl at setcaption@x}
 \def\bbl at setcaption@x#1#2#3{%  language caption-name string
   \bbl at trim@def\bbl at tempa{#2}%
@@ -9416,7 +9446,6 @@
       \bbl at toglobal\bbl at captionslist
     \fi
   \fi}
-% \def\bbl at setcaption@s#1#2#3{} % TODO. Not yet implemented (w/o 'name')
 %    \end{macrocode}
 %
 % \subsection{Macros common to a number of languages}
@@ -9889,7 +9918,8 @@
 %    \begin{macrocode}
 \bbl at trace{Bidi layout}
 \providecommand\IfBabelLayout[3]{#3}%
-%<-core>
+%</package|core>
+%<*package>
 \newcommand\BabelPatchSection[1]{%
   \@ifundefined{#1}{}{%
     \bbl at exp{\let\<bbl at ss@#1>\<#1>}%
@@ -9923,7 +9953,8 @@
      \select at language@x{\bbl at main@language}}}{}
 \IfBabelLayout{captions}%
   {\BabelPatchSection{caption}}{}
-%<+core>
+%</package>
+%<*package|core>
 %    \end{macrocode}
 %
 % \subsection{Load engine specific macros}
@@ -10028,7 +10059,7 @@
       {}%
     \let\bbl at KVP@date\@empty
   \fi
-  \let\bbl at KVP@captions@@\bbl at KVP@captions % TODO. A dirty hack
+  \let\bbl at KVP@captions@@\bbl at KVP@captions
   \ifx\bbl at KVP@captions\@nnil
     \let\bbl at KVP@captions\bbl at KVP@import
   \fi
@@ -10123,7 +10154,6 @@
       \fi
       \bbl at exp{\\\bbl at add\\\bbl at starthyphens
         {\\\bbl at patterns@lua{\languagename}}}%
-      % TODO - error/warning if no script
       \directlua{
         if Babel.script_blocks['\bbl at cl{sbcp}'] then
           Babel.loc_to_scr[\the\localeid] = Babel.script_blocks['\bbl at cl{sbcp}']
@@ -10194,7 +10224,7 @@
     \bbl at csarg\edef{intsp@#2}{\bbl at KVP@intraspace}%
   \fi
   \bbl at provide@intraspace
-  % == Line breaking: CJK quotes == TODO -> @extras
+  % == Line breaking: CJK quotes ==
   \ifcase\bbl at engine\or
     \bbl at xin@{/c}{/\bbl at cl{lnbrk}}%
     \ifin@
@@ -10430,7 +10460,7 @@
 % Load the basic parameters (ids, typography, counters, and a few
 % more), while captions and dates are left out. But it may happen some
 % data has been loaded before automatically, so we first discard the
-% saved values. (TODO. But preserving previous values would be useful.)
+% saved values.
 %
 %    \begin{macrocode}
 \def\bbl at load@basic#1{%
@@ -12427,23 +12457,30 @@
 %    \end{macrocode}
 %
 % Now come the macros used to set the direction when a language is
-% switched. First the (mostly) common macros.
+% switched. Testing are based on script names, because it’s the user
+% interface (including |language| and |script| in |\babelprovide|.
+% First the (mostly) common macros. 
 %
 %    \begin{macrocode}
 \bbl at trace{Macros to switch the text direction}
+\def\bbl at alscripts{,Arabic,Syriac,Thaana,}
+\def\bbl at rscripts{% 
+  ,Imperial Aramaic,Avestan,Cypriot,Hatran,Hebrew,%
+  Old Hungarian,Lydian,Mandaean,Manichaean,%
+  Meroitic Cursive,Meroitic,Old North Arabian,%
+  Nabataean,N'Ko,Orkhon,Palmyrene,Inscriptional Pahlavi,%
+  Psalter Pahlavi,Phoenician,Inscriptional Parthian,Samaritan,%
+  Old South Arabian,}%
 \def\bbl at provide@dirs#1{%
-  \bbl at xin@{\csname bbl at sbcp@#1\endcsname}{,Arab,Syrc,Thaa,}%
+  \bbl at xin@{\csname bbl at sname@#1\endcsname}{\bbl at alscripts\bbl at rscripts}%
   \ifin@
-    \global\bbl at csarg\chardef{wdir@#1}\tw@
-  \else
-    \bbl at xin@{\csname bbl at sbcp@#1\endcsname}{%
-      ,Armi,Avst,Cprt,Hatr,Hebr,Hung,Lydi,Mand,Mani,Merc,Mero,%
-       Narb,Nbat,Nkoo,Orkh,Palm,Phli,Phlp,Phnx,Prti,Samr,Sarb,}%
+    \global\bbl at csarg\chardef{wdir@#1}\@ne
+    \bbl at xin@{\csname bbl at sname@#1\endcsname}{\bbl at alscripts}%
     \ifin@
-      \global\bbl at csarg\chardef{wdir@#1}\@ne
-    \else
-      \global\bbl at csarg\chardef{wdir@#1}\z@
+      \global\bbl at csarg\chardef{wdir@#1}\tw@
     \fi
+  \else
+    \global\bbl at csarg\chardef{wdir@#1}\z@
   \fi
   \ifodd\bbl at engine
     \bbl at csarg\ifcase{wdir@#1}%
@@ -12954,7 +12991,7 @@
    {This macro is available only in LuaLaTeX and XeLaTeX.}%
    {Consider switching to these engines.}
 \bbl at errmessage{only-lua}
-   {This macro is available only in LuaLaTeX.}%
+   {This macro is available only in LuaLaTeX}%
    {Consider switching to that engine.}
 \bbl at errmessage{unknown-provide-key}
    {Unknown key '#1' in \string\babelprovide}%
@@ -12961,12 +12998,12 @@
    {See the manual for valid keys}%
 \bbl at errmessage{unknown-mapfont}
    {Option '\bbl at KVP@mapfont' unknown for\\%
-    mapfont. Use 'direction'.}%
+    mapfont. Use 'direction'}%
    {See the manual for details.}
 \bbl at 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 at errmessage{digits-is-reserved}
    {The counter name 'digits' is reserved for mapping\\%
@@ -12974,7 +13011,7 @@
    {Use another name.}
 \bbl at 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 at errmessage{alphabetic-too-large}
  {Alphabetic numeral too large (#1)}%
@@ -12986,20 +13023,20 @@
    {See the manual for details.}
 \bbl at errmessage{unknown-ini-field}
    {Unknown field '#1' in \string\BCPdata.\\%
-    Perhaps you misspelled it.}%
+    Perhaps you misspelled it}%
    {See the manual for details.}
 \bbl at 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 at 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 at 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 at errmessage{bidi-only-lua}
    {The bidi method 'basic' is available only in\\%
@@ -13029,11 +13066,11 @@
    {See the manual for further info}
 \bbl at 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 at 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 at errmessage{charproperty-only-vertical}
    {\string\babelcharproperty\space can be used only in\\%
@@ -13068,8 +13105,12 @@
    {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 at 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.}
 %</errors>
 %<*patterns>
 %    \end{macrocode}

Modified: trunk/Master/texmf-dist/source/latex/babel/babel.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/babel/babel.ins	2024-09-18 19:24:24 UTC (rev 72319)
+++ trunk/Master/texmf-dist/source/latex/babel/babel.ins	2024-09-18 19:25:46 UTC (rev 72320)
@@ -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{2024/08/29}
+\def\filedate{2024/09/18}
 \def\batchfile{babel.ins}
 \input docstrip.tex
 
@@ -105,32 +105,6 @@
     \expandafter\gdef\csname #1Var\endcsname{#2}%
   \fi}
 
-% The following is somewhat hackish, but it does the job for babel, and
-% must be used in the following way: <-name> starts a block to be
-% ignored if 'name' is active, and <+name> ends the block (in this
-% order). Used to exclude some parts from babel.def. With the original
-% definitions, some code goes 'visually' in comments/documentation, but
-% with this change they are in the real code. However, it must be
-% considered temporal, because the solution must be to reorganize the
-% code.
-
-\let\bblMinus\minusOption
-\def\minusOption-#1>#2\endLine{%
-  \global\let\bblactivefiles\activefiles
-  \def\tempa{}%
-  \def\do##1##2##3{%
-    \def\tempb{#1}\def\tempc{##2}%
-    \ifx\tempb\tempc\else
-      \expandafter\def\expandafter\tempa\expandafter{%
-        \tempa\do##1{##2}##3}%
-    \fi}%
-  \activefiles
-  \let\activefiles\tempa}
-
-\let\bblPlus\plusOption
-\def\plusOption+#1>#2\endLine{%
-  \let\activefiles\bblactivefiles}
-
 % Preambles
 
 \declarepreamble\mainpreamble
@@ -179,11 +153,30 @@
           \file{bplain.tex}{\from{babel.dtx}{bplain}}
           \file{blplain.tex}{\from{babel.dtx}{blplain}}
          }
+         
+% MakeIndex style files
 
-% compatibility files
+\usedir{makeindex/babel}
 
+\generate{\file{bbind.ist}{\from{bbidxglo.dtx}{idx}}
+          \file{bbglo.ist}{\from{bbidxglo.dtx}{glo}}}
+
+% lua code
+
+\def\MetaPrefix{--}
+\usepreamble\luapreamble
+\nopostamble
+\generate{\file{babel-transforms.lua}{\from{babel.dtx}{transforms}}}
+\generate{\file{babel-data-bidi.lua}{\from{babel.dtx}{bididata}}}
+\generate{\file{babel-data-cjk.lua}{\from{babel.dtx}{cjkdata}}}
+\generate{\file{babel-bidi-basic-r.lua}{\from{babel.dtx}{basic-r}}}
+\generate{\file{babel-bidi-basic.lua}{\from{babel.dtx}{basic}}}
+
+% Compatibility files
+
 \let\minusOption\bblMinus
 \let\plusOption\bblPlus
+
 \def\compatfile#1{\file{#1.sty}{\from{bbcompat.dtx}{styfile,#1}}}
 
 \generate{%
@@ -246,24 +239,7 @@
          \compatfile{bahasam}
          }
 
-% MakeIndex style files
 
-\usedir{makeindex/babel}
-
-\generate{\file{bbind.ist}{\from{bbidxglo.dtx}{idx}}
-          \file{bbglo.ist}{\from{bbidxglo.dtx}{glo}}}
-
-% lua code
-
-\def\MetaPrefix{--}
-\usepreamble\luapreamble
-\nopostamble
-\generate{\file{babel-transforms.lua}{\from{babel.dtx}{transforms}}}
-\generate{\file{babel-data-bidi.lua}{\from{babel.dtx}{bididata}}}
-\generate{\file{babel-data-cjk.lua}{\from{babel.dtx}{cjkdata}}}
-\generate{\file{babel-bidi-basic-r.lua}{\from{babel.dtx}{basic-r}}}
-\generate{\file{babel-bidi-basic.lua}{\from{babel.dtx}{basic}}}
-
 \Msg{***********************************************************}
 \Msg{*}
 \Msg{* To finish the installation you have to move all the files}

Modified: trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx	2024-09-18 19:24:24 UTC (rev 72319)
+++ trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx	2024-09-18 19:25:46 UTC (rev 72320)
@@ -30,7 +30,7 @@
 %
 % \iffalse
 %<*dtx>
-\ProvidesFile{bbcompat.dtx}[2024/08/29 v24.]
+\ProvidesFile{bbcompat.dtx}[2024/09/18 v24.]
 %</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	2024-09-18 19:24:24 UTC (rev 72319)
+++ trunk/Master/texmf-dist/tex/generic/babel/babel.def	2024-09-18 19:25:46 UTC (rev 72320)
@@ -39,8 +39,8 @@
     \wlog{File: #1 #4 #3 <#2>}%
     \let\ProvidesFile\@undefined}
 \fi
-\ProvidesFile{babel.def}[2024/08/29 v24.9 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
@@ -595,8 +595,8 @@
     \toks@\expandafter{\bbl at tempc#3}%
     \expandafter\edef\csname extras\languagename\endcsname{\the\toks@}%
   \fi}
-\def\bbl at version{24.9}
-\def\bbl at date{2024/08/29}
+\def\bbl at version{24.10}
+\def\bbl at date{2024/09/18}
 \ifx\language\@undefined
   \csname newcount\endcsname\language
 \fi
@@ -737,30 +737,8 @@
 \let\endselectlanguage\relax
 \def\BabelContentsFiles{toc,lof,lot}
 \def\bbl at 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 at 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 at language{\languagename}%
   % write to auxs
   \expandafter\ifx\csname date\languagename\endcsname\relax\else
@@ -777,16 +755,21 @@
 \let\bbl at savelastskip\relax
 \newif\ifbbl at bcpallowed
 \bbl at bcpallowedfalse
-\def\select at language#1{% from set@, babel at aux
+\def\select at language#1{% from set@, babel at aux, babel at toc
   \ifx\bbl at selectorname\@empty
     \def\bbl at selectorname{select}%
+  \fi
   % set hymap
-  \fi
   \ifnum\bbl at hymapsel=\@cclv\chardef\bbl at hymapsel4\relax\fi
-  % set name
+  % set name (when coming from babel at aux)
   \edef\languagename{#1}%
   \bbl at fixname\languagename
-  % TODO. name at map must be here?
+  % define \localename when coming from set@, with a trick
+  \ifx\scantokens\@undefined
+    \def\localename{??}%
+  \else
+    \bbl at exp{\\\scantokens{\def\\\localename{\languagename}\\\noexpand}\relax}%
+  \fi
   \bbl at provide@locale
   \bbl at iflanguage\languagename{%
     \let\bbl at select@type\z@
@@ -794,7 +777,7 @@
 \def\babel at aux#1#2{%
   \select at language{#1}%
   \bbl at foreach\BabelContentsFiles{% \relax -> don't assume vertical mode
-    \@writefile{##1}{\babel at toc{#1}{#2}\relax}}}% TODO - plain?
+    \@writefile{##1}{\babel at toc{#1}{#2}\relax}}}%
 \def\babel at toc#1#2{%
   \select at language{#1}}
 \newif\ifbbl at usedategroup
@@ -863,6 +846,12 @@
   \ifin@\else\bbl at xin@{/k}{/\bbl at tempa}\fi % only kashida
   \ifin@\else\bbl at xin@{/p}{/\bbl at tempa}\fi % padding (eg, Tibetan)
   \ifin@\else\bbl at xin@{/v}{/\bbl at tempa}\fi % variable font
+  % hyphenation - save mins
+  \babel at savevariable\lefthyphenmin
+  \babel at savevariable\righthyphenmin
+  \ifnum\bbl at engine=\@ne
+    \babel at savevariable\hyphenationmin
+  \fi
   \ifin@
     % unhyphenated/kashida/elongated/padding = allow stretching
     \language\l at unhyphenated
@@ -874,16 +863,18 @@
     % other = select patterns
     \bbl at patterns{#1}%
   \fi
-  % hyphenation - mins
-  \babel at savevariable\lefthyphenmin
-  \babel at savevariable\righthyphenmin
+  % hyphenation - set mins
   \expandafter\ifx\csname #1hyphenmins\endcsname\relax
     \set at hyphenmins\tw@\thr@@\relax
+    \@nameuse{bbl at hyphenmins@}%
   \else
     \expandafter\expandafter\expandafter\set at hyphenmins
       \csname #1hyphenmins\endcsname\relax
   \fi
-  % reset selector name
+  \@nameuse{bbl at hyphenmins@}%
+  \@nameuse{bbl at hyphenmins@\languagename}%
+  \@nameuse{bbl at hyphenatmin@}%
+  \@nameuse{bbl at hyphenatmin@\languagename}%
   \let\bbl at selectorname\@empty}
 \long\def\otherlanguage#1{%
   \def\bbl at selectorname{other}%
@@ -938,6 +929,7 @@
     \bbl at usedategroupfalse
   \fi
   \bbl at fixname\languagename
+  \let\localename\languagename
   % TODO. name at map here?
   \bbl at provide@locale
   \bbl at iflanguage\languagename{%
@@ -1246,7 +1238,7 @@
   \catcode`\@=\atcatcode \let\atcatcode\relax
   \catcode`\==\eqcatcode \let\eqcatcode\relax
   \endinput}
-\def\bbl at afterldf#1{% TODO. Merge into the next macro? Unused elsewhere
+\def\bbl at afterldf#1{%
   \bbl at afterlang
   \let\bbl at afterlang\relax
   \let\BabelModifiers\relax
@@ -1262,7 +1254,9 @@
 \@onlypreamble\ldf at finish
 \def\main at language#1{%
   \def\bbl at main@language{#1}%
-  \let\languagename\bbl at main@language % TODO. Set localename
+  \let\languagename\bbl at main@language
+  \let\localename\bbl at main@language
+  \let\mainlocalename\bbl at main@language
   \bbl at id@assign
   \bbl at patterns{\languagename}}
 \def\bbl at beforestart{%
@@ -1286,7 +1280,7 @@
     \global\let\babel at aux\@gobbletwo  % Also as flag
   \fi}
 \ifcase\bbl at engine\or
-  \AtBeginDocument{\pagedir\bodydir} % TODO - a better place
+  \AtBeginDocument{\pagedir\bodydir}
 \fi
 \def\select at language@x#1{%
   \ifcase\bbl at select@type
@@ -1423,7 +1417,7 @@
     \bbl at afterfi\csname#1 at sh@#2 at sel\endcsname
   \fi}
 \begingroup
-\bbl at ifunset{ifincsname}% TODO. Ugly. Correct? Only Plain?
+\bbl at ifunset{ifincsname}%
   {\gdef\active at prefix#1{%
      \ifx\protect\@typeset at protect
      \else
@@ -1505,7 +1499,7 @@
     \expandafter\@firstoftwo
   \fi}
 \def\user at group{user}
-\def\language at group{english} % TODO. I don't like defaults
+\def\language at group{english}
 \def\system at group{system}
 \def\useshorthands{%
   \@ifstar\bbl at usesh@s{\bbl at usesh@x{}}}
@@ -1797,6 +1791,23 @@
               {\csname bbl at hyphenation@\bbl at tempa\endcsname\space}%
             #2}}}%
     \fi}}
+\ifx\NewDocumentCommand\@undefined\else
+  \NewDocumentCommand\babelhyphenmins{sommo}{%
+    \IfNoValueTF{#2}%
+      {\protected at edef\bbl at hyphenmins@{\set at hyphenmins{#3}{#4}}%
+       \IfValueT{#5}{%
+         \protected at edef\bbl at hyphenatmin@{\hyphenationmin=#5\relax}}%
+       \IfBooleanT{#1}{%
+         \lefthyphenmin=#3\relax
+         \righthyphenmin=#4\relax
+         \IfValueT{#5}{\hyphenationmin=#5\relax}}}%
+      {\edef\bbl at tempb{\zap at space#2 \@empty}%
+       \bbl at for\bbl at tempa\bbl at tempb{%
+         \@namedef{bbl at hyphenmins@\bbl at tempa}{\set at hyphenmins{#3}{#4}}%
+         \IfValueT{#5}{%
+           \@namedef{bbl at hyphenatmin@\bbl at tempa}{\hyphenationmin=#5\relax}}}%
+       \IfBooleanT{#1}{\bbl at error{hyphenmins-args}{}{}{}}}}
+\fi
 \def\bbl at allowhyphens{\ifvmode\else\nobreak\hskip\z at skip\fi}
 \def\bbl at t@one{T1}
 \def\allowhyphens{\ifx\cf at encoding\bbl at t@one\else\bbl at allowhyphens\fi}
@@ -2029,7 +2040,7 @@
     \bbl at xin@{,}{\bbl at language@opts}%
     \chardef\bbl at opt@hyphenmap\ifin at 4\else\@ne\fi
   \fi}
-\newcommand\setlocalecaption{%  TODO. Catch typos.
+\newcommand\setlocalecaption{%
   \@ifstar\bbl at setcaption@s\bbl at setcaption@x}
 \def\bbl at setcaption@x#1#2#3{%  language caption-name string
   \bbl at trim@def\bbl at tempa{#2}%

Modified: trunk/Master/texmf-dist/tex/generic/babel/babel.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/babel.sty	2024-09-18 19:24:24 UTC (rev 72319)
+++ trunk/Master/texmf-dist/tex/generic/babel/babel.sty	2024-09-18 19:25:46 UTC (rev 72320)
@@ -33,7 +33,7 @@
 %% extension |.ins|) which are part of the distribution.
 %%
 \NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{babel}[2024/08/29 v24.9 The Babel package]
+\ProvidesPackage{babel}[2024/09/18 v24.10 The Babel package]
 \@ifpackagewith{babel}{debug}
   {\providecommand\bbl at trace[1]{\message{^^J[ #1 ]}}%
    \let\bbl at debug\@firstofone
@@ -307,7 +307,7 @@
    #1\ifx\@empty#2\else,\bbl at afterfi\bbl at tempb#2\fi}%
 \def\bbl at tempe#1=#2\@@{%
   \bbl at csarg\edef{mod@#1}{\bbl at tempb#2}}
-\def\bbl at tempd#1.#2\@nnil{%  TODO. Refactor lists?
+\def\bbl at tempd#1.#2\@nnil{%
   \ifx\@empty#2%
     \edef\bbl at tempc{\ifx\bbl at tempc\@empty\else\bbl at tempc,\fi#1}%
   \else
@@ -316,7 +316,7 @@
       \edef\bbl at tempc{%
         \ifx\bbl at tempc\@empty\else\bbl at tempc,\fi#1.\bbl at tempb#2}%
     \else
-      \in@{$modifiers$}{$#1$}% TODO. Allow spaces.
+      \in@{$modifiers$}{$#1$}%
       \ifin@
         \bbl at tempe#2\@@
       \else
@@ -465,8 +465,8 @@
       \expandafter\@secondoftwo
     \fi}
 \fi
-\def\bbl at version{24.9}
-\def\bbl at date{2024/08/29}
+\def\bbl at version{24.10}
+\def\bbl at date{2024/09/18}
 \ifx\language\@undefined
   \csname newcount\endcsname\language
 \fi
@@ -550,7 +550,7 @@
   \ifx\babelprovide\@undefined
     \bbl at error{base-on-the-fly}{}{}{}%
   \fi
-  \let\bbl at auxname\languagename % Still necessary. TODO
+  \let\bbl at auxname\languagename % Still necessary.
   \bbl at ifunset{bbl at bcp@map@\languagename}{}% Move uplevel??
     {\edef\languagename{\@nameuse{bbl at bcp@map@\languagename}}}%
   \ifbbl at bcpallowed
@@ -635,30 +635,8 @@
 \let\endselectlanguage\relax
 \def\BabelContentsFiles{toc,lof,lot}
 \def\bbl at 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 at 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 at language{\languagename}%
   % write to auxs
   \expandafter\ifx\csname date\languagename\endcsname\relax\else
@@ -675,16 +653,21 @@
 \let\bbl at savelastskip\relax
 \newif\ifbbl at bcpallowed
 \bbl at bcpallowedfalse
-\def\select at language#1{% from set@, babel at aux
+\def\select at language#1{% from set@, babel at aux, babel at toc
   \ifx\bbl at selectorname\@empty
     \def\bbl at selectorname{select}%
+  \fi
   % set hymap
-  \fi
   \ifnum\bbl at hymapsel=\@cclv\chardef\bbl at hymapsel4\relax\fi
-  % set name
+  % set name (when coming from babel at aux)
   \edef\languagename{#1}%
   \bbl at fixname\languagename
-  % TODO. name at map must be here?
+  % define \localename when coming from set@, with a trick
+  \ifx\scantokens\@undefined
+    \def\localename{??}%
+  \else
+    \bbl at exp{\\\scantokens{\def\\\localename{\languagename}\\\noexpand}\relax}%
+  \fi
   \bbl at provide@locale
   \bbl at iflanguage\languagename{%
     \let\bbl at select@type\z@
@@ -692,7 +675,7 @@
 \def\babel at aux#1#2{%
   \select at language{#1}%
   \bbl at foreach\BabelContentsFiles{% \relax -> don't assume vertical mode
-    \@writefile{##1}{\babel at toc{#1}{#2}\relax}}}% TODO - plain?
+    \@writefile{##1}{\babel at toc{#1}{#2}\relax}}}%
 \def\babel at toc#1#2{%
   \select at language{#1}}
 \newif\ifbbl at usedategroup
@@ -761,6 +744,12 @@
   \ifin@\else\bbl at xin@{/k}{/\bbl at tempa}\fi % only kashida
   \ifin@\else\bbl at xin@{/p}{/\bbl at tempa}\fi % padding (eg, Tibetan)
   \ifin@\else\bbl at xin@{/v}{/\bbl at tempa}\fi % variable font
+  % hyphenation - save mins
+  \babel at savevariable\lefthyphenmin
+  \babel at savevariable\righthyphenmin
+  \ifnum\bbl at engine=\@ne
+    \babel at savevariable\hyphenationmin
+  \fi
   \ifin@
     % unhyphenated/kashida/elongated/padding = allow stretching
     \language\l at unhyphenated
@@ -772,16 +761,18 @@
     % other = select patterns
     \bbl at patterns{#1}%
   \fi
-  % hyphenation - mins
-  \babel at savevariable\lefthyphenmin
-  \babel at savevariable\righthyphenmin
+  % hyphenation - set mins
   \expandafter\ifx\csname #1hyphenmins\endcsname\relax
     \set at hyphenmins\tw@\thr@@\relax
+    \@nameuse{bbl at hyphenmins@}%
   \else
     \expandafter\expandafter\expandafter\set at hyphenmins
       \csname #1hyphenmins\endcsname\relax
   \fi
-  % reset selector name
+  \@nameuse{bbl at hyphenmins@}%
+  \@nameuse{bbl at hyphenmins@\languagename}%
+  \@nameuse{bbl at hyphenatmin@}%
+  \@nameuse{bbl at hyphenatmin@\languagename}%
   \let\bbl at selectorname\@empty}
 \long\def\otherlanguage#1{%
   \def\bbl at selectorname{other}%
@@ -836,6 +827,7 @@
     \bbl at usedategroupfalse
   \fi
   \bbl at fixname\languagename
+  \let\localename\languagename
   % TODO. name at map here?
   \bbl at provide@locale
   \bbl at iflanguage\languagename{%
@@ -1144,7 +1136,7 @@
   \catcode`\@=\atcatcode \let\atcatcode\relax
   \catcode`\==\eqcatcode \let\eqcatcode\relax
   \endinput}
-\def\bbl at afterldf#1{% TODO. Merge into the next macro? Unused elsewhere
+\def\bbl at afterldf#1{%
   \bbl at afterlang
   \let\bbl at afterlang\relax
   \let\BabelModifiers\relax
@@ -1160,7 +1152,9 @@
 \@onlypreamble\ldf at finish
 \def\main at language#1{%
   \def\bbl at main@language{#1}%
-  \let\languagename\bbl at main@language % TODO. Set localename
+  \let\languagename\bbl at main@language
+  \let\localename\bbl at main@language
+  \let\mainlocalename\bbl at main@language
   \bbl at id@assign
   \bbl at patterns{\languagename}}
 \def\bbl at beforestart{%
@@ -1196,7 +1190,7 @@
   \let\bbl at normalsf\normalsfcodes
   \let\normalsfcodes\relax} % Hack, to delay the setting
 \ifcase\bbl at engine\or
-  \AtBeginDocument{\pagedir\bodydir} % TODO - a better place
+  \AtBeginDocument{\pagedir\bodydir}
 \fi
 \def\select at language@x#1{%
   \ifcase\bbl at select@type
@@ -1333,7 +1327,7 @@
     \bbl at afterfi\csname#1 at sh@#2 at sel\endcsname
   \fi}
 \begingroup
-\bbl at ifunset{ifincsname}% TODO. Ugly. Correct? Only Plain?
+\bbl at ifunset{ifincsname}%
   {\gdef\active at prefix#1{%
      \ifx\protect\@typeset at protect
      \else
@@ -1415,7 +1409,7 @@
     \expandafter\@firstoftwo
   \fi}
 \def\user at group{user}
-\def\language at group{english} % TODO. I don't like defaults
+\def\language at group{english}
 \def\system at group{system}
 \def\useshorthands{%
   \@ifstar\bbl at usesh@s{\bbl at usesh@x{}}}
@@ -1707,6 +1701,23 @@
               {\csname bbl at hyphenation@\bbl at tempa\endcsname\space}%
             #2}}}%
     \fi}}
+\ifx\NewDocumentCommand\@undefined\else
+  \NewDocumentCommand\babelhyphenmins{sommo}{%
+    \IfNoValueTF{#2}%
+      {\protected at edef\bbl at hyphenmins@{\set at hyphenmins{#3}{#4}}%
+       \IfValueT{#5}{%
+         \protected at edef\bbl at hyphenatmin@{\hyphenationmin=#5\relax}}%
+       \IfBooleanT{#1}{%
+         \lefthyphenmin=#3\relax
+         \righthyphenmin=#4\relax
+         \IfValueT{#5}{\hyphenationmin=#5\relax}}}%
+      {\edef\bbl at tempb{\zap at space#2 \@empty}%
+       \bbl at for\bbl at tempa\bbl at tempb{%
+         \@namedef{bbl at hyphenmins@\bbl at tempa}{\set at hyphenmins{#3}{#4}}%
+         \IfValueT{#5}{%
+           \@namedef{bbl at hyphenatmin@\bbl at tempa}{\hyphenationmin=#5\relax}}}%
+       \IfBooleanT{#1}{\bbl at error{hyphenmins-args}{}{}{}}}}
+\fi
 \def\bbl at allowhyphens{\ifvmode\else\nobreak\hskip\z at skip\fi}
 \def\bbl at t@one{T1}
 \def\allowhyphens{\ifx\cf at encoding\bbl at t@one\else\bbl at allowhyphens\fi}
@@ -1939,7 +1950,7 @@
     \bbl at xin@{,}{\bbl at language@opts}%
     \chardef\bbl at opt@hyphenmap\ifin at 4\else\@ne\fi
   \fi}
-\newcommand\setlocalecaption{%  TODO. Catch typos.
+\newcommand\setlocalecaption{%
   \@ifstar\bbl at setcaption@s\bbl at setcaption@x}
 \def\bbl at setcaption@x#1#2#3{%  language caption-name string
   \bbl at trim@def\bbl at tempa{#2}%
@@ -2287,7 +2298,7 @@
       {}%
     \let\bbl at KVP@date\@empty
   \fi
-  \let\bbl at KVP@captions@@\bbl at KVP@captions % TODO. A dirty hack
+  \let\bbl at KVP@captions@@\bbl at KVP@captions
   \ifx\bbl at KVP@captions\@nnil
     \let\bbl at KVP@captions\bbl at KVP@import
   \fi
@@ -2374,7 +2385,6 @@
       \fi
       \bbl at exp{\\\bbl at add\\\bbl at starthyphens
         {\\\bbl at patterns@lua{\languagename}}}%
-      % TODO - error/warning if no script
       \directlua{
         if Babel.script_blocks['\bbl at cl{sbcp}'] then
           Babel.loc_to_scr[\the\localeid] = Babel.script_blocks['\bbl at cl{sbcp}']
@@ -2445,7 +2455,7 @@
     \bbl at csarg\edef{intsp@#2}{\bbl at KVP@intraspace}%
   \fi
   \bbl at provide@intraspace
-  % == Line breaking: CJK quotes == TODO -> @extras
+  % == Line breaking: CJK quotes ==
   \ifcase\bbl at engine\or
     \bbl at xin@{/c}{/\bbl at cl{lnbrk}}%
     \ifin@
@@ -3982,19 +3992,24 @@
     \fi}
 \fi
 \bbl at trace{Macros to switch the text direction}
+\def\bbl at alscripts{,Arabic,Syriac,Thaana,}
+\def\bbl at rscripts{%
+  ,Imperial Aramaic,Avestan,Cypriot,Hatran,Hebrew,%
+  Old Hungarian,Lydian,Mandaean,Manichaean,%
+  Meroitic Cursive,Meroitic,Old North Arabian,%
+  Nabataean,N'Ko,Orkhon,Palmyrene,Inscriptional Pahlavi,%
+  Psalter Pahlavi,Phoenician,Inscriptional Parthian,Samaritan,%
+  Old South Arabian,}%
 \def\bbl at provide@dirs#1{%
-  \bbl at xin@{\csname bbl at sbcp@#1\endcsname}{,Arab,Syrc,Thaa,}%
+  \bbl at xin@{\csname bbl at sname@#1\endcsname}{\bbl at alscripts\bbl at rscripts}%
   \ifin@
-    \global\bbl at csarg\chardef{wdir@#1}\tw@
-  \else
-    \bbl at xin@{\csname bbl at sbcp@#1\endcsname}{%
-      ,Armi,Avst,Cprt,Hatr,Hebr,Hung,Lydi,Mand,Mani,Merc,Mero,%
-       Narb,Nbat,Nkoo,Orkh,Palm,Phli,Phlp,Phnx,Prti,Samr,Sarb,}%
+    \global\bbl at csarg\chardef{wdir@#1}\@ne
+    \bbl at xin@{\csname bbl at sname@#1\endcsname}{\bbl at alscripts}%
     \ifin@
-      \global\bbl at csarg\chardef{wdir@#1}\@ne
-    \else
-      \global\bbl at csarg\chardef{wdir@#1}\z@
+      \global\bbl at csarg\chardef{wdir@#1}\tw@
     \fi
+  \else
+    \global\bbl at csarg\chardef{wdir@#1}\z@
   \fi
   \ifodd\bbl at engine
     \bbl at csarg\ifcase{wdir@#1}%

Modified: trunk/Master/texmf-dist/tex/generic/babel/errbabel.def
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/errbabel.def	2024-09-18 19:24:24 UTC (rev 72319)
+++ trunk/Master/texmf-dist/tex/generic/babel/errbabel.def	2024-09-18 19:25:46 UTC (rev 72320)
@@ -99,7 +99,7 @@
    {This macro is available only in LuaLaTeX and XeLaTeX.}%
    {Consider switching to these engines.}
 \bbl at errmessage{only-lua}
-   {This macro is available only in LuaLaTeX.}%
+   {This macro is available only in LuaLaTeX}%
    {Consider switching to that engine.}
 \bbl at errmessage{unknown-provide-key}
    {Unknown key '#1' in \string\babelprovide}%
@@ -106,12 +106,12 @@
    {See the manual for valid keys}%
 \bbl at errmessage{unknown-mapfont}
    {Option '\bbl at KVP@mapfont' unknown for\\%
-    mapfont. Use 'direction'.}%
+    mapfont. Use 'direction'}%
    {See the manual for details.}
 \bbl at 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 at errmessage{digits-is-reserved}
    {The counter name 'digits' is reserved for mapping\\%
@@ -119,7 +119,7 @@
    {Use another name.}
 \bbl at 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 at errmessage{alphabetic-too-large}
  {Alphabetic numeral too large (#1)}%
@@ -131,20 +131,20 @@
    {See the manual for details.}
 \bbl at errmessage{unknown-ini-field}
    {Unknown field '#1' in \string\BCPdata.\\%
-    Perhaps you misspelled it.}%
+    Perhaps you misspelled it}%
    {See the manual for details.}
 \bbl at 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 at 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 at 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 at errmessage{bidi-only-lua}
    {The bidi method 'basic' is available only in\\%
@@ -174,11 +174,11 @@
    {See the manual for further info}
 \bbl at 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 at 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 at errmessage{charproperty-only-vertical}
    {\string\babelcharproperty\space can be used only in\\%
@@ -213,8 +213,12 @@
    {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 at 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
 %%
 %% End of file `errbabel.def'.

Modified: trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg	2024-09-18 19:24:24 UTC (rev 72319)
+++ trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg	2024-09-18 19:25:46 UTC (rev 72320)
@@ -37,10 +37,10 @@
     \wlog{File: #1 #4 #3 <#2>}%
     \let\ProvidesFile\@undefined}
 \fi
-\ProvidesFile{hyphen.cfg}[2024/08/29 v24.9 Babel hyphens]
+\ProvidesFile{hyphen.cfg}[2024/09/18 v24.10 Babel hyphens]
 \xdef\bbl at format{\jobname}
-\def\bbl at version{24.9}
-\def\bbl at date{2024/08/29}
+\def\bbl at version{24.10}
+\def\bbl at date{2024/09/18}
 \ifx\AtBeginDocument\@undefined
   \def\@empty{}
 \fi

Modified: trunk/Master/texmf-dist/tex/generic/babel/nil.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/nil.ldf	2024-09-18 19:24:24 UTC (rev 72319)
+++ trunk/Master/texmf-dist/tex/generic/babel/nil.ldf	2024-09-18 19:25:46 UTC (rev 72320)
@@ -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}[2024/08/29 v24.9 Nil language]
+\ProvidesLanguage{nil}[2024/09/18 v24.10 Nil language]
 \LdfInit{nil}{datenil}
 \ifx\l at nil\@undefined
   \newlanguage\l at nil



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