texlive[72799] Master/texmf-dist: babel (8nov24)

commits+karl at tug.org commits+karl at tug.org
Fri Nov 8 23:06:55 CET 2024


Revision: 72799
          https://tug.org/svn/texlive?view=revision&revision=72799
Author:   karl
Date:     2024-11-08 23:06:55 +0100 (Fri, 08 Nov 2024)
Log Message:
-----------
babel (8nov24)

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-ca-hebrew.tex
    trunk/Master/texmf-dist/tex/generic/babel/babel-transforms.lua
    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/fr/babel-fr-BE.ini
    trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-CA.ini
    trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr.ini
    trunk/Master/texmf-dist/tex/generic/babel/locale/lrc/babel-lrc.ini
    trunk/Master/texmf-dist/tex/generic/babel/locale/mzn/babel-mzn.ini
    trunk/Master/texmf-dist/tex/generic/babel/locale/ps/babel-ps.ini
    trunk/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh.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	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/doc/latex/babel/README.md	2024-11-08 22:06:55 UTC (rev 72799)
@@ -1,6 +1,6 @@
-## Babel 24.12
+## Babel 24.13
 
-2024-10-20
+2024-11-08
 
 `babel` is the multilingual framework to localize 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.12 are described in:
+Changes in version 24.13 are described in:
 
-https://latex3.github.io/babel/news/whats-new-in-babel-24.12.html
+https://latex3.github.io/babel/news/whats-new-in-babel-24.13.html
 
 Apart from the manual, you can find information on some aspects of babel at:
 
@@ -48,14 +48,13 @@
 
 ### Summary of latest changes
 ```
-24.12  2024-10-20
-       * Fixes: 
-         - Date sometimes missing with lazy loading.
-         - Wrong stigma in some Greek numerals.
-         - Wrong handling of ‘complex’ class options.
-       * More tools for automated document generation workflows:
-         - New LaTeX hook: presets.
-         - New command: \PassOptionsToLocale.
+24.13  2024-11-08
+       * French: Added ‘transform values’ for punctuation.space.
+       * Pashto: Persian and Islamic calendar (which fixes an error,
+         too).
+       * Fixes:
+         - Uyghur hyphenation mechanism stopped working.
+         - The Hebrew calendar converter raised an error.
 ```
 
 ### 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-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/source/latex/babel/babel.dtx	2024-11-08 22:06:55 UTC (rev 72799)
@@ -32,8 +32,12 @@
 %
 % \iffalse
 %<*filedriver>
+\DocumentMetadata{ 
+  % testphase  = {sec,toc,text},
+  lang       = en-001,
+}
 \ProvidesFile{babel.dtx}%
-  [2024/10/20 v24.12
+  [2024/11/08 v24.13
    The multilingual framework for pdfLaTeX, LuaLaTeX and XeLaTeX] 
 \documentclass{ltxdoc}
 \GetFileInfo{babel.dtx}
@@ -188,6 +192,7 @@
   \colorbox{thegrey}{\ttfamily\hskip-.2em*\hskip-.2em}%
   \kern1pt}
 \def\trouble#1{\addcontentsline{tsh}{trouble}{#1}}
+\def\toclevel at trouble{0}
 \def\listoftroubles{\section*{Troubleshoooting}\@starttoc{tsh}}
 \let\l at trouble\l at figure
 \let\saved at check@percent\check at percent
@@ -212,18 +217,31 @@
      $\langle$\pm at module#2#3>$\rangle$%
      \ifx*#2\ $\equiv$\fi}
 \endgroup
+\def\toc at usehook#1#2#3{%
+  \UseHookWithArguments{contentsline/#1}{4}%
+    {\toclevel at section}%
+    {#2}{#3}{\@contentsline at destination}}
 \renewcommand*\l at section[2]{%
-  \ifnum \c at tocdepth >\z@
+  \ifnum\c at tocdepth>\z@
     \addpenalty\@secpenalty
-    \addvspace{1.0em \@plus\p@}%
+    \addvspace{1.0em\@plus\p@}%
     \setlength\@tempdima{2em}%
     \begingroup
-      \parindent \z@ \rightskip \@pnumwidth
-      \parfillskip -\@pnumwidth
-      \leavevmode \bfseries
+      \parindent\z@ \rightskip\@pnumwidth
+      \parfillskip-\@pnumwidth
+      \leavevmode\bfseries 
       \advance\leftskip\@tempdima
-      \hskip -\leftskip
-      #1\nobreak\hfil \nobreak\hb at xt@\@pnumwidth{\hss #2}\par
+      \hskip-\leftskip
+      \toc at usehook{text/before}{#1}{#2}%
+      \csname contentsline at text@1 at format\endcsname{#1}
+      \toc at usehook{text/after}{#1}{#2}%
+      \nobreak\hfil\nobreak \hb at xt@\@pnumwidth
+        {\hss
+         \toc at usehook{page/before}{#1}{#2}%
+         #2%
+         \toc at usehook{page/after}{#1}{#2}%
+         \kern-\p@\kern\p@}%
+      \par
     \endgroup
   \fi}
 \renewcommand*\l at subsection{\@dottedtocline{2}{2em}{3em}}
@@ -305,7 +323,7 @@
 \begin{description}
 \item[\sffamily\color{messages}What is this document about?] This user
 guide focuses on internationalization and localization with \LaTeX{}
-and \pdftex, \xetex{} and \luatex{} with the \babel{} package. There
+and \pdftex, \luatex{} and \xetex{} 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
@@ -327,14 +345,13 @@
 recent features can be still unstable. Remember version 24.1 follows
 3.99, because of a new numbering scheme.
 
-\item[\sffamily\color{messages}Can I help?] Sure! If you are interested
-in the \TeX{} multilingual support, please join the
-\href{http://tug.org/mailman/listinfo/kadingira}{kadingira mail list}.
-You can follow the development of \babel{} in
-\href{https://github.com/latex3/babel}{GitHub} and make suggestions; feel
-free to fork it and make pull requests. If you are the author of a
-package, send to me a few test files which I'll add to mine, so that
-possible issues can be caught in the development phase.
+\item[\sffamily\color{messages}Can I help?] Sure! You can follow the
+development of \babel{} in
+\href{https://github.com/latex3/babel}{GitHub} and make suggestions,
+including requirements for some language or script. Feel free to fork
+it and make pull requests. If you are the author of a package, send to
+me a few test files which I'll add to mine, so that possible issues can
+be caught in the development phase.
 
 \item[\sffamily\color{messages}It doesn't work for me!] You can ask for
 help in some forums like \textsf{tex.stackexchange}, but if you have
@@ -371,8 +388,8 @@
 \begin{itemize}
 \bfseries
 \item Tell \babel{} which language or languages are required.
-\item With non-Latin scripts and Unicode engines, select a suitable
-font (sec.~\ref{fonts})
+\item With non-Latin scripts and Unicode engines (\luatex is the
+preferred one), select a suitable font (sec.~\ref{fonts})
 \item In multilingual documents, switch the language in the text body
 (sec.~\ref{selectors}).
 \end{itemize}
@@ -390,7 +407,7 @@
 packages (in other words, \babel{} doesn’t set the languages, it just
 recognizes the options passed to the class or the package).
 
-Many languages are compatible with \textsf{xetex} and \textsf{luatex},
+Many languages are compatible with \textsf{luatex} and \textsf{xetex},
 but a few only work with \pdftex. When these engines are used, the
 Latin script is covered by default in current \LaTeX{} (provided the
 document encoding is UTF-8). Other scripts require loading
@@ -399,7 +416,7 @@
 
 \begin{example}
   Here is a simple full example for “traditional” \TeX{} engines (see
-  below for \xetex{} and \luatex{}). The package |fontenc| does not
+  below for \luatex{} and \xetex{}). The package |fontenc| does not
   belong to \babel, but it is included in the example because typically
   you will need it. It assumes UTF-8, the default encoding:
   \setengine{pdftex}
@@ -429,7 +446,7 @@
 
 \begin{example}
 Now a simple monolingual document in Russian (text from the Wikipedia)
-with \xetex{} or \luatex{}. Note neither \textsf{fontenc} nor
+with \luatex{} or \xetex{}. Note neither \textsf{fontenc} nor
 \textsf{inputenc} are necessary, and a so-called Unicode font must be
 loaded (in this example with the help of |\babelfont|, described below).
 
@@ -456,8 +473,8 @@
   Because of the way \babel{} has evolved, ``language'' can refer to
   (1) a set of hyphenation patterns as preloaded into the format, (2) a
   package option, (3) an |ldf| file, and (4) a name used in the
-  document to select a language or dialect. Please, read the
-  documentation for specific languages for further info.
+  document to select a language. Please, read the documentation for
+  specific languages for further info.
 \end{note}
 
 \begin{note}
@@ -728,7 +745,7 @@
 \end{example}
 
 \begin{example}
-  With \xetex{} and \luatex, the following bilingual, single script
+  With \luatex{} and \xetex, the following bilingual, single script
   document in UTF-8 encoding just prints a couple of ‘captions’ and
   |\today| in Danish and Vietnamese. No additional packages are
   required, because the default font supports both languages.
@@ -813,10 +830,11 @@
 by \babel{} with an |.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).
+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).
+
 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}). 
@@ -826,7 +844,6 @@
 \bigskip\hrule\nobreak
 
 \makeatletter
-\def\tag#1{\par\@hangfrom{\makebox[10em][l]{#1}}\ignorespaces}
 \def\tag#1#2{\par
   \hspace{-2em}\textcolor{thered}{\texttt{#1}}#2\enspace}
 \def\subtag#1#2{\par
@@ -855,6 +872,7 @@
 \tag{afrikaans}{}
 \tag{albanian}{}
 \tag{arabic}{}
+\note{Requires \textsf{arabi}.}
 \tag{azerbaijani}{}
 \tag{basque}{}
 \tag{belarusian}{}
@@ -878,6 +896,7 @@
 \tag{estonian}{}
 \tagmin{ethiop}{} %%%%%%
 \tag{farsi}{}
+\note{Requires \textsf{arabi}.}
 \tag{finnish}{}
 \tag{french}{}
 \subtagalt{acadian}{}
@@ -896,6 +915,7 @@
 \subtagmin{bgreek}{}
 \tag{hebrew}{}
 \tag{hindi}{}
+\note{Requires \textsf{velthuis}.}
 \tag{hungarian}{}
 \subtag{magyar}{}
 \tag{icelandic}{}
@@ -934,11 +954,11 @@
 \tag{romansh}{}
 \tag{russian}{}
 \tag{scottishgaelic}{}
-\note{Preferred to \texttt{scottish}}
-\tag{serbian}{}
+\subtag{scottish}{}
+\tag{serbianc}{}
+\note{Cyrillic script}
+\subtagalt{serbian}{}
 \note{Latin script}
-\subtagalt{serbianc}{}
-\note{Cyrillic script}
 \tag{slovak}{}
 \tag{slovene}{}
 \tag{slovenian}{}  %%%%%% <- and ini
@@ -1006,13 +1026,6 @@
 they are ‘bare minimum locales’. They are set in
 \textcolor[gray]{.4}{gray} in the following list.
 
-\begin{note}
-  Although the names of the corresponding |lfd| files match those in
-  this list, there are some exceptions, particularly in German and
-  Serbian. So, |ngerman| is called here |german|, which is the name in
-  the CLDR and, actually, the most logical.
-\end{note}
-
 \begingroup
 \bigskip\hrule\nobreak
 
@@ -1576,7 +1589,7 @@
 \end{note}
 
 \New{3.15} \Babel{} has native support for Unicode fonts (OpenType and
-TrueType) in \xetex{} and \luatex{} by means of a high level interface
+TrueType) in \luatex{} and \xetex{} by means of a high level interface
 on top of |fontspec|. This makes it easier to handle a wide range of
 languages and scripts, and simplifies the process of typesetting
 multilingual documents. As described below, with \luatex{} the font can
@@ -1952,7 +1965,7 @@
 \begin{example}
 Here is a document putting in practice some the techniques described,
 which shows how to deal neatly with complex multilingual documents
-in \xetex{} and \luatex, with the help of logical markup. You are
+in \luatex{} and \xetex, with the help of logical markup. You are
 writing a book on Indic literature with many extracts in several
 languages, which fits in the category of ‘mostly monolingual’. Loading
 of locales and fonts is lazy, which greatly simplifies the preamble.
@@ -2318,7 +2331,7 @@
   optimized version of \texttt{other*} for monolingual
   documents.\footnote{Providing |foreign| is pointless, because the
   case mapping applied is that at the end of the paragraph, but if either
-  \xetex{} or \luatex{} change this behavior it might be added. On
+  \luatex{} or \xetex{} change this behavior it might be added. On
   the other hand, |other| is provided even if I [JBL] think it isn't
   really useful, but who knows.}
 \end{description}
@@ -2884,7 +2897,7 @@
   actually set.
 \item[defaultcommands] Used (locally) in |\StartBabelCommands|.
 \item[encodedcommands] (input, font encodings) Used (locally) in
-  |\StartBabelCommands|. Both \xetex{} and \luatex{} make sure the
+  |\StartBabelCommands|. Both \luatex{} and \xetex{} make sure the
   encoded text is read correctly.
 \item[stopcommands] Used to reset the above, if necessary.
 \item[write] This event comes just after the switching commands are
@@ -3174,7 +3187,7 @@
 \Describe{main}{} This valueless option makes the language the main one
 (thus overriding that set when \babel\ is loaded).
 \begin{example}
-  Let's assume your document (\xetex{} or \luatex{}) is mainly in
+  Let's assume your document (\luatex{} or \xetex{}) is mainly in
   Polytonic Greek with but with some sections in Italian. Then, the
   first attempt should be:
 \begin{verbatim}
@@ -3319,10 +3332,11 @@
 \Babel{} deals with three kinds of line breaking rules: Western,
 typically the LGC group, South East Asian, like Thai, and CJK, but
 support depends on the engine: \textsf{pdftex} only deals with the
-former, \xetex{} also with the second one (although in a limited way),
-while \luatex{} provides basic rules for the latter, too. With \luatex{}
-there are also tools for non-standard hyphenation rules, explained in
-the next section.
+former, \xetex{} also with the second one (although in a limited way)
+and CJK, while \luatex{} provides basic rules for all of them, as well
+as additional rules (like Uyghur and Tibetan). With \luatex{} there are
+also tools for non-standard hyphenation and line breaking rules,
+explained in the next section.
 
 \Describe{\babelhyphenation}{\texttt{[}\langlist\texttt{]}%
     \marg{exceptions}}
@@ -3336,8 +3350,7 @@
 It can be used only in the preamble, and exceptions are set when the
 language is first selected, thus taking into account changes of
 |\lccodes|'s done in |\extras<language>| as well as the language-specific
-encoding (not set in the preamble by default). Multiple
-|\babelhyphenation|'s are allowed. For example:
+encoding (not set in the preamble by default). For example:
 \begin{verbatim}
 \babelhyphenation{Wal-hal-la Dar-bhan-ga}
 \end{verbatim}
@@ -3589,7 +3602,7 @@
 space; (3) several kinds of discretionaries and breaks can be inserted
 easily with |"-|, |"=|, etc.
 
-The package \textsf{inputenc} as well as \xetex{} and \luatex{} have
+The package \textsf{inputenc} as well as \luatex{} and \xetex{} have
 alleviated entering non-ASCII characters, but minority languages and
 some kinds of text can still require characters not directly available
 on the keyboards (and sometimes not even as separated or precomposed
@@ -3879,8 +3892,8 @@
 
 \New{3.20} About thirty |ini| files define a field named
 |digits.native|. When it is present, two macros are created:
-|\<language>digits| and |\<language>counter| (only \xetex{} and
-\luatex{}). With the first, a string of ‘Latin’ digits are converted to
+|\<language>digits| and |\<language>counter| (only \luatex{} and
+\xetex{}). With the first, a string of ‘Latin’ digits are converted to
 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},
@@ -3967,7 +3980,7 @@
 
 \New{3.41} Many `ini` locale files provide information
 about non-positional numerical systems, based on those predefined in
-CSS. They only work with \xetex{} and \luatex{} and are fully
+CSS. They only work with \luatex{} and \xetex{} and are fully
 expandable (even inside an unprotected |\edef|). Currently, they are
 limited to numbers below 10000.
 
@@ -5240,7 +5253,7 @@
   last two may be left empty); where \langvar\ is either the name of
   the language definition file or the name of the \LaTeX\ option that
   is to be used. These macros and their functions are discussed
-  below. You must define all or none for a language (or a dialect);
+  below. You must define all or none for a language;
   defining, say, |\date|\langvar\ but not |\captions|\langvar\ does
   not raise an error but can lead to unexpected results.
 \item When a language definition file is loaded, it can define
@@ -5347,14 +5360,15 @@
 patterns.
 
 \DescribeMacro{\adddialect}
-The macro |\adddialect| can be used when two languages can (or
-must) use the same hyphenation patterns. This can also be useful
-for languages for which no patterns are preloaded in the
-format. In such cases the default behavior of the \babel{}
-system is to define this language as a `dialect' of the language
-for which the patterns were loaded as |\language0|.  Here
-``language'' is used in the \TeX{} sense of set of hyphenation
-patterns.
+The macro |\adddialect| can be used when two languages can (or must)
+use the same hyphenation patterns. This can also be useful for
+languages for which no patterns are preloaded in the format. In such
+cases the default behavior of the \babel{} system is to define this
+language as a ‘dialect’ of the language for which the patterns were
+loaded as |\language0|. Here ``language'' is used in the \TeX{} sense
+of set of hyphenation patterns, while “dialect”, which is misnomer,
+refers just to a language with the same hyphenation patterns as another
+(there is no relation with its linguistic meaning).
 
 \DescribeMacro{\<lang>hyphenmins}
 The macro |\|\langvar|hyphenmins| is used to store the values of
@@ -5666,7 +5680,7 @@
 
 A ``selector'' selects a group of definition are to be used, optionally
 followed by extra info about the encodings to be used. The name
-|unicode| must be used for \xetex{} and \luatex{}. Without a selector,
+|unicode| must be used for \luatex{} and \xetex{}. Without a selector,
 the LICR representation (ie, with macros like |\~{n}| instead of |ñ|)
 is assumed.
 
@@ -5830,7 +5844,7 @@
 
 \begin{note}
   This macro is not intended to fix wrong mappings done by Unicode
-  (which are the default in both \xetex{} and \luatex{}) -- if an
+  (which are the default in both \luatex{} and \xetex{}) -- if an
   assignment is wrong, fix it directly.
 \end{note}
 
@@ -5957,8 +5971,8 @@
 % \section{Tools}
 %
 %    \begin{macrocode}
-%<<version=24.12>>
-%<<date=2024/10/20>>
+%<<version=24.13>>
+%<<date=2024/11/08>>
 %    \end{macrocode}
 %
 % \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -13612,7 +13626,7 @@
 %
 % Here the code for ini\TeX\ ends.
 %
-% \section{\xetex{} + \luatex{}: common stuff}
+% \section{\luatex{} + \xetex{}: common stuff}
 %
 % Add the bidi handler just before luaoftload, which is loaded by default
 % by LaTeX. Just in case, consider the possibility it has not been
@@ -14560,6 +14574,24 @@
       callback.register('process_input_buffer',Babel.callback)
     end
   end
+  function Babel.str_to_nodes(fn, matches, base)
+    local n, head, last
+    if fn == nil then return nil end
+    for s in string.utfvalues(fn(matches)) do
+      if base.id == 7 then 
+        base = base.replace
+      end
+      n = node.copy(base)
+      n.char    = s
+      if not head then
+        head = n
+      else
+        last.next = n
+      end
+      last = n
+    end 
+    return head
+  end
   Babel.linebreaking = Babel.linebreaking or {}
   Babel.linebreaking.before = {}
   Babel.linebreaking.after = {}
@@ -15501,7 +15533,7 @@
                'spacefactor = {' .. '%2, %3, %4' .. '}')           
              rep = rep:gsub('(kashida)%s*=%s*([^%s,]*)', Babel.capture_kashida)
              &% Transform values
-             rep, n = rep:gsub( '{([%a%-]+)|([%-%d%.]+)}',
+             rep, n = rep:gsub( '{([%a%-%.]+)|([%-%d%.]+)}',
               '{\the\csname bbl at id@@#3\endcsname,"%1",%2}')
            end
            if #1 == 1 then
@@ -16489,26 +16521,6 @@
   end
 end
 
--- Discretionaries contain strings as nodes
-function Babel.str_to_nodes(fn, matches, base)
-  local n, head, last
-  if fn == nil then return nil end
-  for s in string.utfvalues(fn(matches)) do
-    if base.id == 7 then 
-      base = base.replace
-    end
-    n = node.copy(base)
-    n.char    = s
-    if not head then
-      head = n
-    else
-      last.next = n
-    end
-    last = n
-  end 
-  return head
-end
-
 Babel.fetch_subtext = {}
 
 Babel.ignore_pre_char = function(node)
@@ -24650,7 +24662,7 @@
   #2=\bbl at cntcommon}
 \def\bbl at hebrdayspriormonths#1#2#3{%
   {\countdef\tmpf= 14
-   #3=\ifcase #1\relax
+   #3=\ifcase #1
           0 \or
           0 \or
          30 \or

Modified: trunk/Master/texmf-dist/source/latex/babel/babel.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/babel/babel.ins	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/source/latex/babel/babel.ins	2024-11-08 22:06:55 UTC (rev 72799)
@@ -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/10/20}
+\def\filedate{2024/11/08}
 \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	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx	2024-11-08 22:06:55 UTC (rev 72799)
@@ -30,7 +30,7 @@
 %
 % \iffalse
 %<*dtx>
-\ProvidesFile{bbcompat.dtx}[2024/10/20 v24.]
+\ProvidesFile{bbcompat.dtx}[2024/11/08 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-ca-hebrew.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/tex/generic/babel/babel-ca-hebrew.tex	2024-11-08 22:06:55 UTC (rev 72799)
@@ -198,7 +198,7 @@
   #2=\bbl at cntcommon}
 \def\bbl at hebrdayspriormonths#1#2#3{%
   {\countdef\tmpf= 14
-   #3=\ifcase #1\relax
+   #3=\ifcase #1
           0 \or
           0 \or
          30 \or

Modified: trunk/Master/texmf-dist/tex/generic/babel/babel-transforms.lua
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/babel-transforms.lua	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/tex/generic/babel/babel-transforms.lua	2024-11-08 22:06:55 UTC (rev 72799)
@@ -44,26 +44,6 @@
   end
 end
 
--- Discretionaries contain strings as nodes
-function Babel.str_to_nodes(fn, matches, base)
-  local n, head, last
-  if fn == nil then return nil end
-  for s in string.utfvalues(fn(matches)) do
-    if base.id == 7 then
-      base = base.replace
-    end
-    n = node.copy(base)
-    n.char    = s
-    if not head then
-      head = n
-    else
-      last.next = n
-    end
-    last = n
-  end
-  return head
-end
-
 Babel.fetch_subtext = {}
 
 Babel.ignore_pre_char = function(node)

Modified: trunk/Master/texmf-dist/tex/generic/babel/babel.def
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/babel.def	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/tex/generic/babel/babel.def	2024-11-08 22:06:55 UTC (rev 72799)
@@ -39,7 +39,7 @@
     \wlog{File: #1 #4 #3 <#2>}%
     \let\ProvidesFile\@undefined}
 \fi
-\ProvidesFile{babel.def}[2024/10/20 v24.12 Babel common definitions]
+\ProvidesFile{babel.def}[2024/11/08 v24.13 Babel common definitions]
 \ifx\AtBeginDocument\@undefined
   \def\@empty{}
 \def\loadlocalcfg#1{%
@@ -595,8 +595,8 @@
     \toks@\expandafter{\bbl at tempc#3}%
     \expandafter\edef\csname extras\languagename\endcsname{\the\toks@}%
   \fi}
-\def\bbl at version{24.12}
-\def\bbl at date{2024/10/20}
+\def\bbl at version{24.13}
+\def\bbl at date{2024/11/08}
 \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	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/tex/generic/babel/babel.sty	2024-11-08 22:06:55 UTC (rev 72799)
@@ -34,7 +34,7 @@
 %%
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{babel}%
-  [2024/10/20 v24.12
+  [2024/11/08 v24.13
    The multilingual framework for pdfLaTeX, LuaLaTeX and XeLaTeX]
 \@ifpackagewith{babel}{debug}
   {\providecommand\bbl at trace[1]{\message{^^J[ #1 ]}}%
@@ -468,8 +468,8 @@
       \expandafter\@secondoftwo
     \fi}
 \fi
-\def\bbl at version{24.12}
-\def\bbl at date{2024/10/20}
+\def\bbl at version{24.13}
+\def\bbl at date{2024/11/08}
 \ifx\language\@undefined
   \csname newcount\endcsname\language
 \fi

Modified: trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg	2024-11-08 22:06:55 UTC (rev 72799)
@@ -37,10 +37,10 @@
     \wlog{File: #1 #4 #3 <#2>}%
     \let\ProvidesFile\@undefined}
 \fi
-\ProvidesFile{hyphen.cfg}[2024/10/20 v24.12 Babel hyphens]
+\ProvidesFile{hyphen.cfg}[2024/11/08 v24.13 Babel hyphens]
 \xdef\bbl at format{\jobname}
-\def\bbl at version{24.12}
-\def\bbl at date{2024/10/20}
+\def\bbl at version{24.13}
+\def\bbl at date{2024/11/08}
 \ifx\AtBeginDocument\@undefined
   \def\@empty{}
 \fi

Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-BE.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-BE.ini	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-BE.ini	2024-11-08 22:06:55 UTC (rev 72799)
@@ -9,8 +9,8 @@
 
 [identification]
 charset = utf8
-version = 1.0
-date = 2024-01-03
+version = 1.1
+date = 2024-11-05
 name.local = français
 name.english = French
 name.babel = french-belgium french-be
@@ -190,35 +190,35 @@
 [transforms.prehyphenation]
 punctuation.space.1.0 = { [^|{(}{[}{007B}] () [;!{?}] () }
 punctuation.space.1.1 =   { insert, penalty = 10000 }
-punctuation.space.1.2 =   { insert, spacefactor= .5 0 0, data = 1 }
+punctuation.space.1.2 =   { insert, spacefactor= {high.natural|.5} {high.plus|0} {high.minus|0}, data = 1 }
 punctuation.space.1.3 =   {}
 punctuation.space.2.0 = { [^{(}{[}{007B}] () | [;!{?}] () }
 punctuation.space.2.1 =   { insert, penalty = 10000 }
-punctuation.space.2.2 =   { spacefactor= .5 0 0, data = 2 }
+punctuation.space.2.2 =   { spacefactor= {high.natural|.5} {high.plus|0} {high.minus|0}, data = 2 }
 punctuation.space.2.3 =   {}
 punctuation.space.3.0 = { [^|{(}{[}{007B} ] () : () }
 punctuation.space.3.1 =   { insert, penalty = 10000 }
-punctuation.space.3.2 =   { insert, spacefactor= 1 1 1, data = 1 }
+punctuation.space.3.2 =   { insert, spacefactor= {colon.natural|1} {colon.plus|1} {colon.minus|1}, data = 1 }
 punctuation.space.3.3 =   {}
 punctuation.space.4.0 = { [^{(}{[}{007B} ] () |: () }
 punctuation.space.4.1 =   { insert, penalty = 10000 }
-punctuation.space.4.2 =   { spacefactor= 1 1 1, data = 2 }
+punctuation.space.4.2 =   { spacefactor= {colon.natural|1} {colon.plus|1} {colon.minus|1}, data = 2 }
 punctuation.space.4.3 =   {}
 punctuation.space.5.0 = { [^|]()»() }
 punctuation.space.5.1 =   { insert, penalty = 10000 }
-punctuation.space.5.2 =   { insert, spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.5.2 =   { insert, spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
 punctuation.space.5.3 =   {}
 punctuation.space.6.0 = { [^|]()|»() }
 punctuation.space.6.1 =   { insert, penalty = 10000 }
-punctuation.space.6.2 =   { spacefactor= .8 .3 .8, data = 2 }
+punctuation.space.6.2 =   { spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 2 }
 punctuation.space.6.3 =   {}
 punctuation.space.7.0 = { «[^|] }
 punctuation.space.7.1 =   {}
 punctuation.space.7.2 =   { insert, penalty = 10000 }
-punctuation.space.7.3 =   { insert, spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.7.3 =   { insert, spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
 punctuation.space.7.4 =   {}
 punctuation.space.8.0 = { «|[^|] }
 punctuation.space.8.1 =   {}
 punctuation.space.8.2 =   { insert, penalty = 10000 }
-punctuation.space.8.3 =   { spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.8.3 =   { spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
 punctuation.space.8.4 =   {}

Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-CA.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-CA.ini	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-CA.ini	2024-11-08 22:06:55 UTC (rev 72799)
@@ -9,8 +9,8 @@
 
 [identification]
 charset = utf8
-version = 1.0
-date = 2024-01-03
+version = 1.1
+date = 2024-11-05
 name.local = français canadien
 name.english = Canadian French
 name.babel = canadien french-canada french-ca canadianfrench
@@ -190,27 +190,27 @@
 [transforms.prehyphenation]
 punctuation.space.1.0 = { [^|{(}{[}{007B} ] () : () }
 punctuation.space.1.1 =   { insert, penalty = 10000 }
-punctuation.space.1.2 =   { insert, spacefactor= 1 1 1, data = 1 }
+punctuation.space.1.2 =   { insert, spacefactor= {colon.natural|1} {colon.plus|1} {colon.minus|1}, data = 1 }
 punctuation.space.1.3 =   {}
 punctuation.space.2.0 = { [^{(}{[}{007B} ] () |: () }
 punctuation.space.2.1 =   { insert, penalty = 10000 }
-punctuation.space.2.2 =   { spacefactor= 1 1 1, data = 2 }
+punctuation.space.2.2 =   { spacefactor= {colon.natural|1} {colon.plus|1} {colon.minus|1}, data = 2 }
 punctuation.space.2.3 =   {}
 punctuation.space.3.0 = { [^|]()»() }
 punctuation.space.3.1 =   { insert, penalty = 10000 }
-punctuation.space.3.2 =   { insert, spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.3.2 =   { insert, spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
 punctuation.space.3.3 =   {}
 punctuation.space.4.0 = { [^|]()|»() }
 punctuation.space.4.1 =   { insert, penalty = 10000 }
-punctuation.space.4.2 =   { spacefactor= .8 .3 .8, data = 2 }
+punctuation.space.4.2 =   { spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 2 }
 punctuation.space.4.3 =   {}
 punctuation.space.5.0 = { «[^|] }
 punctuation.space.5.1 =   {}
 punctuation.space.5.2 =   { insert, penalty = 10000 }
-punctuation.space.5.3 =   { insert, spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.5.3 =   { insert, spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
 punctuation.space.5.4 =   {}
 punctuation.space.6.0 = { «|[^|] }
 punctuation.space.6.1 =   {}
 punctuation.space.6.2 =   { insert, penalty = 10000 }
-punctuation.space.6.3 =   { spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.6.3 =   { spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
 punctuation.space.6.4 =   {}

Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr.ini	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr.ini	2024-11-08 22:06:55 UTC (rev 72799)
@@ -1,7 +1,7 @@
 ; This file is part of babel. For further details see:
 ;   https://www.ctan.org/pkg/babel
 ; Data has been collected mainly from the following sources:
-; * babel language styles (license LPPL):
+; * babel language styles (license LPPL):€
 ;   https://www.ctan.org/pkg/babel-contrib
 ; * Common Locale Data Repository (license Unicode):
 ;   http://cldr.unicode.org/
@@ -9,8 +9,8 @@
 
 [identification]
 charset = utf8
-version = 1.0
-date = 2024-01-03
+version = 1.1
+date = 2024-11-05
 name.local = français
 name.english = French
 name.babel = french
@@ -189,36 +189,36 @@
 [transforms.prehyphenation]
 punctuation.space.1.0 = { [^|{(}{[}{007B}] () [;!{?}] () }
 punctuation.space.1.1 =   { insert, penalty = 10000 }
-punctuation.space.1.2 =   { insert, spacefactor= .5 0 0, data = 1 }
+punctuation.space.1.2 =   { insert, spacefactor= {high.natural|.5} {high.plus|0} {high.minus|0}, data = 1 }
 punctuation.space.1.3 =   {}
 punctuation.space.2.0 = { [^{(}{[}{007B}] () | [;!{?}] () }
 punctuation.space.2.1 =   { insert, penalty = 10000 }
-punctuation.space.2.2 =   { spacefactor= .5 0 0, data = 2 }
+punctuation.space.2.2 =   { spacefactor= {high.natural|.5} {high.plus|0} {high.minus|0}, data = 2 }
 punctuation.space.2.3 =   {}
 punctuation.space.3.0 = { [^|{(}{[}{007B} ] () : () }
 punctuation.space.3.1 =   { insert, penalty = 10000 }
-punctuation.space.3.2 =   { insert, spacefactor= 1 1 1, data = 1 }
+punctuation.space.3.2 =   { insert, spacefactor= {colon.natural|1} {colon.plus|1} {colon.minus|1}, data = 1 }
 punctuation.space.3.3 =   {}
 punctuation.space.4.0 = { [^{(}{[}{007B} ] () |: () }
 punctuation.space.4.1 =   { insert, penalty = 10000 }
-punctuation.space.4.2 =   { spacefactor= 1 1 1, data = 2 }
+punctuation.space.4.2 =   { spacefactor= {colon.natural|1} {colon.plus|1} {colon.minus|1}, data = 2 }
 punctuation.space.4.3 =   {}
 punctuation.space.5.0 = { [^|]()»() }
 punctuation.space.5.1 =   { insert, penalty = 10000 }
-punctuation.space.5.2 =   { insert, spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.5.2 =   { insert, spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
 punctuation.space.5.3 =   {}
 punctuation.space.6.0 = { [^|]()|»() }
 punctuation.space.6.1 =   { insert, penalty = 10000 }
-punctuation.space.6.2 =   { spacefactor= .8 .3 .8, data = 2 }
+punctuation.space.6.2 =   { spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 2 }
 punctuation.space.6.3 =   {}
 punctuation.space.7.0 = { «[^|] }
 punctuation.space.7.1 =   {}
 punctuation.space.7.2 =   { insert, penalty = 10000 }
-punctuation.space.7.3 =   { insert, spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.7.3 =   { insert, spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
 punctuation.space.7.4 =   {}
 punctuation.space.8.0 = { «|[^|] }
 punctuation.space.8.1 =   {}
 punctuation.space.8.2 =   { insert, penalty = 10000 }
-punctuation.space.8.3 =   { spacefactor= .8 .3 .8, data = 1 }
+punctuation.space.8.3 =   { spacefactor= {guillemet.natural|.8} {guillemet.plus|.3} {guillemet.minus|.8}, data = 1 }
 punctuation.space.8.4 =   {}
 

Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/lrc/babel-lrc.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/lrc/babel-lrc.ini	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/lrc/babel-lrc.ini	2024-11-08 22:06:55 UTC (rev 72799)
@@ -9,8 +9,8 @@
 
 [identification]
 charset = utf8
-version = 1.7
-date = 2022-12-08
+version = 1.8
+date = 2024-11-05
 name.local = لۊری شومالی
 name.english = Northern Luri
 name.babel = northernluri
@@ -24,6 +24,7 @@
 level = 1
 encodings = LAE LFE
 derivate = no
+warning = Persian and Islamic months are undefined. 
 
 [captions]
 preface = 
@@ -129,6 +130,48 @@
 dayPeriods.wide.am = AM
 dayPeriods.wide.pm = PM
 
+[date.persian]
+date.long = 
+months.wide.1     = 
+months.wide.2     = 
+months.wide.3     = 
+months.wide.4     = 
+months.wide.5     = 
+months.wide.6     = 
+months.wide.7     = 
+months.wide.8     = 
+months.wide.9     = 
+months.wide.10    = 
+months.wide.11    = 
+months.wide.12    = 
+months.narrow.1   = 
+months.narrow.2   = 
+months.narrow.3   = 
+months.narrow.4   = 
+months.narrow.5   = 
+months.narrow.6   = 
+months.narrow.7   = 
+months.narrow.8   = 
+months.narrow.9   = 
+months.narrow.10  = 
+months.narrow.11  = 
+months.narrow.12  = 
+
+[date.islamic]
+date.long = 
+months.wide.1     = 
+months.wide.2     = 
+months.wide.3     = 
+months.wide.4     = 
+months.wide.5     = 
+months.wide.6     = 
+months.wide.7     = 
+months.wide.8     = 
+months.wide.9     = 
+months.wide.10    = 
+months.wide.11    = 
+months.wide.12    = 
+
 [time.gregorian]
 time.medium = [HH]:[mm]:[ss]
 time.short = [HH]:[mm]
@@ -148,10 +191,10 @@
 
 [characters]
 delimiters.quotes = “”‘’
-auxiliary = [\u200B\u200C\u200D\u200E\u200F \u064B \u064C \u064D \u064E \u064F \u0650 \u0651 \u0652 \u0654 إ ة ك ه ى ي]
-exemplarCharacters = [\u0659 \u065B آ أ ؤ ئ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ڤ ق ک گ ل م ن ھ ە و ۉ ۊ ی ؽ]
+auxiliary = [\u200B\u200C\u200D\u200E\u200F ً ٌ ٍ َ ُ ِ ّ ْ ٔ إ ة ك ه ى ي]
+exemplarCharacters = [ٙ ٛ آ أ ؤ ئ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ڤ ق ک گ ل م ن ھ ە و ۉ ۊ ی ؽ]
 index = [آ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن ھ و ی]
-punctuation = [\\- ‐ ‑ ، ٫ ٬ ؛ \\: ! ؟ . … ‹ › « » ( ) \\[ \\] * / \\\\]
+punctuation = [\\- ‐‑ ، ٫ ٬ ؛ \\: ! ؟ . … ‹ › « » ( ) \\[ \\] * / \\\\]
 
 [numbers]
 defaultNumberingSystem = arabext

Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/mzn/babel-mzn.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/mzn/babel-mzn.ini	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/mzn/babel-mzn.ini	2024-11-08 22:06:55 UTC (rev 72799)
@@ -9,8 +9,8 @@
 
 [identification]
 charset = utf8
-version = 1.7
-date = 2022-12-08
+version = 1.8
+date = 2024-11-05
 name.local = مازرونی
 name.english = Mazanderani
 name.babel = mazanderani
@@ -24,6 +24,7 @@
 level = 1
 encodings = LFE LAE
 derivate = no
+warning = Persian and Islamic months are undefined. 
 
 [captions]
 preface = 
@@ -129,6 +130,48 @@
 dayPeriods.wide.am = AM
 dayPeriods.wide.pm = PM
 
+[date.persian]
+date.long = 
+months.wide.1     =
+months.wide.2     =
+months.wide.3     =
+months.wide.4     =
+months.wide.5     =
+months.wide.6     =
+months.wide.7     =
+months.wide.8     =
+months.wide.9     =
+months.wide.10    =
+months.wide.11    =
+months.wide.12    =
+months.narrow.1   =
+months.narrow.2   =
+months.narrow.3   =
+months.narrow.4   =
+months.narrow.5   =
+months.narrow.6   =
+months.narrow.7   =
+months.narrow.8   =
+months.narrow.9   =
+months.narrow.10  =
+months.narrow.11  =
+months.narrow.12  =
+
+[date.islamic]
+date.long =
+months.wide.1     =
+months.wide.2     =
+months.wide.3     =
+months.wide.4     =
+months.wide.5     =
+months.wide.6     =
+months.wide.7     =
+months.wide.8     =
+months.wide.9     =
+months.wide.10    =
+months.wide.11    =
+months.wide.12    =
+
 [time.gregorian]
 time.medium = [HH]:[mm]:[ss]
 time.short = [HH]:[mm]

Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/ps/babel-ps.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/ps/babel-ps.ini	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/ps/babel-ps.ini	2024-11-08 22:06:55 UTC (rev 72799)
@@ -9,8 +9,8 @@
 
 [identification]
 charset = utf8
-version = 1.7
-date = 2022-12-08
+version = 1.8
+date = 2024-10-24
 name.local = پښتو
 name.english = Pashto
 name.babel = pashto
@@ -129,6 +129,36 @@
 dayPeriods.wide.am = غ.م.
 dayPeriods.wide.pm = غ.و.
 
+[date.persian]
+date.long = د [y] د [MMMM] [d]
+months.wide.1     = وری
+months.wide.2     = غویی
+months.wide.3     = غبرگولی
+months.wide.4     = چنگاښ
+months.wide.5     = زمری
+months.wide.6     = وږی
+months.wide.7     = تله
+months.wide.8     = لړم
+months.wide.9     = لیندۍ
+months.wide.10    = مرغومی
+months.wide.11    = سلواغه
+months.wide.12    = کب
+
+[date.islamic]
+date.long = د [y] د [MMMM] [d]
+months.wide.1     = محرم
+months.wide.2     = صفر
+months.wide.3     = ربيع
+months.wide.4     = ربيع II
+months.wide.5     = جماعه
+months.wide.6     = جماعه II
+months.wide.7     = رجب
+months.wide.8     = شعبان
+months.wide.9     = رمضان
+months.wide.10    = شوال
+months.wide.11    = ذي القعده
+months.wide.12    = ذي الحج
+
 [time.gregorian]
 time.medium = [H]:[mm]:[ss]
 time.short = [H]:[mm]
@@ -148,9 +178,9 @@
 
 [characters]
 delimiters.quotes = “”‘’
-auxiliary = [\u200C \u200D \u200E\u200F ے]
-exemplarCharacters = [\u064E \u0650 \u064F \u064B \u064D \u064C \u0651 \u0652 \u0654 \u0670 آ ا أ ء ب پ ت ټ ث ج ځ چ څ ح خ د ډ ذ ر ړ ز ژ ږ س ش ښ ص ض ط ظ ع غ ف ق ک ګ گ ل م ن ڼ ه ة و ؤ ی ي ې ۍ ئ]
-punctuation = [، ; \\: ! ۔ ' ‘ ( ) \\[ \\] \\{ \\} /]
+auxiliary = [\u200C\u200D\u200E\u200F ے]
+exemplarCharacters = [َ ِ ُ ً ٍ ٌ ّ ْ ٔ ٰ آ اأ ء ب پ ت ټ ث ج ځ چ څ ح خ د ډ ذ ر ړ ز ژ ږ س ش ښ ص ض ط ظ ع غ ف ق ک ګگ ل م ن ڼ هة وؤ یيېۍئ]
+punctuation = [، ; \\: ! ۔ '‘ ( ) \\[ \\] \\{ \\} /]
 
 [numbers]
 defaultNumberingSystem = arabext

Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh.ini	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/zh/babel-zh.ini	2024-11-08 22:06:55 UTC (rev 72799)
@@ -256,7 +256,6 @@
 spacing.basic.3.2 =   {}
 ;
 spacing.basic.4.0 = { [、。,.・:;!?)]}〉》」』】〕〗〙〛”〞] ()[{a}]() }
-spacing.basic.4.1 =   { insert, space = {cjknormal|0} {cjkplus|.1} 0 }
 spacing.basic.4.1 =   { insert, kern = -.5, step = -1 }
 spacing.basic.4.2 =   { insert, penalty = 0 }
 spacing.basic.4.3 =   { insert, kern = .5 }

Modified: trunk/Master/texmf-dist/tex/generic/babel/luababel.def
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/luababel.def	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/tex/generic/babel/luababel.def	2024-11-08 22:06:55 UTC (rev 72799)
@@ -224,6 +224,24 @@
       callback.register('process_input_buffer',Babel.callback)
     end
   end
+  function Babel.str_to_nodes(fn, matches, base)
+    local n, head, last
+    if fn == nil then return nil end
+    for s in string.utfvalues(fn(matches)) do
+      if base.id == 7 then
+        base = base.replace
+      end
+      n = node.copy(base)
+      n.char    = s
+      if not head then
+        head = n
+      else
+        last.next = n
+      end
+      last = n
+    end
+    return head
+  end
   Babel.linebreaking = Babel.linebreaking or {}
   Babel.linebreaking.before = {}
   Babel.linebreaking.after = {}
@@ -1209,7 +1227,7 @@
                'spacefactor = {' .. '%2, %3, %4' .. '}')
              rep = rep:gsub('(kashida)%s*=%s*([^%s,]*)', Babel.capture_kashida)
              &% Transform values
-             rep, n = rep:gsub( '{([%a%-]+)|([%-%d%.]+)}',
+             rep, n = rep:gsub( '{([%a%-%.]+)|([%-%d%.]+)}',
               '{\the\csname bbl at id@@#3\endcsname,"%1",%2}')
            end
            if #1 == 1 then

Modified: trunk/Master/texmf-dist/tex/generic/babel/nil.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/nil.ldf	2024-11-08 22:05:45 UTC (rev 72798)
+++ trunk/Master/texmf-dist/tex/generic/babel/nil.ldf	2024-11-08 22:06:55 UTC (rev 72799)
@@ -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/10/20 v24.12 Nil language]
+\ProvidesLanguage{nil}[2024/11/08 v24.13 Nil language]
 \LdfInit{nil}{datenil}
 \ifx\l at nil\@undefined
   \newlanguage\l at nil



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