summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-12-06 21:14:42 +0000
committerKarl Berry <karl@freefriends.org>2023-12-06 21:14:42 +0000
commit2ade5ab373c3668e8ca81993718a3fc525a3651f (patch)
tree37d84bf082809d6b85f4c0b5102ceca5b04350c8
parent4e1d4811887f7e290bf961a00da6c4b2b9507eac (diff)
babel (6dec23)
git-svn-id: svn://tug.org/texlive/trunk@69050 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/babel/README.md19
-rw-r--r--Master/texmf-dist/doc/latex/babel/babel-code.pdfbin641895 -> 642032 bytes
-rw-r--r--Master/texmf-dist/doc/latex/babel/babel.pdfbin417319 -> 417807 bytes
-rw-r--r--Master/texmf-dist/source/latex/babel/babel.dtx440
-rw-r--r--Master/texmf-dist/source/latex/babel/babel.ins2
-rw-r--r--Master/texmf-dist/source/latex/babel/bbcompat.dtx2
-rw-r--r--Master/texmf-dist/source/latex/babel/bbidxglo.dtx4
-rw-r--r--Master/texmf-dist/source/latex/babel/locale.zipbin1036974 -> 1037159 bytes
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.def55
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.sty141
-rw-r--r--Master/texmf-dist/tex/generic/babel/hyphen.cfg6
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/fa/babel-fa.ini64
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/la/babel-classicallatin.tex4
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-classic.ini6
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-ecclesia.ini5
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-medieval.ini6
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/la/babel-la.ini7
-rw-r--r--Master/texmf-dist/tex/generic/babel/luababel.def2
-rw-r--r--Master/texmf-dist/tex/generic/babel/nil.ldf2
19 files changed, 425 insertions, 340 deletions
diff --git a/Master/texmf-dist/doc/latex/babel/README.md b/Master/texmf-dist/doc/latex/babel/README.md
index 2957d780bb4..b55e1bf964f 100644
--- a/Master/texmf-dist/doc/latex/babel/README.md
+++ b/Master/texmf-dist/doc/latex/babel/README.md
@@ -1,6 +1,6 @@
-## Babel 3.97
+## Babel 3.98
-2023-11-11
+2023-12-06
This package manages culturally-determined typographical (and other)
rules, and hyphenation patterns for a wide range of languages. Many
@@ -10,9 +10,9 @@ is a set of ini files for about 275 languages.
The latest stable version is available on <https://ctan.org/pkg/babel>.
-Changes in version 3.97 are described in:
+Changes in version 3.98 are described in:
-https://latex3.github.io/babel/news/whats-new-in-babel-3.97.html
+https://latex3.github.io/babel/news/whats-new-in-babel-3.98.html
Apart from the manual, you can find information on some aspects of babel at:
@@ -48,9 +48,14 @@ respective authors.
### Summary of latest changes
```
-3.97 2023-11-11
- * Support for 'interchar' (xetex).
- * New locale for Buriat, thanks to J. Khaganov.
+3.98 2023-12-06
+ * Case mappings in ini files, with new casing variants in the
+ Latin locales.
+ * New: \ShowLocaleProperties.
+ * Improved Persian/Farsi, thanks to Farshad Rasuli
+ (@farshadrasuli).
+ * In some languages and xetex, the language name was printed with
+ the first \foreignlanguage.
```
### Previous changes
diff --git a/Master/texmf-dist/doc/latex/babel/babel-code.pdf b/Master/texmf-dist/doc/latex/babel/babel-code.pdf
index 130befcb9ee..f319285ed30 100644
--- a/Master/texmf-dist/doc/latex/babel/babel-code.pdf
+++ b/Master/texmf-dist/doc/latex/babel/babel-code.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/babel/babel.pdf b/Master/texmf-dist/doc/latex/babel/babel.pdf
index da4b04f9288..bbf0f874f93 100644
--- a/Master/texmf-dist/doc/latex/babel/babel.pdf
+++ b/Master/texmf-dist/doc/latex/babel/babel.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/babel/babel.dtx b/Master/texmf-dist/source/latex/babel/babel.dtx
index 4345b09198a..afe17f79c57 100644
--- a/Master/texmf-dist/source/latex/babel/babel.dtx
+++ b/Master/texmf-dist/source/latex/babel/babel.dtx
@@ -32,7 +32,7 @@
%
% \iffalse
%<*filedriver>
-\ProvidesFile{babel.dtx}[2023/11/11 v3.97 The Babel package]
+\ProvidesFile{babel.dtx}[2023/12/06 v3.98 The Babel package]
\documentclass{ltxdoc}
\GetFileInfo{babel.dtx}
\usepackage{fontspec}
@@ -582,6 +582,16 @@ _\usepackage[vietnamese,danish]{babel}_
BCP47 tag. See section \ref{bcp47} for further details.
\end{note}
+\begin{note}
+ Documents with several input encodings are not frequent, but
+ sometimes are useful. You can set different encodings for different
+ languages as the following example shows:
+\begin{verbatim}
+\addto\extrasfrench{\inputencoding{latin1}}
+\addto\extrasrussian{\inputencoding{koi8-r}}
+\end{verbatim}
+\end{note}
+
\subsection{Mostly monolingual documents}
\label{mostlymono}
@@ -1438,7 +1448,7 @@ Or also:
corresponding behavior is not always implemented. Also, there are
some limitations in the engines. A few remarks follow (which could no
longer be valid when you read this manual, if the packages involved
- han been updated). The Harfbuzz renderer has still some issues, so as
+ have been updated). The Harfbuzz renderer still has some issues, so as
a rule of thumb prefer the default renderer, and resort to Harfbuzz
only if the former does not work for you. Fortunately, fonts can be
loaded twice with different renderers; for example:
@@ -1562,6 +1572,7 @@ captions):
\tag{bs-Cyrl} Bosnian
\tag{bs-Latn} Bosnian\hascapu\hascapl
\tag{bs} Bosnian\hascapu\hascapl
+\tag{bua} Buriat\hascapu\hascapl
\tag{byn} Blin
\tag{ca} Catalan\hascapu\hascapl
\tag{cch} Atsam
@@ -1936,6 +1947,7 @@ breton\\
british\\
britishenglish\\
bulgarian\\
+buriat\\
burmese\\
canadian\\
canadianenglish\\
@@ -2309,7 +2321,7 @@ Many locale templates are quite useable, provided captions and dates are
not required (which is a very frequent case, particularly in ancient
languages). So, they will be included in the default \babel{} distribution.
This can serve to encourage contributions, too. A warning will remember
-they are ‘bare minumum locales’. The locales are currently
+they are ‘bare minimum locales’. The locales are currently
the following:
\begin{multicols}{4}
\small
@@ -2615,23 +2627,25 @@ something like:
first loads |danish.ldf|, and then redefines the captions for
\texttt{danish} (as provided by the |ini| file) and prevents
hyphenation. The rest of the language definitions are not touched.
-Without the optional argument it just loads some aditional tools if
+Without the optional argument it just loads some additional tools if
provided by the |ini| file, like extra counters.
\Describe{\BabelUppercaseMapping}
{\marg{locale-name}\marg{codepoint}\marg{output}}
\DescribeOther{\BabelLowercaseMapping}
{\marg{locale-name}\marg{codepoint}\marg{output}}
+\DescribeOther{\BabelTitlecaseMapping}
+ {\marg{locale-name}\marg{codepoint}\marg{output}}
\New{3.90} These macros are devised as a high level interface for
declaring case mappings, based on the locale name as declared by or
-with \babel. They are the equivalent of |\DeclareUppercaseMapping| and
-|\DeclareLowercaseMapping| (see \textsf{usrguide.pdf}). The purpose is
-twofold: (1) a user-friendly way to declare them, because
-often BCP 47 tags are not known (and sometimes can be complex);
-(2) if for some reason the tag changes (eg, you decide to tag
-|english| as |en-001| instead of |en-US|), the new mappings will be
-still assigned to that language.
+with \babel. They are the equivalent of |\DeclareUppercaseMapping|,
+|\DeclareLowercaseMapping|, and |\DeclareTitlecaseMapping| (see
+\textsf{usrguide.pdf}). The purpose is twofold: (1) a user-friendly way
+to declare them, because often BCP 47 tags are not known (and sometimes
+can be complex); (2) if for some reason the tag changes (eg, you decide
+to tag |english| as |en-001| instead of |en-US|), the new mappings will
+be still assigned to that language.
\begin{example} For Classical Latin (no need to know the tag is
\texttt{la-x-classic}):
@@ -2832,14 +2846,19 @@ See the next section.
\Describe{Alph=}{\meta{counter-name}} Same for |\Alph|.
\Describe{casing}{\meta{rules}} \New{3.90} Selects the casing rules in a few
-languages. They are (from \textsf{interface3.pdf}):
+languages. The first ones are predefined by \LaTeX{} (see
+\textsf{interface3.pdf}), while the following are defined by \babel:
\begin{description}
- \item[Armenian] |yiwn|, which maps U+0587 to capital ech and yiwn on
+ \item[Armenian] |yiwn| maps U+0587 to capital ech and yiwn on
uppercasing.
- \item[German] |eszett|, which maps the lowercase \textit{Eszett} to a
+ \item[German] |eszett| maps the lowercase \textit{Eszett} to a
\textit{großes Eszett}.
- \item[Greek] |iota|, which converts the \textit{ypogegrammeni} (subscript muted
+ \item[Greek] |iota| converts the \textit{ypogegrammeni} (subscript muted
iota) to capital iota when uppercasing.
+ \item[Latin] |nouv| in |classicallatin| and |medievallatin| reverts
+ the default rules, which maps u ↔ V; |uv| in |ecclesianticallatin|
+ and the basic |latin| locale applies the map u ↔ V (by default it’s
+ u ↔ U and v ↔ V).
\end{description}
\begin{example} For the latter:
@@ -3048,7 +3067,7 @@ CSS. They only work with \xetex{} and \luatex{} and are fully
expandable (even inside an unprotected |\edef|). Currently, they are
limited to numbers below 10000.
-There are several ways to use them (for the availabe styles in each
+There are several ways to use them (for the available styles in each
language, see the list below):
\begin{itemize}
@@ -3327,6 +3346,10 @@ note several locales may share a single |\language|, so they are
separated concepts. In \luatex, the |\localeid| is saved in each node
(when it makes sense) as an attribute, too.
+\Describe{\ShowLocaleProporties}{\marg{language}}
+\New{3.98} Prints to the |log| file all the key/value pairs declared in
+the |ini| locale file for \meta{language}.
+
\Describe{\LocaleForEach}{\marg{code}}
\Babel{} remembers which |ini| files have been loaded. There is a loop
named |\LocaleForEach| to traverse the list, where |#1| is the name of
@@ -3498,6 +3521,22 @@ Unicode engines, spacing is based on the ``current'' em unit (the size
of the previous char in \luatex, and the font size set by the last
|\selectfont| in \xetex).
+\begin{note}
+ With Unicode engines, a line break can happen just before an explicit
+ combining char (eg, \textit{\~{g}}, used in Guarani and Filipino, is
+ not included as a combined char and it’s represented in Unicode as
+ |U+0067|~|U+0303|. This issue is not directly related to \babel, but
+ to the hyphenation patterns and/or the font renderer. However, at
+ least with \luatex{} there is a workaround (change the language name
+ to what you are using):
+\begin{verbatim}
+\babelposthyphenation{guarani}{ | [{0300}-{036F}] }{ remove, {} }
+\end{verbatim}
+The Lua pattern means ‘a discretionary followed by a character in the
+range |U+0300|--|U+0367| (which contains combining chars)’. An
+alternative to a transform is |\babelpatterns|.
+\end{note}
+
\subsection{Transforms}
\label{transforms}
@@ -3514,7 +3553,7 @@ It currently embraces |\babelprehyphenation| and
\New{3.57} Several \textsf{ini} files predefine some transforms. They
are activated with the key |transforms| in |\babelprovide|, either if
the locale is being defined with this macro or the languages has been
-previouly loaded as a class or package option, as the following example
+previously loaded as a class or package option, as the following example
illustrates:
\begin{verbatim}
\usepackage[hungarian]{babel}
@@ -3798,7 +3837,7 @@ future release).
\marg{class-first} and \marg{class-second} can be comma separated lists
of char classes, and all combinations are defined (so that 2 first
classes with 2 second classes, define 4 combinations). In the
-\marg{options} field a key named |label| is available, which allows to
+\meta{options} field a key named |label| is available, which allows to
enable or to disable the rule with the following two commands. Like
prehyphenation transforms in \luatex{}, interchars are not applied if the
current hyphenation rules are |nohyphenation|.
@@ -3832,7 +3871,7 @@ current language.
\begin{warning}
Keep in mind two points: (1) a character can be assigned a single
- class; this is a limitation in the interchar mechanims that often
+ class; this is a limitation in the interchar mechanisms that often
leads to incompatibilities; (2) since the character classes set with
|\babelcharclass| are saved (so that they can be restored), there is a
limit in the number of characters in the \marg{char-list} (which,
@@ -4610,7 +4649,7 @@ layout.lists
The first four are documented elsewhere. The following are by default
|on|, but with |off| can disable some features: |bidi.math| (only
preamble) changes for math or \textsf{amsmath}, |linebreak.sea|,
-|linebreak.sea| and |justify.arabic| the corresponding algorithms,
+|linebreak.cjk| and |justify.arabic| the corresponding algorithms,
|layout.tabular| and |layout.lists| changes for tabular and lists.
Some of the are reverted only to some extent.
@@ -4657,18 +4696,11 @@ options (like paragraph direction with |bidi.text|).
\end{verbatim}
\textit{before} loading babel. This way, when the document begins
the sequence is (1) make \verb/|/ active (\textsf{ltxdoc}); (2) make
- it unactive (your settings); (3) make babel shorthands active
+ it inactive (your settings); (3) make babel shorthands active
(\textsf{babel)}; (4) reload \textsf{hhline} (\textsf{babel}, now
with the correct catcodes for \verb/|/ and
\verb|:|).\catcode`\|=\active
-\item Documents with several input encodings are not frequent, but
- sometimes are useful. You can set different encodings for different
- languages as the following example shows:
-\begin{verbatim}
-\addto\extrasfrench{\inputencoding{latin1}}
-\addto\extrasrussian{\inputencoding{koi8-r}}
-\end{verbatim}
\item For the hyphenation to work correctly, lccodes cannot change,
because \TeX{} only takes into account the values when the
paragraph is hyphenated, i.e., when it has been
@@ -4934,8 +4966,8 @@ recommended.
\label{contribute}
Currently, the easiest way to contribute a new language is by taking
-one the the 500 or so |ini| templates available on GitHub as a basis.
-Just make a pull request o dowonload it and then, after filling the
+one of the 500 or so |ini| templates available on GitHub as a basis.
+Just make a pull request or download it and then, after filling the
fields, sent it to me. Fell free to ask for help or to make feature
requests.
@@ -5180,7 +5212,7 @@ The \TeX book states: ``Plain \TeX\ includes a macro called
all characters that have a special category code.'' \cite[p.~380]{DEK}
It is used to set text `verbatim'. To make this work if more
characters get a special category code, you have to add this character
-to the macro |\dospecial|. \LaTeX\ adds another macro called
+to the macro |\dospecials|. \LaTeX\ adds another macro called
|\@sanitize| representing the same character set, but without the
curly braces. The macros |\bbl@add@special|\meta{char} and
|\bbl@remove@special|\meta{char} add and remove the character
@@ -5440,13 +5472,6 @@ to define |\abmoniname|, |\abmoniiname|, etc. (and similarly with
\end{verbatim}
|#1| is replaced by the roman numeral.
-\Describe\SetCase{\oarg{map-list}\marg{toupper-code}\marg{tolower-code}\qquad\textit{Deprecated}}
-
-\begin{warning}
-This feature doesn’t work any longer after some changes in the \LaTeX{}
-kernel. It’s now deprecated and an alternative is on the way.
-\end{warning}
-
\Describe{\SetHyphenMap}{\marg{to-lower-macros}}
\New{3.9g} Case mapping for hyphenation is handled with |\SetHyphenMap|
and controlled with the package option |hyphenmap|.
@@ -5600,7 +5625,7 @@ wouldn’t exist.
%
% The \babel{} installer extends \textsf{docstrip} with a few
% ``pseudo-guards'' to set ``variables'' used at installation time.
-% They are used with |<||@name@>| at the appropiated places in the
+% They are used with |<||@name@>| at the appropriate places in the
% source code and defined with either
% $\langle\langle$\textit{name}=\textit{value}$\rangle\rangle$, or with
% a series of lines between
@@ -5630,8 +5655,8 @@ wouldn’t exist.
% \section{Tools}
%
% \begin{macrocode}
-%<<version=3.97>>
-%<<date=2023/11/11>>
+%<<version=3.98>>
+%<<date=2023/12/06>>
% \end{macrocode}
%
% \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -5858,14 +5883,14 @@ wouldn’t exist.
\edef#1{\the\toks@}}
% \end{macrocode}
%
-% An extensison to the previous macro. It takes into account the
+% An extension to the previous macro. It takes into account the
% parameters, and it is string based (ie, if you replace |elax| by
% |ho|, then |\relax| becomes |\rho|). No checking is done at all,
% because it is not a general purpose macro, and it is used by \babel{}
% only when it works (an example where it does \textit{not} work is in
% |\bbl@TG@@date|, and also fails if there are macros with spaces,
% because they are retokenized). It may change! (or even merged with
-% |\bbl@replace|; I'm not sure ckecking the replacement is really
+% |\bbl@replace|; I'm not sure checking the replacement is really
% necessary or just paranoia).
%
% \begin{macrocode}
@@ -6100,7 +6125,7 @@ wouldn’t exist.
% \end{macrocode}
%
% This file also takes care of a number of compatibility issues with
-% other packages an defines a few aditional package options. Apart from
+% other packages an defines a few additional package options. Apart from
% all the language options below we also have a few options that
% influence the behavior of language definition files.
%
@@ -6124,7 +6149,7 @@ wouldn’t exist.
%
% If the format created a list of loaded languages (in
% |\bbl@languages|), get the name of the 0-th to show the actual
-% language used. Also avaliable with |base|, because it just shows
+% language used. Also available with |base|, because it just shows
% info.
%
% \begin{macrocode}
@@ -6156,7 +6181,7 @@ wouldn’t exist.
% it exits.
%
% Now the \texttt{base} option. With it we can define (and load, with
-% \luatex) hyphenation patterns, even if we are not interesed in the
+% \luatex) hyphenation patterns, even if we are not interested in the
% rest of babel.
%
% \begin{macrocode}
@@ -6376,7 +6401,7 @@ wouldn’t exist.
% \end{macrocode}
%
% The following is ignored with |shorthands=off|, since it is
-% intended to take some aditional actions for certain chars.
+% intended to take some additional actions for certain chars.
%
% \begin{macrocode}
\bbl@ifshorthand{'}%
@@ -6815,7 +6840,7 @@ wouldn’t exist.
%
% The macro |\bbl@set@language| takes care of switching the language
% environment \emph{and} of writing entries on the auxiliary files.
-% For historial reasons, language names can be either |language| of
+% For historical reasons, language names can be either |language| of
% |\language|. To catch either form a trick is used, but
% unfortunately as a side effect the catcodes of letters in
% |\languagename| are messed up. This is a bug, but preserved for
@@ -8011,7 +8036,7 @@ wouldn’t exist.
%
% The very first thing to do is saving the original catcode and the
% original definition, even if not active, which is possible
-% (undefined characters require a special treatement to avoid
+% (undefined characters require a special treatment to avoid
% making them |\relax| and preserving some degree of protection).
%
% \begin{macrocode}
@@ -8450,14 +8475,14 @@ wouldn’t exist.
%
% \begin{macro}{\defineshorthand}
%
-% Currently we only support two groups of user level shorthands,
-% named internally |user| and |user@<lang>| (language-dependent
-% user shorthands). By default, only the first one is taken into
-% account, but if the former is also used (in the optional argument
-% of |\defineshorthand|) a new level is inserted for it
-% (|user@generic|, done by |\bbl@set@user@generic|); we make also
-% sure |{}| and |\protect| are taken into account in this new top
-% level.
+% Currently we only support two groups of user level shorthands,
+% named internally |user| and |user@<lang>| (language-dependent
+% user shorthands). By default, only the first one is taken into
+% account, but if the former is also used (in the optional argument
+% of |\defineshorthand|) a new level is inserted for it
+% (|user@generic|, done by |\bbl@set@user@generic|); we make also
+% sure |{}| and |\protect| are taken into account in this new top
+% level.
%
% \begin{macrocode}
\def\user@language@group{user@\language@group}
@@ -8485,12 +8510,12 @@ wouldn’t exist.
%
% \begin{macro}{\languageshorthands}
%
-% A user level command to change the language from which shorthands
-% are 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].
-%
+% A user level command to change the language from which shorthands
+% are 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@group{#1}}
% \end{macrocode}
@@ -8498,11 +8523,12 @@ wouldn’t exist.
% \end{macro}
%
% \begin{macro}{\aliasshorthand}
-% \textit{Deprecated}. First the new shorthand needs to be
-% initialized. Then, we define the new shorthand in terms of the
-% original one, but note with |\aliasshorthands{"}{/}| is
-% |\active@prefix /\active@char/|, so we still need to let the
-% lattest to |\active@char"|.
+%
+% \textit{Deprecated}. First the new shorthand needs to be
+% initialized. Then, we define the new shorthand in terms of the
+% original one, but note with |\aliasshorthands{"}{/}| is
+% |\active@prefix /\active@char/|, so we still need to let the
+% latter to |\active@char"|.
%
% \begin{macrocode}
\def\aliasshorthand#1#2{%
@@ -8541,9 +8567,10 @@ wouldn’t exist.
%
% \begin{macro}{\shorthandon}
% \begin{macro}{\shorthandoff}
-% The first level definition of these macros just passes the
-% argument on to |\bbl@switch@sh|, adding |\@nil| at the end to
-% denote the end of the list of characters.
+%
+% The first level definition of these macros just passes the
+% argument on to |\bbl@switch@sh|, adding |\@nil| at the end to
+% denote the end of the list of characters.
%
% \begin{macrocode}
\newcommand*\shorthandon[1]{\bbl@switch@sh\@ne#1\@nnil}
@@ -8554,19 +8581,19 @@ wouldn’t exist.
%
% \begin{macro}{\bbl@switch@sh}
%
-% The macro |\bbl@switch@sh| takes the list of characters apart one
-% by one and subsequently switches the category code of the
-% shorthand character according to the first argument of
-% |\bbl@switch@sh|.
+% The macro |\bbl@switch@sh| takes the list of characters apart one
+% by one and subsequently switches the category code of the
+% shorthand character according to the first argument of
+% |\bbl@switch@sh|.
%
-% But before any of this switching takes place we make sure that the
-% character we are dealing with is known as a shorthand character.
-% If it is, a macro such as |\active@char"| should exist.
+% But before any of this switching takes place we make sure that the
+% character we are dealing with is known as a shorthand character.
+% If it is, a macro such as |\active@char"| should exist.
%
-% Switching off and on is easy -- we just set the category code to
-% `other' (12) and |\active|. With the starred version, the original
-% catcode and the original definition, saved in
-% |@initiate@active@char|, are restored.
+% Switching off and on is easy -- we just set the category code to
+% `other' (12) and |\active|. With the starred version, the original
+% catcode and the original definition, saved in
+% |@initiate@active@char|, are restored.
%
% \begin{macrocode}
\def\bbl@switch@sh#1#2{%
@@ -8605,8 +8632,8 @@ wouldn’t exist.
% \end{macro}
% \end{macro}
%
-% Note the value is that at the expansion time; eg, in the preample
-% shorhands are usually deactivated.
+% Note the value is that at the expansion time; eg, in the preamble
+% shorthands are usually deactivated.
%
% \begin{macrocode}
\def\babelshorthand{\active@prefix\babelshorthand\bbl@putsh}
@@ -8678,15 +8705,15 @@ wouldn’t exist.
% \end{macro}
% \end{macro}
%
-% Usually the |~| is active and expands to \verb*=\penalty\@M\ =.
-% When it is written to the \file{.aux} file it is written
-% expanded. To prevent that and to be able to use the character |~|
-% as a start character for a shorthand, it is redefined here as a
-% one character shorthand on system level. The system declaration
-% is in most cases redundant (when |~| is still a non-break space),
-% and in some cases is inconvenient (if |~| has been redefined);
-% however, for backward compatibility it is maintained (some
-% existing documents may rely on the \babel{} value).
+% Usually the |~| is active and expands to \verb*=\penalty\@M\ =.
+% When it is written to the \file{.aux} file it is written
+% expanded. To prevent that and to be able to use the character |~|
+% as a start character for a shorthand, it is redefined here as a
+% one character shorthand on system level. The system declaration
+% is in most cases redundant (when |~| is still a non-break space),
+% and in some cases is inconvenient (if |~| has been redefined);
+% however, for backward compatibility it is maintained (some
+% existing documents may rely on the \babel{} value).
%
% \begin{macrocode}
\initiate@active@char{~}
@@ -8723,6 +8750,7 @@ wouldn’t exist.
% Language attributes provide a means to give the user control over
% which features of the language definition files he wants to
% enable.
+%
% \begin{macro}{\languageattribute}
%
% The macro |\languageattribute| checks whether its arguments are
@@ -8739,10 +8767,10 @@ wouldn’t exist.
\bbl@vforeach{#2}{%
% \end{macrocode}
%
-% We want to make sure that each attribute is selected only once;
-% therefore we store the already selected attributes in
-% |\bbl@known@attribs|. When that control sequence is not yet
-% defined this attribute is certainly not selected before.
+% To make sure each attribute is selected only once, we store the
+% already selected attributes in |\bbl@known@attribs|. When that
+% control sequence is not yet defined this attribute is certainly
+% not selected before.
%
% \begin{macrocode}
\ifx\bbl@known@attribs\@undefined
@@ -8757,9 +8785,9 @@ wouldn’t exist.
\else
% \end{macrocode}
%
-% When we end up here the attribute is not selected before. So, we
-% add it to the list of selected attributes and execute the
-% associated \TeX-code.
+% When we end up here the attribute is not selected before. So, we
+% add it to the list of selected attributes and execute the
+% associated \TeX-code.
%
% \begin{macrocode}
\bbl@exp{%
@@ -9166,7 +9194,7 @@ wouldn’t exist.
%
% \subsection{Multiencoding strings}
%
-% The aim following commands is to provide a commom interface for
+% The aim following commands is to provide a common interface for
% strings in several encodings. They also contains several hooks which
% can be used by \luatex{} and \xetex. The code is organized here with
% pseudo-guards, so we start with the basic commands.
@@ -9181,37 +9209,8 @@ wouldn’t exist.
\def\bbl@toglobal#1{\global\let#1#1}
% \end{macrocode}
%
-% The second one. We need to patch |\@uclclist|, but it is done once
-% and only if |\SetCase| is used or if strings are encoded. The code
-% is far from satisfactory for several reasons, including the fact
-% |\@uclclist| is not a list any more. Therefore a package option is
-% added to ignore it. Instead of gobbling the macro
-% getting the next two elements (usually |\reserved@a|), we pass it as
-% argument to |\bbl@uclc|. The parser is restarted inside
-% |\|\m{lang}|@bbl@uclc| because we do not know how many expansions
-% are necessary (depends on whether strings are encoded). The last
-% part is tricky -- when uppercasing, we have:
-%\begin{verbatim}
-% \let\bbl@tolower\@empty\bbl@toupper\@empty
-%\end{verbatim}
-% and starts over (and similarly when lowercasing).
-%
-% \begin{macrocode}
-\@ifpackagewith{babel}{nocase}%
- {\let\bbl@patchuclc\relax}%
- {\def\bbl@patchuclc{% TODO. Delete. Doesn’t work any more.
- \global\let\bbl@patchuclc\relax
- \g@addto@macro\@uclclist{\reserved@b{\reserved@b\bbl@uclc}}%
- \gdef\bbl@uclc##1{%
- \let\bbl@encoded\bbl@encoded@uclc
- \bbl@ifunset{\languagename @bbl@uclc}% and resumes it
- {##1}%
- {\let\bbl@tempa##1\relax % Used by LANG@bbl@uclc
- \csname\languagename @bbl@uclc\endcsname}%
- {\bbl@tolower\@empty}{\bbl@toupper\@empty}}%
- \gdef\bbl@tolower{\csname\languagename @bbl@lc\endcsname}%
- \gdef\bbl@toupper{\csname\languagename @bbl@uc\endcsname}}}
-% \end{macrocode}
+% The following option is currently no-op. It was meant for the
+% deprecated |\SetCase|.
%
% \begin{macrocode}
%<<*More package options>>
@@ -9280,7 +9279,7 @@ wouldn’t exist.
%
% Parse the encoding info to get the label, input, and font parts.
%
-% Select the behavior of |\SetString|. Thre are two main cases,
+% Select the behavior of |\SetString|. There are two main cases,
% depending of if there is an optional argument: without it and
% |strings=encoded|, strings are defined
% always; otherwise, they are set only if they are still undefined
@@ -9426,31 +9425,12 @@ wouldn’t exist.
\csname\bbl@LC\expandafter\endcsname\expandafter{\BabelString}}}
% \end{macrocode}
%
-% Now, some addtional stuff to be used when encoded strings are
-% used. Captions then include |\bbl@encoded| for string to be
-% expanded in case transformations. It is |\relax| by default, but
-% in |\MakeUppercase| and |\MakeLowercase| its value is a modified
-% expandable |\@changed@cmd|.
+% A little auxiliary command sets the string. TODO: Formerly used with
+% casing. Very likely no longer necessary, although it’s used in
+% |\setlocalecaption|.
%
% \begin{macrocode}
-\ifx\bbl@opt@strings\relax
- \def\bbl@scset#1#2{\def#1{\bbl@encoded#2}}
- \bbl@patchuclc
- \let\bbl@encoded\relax
- \def\bbl@encoded@uclc#1{%
- \@inmathwarn#1%
- \expandafter\ifx\csname\cf@encoding\string#1\endcsname\relax
- \expandafter\ifx\csname ?\string#1\endcsname\relax
- \TextSymbolUnavailable#1%
- \else
- \csname ?\string#1\endcsname
- \fi
- \else
- \csname\cf@encoding\string#1\endcsname
- \fi}
-\else
- \def\bbl@scset#1#2{\def#1{#2}}
-\fi
+\def\bbl@scset#1#2{\def#1{#2}}
% \end{macrocode}
%
% Define |\SetStringLoop|, which is actually set inside
@@ -9484,18 +9464,24 @@ wouldn’t exist.
%
% \paragraph{Case mapping}
%
-% The command |\SetCase| provides a way to change the behavior of
-% |\MakeUppercase| and |\MakeLowercase|. |\bbl@tempa| is set by the
-% patched |\@uclclist| to the parsing command. \textit{Deprecated.}
+% The command |\SetCase| is deprecated. Currently it consists in a
+% definition with a hack just for backward compatibility in the macro
+% mapping.
%
% \begin{macrocode}
%<<*Macros local to BabelCommands>>
\newcommand\SetCase[3][]{%
- \bbl@patchuclc
- \bbl@forlang\bbl@tempa{%
- \bbl@carg\bbl@encstring{\bbl@tempa @bbl@uclc}{\bbl@tempa##1}%
- \bbl@carg\bbl@encstring{\bbl@tempa @bbl@uc}{##2}%
- \bbl@carg\bbl@encstring{\bbl@tempa @bbl@lc}{##3}}}%
+ \def\bbl@tempa####1####2{%
+ \ifx####1\@empty\else
+ \bbl@carg\bbl@add{extras\CurrentOption}{%
+ \bbl@carg\babel@save{c__text_uppercase_\string####1_tl}%
+ \bbl@carg\def{c__text_uppercase_\string####1_tl}{####2}%
+ \bbl@carg\babel@save{c__text_lowercase_\string####2_tl}%
+ \bbl@carg\def{c__text_lowercase_\string####2_tl}{####1}}%
+ \expandafter\bbl@tempa
+ \fi}%
+ \bbl@tempa##1\@empty\@empty
+ \bbl@carg\bbl@toglobal{extras\CurrentOption}}
%<</Macros local to BabelCommands>>
% \end{macrocode}
%
@@ -10175,7 +10161,7 @@ wouldn’t exist.
%
% |\babelprovide| is a general purpose tool for creating and modifying
% languages. It creates the language infrastructure, and loads, if
-% requested, an |ini| file. It may be used in conjunction to previouly
+% requested, an |ini| file. It may be used in conjunction to previously
% loaded |ldf| files.
%
% \begin{macrocode}
@@ -10196,6 +10182,7 @@ wouldn’t exist.
Alph,labels,labels*,calendar,date,casing}%
{\bbl@csarg\let{KVP@##1}\@nnil}%
\global\let\bbl@release@transforms\@empty
+ \global\let\bbl@release@casing\@empty
\let\bbl@calendars\@empty
\global\let\bbl@inidata\@empty
\global\let\bbl@extend@ini\@gobble
@@ -10508,9 +10495,10 @@ wouldn’t exist.
\let\\\@Alph\<bbl@cntr@\bbl@KVP@Alph @\languagename>}}%
\fi
% == Casing ==
+ \bbl@release@casing
\ifx\bbl@KVP@casing\@nnil\else
\bbl@csarg\xdef{casing@\languagename}%
- {\@nameuse{bbl@casing@\languagename}-x-\bbl@KVP@casing}%
+ {\@nameuse{bbl@casing@\languagename}\bbl@maybextx\bbl@KVP@casing}%
\fi
% == Calendars ==
\ifx\bbl@KVP@calendar\@nnil
@@ -10958,6 +10946,7 @@ wouldn’t exist.
Reported }}}
%
\let\bbl@release@transforms\@empty
+\let\bbl@release@casing\@empty
\def\bbl@ini@exports#1{%
% Identification always exported
\bbl@iniwarning{}%
@@ -10973,7 +10962,7 @@ wouldn’t exist.
\bbl@exp{\\\bbl@exportkey{lname}{identification.name.opentype}%
{\csname bbl@elname@\languagename\endcsname}}%
\bbl@exportkey{tbcp}{identification.tag.bcp47}{}%
- % Somewhat hackish. TODO
+ % Somewhat hackish. TODO:
\bbl@exportkey{casing}{identification.tag.bcp47}{}%
\bbl@exportkey{lbcp}{identification.language.tag.bcp47}{}%
\bbl@exportkey{lotf}{identification.tag.opentype}{dflt}%
@@ -11036,10 +11025,33 @@ wouldn’t exist.
\let\bbl@inikv@identification\bbl@inikv
\let\bbl@inikv@date\bbl@inikv
\let\bbl@inikv@typography\bbl@inikv
-\let\bbl@inikv@characters\bbl@inikv
\let\bbl@inikv@numbers\bbl@inikv
% \end{macrocode}
%
+% The |characters| section also stores the values, but |casing| is
+% treated in a different fashion. Much like transforms, a set of
+% commands calling the parser are stored in |\bbl@release@casing|,
+% which is executed in |\babelprovide|.
+%
+% \begin{macrocode}
+\def\bbl@maybextx{-\bbl@csarg\ifx{extx@\languagename}\@empty x-\fi}
+\def\bbl@inikv@characters#1#2{%
+ \bbl@ifsamestring{#1}{casing}% eg, casing = uV
+ {\bbl@exp{%
+ \\\g@addto@macro\\\bbl@release@casing{%
+ \\\bbl@casemapping{}{\languagename}{\unexpanded{#2}}}}}%
+ {\in@{$casing.}{$#1}% eg, casing.Uv = uV
+ \ifin@
+ \lowercase{\def\bbl@tempb{#1}}%
+ \bbl@replace\bbl@tempb{casing.}{}%
+ \bbl@exp{\\\g@addto@macro\\\bbl@release@casing{%
+ \\\bbl@casemapping
+ {\\\bbl@maybextx\bbl@tempb}{\languagename}{\unexpanded{#2}}}}%
+ \else
+ \bbl@inikv{#1}{#2}%
+ \fi}}
+% \end{macrocode}
+%
% Additive numerals require an additional definition. When |.1| is
% found, two macros are defined -- the basic one, without |.1| called
% by |\localenumeral|, and another one preserving the trailing |.1| for
@@ -11374,7 +11386,6 @@ wouldn’t exist.
% \textbf{Transforms.}
%
% \begin{macrocode}
-\let\bbl@release@transforms\@empty
\bbl@csarg\let{inikv@transforms.prehyphenation}\bbl@inikv
\bbl@csarg\let{inikv@transforms.posthyphenation}\bbl@inikv
\def\bbl@transforms@aux#1#2#3#4,#5\relax{%
@@ -11456,7 +11467,7 @@ wouldn’t exist.
\fi
\AtBeginDocument{%
\bbl@patchfont{\bbl@xenohyph}%
- \expandafter\select@language\expandafter{\languagename}}%
+ {\expandafter\select@language\expandafter{\languagename}}}%
\fi}}%
\fi
\bbl@csarg\bbl@toglobal{lsys@#1}}
@@ -11571,7 +11582,7 @@ wouldn’t exist.
\def\bbl@alphnumeral#1#2{%
\expandafter\bbl@alphnumeral@i\number#2 76543210\@@{#1}}
\def\bbl@alphnumeral@i#1#2#3#4#5#6#7#8\@@#9{%
- \ifcase\@car#8\@nil\or % Currenty <10000, but prepared for bigger
+ \ifcase\@car#8\@nil\or % Currently <10000, but prepared for bigger
\bbl@alphnumeral@ii{#9}000000#1\or
\bbl@alphnumeral@ii{#9}00000#1#2\or
\bbl@alphnumeral@ii{#9}0000#1#2#3\or
@@ -11637,6 +11648,13 @@ wouldn’t exist.
% singletons may change.
%
% \begin{macrocode}
+\ifcase\bbl@engine % Converts utf8 to its code (expandable)
+ \def\bbl@utftocode#1{\the\numexpr\decode@UTFviii#1\relax}
+\else
+ \def\bbl@utftocode#1{\expandafter`\string#1}
+\fi
+% Still somewhat hackish. WIP. Note |\str_if_eq:nnTF| is fully
+% expandable (|\bbl@ifsamestring| isn’t).
\providecommand\BCPdata{}
\ifx\renewcommand\@undefined\else % For plain. TODO. It’s a quick fix
\renewcommand\BCPdata[1]{\bbl@bcpdata@i#1\@empty}
@@ -11652,18 +11670,52 @@ wouldn’t exist.
{\bbl@ifunset{bbl@\csname bbl@info@#1.tag.bcp47\endcsname @#2}{}%
{\bbl@cs{\csname bbl@info@#1.tag.bcp47\endcsname @#2}}}}
\fi
-% Still somewhat hackish. WIP.
\@namedef{bbl@info@casing.tag.bcp47}{casing}
\newcommand\BabelUppercaseMapping[3]{%
- \let\bbl@tempx\languagename
- \edef\languagename{#1}%
- \DeclareUppercaseMapping[\BCPdata{casing}]{#2}{#3}%
- \let\languagename\bbl@tempx}
+ \DeclareUppercaseMapping[\@nameuse{bbl@casing@#1}]{#2}{#3}}
+\newcommand\BabelTitlecaseMapping[3]{%
+ \DeclareTitlecaseMapping[\@nameuse{bbl@casing@#1}]{#2}{#3}}
\newcommand\BabelLowercaseMapping[3]{%
- \let\bbl@tempx\languagename
- \edef\languagename{#1}%
- \DeclareLowercaseMapping[\BCPdata{casing}]{#2}{#3}%
- \let\languagename\bbl@tempx}
+ \DeclareLowercaseMapping[\@nameuse{bbl@casing@#1}]{#2}{#3}}
+% \end{macrocode}
+%
+% The parser for |casing| and |casing.|\meta{variant}.
+%
+% \begin{macrocode}
+\def\bbl@casemapping#1#2#3{% 1:variant
+ \def\bbl@tempa##1 ##2{% Loop
+ \bbl@casemapping@i{##1}%
+ \ifx\@empty##2\else\bbl@afterfi\bbl@tempa##2\fi}%
+ \edef\bbl@templ{\@nameuse{bbl@casing@#2}#1}% Language code
+ \def\bbl@tempe{0}% Mode (upper/lower...)
+ \def\bbl@tempc{#3 }% Casing list
+ \expandafter\bbl@tempa\bbl@tempc\@empty}
+\def\bbl@casemapping@i#1{%
+ \def\bbl@tempb{#1}%
+ \ifcase\bbl@engine % Handle utf8 in pdftex, by surrounding chars with {}
+ \@nameuse{regex_replace_all:nnN}%
+ {[\x{c0}-\x{ff}][\x{80}-\x{bf}]*}{{\0}}\bbl@tempb
+ \else
+ \@nameuse{regex_replace_all:nnN}{.}{{\0}}\bbl@tempb % TODO. needed?
+ \fi
+ \expandafter\bbl@casemapping@ii\bbl@tempb\@@}
+\def\bbl@casemapping@ii#1#2#3\@@{%
+ \in@{#1#3}{<>}% ie, if <u>, <l>, <t>
+ \ifin@
+ \edef\bbl@tempe{%
+ \if#2u1 \else\if#2l2 \else\if#2t3 \fi\fi\fi}%
+ \else
+ \ifcase\bbl@tempe\relax
+ \DeclareUppercaseMapping[\bbl@templ]{\bbl@utftocode{#1}}{#2}%
+ \DeclareLowercaseMapping[\bbl@templ]{\bbl@utftocode{#2}}{#1}%
+ \or
+ \DeclareUppercaseMapping[\bbl@templ]{\bbl@utftocode{#1}}{#2}%
+ \or
+ \DeclareLowercaseMapping[\bbl@templ]{\bbl@utftocode{#1}}{#2}%
+ \or
+ \DeclareTitlecaseMapping[\bbl@templ]{\bbl@utftocode{#1}}{#2}%
+ \fi
+ \fi}
% \end{macrocode}
%
% With version 3.75 |\BabelEnsureInfo| is executed always, but there is
@@ -11715,11 +11767,17 @@ wouldn’t exist.
\fi}
\let\bbl@ini@loaded\@empty
\newcommand\LocaleForEach{\bbl@foreach\bbl@ini@loaded}
+\def\ShowLocaleProperties#1{%
+ \typeout{}%
+ \typeout{*** Properties for language '#1' ***}
+ \def\bbl@elt##1##2##3{\typeout{##1/##2 = ##3}}%
+ \@nameuse{bbl@inidata@#1}%
+ \typeout{*******}}
% \end{macrocode}
%
% \section{Adjusting the Babel bahavior}
%
-% A generic high level inteface is provided to adjust some global
+% A generic high level interface is provided to adjust some global
% and general settings.
%
% \begin{macrocode}
@@ -12774,7 +12832,7 @@ wouldn’t exist.
% \textit{except} if a |main| language has been set. In such a
% case, it is not loaded until all options has been processed.
% The following macro inputs the ldf file and does some additional
-% checks (|\input| works, too, but possible errors are not catched).
+% checks (|\input| works, too, but possible errors are not caught).
%
% \begin{macrocode}
\bbl@trace{Language options}
@@ -12899,7 +12957,7 @@ wouldn’t exist.
%
% Now define the corresponding loaders. With package options, assume
% the language exists. With class options, check if the option is a
-% language by checking if the correspondin file exists.
+% language by checking if the corresponding file exists.
%
% \begin{macrocode}
\bbl@foreach\bbl@language@opts{%
@@ -13608,10 +13666,10 @@ wouldn’t exist.
% For historical reasons, \LaTeX{} can select two different series
% (|bx| and |b|), for what is conceptually a single one. This can
% lead to problems when a single family requires several fonts,
-% depending on the language, mainly because ‘subtitutions’ with some
+% depending on the language, mainly because ‘substitutions’ with some
% combinations are not done consistently -- sometimes |bx/sc| is the
% correct font, but sometimes points to |b/n|, even if |b/sc| exists.
-% So, some subtitutions are redefined (in a somewhat hackish way, by
+% So, some substitutions are redefined (in a somewhat hackish way, by
% inspecting if the variant declaration contains |>ssub*|).
%
% \begin{macrocode}
@@ -14630,7 +14688,7 @@ end
% \subsection{CJK line breaking}
%
% Minimal line breaking for CJK scripts, mainly intended for simple
-% documents and short texts as a secundary language. Only line
+% documents and short texts as a secondary language. Only line
% breaking, with a little stretching for justification, without any
% attempt to adjust the spacing. It is based on (but does not strictly
% follow) the Unicode algorithm.
@@ -14789,7 +14847,7 @@ end
\catcode`_=11 \catcode`:=11
\gdef\bblar@nofswarn{\gdef\msg_warning:nnx##1##2##3{}}
\endgroup
-\gdef\bbl@arabicjust{% TODO. Allow for serveral locales.
+\gdef\bbl@arabicjust{% TODO. Allow for several locales.
\let\bbl@arabicjust\relax
\newattribute\bblar@kashida
\directlua{ Babel.attr_kashida = luatexbase.registernumber'bblar@kashida' }%
@@ -24652,7 +24710,7 @@ Babel.cjk_breaks = {
\@onlypreamble\@onlypreamble
% \end{macrocode}
%
-% Mimick \LaTeX's |\AtBeginDocument|; for this to work the user
+% Mimic \LaTeX's |\AtBeginDocument|; for this to work the user
% needs to add |\begindocument| to his file.
%
% \begin{macrocode}
@@ -24672,7 +24730,7 @@ Babel.cjk_breaks = {
\def\AtBeginDocument{\g@addto@macro\@begindocumenthook}
% \end{macrocode}
%
-% We also have to mimick \LaTeX's |\AtEndOfPackage|. Our
+% We also have to mimic \LaTeX's |\AtEndOfPackage|. Our
% replacement macro is much simpler; it stores its argument in
% |\@endofldf|.
%
@@ -24699,7 +24757,7 @@ Babel.cjk_breaks = {
\catcode`\&=4
% \end{macrocode}
%
-% Mimick \LaTeX's commands to define control sequences.
+% Mimic \LaTeX's commands to define control sequences.
%
% \begin{macrocode}
\def\newcommand{\@star@or@long\new@command}
@@ -25016,7 +25074,7 @@ Babel.cjk_breaks = {
%
% For a couple of languages we need the \LaTeX-control sequence
% |\scriptsize| to be available. Because plain \TeX\ doesn't have such
-% a sofisticated font mechanism as \LaTeX\ has, we just |\let| it to
+% a sophisticated font mechanism as \LaTeX\ has, we just |\let| it to
% |\sevenrm|.
%
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex/babel/babel.ins b/Master/texmf-dist/source/latex/babel/babel.ins
index b47775f1173..88446a4ef6d 100644
--- a/Master/texmf-dist/source/latex/babel/babel.ins
+++ b/Master/texmf-dist/source/latex/babel/babel.ins
@@ -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{2023/11/11}
+\def\filedate{2023/12/06}
\def\batchfile{babel.ins}
\input docstrip.tex
diff --git a/Master/texmf-dist/source/latex/babel/bbcompat.dtx b/Master/texmf-dist/source/latex/babel/bbcompat.dtx
index 61e273e2f5a..48667a55a24 100644
--- a/Master/texmf-dist/source/latex/babel/bbcompat.dtx
+++ b/Master/texmf-dist/source/latex/babel/bbcompat.dtx
@@ -30,7 +30,7 @@
%
% \iffalse
%<*dtx>
-\ProvidesFile{bbcompat.dtx}[2023/11/11 v3.97]
+\ProvidesFile{bbcompat.dtx}[2023/12/06 v3.98]
%</dtx>
%
%% File 'bbcompat.dtx'
diff --git a/Master/texmf-dist/source/latex/babel/bbidxglo.dtx b/Master/texmf-dist/source/latex/babel/bbidxglo.dtx
index 58a43d9adbf..37dbd9505a8 100644
--- a/Master/texmf-dist/source/latex/babel/bbidxglo.dtx
+++ b/Master/texmf-dist/source/latex/babel/bbidxglo.dtx
@@ -46,7 +46,7 @@
% \end{macrocode}
%
% \fi
-% \title{Generating the index and chage log for the Babel system}
+% \title{Generating the index and change log for the Babel system}
% \author{Johannes Braams}
% \date{\filedate}
% \maketitle
@@ -73,7 +73,7 @@ level '>'
%
% Because the \babel\ system consists of so many files the default
% codeline numbering scheme of the \Lopt{doc} package has been
-% adapted. The line numbers consist of two parts seperated with a
+% adapted. The line numbers consist of two parts separated with a
% dot. This has to made known to the \mkidx\ program when it
% produces the index.
%
diff --git a/Master/texmf-dist/source/latex/babel/locale.zip b/Master/texmf-dist/source/latex/babel/locale.zip
index 0c241c10289..bc9b7df61e3 100644
--- a/Master/texmf-dist/source/latex/babel/locale.zip
+++ b/Master/texmf-dist/source/latex/babel/locale.zip
Binary files differ
diff --git a/Master/texmf-dist/tex/generic/babel/babel.def b/Master/texmf-dist/tex/generic/babel/babel.def
index c8d8e5b5c3d..b4838c7a43c 100644
--- a/Master/texmf-dist/tex/generic/babel/babel.def
+++ b/Master/texmf-dist/tex/generic/babel/babel.def
@@ -40,7 +40,7 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{babel.def}[2023/11/11 v3.97 Babel common definitions]
+\ProvidesFile{babel.def}[2023/12/06 v3.98 Babel common definitions]
\ifx\AtBeginDocument\@undefined % TODO. change test.
\def\@empty{}
\def\loadlocalcfg#1{%
@@ -595,8 +595,8 @@
\toks@\expandafter{\bbl@tempc#3}%
\expandafter\edef\csname extras\languagename\endcsname{\the\toks@}%
\fi}
-\def\bbl@version{3.97}
-\def\bbl@date{2023/11/11}
+\def\bbl@version{3.98}
+\def\bbl@date{2023/12/06}
\ifx\language\@undefined
\csname newcount\endcsname\language
\fi
@@ -1858,20 +1858,6 @@
\def\bbl@disc#1#2{\nobreak\discretionary{#2-}{}{#1}\bbl@allowhyphens}
\bbl@trace{Multiencoding strings}
\def\bbl@toglobal#1{\global\let#1#1}
-\@ifpackagewith{babel}{nocase}%
- {\let\bbl@patchuclc\relax}%
- {\def\bbl@patchuclc{% TODO. Delete. Doesn’t work any more.
- \global\let\bbl@patchuclc\relax
- \g@addto@macro\@uclclist{\reserved@b{\reserved@b\bbl@uclc}}%
- \gdef\bbl@uclc##1{%
- \let\bbl@encoded\bbl@encoded@uclc
- \bbl@ifunset{\languagename @bbl@uclc}% and resumes it
- {##1}%
- {\let\bbl@tempa##1\relax % Used by LANG@bbl@uclc
- \csname\languagename @bbl@uclc\endcsname}%
- {\bbl@tolower\@empty}{\bbl@toupper\@empty}}%
- \gdef\bbl@tolower{\csname\languagename @bbl@lc\endcsname}%
- \gdef\bbl@toupper{\csname\languagename @bbl@uc\endcsname}}}
\@onlypreamble\StartBabelCommands
\def\StartBabelCommands{%
\begingroup
@@ -1893,11 +1879,17 @@
\\\SetString\bbl@templ{\romannumeral\count@}{\the\toks@}%
\count@=\the\count@\relax}}}%
\newcommand\SetCase[3][]{%
- \bbl@patchuclc
- \bbl@forlang\bbl@tempa{%
- \bbl@carg\bbl@encstring{\bbl@tempa @bbl@uclc}{\bbl@tempa##1}%
- \bbl@carg\bbl@encstring{\bbl@tempa @bbl@uc}{##2}%
- \bbl@carg\bbl@encstring{\bbl@tempa @bbl@lc}{##3}}}%
+ \def\bbl@tempa####1####2{%
+ \ifx####1\@empty\else
+ \bbl@carg\bbl@add{extras\CurrentOption}{%
+ \bbl@carg\babel@save{c__text_uppercase_\string####1_tl}%
+ \bbl@carg\def{c__text_uppercase_\string####1_tl}{####2}%
+ \bbl@carg\babel@save{c__text_lowercase_\string####2_tl}%
+ \bbl@carg\def{c__text_lowercase_\string####2_tl}{####1}}%
+ \expandafter\bbl@tempa
+ \fi}%
+ \bbl@tempa##1\@empty\@empty
+ \bbl@carg\bbl@toglobal{extras\CurrentOption}}
\newcommand\SetHyphenMap[1]{%
\bbl@forlang\bbl@tempa{%
\expandafter\bbl@stringdef
@@ -2026,24 +2018,7 @@
\bbl@usehooks{stringprocess}{}%
\expandafter\bbl@stringdef
\csname\bbl@LC\expandafter\endcsname\expandafter{\BabelString}}}
-\ifx\bbl@opt@strings\relax
- \def\bbl@scset#1#2{\def#1{\bbl@encoded#2}}
- \bbl@patchuclc
- \let\bbl@encoded\relax
- \def\bbl@encoded@uclc#1{%
- \@inmathwarn#1%
- \expandafter\ifx\csname\cf@encoding\string#1\endcsname\relax
- \expandafter\ifx\csname ?\string#1\endcsname\relax
- \TextSymbolUnavailable#1%
- \else
- \csname ?\string#1\endcsname
- \fi
- \else
- \csname\cf@encoding\string#1\endcsname
- \fi}
-\else
- \def\bbl@scset#1#2{\def#1{#2}}
-\fi
+\def\bbl@scset#1#2{\def#1{#2}}
\def\bbl@aftercmds#1{%
\toks@\expandafter{\bbl@scafter#1}%
\xdef\bbl@scafter{\the\toks@}}
diff --git a/Master/texmf-dist/tex/generic/babel/babel.sty b/Master/texmf-dist/tex/generic/babel/babel.sty
index 9217a51f66e..6b116ce8d5c 100644
--- a/Master/texmf-dist/tex/generic/babel/babel.sty
+++ b/Master/texmf-dist/tex/generic/babel/babel.sty
@@ -34,7 +34,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{babel}[2023/11/11 v3.97 The Babel package]
+\ProvidesPackage{babel}[2023/12/06 v3.98 The Babel package]
\@ifpackagewith{babel}{debug}
{\providecommand\bbl@trace[1]{\message{^^J[ #1 ]}}%
\let\bbl@debug\@firstofone
@@ -470,8 +470,8 @@
\expandafter\@secondoftwo
\fi}
\fi
-\def\bbl@version{3.97}
-\def\bbl@date{2023/11/11}
+\def\bbl@version{3.98}
+\def\bbl@date{2023/12/06}
\ifx\language\@undefined
\csname newcount\endcsname\language
\fi
@@ -1777,20 +1777,6 @@
\def\bbl@disc#1#2{\nobreak\discretionary{#2-}{}{#1}\bbl@allowhyphens}
\bbl@trace{Multiencoding strings}
\def\bbl@toglobal#1{\global\let#1#1}
-\@ifpackagewith{babel}{nocase}%
- {\let\bbl@patchuclc\relax}%
- {\def\bbl@patchuclc{% TODO. Delete. Doesn’t work any more.
- \global\let\bbl@patchuclc\relax
- \g@addto@macro\@uclclist{\reserved@b{\reserved@b\bbl@uclc}}%
- \gdef\bbl@uclc##1{%
- \let\bbl@encoded\bbl@encoded@uclc
- \bbl@ifunset{\languagename @bbl@uclc}% and resumes it
- {##1}%
- {\let\bbl@tempa##1\relax % Used by LANG@bbl@uclc
- \csname\languagename @bbl@uclc\endcsname}%
- {\bbl@tolower\@empty}{\bbl@toupper\@empty}}%
- \gdef\bbl@tolower{\csname\languagename @bbl@lc\endcsname}%
- \gdef\bbl@toupper{\csname\languagename @bbl@uc\endcsname}}}
\@onlypreamble\StartBabelCommands
\def\StartBabelCommands{%
\begingroup
@@ -1812,11 +1798,17 @@
\\\SetString\bbl@templ{\romannumeral\count@}{\the\toks@}%
\count@=\the\count@\relax}}}%
\newcommand\SetCase[3][]{%
- \bbl@patchuclc
- \bbl@forlang\bbl@tempa{%
- \bbl@carg\bbl@encstring{\bbl@tempa @bbl@uclc}{\bbl@tempa##1}%
- \bbl@carg\bbl@encstring{\bbl@tempa @bbl@uc}{##2}%
- \bbl@carg\bbl@encstring{\bbl@tempa @bbl@lc}{##3}}}%
+ \def\bbl@tempa####1####2{%
+ \ifx####1\@empty\else
+ \bbl@carg\bbl@add{extras\CurrentOption}{%
+ \bbl@carg\babel@save{c__text_uppercase_\string####1_tl}%
+ \bbl@carg\def{c__text_uppercase_\string####1_tl}{####2}%
+ \bbl@carg\babel@save{c__text_lowercase_\string####2_tl}%
+ \bbl@carg\def{c__text_lowercase_\string####2_tl}{####1}}%
+ \expandafter\bbl@tempa
+ \fi}%
+ \bbl@tempa##1\@empty\@empty
+ \bbl@carg\bbl@toglobal{extras\CurrentOption}}
\newcommand\SetHyphenMap[1]{%
\bbl@forlang\bbl@tempa{%
\expandafter\bbl@stringdef
@@ -1945,24 +1937,7 @@
\bbl@usehooks{stringprocess}{}%
\expandafter\bbl@stringdef
\csname\bbl@LC\expandafter\endcsname\expandafter{\BabelString}}}
-\ifx\bbl@opt@strings\relax
- \def\bbl@scset#1#2{\def#1{\bbl@encoded#2}}
- \bbl@patchuclc
- \let\bbl@encoded\relax
- \def\bbl@encoded@uclc#1{%
- \@inmathwarn#1%
- \expandafter\ifx\csname\cf@encoding\string#1\endcsname\relax
- \expandafter\ifx\csname ?\string#1\endcsname\relax
- \TextSymbolUnavailable#1%
- \else
- \csname ?\string#1\endcsname
- \fi
- \else
- \csname\cf@encoding\string#1\endcsname
- \fi}
-\else
- \def\bbl@scset#1#2{\def#1{#2}}
-\fi
+\def\bbl@scset#1#2{\def#1{#2}}
\def\bbl@aftercmds#1{%
\toks@\expandafter{\bbl@scafter#1}%
\xdef\bbl@scafter{\the\toks@}}
@@ -2298,6 +2273,7 @@
Alph,labels,labels*,calendar,date,casing}%
{\bbl@csarg\let{KVP@##1}\@nnil}%
\global\let\bbl@release@transforms\@empty
+ \global\let\bbl@release@casing\@empty
\let\bbl@calendars\@empty
\global\let\bbl@inidata\@empty
\global\let\bbl@extend@ini\@gobble
@@ -2602,9 +2578,10 @@
\let\\\@Alph\<bbl@cntr@\bbl@KVP@Alph @\languagename>}}%
\fi
% == Casing ==
+ \bbl@release@casing
\ifx\bbl@KVP@casing\@nnil\else
\bbl@csarg\xdef{casing@\languagename}%
- {\@nameuse{bbl@casing@\languagename}-x-\bbl@KVP@casing}%
+ {\@nameuse{bbl@casing@\languagename}\bbl@maybextx\bbl@KVP@casing}%
\fi
% == Calendars ==
\ifx\bbl@KVP@calendar\@nnil
@@ -2959,6 +2936,7 @@
\bbl@cs{@kv@identification.warning#1}\\%
Reported }}}
\let\bbl@release@transforms\@empty
+\let\bbl@release@casing\@empty
\def\bbl@ini@exports#1{%
% Identification always exported
\bbl@iniwarning{}%
@@ -2974,7 +2952,7 @@
\bbl@exp{\\\bbl@exportkey{lname}{identification.name.opentype}%
{\csname bbl@elname@\languagename\endcsname}}%
\bbl@exportkey{tbcp}{identification.tag.bcp47}{}%
- % Somewhat hackish. TODO
+ % Somewhat hackish. TODO:
\bbl@exportkey{casing}{identification.tag.bcp47}{}%
\bbl@exportkey{lbcp}{identification.language.tag.bcp47}{}%
\bbl@exportkey{lotf}{identification.tag.opentype}{dflt}%
@@ -3025,8 +3003,23 @@
\let\bbl@inikv@identification\bbl@inikv
\let\bbl@inikv@date\bbl@inikv
\let\bbl@inikv@typography\bbl@inikv
-\let\bbl@inikv@characters\bbl@inikv
\let\bbl@inikv@numbers\bbl@inikv
+\def\bbl@maybextx{-\bbl@csarg\ifx{extx@\languagename}\@empty x-\fi}
+\def\bbl@inikv@characters#1#2{%
+ \bbl@ifsamestring{#1}{casing}% eg, casing = uV
+ {\bbl@exp{%
+ \\\g@addto@macro\\\bbl@release@casing{%
+ \\\bbl@casemapping{}{\languagename}{\unexpanded{#2}}}}}%
+ {\in@{$casing.}{$#1}% eg, casing.Uv = uV
+ \ifin@
+ \lowercase{\def\bbl@tempb{#1}}%
+ \bbl@replace\bbl@tempb{casing.}{}%
+ \bbl@exp{\\\g@addto@macro\\\bbl@release@casing{%
+ \\\bbl@casemapping
+ {\\\bbl@maybextx\bbl@tempb}{\languagename}{\unexpanded{#2}}}}%
+ \else
+ \bbl@inikv{#1}{#2}%
+ \fi}}
\def\bbl@inikv@counters#1#2{%
\bbl@ifsamestring{#1}{digits}%
{\bbl@error{The counter name 'digits' is reserved for mapping\\%
@@ -3303,7 +3296,6 @@
\bbl@replace@finish@iii\bbl@toreplace}
\def\bbl@datecntr{\expandafter\bbl@xdatecntr\expandafter}
\def\bbl@xdatecntr[#1|#2]{\localenumeral{#2}{#1}}
-\let\bbl@release@transforms\@empty
\bbl@csarg\let{inikv@transforms.prehyphenation}\bbl@inikv
\bbl@csarg\let{inikv@transforms.posthyphenation}\bbl@inikv
\def\bbl@transforms@aux#1#2#3#4,#5\relax{%
@@ -3379,7 +3371,7 @@
\fi
\AtBeginDocument{%
\bbl@patchfont{\bbl@xenohyph}%
- \expandafter\select@language\expandafter{\languagename}}%
+ {\expandafter\select@language\expandafter{\languagename}}}%
\fi}}%
\fi
\bbl@csarg\bbl@toglobal{lsys@#1}}
@@ -3458,7 +3450,7 @@
\def\bbl@alphnumeral#1#2{%
\expandafter\bbl@alphnumeral@i\number#2 76543210\@@{#1}}
\def\bbl@alphnumeral@i#1#2#3#4#5#6#7#8\@@#9{%
- \ifcase\@car#8\@nil\or % Currenty <10000, but prepared for bigger
+ \ifcase\@car#8\@nil\or % Currently <10000, but prepared for bigger
\bbl@alphnumeral@ii{#9}000000#1\or
\bbl@alphnumeral@ii{#9}00000#1#2\or
\bbl@alphnumeral@ii{#9}0000#1#2#3\or
@@ -3509,6 +3501,11 @@
\@namedef{bbl@info@extension.t.tag.bcp47}{extt}
\@namedef{bbl@info@extension.u.tag.bcp47}{extu}
\@namedef{bbl@info@extension.x.tag.bcp47}{extx}
+\ifcase\bbl@engine % Converts utf8 to its code (expandable)
+ \def\bbl@utftocode#1{\the\numexpr\decode@UTFviii#1\relax}
+\else
+ \def\bbl@utftocode#1{\expandafter`\string#1}
+\fi
\providecommand\BCPdata{}
\ifx\renewcommand\@undefined\else % For plain. TODO. It’s a quick fix
\renewcommand\BCPdata[1]{\bbl@bcpdata@i#1\@empty}
@@ -3526,15 +3523,45 @@
\fi
\@namedef{bbl@info@casing.tag.bcp47}{casing}
\newcommand\BabelUppercaseMapping[3]{%
- \let\bbl@tempx\languagename
- \edef\languagename{#1}%
- \DeclareUppercaseMapping[\BCPdata{casing}]{#2}{#3}%
- \let\languagename\bbl@tempx}
+ \DeclareUppercaseMapping[\@nameuse{bbl@casing@#1}]{#2}{#3}}
+\newcommand\BabelTitlecaseMapping[3]{%
+ \DeclareTitlecaseMapping[\@nameuse{bbl@casing@#1}]{#2}{#3}}
\newcommand\BabelLowercaseMapping[3]{%
- \let\bbl@tempx\languagename
- \edef\languagename{#1}%
- \DeclareLowercaseMapping[\BCPdata{casing}]{#2}{#3}%
- \let\languagename\bbl@tempx}
+ \DeclareLowercaseMapping[\@nameuse{bbl@casing@#1}]{#2}{#3}}
+\def\bbl@casemapping#1#2#3{% 1:variant
+ \def\bbl@tempa##1 ##2{% Loop
+ \bbl@casemapping@i{##1}%
+ \ifx\@empty##2\else\bbl@afterfi\bbl@tempa##2\fi}%
+ \edef\bbl@templ{\@nameuse{bbl@casing@#2}#1}% Language code
+ \def\bbl@tempe{0}% Mode (upper/lower...)
+ \def\bbl@tempc{#3 }% Casing list
+ \expandafter\bbl@tempa\bbl@tempc\@empty}
+\def\bbl@casemapping@i#1{%
+ \def\bbl@tempb{#1}%
+ \ifcase\bbl@engine % Handle utf8 in pdftex, by surrounding chars with {}
+ \@nameuse{regex_replace_all:nnN}%
+ {[\x{c0}-\x{ff}][\x{80}-\x{bf}]*}{{\0}}\bbl@tempb
+ \else
+ \@nameuse{regex_replace_all:nnN}{.}{{\0}}\bbl@tempb % TODO. needed?
+ \fi
+ \expandafter\bbl@casemapping@ii\bbl@tempb\@@}
+\def\bbl@casemapping@ii#1#2#3\@@{%
+ \in@{#1#3}{<>}% ie, if <u>, <l>, <t>
+ \ifin@
+ \edef\bbl@tempe{%
+ \if#2u1 \else\if#2l2 \else\if#2t3 \fi\fi\fi}%
+ \else
+ \ifcase\bbl@tempe\relax
+ \DeclareUppercaseMapping[\bbl@templ]{\bbl@utftocode{#1}}{#2}%
+ \DeclareLowercaseMapping[\bbl@templ]{\bbl@utftocode{#2}}{#1}%
+ \or
+ \DeclareUppercaseMapping[\bbl@templ]{\bbl@utftocode{#1}}{#2}%
+ \or
+ \DeclareLowercaseMapping[\bbl@templ]{\bbl@utftocode{#1}}{#2}%
+ \or
+ \DeclareTitlecaseMapping[\bbl@templ]{\bbl@utftocode{#1}}{#2}%
+ \fi
+ \fi}
\let\bbl@ensureinfo\@gobble
\newcommand\BabelEnsureInfo{%
\ifx\InputIfFileExists\@undefined\else
@@ -3569,6 +3596,12 @@
\fi}
\let\bbl@ini@loaded\@empty
\newcommand\LocaleForEach{\bbl@foreach\bbl@ini@loaded}
+\def\ShowLocaleProperties#1{%
+ \typeout{}%
+ \typeout{*** Properties for language '#1' ***}
+ \def\bbl@elt##1##2##3{\typeout{##1/##2 = ##3}}%
+ \@nameuse{bbl@inidata@#1}%
+ \typeout{*******}}
\newcommand\babeladjust[1]{% TODO. Error handling.
\bbl@forkv{#1}{%
\bbl@ifunset{bbl@ADJ@##1@##2}%
diff --git a/Master/texmf-dist/tex/generic/babel/hyphen.cfg b/Master/texmf-dist/tex/generic/babel/hyphen.cfg
index 59e4eb657b3..f7e3fce63da 100644
--- a/Master/texmf-dist/tex/generic/babel/hyphen.cfg
+++ b/Master/texmf-dist/tex/generic/babel/hyphen.cfg
@@ -38,10 +38,10 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{hyphen.cfg}[2023/11/11 v3.97 Babel hyphens]
+\ProvidesFile{hyphen.cfg}[2023/12/06 v3.98 Babel hyphens]
\xdef\bbl@format{\jobname}
-\def\bbl@version{3.97}
-\def\bbl@date{2023/11/11}
+\def\bbl@version{3.98}
+\def\bbl@date{2023/12/06}
\ifx\AtBeginDocument\@undefined
\def\@empty{}
\fi
diff --git a/Master/texmf-dist/tex/generic/babel/locale/fa/babel-fa.ini b/Master/texmf-dist/tex/generic/babel/locale/fa/babel-fa.ini
index dfde929b03d..48e2decaac4 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/fa/babel-fa.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/fa/babel-fa.ini
@@ -6,11 +6,12 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; * With improvements by Farshad Rasuli (@farshadrasuli).
[identification]
charset = utf8
-version = 1.12
-date = 2023-01-27
+version = 1.13
+date = 2023-11-25
name.local = فارسی
name.english = Persian
name.babel = persian
@@ -27,15 +28,15 @@ encodings = LFE
derivate = no
[captions]
-preface = پیشگفتار
-ref = مراجع
+preface = پیش‌گفتار
+ref = مرجع‌ها
abstract = چکیده
bib = کتاب‌نامه
chapter = فصل
appendix = پیوست
-contents = فهرست مطالب
-listfigure = لیست تصاویر
-listtable = لیست جداول
+contents = فهرست
+listfigure = فهرست شکل‌ها
+listtable = فهرست جدول‌ها
index = نمایه
figure = شكل
table = جدول
@@ -43,11 +44,11 @@ part = بخش
encl = پیوست
cc = رونوشت
headto = به
-page = صفحة
+page = صفحه
see = ببینید
also = نیز ببینید
-proof = برهان
-glossary = دانش‌نامه
+proof = اثبات
+glossary = فرهنگ‌نامه
[date]
calendar.preferred = persian gregorian islamic islamic-civil islamic-tbla
@@ -55,13 +56,13 @@ calendar.preferred = persian gregorian islamic islamic-civil islamic-tbla
[date.gregorian]
date.long = [d] [MMMM] [y]
date.short = [y]/[M]/[d]
-months.wide.1 = ژانویهٔ
-months.wide.2 = فوریهٔ
+months.wide.1 = ژانویه
+months.wide.2 = فوریه
months.wide.3 = مارس
months.wide.4 = آوریل
-months.wide.5 = مهٔ
+months.wide.5 = مه
months.wide.6 = ژوئن
-months.wide.7 = ژوئیهٔ
+months.wide.7 = ژوئیه
months.wide.8 = اوت
months.wide.9 = سپتامبر
months.wide.10 = اکتبر
@@ -86,13 +87,13 @@ days.wide.thu = پنجشنبه
days.wide.fri = جمعه
days.wide.sat = شنبه
days.wide.sun = یکشنبه
-days.abbreviated.mon = دوشنبه
-days.abbreviated.tue = سه‌شنبه
-days.abbreviated.wed = چهارشنبه
-days.abbreviated.thu = پنجشنبه
+days.abbreviated.mon = دو
+days.abbreviated.tue = سه
+days.abbreviated.wed = چهار
+days.abbreviated.thu = پنج
days.abbreviated.fri = جمعه
days.abbreviated.sat = شنبه
-days.abbreviated.sun = یکشنبه
+days.abbreviated.sun = یک
days.narrow.mon = د
days.narrow.tue = س
days.narrow.wed = چ
@@ -146,8 +147,8 @@ months.wide.7 = رجب
months.wide.8 = شعبان
months.wide.9 = رمضان
months.wide.10 = شوال
-months.wide.11 = ذیقعدهٔ
-months.wide.12 = ذیحجهٔ
+months.wide.11 = دیقعده
+months.wide.12 = دیحجه
[time.gregorian]
time.medium = [H]:[mm]:[ss]
@@ -167,7 +168,7 @@ postexhyphenchar =
hyphenationmin =
[characters]
-delimiters.quotes = «»‹›
+delimiters.quotes = «» “” ‘’
auxiliary = [ـ\u200C\u200D\u200E\u200F \u064E \u0650 \u064F \u0652 \u0656 \u0670 إ ك ى ي]
exemplarCharacters = [\u064B \u064D \u064C \u0651 \u0654 آ ا ء أ ؤ ئ ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ة ی]
index = [آ ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه ی]
@@ -177,11 +178,11 @@ punctuation = [\\- ‐ ‑ ، ٫ ٬ ؛ \\: ! ؟ . … ‹ › « » ( ) \\[ \\]
defaultNumberingSystem = arabext
digits.native = ۰۱۲۳۴۵۶۷۸۹
minimumGroupingDigits = 1
-decimal = .
+decimal = ٫
exponential = E
-group = ,
+group = ٬
infinity = ∞
-list = ;
+list = ؛
minusSign = ‎−
nan = ناعدد
perMille = ‰
@@ -190,7 +191,7 @@ plusSign = ‎+
superscriptingExponent = ×
[counters]
-abjad = ا ب ج د ه‍ و ز ح ط ی ک ل م ن س ع ف ص ق ر ش ت ث خ ذ ض ظ غ
+abjad = ا ب ج د ه‍ و ز ح ط ی ک ل م ن س ع ف ص ق ر ش ت ث خ ذ ض ظ غ گ چ پ ژ
alphabetic = ا ب پ ت ث ج چ ح خ د ذ ر ز ژ س ش ص ض ط ظ ع غ ف ق ک گ ل م ن و ه‍ ی
[transforms.prehyphenation]
@@ -198,5 +199,16 @@ kashida.plain.1.0 = { ()[يئهشسقفغعضصنمكلظطخحچجثتپب]()[
kashida.plain.1.1 = { kashida = 500 }
kashida.plain.2.0 = { ()ل()[ًٍَُِّ]*[اأإآ] }
kashida.plain.2.1 = { kashida = 0 }
+; Contributed by Christian Lück (@lueck) for Arabic
+kashida.base.1.0 = { ()[يئهشسقفغعضصنمكلظطخحجثتب]()[يئهشسقفغعضصنمكلظطخحجثتباأإآوؤذدزرة] }
+kashida.base.1.1 = { kashida = 500 }
+; one diacritic mark: insert kashida behind it
+kashida.base.2.0 = { [يئهشسقفغعضصنمكلظطخحجثتب]()[ًٍَُِّ]()[يئهشسقفغعضصنمكلظطخحجثتباأإآوؤذدزرة] }
+kashida.base.2.1 = { kashida = 500 }
+; two diacritic marks: insert kashida behind them
+kashida.base.3.0 = { [يئهشسقفغعضصنمكلظطخحجثتب][ًٍَُِّ]()[ًٍَُِّ]()[يئهشسقفغعضصنمكلظطخحجثتباأإآوؤذدزرة] }
+kashida.base.3.1 = { kashida = 500 }
+kashida.base.4.0 = { ()ل()[ًٍَُِّ]*[اأإآ] }
+kashida.base.4.1 = { kashida = 0 }
diff --git a/Master/texmf-dist/tex/generic/babel/locale/la/babel-classicallatin.tex b/Master/texmf-dist/tex/generic/babel/locale/la/babel-classicallatin.tex
index 6efe0993892..f3df2a749ee 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/la/babel-classicallatin.tex
+++ b/Master/texmf-dist/tex/generic/babel/locale/la/babel-classicallatin.tex
@@ -18,8 +18,4 @@
\SetHyphenMap{\BabelLower{`V}{`u}}
\EndBabelCommands
-% TODO. Must be defined somehow in the ini file:
-\BabelUppercaseMapping{\languagename}{`u}{V}
-\BabelLowercaseMapping{\languagename}{`v}{U}
-
\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-classic.ini b/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-classic.ini
index 06a95c81ecd..df7497ec461 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-classic.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-classic.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.6
-date = 2023-06-25
+version = 1.7
+date = 2023-12-03
name.english = Classical Latin
name.babel = classicallatin
tag.bcp47 = la-x-classic
@@ -148,6 +148,8 @@ hyphenationmin =
[characters]
delimiters.quotes =
+casing = uV
+casing.Nouv = uU vV
[counters]
diff --git a/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-ecclesia.ini b/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-ecclesia.ini
index 9648951a71f..01291c67d2c 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-ecclesia.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-ecclesia.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.6
-date = 2023-06-25
+version = 1.7
+date = 2023-12-03
name.english = Ecclesiastical Latin
name.babel = ecclesiasticallatin
tag.bcp47 = la-x-ecclesia
@@ -148,6 +148,7 @@ hyphenationmin =
[characters]
delimiters.quotes =
+casing.Uv = uV
[counters]
diff --git a/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-medieval.ini b/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-medieval.ini
index ee14662f109..243037733b8 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-medieval.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-medieval.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.5
-date = 2022-07-28
+version = 1.6
+date = 2023-12-03
name.english = Medieval Latin
name.babel = medievallatin
tag.bcp47 = la-x-medieval
@@ -147,6 +147,8 @@ hyphenationmin =
[characters]
delimiters.quotes =
+casing = uV
+casing.Nouv = uU vV
[counters]
diff --git a/Master/texmf-dist/tex/generic/babel/locale/la/babel-la.ini b/Master/texmf-dist/tex/generic/babel/locale/la/babel-la.ini
index 3582f334785..73f3fd22b50 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/la/babel-la.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/la/babel-la.ini
@@ -9,8 +9,8 @@
[identification]
charset = utf8
-version = 1.4
-date = 2021-11-15
+version = 1.5
+date = 2023-12-03
name.english = Latin
name.babel = latin
name.polyglossia = latin
@@ -145,7 +145,8 @@ postexhyphenchar =
hyphenationmin =
[characters]
-delimiters.quotes =
+delimiters.quotes =
+casing.Uv = uV
[counters]
diff --git a/Master/texmf-dist/tex/generic/babel/luababel.def b/Master/texmf-dist/tex/generic/babel/luababel.def
index d1b790c836a..ec0d118d7e3 100644
--- a/Master/texmf-dist/tex/generic/babel/luababel.def
+++ b/Master/texmf-dist/tex/generic/babel/luababel.def
@@ -601,7 +601,7 @@ end
\catcode`_=11 \catcode`:=11
\gdef\bblar@nofswarn{\gdef\msg_warning:nnx##1##2##3{}}
\endgroup
-\gdef\bbl@arabicjust{% TODO. Allow for serveral locales.
+\gdef\bbl@arabicjust{% TODO. Allow for several locales.
\let\bbl@arabicjust\relax
\newattribute\bblar@kashida
\directlua{ Babel.attr_kashida = luatexbase.registernumber'bblar@kashida' }%
diff --git a/Master/texmf-dist/tex/generic/babel/nil.ldf b/Master/texmf-dist/tex/generic/babel/nil.ldf
index 12bef876f9e..2d62760810c 100644
--- a/Master/texmf-dist/tex/generic/babel/nil.ldf
+++ b/Master/texmf-dist/tex/generic/babel/nil.ldf
@@ -33,7 +33,7 @@
%% extension |.ins|) which are part of the distribution.
%%
-\ProvidesLanguage{nil}[2023/11/11 v3.97 Nil language]
+\ProvidesLanguage{nil}[2023/12/06 v3.98 Nil language]
\LdfInit{nil}{datenil}
\ifx\l@nil\@undefined
\newlanguage\l@nil