summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/doc/latex/babel/README.md28
-rw-r--r--Master/texmf-dist/doc/latex/babel/babel-code.pdfbin0 -> 592226 bytes
-rw-r--r--Master/texmf-dist/doc/latex/babel/babel.pdfbin912577 -> 399234 bytes
-rw-r--r--Master/texmf-dist/source/latex/babel/babel.dtx620
-rw-r--r--Master/texmf-dist/source/latex/babel/babel.ins35
-rw-r--r--Master/texmf-dist/source/latex/babel/bbcompat.dtx2
-rw-r--r--Master/texmf-dist/source/latex/babel/locale.zipbin931908 -> 940704 bytes
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.def1846
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.sty258
-rw-r--r--Master/texmf-dist/tex/generic/babel/hyphen.cfg6
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/fr/babel-acadian.tex12
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-x-acadian.ini186
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/se/babel-se.ini6
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-ijekavsk.tex12
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-latn-ijekavsk.tex12
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-BA.ini95
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-ME.ini96
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-XK.ini94
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl.ini79
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-BA.ini65
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ME.ini63
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-XK.ini63
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ijekavsk.ini186
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn.ini50
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-ijekavsk.ini200
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr.ini93
-rw-r--r--Master/texmf-dist/tex/generic/babel/luababel.def2
-rw-r--r--Master/texmf-dist/tex/generic/babel/nil.ldf2
28 files changed, 1602 insertions, 2509 deletions
diff --git a/Master/texmf-dist/doc/latex/babel/README.md b/Master/texmf-dist/doc/latex/babel/README.md
index 1ecd1bfdba8..f41986807e3 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.88
+## Babel 3.89
-2023-04-18
+2023-05-11
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 250 languages.
The latest stable version is available on <https://ctan.org/pkg/babel>.
-Changes in version 3.88 are described in:
+Changes in version 3.89 are described in:
-https://latex3.github.io/babel/news/whats-new-in-babel-3.88.html
+https://latex3.github.io/babel/news/whats-new-in-babel-3.89.html
Apart from the manual, you can find information on some aspects of babel at:
@@ -48,18 +48,14 @@ respective authors.
### Summary of latest changes
```
-3.88 2023-04-18
- * 37 new locale files: Abkhazian, Afar, Atsam, Baluchi, Bhojpuri,
- Blin, Corsican, Erzya, Ga, Geez, Guarani, Haryanvi, Inuktitut,
- Jju, Ligurian, Muscogee, Northern Sotho, Nyanja, N’Ko,
- Papiamento, Prussian, Rajasthani, Saho, Sicilian, Silesian,
- South Ndebele, Southern Sotho, Swati, Taroko, Tigre, Tok Pisin,
- Tsonga, Tswana, Tyap, Venda, Volapük, Wolaytta.
- * Fixed a few month names in Greek locales (thanks to Günter Milde).
- * New hook 'begindocument'.
- * Feature preview: option 'casing' in '\babelprovide' (requires a
- future change in the LaTeX kernel).
- * Some minor changes.
+3.89 2023-05-11
+ * Deprecating \SetCase, \aliasshorthands, and 'strings' package
+ options in the manual.
+ * The manual has been split in two documents: 'babel.pdf' is the
+ user guide, and 'babel-code.pdf' is the code.
+ * Alternative syntax to pass 'modifiers' to babel languages.
+ * Code cleaned up: babel.def has been shortened dramatically,
+ and babel.sty is a bit smaller.
```
### Previous changes
diff --git a/Master/texmf-dist/doc/latex/babel/babel-code.pdf b/Master/texmf-dist/doc/latex/babel/babel-code.pdf
new file mode 100644
index 00000000000..afec13d4661
--- /dev/null
+++ 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 c9e2caadd7e..cdc413d2770 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 937d698789f..bc6e15cb9f7 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/04/18 v3.88 The Babel package]
+\ProvidesFile{babel.dtx}[2023/05/11 v3.89 The Babel package]
\documentclass{ltxdoc}
\GetFileInfo{babel.dtx}
\usepackage{fontspec}
@@ -48,7 +48,11 @@
ItalicFont = NotoSans-Italic.ttf,
BoldItalicFont = NotoSans-BoldItalic.ttf]
{NotoSans-Regular.ttf}
-\setmonofont[Scale=.88,FakeStretch=.95]{NotoMono-Regular.ttf}
+\setmonofont[
+ Scale=.88, FakeStretch=.95,
+ BoldFont = NotoMono-Regular.ttf,
+ ItalicFont = NotoMono-Regular.ttf,
+ BoldItalicFont = NotoMono-Regular.ttf]{NotoMono-Regular.ttf}
\raggedright
\addtolength{\textwidth}{25pt}
\addtolength{\textheight}{3.5cm}
@@ -97,7 +101,7 @@
\makeatletter
\def\@begintheorem#1#2{%
\list{}{}%
- \small
+ % \small
\global\advance\@listdepth\m@ne
\item[{\sffamily\bfseries\color{messages}\hspace*{1.3em}%
\MakeUppercase{#1}}]}%
@@ -204,7 +208,15 @@
\cellcolor[rgb]{.95,.95,.95}
\vspace{2cm}\hspace{1.5cm}
\begin{minipage}{5cm}
+\Huge
+\ifx\babelcode\undefined
+User guide
+\else
+Code
+\fi
+
\Large
+\vspace{1.2cm}
Version \csname @gobble\expandafter\endcsname\fileversion\newline
\filedate
@@ -236,17 +248,18 @@ Xe\largetex
\end{titlepage}
\tableofcontents
-\listoftroubles
+\ifx\babelcode\undefined
+ \listoftroubles
+\fi
\clearpage
-\part{User guide}
+\ifx\babelcode\undefined
\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
-are also some notes on its use with e-Plain and pdf-Plain \TeX . Part II
-describes the code, and usually it can be ignored.
+are also some notes on its use with e-Plain and pdf-Plain \TeX.
\item[\sffamily\color{messages}What if I’m interested only in the
latest changes?] Changes and new features with relation to version 3.8
@@ -287,6 +300,9 @@ necessary in some languages), is described below; go to \ref{inifiles}.
there are many
\href{https://github.com/latex3/babel/tree/master/samples}{sample
files}.
+
+\item[\sffamily\color{messages}Where is the code?]
+ Run |lualatex --jobname=babel-code \let\babelcode\relax\input{babel.dtx}|.
\end{description}
\section{The user interface}\label{U-I}
@@ -409,11 +425,10 @@ Package babel Warning: No hyphenation patterns were preloaded for
(babel) preloaded for \language=0 instead on input line 57.
\end{verbatim}
The document will be typeset, but very likely the text will not be
- correctly hyphenated. Some languages may be raising this warning
- wrongly (because they are not hyphenated); it is a bug to be fixed
- -- just ignore it. See the manual of your distribution (Mac\TeX,
- Mik\TeX, \TeX Live, etc.) for further info about how to configure
- it.
+ correctly hyphenated. Some languages in some system may be raising
+ this warning wrongly (because they are not hyphenated) -- just ignore
+ it. See the manual of your distribution (Mac\TeX, Mik\TeX, \TeX Live,
+ etc.) for further info about how to configure it.
\end{troubleshooting}
\begin{note}
@@ -560,7 +575,7 @@ short sentences). Typically, all you need is to set the line breaking
rules and, perhaps, the font. In such a case, \babel{} now does not
require declaring these secondary languages explicitly, because the
basic settings are loaded on the fly when the language is selected (and
-also when provided in the optional argument of |\babelfont|, if used.)
+also when provided in the optional argument of |\babelfont|, if used).
This is particularly useful, too, when there are short texts of this
kind coming from an external source whose contents are not known on
@@ -589,18 +604,19 @@ _\foreignlanguage{spanish}{Español}_.
\begin{note}
Instead of its name, you may prefer to select the language with the
-corresponding BCP47 tag. This alternative, however, must be activated
-explicitly, because a two- or tree-letter word is a valid name for a
-language (eg, |lu| can be the locale name with tag |khb| or the tag for
-|lubakatanga|). See section \ref{bcp47} for further details.
+ corresponding BCP47 tag. This alternative, however, must be activated
+ explicitly, because a two- or tree-letter word is a valid name for a
+ language (eg, |lu| can be the locale name with tag |khb| or the tag
+ for |lubakatanga|). See section \ref{bcp47} for further details.
\end{note}
\New{3.84} With \pdftex, when a language is loaded on the fly
-(actually, with |\babelprovide|) selectors now set the font encoding
-based on the list provided when loading |fontenc|. Not all scripts have
-an associated encoding, so this feature works only with Latin,
-Cyrillic, Greek, Arabic, Hebrew, Cherokee, Armenian, and Georgian,
-provided a suitable font is found.
+(actually, with |\babelprovide|, because this is the macro used
+internally to load it) selectors now set the font encoding based on the
+list provided when loading |fontenc|. Not all scripts have an
+associated encoding, so this feature works only with Latin, Cyrillic,
+Greek, Arabic, Hebrew, Cherokee, Armenian, and Georgian, provided a
+suitable font is found.
\subsection{Modifiers}
@@ -617,8 +633,17 @@ needs.}
\end{verbatim}
Attributes (described below) are considered modifiers, ie, you can
-set an attribute by including it in the list of modifiers. However,
-modifiers are a more general mechanism.
+set an attribute by including it in the list of modifiers.
+
+\New{3.89} Alternatively, modifiers can be set with a separate option,
+with the keyword |modifiers| followed by a dot and the language name
+(note the language is not selected or loaded with this option). It is
+useful to activate some feature when the language is declared as a
+class option:
+\begin{verbatim}
+\documentclass[spanish]{report}
+\usepackage[_modifiers.spanish = notilde.lcroman_]{babel}
+\end{verbatim}
\subsection{Troubleshooting}
@@ -1123,37 +1148,6 @@ preserved for backward compatibility.}
\New{3.23} Tests if a character has been made a shorthand.
-\Describe{\aliasshorthand}{\marg{original}\marg{alias}}
-
-The command |\aliasshorthand| can be used to let another character
-perform the same functions as the default shorthand character. If one
-prefers for example to use the character |/| over |"| in typing Polish
-texts, this can be achieved by entering |\aliasshorthand{"}{/}|. For
-the reasons in the warning below, usage of this macro is not
-recommended.
-
-\begin{note}
- The substitute character must \textit{not} have been declared before
- as shorthand (in such a case, |\aliashorthands| is ignored).
-\end{note}
-
-\begin{example}
- The following example shows how to replace a shorthand by another
-\begin{verbatim}
-\aliasshorthand{~}{^}
-\AtBeginDocument{\shorthandoff*{~}}
-\end{verbatim}
-\end{example}
-
-\begin{warning}
- Shorthands remember somehow the original character, and the fallback
- value is that of the latter. So, in this example, if no shorthand if
- found, |^| expands to a non-breaking space, because this is the
- value of |~| (internally, |^| still calls |\active@char~| or
- |\normal@char~|). Furthermore, if you change the |system| value of
- |^| with |\defineshorthand| nothing happens.
-\end{warning}
-
\subsection{Package options}
\New{3.9a}
@@ -1233,9 +1227,9 @@ this file is loaded.
loaded when the format was created: number (remember dialects can
share it), name, hyphenation file and exceptions file.
-\Describe{nocase}{} \New{3.9l} Language settings for uppercase and
-lowercase mapping (as set by |\SetCase|) are ignored. Use only if there
-are incompatibilities with other packages.
+% \Describe{nocase}{} \New{3.9l} Language settings for uppercase and
+% lowercase mapping (as set by |\SetCase|) are ignored. Use only if there
+% are incompatibilities with other packages.
\Describe{silent}{} \New{3.9l} No warnings and no \textit{infos} are
written to the log file.\footnote{You can use alternatively the
@@ -1359,7 +1353,7 @@ LICR). They will be evolving with the time to add more features
following section shows how to make use of them by means of
|\babelprovide|. In other words, |\babelprovide| is mainly meant
for auxiliary tasks, and as alternative when the |ldf|, for some
-reason, does work as expected.
+reason, does not work as expected.
\begin{example}
Although Georgian has its own \texttt{ldf} file, here is how to
@@ -2552,9 +2546,10 @@ language the first valid hyphenation rules in the list. For example:
\begin{verbatim}
\babelprovide[_hyphenrules=chavacano spanish italian_]{chavacano}
\end{verbatim}
-If none of the listed hyphenrules exist, the default behavior
-applies. Note in this example we set |chavacano| as first option --
-without it, it would select |spanish| even if |chavacano| exists.
+If none of the listed hyphenrules exist, the default behavior applies.
+Note in this example we set |chavacano| as first option, which can seem
+redundant, but without it, it would select |spanish| even if
+|chavacano| exists.
A special value is |+|, which allocates a new language (in the \TeX{}
sense). It only makes sense as the last value (or the only one; the
@@ -3168,8 +3163,8 @@ font encodings are the same, like in Unicode based engines.
The environment \Lenv{hyphenrules} can be used to select \emph{only} the
hyphenation rules to be used (it can be used as command, too). This can
-for instance be used to select `nohyphenation', provided that in
-\file{language.dat} the `language' \textsf{nohyphenation} is defined by
+for instance be used to select ‘nohyphenation’, provided that in
+\file{language.dat} the ‘language’ \textsf{nohyphenation} is defined by
loading \file{zerohyph.tex}. It deactivates language shorthands, too
(but not user shorthands).
@@ -3177,7 +3172,7 @@ Except for these simple uses, |hyphenrules| is deprecated and
|otherlanguage*| (the starred version) is preferred, because the former
does not take into account possible changes in encodings of characters
like, say, |'| done by some languages (eg, \textsf{italian},
-\textsf{french}, \textsf{ukraineb}).
+\textsf{french}, \textsf{ukrainian}).
\Describe{\babelpatterns}{\texttt{[}\langlist\texttt{]}%
\marg{patterns}}
@@ -3233,8 +3228,8 @@ 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
illustrates:
\begin{verbatim}
- \usepackage[magyar]{babel}
- \babelprovide[_transforms = digraphs.hyphen_]{magyar}
+ \usepackage[hungarian]{babel}
+ \babelprovide[_transforms = digraphs.hyphen_]{hungarian}
\end{verbatim}
\New{3.67} Transforms predefined in the |ini| locale files can be made
attribute-dependent, too. When an attribute between parenthesis is
@@ -4099,7 +4094,9 @@ to you to make sure no toc type is duplicated).
In the following table most of the languages supported by \babel{} with
and |.ldf| file are listed, together with the names of the option which
you can load \babel\ with for each language. Note this list is open and
-the current options may be different. It does not include |ini| files.
+the current options may be different. It does not include |ini| files
+(see below). Except in a few cases (eg, |ngerman|, |serbianc|,
+|acadien|) names are those of the Unicode CLDR (or based on them).
\begin{description}
\itemsep=-\parskip
@@ -4114,33 +4111,31 @@ the current options may be different. It does not include |ini| files.
\item[Czech] czech
\item[Danish] danish
\item[Dutch] dutch
-\item[English] english, USenglish, american, UKenglish,
- british, canadian, australian, newzealand
+\item[English] english, american (\textit{preferred to} USenglish), british (\textit{preferred to}
+ UKenglish), canadian, australian, newzealand
\item[Esperanto] esperanto
\item[Estonian] estonian
\item[Finnish] finnish
-\item[French] french, francais, canadien, acadian
+\item[French] french, acadian
\item[Galician] galician
-\item[German] austrian, german, germanb, ngerman, naustrian
+\item[German] ngerman, naustrian, german, austrian
\item[Greek] greek, polutonikogreek
\item[Hebrew] hebrew
\item[Icelandic] icelandic
-\item[Indonesian] indonesian (bahasa, indon, bahasai)
+\item[Indonesian] indonesian
\item[Interlingua] interlingua
\item[Irish Gaelic] irish
\item[Italian] italian
\item[Latin] latin
\item[Lower Sorbian] lowersorbian
-\item[Malay] malay, melayu (bahasam)
-\item[North Sami] samin
+\item[Malay] malay (\textit{preferred to} melayu)
+\item[Northern Sami] northernsami
\item[Norwegian] norsk, nynorsk
\item[Polish] polish
-\item[Portuguese] portuguese, brazilian (portuges, brazil)\footnote{The
-two last name comes from the times when they had to be shortened to 8
-characters}
+\item[Portuguese] portuguese, brazilian
\item[Romanian] romanian
\item[Russian] russian
-\item[Scottish Gaelic] scottish
+\item[Scottish Gaelic] scottishgaelic (\textit{preferred to} scottish)
\item[Spanish] spanish
\item[Slovakian] slovak
\item[Slovenian] slovene
@@ -4157,6 +4152,21 @@ thai, thaicjk, latvian, turkmen, magyar, mongolian, romansh,
lithuanian, spanglish, vietnamese, japanese, pinyin, arabic, farsi,
ibygreek, bgreek, serbianc, frenchle, ethiop} and \textsf{friulan}.
+\begin{note}
+ There are also some deprecated names (a few has been even removed):
+ \textsf{frenchb} or \textsf{francais}, as well as \textsf{canadien}
+ (\textsf{french}), \textsf{germanb} (\textsf{german}),
+ \textsf{bahasa}, \textsf{indon} or \textsf{bahasai}
+ (\textsf{indonesian}), \textsf{lsorbian} (\textsf{lowersorbian}),
+ \textsf{bahasam} (\textsf{malay}), \textsf{portuges}
+ (\textsf{portuguese}), \textsf{brazil} (\textsf{brazilian}),
+ \textsf{russianb} (\textsf{russian}), \textsf{usorbian}
+ (\textsf{uppersorbian}), \textsf{vietnam} (\textsf{vietnamese}),
+ \textsf{northernsami} (\textsf{samin}), \textsf{ukraineb}
+ (\textsf{ukrainian}). Deprecated names come in many cases from the
+ times when they had to be shortened to 8 characters.
+\end{note}
+
Most of them work out of the box, but some may require extra fonts,
encoding files, a preprocessor or even a complete framework (like
\textsf{CJK} or \textsf{luatexja}). For example, if you have got the
@@ -4214,33 +4224,45 @@ empty, removes them. The last argument is the locale name:
\Describe{\babeladjust}{\marg{key-value-list}}
\New{3.36} Sometimes you might need to disable some \babel{} features.
-Currently this macro understands the following keys [to be documented],
-with values |on| or |off|:
+Currently this macro understands the following keys, with values |on|
+or |off|:
\begin{multicols}{3}
\ttfamily
+autoload.bcp47\\
+bcp47.toname\\
bidi.mirroring\\
bidi.text\\
-bidi.math\\%*
+bidi.math\\%
% bidi.mapdigits\\
-linebreak.sea\\%*
-linebreak.cjk\\%*
-justify.arabic\\%*
-layout.tabular\\%*
-layout.lists\\%*
-autoload.bcp47\\
-bcp47.toname
+linebreak.sea\\
+linebreak.cjk\\
+justify.arabic\\
+layout.tabular\\
+layout.lists
\end{multicols}
-
-Other keys [to be documented] are:
+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,
+|layout.tabular| and |layout.lists| changes for tabular and lists.
+Some of the are reverted only to some extent.
+
+Other keys are:
\begin{multicols}{3}
\ttfamily
-autoload.options\\%*
+autoload.options\\
autoload.bcp47.prefix\\
autoload.bcp47.options\\
-prehyphenation.disable\\%*
+prehyphenation.disable\\
select.write\\
-select.encoding\\%*
+select.encoding\\
\end{multicols}
+Most of them are documented elsewhere. With |select.encoding=off|, the
+encoding is not set when loading a language on the fly with \pdftex{}
+(only |off|). |prehyphenation.disable| is by default |nohyphenation|,
+which means prehyphenation transforms are not applied if the current
+hyphenation rules are |nohyphenation|; with |off| they are never
+disabled.
For example, you can set |\babeladjust{bidi.text=off}| if you are using
an alternative algorithm or with large sections not requiring it. Use
@@ -4690,13 +4712,6 @@ classes. The user will be informed that this
configuration file has been loaded. This macro is called by
|\ldf@finish|.
-\DescribeMacro{\substitutefontfamily}
-(Deprecated.) This command takes three arguments, a font encoding and
-two font family names. It creates a font description file for the
-first font in the given encoding. This \file{.fd} file will instruct
-\LaTeX\ to use a font from the second family when a font from the
-first family in the given encoding seems to be needed.
-
\subsection{Skeleton}
Here is the basic structure of an |ldf| file, with a language, a
@@ -4888,15 +4903,8 @@ used to properly switch French spacing on and off.
\label{s:strings}
\New{3.9a} Babel 3.9 provides a way of defining strings in several
-encodings, intended mainly for \luatex{} and \xetex. This is the only new
-feature requiring changes in language files if you want to make use of
-it.
-
-Furthermore, it must be activated explicitly, with the package option
-|strings|. If there is no |strings|, these blocks are ignored, except
-|\SetCase|s (and except if forced as described below). In other words,
-the old way of defining/switching strings still works and it's used by
-default.
+encodings, intended mainly for \luatex{} and \xetex, although the old
+way of defining/switching strings still works and it's used by default.
It consist is a series of blocks started with
|\StartBabelCommands|. The last block is closed with
@@ -4905,9 +4913,11 @@ declarations apply until the next |\StartBabelCommands| or
|\EndBabelCommands|). An |ldf| may contain several series of this
kind.
-Thanks to this new feature, string values and string language
-switching are not mixed any more. No need of |\addto|. If the language
-is |french|, just redefine |\frenchchaptername|.
+Thanks to this new feature, string values and string language switching
+are not mixed any more. Furthermore, strings do no need to be wrapped
+with formatting commands (eg, to select the writing direction)
+because \babel{} takes care of it automatically. (See also
+|\setlocalecaption|.)
\Describe\StartBabelCommands
{\marg{language-list}\marg{category}\oarg{selector}}
@@ -4921,11 +4931,11 @@ defined (if undefined, |\StartBabelCommands| sets it to
but this is discouraged -- a explicit name (or names) is much better
and clearer.
-A ``selector'' is a name to be used as value in package option
-|strings|, optionally followed by extra info about the encodings to be
-used. The name |unicode| must be used for \xetex{} and \luatex{} (the
-key |strings| has also other two special values: |generic| and
-|encoded|).
+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,
+the LICR representation (ie, with macros like |\~{n}| instead of |ñ|)
+is assumed.
If a string is set several times (because several blocks are read),
the first one takes precedence (ie, it works much like
@@ -4943,25 +4953,18 @@ can be given after |fontenc=| (separated with spaces, if two or more) --
recommended, but not mandatory, although blocks without this key are
not taken into account if you have requested |strings=encoded|.
-Blocks without a selector are read always if the key |strings| has
-been used. They provide fallback values, and therefore must be the
-last blocks; they should be provided always if possible and all
-strings should be defined somehow inside it; they can be the only
-blocks (mainly LGC scripts using the LICR). Blocks without a selector
-can be activated explicitly with |strings=generic| (no block is taken
-into account except those). With |strings=encoded|, strings in those
-blocks are set as default (internally, |?|). With |strings=encoded|
-strings are protected, but they are correctly expanded in
-|\MakeUppercase| and the like. If there is no key |strings|, string
-definitions are ignored, but |\SetCase|s are still honored (in a
-|encoded| way).
+Blocks without a selector are read always. They provide fallback
+values, and therefore they must be the last ones; they should be
+provided always if possible and all strings should be defined somehow
+inside it; they can be the only blocks (mainly LGC scripts using the
+LICR).
The \m{category} is either |captions|, |date| or |extras|. You must
stick to these three categories, even if no error is raised when using
-other name.\footnote{In future releases further categories may be
+other names.\footnote{In future releases further categories may be
added.\nb{like `monetary', `time', `address', `name', `case' or
`numeric'}} It may be empty, too, but in such a case using
-|\SetString| is an error (but not |\SetCase|).
+|\SetString| is an error.
\begin{verbatim}
\StartBabelCommands{language}{captions}
@@ -4974,14 +4977,14 @@ added.\nb{like `monetary', `time', `address', `name', `case' or
\EndBabelCommands
\end{verbatim}
-A real example is:
+A real example can be:
\begin{verbatim}
\StartBabelCommands{austrian}{date}
- [unicode, fontenc=TU EU1 EU2, charset=utf8]
+ [unicode, fontenc=TU, charset=utf8]
\SetString\monthiname{Jänner}
\StartBabelCommands{german,austrian}{date}
- [unicode, fontenc=TU EU1 EU2, charset=utf8]
+ [unicode, fontenc=TU, charset=utf8]
\SetString\monthiiiname{März}
\StartBabelCommands{austrian}{date}
@@ -5020,17 +5023,28 @@ strings are added). However, when used in the preamble or in a
package, new settings are added to the previous ones, if the language
exists (in the \babel{} sense, ie, if |\date|\m{language} exists).
+\begin{note}
+ The package option |strings| introduced in version 3.9 (around 2013)
+ when Unicode engines were still of marginal use, is now deprecated.
+\end{note}
+
+\begin{note}
+ Captions and other strings defined in |ini| files (in other words,
+ when a locale is loaded with |\babelprovide|) are internally set
+ with the help of these macros.
+\end{note}
+
\Describe\StartBabelCommands{%
\colorbox{thegrey}{\ttfamily\hskip-.2em*\hskip-.2em}%
\marg{language-list}\marg{category}\oarg{selector}}
The starred version just forces |strings| to take a value -- if not set
-as package option, then the default for the engine is used. This is
-not done by default to prevent backward incompatibilities, but if you
-are creating a new language this version is better. It's up to
-the maintainers of the current languages to decide if using it is
-appropriate.\footnote{This replaces in 3.9g a short-lived
-\texttt{\string\UseStrings} which has been removed because it did
-not work.}
+as package option (which is now deprecated), then the default for the
+engine is used. This is not done by default to prevent backward
+incompatibilities, but if you are creating a new language this version
+is better. It's up to the maintainers of the current languages to
+decide if using it is appropriate.\footnote{This replaces in 3.9g a
+short-lived \texttt{\string\UseStrings} which has been removed because
+it did not work.}
\Describe{\EndBabelCommands}{}
Marks the end of the series of blocks.
@@ -5059,52 +5073,18 @@ 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}}
-Sets globally code to be executed at |\MakeUppercase| and
-|\MakeLowercase|. The code would typically be things like |\let\BB\bb|
-and |\uccode| or |\lccode| (although for the reasons explained above,
-changes in lc/uc codes may not work). A \meta{map-list} is a series of
-macros using the internal format of |\@uclclist| (eg,
-|\bb\BB\cc\CC|). The mandatory arguments take precedence over the
-optional one. This command, unlike |\SetString|, is executed always
-(even without |strings|), and it is intended for minor readjustments
-only.
-
-For example, as |T1| is the default case mapping in \LaTeX, we can
-set for Turkish:
-\begin{verbatim}
-\StartBabelCommands{turkish}{}[ot1enc, fontenc=OT1]
-\SetCase
- {\uccode"10=`I\relax}
- {\lccode`I="10\relax}
-
-\StartBabelCommands{turkish}{}[unicode, fontenc=TU EU1 EU2, charset=utf8]
-\SetCase
- {\uccode`i=`İ\relax
- \uccode`ı=`I\relax}
- {\lccode`İ=`i\relax
- \lccode`I=`ı\relax}
-
-\StartBabelCommands{turkish}{}
-\SetCase
- {\uccode`i="9D\relax
- \uccode"19=`I\relax}
- {\lccode"9D=`i\relax
- \lccode`I="19\relax}
+\Describe\SetCase{\oarg{map-list}\marg{toupper-code}\marg{tolower-code}\qquad\textit{Deprecated}}
-\EndBabelCommands
-\end{verbatim}
-(Note the mapping for |OT1| is not complete.)
+\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 serves in \TeX{} for two unrelated purposes: case
-transforms (upper/lower) and hyphenation. |\SetCase| handles the
-former, while hyphenation is handled by |\SetHyphenMap| and controlled
-with the package option |hyphenmap|. So, even if internally they are based
-on the same \TeX{} primitive (|\lccode|), \babel{} sets them separately.
-
-There are three helper macros to
-be used inside |\SetHyphenMap|:
+\New{3.9g} Case mapping for hyphenation is handled with |\SetHyphenMap|
+and controlled with the package option |hyphenmap|.
+
+There are three helper macros to be used inside |\SetHyphenMap|:
\begin{itemize}
\item |\BabelLower|\marg{uccode}\marg{lccode} is
similar to |\lccode| but it's ignored if the char has been set and
@@ -5125,9 +5105,11 @@ by both \luatex{} and \xetex{}):
\SetHyphenMap{\BabelLowerMM{"100}{"11F}{2}{"101}}
\end{verbatim}
-This macro is not intended to fix wrong mappings done by Unicode
-(which are the default in both \xetex{} and \luatex{}) -- if an
-assignment is wrong, fix it directly.
+\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
+ assignment is wrong, fix it directly.
+\end{note}
\subsection{Executing code based on the selector}
@@ -5140,22 +5122,30 @@ version), and it can consist of a comma-separated list. For example:
\begin{verbatim}
\IfBabelSelectorTF{other, other*}{A}{B}
\end{verbatim}
-is true with these two environment selectors.
+is true with any of these two environment selectors.
Its natural place of use is in hooks or in |\extras|\m{language}.
+\else
+
\DocInput{babel.dtx}
+\fi
+
+
\section{Acknowledgements}
I would like to thank all who volunteered as $\beta$-testers for their
time. Michel Goossens supplied contributions for most of the other
-languages. Nico Poppelier helped polish the text of the documentation
-and supplied parts of the macros for the Dutch language. Paul Wackers
-and Werenfried Spit helped find and repair bugs.
+languages. Nico Poppelier helped polish the text of the documentation
+and supplied parts of the macros for the Dutch language. Paul Wackers
+and Werenfried Spit helped find and repair bugs. During the further
+development of the babel system I received much help from Bernd
+Raichle, for which I am grateful.
-During the further development of the babel system I received much
-help from Bernd Raichle, for which I am grateful.
+There are also many contributors for specific languages, which are
+mentioned in the respective files. Without them, \babel{} just
+wouldn’t exist.
\begin{thebibliography}{9}
\bibitem{AT} Huda Smitshuijzen Abifares, \textit{Arabic Typography},
@@ -5199,6 +5189,9 @@ help from Bernd Raichle, for which I am grateful.
%
% \fi
%
+% \addtolength{\oddsidemargin}{-15pt}
+% \addtolength{\textwidth}{50pt}
+%
%\begingroup
% \catcode`<=\active%
% \catcode`>=\active
@@ -5212,96 +5205,67 @@ help from Bernd Raichle, for which I am grateful.
% \global\let\check@percent\saved@check@percent
%\endgroup
%
-% \part{Source code}
-%
% \small
%
-% \babel{} is being developed incrementally, which means parts of the
-% code are under development and therefore incomplete. Only documented
-% features are considered complete. In other words, use \babel{} only
-% as documented (except, of course, if you want to explore and test
-% them -- you can post suggestions about multilingual issues to
-% |kadingira@tug.org| on |http://tug.org/mailman/listinfo/kadingira|).
+% The \babel{} package is being developed incrementally, which means
+% parts of the code are under development and therefore incomplete.
+% Only documented features are considered complete. In other words, use
+% \babel{} in real documents only as documented (except, of course, if
+% you want to explore and test them).
%
% \section{Identification and loading of required files}
%
% \textit{Code documentation is still under revision.}
-%
-% \textbf{The following description is no longer valid, because switch
-% and plain have been merged into babel.def.}
-%
+
% The \babel{} package after unpacking consists of the following files:
% \begin{description}
% \itemsep=-\parskip
-% \item[switch.def] defines macros to set and switch languages.
-% \item[babel.def] defines the rest of macros. It has tow parts: a
-% generic one and a second one only for LaTeX{}.
% \item[babel.sty] is the \LaTeX{} package, which set options and
% load language styles.
-% \item[plain.def] defines some \LaTeX{} macros required by
-% \file{babel.def} and provides a few tools for Plain.
+% \item[babel.def] is loaded by Plain.
+% \item[switch.def] defines macros to set and switch languages (it loads
+% part |babel.def|).
+% \item[plain.def] is not used, and just loads babel.def, for
+% compatibility.
% \item[hyphen.cfg] is the file to be used when generating the
% formats to load hyphenation patterns.
% \end{description}
+% There some additional |tex|, |def| and |lua| files
%
% 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
-% source code and shown below with
-% $\langle\langle$\textit{name}$\rangle\rangle$. That brings a little
-% bit of literate programming.
+% source code and defined with either
+% $\langle\langle$\textit{name}=\textit{value}$\rangle\rangle$, or with
+% a series of lines between
+% $\langle\langle$|*|\textit{name}$\rangle\rangle$ and
+% $\langle\langle$|/|\textit{name}$\rangle\rangle$. The latter is
+% cumulative (eg, with \textit{More package options}). That brings a
+% little bit of literate programming. The guards |<-name>| and
+% |<+name>| have been redefined, too. See |babel.ins| for further
+% details.
%
% \section{\texttt{locale} directory}
%
-% A required component of \babel{} is a set of |ini| files
-% with basic definitions for about 200 languages. They are distributed
-% as a separate |zip| file, not packed as |dtx|. With them, babel
-% will fully support Unicode engines.
-
-% Most of them are essentially finished (except bugs and mistakes, of
-% course). Some of them are still incomplete (but they will be usable),
-% and there are some omissions (eg, Latin and polytonic Greek, and
-% there are no geographic areas in Spanish). Hindi, French, Occitan and
-% Breton will show a warning related to dates. Not all include LICR
-% variants.
-%
-% This is a preliminary documentation.
-%
-% |ini| files contain the actual data; |tex| files are currently just
-% proxies to the corresponding ini files.
+% A required component of \babel{} is a set of |ini| files with basic
+% definitions for about 250 languages. They are distributed as a
+% separate |zip| file, not packed as |dtx|. Most of them are
+% essentially finished (except bugs and mistakes, of course). Some of
+% them are still incomplete (but they will be usable), and there are
+% some omissions (eg, there are no geographic areas in Spanish). Not
+% all include LICR variants.
%
-% Most keys are self-explanatory.
-% \begin{description}
-% \itemsep=-\parskip
-% \item[charset] the encoding used in the ini file.
-% \item[version] of the ini file
-% \item[level] ``version'' of the ini specification . which keys are
-% available (they may grow in a compatible way) and how they should be
-% read.
-% \item[encodings] a descriptive list of font encondings.
-% \item[{[captions]}] section of captions in the file charset
-% \item[{[captions.licr]}] same, but in pure ASCII using the LICR
-% \item[date.long] fields are as in the CLDR, but the syntax is
-% different. Anything inside brackets is a date field (eg, |MMMM| for
-% the month name) and anything outside is text. In addition, |[ ]| is a
-% non breakable space and |[.]| is an abbreviation dot.
-% \end{description}
+% |babel-*.ini| files contain the actual data; |babel-*.tex| files are
+% basically proxies to the corresponding ini files.
%
-% Keys may be further qualified in a particular language with a suffix
-% starting with a uppercase letter. It can be just a letter (eg,
-% |babel.name.A|, |babel.name.B|) or a name (eg,
-% |date.long.Nominative|, |date.long.Formal|, but no language is
-% currently using the latter). \textit{Multi-letter} qualifiers are
-% forward compatible in the sense they won’t conflict with new
-% ``global'' keys (which start always with a lowercase case). There is
-% an exception, however: the section |counters| has been devised to
-% have arbitrary keys, so you can add lowercased keys if you want.
+% See \href{https://latex3.github.io/babel/guides/keys-in-ini-files.html}{Keys
+% in \texttt{ini} files} in the the \babel{} site.
%
% \section{Tools}
%
% \begin{macrocode}
-%<<version=3.88>>
-%<<date=2023/04/18>>
+%<<version=3.89>>
+%<<date=2023/05/11>>
% \end{macrocode}
%
% \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -5726,7 +5690,7 @@ help from Bernd Raichle, for which I am grateful.
% \begin{macrocode}
%<*package>
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{babel}[<@date@> <@version@> The Babel package]
+\ProvidesPackage{babel}[<@date@> v<@version@> The Babel package]
% \end{macrocode}
%
% Start with some “private” debugging tool, and then define macros for
@@ -5866,6 +5830,8 @@ help from Bernd Raichle, for which I am grateful.
\bbl@csarg\let{tempa\expandafter}\csname opt@babel.sty\endcsname
\def\bbl@tempb#1.#2{% Remove trailing dot
#1\ifx\@empty#2\else,\bbl@afterfi\bbl@tempb#2\fi}%
+\def\bbl@tempe#1=#2\@@{%
+ \bbl@csarg\edef{mod@#1}{\bbl@tempb#2}}
\def\bbl@tempd#1.#2\@nnil{% TODO. Refactor lists?
\ifx\@empty#2%
\edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1}%
@@ -5875,12 +5841,17 @@ help from Bernd Raichle, for which I am grateful.
\edef\bbl@tempc{%
\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1.\bbl@tempb#2}%
\else
- \in@{=}{#1}%
+ \in@{$modifiers$}{$#1$}% TODO. Allow spaces.
\ifin@
- \edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1.#2}%
- \else
- \edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1}%
- \bbl@csarg\edef{mod@#1}{\bbl@tempb#2}%
+ \bbl@tempe#2\@@
+ \else
+ \in@{=}{#1}%
+ \ifin@
+ \edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1.#2}%
+ \else
+ \edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1}%
+ \bbl@csarg\edef{mod@#1}{\bbl@tempb#2}%
+ \fi
\fi
\fi
\fi}
@@ -6113,10 +6084,11 @@ help from Bernd Raichle, for which I am grateful.
\ifx\ldf@quit\@undefined\else
\endinput\fi % Same line!
<@Make sure ProvidesFile is defined@>
-\ProvidesFile{babel.def}[<@date@> <@version@> Babel common definitions]
+\ProvidesFile{babel.def}[<@date@> v<@version@> Babel common definitions]
\ifx\AtBeginDocument\@undefined % TODO. change test.
<@Emulate LaTeX@>
\fi
+<@Basic macros@>
% \end{macrocode}
%
% That is all for the moment. Now follows some common stuff, for both
@@ -6252,6 +6224,7 @@ help from Bernd Raichle, for which I am grateful.
\fi
\fi\fi}
\let\bbl@initoload\relax
+%<-core>
\def\bbl@provide@locale{%
\ifx\babelprovide\@undefined
\bbl@error{For a language to be defined on the fly 'base'\\%
@@ -6284,6 +6257,7 @@ help from Bernd Raichle, for which I am grateful.
{\bbl@exp{\\\babelprovide[\bbl@autoload@options]{\languagename}}}%
{}%
\fi}
+%<+core>
% \end{macrocode}
%
% \begin{macro}{\iflanguage}
@@ -6393,6 +6367,7 @@ help from Bernd Raichle, for which I am grateful.
% Retrieving information from the stack is a little bit less simple, as
% we need to remove the element from the stack while storing it in the
% macro |\languagename|. For this we first define a helper function.
+%
% \begin{macro}{\bbl@pop@lang}
% This macro stores its first element (which is delimited by the
% `+'-sign) in |\languagename| and stores the rest of the string
@@ -6588,6 +6563,9 @@ help from Bernd Raichle, for which I am grateful.
% current values, then we check if |\|\langvar|hyphenmins| is
% defined. If it is not, we set default values (2 and 3), otherwise
% the values in |\|\langvar|hyphenmins| will be used.
+%
+% No text is supposed to be added with switching captions and date, so
+% we remove any spurious spaces with |\bbl@bsphack| and |\bbl@esphack|.
%
% \begin{macrocode}
\newif\ifbbl@usedategroup
@@ -6606,8 +6584,6 @@ help from Bernd Raichle, for which I am grateful.
% set the locale id
\bbl@id@assign
% switch captions, date
- % No text is supposed to be added here, so we remove any
- % spurious spaces.
\bbl@bsphack
\ifcase\bbl@select@type
\csname captions#1\endcsname\relax
@@ -6678,6 +6654,7 @@ help from Bernd Raichle, for which I am grateful.
\expandafter\expandafter\expandafter\set@hyphenmins
\csname #1hyphenmins\endcsname\relax
\fi
+ % reset selector name
\let\bbl@selectorname\@empty}
% \end{macrocode}
%
@@ -7091,7 +7068,6 @@ help from Bernd Raichle, for which I am grateful.
\input luababel.def
\fi
\fi
-<@Basic macros@>
\bbl@trace{Compatibility with language.def}
\ifx\bbl@languages\@undefined
\ifx\directlua\@undefined
@@ -7228,7 +7204,7 @@ help from Bernd Raichle, for which I am grateful.
\newcommand\EnableBabelHook[1]{\bbl@csarg\let{hk@#1}\@firstofone}
\newcommand\DisableBabelHook[1]{\bbl@csarg\let{hk@#1}\@gobble}
\def\bbl@usehooks{\bbl@usehooks@lang\languagename}
-\def\bbl@usehooks@lang#1#2#3{%
+\def\bbl@usehooks@lang#1#2#3{% Test for Plain
\ifx\UseHook\@undefined\else\UseHook{babel/*/#2}\fi
\def\bbl@elth##1{%
\bbl@cs{hk@##1}{\bbl@cs{ev@##1@#2@}#3}}%
@@ -7254,7 +7230,7 @@ help from Bernd Raichle, for which I am grateful.
beforeextras=0,afterextras=0,stopcommands=0,stringprocess=0,%
hyphenation=2,initiateactive=3,afterreset=0,foreign=0,foreign*=0,%
beforestart=0,languagename=2,begindocument=1}
-\ifx\NewHook\@undefined\else
+\ifx\NewHook\@undefined\else % Test for Plain (?)
\def\bbl@tempa#1=#2\@@{\NewHook{babel/#1}}
\bbl@foreach\bbl@evargs{\bbl@tempa#1\@@}
\fi
@@ -8140,12 +8116,12 @@ help from Bernd Raichle, for which I am grateful.
% \end{macro}
%
% \begin{macro}{\aliasshorthand}
-% 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
+% lattest to |\active@char"|.
+%
% \begin{macrocode}
\def\aliasshorthand#1#2{%
\bbl@ifshorthand{#2}%
@@ -8841,7 +8817,7 @@ help from Bernd Raichle, for which I am grateful.
% \begin{macrocode}
\@ifpackagewith{babel}{nocase}%
{\let\bbl@patchuclc\relax}%
- {\def\bbl@patchuclc{%
+ {\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{%
@@ -9128,7 +9104,7 @@ help from Bernd Raichle, for which I am grateful.
%
% 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.
+% patched |\@uclclist| to the parsing command. \textit{Deprecated.}
%
% \begin{macrocode}
%<<*Macros local to BabelCommands>>
@@ -9198,7 +9174,7 @@ help from Bernd Raichle, for which I am grateful.
%<</More package options>>
% \end{macrocode}
%
-% Initial setup to provide a default behavior if |hypenmap|
+% Initial setup to provide a default behavior if |hyphenmap|
% is not set.
%
% \begin{macrocode}
@@ -9745,6 +9721,7 @@ help from Bernd Raichle, for which I am grateful.
% \begin{macrocode}
\bbl@trace{Bidi layout}
\providecommand\IfBabelLayout[3]{#3}%
+%<-core>
\newcommand\BabelPatchSection[1]{%
\@ifundefined{#1}{}{%
\bbl@exp{\let\<bbl@ss@#1>\<#1>}%
@@ -9778,6 +9755,7 @@ help from Bernd Raichle, for which I am grateful.
\select@language@x{\bbl@main@language}}}{}
\IfBabelLayout{captions}%
{\BabelPatchSection{caption}}{}
+%<+core>
% \end{macrocode}
%
% \subsection{Load engine specific macros}
@@ -9811,12 +9789,16 @@ help from Bernd Raichle, for which I am grateful.
%
% \subsection{Creating and modifying languages}
%
+% Continue with \LaTeX{} only.
+%
% |\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
% loaded |ldf| files.
%
% \begin{macrocode}
+%</package|core>
+%<*package>
\bbl@trace{Creating languages and reading ini files}
\let\bbl@extend@ini\@gobble
\newcommand\babelprovide[2][]{%
@@ -9835,6 +9817,7 @@ help from Bernd Raichle, for which I am grateful.
\let\bbl@calendars\@empty
\global\let\bbl@inidata\@empty
\global\let\bbl@extend@ini\@gobble
+ \global\let\bbl@included@inis\@empty
\gdef\bbl@key@list{;}%
\bbl@forkv{#1}{%
\in@{/}{##1}% With /, (re)sets a value in the ini
@@ -9900,6 +9883,14 @@ help from Bernd Raichle, for which I am grateful.
{}% With \bbl@load@basic below
{\bbl@provide@renew{#2}}%
\fi
+ % == include == TODO
+ % \ifx\bbl@included@inis\@empty\else
+ % \bbl@replace\bbl@included@inis{ }{,}%
+ % \bbl@foreach\bbl@included@inis{%
+ % \openin\bbl@readstream=babel-##1.ini
+ % \bbl@extend@ini{#2}}%
+ % \closein\bbl@readstream
+ % \fi
% Post tasks
% ----------
% == subsequent calls after the first provide for a locale ==
@@ -9922,11 +9913,14 @@ help from Bernd Raichle, for which I am grateful.
\\\bbl@toglobal\<bbl@ensure@\languagename>%
\\\bbl@toglobal\<bbl@ensure@\languagename\space>}%
\fi
- % ==
- % At this point all parameters are defined if 'import'. Now we
- % execute some code depending on them. But what about if nothing was
- % imported? We just set the basic parameters, but still loading the
- % whole ini file.
+% \end{macrocode}
+%
+% At this point all parameters are defined if 'import'. Now we
+% execute some code depending on them. But what about if nothing was
+% imported? We just set the basic parameters, but still loading the
+% whole ini file.
+%
+% \begin{macrocode}
\bbl@load@basic{#2}%
% == script, language ==
% Override the values from ini or defines them
@@ -10376,9 +10370,9 @@ help from Bernd Raichle, for which I am grateful.
\bbl@trim\toks@{#2}%
\bbl@xin@{;\bbl@section/\bbl@tempa;}{\bbl@key@list}%
\ifin@\else
- \bbl@xin@{,identification/include.}%
+ \bbl@xin@{,identification/include.}%
{,\bbl@section/\bbl@tempa}%
- \ifin@\edef\bbl@required@inis{\the\toks@}\fi
+ \ifin@\xdef\bbl@included@inis{\the\toks@}\fi
\bbl@exp{%
\\\g@addto@macro\\\bbl@inidata{%
\\\bbl@elt{\bbl@section}{\bbl@tempa}{\the\toks@}}}%
@@ -10439,16 +10433,9 @@ help from Bernd Raichle, for which I am grateful.
\let\bbl@inistore\bbl@inistore@min % Remember it's local
\fi
\def\bbl@section{identification}%
- \let\bbl@required@inis\@empty
\bbl@exp{\\\bbl@inistore tag.ini=#1\\\@@}%
\bbl@inistore load.level=#2\@@
\bbl@loop@ini
- \ifx\bbl@required@inis\@empty\else
- \bbl@replace\bbl@required@inis{ }{,}%
- \bbl@foreach\bbl@required@inis{%
- \openin\bbl@readstream=babel-##1.ini
- \bbl@loop@ini}%
- \fi
% == Process stored data ==
\bbl@csarg\xdef{lini@\languagename}{#1}%
\bbl@read@ini@aux
@@ -11262,13 +11249,18 @@ help from Bernd Raichle, for which I am grateful.
% \begin{macrocode}
\providecommand\BCPdata{}
\ifx\renewcommand\@undefined\else % For plain. TODO. It’s a quick fix
- \renewcommand\BCPdata[1]{%
+ \renewcommand\BCPdata[1]{\bbl@bcpdata@i#1\@empty}
+ \def\bbl@bcpdata@i#1#2#3#4#5#6\@empty{%
+ \@nameuse{str_if_eq:nnTF}{#1#2#3#4#5}{main.}%
+ {\bbl@bcpdata@ii{#6}\bbl@main@language}%
+ {\bbl@bcpdata@ii{#1#2#3#4#5#6}\languagename}}%
+ \def\bbl@bcpdata@ii#1#2{%
\bbl@ifunset{bbl@info@#1.tag.bcp47}%
{\bbl@error{Unknown field '#1' in \string\BCPdata.\\%
Perhaps you misspelled it.}%
{See the manual for details.}}%
- {\bbl@ifunset{bbl@\csname bbl@info@#1.tag.bcp47\endcsname @\languagename}{}%
- {\bbl@cs{\csname bbl@info@#1.tag.bcp47\endcsname @\languagename}}}}
+ {\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:
\@namedef{bbl@info@casing.tag.bcp47}{casing}
@@ -11281,7 +11273,6 @@ help from Bernd Raichle, for which I am grateful.
%<<*More package options>>
\DeclareOption{ensureinfo=off}{}
%<</More package options>>
-%
\let\bbl@ensureinfo\@gobble
\newcommand\BabelEnsureInfo{%
\ifx\InputIfFileExists\@undefined\else
@@ -11457,23 +11448,6 @@ help from Bernd Raichle, for which I am grateful.
\let\bbl@encoding@select@off\@empty}
% \end{macrocode}
%
-% As the final task, load the code for lua. TODO: use babel name, override
-%
-% \begin{macrocode}
-\ifx\directlua\@undefined\else
- \ifx\bbl@luapatterns\@undefined
- \input luababel.def
- \fi
-\fi
-% \end{macrocode}
-%
-% Continue with \LaTeX{}.
-%
-% \begin{macrocode}
-%</package|core>
-%<*package>
-% \end{macrocode}
-%
% \subsection{Cross referencing macros}
%
% The \LaTeX\ book states:
@@ -11962,7 +11936,7 @@ help from Bernd Raichle, for which I am grateful.
%
% \begin{macro}{\substitutefontfamily}
%
-% Deprecated. Use the tools provides by \LaTeX. The command
+% \textit{Deprecated.} Use the tools provides by \LaTeX. The command
% |\substitutefontfamily| creates an \file{.fd} file on the fly. The
% first argument is an encoding mnemonic, the second and third
% arguments are font family names.
@@ -12432,10 +12406,12 @@ help from Bernd Raichle, for which I am grateful.
\bbl@load@language{hebrew}}
\DeclareOption{hungarian}{\bbl@try@load@lang{}{magyar}{}}
\DeclareOption{lowersorbian}{\bbl@try@load@lang{}{lsorbian}{}}
+\DeclareOption{northernsami}{\bbl@try@load@lang{}{samin}{}}
\DeclareOption{nynorsk}{\bbl@try@load@lang{}{norsk}{}}
\DeclareOption{polutonikogreek}{%
\bbl@try@load@lang{}{greek}{\languageattribute{greek}{polutoniko}}}
\DeclareOption{russian}{\bbl@try@load@lang{}{russianb}{}}
+\DeclareOption{scottishgaelic}{\bbl@try@load@lang{}{scottish}{}}
\DeclareOption{ukrainian}{\bbl@try@load@lang{}{ukraineb}{}}
\DeclareOption{uppersorbian}{\bbl@try@load@lang{}{usorbian}{}}
% \end{macrocode}
@@ -12684,7 +12660,7 @@ help from Bernd Raichle, for which I am grateful.
%
% \begin{macrocode}
<@Make sure ProvidesFile is defined@>
-\ProvidesFile{hyphen.cfg}[<@date@> <@version@> Babel hyphens]
+\ProvidesFile{hyphen.cfg}[<@date@> v<@version@> Babel hyphens]
\xdef\bbl@format{\jobname}
\def\bbl@version{<@version@>}
\def\bbl@date{<@date@>}
@@ -15104,7 +15080,7 @@ end
\else
\let\bbl@ams@lap\llap
\fi
- \ExplSyntaxOn
+ \ExplSyntaxOn % Required by \bbl@sreplace with \intertext@
\bbl@sreplace\intertext@{\normalbaselines}%
{\normalbaselines
\ifx\bbl@eqnodir\relax\else\bbl@pardir\@ne\bbl@eqnodir\fi}%
@@ -23138,7 +23114,7 @@ Babel.cjk_breaks = {
%
% \begin{macrocode}
%<*nil>
-\ProvidesLanguage{nil}[<@date@> <@version@> Nil language]
+\ProvidesLanguage{nil}[<@date@> v<@version@> Nil language]
\LdfInit{nil}{datenil}
% \end{macrocode}
%
@@ -23345,7 +23321,7 @@ Babel.cjk_breaks = {
%</ca-islamic>
% \end{macrocode}
%
-% \section{Hebrew}
+% \subsection{Hebrew}
%
% This is basically the set of macros written by Michail Rozman in
% 1991, with corrections and adaptions by Rama Porrat, Misha, Dan Haran
@@ -23610,7 +23586,7 @@ Babel.cjk_breaks = {
%</ca-hebrew>
% \end{macrocode}
%
-% \section{Persian}
+% \subsection{Persian}
%
% There is an algorithm written in TeX by Jabri, Abolhassani, Pournader
% and Esfahbod, created for the first versions of the FarsiTeX system
@@ -23653,7 +23629,7 @@ Babel.cjk_breaks = {
%</ca-persian>
% \end{macrocode}
%
-% \section{Coptic and Ethiopic}
+% \subsection{Coptic and Ethiopic}
%
% Adapted from \texttt{jquery.calendars.package-1.1.4}, written by Keith
% Wood, 2010. Dual license: GPL and MIT. The only difference is the
@@ -23690,7 +23666,7 @@ Babel.cjk_breaks = {
%</ca-ethiopic>
% \end{macrocode}
%
-% \section{Buddhist}
+% \subsection{Buddhist}
%
% That’s very simple.
%
@@ -24275,6 +24251,8 @@ Babel.cjk_breaks = {
\let\bbl@opt@shorthands\@nnil
\def\bbl@ifshorthand#1#2#3{#2}%
\let\bbl@language@opts\@empty
+\let\bbl@ensureinfo\@gobble
+\let\bbl@provide@locale\relax
\ifx\babeloptionstrings\@undefined
\let\bbl@opt@strings\@nnil
\else
diff --git a/Master/texmf-dist/source/latex/babel/babel.ins b/Master/texmf-dist/source/latex/babel/babel.ins
index f89a5a34988..3706b2c0745 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/04/18}
+\def\filedate{2023/05/11}
\def\batchfile{babel.ins}
\input docstrip.tex
@@ -74,7 +74,7 @@
\else
\activefiles
\fi}
-
+
\newif\ifcollect
\newif\ifsaving
@@ -105,6 +105,32 @@
\expandafter\gdef\csname #1Var\endcsname{#2}%
\fi}
+% The following is somewhat hackish, but it does the job for babel, and
+% must be used in the following way: <-name> starts a block to be
+% ignored if 'name' is active, and <+name> ends the block (in this
+% order). Used to exclude some parts from babel.def. With the original
+% definitions, some code goes 'visually' in comments/documentation, but
+% with this change they are in the real code. However, it must be
+% considered temporal, because the solution must be to reorganize the
+% code.
+
+\let\bblMinus\minusOption
+\def\minusOption-#1>#2\endLine{%
+ \global\let\bblactivefiles\activefiles
+ \def\tempa{}%
+ \def\do##1##2##3{%
+ \def\tempb{#1}\def\tempc{##2}%
+ \ifx\tempb\tempc\else
+ \expandafter\def\expandafter\tempa\expandafter{%
+ \tempa\do##1{##2}##3}%
+ \fi}%
+ \activefiles
+ \let\activefiles\tempa}
+
+\let\bblPlus\plusOption
+\def\plusOption+#1>#2\endLine{%
+ \let\activefiles\bblactivefiles}
+
% Preambles
\declarepreamble\mainpreamble
@@ -153,6 +179,9 @@
}
% compatibility files
+
+\let\minusOption\bblMinus
+\let\plusOption\bblPlus
\def\compatfile#1{\file{#1.sty}{\from{bbcompat.dtx}{styfile,#1}}}
\generate{%
@@ -252,5 +281,3 @@
\Msg{* Happy TeXing}
\Msg{*}
\Msg{***********************************************************}
-
-
diff --git a/Master/texmf-dist/source/latex/babel/bbcompat.dtx b/Master/texmf-dist/source/latex/babel/bbcompat.dtx
index 59a9f961efb..cf059447fbd 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/04/18 v3.88]
+\ProvidesFile{bbcompat.dtx}[2023/05/11 v3.89]
%</dtx>
%
%% File 'bbcompat.dtx'
diff --git a/Master/texmf-dist/source/latex/babel/locale.zip b/Master/texmf-dist/source/latex/babel/locale.zip
index 115e34326f2..ac26c116254 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 0d78a286538..a53d418a451 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/04/18 3.88 Babel common definitions]
+\ProvidesFile{babel.def}[2023/05/11 v3.89 Babel common definitions]
\ifx\AtBeginDocument\@undefined % TODO. change test.
\def\@empty{}
\def\loadlocalcfg#1{%
@@ -387,6 +387,8 @@
\let\bbl@opt@shorthands\@nnil
\def\bbl@ifshorthand#1#2#3{#2}%
\let\bbl@language@opts\@empty
+\let\bbl@ensureinfo\@gobble
+\let\bbl@provide@locale\relax
\ifx\babeloptionstrings\@undefined
\let\bbl@opt@strings\@nnil
\else
@@ -406,8 +408,195 @@
\expandafter\newif\csname ifbbl@single\endcsname
\chardef\bbl@bidimode\z@
\fi
-\def\bbl@version{3.88}
-\def\bbl@date{2023/04/18}
+\bbl@trace{Basic macros}
+\def\bbl@stripslash{\expandafter\@gobble\string}
+\def\bbl@add#1#2{%
+ \bbl@ifunset{\bbl@stripslash#1}%
+ {\def#1{#2}}%
+ {\expandafter\def\expandafter#1\expandafter{#1#2}}}
+\def\bbl@xin@{\@expandtwoargs\in@}
+\def\bbl@carg#1#2{\expandafter#1\csname#2\endcsname}%
+\def\bbl@ncarg#1#2#3{\expandafter#1\expandafter#2\csname#3\endcsname}%
+\def\bbl@ccarg#1#2#3{%
+ \expandafter#1\csname#2\expandafter\endcsname\csname#3\endcsname}%
+\def\bbl@csarg#1#2{\expandafter#1\csname bbl@#2\endcsname}%
+\def\bbl@cs#1{\csname bbl@#1\endcsname}
+\def\bbl@cl#1{\csname bbl@#1@\languagename\endcsname}
+\def\bbl@loop#1#2#3{\bbl@@loop#1{#3}#2,\@nnil,}
+\def\bbl@loopx#1#2{\expandafter\bbl@loop\expandafter#1\expandafter{#2}}
+\def\bbl@@loop#1#2#3,{%
+ \ifx\@nnil#3\relax\else
+ \def#1{#3}#2\bbl@afterfi\bbl@@loop#1{#2}%
+ \fi}
+\def\bbl@for#1#2#3{\bbl@loopx#1{#2}{\ifx#1\@empty\else#3\fi}}
+\def\bbl@add@list#1#2{%
+ \edef#1{%
+ \bbl@ifunset{\bbl@stripslash#1}%
+ {}%
+ {\ifx#1\@empty\else#1,\fi}%
+ #2}}
+\long\def\bbl@afterelse#1\else#2\fi{\fi#1}
+\long\def\bbl@afterfi#1\fi{\fi#1}
+\def\bbl@exp#1{%
+ \begingroup
+ \let\\\noexpand
+ \let\<\bbl@exp@en
+ \let\[\bbl@exp@ue
+ \edef\bbl@exp@aux{\endgroup#1}%
+ \bbl@exp@aux}
+\def\bbl@exp@en#1>{\expandafter\noexpand\csname#1\endcsname}%
+\def\bbl@exp@ue#1]{%
+ \unexpanded\expandafter\expandafter\expandafter{\csname#1\endcsname}}%
+\def\bbl@tempa#1{%
+ \long\def\bbl@trim##1##2{%
+ \futurelet\bbl@trim@a\bbl@trim@c##2\@nil\@nil#1\@nil\relax{##1}}%
+ \def\bbl@trim@c{%
+ \ifx\bbl@trim@a\@sptoken
+ \expandafter\bbl@trim@b
+ \else
+ \expandafter\bbl@trim@b\expandafter#1%
+ \fi}%
+ \long\def\bbl@trim@b#1##1 \@nil{\bbl@trim@i##1}}
+\bbl@tempa{ }
+\long\def\bbl@trim@i#1\@nil#2\relax#3{#3{#1}}
+\long\def\bbl@trim@def#1{\bbl@trim{\def#1}}
+\begingroup
+ \gdef\bbl@ifunset#1{%
+ \expandafter\ifx\csname#1\endcsname\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+ \bbl@ifunset{ifcsname}%
+ {}%
+ {\gdef\bbl@ifunset#1{%
+ \ifcsname#1\endcsname
+ \expandafter\ifx\csname#1\endcsname\relax
+ \bbl@afterelse\expandafter\@firstoftwo
+ \else
+ \bbl@afterfi\expandafter\@secondoftwo
+ \fi
+ \else
+ \expandafter\@firstoftwo
+ \fi}}
+\endgroup
+\def\bbl@ifblank#1{%
+ \bbl@ifblank@i#1\@nil\@nil\@secondoftwo\@firstoftwo\@nil}
+\long\def\bbl@ifblank@i#1#2\@nil#3#4#5\@nil{#4}
+\def\bbl@ifset#1#2#3{%
+ \bbl@ifunset{#1}{#3}{\bbl@exp{\\\bbl@ifblank{\@nameuse{#1}}}{#3}{#2}}}
+\def\bbl@forkv#1#2{%
+ \def\bbl@kvcmd##1##2##3{#2}%
+ \bbl@kvnext#1,\@nil,}
+\def\bbl@kvnext#1,{%
+ \ifx\@nil#1\relax\else
+ \bbl@ifblank{#1}{}{\bbl@forkv@eq#1=\@empty=\@nil{#1}}%
+ \expandafter\bbl@kvnext
+ \fi}
+\def\bbl@forkv@eq#1=#2=#3\@nil#4{%
+ \bbl@trim@def\bbl@forkv@a{#1}%
+ \bbl@trim{\expandafter\bbl@kvcmd\expandafter{\bbl@forkv@a}}{#2}{#4}}
+\def\bbl@vforeach#1#2{%
+ \def\bbl@forcmd##1{#2}%
+ \bbl@fornext#1,\@nil,}
+\def\bbl@fornext#1,{%
+ \ifx\@nil#1\relax\else
+ \bbl@ifblank{#1}{}{\bbl@trim\bbl@forcmd{#1}}%
+ \expandafter\bbl@fornext
+ \fi}
+\def\bbl@foreach#1{\expandafter\bbl@vforeach\expandafter{#1}}
+\def\bbl@replace#1#2#3{% in #1 -> repl #2 by #3
+ \toks@{}%
+ \def\bbl@replace@aux##1#2##2#2{%
+ \ifx\bbl@nil##2%
+ \toks@\expandafter{\the\toks@##1}%
+ \else
+ \toks@\expandafter{\the\toks@##1#3}%
+ \bbl@afterfi
+ \bbl@replace@aux##2#2%
+ \fi}%
+ \expandafter\bbl@replace@aux#1#2\bbl@nil#2%
+ \edef#1{\the\toks@}}
+\ifx\detokenize\@undefined\else % Unused macros if old Plain TeX
+ \bbl@exp{\def\\\bbl@parsedef##1\detokenize{macro:}}#2->#3\relax{%
+ \def\bbl@tempa{#1}%
+ \def\bbl@tempb{#2}%
+ \def\bbl@tempe{#3}}
+ \def\bbl@sreplace#1#2#3{%
+ \begingroup
+ \expandafter\bbl@parsedef\meaning#1\relax
+ \def\bbl@tempc{#2}%
+ \edef\bbl@tempc{\expandafter\strip@prefix\meaning\bbl@tempc}%
+ \def\bbl@tempd{#3}%
+ \edef\bbl@tempd{\expandafter\strip@prefix\meaning\bbl@tempd}%
+ \bbl@xin@{\bbl@tempc}{\bbl@tempe}% If not in macro, do nothing
+ \ifin@
+ \bbl@exp{\\\bbl@replace\\\bbl@tempe{\bbl@tempc}{\bbl@tempd}}%
+ \def\bbl@tempc{% Expanded an executed below as 'uplevel'
+ \\\makeatletter % "internal" macros with @ are assumed
+ \\\scantokens{%
+ \bbl@tempa\\\@namedef{\bbl@stripslash#1}\bbl@tempb{\bbl@tempe}}%
+ \catcode64=\the\catcode64\relax}% Restore @
+ \else
+ \let\bbl@tempc\@empty % Not \relax
+ \fi
+ \bbl@exp{% For the 'uplevel' assignments
+ \endgroup
+ \bbl@tempc}} % empty or expand to set #1 with changes
+\fi
+\def\bbl@ifsamestring#1#2{%
+ \begingroup
+ \protected@edef\bbl@tempb{#1}%
+ \edef\bbl@tempb{\expandafter\strip@prefix\meaning\bbl@tempb}%
+ \protected@edef\bbl@tempc{#2}%
+ \edef\bbl@tempc{\expandafter\strip@prefix\meaning\bbl@tempc}%
+ \ifx\bbl@tempb\bbl@tempc
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ \endgroup}
+\chardef\bbl@engine=%
+ \ifx\directlua\@undefined
+ \ifx\XeTeXinputencoding\@undefined
+ \z@
+ \else
+ \tw@
+ \fi
+ \else
+ \@ne
+ \fi
+\def\bbl@bsphack{%
+ \ifhmode
+ \hskip\z@skip
+ \def\bbl@esphack{\loop\ifdim\lastskip>\z@\unskip\repeat\unskip}%
+ \else
+ \let\bbl@esphack\@empty
+ \fi}
+\def\bbl@cased{%
+ \ifx\oe\OE
+ \expandafter\in@\expandafter
+ {\expandafter\OE\expandafter}\expandafter{\oe}%
+ \ifin@
+ \bbl@afterelse\expandafter\MakeUppercase
+ \else
+ \bbl@afterfi\expandafter\MakeLowercase
+ \fi
+ \else
+ \expandafter\@firstofone
+ \fi}
+\def\bbl@extras@wrap#1#2#3{% 1:in-test, 2:before, 3:after
+ \toks@\expandafter\expandafter\expandafter{%
+ \csname extras\languagename\endcsname}%
+ \bbl@exp{\\\in@{#1}{\the\toks@}}%
+ \ifin@\else
+ \@temptokena{#2}%
+ \edef\bbl@tempc{\the\@temptokena\the\toks@}%
+ \toks@\expandafter{\bbl@tempc#3}%
+ \expandafter\edef\csname extras\languagename\endcsname{\the\toks@}%
+ \fi}
+\def\bbl@version{3.89}
+\def\bbl@date{2023/05/11}
\ifx\language\@undefined
\csname newcount\endcsname\language
\fi
@@ -487,38 +676,6 @@
\fi
\fi\fi}
\let\bbl@initoload\relax
-\def\bbl@provide@locale{%
- \ifx\babelprovide\@undefined
- \bbl@error{For a language to be defined on the fly 'base'\\%
- is not enough, and the whole package must be\\%
- loaded. Either delete the 'base' option or\\%
- request the languages explicitly}%
- {See the manual for further details.}%
- \fi
- \let\bbl@auxname\languagename % Still necessary. TODO
- \bbl@ifunset{bbl@bcp@map@\languagename}{}% Move uplevel??
- {\edef\languagename{\@nameuse{bbl@bcp@map@\languagename}}}%
- \ifbbl@bcpallowed
- \expandafter\ifx\csname date\languagename\endcsname\relax
- \expandafter
- \bbl@bcplookup\languagename-\@empty-\@empty-\@empty\@@
- \ifx\bbl@bcp\relax\else % Returned by \bbl@bcplookup
- \edef\languagename{\bbl@bcp@prefix\bbl@bcp}%
- \edef\localename{\bbl@bcp@prefix\bbl@bcp}%
- \expandafter\ifx\csname date\languagename\endcsname\relax
- \let\bbl@initoload\bbl@bcp
- \bbl@exp{\\\babelprovide[\bbl@autoload@bcpoptions]{\languagename}}%
- \let\bbl@initoload\relax
- \fi
- \bbl@csarg\xdef{bcp@map@\bbl@bcp}{\localename}%
- \fi
- \fi
- \fi
- \expandafter\ifx\csname date\languagename\endcsname\relax
- \IfFileExists{babel-\languagename.tex}%
- {\bbl@exp{\\\babelprovide[\bbl@autoload@options]{\languagename}}}%
- {}%
- \fi}
\def\iflanguage#1{%
\bbl@iflanguage{#1}{%
\ifnum\csname l@#1\endcsname=\language
@@ -655,8 +812,6 @@
% set the locale id
\bbl@id@assign
% switch captions, date
- % No text is supposed to be added here, so we remove any
- % spurious spaces.
\bbl@bsphack
\ifcase\bbl@select@type
\csname captions#1\endcsname\relax
@@ -727,6 +882,7 @@
\expandafter\expandafter\expandafter\set@hyphenmins
\csname #1hyphenmins\endcsname\relax
\fi
+ % reset selector name
\let\bbl@selectorname\@empty}
\long\def\otherlanguage#1{%
\def\bbl@selectorname{other}%
@@ -911,193 +1067,6 @@
\input luababel.def
\fi
\fi
-\bbl@trace{Basic macros}
-\def\bbl@stripslash{\expandafter\@gobble\string}
-\def\bbl@add#1#2{%
- \bbl@ifunset{\bbl@stripslash#1}%
- {\def#1{#2}}%
- {\expandafter\def\expandafter#1\expandafter{#1#2}}}
-\def\bbl@xin@{\@expandtwoargs\in@}
-\def\bbl@carg#1#2{\expandafter#1\csname#2\endcsname}%
-\def\bbl@ncarg#1#2#3{\expandafter#1\expandafter#2\csname#3\endcsname}%
-\def\bbl@ccarg#1#2#3{%
- \expandafter#1\csname#2\expandafter\endcsname\csname#3\endcsname}%
-\def\bbl@csarg#1#2{\expandafter#1\csname bbl@#2\endcsname}%
-\def\bbl@cs#1{\csname bbl@#1\endcsname}
-\def\bbl@cl#1{\csname bbl@#1@\languagename\endcsname}
-\def\bbl@loop#1#2#3{\bbl@@loop#1{#3}#2,\@nnil,}
-\def\bbl@loopx#1#2{\expandafter\bbl@loop\expandafter#1\expandafter{#2}}
-\def\bbl@@loop#1#2#3,{%
- \ifx\@nnil#3\relax\else
- \def#1{#3}#2\bbl@afterfi\bbl@@loop#1{#2}%
- \fi}
-\def\bbl@for#1#2#3{\bbl@loopx#1{#2}{\ifx#1\@empty\else#3\fi}}
-\def\bbl@add@list#1#2{%
- \edef#1{%
- \bbl@ifunset{\bbl@stripslash#1}%
- {}%
- {\ifx#1\@empty\else#1,\fi}%
- #2}}
-\long\def\bbl@afterelse#1\else#2\fi{\fi#1}
-\long\def\bbl@afterfi#1\fi{\fi#1}
-\def\bbl@exp#1{%
- \begingroup
- \let\\\noexpand
- \let\<\bbl@exp@en
- \let\[\bbl@exp@ue
- \edef\bbl@exp@aux{\endgroup#1}%
- \bbl@exp@aux}
-\def\bbl@exp@en#1>{\expandafter\noexpand\csname#1\endcsname}%
-\def\bbl@exp@ue#1]{%
- \unexpanded\expandafter\expandafter\expandafter{\csname#1\endcsname}}%
-\def\bbl@tempa#1{%
- \long\def\bbl@trim##1##2{%
- \futurelet\bbl@trim@a\bbl@trim@c##2\@nil\@nil#1\@nil\relax{##1}}%
- \def\bbl@trim@c{%
- \ifx\bbl@trim@a\@sptoken
- \expandafter\bbl@trim@b
- \else
- \expandafter\bbl@trim@b\expandafter#1%
- \fi}%
- \long\def\bbl@trim@b#1##1 \@nil{\bbl@trim@i##1}}
-\bbl@tempa{ }
-\long\def\bbl@trim@i#1\@nil#2\relax#3{#3{#1}}
-\long\def\bbl@trim@def#1{\bbl@trim{\def#1}}
-\begingroup
- \gdef\bbl@ifunset#1{%
- \expandafter\ifx\csname#1\endcsname\relax
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}
- \bbl@ifunset{ifcsname}%
- {}%
- {\gdef\bbl@ifunset#1{%
- \ifcsname#1\endcsname
- \expandafter\ifx\csname#1\endcsname\relax
- \bbl@afterelse\expandafter\@firstoftwo
- \else
- \bbl@afterfi\expandafter\@secondoftwo
- \fi
- \else
- \expandafter\@firstoftwo
- \fi}}
-\endgroup
-\def\bbl@ifblank#1{%
- \bbl@ifblank@i#1\@nil\@nil\@secondoftwo\@firstoftwo\@nil}
-\long\def\bbl@ifblank@i#1#2\@nil#3#4#5\@nil{#4}
-\def\bbl@ifset#1#2#3{%
- \bbl@ifunset{#1}{#3}{\bbl@exp{\\\bbl@ifblank{\@nameuse{#1}}}{#3}{#2}}}
-\def\bbl@forkv#1#2{%
- \def\bbl@kvcmd##1##2##3{#2}%
- \bbl@kvnext#1,\@nil,}
-\def\bbl@kvnext#1,{%
- \ifx\@nil#1\relax\else
- \bbl@ifblank{#1}{}{\bbl@forkv@eq#1=\@empty=\@nil{#1}}%
- \expandafter\bbl@kvnext
- \fi}
-\def\bbl@forkv@eq#1=#2=#3\@nil#4{%
- \bbl@trim@def\bbl@forkv@a{#1}%
- \bbl@trim{\expandafter\bbl@kvcmd\expandafter{\bbl@forkv@a}}{#2}{#4}}
-\def\bbl@vforeach#1#2{%
- \def\bbl@forcmd##1{#2}%
- \bbl@fornext#1,\@nil,}
-\def\bbl@fornext#1,{%
- \ifx\@nil#1\relax\else
- \bbl@ifblank{#1}{}{\bbl@trim\bbl@forcmd{#1}}%
- \expandafter\bbl@fornext
- \fi}
-\def\bbl@foreach#1{\expandafter\bbl@vforeach\expandafter{#1}}
-\def\bbl@replace#1#2#3{% in #1 -> repl #2 by #3
- \toks@{}%
- \def\bbl@replace@aux##1#2##2#2{%
- \ifx\bbl@nil##2%
- \toks@\expandafter{\the\toks@##1}%
- \else
- \toks@\expandafter{\the\toks@##1#3}%
- \bbl@afterfi
- \bbl@replace@aux##2#2%
- \fi}%
- \expandafter\bbl@replace@aux#1#2\bbl@nil#2%
- \edef#1{\the\toks@}}
-\ifx\detokenize\@undefined\else % Unused macros if old Plain TeX
- \bbl@exp{\def\\\bbl@parsedef##1\detokenize{macro:}}#2->#3\relax{%
- \def\bbl@tempa{#1}%
- \def\bbl@tempb{#2}%
- \def\bbl@tempe{#3}}
- \def\bbl@sreplace#1#2#3{%
- \begingroup
- \expandafter\bbl@parsedef\meaning#1\relax
- \def\bbl@tempc{#2}%
- \edef\bbl@tempc{\expandafter\strip@prefix\meaning\bbl@tempc}%
- \def\bbl@tempd{#3}%
- \edef\bbl@tempd{\expandafter\strip@prefix\meaning\bbl@tempd}%
- \bbl@xin@{\bbl@tempc}{\bbl@tempe}% If not in macro, do nothing
- \ifin@
- \bbl@exp{\\\bbl@replace\\\bbl@tempe{\bbl@tempc}{\bbl@tempd}}%
- \def\bbl@tempc{% Expanded an executed below as 'uplevel'
- \\\makeatletter % "internal" macros with @ are assumed
- \\\scantokens{%
- \bbl@tempa\\\@namedef{\bbl@stripslash#1}\bbl@tempb{\bbl@tempe}}%
- \catcode64=\the\catcode64\relax}% Restore @
- \else
- \let\bbl@tempc\@empty % Not \relax
- \fi
- \bbl@exp{% For the 'uplevel' assignments
- \endgroup
- \bbl@tempc}} % empty or expand to set #1 with changes
-\fi
-\def\bbl@ifsamestring#1#2{%
- \begingroup
- \protected@edef\bbl@tempb{#1}%
- \edef\bbl@tempb{\expandafter\strip@prefix\meaning\bbl@tempb}%
- \protected@edef\bbl@tempc{#2}%
- \edef\bbl@tempc{\expandafter\strip@prefix\meaning\bbl@tempc}%
- \ifx\bbl@tempb\bbl@tempc
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \endgroup}
-\chardef\bbl@engine=%
- \ifx\directlua\@undefined
- \ifx\XeTeXinputencoding\@undefined
- \z@
- \else
- \tw@
- \fi
- \else
- \@ne
- \fi
-\def\bbl@bsphack{%
- \ifhmode
- \hskip\z@skip
- \def\bbl@esphack{\loop\ifdim\lastskip>\z@\unskip\repeat\unskip}%
- \else
- \let\bbl@esphack\@empty
- \fi}
-\def\bbl@cased{%
- \ifx\oe\OE
- \expandafter\in@\expandafter
- {\expandafter\OE\expandafter}\expandafter{\oe}%
- \ifin@
- \bbl@afterelse\expandafter\MakeUppercase
- \else
- \bbl@afterfi\expandafter\MakeLowercase
- \fi
- \else
- \expandafter\@firstofone
- \fi}
-\def\bbl@extras@wrap#1#2#3{% 1:in-test, 2:before, 3:after
- \toks@\expandafter\expandafter\expandafter{%
- \csname extras\languagename\endcsname}%
- \bbl@exp{\\\in@{#1}{\the\toks@}}%
- \ifin@\else
- \@temptokena{#2}%
- \edef\bbl@tempc{\the\@temptokena\the\toks@}%
- \toks@\expandafter{\bbl@tempc#3}%
- \expandafter\edef\csname extras\languagename\endcsname{\the\toks@}%
- \fi}
\bbl@trace{Compatibility with language.def}
\ifx\bbl@languages\@undefined
\ifx\directlua\@undefined
@@ -1165,7 +1134,7 @@
\newcommand\EnableBabelHook[1]{\bbl@csarg\let{hk@#1}\@firstofone}
\newcommand\DisableBabelHook[1]{\bbl@csarg\let{hk@#1}\@gobble}
\def\bbl@usehooks{\bbl@usehooks@lang\languagename}
-\def\bbl@usehooks@lang#1#2#3{%
+\def\bbl@usehooks@lang#1#2#3{% Test for Plain
\ifx\UseHook\@undefined\else\UseHook{babel/*/#2}\fi
\def\bbl@elth##1{%
\bbl@cs{hk@##1}{\bbl@cs{ev@##1@#2@}#3}}%
@@ -1182,7 +1151,7 @@
beforeextras=0,afterextras=0,stopcommands=0,stringprocess=0,%
hyphenation=2,initiateactive=3,afterreset=0,foreign=0,foreign*=0,%
beforestart=0,languagename=2,begindocument=1}
-\ifx\NewHook\@undefined\else
+\ifx\NewHook\@undefined\else % Test for Plain (?)
\def\bbl@tempa#1=#2\@@{\NewHook{babel/#1}}
\bbl@foreach\bbl@evargs{\bbl@tempa#1\@@}
\fi
@@ -1891,7 +1860,7 @@
\def\bbl@toglobal#1{\global\let#1#1}
\@ifpackagewith{babel}{nocase}%
{\let\bbl@patchuclc\relax}%
- {\def\bbl@patchuclc{%
+ {\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{%
@@ -2341,39 +2310,6 @@
\fi
\bbl@trace{Bidi layout}
\providecommand\IfBabelLayout[3]{#3}%
-\newcommand\BabelPatchSection[1]{%
- \@ifundefined{#1}{}{%
- \bbl@exp{\let\<bbl@ss@#1>\<#1>}%
- \@namedef{#1}{%
- \@ifstar{\bbl@presec@s{#1}}%
- {\@dblarg{\bbl@presec@x{#1}}}}}}
-\def\bbl@presec@x#1[#2]#3{%
- \bbl@exp{%
- \\\select@language@x{\bbl@main@language}%
- \\\bbl@cs{sspre@#1}%
- \\\bbl@cs{ss@#1}%
- [\\\foreignlanguage{\languagename}{\unexpanded{#2}}]%
- {\\\foreignlanguage{\languagename}{\unexpanded{#3}}}%
- \\\select@language@x{\languagename}}}
-\def\bbl@presec@s#1#2{%
- \bbl@exp{%
- \\\select@language@x{\bbl@main@language}%
- \\\bbl@cs{sspre@#1}%
- \\\bbl@cs{ss@#1}*%
- {\\\foreignlanguage{\languagename}{\unexpanded{#2}}}%
- \\\select@language@x{\languagename}}}
-\IfBabelLayout{sectioning}%
- {\BabelPatchSection{part}%
- \BabelPatchSection{chapter}%
- \BabelPatchSection{section}%
- \BabelPatchSection{subsection}%
- \BabelPatchSection{subsubsection}%
- \BabelPatchSection{paragraph}%
- \BabelPatchSection{subparagraph}%
- \def\babel@toc#1{%
- \select@language@x{\bbl@main@language}}}{}
-\IfBabelLayout{captions}%
- {\BabelPatchSection{caption}}{}
\bbl@trace{Input engine specific macros}
\ifcase\bbl@engine
\input txtbabel.def
@@ -2395,1396 +2331,6 @@
\let\babelpatterns\babelprehyphenation
\let\babelcharproperty\babelprehyphenation
\fi
-\bbl@trace{Creating languages and reading ini files}
-\let\bbl@extend@ini\@gobble
-\newcommand\babelprovide[2][]{%
- \let\bbl@savelangname\languagename
- \edef\bbl@savelocaleid{\the\localeid}%
- % Set name and locale id
- \edef\languagename{#2}%
- \bbl@id@assign
- % Initialize keys
- \bbl@vforeach{captions,date,import,main,script,language,%
- hyphenrules,linebreaking,justification,mapfont,maparabic,%
- mapdigits,intraspace,intrapenalty,onchar,transforms,alph,%
- Alph,labels,labels*,calendar,date,casing}%
- {\bbl@csarg\let{KVP@##1}\@nnil}%
- \global\let\bbl@release@transforms\@empty
- \let\bbl@calendars\@empty
- \global\let\bbl@inidata\@empty
- \global\let\bbl@extend@ini\@gobble
- \gdef\bbl@key@list{;}%
- \bbl@forkv{#1}{%
- \in@{/}{##1}% With /, (re)sets a value in the ini
- \ifin@
- \global\let\bbl@extend@ini\bbl@extend@ini@aux
- \bbl@renewinikey##1\@@{##2}%
- \else
- \bbl@csarg\ifx{KVP@##1}\@nnil\else
- \bbl@error
- {Unknown key '##1' in \string\babelprovide}%
- {See the manual for valid keys}%
- \fi
- \bbl@csarg\def{KVP@##1}{##2}%
- \fi}%
- \chardef\bbl@howloaded=% 0:none; 1:ldf without ini; 2:ini
- \bbl@ifunset{date#2}\z@{\bbl@ifunset{bbl@llevel@#2}\@ne\tw@}%
- % == init ==
- \ifx\bbl@screset\@undefined
- \bbl@ldfinit
- \fi
- % == date (as option) ==
- % \ifx\bbl@KVP@date\@nnil\else
- % \fi
- % ==
- \let\bbl@lbkflag\relax % \@empty = do setup linebreak, only in 3 cases:
- \ifcase\bbl@howloaded
- \let\bbl@lbkflag\@empty % new
- \else
- \ifx\bbl@KVP@hyphenrules\@nnil\else
- \let\bbl@lbkflag\@empty
- \fi
- \ifx\bbl@KVP@import\@nnil\else
- \let\bbl@lbkflag\@empty
- \fi
- \fi
- % == import, captions ==
- \ifx\bbl@KVP@import\@nnil\else
- \bbl@exp{\\\bbl@ifblank{\bbl@KVP@import}}%
- {\ifx\bbl@initoload\relax
- \begingroup
- \def\BabelBeforeIni##1##2{\gdef\bbl@KVP@import{##1}\endinput}%
- \bbl@input@texini{#2}%
- \endgroup
- \else
- \xdef\bbl@KVP@import{\bbl@initoload}%
- \fi}%
- {}%
- \let\bbl@KVP@date\@empty
- \fi
- \let\bbl@KVP@captions@@\bbl@KVP@captions % TODO. A dirty hack
- \ifx\bbl@KVP@captions\@nnil
- \let\bbl@KVP@captions\bbl@KVP@import
- \fi
- % ==
- \ifx\bbl@KVP@transforms\@nnil\else
- \bbl@replace\bbl@KVP@transforms{ }{,}%
- \fi
- % == Load ini ==
- \ifcase\bbl@howloaded
- \bbl@provide@new{#2}%
- \else
- \bbl@ifblank{#1}%
- {}% With \bbl@load@basic below
- {\bbl@provide@renew{#2}}%
- \fi
- % Post tasks
- % ----------
- % == subsequent calls after the first provide for a locale ==
- \ifx\bbl@inidata\@empty\else
- \bbl@extend@ini{#2}%
- \fi
- % == ensure captions ==
- \ifx\bbl@KVP@captions\@nnil\else
- \bbl@ifunset{bbl@extracaps@#2}%
- {\bbl@exp{\\\babelensure[exclude=\\\today]{#2}}}%
- {\bbl@exp{\\\babelensure[exclude=\\\today,
- include=\[bbl@extracaps@#2]}]{#2}}%
- \bbl@ifunset{bbl@ensure@\languagename}%
- {\bbl@exp{%
- \\\DeclareRobustCommand\<bbl@ensure@\languagename>[1]{%
- \\\foreignlanguage{\languagename}%
- {####1}}}}%
- {}%
- \bbl@exp{%
- \\\bbl@toglobal\<bbl@ensure@\languagename>%
- \\\bbl@toglobal\<bbl@ensure@\languagename\space>}%
- \fi
- % ==
- % At this point all parameters are defined if 'import'. Now we
- % execute some code depending on them. But what about if nothing was
- % imported? We just set the basic parameters, but still loading the
- % whole ini file.
- \bbl@load@basic{#2}%
- % == script, language ==
- % Override the values from ini or defines them
- \ifx\bbl@KVP@script\@nnil\else
- \bbl@csarg\edef{sname@#2}{\bbl@KVP@script}%
- \fi
- \ifx\bbl@KVP@language\@nnil\else
- \bbl@csarg\edef{lname@#2}{\bbl@KVP@language}%
- \fi
- \ifcase\bbl@engine\or
- \bbl@ifunset{bbl@chrng@\languagename}{}%
- {\directlua{
- Babel.set_chranges_b('\bbl@cl{sbcp}', '\bbl@cl{chrng}') }}%
- \fi
- % == onchar ==
- \ifx\bbl@KVP@onchar\@nnil\else
- \bbl@luahyphenate
- \bbl@exp{%
- \\\AddToHook{env/document/before}{{\\\select@language{#2}{}}}}%
- \directlua{
- if Babel.locale_mapped == nil then
- Babel.locale_mapped = true
- Babel.linebreaking.add_before(Babel.locale_map, 1)
- Babel.loc_to_scr = {}
- Babel.chr_to_loc = Babel.chr_to_loc or {}
- end
- Babel.locale_props[\the\localeid].letters = false
- }%
- \bbl@xin@{ letters }{ \bbl@KVP@onchar\space}%
- \ifin@
- \directlua{
- Babel.locale_props[\the\localeid].letters = true
- }%
- \fi
- \bbl@xin@{ ids }{ \bbl@KVP@onchar\space}%
- \ifin@
- \ifx\bbl@starthyphens\@undefined % Needed if no explicit selection
- \AddBabelHook{babel-onchar}{beforestart}{{\bbl@starthyphens}}%
- \fi
- \bbl@exp{\\\bbl@add\\\bbl@starthyphens
- {\\\bbl@patterns@lua{\languagename}}}%
- % TODO - error/warning if no script
- \directlua{
- if Babel.script_blocks['\bbl@cl{sbcp}'] then
- Babel.loc_to_scr[\the\localeid] =
- Babel.script_blocks['\bbl@cl{sbcp}']
- Babel.locale_props[\the\localeid].lc = \the\localeid\space
- Babel.locale_props[\the\localeid].lg = \the\@nameuse{l@\languagename}\space
- end
- }%
- \fi
- \bbl@xin@{ fonts }{ \bbl@KVP@onchar\space}%
- \ifin@
- \bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}%
- \bbl@ifunset{bbl@wdir@\languagename}{\bbl@provide@dirs{\languagename}}{}%
- \directlua{
- if Babel.script_blocks['\bbl@cl{sbcp}'] then
- Babel.loc_to_scr[\the\localeid] =
- Babel.script_blocks['\bbl@cl{sbcp}']
- end}%
- \ifx\bbl@mapselect\@undefined % TODO. almost the same as mapfont
- \AtBeginDocument{%
- \bbl@patchfont{{\bbl@mapselect}}%
- {\selectfont}}%
- \def\bbl@mapselect{%
- \let\bbl@mapselect\relax
- \edef\bbl@prefontid{\fontid\font}}%
- \def\bbl@mapdir##1{%
- {\def\languagename{##1}%
- \let\bbl@ifrestoring\@firstoftwo % To avoid font warning
- \bbl@switchfont
- \ifnum\fontid\font>\z@ % A hack, for the pgf nullfont hack
- \directlua{
- Babel.locale_props[\the\csname bbl@id@@##1\endcsname]%
- ['/\bbl@prefontid'] = \fontid\font\space}%
- \fi}}%
- \fi
- \bbl@exp{\\\bbl@add\\\bbl@mapselect{\\\bbl@mapdir{\languagename}}}%
- \fi
- % TODO - catch non-valid values
- \fi
- % == mapfont ==
- % For bidi texts, to switch the font based on direction
- \ifx\bbl@KVP@mapfont\@nnil\else
- \bbl@ifsamestring{\bbl@KVP@mapfont}{direction}{}%
- {\bbl@error{Option '\bbl@KVP@mapfont' unknown for\\%
- mapfont. Use 'direction'.%
- {See the manual for details.}}}%
- \bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}%
- \bbl@ifunset{bbl@wdir@\languagename}{\bbl@provide@dirs{\languagename}}{}%
- \ifx\bbl@mapselect\@undefined % TODO. See onchar.
- \AtBeginDocument{%
- \bbl@patchfont{{\bbl@mapselect}}%
- {\selectfont}}%
- \def\bbl@mapselect{%
- \let\bbl@mapselect\relax
- \edef\bbl@prefontid{\fontid\font}}%
- \def\bbl@mapdir##1{%
- {\def\languagename{##1}%
- \let\bbl@ifrestoring\@firstoftwo % avoid font warning
- \bbl@switchfont
- \directlua{Babel.fontmap
- [\the\csname bbl@wdir@##1\endcsname]%
- [\bbl@prefontid]=\fontid\font}}}%
- \fi
- \bbl@exp{\\\bbl@add\\\bbl@mapselect{\\\bbl@mapdir{\languagename}}}%
- \fi
- % == Line breaking: intraspace, intrapenalty ==
- % For CJK, East Asian, Southeast Asian, if interspace in ini
- \ifx\bbl@KVP@intraspace\@nnil\else % We can override the ini or set
- \bbl@csarg\edef{intsp@#2}{\bbl@KVP@intraspace}%
- \fi
- \bbl@provide@intraspace
- % == Line breaking: CJK quotes == TODO -> @extras
- \ifcase\bbl@engine\or
- \bbl@xin@{/c}{/\bbl@cl{lnbrk}}%
- \ifin@
- \bbl@ifunset{bbl@quote@\languagename}{}%
- {\directlua{
- Babel.locale_props[\the\localeid].cjk_quotes = {}
- local cs = 'op'
- for c in string.utfvalues(%
- [[\csname bbl@quote@\languagename\endcsname]]) do
- if Babel.cjk_characters[c].c == 'qu' then
- Babel.locale_props[\the\localeid].cjk_quotes[c] = cs
- end
- cs = ( cs == 'op') and 'cl' or 'op'
- end
- }}%
- \fi
- \fi
- % == Line breaking: justification ==
- \ifx\bbl@KVP@justification\@nnil\else
- \let\bbl@KVP@linebreaking\bbl@KVP@justification
- \fi
- \ifx\bbl@KVP@linebreaking\@nnil\else
- \bbl@xin@{,\bbl@KVP@linebreaking,}%
- {,elongated,kashida,cjk,padding,unhyphenated,}%
- \ifin@
- \bbl@csarg\xdef
- {lnbrk@\languagename}{\expandafter\@car\bbl@KVP@linebreaking\@nil}%
- \fi
- \fi
- \bbl@xin@{/e}{/\bbl@cl{lnbrk}}%
- \ifin@\else\bbl@xin@{/k}{/\bbl@cl{lnbrk}}\fi
- \ifin@\bbl@arabicjust\fi
- \bbl@xin@{/p}{/\bbl@cl{lnbrk}}%
- \ifin@\AtBeginDocument{\@nameuse{bbl@tibetanjust}}\fi
- % == Line breaking: hyphenate.other.(locale|script) ==
- \ifx\bbl@lbkflag\@empty
- \bbl@ifunset{bbl@hyotl@\languagename}{}%
- {\bbl@csarg\bbl@replace{hyotl@\languagename}{ }{,}%
- \bbl@startcommands*{\languagename}{}%
- \bbl@csarg\bbl@foreach{hyotl@\languagename}{%
- \ifcase\bbl@engine
- \ifnum##1<257
- \SetHyphenMap{\BabelLower{##1}{##1}}%
- \fi
- \else
- \SetHyphenMap{\BabelLower{##1}{##1}}%
- \fi}%
- \bbl@endcommands}%
- \bbl@ifunset{bbl@hyots@\languagename}{}%
- {\bbl@csarg\bbl@replace{hyots@\languagename}{ }{,}%
- \bbl@csarg\bbl@foreach{hyots@\languagename}{%
- \ifcase\bbl@engine
- \ifnum##1<257
- \global\lccode##1=##1\relax
- \fi
- \else
- \global\lccode##1=##1\relax
- \fi}}%
- \fi
- % == Counters: maparabic ==
- % Native digits, if provided in ini (TeX level, xe and lua)
- \ifcase\bbl@engine\else
- \bbl@ifunset{bbl@dgnat@\languagename}{}%
- {\expandafter\ifx\csname bbl@dgnat@\languagename\endcsname\@empty\else
- \expandafter\expandafter\expandafter
- \bbl@setdigits\csname bbl@dgnat@\languagename\endcsname
- \ifx\bbl@KVP@maparabic\@nnil\else
- \ifx\bbl@latinarabic\@undefined
- \expandafter\let\expandafter\@arabic
- \csname bbl@counter@\languagename\endcsname
- \else % ie, if layout=counters, which redefines \@arabic
- \expandafter\let\expandafter\bbl@latinarabic
- \csname bbl@counter@\languagename\endcsname
- \fi
- \fi
- \fi}%
- \fi
- % == Counters: mapdigits ==
- % > luababel.def
- % == Counters: alph, Alph ==
- \ifx\bbl@KVP@alph\@nnil\else
- \bbl@exp{%
- \\\bbl@add\<bbl@preextras@\languagename>{%
- \\\babel@save\\\@alph
- \let\\\@alph\<bbl@cntr@\bbl@KVP@alph @\languagename>}}%
- \fi
- \ifx\bbl@KVP@Alph\@nnil\else
- \bbl@exp{%
- \\\bbl@add\<bbl@preextras@\languagename>{%
- \\\babel@save\\\@Alph
- \let\\\@Alph\<bbl@cntr@\bbl@KVP@Alph @\languagename>}}%
- \fi
- % == Casing ==
- \bbl@exp{\def\<bbl@casing@\languagename>%
- {\<bbl@lbcp@\languagename>%
- \ifx\bbl@KVP@casing\@nnil\else-x-\bbl@KVP@casing\fi}}%
- % == Calendars ==
- \ifx\bbl@KVP@calendar\@nnil
- \edef\bbl@KVP@calendar{\bbl@cl{calpr}}%
- \fi
- \def\bbl@tempe##1 ##2\@@{% Get first calendar
- \def\bbl@tempa{##1}}%
- \bbl@exp{\\\bbl@tempe\bbl@KVP@calendar\space\\\@@}%
- \def\bbl@tempe##1.##2.##3\@@{%
- \def\bbl@tempc{##1}%
- \def\bbl@tempb{##2}}%
- \expandafter\bbl@tempe\bbl@tempa..\@@
- \bbl@csarg\edef{calpr@\languagename}{%
- \ifx\bbl@tempc\@empty\else
- calendar=\bbl@tempc
- \fi
- \ifx\bbl@tempb\@empty\else
- ,variant=\bbl@tempb
- \fi}%
- % == engine specific extensions ==
- % Defined in XXXbabel.def
- \bbl@provide@extra{#2}%
- % == require.babel in ini ==
- % To load or reaload the babel-*.tex, if require.babel in ini
- \ifx\bbl@beforestart\relax\else % But not in doc aux or body
- \bbl@ifunset{bbl@rqtex@\languagename}{}%
- {\expandafter\ifx\csname bbl@rqtex@\languagename\endcsname\@empty\else
- \let\BabelBeforeIni\@gobbletwo
- \chardef\atcatcode=\catcode`\@
- \catcode`\@=11\relax
- \bbl@input@texini{\bbl@cs{rqtex@\languagename}}%
- \catcode`\@=\atcatcode
- \let\atcatcode\relax
- \global\bbl@csarg\let{rqtex@\languagename}\relax
- \fi}%
- \bbl@foreach\bbl@calendars{%
- \bbl@ifunset{bbl@ca@##1}{%
- \chardef\atcatcode=\catcode`\@
- \catcode`\@=11\relax
- \InputIfFileExists{babel-ca-##1.tex}{}{}%
- \catcode`\@=\atcatcode
- \let\atcatcode\relax}%
- {}}%
- \fi
- % == frenchspacing ==
- \ifcase\bbl@howloaded\in@true\else\in@false\fi
- \ifin@\else\bbl@xin@{typography/frenchspacing}{\bbl@key@list}\fi
- \ifin@
- \bbl@extras@wrap{\\\bbl@pre@fs}%
- {\bbl@pre@fs}%
- {\bbl@post@fs}%
- \fi
- % == transforms ==
- % > luababel.def
- % == main ==
- \ifx\bbl@KVP@main\@nnil % Restore only if not 'main'
- \let\languagename\bbl@savelangname
- \chardef\localeid\bbl@savelocaleid\relax
- \fi
- % == hyphenrules (apply if current) ==
- \ifx\bbl@KVP@hyphenrules\@nnil\else
- \ifnum\bbl@savelocaleid=\localeid
- \language\@nameuse{l@\languagename}%
- \fi
- \fi}
-\def\bbl@provide@new#1{%
- \@namedef{date#1}{}% marks lang exists - required by \StartBabelCommands
- \@namedef{extras#1}{}%
- \@namedef{noextras#1}{}%
- \bbl@startcommands*{#1}{captions}%
- \ifx\bbl@KVP@captions\@nnil % and also if import, implicit
- \def\bbl@tempb##1{% elt for \bbl@captionslist
- \ifx##1\@empty\else
- \bbl@exp{%
- \\\SetString\\##1{%
- \\\bbl@nocaption{\bbl@stripslash##1}{#1\bbl@stripslash##1}}}%
- \expandafter\bbl@tempb
- \fi}%
- \expandafter\bbl@tempb\bbl@captionslist\@empty
- \else
- \ifx\bbl@initoload\relax
- \bbl@read@ini{\bbl@KVP@captions}2% % Here letters cat = 11
- \else
- \bbl@read@ini{\bbl@initoload}2% % Same
- \fi
- \fi
- \StartBabelCommands*{#1}{date}%
- \ifx\bbl@KVP@date\@nnil
- \bbl@exp{%
- \\\SetString\\\today{\\\bbl@nocaption{today}{#1today}}}%
- \else
- \bbl@savetoday
- \bbl@savedate
- \fi
- \bbl@endcommands
- \bbl@load@basic{#1}%
- % == hyphenmins == (only if new)
- \bbl@exp{%
- \gdef\<#1hyphenmins>{%
- {\bbl@ifunset{bbl@lfthm@#1}{2}{\bbl@cs{lfthm@#1}}}%
- {\bbl@ifunset{bbl@rgthm@#1}{3}{\bbl@cs{rgthm@#1}}}}}%
- % == hyphenrules (also in renew) ==
- \bbl@provide@hyphens{#1}%
- \ifx\bbl@KVP@main\@nnil\else
- \expandafter\main@language\expandafter{#1}%
- \fi}
-\def\bbl@provide@renew#1{%
- \ifx\bbl@KVP@captions\@nnil\else
- \StartBabelCommands*{#1}{captions}%
- \bbl@read@ini{\bbl@KVP@captions}2% % Here all letters cat = 11
- \EndBabelCommands
- \fi
- \ifx\bbl@KVP@date\@nnil\else
- \StartBabelCommands*{#1}{date}%
- \bbl@savetoday
- \bbl@savedate
- \EndBabelCommands
- \fi
- % == hyphenrules (also in new) ==
- \ifx\bbl@lbkflag\@empty
- \bbl@provide@hyphens{#1}%
- \fi}
-\def\bbl@load@basic#1{%
- \ifcase\bbl@howloaded\or\or
- \ifcase\csname bbl@llevel@\languagename\endcsname
- \bbl@csarg\let{lname@\languagename}\relax
- \fi
- \fi
- \bbl@ifunset{bbl@lname@#1}%
- {\def\BabelBeforeIni##1##2{%
- \begingroup
- \let\bbl@ini@captions@aux\@gobbletwo
- \def\bbl@inidate ####1.####2.####3.####4\relax ####5####6{}%
- \bbl@read@ini{##1}1%
- \ifx\bbl@initoload\relax\endinput\fi
- \endgroup}%
- \begingroup % boxed, to avoid extra spaces:
- \ifx\bbl@initoload\relax
- \bbl@input@texini{#1}%
- \else
- \setbox\z@\hbox{\BabelBeforeIni{\bbl@initoload}{}}%
- \fi
- \endgroup}%
- {}}
-\def\bbl@provide@hyphens#1{%
- \@tempcnta\m@ne % a flag
- \ifx\bbl@KVP@hyphenrules\@nnil\else
- \bbl@replace\bbl@KVP@hyphenrules{ }{,}%
- \bbl@foreach\bbl@KVP@hyphenrules{%
- \ifnum\@tempcnta=\m@ne % if not yet found
- \bbl@ifsamestring{##1}{+}%
- {\bbl@carg\addlanguage{l@##1}}%
- {}%
- \bbl@ifunset{l@##1}% After a possible +
- {}%
- {\@tempcnta\@nameuse{l@##1}}%
- \fi}%
- \ifnum\@tempcnta=\m@ne
- \bbl@warning{%
- Requested 'hyphenrules' for '\languagename' not found:\\%
- \bbl@KVP@hyphenrules.\\%
- Using the default value. Reported}%
- \fi
- \fi
- \ifnum\@tempcnta=\m@ne % if no opt or no language in opt found
- \ifx\bbl@KVP@captions@@\@nnil % TODO. Hackish. See above.
- \bbl@ifunset{bbl@hyphr@#1}{}% use value in ini, if exists
- {\bbl@exp{\\\bbl@ifblank{\bbl@cs{hyphr@#1}}}%
- {}%
- {\bbl@ifunset{l@\bbl@cl{hyphr}}%
- {}% if hyphenrules found:
- {\@tempcnta\@nameuse{l@\bbl@cl{hyphr}}}}}%
- \fi
- \fi
- \bbl@ifunset{l@#1}%
- {\ifnum\@tempcnta=\m@ne
- \bbl@carg\adddialect{l@#1}\language
- \else
- \bbl@carg\adddialect{l@#1}\@tempcnta
- \fi}%
- {\ifnum\@tempcnta=\m@ne\else
- \global\bbl@carg\chardef{l@#1}\@tempcnta
- \fi}}
-\def\bbl@input@texini#1{%
- \bbl@bsphack
- \bbl@exp{%
- \catcode`\\\%=14 \catcode`\\\\=0
- \catcode`\\\{=1 \catcode`\\\}=2
- \lowercase{\\\InputIfFileExists{babel-#1.tex}{}{}}%
- \catcode`\\\%=\the\catcode`\%\relax
- \catcode`\\\\=\the\catcode`\\\relax
- \catcode`\\\{=\the\catcode`\{\relax
- \catcode`\\\}=\the\catcode`\}\relax}%
- \bbl@esphack}
-\def\bbl@iniline#1\bbl@iniline{%
- \@ifnextchar[\bbl@inisect{\@ifnextchar;\bbl@iniskip\bbl@inistore}#1\@@}% ]
-\def\bbl@inisect[#1]#2\@@{\def\bbl@section{#1}}
-\def\bbl@iniskip#1\@@{}% if starts with ;
-\def\bbl@inistore#1=#2\@@{% full (default)
- \bbl@trim@def\bbl@tempa{#1}%
- \bbl@trim\toks@{#2}%
- \bbl@xin@{;\bbl@section/\bbl@tempa;}{\bbl@key@list}%
- \ifin@\else
- \bbl@xin@{,identification/include.}%
- {,\bbl@section/\bbl@tempa}%
- \ifin@\edef\bbl@required@inis{\the\toks@}\fi
- \bbl@exp{%
- \\\g@addto@macro\\\bbl@inidata{%
- \\\bbl@elt{\bbl@section}{\bbl@tempa}{\the\toks@}}}%
- \fi}
-\def\bbl@inistore@min#1=#2\@@{% minimal (maybe set in \bbl@read@ini)
- \bbl@trim@def\bbl@tempa{#1}%
- \bbl@trim\toks@{#2}%
- \bbl@xin@{.identification.}{.\bbl@section.}%
- \ifin@
- \bbl@exp{\\\g@addto@macro\\\bbl@inidata{%
- \\\bbl@elt{identification}{\bbl@tempa}{\the\toks@}}}%
- \fi}
-\def\bbl@loop@ini{%
- \loop
- \if T\ifeof\bbl@readstream F\fi T\relax % Trick, because inside \loop
- \endlinechar\m@ne
- \read\bbl@readstream to \bbl@line
- \endlinechar`\^^M
- \ifx\bbl@line\@empty\else
- \expandafter\bbl@iniline\bbl@line\bbl@iniline
- \fi
- \repeat}
-\ifx\bbl@readstream\@undefined
- \csname newread\endcsname\bbl@readstream
-\fi
-\def\bbl@read@ini#1#2{%
- \global\let\bbl@extend@ini\@gobble
- \openin\bbl@readstream=babel-#1.ini
- \ifeof\bbl@readstream
- \bbl@error
- {There is no ini file for the requested language\\%
- (#1: \languagename). Perhaps you misspelled it or your\\%
- installation is not complete.}%
- {Fix the name or reinstall babel.}%
- \else
- % == Store ini data in \bbl@inidata ==
- \catcode`\[=12 \catcode`\]=12 \catcode`\==12 \catcode`\&=12
- \catcode`\;=12 \catcode`\|=12 \catcode`\%=14 \catcode`\-=12
- \bbl@info{Importing
- \ifcase#2font and identification \or basic \fi
- data for \languagename\\%
- from babel-#1.ini. Reported}%
- \ifnum#2=\z@
- \global\let\bbl@inidata\@empty
- \let\bbl@inistore\bbl@inistore@min % Remember it's local
- \fi
- \def\bbl@section{identification}%
- \let\bbl@required@inis\@empty
- \bbl@exp{\\\bbl@inistore tag.ini=#1\\\@@}%
- \bbl@inistore load.level=#2\@@
- \bbl@loop@ini
- \ifx\bbl@required@inis\@empty\else
- \bbl@replace\bbl@required@inis{ }{,}%
- \bbl@foreach\bbl@required@inis{%
- \openin\bbl@readstream=babel-##1.ini
- \bbl@loop@ini}%
- \fi
- % == Process stored data ==
- \bbl@csarg\xdef{lini@\languagename}{#1}%
- \bbl@read@ini@aux
- % == 'Export' data ==
- \bbl@ini@exports{#2}%
- \global\bbl@csarg\let{inidata@\languagename}\bbl@inidata
- \global\let\bbl@inidata\@empty
- \bbl@exp{\\\bbl@add@list\\\bbl@ini@loaded{\languagename}}%
- \bbl@toglobal\bbl@ini@loaded
- \fi
- \closein\bbl@readstream}
-\def\bbl@read@ini@aux{%
- \let\bbl@savestrings\@empty
- \let\bbl@savetoday\@empty
- \let\bbl@savedate\@empty
- \def\bbl@elt##1##2##3{%
- \def\bbl@section{##1}%
- \in@{=date.}{=##1}% Find a better place
- \ifin@
- \bbl@ifunset{bbl@inikv@##1}%
- {\bbl@ini@calendar{##1}}%
- {}%
- \fi
- \bbl@ifunset{bbl@inikv@##1}{}%
- {\csname bbl@inikv@##1\endcsname{##2}{##3}}}%
- \bbl@inidata}
-\def\bbl@extend@ini@aux#1{%
- \bbl@startcommands*{#1}{captions}%
- % Activate captions/... and modify exports
- \bbl@csarg\def{inikv@captions.licr}##1##2{%
- \setlocalecaption{#1}{##1}{##2}}%
- \def\bbl@inikv@captions##1##2{%
- \bbl@ini@captions@aux{##1}{##2}}%
- \def\bbl@stringdef##1##2{\gdef##1{##2}}%
- \def\bbl@exportkey##1##2##3{%
- \bbl@ifunset{bbl@@kv@##2}{}%
- {\expandafter\ifx\csname bbl@@kv@##2\endcsname\@empty\else
- \bbl@exp{\global\let\<bbl@##1@\languagename>\<bbl@@kv@##2>}%
- \fi}}%
- % As with \bbl@read@ini, but with some changes
- \bbl@read@ini@aux
- \bbl@ini@exports\tw@
- % Update inidata@lang by pretending the ini is read.
- \def\bbl@elt##1##2##3{%
- \def\bbl@section{##1}%
- \bbl@iniline##2=##3\bbl@iniline}%
- \csname bbl@inidata@#1\endcsname
- \global\bbl@csarg\let{inidata@#1}\bbl@inidata
- \StartBabelCommands*{#1}{date}% And from the import stuff
- \def\bbl@stringdef##1##2{\gdef##1{##2}}%
- \bbl@savetoday
- \bbl@savedate
- \bbl@endcommands}
-\def\bbl@ini@calendar#1{%
- \lowercase{\def\bbl@tempa{=#1=}}%
- \bbl@replace\bbl@tempa{=date.gregorian}{}%
- \bbl@replace\bbl@tempa{=date.}{}%
- \in@{.licr=}{#1=}%
- \ifin@
- \ifcase\bbl@engine
- \bbl@replace\bbl@tempa{.licr=}{}%
- \else
- \let\bbl@tempa\relax
- \fi
- \fi
- \ifx\bbl@tempa\relax\else
- \bbl@replace\bbl@tempa{=}{}%
- \ifx\bbl@tempa\@empty\else
- \xdef\bbl@calendars{\bbl@calendars,\bbl@tempa}%
- \fi
- \bbl@exp{%
- \def\<bbl@inikv@#1>####1####2{%
- \\\bbl@inidate####1...\relax{####2}{\bbl@tempa}}}%
- \fi}
-\def\bbl@renewinikey#1/#2\@@#3{%
- \edef\bbl@tempa{\zap@space #1 \@empty}% section
- \edef\bbl@tempb{\zap@space #2 \@empty}% key
- \bbl@trim\toks@{#3}% value
- \bbl@exp{%
- \edef\\\bbl@key@list{\bbl@key@list \bbl@tempa/\bbl@tempb;}%
- \\\g@addto@macro\\\bbl@inidata{%
- \\\bbl@elt{\bbl@tempa}{\bbl@tempb}{\the\toks@}}}}%
-\def\bbl@exportkey#1#2#3{%
- \bbl@ifunset{bbl@@kv@#2}%
- {\bbl@csarg\gdef{#1@\languagename}{#3}}%
- {\expandafter\ifx\csname bbl@@kv@#2\endcsname\@empty
- \bbl@csarg\gdef{#1@\languagename}{#3}%
- \else
- \bbl@exp{\global\let\<bbl@#1@\languagename>\<bbl@@kv@#2>}%
- \fi}}
-\def\bbl@iniwarning#1{%
- \bbl@ifunset{bbl@@kv@identification.warning#1}{}%
- {\bbl@warning{%
- From babel-\bbl@cs{lini@\languagename}.ini:\\%
- \bbl@cs{@kv@identification.warning#1}\\%
- Reported }}}
-\let\bbl@release@transforms\@empty
-\def\bbl@ini@exports#1{%
- % Identification always exported
- \bbl@iniwarning{}%
- \ifcase\bbl@engine
- \bbl@iniwarning{.pdflatex}%
- \or
- \bbl@iniwarning{.lualatex}%
- \or
- \bbl@iniwarning{.xelatex}%
- \fi%
- \bbl@exportkey{llevel}{identification.load.level}{}%
- \bbl@exportkey{elname}{identification.name.english}{}%
- \bbl@exp{\\\bbl@exportkey{lname}{identification.name.opentype}%
- {\csname bbl@elname@\languagename\endcsname}}%
- \bbl@exportkey{tbcp}{identification.tag.bcp47}{}%
- \bbl@exportkey{lbcp}{identification.language.tag.bcp47}{}%
- % Somewhat hackish. TODO
- \bbl@exportkey{casing}{identification.language.tag.bcp47}{}%
- \bbl@exportkey{lotf}{identification.tag.opentype}{dflt}%
- \bbl@exportkey{esname}{identification.script.name}{}%
- \bbl@exp{\\\bbl@exportkey{sname}{identification.script.name.opentype}%
- {\csname bbl@esname@\languagename\endcsname}}%
- \bbl@exportkey{sbcp}{identification.script.tag.bcp47}{}%
- \bbl@exportkey{sotf}{identification.script.tag.opentype}{DFLT}%
- \bbl@exportkey{rbcp}{identification.region.tag.bcp47}{}%
- \bbl@exportkey{vbcp}{identification.variant.tag.bcp47}{}%
- \bbl@exportkey{extt}{identification.extension.t.tag.bcp47}{}%
- \bbl@exportkey{extu}{identification.extension.u.tag.bcp47}{}%
- \bbl@exportkey{extx}{identification.extension.x.tag.bcp47}{}%
- % Also maps bcp47 -> languagename
- \ifbbl@bcptoname
- \bbl@csarg\xdef{bcp@map@\bbl@cl{tbcp}}{\languagename}%
- \fi
- % Conditional
- \ifnum#1>\z@ % 0 = only info, 1, 2 = basic, (re)new
- \bbl@exportkey{calpr}{date.calendar.preferred}{}%
- \bbl@exportkey{lnbrk}{typography.linebreaking}{h}%
- \bbl@exportkey{hyphr}{typography.hyphenrules}{}%
- \bbl@exportkey{lfthm}{typography.lefthyphenmin}{2}%
- \bbl@exportkey{rgthm}{typography.righthyphenmin}{3}%
- \bbl@exportkey{prehc}{typography.prehyphenchar}{}%
- \bbl@exportkey{hyotl}{typography.hyphenate.other.locale}{}%
- \bbl@exportkey{hyots}{typography.hyphenate.other.script}{}%
- \bbl@exportkey{intsp}{typography.intraspace}{}%
- \bbl@exportkey{frspc}{typography.frenchspacing}{u}%
- \bbl@exportkey{chrng}{characters.ranges}{}%
- \bbl@exportkey{quote}{characters.delimiters.quotes}{}%
- \bbl@exportkey{dgnat}{numbers.digits.native}{}%
- \ifnum#1=\tw@ % only (re)new
- \bbl@exportkey{rqtex}{identification.require.babel}{}%
- \bbl@toglobal\bbl@savetoday
- \bbl@toglobal\bbl@savedate
- \bbl@savestrings
- \fi
- \fi}
-\def\bbl@inikv#1#2{% key=value
- \toks@{#2}% This hides #'s from ini values
- \bbl@csarg\edef{@kv@\bbl@section.#1}{\the\toks@}}
-\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@inikv@counters#1#2{%
- \bbl@ifsamestring{#1}{digits}%
- {\bbl@error{The counter name 'digits' is reserved for mapping\\%
- decimal digits}%
- {Use another name.}}%
- {}%
- \def\bbl@tempc{#1}%
- \bbl@trim@def{\bbl@tempb*}{#2}%
- \in@{.1$}{#1$}%
- \ifin@
- \bbl@replace\bbl@tempc{.1}{}%
- \bbl@csarg\protected@xdef{cntr@\bbl@tempc @\languagename}{%
- \noexpand\bbl@alphnumeral{\bbl@tempc}}%
- \fi
- \in@{.F.}{#1}%
- \ifin@\else\in@{.S.}{#1}\fi
- \ifin@
- \bbl@csarg\protected@xdef{cntr@#1@\languagename}{\bbl@tempb*}%
- \else
- \toks@{}% Required by \bbl@buildifcase, which returns \bbl@tempa
- \expandafter\bbl@buildifcase\bbl@tempb* \\ % Space after \\
- \bbl@csarg{\global\expandafter\let}{cntr@#1@\languagename}\bbl@tempa
- \fi}
-\ifcase\bbl@engine
- \bbl@csarg\def{inikv@captions.licr}#1#2{%
- \bbl@ini@captions@aux{#1}{#2}}
-\else
- \def\bbl@inikv@captions#1#2{%
- \bbl@ini@captions@aux{#1}{#2}}
-\fi
-\def\bbl@ini@captions@template#1#2{% string language tempa=capt-name
- \bbl@replace\bbl@tempa{.template}{}%
- \def\bbl@toreplace{#1{}}%
- \bbl@replace\bbl@toreplace{[ ]}{\nobreakspace{}}%
- \bbl@replace\bbl@toreplace{[[}{\csname}%
- \bbl@replace\bbl@toreplace{[}{\csname the}%
- \bbl@replace\bbl@toreplace{]]}{name\endcsname{}}%
- \bbl@replace\bbl@toreplace{]}{\endcsname{}}%
- \bbl@xin@{,\bbl@tempa,}{,chapter,appendix,part,}%
- \ifin@
- \@nameuse{bbl@patch\bbl@tempa}%
- \global\bbl@csarg\let{\bbl@tempa fmt@#2}\bbl@toreplace
- \fi
- \bbl@xin@{,\bbl@tempa,}{,figure,table,}%
- \ifin@
- \global\bbl@csarg\let{\bbl@tempa fmt@#2}\bbl@toreplace
- \bbl@exp{\gdef\<fnum@\bbl@tempa>{%
- \\\bbl@ifunset{bbl@\bbl@tempa fmt@\\\languagename}%
- {\[fnum@\bbl@tempa]}%
- {\\\@nameuse{bbl@\bbl@tempa fmt@\\\languagename}}}}%
- \fi}
-\def\bbl@ini@captions@aux#1#2{%
- \bbl@trim@def\bbl@tempa{#1}%
- \bbl@xin@{.template}{\bbl@tempa}%
- \ifin@
- \bbl@ini@captions@template{#2}\languagename
- \else
- \bbl@ifblank{#2}%
- {\bbl@exp{%
- \toks@{\\\bbl@nocaption{\bbl@tempa}{\languagename\bbl@tempa name}}}}%
- {\bbl@trim\toks@{#2}}%
- \bbl@exp{%
- \\\bbl@add\\\bbl@savestrings{%
- \\\SetString\<\bbl@tempa name>{\the\toks@}}}%
- \toks@\expandafter{\bbl@captionslist}%
- \bbl@exp{\\\in@{\<\bbl@tempa name>}{\the\toks@}}%
- \ifin@\else
- \bbl@exp{%
- \\\bbl@add\<bbl@extracaps@\languagename>{\<\bbl@tempa name>}%
- \\\bbl@toglobal\<bbl@extracaps@\languagename>}%
- \fi
- \fi}
-\def\bbl@list@the{%
- part,chapter,section,subsection,subsubsection,paragraph,%
- subparagraph,enumi,enumii,enumiii,enumiv,equation,figure,%
- table,page,footnote,mpfootnote,mpfn}
-\def\bbl@map@cnt#1{% #1:roman,etc, // #2:enumi,etc
- \bbl@ifunset{bbl@map@#1@\languagename}%
- {\@nameuse{#1}}%
- {\@nameuse{bbl@map@#1@\languagename}}}
-\def\bbl@inikv@labels#1#2{%
- \in@{.map}{#1}%
- \ifin@
- \ifx\bbl@KVP@labels\@nnil\else
- \bbl@xin@{ map }{ \bbl@KVP@labels\space}%
- \ifin@
- \def\bbl@tempc{#1}%
- \bbl@replace\bbl@tempc{.map}{}%
- \in@{,#2,}{,arabic,roman,Roman,alph,Alph,fnsymbol,}%
- \bbl@exp{%
- \gdef\<bbl@map@\bbl@tempc @\languagename>%
- {\ifin@\<#2>\else\\\localecounter{#2}\fi}}%
- \bbl@foreach\bbl@list@the{%
- \bbl@ifunset{the##1}{}%
- {\bbl@exp{\let\\\bbl@tempd\<the##1>}%
- \bbl@exp{%
- \\\bbl@sreplace\<the##1>%
- {\<\bbl@tempc>{##1}}{\\\bbl@map@cnt{\bbl@tempc}{##1}}%
- \\\bbl@sreplace\<the##1>%
- {\<\@empty @\bbl@tempc>\<c@##1>}{\\\bbl@map@cnt{\bbl@tempc}{##1}}}%
- \expandafter\ifx\csname the##1\endcsname\bbl@tempd\else
- \toks@\expandafter\expandafter\expandafter{%
- \csname the##1\endcsname}%
- \expandafter\xdef\csname the##1\endcsname{{\the\toks@}}%
- \fi}}%
- \fi
- \fi
- %
- \else
- %
- % The following code is still under study. You can test it and make
- % suggestions. Eg, enumerate.2 = ([enumi]).([enumii]). It's
- % language dependent.
- \in@{enumerate.}{#1}%
- \ifin@
- \def\bbl@tempa{#1}%
- \bbl@replace\bbl@tempa{enumerate.}{}%
- \def\bbl@toreplace{#2}%
- \bbl@replace\bbl@toreplace{[ ]}{\nobreakspace{}}%
- \bbl@replace\bbl@toreplace{[}{\csname the}%
- \bbl@replace\bbl@toreplace{]}{\endcsname{}}%
- \toks@\expandafter{\bbl@toreplace}%
- % TODO. Execute only once:
- \bbl@exp{%
- \\\bbl@add\<extras\languagename>{%
- \\\babel@save\<labelenum\romannumeral\bbl@tempa>%
- \def\<labelenum\romannumeral\bbl@tempa>{\the\toks@}}%
- \\\bbl@toglobal\<extras\languagename>}%
- \fi
- \fi}
-\def\bbl@chaptype{chapter}
-\ifx\@makechapterhead\@undefined
- \let\bbl@patchchapter\relax
-\else\ifx\thechapter\@undefined
- \let\bbl@patchchapter\relax
-\else\ifx\ps@headings\@undefined
- \let\bbl@patchchapter\relax
-\else
- \def\bbl@patchchapter{%
- \global\let\bbl@patchchapter\relax
- \gdef\bbl@chfmt{%
- \bbl@ifunset{bbl@\bbl@chaptype fmt@\languagename}%
- {\@chapapp\space\thechapter}
- {\@nameuse{bbl@\bbl@chaptype fmt@\languagename}}}
- \bbl@add\appendix{\def\bbl@chaptype{appendix}}% Not harmful, I hope
- \bbl@sreplace\ps@headings{\@chapapp\ \thechapter}{\bbl@chfmt}%
- \bbl@sreplace\chaptermark{\@chapapp\ \thechapter}{\bbl@chfmt}%
- \bbl@sreplace\@makechapterhead{\@chapapp\space\thechapter}{\bbl@chfmt}%
- \bbl@toglobal\appendix
- \bbl@toglobal\ps@headings
- \bbl@toglobal\chaptermark
- \bbl@toglobal\@makechapterhead}
- \let\bbl@patchappendix\bbl@patchchapter
-\fi\fi\fi
-\ifx\@part\@undefined
- \let\bbl@patchpart\relax
-\else
- \def\bbl@patchpart{%
- \global\let\bbl@patchpart\relax
- \gdef\bbl@partformat{%
- \bbl@ifunset{bbl@partfmt@\languagename}%
- {\partname\nobreakspace\thepart}
- {\@nameuse{bbl@partfmt@\languagename}}}
- \bbl@sreplace\@part{\partname\nobreakspace\thepart}{\bbl@partformat}%
- \bbl@toglobal\@part}
-\fi
-\let\bbl@calendar\@empty
-\DeclareRobustCommand\localedate[1][]{\bbl@localedate{#1}}
-\def\bbl@localedate#1#2#3#4{%
- \begingroup
- \edef\bbl@they{#2}%
- \edef\bbl@them{#3}%
- \edef\bbl@thed{#4}%
- \edef\bbl@tempe{%
- \bbl@ifunset{bbl@calpr@\languagename}{}{\bbl@cl{calpr}},%
- #1}%
- \bbl@replace\bbl@tempe{ }{}%
- \bbl@replace\bbl@tempe{CONVERT}{convert=}% Hackish
- \bbl@replace\bbl@tempe{convert}{convert=}%
- \let\bbl@ld@calendar\@empty
- \let\bbl@ld@variant\@empty
- \let\bbl@ld@convert\relax
- \def\bbl@tempb##1=##2\@@{\@namedef{bbl@ld@##1}{##2}}%
- \bbl@foreach\bbl@tempe{\bbl@tempb##1\@@}%
- \bbl@replace\bbl@ld@calendar{gregorian}{}%
- \ifx\bbl@ld@calendar\@empty\else
- \ifx\bbl@ld@convert\relax\else
- \babelcalendar[\bbl@they-\bbl@them-\bbl@thed]%
- {\bbl@ld@calendar}\bbl@they\bbl@them\bbl@thed
- \fi
- \fi
- \@nameuse{bbl@precalendar}% Remove, eg, +, -civil (-ca-islamic)
- \edef\bbl@calendar{% Used in \month..., too
- \bbl@ld@calendar
- \ifx\bbl@ld@variant\@empty\else
- .\bbl@ld@variant
- \fi}%
- \bbl@cased
- {\@nameuse{bbl@date@\languagename @\bbl@calendar}%
- \bbl@they\bbl@them\bbl@thed}%
- \endgroup}
-\def\bbl@inidate#1.#2.#3.#4\relax#5#6{% TODO - ignore with 'captions'
- \bbl@trim@def\bbl@tempa{#1.#2}%
- \bbl@ifsamestring{\bbl@tempa}{months.wide}% to savedate
- {\bbl@trim@def\bbl@tempa{#3}%
- \bbl@trim\toks@{#5}%
- \@temptokena\expandafter{\bbl@savedate}%
- \bbl@exp{% Reverse order - in ini last wins
- \def\\\bbl@savedate{%
- \\\SetString\<month\romannumeral\bbl@tempa#6name>{\the\toks@}%
- \the\@temptokena}}}%
- {\bbl@ifsamestring{\bbl@tempa}{date.long}% defined now
- {\lowercase{\def\bbl@tempb{#6}}%
- \bbl@trim@def\bbl@toreplace{#5}%
- \bbl@TG@@date
- \global\bbl@csarg\let{date@\languagename @\bbl@tempb}\bbl@toreplace
- \ifx\bbl@savetoday\@empty
- \bbl@exp{% TODO. Move to a better place.
- \\\AfterBabelCommands{%
- \def\<\languagename date>{\\\protect\<\languagename date >}%
- \\\newcommand\<\languagename date >[4][]{%
- \\\bbl@usedategrouptrue
- \<bbl@ensure@\languagename>{%
- \\\localedate[####1]{####2}{####3}{####4}}}}%
- \def\\\bbl@savetoday{%
- \\\SetString\\\today{%
- \<\languagename date>[convert]%
- {\\\the\year}{\\\the\month}{\\\the\day}}}}%
- \fi}%
- {}}}
-\let\bbl@calendar\@empty
-\newcommand\babelcalendar[2][\the\year-\the\month-\the\day]{%
- \@nameuse{bbl@ca@#2}#1\@@}
-\newcommand\BabelDateSpace{\nobreakspace}
-\newcommand\BabelDateDot{.\@} % TODO. \let instead of repeating
-\newcommand\BabelDated[1]{{\number#1}}
-\newcommand\BabelDatedd[1]{{\ifnum#1<10 0\fi\number#1}}
-\newcommand\BabelDateM[1]{{\number#1}}
-\newcommand\BabelDateMM[1]{{\ifnum#1<10 0\fi\number#1}}
-\newcommand\BabelDateMMMM[1]{{%
- \csname month\romannumeral#1\bbl@calendar name\endcsname}}%
-\newcommand\BabelDatey[1]{{\number#1}}%
-\newcommand\BabelDateyy[1]{{%
- \ifnum#1<10 0\number#1 %
- \else\ifnum#1<100 \number#1 %
- \else\ifnum#1<1000 \expandafter\@gobble\number#1 %
- \else\ifnum#1<10000 \expandafter\@gobbletwo\number#1 %
- \else
- \bbl@error
- {Currently two-digit years are restricted to the\\
- range 0-9999.}%
- {There is little you can do. Sorry.}%
- \fi\fi\fi\fi}}
-\newcommand\BabelDateyyyy[1]{{\number#1}} % TODO - add leading 0
-\def\bbl@replace@finish@iii#1{%
- \bbl@exp{\def\\#1####1####2####3{\the\toks@}}}
-\def\bbl@TG@@date{%
- \bbl@replace\bbl@toreplace{[ ]}{\BabelDateSpace{}}%
- \bbl@replace\bbl@toreplace{[.]}{\BabelDateDot{}}%
- \bbl@replace\bbl@toreplace{[d]}{\BabelDated{####3}}%
- \bbl@replace\bbl@toreplace{[dd]}{\BabelDatedd{####3}}%
- \bbl@replace\bbl@toreplace{[M]}{\BabelDateM{####2}}%
- \bbl@replace\bbl@toreplace{[MM]}{\BabelDateMM{####2}}%
- \bbl@replace\bbl@toreplace{[MMMM]}{\BabelDateMMMM{####2}}%
- \bbl@replace\bbl@toreplace{[y]}{\BabelDatey{####1}}%
- \bbl@replace\bbl@toreplace{[yy]}{\BabelDateyy{####1}}%
- \bbl@replace\bbl@toreplace{[yyyy]}{\BabelDateyyyy{####1}}%
- \bbl@replace\bbl@toreplace{[y|}{\bbl@datecntr[####1|}%
- \bbl@replace\bbl@toreplace{[m|}{\bbl@datecntr[####2|}%
- \bbl@replace\bbl@toreplace{[d|}{\bbl@datecntr[####3|}%
- \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{%
- #1[#2]{#3}{#4}{#5}}
-\begingroup % A hack. TODO. Don't require an specific order
- \catcode`\%=12
- \catcode`\&=14
- \gdef\bbl@transforms#1#2#3{&%
- \directlua{
- local str = [==[#2]==]
- str = str:gsub('%.%d+%.%d+$', '')
- token.set_macro('babeltempa', str)
- }&%
- \def\babeltempc{}&%
- \bbl@xin@{,\babeltempa,}{,\bbl@KVP@transforms,}&%
- \ifin@\else
- \bbl@xin@{:\babeltempa,}{,\bbl@KVP@transforms,}&%
- \fi
- \ifin@
- \bbl@foreach\bbl@KVP@transforms{&%
- \bbl@xin@{:\babeltempa,}{,##1,}&%
- \ifin@ &% font:font:transform syntax
- \directlua{
- local t = {}
- for m in string.gmatch('##1'..':', '(.-):') do
- table.insert(t, m)
- end
- table.remove(t)
- token.set_macro('babeltempc', ',fonts=' .. table.concat(t, ' '))
- }&%
- \fi}&%
- \in@{.0$}{#2$}&%
- \ifin@
- \directlua{&% (\attribute) syntax
- local str = string.match([[\bbl@KVP@transforms]],
- '%(([^%(]-)%)[^%)]-\babeltempa')
- if str == nil then
- token.set_macro('babeltempb', '')
- else
- token.set_macro('babeltempb', ',attribute=' .. str)
- end
- }&%
- \toks@{#3}&%
- \bbl@exp{&%
- \\\g@addto@macro\\\bbl@release@transforms{&%
- \relax &% Closes previous \bbl@transforms@aux
- \\\bbl@transforms@aux
- \\#1{label=\babeltempa\babeltempb\babeltempc}&%
- {\languagename}{\the\toks@}}}&%
- \else
- \g@addto@macro\bbl@release@transforms{, {#3}}&%
- \fi
- \fi}
-\endgroup
-\def\bbl@provide@lsys#1{%
- \bbl@ifunset{bbl@lname@#1}%
- {\bbl@load@info{#1}}%
- {}%
- \bbl@csarg\let{lsys@#1}\@empty
- \bbl@ifunset{bbl@sname@#1}{\bbl@csarg\gdef{sname@#1}{Default}}{}%
- \bbl@ifunset{bbl@sotf@#1}{\bbl@csarg\gdef{sotf@#1}{DFLT}}{}%
- \bbl@csarg\bbl@add@list{lsys@#1}{Script=\bbl@cs{sname@#1}}%
- \bbl@ifunset{bbl@lname@#1}{}%
- {\bbl@csarg\bbl@add@list{lsys@#1}{Language=\bbl@cs{lname@#1}}}%
- \ifcase\bbl@engine\or\or
- \bbl@ifunset{bbl@prehc@#1}{}%
- {\bbl@exp{\\\bbl@ifblank{\bbl@cs{prehc@#1}}}%
- {}%
- {\ifx\bbl@xenohyph\@undefined
- \global\let\bbl@xenohyph\bbl@xenohyph@d
- \ifx\AtBeginDocument\@notprerr
- \expandafter\@secondoftwo % to execute right now
- \fi
- \AtBeginDocument{%
- \bbl@patchfont{\bbl@xenohyph}%
- \expandafter\select@language\expandafter{\languagename}}%
- \fi}}%
- \fi
- \bbl@csarg\bbl@toglobal{lsys@#1}}
-\def\bbl@xenohyph@d{%
- \bbl@ifset{bbl@prehc@\languagename}%
- {\ifnum\hyphenchar\font=\defaulthyphenchar
- \iffontchar\font\bbl@cl{prehc}\relax
- \hyphenchar\font\bbl@cl{prehc}\relax
- \else\iffontchar\font"200B
- \hyphenchar\font"200B
- \else
- \bbl@warning
- {Neither 0 nor ZERO WIDTH SPACE are available\\%
- in the current font, and therefore the hyphen\\%
- will be printed. Try changing the fontspec's\\%
- 'HyphenChar' to another value, but be aware\\%
- this setting is not safe (see the manual).\\%
- Reported}%
- \hyphenchar\font\defaulthyphenchar
- \fi\fi
- \fi}%
- {\hyphenchar\font\defaulthyphenchar}}
- % \fi}
-\def\bbl@load@info#1{%
- \def\BabelBeforeIni##1##2{%
- \begingroup
- \bbl@read@ini{##1}0%
- \endinput % babel- .tex may contain onlypreamble's
- \endgroup}% boxed, to avoid extra spaces:
- {\bbl@input@texini{#1}}}
-\def\bbl@setdigits#1#2#3#4#5{%
- \bbl@exp{%
- \def\<\languagename digits>####1{% ie, \langdigits
- \<bbl@digits@\languagename>####1\\\@nil}%
- \let\<bbl@cntr@digits@\languagename>\<\languagename digits>%
- \def\<\languagename counter>####1{% ie, \langcounter
- \\\expandafter\<bbl@counter@\languagename>%
- \\\csname c@####1\endcsname}%
- \def\<bbl@counter@\languagename>####1{% ie, \bbl@counter@lang
- \\\expandafter\<bbl@digits@\languagename>%
- \\\number####1\\\@nil}}%
- \def\bbl@tempa##1##2##3##4##5{%
- \bbl@exp{% Wow, quite a lot of hashes! :-(
- \def\<bbl@digits@\languagename>########1{%
- \\\ifx########1\\\@nil % ie, \bbl@digits@lang
- \\\else
- \\\ifx0########1#1%
- \\\else\\\ifx1########1#2%
- \\\else\\\ifx2########1#3%
- \\\else\\\ifx3########1#4%
- \\\else\\\ifx4########1#5%
- \\\else\\\ifx5########1##1%
- \\\else\\\ifx6########1##2%
- \\\else\\\ifx7########1##3%
- \\\else\\\ifx8########1##4%
- \\\else\\\ifx9########1##5%
- \\\else########1%
- \\\fi\\\fi\\\fi\\\fi\\\fi\\\fi\\\fi\\\fi\\\fi\\\fi
- \\\expandafter\<bbl@digits@\languagename>%
- \\\fi}}}%
- \bbl@tempa}
-\def\bbl@buildifcase#1 {% Returns \bbl@tempa, requires \toks@={}
- \ifx\\#1% % \\ before, in case #1 is multiletter
- \bbl@exp{%
- \def\\\bbl@tempa####1{%
- \<ifcase>####1\space\the\toks@\<else>\\\@ctrerr\<fi>}}%
- \else
- \toks@\expandafter{\the\toks@\or #1}%
- \expandafter\bbl@buildifcase
- \fi}
-\newcommand\localenumeral[2]{\bbl@cs{cntr@#1@\languagename}{#2}}
-\def\bbl@localecntr#1#2{\localenumeral{#2}{#1}}
-\newcommand\localecounter[2]{%
- \expandafter\bbl@localecntr
- \expandafter{\number\csname c@#2\endcsname}{#1}}
-\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
- \bbl@alphnumeral@ii{#9}000000#1\or
- \bbl@alphnumeral@ii{#9}00000#1#2\or
- \bbl@alphnumeral@ii{#9}0000#1#2#3\or
- \bbl@alphnumeral@ii{#9}000#1#2#3#4\else
- \bbl@alphnum@invalid{>9999}%
- \fi}
-\def\bbl@alphnumeral@ii#1#2#3#4#5#6#7#8{%
- \bbl@ifunset{bbl@cntr@#1.F.\number#5#6#7#8@\languagename}%
- {\bbl@cs{cntr@#1.4@\languagename}#5%
- \bbl@cs{cntr@#1.3@\languagename}#6%
- \bbl@cs{cntr@#1.2@\languagename}#7%
- \bbl@cs{cntr@#1.1@\languagename}#8%
- \ifnum#6#7#8>\z@ % TODO. An ad hoc rule for Greek. Ugly.
- \bbl@ifunset{bbl@cntr@#1.S.321@\languagename}{}%
- {\bbl@cs{cntr@#1.S.321@\languagename}}%
- \fi}%
- {\bbl@cs{cntr@#1.F.\number#5#6#7#8@\languagename}}}
-\def\bbl@alphnum@invalid#1{%
- \bbl@error{Alphabetic numeral too large (#1)}%
- {Currently this is the limit.}}
-\def\bbl@localeinfo#1#2{%
- \bbl@ifunset{bbl@info@#2}{#1}%
- {\bbl@ifunset{bbl@\csname bbl@info@#2\endcsname @\languagename}{#1}%
- {\bbl@cs{\csname bbl@info@#2\endcsname @\languagename}}}}
-\newcommand\localeinfo[1]{%
- \ifx*#1\@empty % TODO. A bit hackish to make it expandable.
- \bbl@afterelse\bbl@localeinfo{}%
- \else
- \bbl@localeinfo
- {\bbl@error{I've found no info for the current locale.\\%
- The corresponding ini file has not been loaded\\%
- Perhaps it doesn't exist}%
- {See the manual for details.}}%
- {#1}%
- \fi}
-\@namedef{bbl@info@tag.ini}{lini}
-\@namedef{bbl@info@name.english}{elname}
-\@namedef{bbl@info@name.opentype}{lname}
-\@namedef{bbl@info@tag.bcp47}{tbcp}
-\@namedef{bbl@info@language.tag.bcp47}{lbcp}
-\@namedef{bbl@info@tag.opentype}{lotf}
-\@namedef{bbl@info@script.name}{esname}
-\@namedef{bbl@info@script.name.opentype}{sname}
-\@namedef{bbl@info@script.tag.bcp47}{sbcp}
-\@namedef{bbl@info@script.tag.opentype}{sotf}
-\@namedef{bbl@info@region.tag.bcp47}{rbcp}
-\@namedef{bbl@info@variant.tag.bcp47}{vbcp}
-\@namedef{bbl@info@extension.t.tag.bcp47}{extt}
-\@namedef{bbl@info@extension.u.tag.bcp47}{extu}
-\@namedef{bbl@info@extension.x.tag.bcp47}{extx}
-\providecommand\BCPdata{}
-\ifx\renewcommand\@undefined\else % For plain. TODO. It’s a quick fix
- \renewcommand\BCPdata[1]{%
- \bbl@ifunset{bbl@info@#1.tag.bcp47}%
- {\bbl@error{Unknown field '#1' in \string\BCPdata.\\%
- Perhaps you misspelled it.}%
- {See the manual for details.}}%
- {\bbl@ifunset{bbl@\csname bbl@info@#1.tag.bcp47\endcsname @\languagename}{}%
- {\bbl@cs{\csname bbl@info@#1.tag.bcp47\endcsname @\languagename}}}}
-\fi
-\@namedef{bbl@info@casing.tag.bcp47}{casing}
-\let\bbl@ensureinfo\@gobble
-\newcommand\BabelEnsureInfo{%
- \ifx\InputIfFileExists\@undefined\else
- \def\bbl@ensureinfo##1{%
- \bbl@ifunset{bbl@lname@##1}{\bbl@load@info{##1}}{}}%
- \fi
- \bbl@foreach\bbl@loaded{{%
- \let\bbl@ensuring\@empty % Flag used in a couple of babel-*.tex files
- \def\languagename{##1}%
- \bbl@ensureinfo{##1}}}}
-\@ifpackagewith{babel}{ensureinfo=off}{}%
- {\AtEndOfPackage{% Test for plain.
- \ifx\@undefined\bbl@loaded\else\BabelEnsureInfo\fi}}
-\newcommand\getlocaleproperty{%
- \@ifstar\bbl@getproperty@s\bbl@getproperty@x}
-\def\bbl@getproperty@s#1#2#3{%
- \let#1\relax
- \def\bbl@elt##1##2##3{%
- \bbl@ifsamestring{##1/##2}{#3}%
- {\providecommand#1{##3}%
- \def\bbl@elt####1####2####3{}}%
- {}}%
- \bbl@cs{inidata@#2}}%
-\def\bbl@getproperty@x#1#2#3{%
- \bbl@getproperty@s{#1}{#2}{#3}%
- \ifx#1\relax
- \bbl@error
- {Unknown key for locale '#2':\\%
- #3\\%
- \string#1 will be set to \relax}%
- {Perhaps you misspelled it.}%
- \fi}
-\let\bbl@ini@loaded\@empty
-\newcommand\LocaleForEach{\bbl@foreach\bbl@ini@loaded}
-\newcommand\babeladjust[1]{% TODO. Error handling.
- \bbl@forkv{#1}{%
- \bbl@ifunset{bbl@ADJ@##1@##2}%
- {\bbl@cs{ADJ@##1}{##2}}%
- {\bbl@cs{ADJ@##1@##2}}}}
-\def\bbl@adjust@lua#1#2{%
- \ifvmode
- \ifnum\currentgrouplevel=\z@
- \directlua{ Babel.#2 }%
- \expandafter\expandafter\expandafter\@gobble
- \fi
- \fi
- {\bbl@error % The error is gobbled if everything went ok.
- {Currently, #1 related features can be adjusted only\\%
- in the main vertical list.}%
- {Maybe things change in the future, but this is what it is.}}}
-\@namedef{bbl@ADJ@bidi.mirroring@on}{%
- \bbl@adjust@lua{bidi}{mirroring_enabled=true}}
-\@namedef{bbl@ADJ@bidi.mirroring@off}{%
- \bbl@adjust@lua{bidi}{mirroring_enabled=false}}
-\@namedef{bbl@ADJ@bidi.text@on}{%
- \bbl@adjust@lua{bidi}{bidi_enabled=true}}
-\@namedef{bbl@ADJ@bidi.text@off}{%
- \bbl@adjust@lua{bidi}{bidi_enabled=false}}
-\@namedef{bbl@ADJ@bidi.math@on}{%
- \let\bbl@noamsmath\@empty}
-\@namedef{bbl@ADJ@bidi.math@off}{%
- \let\bbl@noamsmath\relax}
-\@namedef{bbl@ADJ@bidi.mapdigits@on}{%
- \bbl@adjust@lua{bidi}{digits_mapped=true}}
-\@namedef{bbl@ADJ@bidi.mapdigits@off}{%
- \bbl@adjust@lua{bidi}{digits_mapped=false}}
-\@namedef{bbl@ADJ@linebreak.sea@on}{%
- \bbl@adjust@lua{linebreak}{sea_enabled=true}}
-\@namedef{bbl@ADJ@linebreak.sea@off}{%
- \bbl@adjust@lua{linebreak}{sea_enabled=false}}
-\@namedef{bbl@ADJ@linebreak.cjk@on}{%
- \bbl@adjust@lua{linebreak}{cjk_enabled=true}}
-\@namedef{bbl@ADJ@linebreak.cjk@off}{%
- \bbl@adjust@lua{linebreak}{cjk_enabled=false}}
-\@namedef{bbl@ADJ@justify.arabic@on}{%
- \bbl@adjust@lua{linebreak}{arabic.justify_enabled=true}}
-\@namedef{bbl@ADJ@justify.arabic@off}{%
- \bbl@adjust@lua{linebreak}{arabic.justify_enabled=false}}
-\def\bbl@adjust@layout#1{%
- \ifvmode
- #1%
- \expandafter\@gobble
- \fi
- {\bbl@error % The error is gobbled if everything went ok.
- {Currently, layout related features can be adjusted only\\%
- in vertical mode.}%
- {Maybe things change in the future, but this is what it is.}}}
-\@namedef{bbl@ADJ@layout.tabular@on}{%
- \ifnum\bbl@tabular@mode=\tw@
- \bbl@adjust@layout{\let\@tabular\bbl@NL@@tabular}%
- \else
- \chardef\bbl@tabular@mode\@ne
- \fi}
-\@namedef{bbl@ADJ@layout.tabular@off}{%
- \ifnum\bbl@tabular@mode=\tw@
- \bbl@adjust@layout{\let\@tabular\bbl@OL@@tabular}%
- \else
- \chardef\bbl@tabular@mode\z@
- \fi}
-\@namedef{bbl@ADJ@layout.lists@on}{%
- \bbl@adjust@layout{\let\list\bbl@NL@list}}
-\@namedef{bbl@ADJ@layout.lists@off}{%
- \bbl@adjust@layout{\let\list\bbl@OL@list}}
-\@namedef{bbl@ADJ@autoload.bcp47@on}{%
- \bbl@bcpallowedtrue}
-\@namedef{bbl@ADJ@autoload.bcp47@off}{%
- \bbl@bcpallowedfalse}
-\@namedef{bbl@ADJ@autoload.bcp47.prefix}#1{%
- \def\bbl@bcp@prefix{#1}}
-\def\bbl@bcp@prefix{bcp47-}
-\@namedef{bbl@ADJ@autoload.options}#1{%
- \def\bbl@autoload@options{#1}}
-\let\bbl@autoload@bcpoptions\@empty
-\@namedef{bbl@ADJ@autoload.bcp47.options}#1{%
- \def\bbl@autoload@bcpoptions{#1}}
-\newif\ifbbl@bcptoname
-\@namedef{bbl@ADJ@bcp47.toname@on}{%
- \bbl@bcptonametrue
- \BabelEnsureInfo}
-\@namedef{bbl@ADJ@bcp47.toname@off}{%
- \bbl@bcptonamefalse}
-\@namedef{bbl@ADJ@prehyphenation.disable@nohyphenation}{%
- \directlua{ Babel.ignore_pre_char = function(node)
- return (node.lang == \the\csname l@nohyphenation\endcsname)
- end }}
-\@namedef{bbl@ADJ@prehyphenation.disable@off}{%
- \directlua{ Babel.ignore_pre_char = function(node)
- return false
- end }}
-\@namedef{bbl@ADJ@select.write@shift}{%
- \let\bbl@restorelastskip\relax
- \def\bbl@savelastskip{%
- \let\bbl@restorelastskip\relax
- \ifvmode
- \ifdim\lastskip=\z@
- \let\bbl@restorelastskip\nobreak
- \else
- \bbl@exp{%
- \def\\\bbl@restorelastskip{%
- \skip@=\the\lastskip
- \\\nobreak \vskip-\skip@ \vskip\skip@}}%
- \fi
- \fi}}
-\@namedef{bbl@ADJ@select.write@keep}{%
- \let\bbl@restorelastskip\relax
- \let\bbl@savelastskip\relax}
-\@namedef{bbl@ADJ@select.write@omit}{%
- \AddBabelHook{babel-select}{beforestart}{%
- \expandafter\babel@aux\expandafter{\bbl@main@language}{}}%
- \let\bbl@restorelastskip\relax
- \def\bbl@savelastskip##1\bbl@restorelastskip{}}
-\@namedef{bbl@ADJ@select.encoding@off}{%
- \let\bbl@encoding@select@off\@empty}
-\ifx\directlua\@undefined\else
- \ifx\bbl@luapatterns\@undefined
- \input luababel.def
- \fi
-\fi
\endinput
%%
%% End of file `babel.def'.
diff --git a/Master/texmf-dist/tex/generic/babel/babel.sty b/Master/texmf-dist/tex/generic/babel/babel.sty
index 4ed44235120..eab6b9801f0 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/04/18 3.88 The Babel package]
+\ProvidesPackage{babel}[2023/05/11 v3.89 The Babel package]
\@ifpackagewith{babel}{debug}
{\providecommand\bbl@trace[1]{\message{^^J[ #1 ]}}%
\let\bbl@debug\@firstofone
@@ -305,6 +305,8 @@
\bbl@csarg\let{tempa\expandafter}\csname opt@babel.sty\endcsname
\def\bbl@tempb#1.#2{% Remove trailing dot
#1\ifx\@empty#2\else,\bbl@afterfi\bbl@tempb#2\fi}%
+\def\bbl@tempe#1=#2\@@{%
+ \bbl@csarg\edef{mod@#1}{\bbl@tempb#2}}
\def\bbl@tempd#1.#2\@nnil{% TODO. Refactor lists?
\ifx\@empty#2%
\edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1}%
@@ -314,12 +316,17 @@
\edef\bbl@tempc{%
\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1.\bbl@tempb#2}%
\else
- \in@{=}{#1}%
+ \in@{$modifiers$}{$#1$}% TODO. Allow spaces.
\ifin@
- \edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1.#2}%
+ \bbl@tempe#2\@@
\else
- \edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1}%
- \bbl@csarg\edef{mod@#1}{\bbl@tempb#2}%
+ \in@{=}{#1}%
+ \ifin@
+ \edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1.#2}%
+ \else
+ \edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1}%
+ \bbl@csarg\edef{mod@#1}{\bbl@tempb#2}%
+ \fi
\fi
\fi
\fi}
@@ -463,8 +470,8 @@
\expandafter\@secondoftwo
\fi}
\fi
-\def\bbl@version{3.88}
-\def\bbl@date{2023/04/18}
+\def\bbl@version{3.89}
+\def\bbl@date{2023/05/11}
\ifx\language\@undefined
\csname newcount\endcsname\language
\fi
@@ -712,8 +719,6 @@
% set the locale id
\bbl@id@assign
% switch captions, date
- % No text is supposed to be added here, so we remove any
- % spurious spaces.
\bbl@bsphack
\ifcase\bbl@select@type
\csname captions#1\endcsname\relax
@@ -784,6 +789,7 @@
\expandafter\expandafter\expandafter\set@hyphenmins
\csname #1hyphenmins\endcsname\relax
\fi
+ % reset selector name
\let\bbl@selectorname\@empty}
\long\def\otherlanguage#1{%
\def\bbl@selectorname{other}%
@@ -968,193 +974,6 @@
\input luababel.def
\fi
\fi
-\bbl@trace{Basic macros}
-\def\bbl@stripslash{\expandafter\@gobble\string}
-\def\bbl@add#1#2{%
- \bbl@ifunset{\bbl@stripslash#1}%
- {\def#1{#2}}%
- {\expandafter\def\expandafter#1\expandafter{#1#2}}}
-\def\bbl@xin@{\@expandtwoargs\in@}
-\def\bbl@carg#1#2{\expandafter#1\csname#2\endcsname}%
-\def\bbl@ncarg#1#2#3{\expandafter#1\expandafter#2\csname#3\endcsname}%
-\def\bbl@ccarg#1#2#3{%
- \expandafter#1\csname#2\expandafter\endcsname\csname#3\endcsname}%
-\def\bbl@csarg#1#2{\expandafter#1\csname bbl@#2\endcsname}%
-\def\bbl@cs#1{\csname bbl@#1\endcsname}
-\def\bbl@cl#1{\csname bbl@#1@\languagename\endcsname}
-\def\bbl@loop#1#2#3{\bbl@@loop#1{#3}#2,\@nnil,}
-\def\bbl@loopx#1#2{\expandafter\bbl@loop\expandafter#1\expandafter{#2}}
-\def\bbl@@loop#1#2#3,{%
- \ifx\@nnil#3\relax\else
- \def#1{#3}#2\bbl@afterfi\bbl@@loop#1{#2}%
- \fi}
-\def\bbl@for#1#2#3{\bbl@loopx#1{#2}{\ifx#1\@empty\else#3\fi}}
-\def\bbl@add@list#1#2{%
- \edef#1{%
- \bbl@ifunset{\bbl@stripslash#1}%
- {}%
- {\ifx#1\@empty\else#1,\fi}%
- #2}}
-\long\def\bbl@afterelse#1\else#2\fi{\fi#1}
-\long\def\bbl@afterfi#1\fi{\fi#1}
-\def\bbl@exp#1{%
- \begingroup
- \let\\\noexpand
- \let\<\bbl@exp@en
- \let\[\bbl@exp@ue
- \edef\bbl@exp@aux{\endgroup#1}%
- \bbl@exp@aux}
-\def\bbl@exp@en#1>{\expandafter\noexpand\csname#1\endcsname}%
-\def\bbl@exp@ue#1]{%
- \unexpanded\expandafter\expandafter\expandafter{\csname#1\endcsname}}%
-\def\bbl@tempa#1{%
- \long\def\bbl@trim##1##2{%
- \futurelet\bbl@trim@a\bbl@trim@c##2\@nil\@nil#1\@nil\relax{##1}}%
- \def\bbl@trim@c{%
- \ifx\bbl@trim@a\@sptoken
- \expandafter\bbl@trim@b
- \else
- \expandafter\bbl@trim@b\expandafter#1%
- \fi}%
- \long\def\bbl@trim@b#1##1 \@nil{\bbl@trim@i##1}}
-\bbl@tempa{ }
-\long\def\bbl@trim@i#1\@nil#2\relax#3{#3{#1}}
-\long\def\bbl@trim@def#1{\bbl@trim{\def#1}}
-\begingroup
- \gdef\bbl@ifunset#1{%
- \expandafter\ifx\csname#1\endcsname\relax
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}
- \bbl@ifunset{ifcsname}%
- {}%
- {\gdef\bbl@ifunset#1{%
- \ifcsname#1\endcsname
- \expandafter\ifx\csname#1\endcsname\relax
- \bbl@afterelse\expandafter\@firstoftwo
- \else
- \bbl@afterfi\expandafter\@secondoftwo
- \fi
- \else
- \expandafter\@firstoftwo
- \fi}}
-\endgroup
-\def\bbl@ifblank#1{%
- \bbl@ifblank@i#1\@nil\@nil\@secondoftwo\@firstoftwo\@nil}
-\long\def\bbl@ifblank@i#1#2\@nil#3#4#5\@nil{#4}
-\def\bbl@ifset#1#2#3{%
- \bbl@ifunset{#1}{#3}{\bbl@exp{\\\bbl@ifblank{\@nameuse{#1}}}{#3}{#2}}}
-\def\bbl@forkv#1#2{%
- \def\bbl@kvcmd##1##2##3{#2}%
- \bbl@kvnext#1,\@nil,}
-\def\bbl@kvnext#1,{%
- \ifx\@nil#1\relax\else
- \bbl@ifblank{#1}{}{\bbl@forkv@eq#1=\@empty=\@nil{#1}}%
- \expandafter\bbl@kvnext
- \fi}
-\def\bbl@forkv@eq#1=#2=#3\@nil#4{%
- \bbl@trim@def\bbl@forkv@a{#1}%
- \bbl@trim{\expandafter\bbl@kvcmd\expandafter{\bbl@forkv@a}}{#2}{#4}}
-\def\bbl@vforeach#1#2{%
- \def\bbl@forcmd##1{#2}%
- \bbl@fornext#1,\@nil,}
-\def\bbl@fornext#1,{%
- \ifx\@nil#1\relax\else
- \bbl@ifblank{#1}{}{\bbl@trim\bbl@forcmd{#1}}%
- \expandafter\bbl@fornext
- \fi}
-\def\bbl@foreach#1{\expandafter\bbl@vforeach\expandafter{#1}}
-\def\bbl@replace#1#2#3{% in #1 -> repl #2 by #3
- \toks@{}%
- \def\bbl@replace@aux##1#2##2#2{%
- \ifx\bbl@nil##2%
- \toks@\expandafter{\the\toks@##1}%
- \else
- \toks@\expandafter{\the\toks@##1#3}%
- \bbl@afterfi
- \bbl@replace@aux##2#2%
- \fi}%
- \expandafter\bbl@replace@aux#1#2\bbl@nil#2%
- \edef#1{\the\toks@}}
-\ifx\detokenize\@undefined\else % Unused macros if old Plain TeX
- \bbl@exp{\def\\\bbl@parsedef##1\detokenize{macro:}}#2->#3\relax{%
- \def\bbl@tempa{#1}%
- \def\bbl@tempb{#2}%
- \def\bbl@tempe{#3}}
- \def\bbl@sreplace#1#2#3{%
- \begingroup
- \expandafter\bbl@parsedef\meaning#1\relax
- \def\bbl@tempc{#2}%
- \edef\bbl@tempc{\expandafter\strip@prefix\meaning\bbl@tempc}%
- \def\bbl@tempd{#3}%
- \edef\bbl@tempd{\expandafter\strip@prefix\meaning\bbl@tempd}%
- \bbl@xin@{\bbl@tempc}{\bbl@tempe}% If not in macro, do nothing
- \ifin@
- \bbl@exp{\\\bbl@replace\\\bbl@tempe{\bbl@tempc}{\bbl@tempd}}%
- \def\bbl@tempc{% Expanded an executed below as 'uplevel'
- \\\makeatletter % "internal" macros with @ are assumed
- \\\scantokens{%
- \bbl@tempa\\\@namedef{\bbl@stripslash#1}\bbl@tempb{\bbl@tempe}}%
- \catcode64=\the\catcode64\relax}% Restore @
- \else
- \let\bbl@tempc\@empty % Not \relax
- \fi
- \bbl@exp{% For the 'uplevel' assignments
- \endgroup
- \bbl@tempc}} % empty or expand to set #1 with changes
-\fi
-\def\bbl@ifsamestring#1#2{%
- \begingroup
- \protected@edef\bbl@tempb{#1}%
- \edef\bbl@tempb{\expandafter\strip@prefix\meaning\bbl@tempb}%
- \protected@edef\bbl@tempc{#2}%
- \edef\bbl@tempc{\expandafter\strip@prefix\meaning\bbl@tempc}%
- \ifx\bbl@tempb\bbl@tempc
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \endgroup}
-\chardef\bbl@engine=%
- \ifx\directlua\@undefined
- \ifx\XeTeXinputencoding\@undefined
- \z@
- \else
- \tw@
- \fi
- \else
- \@ne
- \fi
-\def\bbl@bsphack{%
- \ifhmode
- \hskip\z@skip
- \def\bbl@esphack{\loop\ifdim\lastskip>\z@\unskip\repeat\unskip}%
- \else
- \let\bbl@esphack\@empty
- \fi}
-\def\bbl@cased{%
- \ifx\oe\OE
- \expandafter\in@\expandafter
- {\expandafter\OE\expandafter}\expandafter{\oe}%
- \ifin@
- \bbl@afterelse\expandafter\MakeUppercase
- \else
- \bbl@afterfi\expandafter\MakeLowercase
- \fi
- \else
- \expandafter\@firstofone
- \fi}
-\def\bbl@extras@wrap#1#2#3{% 1:in-test, 2:before, 3:after
- \toks@\expandafter\expandafter\expandafter{%
- \csname extras\languagename\endcsname}%
- \bbl@exp{\\\in@{#1}{\the\toks@}}%
- \ifin@\else
- \@temptokena{#2}%
- \edef\bbl@tempc{\the\@temptokena\the\toks@}%
- \toks@\expandafter{\bbl@tempc#3}%
- \expandafter\edef\csname extras\languagename\endcsname{\the\toks@}%
- \fi}
\bbl@trace{Compatibility with language.def}
\ifx\bbl@languages\@undefined
\ifx\directlua\@undefined
@@ -1222,7 +1041,7 @@
\newcommand\EnableBabelHook[1]{\bbl@csarg\let{hk@#1}\@firstofone}
\newcommand\DisableBabelHook[1]{\bbl@csarg\let{hk@#1}\@gobble}
\def\bbl@usehooks{\bbl@usehooks@lang\languagename}
-\def\bbl@usehooks@lang#1#2#3{%
+\def\bbl@usehooks@lang#1#2#3{% Test for Plain
\ifx\UseHook\@undefined\else\UseHook{babel/*/#2}\fi
\def\bbl@elth##1{%
\bbl@cs{hk@##1}{\bbl@cs{ev@##1@#2@}#3}}%
@@ -1239,7 +1058,7 @@
beforeextras=0,afterextras=0,stopcommands=0,stringprocess=0,%
hyphenation=2,initiateactive=3,afterreset=0,foreign=0,foreign*=0,%
beforestart=0,languagename=2,begindocument=1}
-\ifx\NewHook\@undefined\else
+\ifx\NewHook\@undefined\else % Test for Plain (?)
\def\bbl@tempa#1=#2\@@{\NewHook{babel/#1}}
\bbl@foreach\bbl@evargs{\bbl@tempa#1\@@}
\fi
@@ -1948,7 +1767,7 @@
\def\bbl@toglobal#1{\global\let#1#1}
\@ifpackagewith{babel}{nocase}%
{\let\bbl@patchuclc\relax}%
- {\def\bbl@patchuclc{%
+ {\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{%
@@ -2470,6 +2289,7 @@
\let\bbl@calendars\@empty
\global\let\bbl@inidata\@empty
\global\let\bbl@extend@ini\@gobble
+ \global\let\bbl@included@inis\@empty
\gdef\bbl@key@list{;}%
\bbl@forkv{#1}{%
\in@{/}{##1}% With /, (re)sets a value in the ini
@@ -2535,6 +2355,14 @@
{}% With \bbl@load@basic below
{\bbl@provide@renew{#2}}%
\fi
+ % == include == TODO
+ % \ifx\bbl@included@inis\@empty\else
+ % \bbl@replace\bbl@included@inis{ }{,}%
+ % \bbl@foreach\bbl@included@inis{%
+ % \openin\bbl@readstream=babel-##1.ini
+ % \bbl@extend@ini{#2}}%
+ % \closein\bbl@readstream
+ % \fi
% Post tasks
% ----------
% == subsequent calls after the first provide for a locale ==
@@ -2557,11 +2385,6 @@
\\\bbl@toglobal\<bbl@ensure@\languagename>%
\\\bbl@toglobal\<bbl@ensure@\languagename\space>}%
\fi
- % ==
- % At this point all parameters are defined if 'import'. Now we
- % execute some code depending on them. But what about if nothing was
- % imported? We just set the basic parameters, but still loading the
- % whole ini file.
\bbl@load@basic{#2}%
% == script, language ==
% Override the values from ini or defines them
@@ -2976,7 +2799,7 @@
\ifin@\else
\bbl@xin@{,identification/include.}%
{,\bbl@section/\bbl@tempa}%
- \ifin@\edef\bbl@required@inis{\the\toks@}\fi
+ \ifin@\xdef\bbl@included@inis{\the\toks@}\fi
\bbl@exp{%
\\\g@addto@macro\\\bbl@inidata{%
\\\bbl@elt{\bbl@section}{\bbl@tempa}{\the\toks@}}}%
@@ -3024,16 +2847,9 @@
\let\bbl@inistore\bbl@inistore@min % Remember it's local
\fi
\def\bbl@section{identification}%
- \let\bbl@required@inis\@empty
\bbl@exp{\\\bbl@inistore tag.ini=#1\\\@@}%
\bbl@inistore load.level=#2\@@
\bbl@loop@ini
- \ifx\bbl@required@inis\@empty\else
- \bbl@replace\bbl@required@inis{ }{,}%
- \bbl@foreach\bbl@required@inis{%
- \openin\bbl@readstream=babel-##1.ini
- \bbl@loop@ini}%
- \fi
% == Process stored data ==
\bbl@csarg\xdef{lini@\languagename}{#1}%
\bbl@read@ini@aux
@@ -3675,13 +3491,18 @@
\@namedef{bbl@info@extension.x.tag.bcp47}{extx}
\providecommand\BCPdata{}
\ifx\renewcommand\@undefined\else % For plain. TODO. It’s a quick fix
- \renewcommand\BCPdata[1]{%
+ \renewcommand\BCPdata[1]{\bbl@bcpdata@i#1\@empty}
+ \def\bbl@bcpdata@i#1#2#3#4#5#6\@empty{%
+ \@nameuse{str_if_eq:nnTF}{#1#2#3#4#5}{main.}%
+ {\bbl@bcpdata@ii{#6}\bbl@main@language}%
+ {\bbl@bcpdata@ii{#1#2#3#4#5#6}\languagename}}%
+ \def\bbl@bcpdata@ii#1#2{%
\bbl@ifunset{bbl@info@#1.tag.bcp47}%
{\bbl@error{Unknown field '#1' in \string\BCPdata.\\%
Perhaps you misspelled it.}%
{See the manual for details.}}%
- {\bbl@ifunset{bbl@\csname bbl@info@#1.tag.bcp47\endcsname @\languagename}{}%
- {\bbl@cs{\csname bbl@info@#1.tag.bcp47\endcsname @\languagename}}}}
+ {\bbl@ifunset{bbl@\csname bbl@info@#1.tag.bcp47\endcsname @#2}{}%
+ {\bbl@cs{\csname bbl@info@#1.tag.bcp47\endcsname @#2}}}}
\fi
\@namedef{bbl@info@casing.tag.bcp47}{casing}
\let\bbl@ensureinfo\@gobble
@@ -3837,11 +3658,6 @@
\def\bbl@savelastskip##1\bbl@restorelastskip{}}
\@namedef{bbl@ADJ@select.encoding@off}{%
\let\bbl@encoding@select@off\@empty}
-\ifx\directlua\@undefined\else
- \ifx\bbl@luapatterns\@undefined
- \input luababel.def
- \fi
-\fi
\bbl@trace{Cross referencing macros}
\ifx\bbl@opt@safe\@empty\else % ie, if 'ref' and/or 'bib'
\def\@newl@bel#1#2#3{%
@@ -4309,10 +4125,12 @@
\bbl@load@language{hebrew}}
\DeclareOption{hungarian}{\bbl@try@load@lang{}{magyar}{}}
\DeclareOption{lowersorbian}{\bbl@try@load@lang{}{lsorbian}{}}
+\DeclareOption{northernsami}{\bbl@try@load@lang{}{samin}{}}
\DeclareOption{nynorsk}{\bbl@try@load@lang{}{norsk}{}}
\DeclareOption{polutonikogreek}{%
\bbl@try@load@lang{}{greek}{\languageattribute{greek}{polutoniko}}}
\DeclareOption{russian}{\bbl@try@load@lang{}{russianb}{}}
+\DeclareOption{scottishgaelic}{\bbl@try@load@lang{}{scottish}{}}
\DeclareOption{ukrainian}{\bbl@try@load@lang{}{ukraineb}{}}
\DeclareOption{uppersorbian}{\bbl@try@load@lang{}{usorbian}{}}
\ifx\bbl@opt@config\@nnil
diff --git a/Master/texmf-dist/tex/generic/babel/hyphen.cfg b/Master/texmf-dist/tex/generic/babel/hyphen.cfg
index f54fed423f5..b0065196815 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/04/18 3.88 Babel hyphens]
+\ProvidesFile{hyphen.cfg}[2023/05/11 v3.89 Babel hyphens]
\xdef\bbl@format{\jobname}
-\def\bbl@version{3.88}
-\def\bbl@date{2023/04/18}
+\def\bbl@version{3.89}
+\def\bbl@date{2023/05/11}
\ifx\AtBeginDocument\@undefined
\def\@empty{}
\fi
diff --git a/Master/texmf-dist/tex/generic/babel/locale/fr/babel-acadian.tex b/Master/texmf-dist/tex/generic/babel/locale/fr/babel-acadian.tex
new file mode 100644
index 00000000000..663ddf4c60d
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/babel/locale/fr/babel-acadian.tex
@@ -0,0 +1,12 @@
+% This file is part of babel. For further details see:
+% https://www.ctan.org/pkg/babel
+\ifx\BabelBeforeIni\undefined
+ \PackageError{babel}%
+ {This file is a component of babel and cannot\MessageBreak
+ be loaded directly. I'll stop immediately}%
+ {Just use babel as documented.}%
+ \stop
+\fi
+\BabelBeforeIni{fr-x-acadian}{%
+}
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-x-acadian.ini b/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-x-acadian.ini
new file mode 100644
index 00000000000..0fdf3901abd
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-x-acadian.ini
@@ -0,0 +1,186 @@
+; 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):
+; https://www.ctan.org/pkg/babel-contrib
+; * Common Locale Data Repository (license Unicode):
+; http://cldr.unicode.org/
+; http://unicode.org/copyright.html
+
+[identification]
+charset = utf8
+version = 0.9
+date = 2023-05-11
+name.local = acadien
+; Name from Glottolog. Note Acadian is *not* Canadian French
+name.english = Acadian
+name.babel = acadian
+tag.bcp47 = fr-x-acadian
+language.tag.bcp47 = fr
+tag.opentype = FRA
+script.name = Latin
+script.tag.bcp47 = Latn
+script.tag.opentype = latn
+extension.x.tag.bcp47 = acadian
+level = 1
+encodings = T1 OT1 LY1
+derivate = no
+
+[captions]
+preface = Préface
+ref = Références
+abstract = Résumé
+bib = Bibliographie
+chapter = Chapitre
+appendix = Annexe
+contents = Table des matières
+listfigure = Table des figures
+listtable = Liste des tableaux
+index = Index
+figure = Figure
+table = Table
+part = partie
+encl = P.~J.
+cc = Copie à
+headto =
+page = page
+see = voir
+also = voir aussi
+proof = Démonstration
+glossary = Glossaire
+
+[captions.licr]
+preface = Pr\'eface
+ref = R\'ef\'erences
+abstract = R\'esum\'e
+bib = Bibliographie
+chapter = Chapitre
+appendix = Annexe
+contents = Table des mati\`eres
+listfigure = Table des figures
+listtable = Liste des tableaux
+index = Index
+figure = Figure
+table = Table
+part = partie
+encl = P.~J.
+cc = Copie \`a
+headto =
+page = page
+see = voir
+also = voir aussi
+proof = D\'emonstration
+glossary = Glossaire
+
+[date.gregorian]
+date.long = [d|date.day] [MMMM] [y]
+date.short = [dd]/[MM]/[y]
+months.wide.1 = janvier
+months.wide.2 = février
+months.wide.3 = mars
+months.wide.4 = avril
+months.wide.5 = mai
+months.wide.6 = juin
+months.wide.7 = juillet
+months.wide.8 = août
+months.wide.9 = septembre
+months.wide.10 = octobre
+months.wide.11 = novembre
+months.wide.12 = décembre
+months.narrow.1 = J
+months.narrow.2 = F
+months.narrow.3 = M
+months.narrow.4 = A
+months.narrow.5 = M
+months.narrow.6 = J
+months.narrow.7 = J
+months.narrow.8 = A
+months.narrow.9 = S
+months.narrow.10 = O
+months.narrow.11 = N
+months.narrow.12 = D
+days.wide.mon = lundi
+days.wide.tue = mardi
+days.wide.wed = mercredi
+days.wide.thu = jeudi
+days.wide.fri = vendredi
+days.wide.sat = samedi
+days.wide.sun = dimanche
+days.abbreviated.mon = lun.
+days.abbreviated.tue = mar.
+days.abbreviated.wed = mer.
+days.abbreviated.thu = jeu.
+days.abbreviated.fri = ven.
+days.abbreviated.sat = sam.
+days.abbreviated.sun = dim.
+days.narrow.mon = L
+days.narrow.tue = M
+days.narrow.wed = M
+days.narrow.thu = J
+days.narrow.fri = V
+days.narrow.sat = S
+days.narrow.sun = D
+dayPeriods.abbreviated.am = AM
+dayPeriods.abbreviated.pm = PM
+dayPeriods.narrow.am = AM
+dayPeriods.narrow.pm = PM
+dayPeriods.wide.am = AM
+dayPeriods.wide.pm = PM
+
+[date.gregorian.licr]
+months.wide.1 = janvier
+months.wide.2 = f\'evrier
+months.wide.3 = mars
+months.wide.4 = avril
+months.wide.5 = mai
+months.wide.6 = juin
+months.wide.7 = juillet
+months.wide.8 = ao\^ut
+months.wide.9 = septembre
+months.wide.10 = octobre
+months.wide.11 = novembre
+months.wide.12 = d\'ecembre
+
+[time.gregorian]
+time.medium = [HH]:[mm]:[ss]
+time.short = [HH]:[mm]
+
+[typography]
+frenchspacing = yes
+hyphenrules = french
+lefthyphenmin = 2
+righthyphenmin = 3
+hyphenchar =
+prehyphenchar =
+posthyphenchar =
+exhyphenchar =
+preexhyphenchar =
+postexhyphenchar =
+hyphenationmin =
+; The syntax is liable to change in 'other' values
+hyphenate.other.locale = "27
+
+[characters]
+delimiters.quotes = «»«»
+auxiliary = [á å ä ã ā ć ē í ì ī ij ñ ó ò ö õ ø ř š ſ ß ú ǔ]
+exemplarCharacters = [a à â æ b c ç d e é è ê ë f g h i î ï j k l m n o ô œ p q r s t u ù û ü v w x y ÿ z]
+index = [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z]
+punctuation = [\\- ‐ ‑ – — , ; \\: ! ? . … ’ \" “ ” « » ( ) \\[ \\] § @ * / \\& # † ‡]
+
+[numbers]
+defaultNumberingSystem = latn
+minimumGroupingDigits = 1
+decimal = ,
+exponential = E
+group = .
+infinity = ∞
+list = ;
+minusSign = -
+nan = NaN
+perMille = ‰
+percentSign = %
+plusSign = +
+superscriptingExponent = ×
+
+[counters]
+date.day = 1\textsuperscript{er} 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
diff --git a/Master/texmf-dist/tex/generic/babel/locale/se/babel-se.ini b/Master/texmf-dist/tex/generic/babel/locale/se/babel-se.ini
index aad7841c9e1..51beda8d148 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/se/babel-se.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/se/babel-se.ini
@@ -9,11 +9,11 @@
[identification]
charset = utf8
-version = 1.2
-date = 2020-06-30
+version = 1.3
+date = 2023-05-02
name.local = davvisámegiella
name.english = Northern Sami
-name.babel = samin northernsami
+name.babel = northernsami samin
name.polyglossia = sami
tag.bcp47 = se
language.tag.bcp47 = se
diff --git a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-ijekavsk.tex b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-ijekavsk.tex
new file mode 100644
index 00000000000..ceaed7755f4
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-ijekavsk.tex
@@ -0,0 +1,12 @@
+% This file is part of babel. For further details see:
+% https://www.ctan.org/pkg/babel
+\ifx\BabelBeforeIni\undefined
+ \PackageError{babel}%
+ {This file is a component of babel and cannot\MessageBreak
+ be loaded directly. I'll stop immediately}%
+ {Just use babel as documented.}%
+ \stop
+\fi
+\BabelBeforeIni{sr-ijekavsk}{%
+}
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-latn-ijekavsk.tex b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-latn-ijekavsk.tex
new file mode 100644
index 00000000000..632c1b65d08
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-latn-ijekavsk.tex
@@ -0,0 +1,12 @@
+% This file is part of babel. For further details see:
+% https://www.ctan.org/pkg/babel
+\ifx\BabelBeforeIni\undefined
+ \PackageError{babel}%
+ {This file is a component of babel and cannot\MessageBreak
+ be loaded directly. I'll stop immediately}%
+ {Just use babel as documented.}%
+ \stop
+\fi
+\BabelBeforeIni{sr-Latn-ijekavsk}{%
+}
+\endinput \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-BA.ini b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-BA.ini
index e7d937f21cc..2ead1d09717 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-BA.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-BA.ini
@@ -6,11 +6,12 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; * With contributions by Uroš Stefanović.
[identification]
charset = utf8
-version = 1.5
-date = 2021-09-29
+version = 1.6
+date = 2023-04-31
name.local = српски
name.english = Serbian
name.babel = serbian-cyrillic-bosniaherzegovina serbian-cyrl-ba
@@ -30,14 +31,14 @@ derivate = no
[captions]
preface = Предговор
ref = Литература
-abstract = Абстракт
+abstract = Сажетак
bib = Библиографиjа
chapter = Глава
appendix = Додатак
contents = Садржаj
-listfigure = Листаслика
-listtable = Листатабела
-index = Индекспоjмова
+listfigure = Списак слика
+listtable = Списак табела
+index = Индекс
figure = Слика
table = Табела
part = Део
@@ -53,26 +54,42 @@ glossary = Речник
[captions.licr]
preface = \CYRP\cyrr\cyre\cyrd\cyrg\cyro\cyrv\cyro\cyrr
ref = \CYRL\cyri\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra
-abstract = \CYRA\cyrb\cyrs\cyrt\cyrr\cyra\cyrk\cyrt
-bib = \CYRB\cyri\cyrb\cyrl\cyri\cyro\cyrg\cyrr\cyra\cyrf\cyri j\cyra
+abstract = \CYRS\cyra\cyrzh\cyre\cyrt\cyra\cyrk
+bib = \CYRB\cyri\cyrb\cyrl\cyri\cyro\cyrg\cyrr\cyra\cyrf\cyri\cyrje\cyra
chapter = \CYRG\cyrl\cyra\cyrv\cyra
appendix = \CYRD\cyro\cyrd\cyra\cyrt\cyra\cyrk
-contents = \CYRS\cyra\cyrd\cyrr\cyrzh\cyra j
-listfigure = \CYRL\cyri\cyrs\cyrt\cyra\cyrs\cyrl\cyri\cyrk\cyra
-listtable = \CYRL\cyri\cyrs\cyrt\cyra\cyrt\cyra\cyrb\cyre\cyrl\cyra
-index = \CYRI\cyrn\cyrd\cyre\cyrk\cyrs\cyrp\cyro j\cyrm\cyro\cyrv\cyra
+contents = \CYRS\cyra\cyrd\cyrr\cyrzh\cyra\cyrje
+listfigure = \CYRS\cyrp\cyri\cyrs\cyra\cyrk\ \cyrs\cyrl\cyri\cyrk\cyra
+listtable = \CYRS\cyrp\cyri\cyrs\cyra\cyrk\ \cyrt\cyra\cyrb\cyre\cyrl\cyra
+index = \CYRI\cyrn\cyrd\cyre\cyrk\cyrs
figure = \CYRS\cyrl\cyri\cyrk\cyra
table = \CYRT\cyra\cyrb\cyre\cyrl\cyra
part = \CYRD\cyre\cyro
encl = \CYRP\cyrr\cyri\cyrl\cyro\cyrz\cyri
-cc = \CYRK\cyro\cyrp\cyri j\cyre
+cc = \CYRK\cyro\cyrp\cyri\cyrje\cyre
headto = \CYRP\cyrr\cyri\cyrm\cyra
page = \cyrs\cyrt\cyrr\cyra\cyrn\cyra
see = \cyrv\cyri\cyrd\cyri
-also = \cyrv\cyri\cyrd\cyri\cyrt\cyra\cyrk\cyro\cyrdje\cyre
+also = \cyrv\cyri\cyrd\cyri\ \cyrt\cyra\cyrk\cyro\cyrdje\cyre
proof = \CYRD\cyro\cyrk\cyra\cyrz
glossary = \CYRR\cyre\cyrch\cyrn\cyri\cyrk
+[date.gregorian.Genitive]
+date.long = [d].[ ][MMMM] [y].
+date.short = [d].[M].[yy].
+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.gregorian]
date.long = [d].[ ][MMMM] [y].
date.short = [d].[M].[yy].
@@ -100,20 +117,20 @@ months.narrow.9 = с
months.narrow.10 = о
months.narrow.11 = н
months.narrow.12 = д
-days.wide.mon = понедељак
+days.wide.mon = понедјељак
days.wide.tue = уторак
days.wide.wed = сриједа
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.fri = пет.
-days.abbreviated.sat = суб.
-days.abbreviated.sun = нед.
+days.abbreviated.mon = пон
+days.abbreviated.tue = уто
+days.abbreviated.wed = сри
+days.abbreviated.thu = чет
+days.abbreviated.fri = пет
+days.abbreviated.sat = суб
+days.abbreviated.sun = нед
days.narrow.mon = п
days.narrow.tue = у
days.narrow.wed = с
@@ -121,13 +138,27 @@ days.narrow.thu = ч
days.narrow.fri = п
days.narrow.sat = с
days.narrow.sun = н
-dayPeriods.abbreviated.am = прије подне
-dayPeriods.abbreviated.pm = по подне
-dayPeriods.narrow.am = a
-dayPeriods.narrow.pm = p
+dayPeriods.abbreviated.am = прије подне
+dayPeriods.abbreviated.pm = по подне
+dayPeriods.narrow.am = AM
+dayPeriods.narrow.pm = PM
dayPeriods.wide.am = прије подне
dayPeriods.wide.pm = по подне
+[date.gregorian.Genitive.licr]
+months.wide.1 = \cyrje\cyra\cyrn\cyru\cyra\cyrr\cyra
+months.wide.2 = \cyrf\cyre\cyrb\cyrr\cyru\cyra\cyrr\cyra
+months.wide.3 = \cyrm\cyra\cyrr\cyrt\cyra
+months.wide.4 = \cyra\cyrp\cyrr\cyri\cyrl\cyra
+months.wide.5 = \cyrm\cyra\cyrje\cyra
+months.wide.6 = \cyrje\cyru\cyrn\cyra
+months.wide.7 = \cyrje\cyru\cyrl\cyra
+months.wide.8 = \cyra\cyrv\cyrg\cyru\cyrs\cyrt\cyra
+months.wide.9 = \cyrs\cyre\cyrp\cyrt\cyre\cyrm\cyrb\cyrr\cyra
+months.wide.10 = \cyro\cyrk\cyrt\cyro\cyrb\cyrr\cyra
+months.wide.11 = \cyrn\cyro\cyrv\cyre\cyrm\cyrb\cyrr\cyra
+months.wide.12 = \cyrd\cyre\cyrc\cyre\cyrm\cyrb\cyrr\cyra
+
[date.gregorian.licr]
months.wide.1 = \cyrje\cyra\cyrn\cyru\cyra\cyrr
months.wide.2 = \cyrf\cyre\cyrb\cyrr\cyru\cyra\cyrr
@@ -147,10 +178,10 @@ time.medium = [HH]:[mm]:[ss]
time.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbianc
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -160,11 +191,11 @@ postexhyphenchar =
hyphenationmin =
[characters]
-delimiters.quotes = „“‘‘
-auxiliary = [ё й щ ъ ы ь э ю я]
+delimiters.quotes = „“’’
+auxiliary = [{а\u0302} {е\u0302} {и\u0302} {о\u0302} {у\u0302}]
exemplarCharacters = [а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш]
index = [А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш]
-punctuation = [\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
+punctuation = [\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
[numbers]
defaultNumberingSystem = latn
@@ -190,7 +221,7 @@ upper = А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У
transliteration.gajica.1.0 = { ([ln])j }
transliteration.gajica.1.1 = { string = {1|ln|љњ} }
transliteration.gajica.2.0 = { ([LN])[jJ] }
-transliteration.gajica.2.1 = { string = {1|LN|ЉЉ} }
+transliteration.gajica.2.1 = { string = {1|LN|ЉЊ} }
transliteration.gajica.3.0 = { dž }
transliteration.gajica.3.1 = { string = џ }
transliteration.gajica.4.0 = { D[žŽ] }
diff --git a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-ME.ini b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-ME.ini
index e61dc30a3d2..7984777f3f4 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-ME.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-ME.ini
@@ -6,20 +6,18 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; * With contributions by Uroš Stefanović.
[identification]
charset = utf8
-version = 1.5
-date = 2021-09-29
+version = 1.6
+date = 2023-04-31
name.local = српски
-name.english = Serbian
+name.english = Montenegrin
name.babel = serbian-cyrillic-montenegro serbian-cyrl-me
tag.bcp47 = sr-Cyrl-ME
language.tag.bcp47 = sr
tag.opentype = SRB
-region.local = Црна Гора
-region.english = Montenegro
-region.tag.bcp47 = ME
script.name = Cyrillic
script.tag.bcp47 = Cyrl
script.tag.opentype = cyrl
@@ -30,14 +28,14 @@ derivate = no
[captions]
preface = Предговор
ref = Литература
-abstract = Абстракт
+abstract = Сажетак
bib = Библиографиjа
chapter = Глава
appendix = Додатак
contents = Садржаj
-listfigure = Листаслика
-listtable = Листатабела
-index = Индекспоjмова
+listfigure = Списак слика
+listtable = Списак табела
+index = Индекс
figure = Слика
table = Табела
part = Део
@@ -53,26 +51,42 @@ glossary = Речник
[captions.licr]
preface = \CYRP\cyrr\cyre\cyrd\cyrg\cyro\cyrv\cyro\cyrr
ref = \CYRL\cyri\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra
-abstract = \CYRA\cyrb\cyrs\cyrt\cyrr\cyra\cyrk\cyrt
-bib = \CYRB\cyri\cyrb\cyrl\cyri\cyro\cyrg\cyrr\cyra\cyrf\cyri j\cyra
+abstract = \CYRS\cyra\cyrzh\cyre\cyrt\cyra\cyrk
+bib = \CYRB\cyri\cyrb\cyrl\cyri\cyro\cyrg\cyrr\cyra\cyrf\cyri\cyrje\cyra
chapter = \CYRG\cyrl\cyra\cyrv\cyra
appendix = \CYRD\cyro\cyrd\cyra\cyrt\cyra\cyrk
-contents = \CYRS\cyra\cyrd\cyrr\cyrzh\cyra j
-listfigure = \CYRL\cyri\cyrs\cyrt\cyra\cyrs\cyrl\cyri\cyrk\cyra
-listtable = \CYRL\cyri\cyrs\cyrt\cyra\cyrt\cyra\cyrb\cyre\cyrl\cyra
-index = \CYRI\cyrn\cyrd\cyre\cyrk\cyrs\cyrp\cyro j\cyrm\cyro\cyrv\cyra
+contents = \CYRS\cyra\cyrd\cyrr\cyrzh\cyra\cyrje
+listfigure = \CYRS\cyrp\cyri\cyrs\cyra\cyrk\ \cyrs\cyrl\cyri\cyrk\cyra
+listtable = \CYRS\cyrp\cyri\cyrs\cyra\cyrk\ \cyrt\cyra\cyrb\cyre\cyrl\cyra
+index = \CYRI\cyrn\cyrd\cyre\cyrk\cyrs
figure = \CYRS\cyrl\cyri\cyrk\cyra
table = \CYRT\cyra\cyrb\cyre\cyrl\cyra
part = \CYRD\cyre\cyro
encl = \CYRP\cyrr\cyri\cyrl\cyro\cyrz\cyri
-cc = \CYRK\cyro\cyrp\cyri j\cyre
+cc = \CYRK\cyro\cyrp\cyri\cyrje\cyre
headto = \CYRP\cyrr\cyri\cyrm\cyra
page = \cyrs\cyrt\cyrr\cyra\cyrn\cyra
see = \cyrv\cyri\cyrd\cyri
-also = \cyrv\cyri\cyrd\cyri\cyrt\cyra\cyrk\cyro\cyrdje\cyre
+also = \cyrv\cyri\cyrd\cyri\ \cyrt\cyra\cyrk\cyro\cyrdje\cyre
proof = \CYRD\cyro\cyrk\cyra\cyrz
glossary = \CYRR\cyre\cyrch\cyrn\cyri\cyrk
+[date.gregorian.Genitive]
+date.long = [d].[ ][MMMM] [y].
+date.short = [d].[M].[yy].
+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.gregorian]
date.long = [d].[ ][MMMM] [y].
date.short = [d].[M].[yy].
@@ -107,13 +121,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.fri = пет.
-days.abbreviated.sat = суб.
-days.abbreviated.sun = нед.
+days.abbreviated.mon = пон
+days.abbreviated.tue = уто
+days.abbreviated.wed = сре
+days.abbreviated.thu = чет
+days.abbreviated.fri = пет
+days.abbreviated.sat = суб
+days.abbreviated.sun = нед
days.narrow.mon = п
days.narrow.tue = у
days.narrow.wed = с
@@ -121,13 +135,27 @@ days.narrow.thu = ч
days.narrow.fri = п
days.narrow.sat = с
days.narrow.sun = н
-dayPeriods.abbreviated.am = прије подне
-dayPeriods.abbreviated.pm = по подне
-dayPeriods.narrow.am = a
-dayPeriods.narrow.pm = p
+dayPeriods.abbreviated.am = прије подне
+dayPeriods.abbreviated.pm = по подне
+dayPeriods.narrow.am = AM
+dayPeriods.narrow.pm = PM
dayPeriods.wide.am = прије подне
dayPeriods.wide.pm = по подне
+[date.gregorian.Genitive.licr]
+months.wide.1 = \cyrje\cyra\cyrn\cyru\cyra\cyrr\cyra
+months.wide.2 = \cyrf\cyre\cyrb\cyrr\cyru\cyra\cyrr\cyra
+months.wide.3 = \cyrm\cyra\cyrr\cyrt\cyra
+months.wide.4 = \cyra\cyrp\cyrr\cyri\cyrl\cyra
+months.wide.5 = \cyrm\cyra\cyrje\cyra
+months.wide.6 = \cyrje\cyru\cyrn\cyra
+months.wide.7 = \cyrje\cyru\cyrl\cyra
+months.wide.8 = \cyra\cyrv\cyrg\cyru\cyrs\cyrt\cyra
+months.wide.9 = \cyrs\cyre\cyrp\cyrt\cyre\cyrm\cyrb\cyrr\cyra
+months.wide.10 = \cyro\cyrk\cyrt\cyro\cyrb\cyrr\cyra
+months.wide.11 = \cyrn\cyro\cyrv\cyre\cyrm\cyrb\cyrr\cyra
+months.wide.12 = \cyrd\cyre\cyrc\cyre\cyrm\cyrb\cyrr\cyra
+
[date.gregorian.licr]
months.wide.1 = \cyrje\cyra\cyrn\cyru\cyra\cyrr
months.wide.2 = \cyrf\cyre\cyrb\cyrr\cyru\cyra\cyrr
@@ -147,10 +175,10 @@ time.medium = [HH]:[mm]:[ss]
time.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbianc
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -160,11 +188,11 @@ postexhyphenchar =
hyphenationmin =
[characters]
-delimiters.quotes = „“‘‘
-auxiliary = [ё й щ ъ ы ь э ю я]
+delimiters.quotes = „“’’
+auxiliary = [{а\u0302} {е\u0302} {и\u0302} {о\u0302} {у\u0302}]
exemplarCharacters = [а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш]
index = [А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш]
-punctuation = [\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
+punctuation = [\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
[numbers]
defaultNumberingSystem = latn
diff --git a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-XK.ini b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-XK.ini
index 9183624065e..d2711a3f005 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-XK.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-XK.ini
@@ -6,20 +6,18 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; * With contributions by Uroš Stefanović.
[identification]
charset = utf8
-version = 1.5
-date = 2021-09-29
+version = 1.6
+date = 2023-04-31
name.local = српски
name.english = Serbian
name.babel = serbian-cyrillic-kosovo serbian-cyrl-xk
tag.bcp47 = sr-Cyrl-XK
language.tag.bcp47 = sr
tag.opentype = SRB
-region.local = Косово
-region.english = Kosovo
-region.tag.bcp47 = XK
script.name = Cyrillic
script.tag.bcp47 = Cyrl
script.tag.opentype = cyrl
@@ -30,14 +28,14 @@ derivate = no
[captions]
preface = Предговор
ref = Литература
-abstract = Абстракт
+abstract = Сажетак
bib = Библиографиjа
chapter = Глава
appendix = Додатак
contents = Садржаj
-listfigure = Листаслика
-listtable = Листатабела
-index = Индекспоjмова
+listfigure = Списак слика
+listtable = Списак табела
+index = Индекс
figure = Слика
table = Табела
part = Део
@@ -53,26 +51,42 @@ glossary = Речник
[captions.licr]
preface = \CYRP\cyrr\cyre\cyrd\cyrg\cyro\cyrv\cyro\cyrr
ref = \CYRL\cyri\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra
-abstract = \CYRA\cyrb\cyrs\cyrt\cyrr\cyra\cyrk\cyrt
-bib = \CYRB\cyri\cyrb\cyrl\cyri\cyro\cyrg\cyrr\cyra\cyrf\cyri j\cyra
+abstract = \CYRS\cyra\cyrzh\cyre\cyrt\cyra\cyrk
+bib = \CYRB\cyri\cyrb\cyrl\cyri\cyro\cyrg\cyrr\cyra\cyrf\cyri\cyrje\cyra
chapter = \CYRG\cyrl\cyra\cyrv\cyra
appendix = \CYRD\cyro\cyrd\cyra\cyrt\cyra\cyrk
-contents = \CYRS\cyra\cyrd\cyrr\cyrzh\cyra j
-listfigure = \CYRL\cyri\cyrs\cyrt\cyra\cyrs\cyrl\cyri\cyrk\cyra
-listtable = \CYRL\cyri\cyrs\cyrt\cyra\cyrt\cyra\cyrb\cyre\cyrl\cyra
-index = \CYRI\cyrn\cyrd\cyre\cyrk\cyrs\cyrp\cyro j\cyrm\cyro\cyrv\cyra
+contents = \CYRS\cyra\cyrd\cyrr\cyrzh\cyra\cyrje
+listfigure = \CYRS\cyrp\cyri\cyrs\cyra\cyrk\ \cyrs\cyrl\cyri\cyrk\cyra
+listtable = \CYRS\cyrp\cyri\cyrs\cyra\cyrk\ \cyrt\cyra\cyrb\cyre\cyrl\cyra
+index = \CYRI\cyrn\cyrd\cyre\cyrk\cyrs
figure = \CYRS\cyrl\cyri\cyrk\cyra
table = \CYRT\cyra\cyrb\cyre\cyrl\cyra
part = \CYRD\cyre\cyro
encl = \CYRP\cyrr\cyri\cyrl\cyro\cyrz\cyri
-cc = \CYRK\cyro\cyrp\cyri j\cyre
+cc = \CYRK\cyro\cyrp\cyri\cyrje\cyre
headto = \CYRP\cyrr\cyri\cyrm\cyra
page = \cyrs\cyrt\cyrr\cyra\cyrn\cyra
see = \cyrv\cyri\cyrd\cyri
-also = \cyrv\cyri\cyrd\cyri\cyrt\cyra\cyrk\cyro\cyrdje\cyre
+also = \cyrv\cyri\cyrd\cyri\ \cyrt\cyra\cyrk\cyro\cyrdje\cyre
proof = \CYRD\cyro\cyrk\cyra\cyrz
glossary = \CYRR\cyre\cyrch\cyrn\cyri\cyrk
+[date.gregorian.Genitive]
+date.long = [d].[ ][MMMM] [y].
+date.short = [d].[M].[yy].
+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.gregorian]
date.long = [d].[ ][MMMM] [y].
date.short = [d].[M].[yy].
@@ -107,13 +121,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.fri = пет.
-days.abbreviated.sat = суб.
-days.abbreviated.sun = нед.
+days.abbreviated.mon = пон
+days.abbreviated.tue = уто
+days.abbreviated.wed = сре
+days.abbreviated.thu = чет
+days.abbreviated.fri = пет
+days.abbreviated.sat = суб
+days.abbreviated.sun = нед
days.narrow.mon = п
days.narrow.tue = у
days.narrow.wed = с
@@ -123,10 +137,24 @@ days.narrow.sat = с
days.narrow.sun = н
dayPeriods.abbreviated.am = пре подне
dayPeriods.abbreviated.pm = по подне
-dayPeriods.narrow.am = a
-dayPeriods.narrow.pm = p
-dayPeriods.wide.am = пре подне
-dayPeriods.wide.pm = по подне
+dayPeriods.narrow.am = AM
+dayPeriods.narrow.pm = PM
+dayPeriods.wide.am = AM
+dayPeriods.wide.pm = PM
+
+[date.gregorian.Genitive.licr]
+months.wide.1 = \cyrje\cyra\cyrn\cyru\cyra\cyrr\cyra
+months.wide.2 = \cyrf\cyre\cyrb\cyrr\cyru\cyra\cyrr\cyra
+months.wide.3 = \cyrm\cyra\cyrr\cyrt\cyra
+months.wide.4 = \cyra\cyrp\cyrr\cyri\cyrl\cyra
+months.wide.5 = \cyrm\cyra\cyrje\cyra
+months.wide.6 = \cyrje\cyru\cyrn\cyra
+months.wide.7 = \cyrje\cyru\cyrl\cyra
+months.wide.8 = \cyra\cyrv\cyrg\cyru\cyrs\cyrt\cyra
+months.wide.9 = \cyrs\cyre\cyrp\cyrt\cyre\cyrm\cyrb\cyrr\cyra
+months.wide.10 = \cyro\cyrk\cyrt\cyro\cyrb\cyrr\cyra
+months.wide.11 = \cyrn\cyro\cyrv\cyre\cyrm\cyrb\cyrr\cyra
+months.wide.12 = \cyrd\cyre\cyrc\cyre\cyrm\cyrb\cyrr\cyra
[date.gregorian.licr]
months.wide.1 = \cyrje\cyra\cyrn\cyru\cyra\cyrr
@@ -147,10 +175,10 @@ time.medium = [HH]:[mm]:[ss]
time.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbianc
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -160,11 +188,11 @@ postexhyphenchar =
hyphenationmin =
[characters]
-delimiters.quotes = „“‘‘
-auxiliary = [ё й щ ъ ы ь э ю я]
+delimiters.quotes = „“’’
+auxiliary = [{а\u0302} {е\u0302} {и\u0302} {о\u0302} {у\u0302}]
exemplarCharacters = [а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш]
index = [А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш]
-punctuation = [\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
+punctuation = [\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
[numbers]
defaultNumberingSystem = latn
diff --git a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl.ini b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl.ini
index 2d06ed53efc..4751d68896d 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl.ini
@@ -6,11 +6,12 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; * With contributions by Uroš Stefanović.
[identification]
charset = utf8
-version = 1.5
-date = 2021-09-29
+version = 1.6
+date = 2023-04-31
name.local = српски
name.english = Serbian
name.babel = serbian-cyrillic serbian-cyrl
@@ -27,14 +28,14 @@ derivate = no
[captions]
preface = Предговор
ref = Литература
-abstract = Абстракт
+abstract = Сажетак
bib = Библиографиjа
chapter = Глава
appendix = Додатак
contents = Садржаj
-listfigure = Листаслика
-listtable = Листатабела
-index = Индекспоjмова
+listfigure = Списак слика
+listtable = Списак табела
+index = Индекс
figure = Слика
table = Табела
part = Део
@@ -50,26 +51,42 @@ glossary = Речник
[captions.licr]
preface = \CYRP\cyrr\cyre\cyrd\cyrg\cyro\cyrv\cyro\cyrr
ref = \CYRL\cyri\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra
-abstract = \CYRA\cyrb\cyrs\cyrt\cyrr\cyra\cyrk\cyrt
-bib = \CYRB\cyri\cyrb\cyrl\cyri\cyro\cyrg\cyrr\cyra\cyrf\cyri j\cyra
+abstract = \CYRS\cyra\cyrzh\cyre\cyrt\cyra\cyrk
+bib = \CYRB\cyri\cyrb\cyrl\cyri\cyro\cyrg\cyrr\cyra\cyrf\cyri\cyrje\cyra
chapter = \CYRG\cyrl\cyra\cyrv\cyra
appendix = \CYRD\cyro\cyrd\cyra\cyrt\cyra\cyrk
-contents = \CYRS\cyra\cyrd\cyrr\cyrzh\cyra j
-listfigure = \CYRL\cyri\cyrs\cyrt\cyra\cyrs\cyrl\cyri\cyrk\cyra
-listtable = \CYRL\cyri\cyrs\cyrt\cyra\cyrt\cyra\cyrb\cyre\cyrl\cyra
-index = \CYRI\cyrn\cyrd\cyre\cyrk\cyrs\cyrp\cyro j\cyrm\cyro\cyrv\cyra
+contents = \CYRS\cyra\cyrd\cyrr\cyrzh\cyra\cyrje
+listfigure = \CYRS\cyrp\cyri\cyrs\cyra\cyrk\ \cyrs\cyrl\cyri\cyrk\cyra
+listtable = \CYRS\cyrp\cyri\cyrs\cyra\cyrk\ \cyrt\cyra\cyrb\cyre\cyrl\cyra
+index = \CYRI\cyrn\cyrd\cyre\cyrk\cyrs
figure = \CYRS\cyrl\cyri\cyrk\cyra
table = \CYRT\cyra\cyrb\cyre\cyrl\cyra
part = \CYRD\cyre\cyro
encl = \CYRP\cyrr\cyri\cyrl\cyro\cyrz\cyri
-cc = \CYRK\cyro\cyrp\cyri j\cyre
+cc = \CYRK\cyro\cyrp\cyri\cyrje\cyre
headto = \CYRP\cyrr\cyri\cyrm\cyra
page = \cyrs\cyrt\cyrr\cyra\cyrn\cyra
see = \cyrv\cyri\cyrd\cyri
-also = \cyrv\cyri\cyrd\cyri\cyrt\cyra\cyrk\cyro\cyrdje\cyre
+also = \cyrv\cyri\cyrd\cyri\ \cyrt\cyra\cyrk\cyro\cyrdje\cyre
proof = \CYRD\cyro\cyrk\cyra\cyrz
glossary = \CYRR\cyre\cyrch\cyrn\cyri\cyrk
+[date.gregorian.Genitive]
+date.long = [d].[ ][MMMM] [y].
+date.short = [d].[M].[yy].
+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.gregorian]
date.long = [d].[ ][MMMM] [y].
date.short = [d].[M].[yy].
@@ -120,10 +137,24 @@ days.narrow.sat = с
days.narrow.sun = н
dayPeriods.abbreviated.am = пре подне
dayPeriods.abbreviated.pm = по подне
-dayPeriods.narrow.am = a
-dayPeriods.narrow.pm = p
-dayPeriods.wide.am = пре подне
-dayPeriods.wide.pm = по подне
+dayPeriods.narrow.am = AM
+dayPeriods.narrow.pm = PM
+dayPeriods.wide.am = AM
+dayPeriods.wide.pm = PM
+
+[date.gregorian.Genitive.licr]
+months.wide.1 = \cyrje\cyra\cyrn\cyru\cyra\cyrr\cyra
+months.wide.2 = \cyrf\cyre\cyrb\cyrr\cyru\cyra\cyrr\cyra
+months.wide.3 = \cyrm\cyra\cyrr\cyrt\cyra
+months.wide.4 = \cyra\cyrp\cyrr\cyri\cyrl\cyra
+months.wide.5 = \cyrm\cyra\cyrje\cyra
+months.wide.6 = \cyrje\cyru\cyrn\cyra
+months.wide.7 = \cyrje\cyru\cyrl\cyra
+months.wide.8 = \cyra\cyrv\cyrg\cyru\cyrs\cyrt\cyra
+months.wide.9 = \cyrs\cyre\cyrp\cyrt\cyre\cyrm\cyrb\cyrr\cyra
+months.wide.10 = \cyro\cyrk\cyrt\cyro\cyrb\cyrr\cyra
+months.wide.11 = \cyrn\cyro\cyrv\cyre\cyrm\cyrb\cyrr\cyra
+months.wide.12 = \cyrd\cyre\cyrc\cyre\cyrm\cyrb\cyrr\cyra
[date.gregorian.licr]
months.wide.1 = \cyrje\cyra\cyrn\cyru\cyra\cyrr
@@ -144,10 +175,10 @@ time.medium = [HH]:[mm]:[ss]
time.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbianc
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -157,11 +188,11 @@ postexhyphenchar =
hyphenationmin =
[characters]
-delimiters.quotes = „“‘‘
-auxiliary = [ё й щ ъ ы ь э ю я]
+delimiters.quotes = „“’’
+auxiliary = [{а\u0302} {е\u0302} {и\u0302} {о\u0302} {у\u0302}]
exemplarCharacters = [а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш]
index = [А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш]
-punctuation = [\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
+punctuation = [\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
[numbers]
defaultNumberingSystem = latn
@@ -187,7 +218,7 @@ upper = А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У
transliteration.gajica.1.0 = { ([ln])j }
transliteration.gajica.1.1 = { string = {1|ln|љњ} }
transliteration.gajica.2.0 = { ([LN])[jJ] }
-transliteration.gajica.2.1 = { string = {1|LN|ЉЉ} }
+transliteration.gajica.2.1 = { string = {1|LN|ЉЊ} }
transliteration.gajica.3.0 = { dž }
transliteration.gajica.3.1 = { string = џ }
transliteration.gajica.4.0 = { D[žŽ] }
diff --git a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-BA.ini b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-BA.ini
index c0b7ae63940..6aef2efeb3f 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-BA.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-BA.ini
@@ -6,11 +6,12 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; * With contributions by Uroš Stefanović.
[identification]
charset = utf8
-version = 1.2
-date = 2020-06-30
+version = 1.3
+date = 2023-04-31
name.local = srpski
name.english = Serbian
name.babel = serbian-latin-bosniaherzegovina serbian-latn-ba
@@ -18,8 +19,6 @@ tag.bcp47 = sr-Latn-BA
language.tag.bcp47 = sr
tag.opentype = SRB
region.local = Bosna i Hercegovina
-region.english = Bosnia & Herzegovina
-region.tag.bcp47 = BA
script.name = Latin
script.tag.bcp47 = Latn
script.tag.opentype = latn
@@ -35,8 +34,8 @@ bib = Bibliografija
chapter = Glava
appendix = Dodatak
contents = Sadržaj
-listfigure = Slike
-listtable = Tabele
+listfigure = Spisak slika
+listtable = Spisak tabela
index = Indeks
figure = Slika
table = Tabela
@@ -44,11 +43,11 @@ part = Deo
encl = Prilozi
cc = Kopije
headto = Prima
-page = Strana
-see = Vidi
-also = Vidi takođe
+page = strana
+see = vidi
+also = vidi takođe
proof = Dokaz
-glossary = Glossary
+glossary = Rečnik
[captions.licr]
preface = Predgovor
@@ -58,8 +57,8 @@ bib = Bibliografija
chapter = Glava
appendix = Dodatak
contents = Sadr\v zaj
-listfigure = Slike
-listtable = Tabele
+listfigure = Spisak slika
+listtable = Spisak tabela
index = Indeks
figure = Slika
table = Tabela
@@ -67,14 +66,14 @@ part = Deo
encl = Prilozi
cc = Kopije
headto = Prima
-page = Strana
-see = Vidi
-also = Vidi tako\dj e
+page = strana
+see = vidi
+also = vidi tako\dj e
proof = Dokaz
-glossary = Glossary
+glossary = Re\v cnik
[date.gregorian]
-date.long = [d].[ ][MMMM] [y]
+date.long = [d]. [MMMM] [y].
date.short = [d].[M].[yy].
months.wide.1 = januar
months.wide.2 = februar
@@ -100,20 +99,20 @@ months.narrow.9 = s
months.narrow.10 = o
months.narrow.11 = n
months.narrow.12 = d
-days.wide.mon = ponedeljak
+days.wide.mon = ponedjeljak
days.wide.tue = utorak
days.wide.wed = srijeda
days.wide.thu = četvrtak
days.wide.fri = petak
days.wide.sat = subota
days.wide.sun = nedjelja
-days.abbreviated.mon = pon.
-days.abbreviated.tue = ut.
-days.abbreviated.wed = sr.
-days.abbreviated.thu = čet.
-days.abbreviated.fri = pet.
-days.abbreviated.sat = sub.
-days.abbreviated.sun = ned.
+days.abbreviated.mon = pon
+days.abbreviated.tue = uto
+days.abbreviated.wed = sri
+days.abbreviated.thu = čet
+days.abbreviated.fri = pet
+days.abbreviated.sat = sub
+days.abbreviated.sun = ned
days.narrow.mon = p
days.narrow.tue = u
days.narrow.wed = s
@@ -121,10 +120,10 @@ days.narrow.thu = č
days.narrow.fri = p
days.narrow.sat = s
days.narrow.sun = n
-dayPeriods.abbreviated.am = prije podne
-dayPeriods.abbreviated.pm = po podne
-dayPeriods.narrow.am = a
-dayPeriods.narrow.pm = p
+dayPeriods.abbreviated.am = prije podne
+dayPeriods.abbreviated.pm = po podne
+dayPeriods.narrow.am = AM
+dayPeriods.narrow.pm = PM
dayPeriods.wide.am = prije podne
dayPeriods.wide.pm = po podne
@@ -147,10 +146,10 @@ time.medium = [HH]:[mm]:[ss]
time.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbian
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -160,11 +159,11 @@ postexhyphenchar =
hyphenationmin =
[characters]
-delimiters.quotes = „“‘‘
+delimiters.quotes = „“’’
auxiliary = [å q w x y]
exemplarCharacters = [a b c č ć d {dž} đ e f g h i j k l {lj} m n {nj} o p r s š t u v z ž]
index = [A B C Č Ć D {DŽ} E F G H I J K L {LJ} M N {NJ} O P Q R S Š T U V W X Y Z Ž]
-punctuation = [\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
+punctuation = [\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
[numbers]
defaultNumberingSystem = latn
diff --git a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ME.ini b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ME.ini
index d02aa5898ad..f034f4bbfee 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ME.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ME.ini
@@ -6,13 +6,14 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; * With contributions by Uroš Stefanović.
[identification]
charset = utf8
-version = 1.3
-date = 2021-09-29
+version = 1.4
+date = 2023-04-31
name.local = srpski
-name.english = Serbian
+name.english = Montenegrin
name.babel = serbian-latin-montenegro serbian-latn-me
tag.bcp47 = sr-Latn-ME
language.tag.bcp47 = sr
@@ -35,8 +36,8 @@ bib = Bibliografija
chapter = Glava
appendix = Dodatak
contents = Sadržaj
-listfigure = Slike
-listtable = Tabele
+listfigure = Spisak slika
+listtable = Spisak tabela
index = Indeks
figure = Slika
table = Tabela
@@ -44,11 +45,11 @@ part = Deo
encl = Prilozi
cc = Kopije
headto = Prima
-page = Strana
-see = Vidi
-also = Vidi takođe
+page = strana
+see = vidi
+also = vidi takođe
proof = Dokaz
-glossary = Glossary
+glossary = Rečnik
[captions.licr]
preface = Predgovor
@@ -58,8 +59,8 @@ bib = Bibliografija
chapter = Glava
appendix = Dodatak
contents = Sadr\v zaj
-listfigure = Slike
-listtable = Tabele
+listfigure = Spisak slika
+listtable = Spisak tabela
index = Indeks
figure = Slika
table = Tabela
@@ -67,14 +68,14 @@ part = Deo
encl = Prilozi
cc = Kopije
headto = Prima
-page = Strana
-see = Vidi
-also = Vidi tako\dj e
+page = strana
+see = vidi
+also = vidi tako\dj e
proof = Dokaz
-glossary = Glossary
+glossary = Re\v cnik
[date.gregorian]
-date.long = [d].[ ][MMMM] [y]
+date.long = [d]. [MMMM] [y].
date.short = [d].[M].[yy].
months.wide.1 = januar
months.wide.2 = februar
@@ -107,13 +108,13 @@ days.wide.thu = četvrtak
days.wide.fri = petak
days.wide.sat = subota
days.wide.sun = nedjelja
-days.abbreviated.mon = pon.
-days.abbreviated.tue = ut.
-days.abbreviated.wed = sr.
-days.abbreviated.thu = čet.
-days.abbreviated.fri = pet.
-days.abbreviated.sat = sub.
-days.abbreviated.sun = ned.
+days.abbreviated.mon = pon
+days.abbreviated.tue = uto
+days.abbreviated.wed = sre
+days.abbreviated.thu = čet
+days.abbreviated.fri = pet
+days.abbreviated.sat = sub
+days.abbreviated.sun = ned
days.narrow.mon = p
days.narrow.tue = u
days.narrow.wed = s
@@ -121,10 +122,10 @@ days.narrow.thu = č
days.narrow.fri = p
days.narrow.sat = s
days.narrow.sun = n
-dayPeriods.abbreviated.am = prije podne
-dayPeriods.abbreviated.pm = po podne
-dayPeriods.narrow.am = a
-dayPeriods.narrow.pm = p
+dayPeriods.abbreviated.am = prije podne
+dayPeriods.abbreviated.pm = po podne
+dayPeriods.narrow.am = AM
+dayPeriods.narrow.pm = PM
dayPeriods.wide.am = prije podne
dayPeriods.wide.pm = po podne
@@ -147,10 +148,10 @@ time.medium = [HH]:[mm]:[ss]
time.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbian
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -160,11 +161,11 @@ postexhyphenchar =
hyphenationmin =
[characters]
-delimiters.quotes = „“‘‘
+delimiters.quotes = „“’’
auxiliary = [å q w x y]
exemplarCharacters = [a b c č ć d {dž} đ e f g h i j k l {lj} m n {nj} o p r s š t u v z ž]
index = [A B C Č Ć D {DŽ} E F G H I J K L {LJ} M N {NJ} O P Q R S Š T U V W X Y Z Ž]
-punctuation = [\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
+punctuation = [\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
[numbers]
defaultNumberingSystem = latn
diff --git a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-XK.ini b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-XK.ini
index 202e40de458..fe89ff3e12b 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-XK.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-XK.ini
@@ -6,11 +6,12 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; * With contributions by Uroš Stefanović.
[identification]
charset = utf8
-version = 1.3
-date = 2021-09-29
+version = 1.4
+date = 2023-04-31
name.local = srpski
name.english = Serbian
name.babel = serbian-latin-kosovo serbian-latn-xk
@@ -18,8 +19,6 @@ tag.bcp47 = sr-Latn-XK
language.tag.bcp47 = sr
tag.opentype = SRB
region.local = Kosovo
-region.english = Kosovo
-region.tag.bcp47 = XK
script.name = Latin
script.tag.bcp47 = Latn
script.tag.opentype = latn
@@ -35,8 +34,8 @@ bib = Bibliografija
chapter = Glava
appendix = Dodatak
contents = Sadržaj
-listfigure = Slike
-listtable = Tabele
+listfigure = Spisak slika
+listtable = Spisak tabela
index = Indeks
figure = Slika
table = Tabela
@@ -44,11 +43,11 @@ part = Deo
encl = Prilozi
cc = Kopije
headto = Prima
-page = Strana
-see = Vidi
-also = Vidi takođe
+page = strana
+see = vidi
+also = vidi takođe
proof = Dokaz
-glossary = Glossary
+glossary = Rečnik
[captions.licr]
preface = Predgovor
@@ -58,8 +57,8 @@ bib = Bibliografija
chapter = Glava
appendix = Dodatak
contents = Sadr\v zaj
-listfigure = Slike
-listtable = Tabele
+listfigure = Spisak slika
+listtable = Spisak tabela
index = Indeks
figure = Slika
table = Tabela
@@ -67,14 +66,14 @@ part = Deo
encl = Prilozi
cc = Kopije
headto = Prima
-page = Strana
-see = Vidi
-also = Vidi tako\dj e
+page = strana
+see = vidi
+also = vidi tako\dj e
proof = Dokaz
-glossary = Glossary
+glossary = Re\v cnik
[date.gregorian]
-date.long = [d].[ ][MMMM] [y]
+date.long = [d]. [MMMM] [y].
date.short = [d].[M].[yy].
months.wide.1 = januar
months.wide.2 = februar
@@ -107,13 +106,13 @@ days.wide.thu = četvrtak
days.wide.fri = petak
days.wide.sat = subota
days.wide.sun = nedelja
-days.abbreviated.mon = pon.
-days.abbreviated.tue = ut.
-days.abbreviated.wed = sr.
-days.abbreviated.thu = čet.
-days.abbreviated.fri = pet.
-days.abbreviated.sat = sub.
-days.abbreviated.sun = ned.
+days.abbreviated.mon = pon
+days.abbreviated.tue = uto
+days.abbreviated.wed = sre
+days.abbreviated.thu = čet
+days.abbreviated.fri = pet
+days.abbreviated.sat = sub
+days.abbreviated.sun = ned
days.narrow.mon = p
days.narrow.tue = u
days.narrow.wed = s
@@ -123,10 +122,10 @@ days.narrow.sat = s
days.narrow.sun = n
dayPeriods.abbreviated.am = pre podne
dayPeriods.abbreviated.pm = po podne
-dayPeriods.narrow.am = a
-dayPeriods.narrow.pm = p
-dayPeriods.wide.am = pre podne
-dayPeriods.wide.pm = po podne
+dayPeriods.narrow.am = AM
+dayPeriods.narrow.pm = PM
+dayPeriods.wide.am = AM
+dayPeriods.wide.pm = PM
[date.gregorian.licr]
months.wide.1 = januar
@@ -147,10 +146,10 @@ time.medium = [HH]:[mm]:[ss]
time.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbian
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -160,11 +159,11 @@ postexhyphenchar =
hyphenationmin =
[characters]
-delimiters.quotes = „“‘‘
+delimiters.quotes = „“’’
auxiliary = [å q w x y]
exemplarCharacters = [a b c č ć d {dž} đ e f g h i j k l {lj} m n {nj} o p r s š t u v z ž]
index = [A B C Č Ć D {DŽ} E F G H I J K L {LJ} M N {NJ} O P Q R S Š T U V W X Y Z Ž]
-punctuation = [\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
+punctuation = [\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
[numbers]
defaultNumberingSystem = latn
diff --git a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ijekavsk.ini b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ijekavsk.ini
new file mode 100644
index 00000000000..7195219d1e0
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ijekavsk.ini
@@ -0,0 +1,186 @@
+; 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):
+; https://www.ctan.org/pkg/babel-contrib
+; * polyglossia language styles (license LPPL)
+; https://www.ctan.org/pkg/polyglossia
+; * Common Locale Data Repository (license Unicode):
+; http://cldr.unicode.org/
+; http://unicode.org/copyright.html
+; * With contributions by Uroš Stefanović.
+
+[identification]
+charset = utf8
+version = 1.1
+date = 2023-04-31
+name.local = srpski
+name.english = Serbian
+name.babel = serbian-latin-ijekavsk serbian-latn-ijekavsk serbian.ijekav
+name.polyglossia = serbian
+tag.bcp47 = sr-Latn-ijekavsk
+language.tag.bcp47 = sr
+tag.bcp47.likely = sr-Latn-RS-ijekavsk
+tag.opentype = SRB
+script.name = Latin
+script.tag.bcp47 = Latn
+script.tag.opentype = latn
+level = 1
+encodings = T1 OT1 LY1
+derivate = no
+
+[captions]
+preface = Predgovor
+ref = Literatura
+abstract = Sažetak
+bib = Bibliografija
+chapter = Glava
+appendix = Dodatak
+contents = Sadržaj
+listfigure = Spisak slika
+listtable = Spisak tabela
+index = Indeks
+figure = Slika
+table = Tabela
+part = Dio
+encl = Prilozi
+cc = Kopije
+headto = Prima
+page = strana
+see = vidi
+also = vidi takođe
+proof = Dokaz
+glossary = Rječnik
+
+[captions.licr]
+preface = Predgovor
+ref = Literatura
+abstract = Sa\v zetak
+bib = Bibliografija
+chapter = Glava
+appendix = Dodatak
+contents = Sadr\v zaj
+listfigure = Spisak slika
+listtable = Spisak tabela
+index = Indeks
+figure = Slika
+table = Tabela
+part = Dio
+encl = Prilozi
+cc = Kopije
+headto = Prima
+page = strana
+see = vidi
+also = vidi tako\dj e
+proof = Dokaz
+glossary = Rje\v cnik
+
+[date.gregorian]
+date.long = [d]. [MMMM] [y].
+date.short = [d].[M].[yy].
+months.wide.1 = januar
+months.wide.2 = februar
+months.wide.3 = mart
+months.wide.4 = april
+months.wide.5 = maj
+months.wide.6 = jun
+months.wide.7 = jul
+months.wide.8 = avgust
+months.wide.9 = septembar
+months.wide.10 = oktobar
+months.wide.11 = novembar
+months.wide.12 = decembar
+months.narrow.1 = j
+months.narrow.2 = f
+months.narrow.3 = m
+months.narrow.4 = a
+months.narrow.5 = m
+months.narrow.6 = j
+months.narrow.7 = j
+months.narrow.8 = a
+months.narrow.9 = s
+months.narrow.10 = o
+months.narrow.11 = n
+months.narrow.12 = d
+days.wide.mon = ponedeljak
+days.wide.tue = utorak
+days.wide.wed = sreda
+days.wide.thu = četvrtak
+days.wide.fri = petak
+days.wide.sat = subota
+days.wide.sun = nedelja
+days.abbreviated.mon = pon
+days.abbreviated.tue = uto
+days.abbreviated.wed = sre
+days.abbreviated.thu = čet
+days.abbreviated.fri = pet
+days.abbreviated.sat = sub
+days.abbreviated.sun = ned
+days.narrow.mon = p
+days.narrow.tue = u
+days.narrow.wed = s
+days.narrow.thu = č
+days.narrow.fri = p
+days.narrow.sat = s
+days.narrow.sun = n
+dayPeriods.abbreviated.am = prije podne
+dayPeriods.abbreviated.pm = po podne
+dayPeriods.narrow.am = AM
+dayPeriods.narrow.pm = PM
+dayPeriods.wide.am = AM
+dayPeriods.wide.pm = PM
+
+[date.gregorian.licr]
+months.wide.1 = januar
+months.wide.2 = februar
+months.wide.3 = mart
+months.wide.4 = april
+months.wide.5 = maj
+months.wide.6 = jun
+months.wide.7 = jul
+months.wide.8 = avgust
+months.wide.9 = septembar
+months.wide.10 = oktobar
+months.wide.11 = novembar
+months.wide.12 = decembar
+
+[time.gregorian]
+time.medium = [HH]:[mm]:[ss]
+time.short = [HH]:[mm]
+
+[typography]
+frenchspacing = yes
+hyphenrules = serbian
+lefthyphenmin = 2
+righthyphenmin = 2
+hyphenchar =
+prehyphenchar =
+posthyphenchar =
+exhyphenchar =
+preexhyphenchar =
+postexhyphenchar =
+hyphenationmin =
+
+[characters]
+delimiters.quotes = „“’’
+auxiliary = [å q w x y]
+exemplarCharacters = [a b c č ć d {dž} đ e f g h i j k l {lj} m n {nj} o p r s š t u v z ž]
+index = [A B C Č Ć D {DŽ} E F G H I J K L {LJ} M N {NJ} O P Q R S Š T U V W X Y Z Ž]
+punctuation = [\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
+
+[numbers]
+defaultNumberingSystem = latn
+minimumGroupingDigits = 1
+decimal = ,
+exponential = E
+group = .
+infinity = ∞
+list = ;
+minusSign = -
+nan = NaN
+perMille = ‰
+percentSign = %
+plusSign = +
+superscriptingExponent = ×
+
+[counters]
diff --git a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn.ini b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn.ini
index e62ded96286..a331b98eb28 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn.ini
@@ -6,16 +6,18 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; * With contributions by Uroš Stefanović.
[identification]
charset = utf8
-version = 1.3
-date = 2021-09-29
+version = 1.4
+date = 2023-04-31
name.local = srpski
name.english = Serbian
-name.babel = serbian-latin serbian-latn
+name.babel = serbian-latin serbian-latn serbian
tag.bcp47 = sr-Latn
language.tag.bcp47 = sr
+tag.bcp47.likely = sr-Latn-RS
tag.opentype = SRB
script.name = Latin
script.tag.bcp47 = Latn
@@ -32,8 +34,8 @@ bib = Bibliografija
chapter = Glava
appendix = Dodatak
contents = Sadržaj
-listfigure = Slike
-listtable = Tabele
+listfigure = Spisak slika
+listtable = Spisak tabela
index = Indeks
figure = Slika
table = Tabela
@@ -41,11 +43,11 @@ part = Deo
encl = Prilozi
cc = Kopije
headto = Prima
-page = Strana
-see = Vidi
-also = Vidi takođe
+page = strana
+see = vidi
+also = vidi takođe
proof = Dokaz
-glossary = Glossary
+glossary = Rečnik
[captions.licr]
preface = Predgovor
@@ -55,8 +57,8 @@ bib = Bibliografija
chapter = Glava
appendix = Dodatak
contents = Sadr\v zaj
-listfigure = Slike
-listtable = Tabele
+listfigure = Spisak slika
+listtable = Spisak tabela
index = Indeks
figure = Slika
table = Tabela
@@ -64,14 +66,14 @@ part = Deo
encl = Prilozi
cc = Kopije
headto = Prima
-page = Strana
-see = Vidi
-also = Vidi tako\dj e
+page = strana
+see = vidi
+also = vidi tako\dj e
proof = Dokaz
-glossary = Glossary
+glossary = Re\v cnik
[date.gregorian]
-date.long = [d].[ ][MMMM] [y]
+date.long = [d]. [MMMM] [y].
date.short = [d].[M].[yy].
months.wide.1 = januar
months.wide.2 = februar
@@ -120,10 +122,10 @@ days.narrow.sat = s
days.narrow.sun = n
dayPeriods.abbreviated.am = pre podne
dayPeriods.abbreviated.pm = po podne
-dayPeriods.narrow.am = a
-dayPeriods.narrow.pm = p
-dayPeriods.wide.am = pre podne
-dayPeriods.wide.pm = po podne
+dayPeriods.narrow.am = AM
+dayPeriods.narrow.pm = PM
+dayPeriods.wide.am = AM
+dayPeriods.wide.pm = PM
[date.gregorian.licr]
months.wide.1 = januar
@@ -144,10 +146,10 @@ time.medium = [HH]:[mm]:[ss]
time.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbian
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -157,11 +159,11 @@ postexhyphenchar =
hyphenationmin =
[characters]
-delimiters.quotes = „“‘‘
+delimiters.quotes = „“’’
auxiliary = [å q w x y]
exemplarCharacters = [a b c č ć d {dž} đ e f g h i j k l {lj} m n {nj} o p r s š t u v z ž]
index = [A B C Č Ć D {DŽ} E F G H I J K L {LJ} M N {NJ} O P Q R S Š T U V W X Y Z Ž]
-punctuation = [\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
+punctuation = [\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
[numbers]
defaultNumberingSystem = latn
diff --git a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-ijekavsk.ini b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-ijekavsk.ini
new file mode 100644
index 00000000000..84fc8ac03c5
--- /dev/null
+++ b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-ijekavsk.ini
@@ -0,0 +1,200 @@
+; 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):
+; https://www.ctan.org/pkg/babel-contrib
+; * Common Locale Data Repository (license Unicode):
+; http://cldr.unicode.org/
+; http://unicode.org/copyright.html
+; * With contributions by Uroš Stefanović.
+
+[identification]
+charset = utf8
+version = 1.1
+date = 2023-04-31
+name.local = српски
+name.english = Serbian
+name.babel = serbian-ijekavsk serbianc.ijekav
+name.polyglossia = serbian
+tag.bcp47 = sr-ijekavsk
+language.tag.bcp47 = sr
+variant.tag.bcp47 = ijekavsk
+tag.bcp47.likely = sr-Cyrl-RS-ijekavsk
+tag.opentype = SRB
+script.name = Cyrillic
+script.tag.bcp47 = Cyrl
+script.tag.opentype = cyrl
+level = 1
+encodings = T2A
+derivate = no
+
+[captions]
+preface = Предговор
+ref = Литература
+abstract = Сажетак
+bib = Библиографиjа
+chapter = Глава
+appendix = Додатак
+contents = Садржаj
+listfigure = Списак слика
+listtable = Списак табела
+index = Индекс
+figure = Слика
+table = Табела
+part = Дио
+encl = Прилози
+cc = Копиjе
+headto = Прима
+page = страна
+see = види
+also = види такође
+proof = Доказ
+glossary = Рјечник
+
+[captions.licr]
+preface = \CYRP\cyrr\cyre\cyrd\cyrg\cyro\cyrv\cyro\cyrr
+ref = \CYRL\cyri\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra
+abstract = \CYRS\cyra\cyrzh\cyre\cyrt\cyra\cyrk
+bib = \CYRB\cyri\cyrb\cyrl\cyri\cyro\cyrg\cyrr\cyra\cyrf\cyri\cyrje\cyra
+chapter = \CYRG\cyrl\cyra\cyrv\cyra
+appendix = \CYRD\cyro\cyrd\cyra\cyrt\cyra\cyrk
+contents = \CYRS\cyra\cyrd\cyrr\cyrzh\cyra\cyrje
+listfigure = \CYRS\cyrp\cyri\cyrs\cyra\cyrk\ \cyrs\cyrl\cyri\cyrk\cyra
+listtable = \CYRS\cyrp\cyri\cyrs\cyra\cyrk\ \cyrt\cyra\cyrb\cyre\cyrl\cyra
+index = \CYRI\cyrn\cyrd\cyre\cyrk\cyrs
+figure = \CYRS\cyrl\cyri\cyrk\cyra
+table = \CYRT\cyra\cyrb\cyre\cyrl\cyra
+part = \CYRD\cyri\cyro
+encl = \CYRP\cyrr\cyri\cyrl\cyro\cyrz\cyri
+cc = \CYRK\cyro\cyrp\cyri\cyrje\cyre
+headto = \CYRP\cyrr\cyri\cyrm\cyra
+page = \cyrs\cyrt\cyrr\cyra\cyrn\cyra
+see = \cyrv\cyri\cyrd\cyri
+also = \cyrv\cyri\cyrd\cyri\ \cyrt\cyra\cyrk\cyro\cyrdje\cyre
+proof = \CYRD\cyro\cyrk\cyra\cyrz
+glossary = \CYRR\cyrje\cyre\cyrch\cyrn\cyri\cyrk
+
+[date.gregorian]
+date.long = [d].[ ][MMMM] [y].
+date.short = [d].[M].[yy].
+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 = д
+days.wide.mon = понедељак
+days.wide.tue = уторак
+days.wide.wed = среда
+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.fri = пет
+days.abbreviated.sat = суб
+days.abbreviated.sun = нед
+days.narrow.mon = п
+days.narrow.tue = у
+days.narrow.wed = с
+days.narrow.thu = ч
+days.narrow.fri = п
+days.narrow.sat = с
+days.narrow.sun = н
+dayPeriods.abbreviated.am = прије подне
+dayPeriods.abbreviated.pm = по подне
+dayPeriods.narrow.am = AM
+dayPeriods.narrow.pm = PM
+dayPeriods.wide.am = AM
+dayPeriods.wide.pm = PM
+
+[date.gregorian.licr]
+months.wide.1 = \cyrje\cyra\cyrn\cyru\cyra\cyrr
+months.wide.2 = \cyrf\cyre\cyrb\cyrr\cyru\cyra\cyrr
+months.wide.3 = \cyrm\cyra\cyrr\cyrt
+months.wide.4 = \cyra\cyrp\cyrr\cyri\cyrl
+months.wide.5 = \cyrm\cyra\cyrje
+months.wide.6 = \cyrje\cyru\cyrn
+months.wide.7 = \cyrje\cyru\cyrl
+months.wide.8 = \cyra\cyrv\cyrg\cyru\cyrs\cyrt
+months.wide.9 = \cyrs\cyre\cyrp\cyrt\cyre\cyrm\cyrb\cyra\cyrr
+months.wide.10 = \cyro\cyrk\cyrt\cyro\cyrb\cyra\cyrr
+months.wide.11 = \cyrn\cyro\cyrv\cyre\cyrm\cyrb\cyra\cyrr
+months.wide.12 = \cyrd\cyre\cyrc\cyre\cyrm\cyrb\cyra\cyrr
+
+[time.gregorian]
+time.medium = [HH]:[mm]:[ss]
+time.short = [HH]:[mm]
+
+[typography]
+frenchspacing = yes
+hyphenrules = serbianc
+lefthyphenmin = 2
+righthyphenmin = 2
+hyphenchar =
+prehyphenchar =
+posthyphenchar =
+exhyphenchar =
+preexhyphenchar =
+postexhyphenchar =
+hyphenationmin =
+
+[characters]
+delimiters.quotes = „“’’
+auxiliary = [{а\u0302} {е\u0302} {и\u0302} {о\u0302} {у\u0302}]
+exemplarCharacters = [а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш]
+index = [А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш]
+punctuation = [\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
+
+[numbers]
+defaultNumberingSystem = latn
+minimumGroupingDigits = 1
+decimal = ,
+exponential = E
+group = .
+infinity = ∞
+list = ;
+minusSign = -
+nan = NaN
+perMille = ‰
+percentSign = %
+plusSign = +
+superscriptingExponent = ×
+
+[counters]
+lower = а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш
+upper = А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш
+
+[transforms.prehyphenation]
+; With implicit remove's, in 1-4 as x.2
+transliteration.gajica.1.0 = { ([ln])j }
+transliteration.gajica.1.1 = { string = {1|ln|љњ} }
+transliteration.gajica.2.0 = { ([LN])[jJ] }
+transliteration.gajica.2.1 = { string = {1|LN|ЉЊ} }
+transliteration.gajica.3.0 = { dž }
+transliteration.gajica.3.1 = { string = џ }
+transliteration.gajica.4.0 = { D[žŽ] }
+transliteration.gajica.4.1 = { string = Џ }
+transliteration.gajica.5.0 = { ([abvgdđežzijklmnoprstćufhcčšABVGDĐEŽZIJKLMNOPRSTĆUFHCČŠ]) }
+transliteration.gajica.5.1 = { string = {1|abvgdđežzijklmnoprstćufhcčšABVGDĐEŽZIJKLMNOPRSTĆUFHCČŠ|абвгдђежзијклмнопрстћуфхцчшАБВГДЂЕЖЗИЈКЛМНОПРСТЋУФХЦЧШ} }
diff --git a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr.ini b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr.ini
index 14981dfa239..5a7ccbedd23 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr.ini
@@ -6,14 +6,15 @@
; * Common Locale Data Repository (license Unicode):
; http://cldr.unicode.org/
; http://unicode.org/copyright.html
+; * With contributions by Uroš Stefanović.
[identification]
charset = utf8
-version = 1.5
-date = 2022-05-14
+version = 1.6
+date = 2023-04-31
name.local = српски
name.english = Serbian
-name.babel = serbian
+name.babel = serbianc serbian
name.polyglossia = serbian
tag.bcp47 = sr
language.tag.bcp47 = sr
@@ -29,14 +30,14 @@ derivate = no
[captions]
preface = Предговор
ref = Литература
-abstract = Абстракт
+abstract = Сажетак
bib = Библиографиjа
chapter = Глава
appendix = Додатак
contents = Садржаj
-listfigure = Листаслика
-listtable = Листатабела
-index = Индекспоjмова
+listfigure = Списак слика
+listtable = Списак табела
+index = Индекс
figure = Слика
table = Табела
part = Део
@@ -52,41 +53,41 @@ glossary = Речник
[captions.licr]
preface = \CYRP\cyrr\cyre\cyrd\cyrg\cyro\cyrv\cyro\cyrr
ref = \CYRL\cyri\cyrt\cyre\cyrr\cyra\cyrt\cyru\cyrr\cyra
-abstract = \CYRA\cyrb\cyrs\cyrt\cyrr\cyra\cyrk\cyrt
-bib = \CYRB\cyri\cyrb\cyrl\cyri\cyro\cyrg\cyrr\cyra\cyrf\cyri j\cyra
+abstract = \CYRS\cyra\cyrzh\cyre\cyrt\cyra\cyrk
+bib = \CYRB\cyri\cyrb\cyrl\cyri\cyro\cyrg\cyrr\cyra\cyrf\cyri\cyrje\cyra
chapter = \CYRG\cyrl\cyra\cyrv\cyra
appendix = \CYRD\cyro\cyrd\cyra\cyrt\cyra\cyrk
-contents = \CYRS\cyra\cyrd\cyrr\cyrzh\cyra j
-listfigure = \CYRL\cyri\cyrs\cyrt\cyra\cyrs\cyrl\cyri\cyrk\cyra
-listtable = \CYRL\cyri\cyrs\cyrt\cyra\cyrt\cyra\cyrb\cyre\cyrl\cyra
-index = \CYRI\cyrn\cyrd\cyre\cyrk\cyrs\cyrp\cyro j\cyrm\cyro\cyrv\cyra
+contents = \CYRS\cyra\cyrd\cyrr\cyrzh\cyra\cyrje
+listfigure = \CYRS\cyrp\cyri\cyrs\cyra\cyrk\ \cyrs\cyrl\cyri\cyrk\cyra
+listtable = \CYRS\cyrp\cyri\cyrs\cyra\cyrk\ \cyrt\cyra\cyrb\cyre\cyrl\cyra
+index = \CYRI\cyrn\cyrd\cyre\cyrk\cyrs
figure = \CYRS\cyrl\cyri\cyrk\cyra
table = \CYRT\cyra\cyrb\cyre\cyrl\cyra
part = \CYRD\cyre\cyro
encl = \CYRP\cyrr\cyri\cyrl\cyro\cyrz\cyri
-cc = \CYRK\cyro\cyrp\cyri j\cyre
+cc = \CYRK\cyro\cyrp\cyri\cyrje\cyre
headto = \CYRP\cyrr\cyri\cyrm\cyra
page = \cyrs\cyrt\cyrr\cyra\cyrn\cyra
see = \cyrv\cyri\cyrd\cyri
-also = \cyrv\cyri\cyrd\cyri\cyrt\cyra\cyrk\cyro\cyrdje\cyre
+also = \cyrv\cyri\cyrd\cyri\ \cyrt\cyra\cyrk\cyro\cyrdje\cyre
proof = \CYRD\cyro\cyrk\cyra\cyrz
glossary = \CYRR\cyre\cyrch\cyrn\cyri\cyrk
[date.gregorian.Genitive]
date.long = [d].[ ][MMMM] [y].
date.short = [d].[M].[yy].
-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.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.gregorian]
date.long = [d].[ ][MMMM] [y].
@@ -138,21 +139,21 @@ days.narrow.sat = с
days.narrow.sun = н
dayPeriods.abbreviated.am = пре подне
dayPeriods.abbreviated.pm = по подне
-dayPeriods.narrow.am = a
-dayPeriods.narrow.pm = p
-dayPeriods.wide.am = пре подне
-dayPeriods.wide.pm = по подне
+dayPeriods.narrow.am = AM
+dayPeriods.narrow.pm = PM
+dayPeriods.wide.am = AM
+dayPeriods.wide.pm = PM
[date.gregorian.Genitive.licr]
-months.wide.1 = \cyrje\cyra\cyrn\cyru\cyra\cyrr\cyra
-months.wide.2 = \cyrf\cyre\cyrb\cyrr\cyru\cyra\cyrr\cyra
-months.wide.3 = \cyrm\cyra\cyrr\cyrt\cyra
-months.wide.4 = \cyra\cyrp\cyrr\cyri\cyrl\cyra
-months.wide.5 = \cyrm\cyra\cyrje\cyra
-months.wide.6 = \cyrje\cyru\cyrn\cyra
-months.wide.7 = \cyrje\cyru\cyrl\cyra
-months.wide.8 = \cyra\cyrv\cyrg\cyru\cyrs\cyrt\cyra
-months.wide.9 = \cyrs\cyre\cyrp\cyrt\cyre\cyrm\cyrb\cyrr\cyra
+months.wide.1 = \cyrje\cyra\cyrn\cyru\cyra\cyrr\cyra
+months.wide.2 = \cyrf\cyre\cyrb\cyrr\cyru\cyra\cyrr\cyra
+months.wide.3 = \cyrm\cyra\cyrr\cyrt\cyra
+months.wide.4 = \cyra\cyrp\cyrr\cyri\cyrl\cyra
+months.wide.5 = \cyrm\cyra\cyrje\cyra
+months.wide.6 = \cyrje\cyru\cyrn\cyra
+months.wide.7 = \cyrje\cyru\cyrl\cyra
+months.wide.8 = \cyra\cyrv\cyrg\cyru\cyrs\cyrt\cyra
+months.wide.9 = \cyrs\cyre\cyrp\cyrt\cyre\cyrm\cyrb\cyrr\cyra
months.wide.10 = \cyro\cyrk\cyrt\cyro\cyrb\cyrr\cyra
months.wide.11 = \cyrn\cyro\cyrv\cyre\cyrm\cyrb\cyrr\cyra
months.wide.12 = \cyrd\cyre\cyrc\cyre\cyrm\cyrb\cyrr\cyra
@@ -176,10 +177,10 @@ time.medium = [HH]:[mm]:[ss]
time.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbianc
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -189,11 +190,11 @@ postexhyphenchar =
hyphenationmin =
[characters]
-delimiters.quotes = „“‘‘
-auxiliary = [ё й щ ъ ы ь э ю я]
+delimiters.quotes = „“’’
+auxiliary = [{а\u0302} {е\u0302} {и\u0302} {о\u0302} {у\u0302}]
exemplarCharacters = [а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш]
index = [А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш]
-punctuation = [\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
+punctuation = [\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
[numbers]
defaultNumberingSystem = latn
@@ -219,7 +220,7 @@ upper = А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У
transliteration.gajica.1.0 = { ([ln])j }
transliteration.gajica.1.1 = { string = {1|ln|љњ} }
transliteration.gajica.2.0 = { ([LN])[jJ] }
-transliteration.gajica.2.1 = { string = {1|LN|ЉЉ} }
+transliteration.gajica.2.1 = { string = {1|LN|ЉЊ} }
transliteration.gajica.3.0 = { dž }
transliteration.gajica.3.1 = { string = џ }
transliteration.gajica.4.0 = { D[žŽ] }
diff --git a/Master/texmf-dist/tex/generic/babel/luababel.def b/Master/texmf-dist/tex/generic/babel/luababel.def
index e27837e44ba..fd06001fb0b 100644
--- a/Master/texmf-dist/tex/generic/babel/luababel.def
+++ b/Master/texmf-dist/tex/generic/babel/luababel.def
@@ -1515,7 +1515,7 @@ end
\else
\let\bbl@ams@lap\llap
\fi
- \ExplSyntaxOn
+ \ExplSyntaxOn % Required by \bbl@sreplace with \intertext@
\bbl@sreplace\intertext@{\normalbaselines}%
{\normalbaselines
\ifx\bbl@eqnodir\relax\else\bbl@pardir\@ne\bbl@eqnodir\fi}%
diff --git a/Master/texmf-dist/tex/generic/babel/nil.ldf b/Master/texmf-dist/tex/generic/babel/nil.ldf
index fd843ee1062..5fd7a3c3c83 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/04/18 3.88 Nil language]
+\ProvidesLanguage{nil}[2023/05/11 v3.89 Nil language]
\LdfInit{nil}{datenil}
\ifx\l@nil\@undefined
\newlanguage\l@nil