texlive[67073] Master/texmf-dist: babel (11may23)
commits+karl at tug.org
commits+karl at tug.org
Thu May 11 22:11:40 CEST 2023
Revision: 67073
http://tug.org/svn/texlive?view=revision&revision=67073
Author: karl
Date: 2023-05-11 22:11:39 +0200 (Thu, 11 May 2023)
Log Message:
-----------
babel (11may23)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/babel/README.md
trunk/Master/texmf-dist/doc/latex/babel/babel.pdf
trunk/Master/texmf-dist/source/latex/babel/babel.dtx
trunk/Master/texmf-dist/source/latex/babel/babel.ins
trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx
trunk/Master/texmf-dist/source/latex/babel/locale.zip
trunk/Master/texmf-dist/tex/generic/babel/babel.def
trunk/Master/texmf-dist/tex/generic/babel/babel.sty
trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg
trunk/Master/texmf-dist/tex/generic/babel/locale/se/babel-se.ini
trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-BA.ini
trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-ME.ini
trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-XK.ini
trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl.ini
trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-BA.ini
trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ME.ini
trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-XK.ini
trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn.ini
trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr.ini
trunk/Master/texmf-dist/tex/generic/babel/luababel.def
trunk/Master/texmf-dist/tex/generic/babel/nil.ldf
Added Paths:
-----------
trunk/Master/texmf-dist/doc/latex/babel/babel-code.pdf
trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-acadian.tex
trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-x-acadian.ini
trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-ijekavsk.tex
trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-latn-ijekavsk.tex
trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ijekavsk.ini
trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-ijekavsk.ini
Modified: trunk/Master/texmf-dist/doc/latex/babel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/babel/README.md 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/doc/latex/babel/README.md 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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 @@
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 @@
### 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
Added: trunk/Master/texmf-dist/doc/latex/babel/babel-code.pdf
===================================================================
(Binary files differ)
Index: trunk/Master/texmf-dist/doc/latex/babel/babel-code.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/babel/babel-code.pdf 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/doc/latex/babel/babel-code.pdf 2023-05-11 20:11:39 UTC (rev 67073)
Property changes on: trunk/Master/texmf-dist/doc/latex/babel/babel-code.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Modified: trunk/Master/texmf-dist/doc/latex/babel/babel.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/source/latex/babel/babel.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/babel/babel.dtx 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/source/latex/babel/babel.dtx 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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 at 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 @@
\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 @@
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 @@
(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 @@
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 @@
\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,9 +633,18 @@
\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}
\begin{itemize}
@@ -1123,37 +1148,6 @@
\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 at char~| or
- |\normal at 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 @@
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 @@
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 @@
\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 @@
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 @@
|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 @@
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 @@
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 @@
\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 @@
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 @@
\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}
+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 [to be documented] are:
+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 @@
configuration file has been loaded. This macro is called by
|\ldf at 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,16 +4903,9 @@
\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.
+encodings, intended mainly for \luatex{} and \xetex, although the old
+way of defining/switching strings still works and it's used by default.
-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.
-
It consist is a series of blocks started with
|\StartBabelCommands|. The last block is closed with
|\EndBabelCommands|. Each block is a single group (ie, local
@@ -4905,9 +4913,11 @@
|\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 @@
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 @@
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 @@
\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 @@
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 @@
\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.
+\Describe\SetCase{\oarg{map-list}\marg{toupper-code}\marg{tolower-code}\qquad\textit{Deprecated}}
-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}
+\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}
-\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}
-
-\EndBabelCommands
-\end{verbatim}
-(Note the mapping for |OT1| is not complete.)
-
\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.
+\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|:
+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 @@
\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 @@
\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 @@
%
% \fi
%
+% \addtolength{\oddsidemargin}{-15pt}
+% \addtolength{\textwidth}{50pt}
+%
%\begingroup
% \catcode`<=\active%
% \catcode`>=\active
@@ -5212,96 +5205,67 @@
% \global\let\check at percent\saved at 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 at 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.
+% 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.
%
-% This is a preliminary documentation.
+% |babel-*.ini| files contain the actual data; |babel-*.tex| files are
+% basically proxies to the corresponding ini files.
%
-% |ini| files contain the actual data; |tex| files are currently just
-% proxies to the corresponding ini files.
+% See \href{https://latex3.github.io/babel/guides/keys-in-ini-files.html}{Keys
+% in \texttt{ini} files} in the the \babel{} site.
%
-% 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}
-%
-% 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.
-%
% \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 @@
% \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 @@
\bbl at csarg\let{tempa\expandafter}\csname opt at babel.sty\endcsname
\def\bbl at tempb#1.#2{% Remove trailing dot
#1\ifx\@empty#2\else,\bbl at afterfi\bbl at tempb#2\fi}%
+\def\bbl at tempe#1=#2\@@{%
+ \bbl at csarg\edef{mod@#1}{\bbl at tempb#2}}
\def\bbl at tempd#1.#2\@nnil{% TODO. Refactor lists?
\ifx\@empty#2%
\edef\bbl at tempc{\ifx\bbl at tempc\@empty\else\bbl at tempc,\fi#1}%
@@ -5875,12 +5841,17 @@
\edef\bbl at tempc{%
\ifx\bbl at tempc\@empty\else\bbl at tempc,\fi#1.\bbl at tempb#2}%
\else
- \in@{=}{#1}%
+ \in@{$modifiers$}{$#1$}% TODO. Allow spaces.
\ifin@
- \edef\bbl at tempc{\ifx\bbl at tempc\@empty\else\bbl at tempc,\fi#1.#2}%
- \else
- \edef\bbl at tempc{\ifx\bbl at tempc\@empty\else\bbl at tempc,\fi#1}%
- \bbl at csarg\edef{mod@#1}{\bbl at tempb#2}%
+ \bbl at tempe#2\@@
+ \else
+ \in@{=}{#1}%
+ \ifin@
+ \edef\bbl at tempc{\ifx\bbl at tempc\@empty\else\bbl at tempc,\fi#1.#2}%
+ \else
+ \edef\bbl at tempc{\ifx\bbl at tempc\@empty\else\bbl at tempc,\fi#1}%
+ \bbl at csarg\edef{mod@#1}{\bbl at tempb#2}%
+ \fi
\fi
\fi
\fi}
@@ -6113,10 +6084,11 @@
\ifx\ldf at 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 @@
\fi
\fi\fi}
\let\bbl at initoload\relax
+%<-core>
\def\bbl at provide@locale{%
\ifx\babelprovide\@undefined
\bbl at error{For a language to be defined on the fly 'base'\\%
@@ -6284,6 +6257,7 @@
{\bbl at exp{\\\babelprovide[\bbl at autoload@options]{\languagename}}}%
{}%
\fi}
+%<+core>
% \end{macrocode}
%
% \begin{macro}{\iflanguage}
@@ -6393,6 +6367,7 @@
% 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 at 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 @@
% 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 at bsphack| and |\bbl at esphack|.
%
% \begin{macrocode}
\newif\ifbbl at usedategroup
@@ -6606,8 +6584,6 @@
% set the locale id
\bbl at id@assign
% switch captions, date
- % No text is supposed to be added here, so we remove any
- % spurious spaces.
\bbl at bsphack
\ifcase\bbl at select@type
\csname captions#1\endcsname\relax
@@ -6678,6 +6654,7 @@
\expandafter\expandafter\expandafter\set at hyphenmins
\csname #1hyphenmins\endcsname\relax
\fi
+ % reset selector name
\let\bbl at selectorname\@empty}
% \end{macrocode}
%
@@ -7091,7 +7068,6 @@
\input luababel.def
\fi
\fi
-<@Basic macros@>
\bbl at trace{Compatibility with language.def}
\ifx\bbl at languages\@undefined
\ifx\directlua\@undefined
@@ -7228,7 +7204,7 @@
\newcommand\EnableBabelHook[1]{\bbl at csarg\let{hk@#1}\@firstofone}
\newcommand\DisableBabelHook[1]{\bbl at csarg\let{hk@#1}\@gobble}
\def\bbl at usehooks{\bbl at usehooks@lang\languagename}
-\def\bbl at usehooks@lang#1#2#3{%
+\def\bbl at usehooks@lang#1#2#3{% Test for Plain
\ifx\UseHook\@undefined\else\UseHook{babel/*/#2}\fi
\def\bbl at elth##1{%
\bbl at cs{hk@##1}{\bbl at cs{ev@##1@#2@}#3}}%
@@ -7254,7 +7230,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 at tempa#1=#2\@@{\NewHook{babel/#1}}
\bbl at foreach\bbl at evargs{\bbl at tempa#1\@@}
\fi
@@ -8140,12 +8116,12 @@
% \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 at prefix /\active at char/|, so we
-% still need to let the lattest to |\active at 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 at prefix /\active at char/|, so we still need to let the
+% lattest to |\active at char"|.
+%
% \begin{macrocode}
\def\aliasshorthand#1#2{%
\bbl at ifshorthand{#2}%
@@ -8841,7 +8817,7 @@
% \begin{macrocode}
\@ifpackagewith{babel}{nocase}%
{\let\bbl at patchuclc\relax}%
- {\def\bbl at patchuclc{%
+ {\def\bbl at patchuclc{% TODO. Delete. Doesn’t work any more.
\global\let\bbl at patchuclc\relax
\g at addto@macro\@uclclist{\reserved at b{\reserved at b\bbl at uclc}}%
\gdef\bbl at uclc##1{%
@@ -9128,7 +9104,7 @@
%
% The command |\SetCase| provides a way to change the behavior of
% |\MakeUppercase| and |\MakeLowercase|. |\bbl at 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 @@
%<</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 @@
% \begin{macrocode}
\bbl at trace{Bidi layout}
\providecommand\IfBabelLayout[3]{#3}%
+%<-core>
\newcommand\BabelPatchSection[1]{%
\@ifundefined{#1}{}{%
\bbl at exp{\let\<bbl at ss@#1>\<#1>}%
@@ -9778,6 +9755,7 @@
\select at language@x{\bbl at main@language}}}{}
\IfBabelLayout{captions}%
{\BabelPatchSection{caption}}{}
+%<+core>
% \end{macrocode}
%
% \subsection{Load engine specific macros}
@@ -9811,6 +9789,8 @@
%
% \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
@@ -9817,6 +9797,8 @@
% loaded |ldf| files.
%
% \begin{macrocode}
+%</package|core>
+%<*package>
\bbl at trace{Creating languages and reading ini files}
\let\bbl at extend@ini\@gobble
\newcommand\babelprovide[2][]{%
@@ -9835,6 +9817,7 @@
\let\bbl at calendars\@empty
\global\let\bbl at inidata\@empty
\global\let\bbl at extend@ini\@gobble
+ \global\let\bbl at included@inis\@empty
\gdef\bbl at key@list{;}%
\bbl at forkv{#1}{%
\in@{/}{##1}% With /, (re)sets a value in the ini
@@ -9900,6 +9883,14 @@
{}% With \bbl at load@basic below
{\bbl at provide@renew{#2}}%
\fi
+ % == include == TODO
+ % \ifx\bbl at included@inis\@empty\else
+ % \bbl at replace\bbl at included@inis{ }{,}%
+ % \bbl at foreach\bbl at included@inis{%
+ % \openin\bbl at readstream=babel-##1.ini
+ % \bbl at extend@ini{#2}}%
+ % \closein\bbl at readstream
+ % \fi
% Post tasks
% ----------
% == subsequent calls after the first provide for a locale ==
@@ -9922,11 +9913,14 @@
\\\bbl at toglobal\<bbl at ensure@\languagename>%
\\\bbl at toglobal\<bbl at 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 at load@basic{#2}%
% == script, language ==
% Override the values from ini or defines them
@@ -10376,9 +10370,9 @@
\bbl at trim\toks@{#2}%
\bbl at xin@{;\bbl at section/\bbl at tempa;}{\bbl at key@list}%
\ifin@\else
- \bbl at xin@{,identification/include.}%
+ \bbl at xin@{,identification/include.}%
{,\bbl at section/\bbl at tempa}%
- \ifin@\edef\bbl at required@inis{\the\toks@}\fi
+ \ifin@\xdef\bbl at included@inis{\the\toks@}\fi
\bbl at exp{%
\\\g at addto@macro\\\bbl at inidata{%
\\\bbl at elt{\bbl at section}{\bbl at tempa}{\the\toks@}}}%
@@ -10439,16 +10433,9 @@
\let\bbl at inistore\bbl at inistore@min % Remember it's local
\fi
\def\bbl at section{identification}%
- \let\bbl at required@inis\@empty
\bbl at exp{\\\bbl at inistore tag.ini=#1\\\@@}%
\bbl at inistore load.level=#2\@@
\bbl at loop@ini
- \ifx\bbl at required@inis\@empty\else
- \bbl at replace\bbl at required@inis{ }{,}%
- \bbl at foreach\bbl at required@inis{%
- \openin\bbl at readstream=babel-##1.ini
- \bbl at loop@ini}%
- \fi
% == Process stored data ==
\bbl at csarg\xdef{lini@\languagename}{#1}%
\bbl at read@ini at aux
@@ -11262,13 +11249,18 @@
% \begin{macrocode}
\providecommand\BCPdata{}
\ifx\renewcommand\@undefined\else % For plain. TODO. It’s a quick fix
- \renewcommand\BCPdata[1]{%
+ \renewcommand\BCPdata[1]{\bbl at bcpdata@i#1\@empty}
+ \def\bbl at bcpdata@i#1#2#3#4#5#6\@empty{%
+ \@nameuse{str_if_eq:nnTF}{#1#2#3#4#5}{main.}%
+ {\bbl at bcpdata@ii{#6}\bbl at main@language}%
+ {\bbl at bcpdata@ii{#1#2#3#4#5#6}\languagename}}%
+ \def\bbl at bcpdata@ii#1#2{%
\bbl at ifunset{bbl at info@#1.tag.bcp47}%
{\bbl at error{Unknown field '#1' in \string\BCPdata.\\%
Perhaps you misspelled it.}%
{See the manual for details.}}%
- {\bbl at ifunset{bbl@\csname bbl at info@#1.tag.bcp47\endcsname @\languagename}{}%
- {\bbl at cs{\csname bbl at info@#1.tag.bcp47\endcsname @\languagename}}}}
+ {\bbl at ifunset{bbl@\csname bbl at info@#1.tag.bcp47\endcsname @#2}{}%
+ {\bbl at cs{\csname bbl at info@#1.tag.bcp47\endcsname @#2}}}}
\fi
% Still somewhat hackish:
\@namedef{bbl at info@casing.tag.bcp47}{casing}
@@ -11281,7 +11273,6 @@
%<<*More package options>>
\DeclareOption{ensureinfo=off}{}
%<</More package options>>
-%
\let\bbl at ensureinfo\@gobble
\newcommand\BabelEnsureInfo{%
\ifx\InputIfFileExists\@undefined\else
@@ -11457,23 +11448,6 @@
\let\bbl at encoding@select at 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 at 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 @@
%
% \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 @@
\bbl at load@language{hebrew}}
\DeclareOption{hungarian}{\bbl at try@load at lang{}{magyar}{}}
\DeclareOption{lowersorbian}{\bbl at try@load at lang{}{lsorbian}{}}
+\DeclareOption{northernsami}{\bbl at try@load at lang{}{samin}{}}
\DeclareOption{nynorsk}{\bbl at try@load at lang{}{norsk}{}}
\DeclareOption{polutonikogreek}{%
\bbl at try@load at lang{}{greek}{\languageattribute{greek}{polutoniko}}}
\DeclareOption{russian}{\bbl at try@load at lang{}{russianb}{}}
+\DeclareOption{scottishgaelic}{\bbl at try@load at lang{}{scottish}{}}
\DeclareOption{ukrainian}{\bbl at try@load at lang{}{ukraineb}{}}
\DeclareOption{uppersorbian}{\bbl at try@load at lang{}{usorbian}{}}
% \end{macrocode}
@@ -12684,7 +12660,7 @@
%
% \begin{macrocode}
<@Make sure ProvidesFile is defined@>
-\ProvidesFile{hyphen.cfg}[<@date@> <@version@> Babel hyphens]
+\ProvidesFile{hyphen.cfg}[<@date@> v<@version@> Babel hyphens]
\xdef\bbl at format{\jobname}
\def\bbl at version{<@version@>}
\def\bbl at date{<@date@>}
@@ -15104,7 +15080,7 @@
\else
\let\bbl at ams@lap\llap
\fi
- \ExplSyntaxOn
+ \ExplSyntaxOn % Required by \bbl at sreplace with \intertext@
\bbl at sreplace\intertext@{\normalbaselines}%
{\normalbaselines
\ifx\bbl at eqnodir\relax\else\bbl at pardir\@ne\bbl at eqnodir\fi}%
@@ -23138,7 +23114,7 @@
%
% \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 @@
%</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 @@
%</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 @@
%</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 @@
%</ca-ethiopic>
% \end{macrocode}
%
-% \section{Buddhist}
+% \subsection{Buddhist}
%
% That’s very simple.
%
@@ -24275,6 +24251,8 @@
\let\bbl at opt@shorthands\@nnil
\def\bbl at ifshorthand#1#2#3{#2}%
\let\bbl at language@opts\@empty
+\let\bbl at ensureinfo\@gobble
+\let\bbl at provide@locale\relax
\ifx\babeloptionstrings\@undefined
\let\bbl at opt@strings\@nnil
\else
Modified: trunk/Master/texmf-dist/source/latex/babel/babel.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/babel/babel.ins 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/source/latex/babel/babel.ins 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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{***********************************************************}
-
-
Modified: trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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'
Modified: trunk/Master/texmf-dist/source/latex/babel/locale.zip
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/tex/generic/babel/babel.def
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/babel.def 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/tex/generic/babel/babel.def 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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 at opt@shorthands\@nnil
\def\bbl at ifshorthand#1#2#3{#2}%
\let\bbl at language@opts\@empty
+\let\bbl at ensureinfo\@gobble
+\let\bbl at provide@locale\relax
\ifx\babeloptionstrings\@undefined
\let\bbl at opt@strings\@nnil
\else
@@ -406,8 +408,195 @@
\expandafter\newif\csname ifbbl at single\endcsname
\chardef\bbl at bidimode\z@
\fi
-\def\bbl at version{3.88}
-\def\bbl at date{2023/04/18}
+\bbl at trace{Basic macros}
+\def\bbl at stripslash{\expandafter\@gobble\string}
+\def\bbl at add#1#2{%
+ \bbl at ifunset{\bbl at stripslash#1}%
+ {\def#1{#2}}%
+ {\expandafter\def\expandafter#1\expandafter{#1#2}}}
+\def\bbl at xin@{\@expandtwoargs\in@}
+\def\bbl at carg#1#2{\expandafter#1\csname#2\endcsname}%
+\def\bbl at ncarg#1#2#3{\expandafter#1\expandafter#2\csname#3\endcsname}%
+\def\bbl at ccarg#1#2#3{%
+ \expandafter#1\csname#2\expandafter\endcsname\csname#3\endcsname}%
+\def\bbl at csarg#1#2{\expandafter#1\csname bbl@#2\endcsname}%
+\def\bbl at cs#1{\csname bbl@#1\endcsname}
+\def\bbl at cl#1{\csname bbl@#1@\languagename\endcsname}
+\def\bbl at loop#1#2#3{\bbl@@loop#1{#3}#2,\@nnil,}
+\def\bbl at loopx#1#2{\expandafter\bbl at loop\expandafter#1\expandafter{#2}}
+\def\bbl@@loop#1#2#3,{%
+ \ifx\@nnil#3\relax\else
+ \def#1{#3}#2\bbl at afterfi\bbl@@loop#1{#2}%
+ \fi}
+\def\bbl at for#1#2#3{\bbl at loopx#1{#2}{\ifx#1\@empty\else#3\fi}}
+\def\bbl at add@list#1#2{%
+ \edef#1{%
+ \bbl at ifunset{\bbl at stripslash#1}%
+ {}%
+ {\ifx#1\@empty\else#1,\fi}%
+ #2}}
+\long\def\bbl at afterelse#1\else#2\fi{\fi#1}
+\long\def\bbl at afterfi#1\fi{\fi#1}
+\def\bbl at exp#1{%
+ \begingroup
+ \let\\\noexpand
+ \let\<\bbl at exp@en
+ \let\[\bbl at exp@ue
+ \edef\bbl at exp@aux{\endgroup#1}%
+ \bbl at exp@aux}
+\def\bbl at exp@en#1>{\expandafter\noexpand\csname#1\endcsname}%
+\def\bbl at exp@ue#1]{%
+ \unexpanded\expandafter\expandafter\expandafter{\csname#1\endcsname}}%
+\def\bbl at tempa#1{%
+ \long\def\bbl at trim##1##2{%
+ \futurelet\bbl at trim@a\bbl at trim@c##2\@nil\@nil#1\@nil\relax{##1}}%
+ \def\bbl at trim@c{%
+ \ifx\bbl at trim@a\@sptoken
+ \expandafter\bbl at trim@b
+ \else
+ \expandafter\bbl at trim@b\expandafter#1%
+ \fi}%
+ \long\def\bbl at trim@b#1##1 \@nil{\bbl at trim@i##1}}
+\bbl at tempa{ }
+\long\def\bbl at trim@i#1\@nil#2\relax#3{#3{#1}}
+\long\def\bbl at trim@def#1{\bbl at trim{\def#1}}
+\begingroup
+ \gdef\bbl at ifunset#1{%
+ \expandafter\ifx\csname#1\endcsname\relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}
+ \bbl at ifunset{ifcsname}%
+ {}%
+ {\gdef\bbl at ifunset#1{%
+ \ifcsname#1\endcsname
+ \expandafter\ifx\csname#1\endcsname\relax
+ \bbl at afterelse\expandafter\@firstoftwo
+ \else
+ \bbl at afterfi\expandafter\@secondoftwo
+ \fi
+ \else
+ \expandafter\@firstoftwo
+ \fi}}
+\endgroup
+\def\bbl at ifblank#1{%
+ \bbl at ifblank@i#1\@nil\@nil\@secondoftwo\@firstoftwo\@nil}
+\long\def\bbl at ifblank@i#1#2\@nil#3#4#5\@nil{#4}
+\def\bbl at ifset#1#2#3{%
+ \bbl at ifunset{#1}{#3}{\bbl at exp{\\\bbl at ifblank{\@nameuse{#1}}}{#3}{#2}}}
+\def\bbl at forkv#1#2{%
+ \def\bbl at kvcmd##1##2##3{#2}%
+ \bbl at kvnext#1,\@nil,}
+\def\bbl at kvnext#1,{%
+ \ifx\@nil#1\relax\else
+ \bbl at ifblank{#1}{}{\bbl at forkv@eq#1=\@empty=\@nil{#1}}%
+ \expandafter\bbl at kvnext
+ \fi}
+\def\bbl at forkv@eq#1=#2=#3\@nil#4{%
+ \bbl at trim@def\bbl at forkv@a{#1}%
+ \bbl at trim{\expandafter\bbl at kvcmd\expandafter{\bbl at forkv@a}}{#2}{#4}}
+\def\bbl at vforeach#1#2{%
+ \def\bbl at forcmd##1{#2}%
+ \bbl at fornext#1,\@nil,}
+\def\bbl at fornext#1,{%
+ \ifx\@nil#1\relax\else
+ \bbl at ifblank{#1}{}{\bbl at trim\bbl at forcmd{#1}}%
+ \expandafter\bbl at fornext
+ \fi}
+\def\bbl at foreach#1{\expandafter\bbl at vforeach\expandafter{#1}}
+\def\bbl at replace#1#2#3{% in #1 -> repl #2 by #3
+ \toks@{}%
+ \def\bbl at replace@aux##1#2##2#2{%
+ \ifx\bbl at nil##2%
+ \toks@\expandafter{\the\toks@##1}%
+ \else
+ \toks@\expandafter{\the\toks@##1#3}%
+ \bbl at afterfi
+ \bbl at replace@aux##2#2%
+ \fi}%
+ \expandafter\bbl at replace@aux#1#2\bbl at nil#2%
+ \edef#1{\the\toks@}}
+\ifx\detokenize\@undefined\else % Unused macros if old Plain TeX
+ \bbl at exp{\def\\\bbl at parsedef##1\detokenize{macro:}}#2->#3\relax{%
+ \def\bbl at tempa{#1}%
+ \def\bbl at tempb{#2}%
+ \def\bbl at tempe{#3}}
+ \def\bbl at sreplace#1#2#3{%
+ \begingroup
+ \expandafter\bbl at parsedef\meaning#1\relax
+ \def\bbl at tempc{#2}%
+ \edef\bbl at tempc{\expandafter\strip at prefix\meaning\bbl at tempc}%
+ \def\bbl at tempd{#3}%
+ \edef\bbl at tempd{\expandafter\strip at prefix\meaning\bbl at tempd}%
+ \bbl at xin@{\bbl at tempc}{\bbl at tempe}% If not in macro, do nothing
+ \ifin@
+ \bbl at exp{\\\bbl at replace\\\bbl at tempe{\bbl at tempc}{\bbl at tempd}}%
+ \def\bbl at tempc{% Expanded an executed below as 'uplevel'
+ \\\makeatletter % "internal" macros with @ are assumed
+ \\\scantokens{%
+ \bbl at tempa\\\@namedef{\bbl at stripslash#1}\bbl at tempb{\bbl at tempe}}%
+ \catcode64=\the\catcode64\relax}% Restore @
+ \else
+ \let\bbl at tempc\@empty % Not \relax
+ \fi
+ \bbl at exp{% For the 'uplevel' assignments
+ \endgroup
+ \bbl at tempc}} % empty or expand to set #1 with changes
+\fi
+\def\bbl at ifsamestring#1#2{%
+ \begingroup
+ \protected at edef\bbl at tempb{#1}%
+ \edef\bbl at tempb{\expandafter\strip at prefix\meaning\bbl at tempb}%
+ \protected at edef\bbl at tempc{#2}%
+ \edef\bbl at tempc{\expandafter\strip at prefix\meaning\bbl at tempc}%
+ \ifx\bbl at tempb\bbl at tempc
+ \aftergroup\@firstoftwo
+ \else
+ \aftergroup\@secondoftwo
+ \fi
+ \endgroup}
+\chardef\bbl at engine=%
+ \ifx\directlua\@undefined
+ \ifx\XeTeXinputencoding\@undefined
+ \z@
+ \else
+ \tw@
+ \fi
+ \else
+ \@ne
+ \fi
+\def\bbl at bsphack{%
+ \ifhmode
+ \hskip\z at skip
+ \def\bbl at esphack{\loop\ifdim\lastskip>\z@\unskip\repeat\unskip}%
+ \else
+ \let\bbl at esphack\@empty
+ \fi}
+\def\bbl at cased{%
+ \ifx\oe\OE
+ \expandafter\in@\expandafter
+ {\expandafter\OE\expandafter}\expandafter{\oe}%
+ \ifin@
+ \bbl at afterelse\expandafter\MakeUppercase
+ \else
+ \bbl at afterfi\expandafter\MakeLowercase
+ \fi
+ \else
+ \expandafter\@firstofone
+ \fi}
+\def\bbl at extras@wrap#1#2#3{% 1:in-test, 2:before, 3:after
+ \toks@\expandafter\expandafter\expandafter{%
+ \csname extras\languagename\endcsname}%
+ \bbl at exp{\\\in@{#1}{\the\toks@}}%
+ \ifin@\else
+ \@temptokena{#2}%
+ \edef\bbl at tempc{\the\@temptokena\the\toks@}%
+ \toks@\expandafter{\bbl at tempc#3}%
+ \expandafter\edef\csname extras\languagename\endcsname{\the\toks@}%
+ \fi}
+\def\bbl at version{3.89}
+\def\bbl at date{2023/05/11}
\ifx\language\@undefined
\csname newcount\endcsname\language
\fi
@@ -487,38 +676,6 @@
\fi
\fi\fi}
\let\bbl at initoload\relax
-\def\bbl at provide@locale{%
- \ifx\babelprovide\@undefined
- \bbl at 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 at auxname\languagename % Still necessary. TODO
- \bbl at ifunset{bbl at bcp@map@\languagename}{}% Move uplevel??
- {\edef\languagename{\@nameuse{bbl at bcp@map@\languagename}}}%
- \ifbbl at bcpallowed
- \expandafter\ifx\csname date\languagename\endcsname\relax
- \expandafter
- \bbl at bcplookup\languagename-\@empty-\@empty-\@empty\@@
- \ifx\bbl at bcp\relax\else % Returned by \bbl at bcplookup
- \edef\languagename{\bbl at bcp@prefix\bbl at bcp}%
- \edef\localename{\bbl at bcp@prefix\bbl at bcp}%
- \expandafter\ifx\csname date\languagename\endcsname\relax
- \let\bbl at initoload\bbl at bcp
- \bbl at exp{\\\babelprovide[\bbl at autoload@bcpoptions]{\languagename}}%
- \let\bbl at initoload\relax
- \fi
- \bbl at csarg\xdef{bcp at map@\bbl at bcp}{\localename}%
- \fi
- \fi
- \fi
- \expandafter\ifx\csname date\languagename\endcsname\relax
- \IfFileExists{babel-\languagename.tex}%
- {\bbl at exp{\\\babelprovide[\bbl at autoload@options]{\languagename}}}%
- {}%
- \fi}
\def\iflanguage#1{%
\bbl at iflanguage{#1}{%
\ifnum\csname l@#1\endcsname=\language
@@ -655,8 +812,6 @@
% set the locale id
\bbl at id@assign
% switch captions, date
- % No text is supposed to be added here, so we remove any
- % spurious spaces.
\bbl at bsphack
\ifcase\bbl at select@type
\csname captions#1\endcsname\relax
@@ -727,6 +882,7 @@
\expandafter\expandafter\expandafter\set at hyphenmins
\csname #1hyphenmins\endcsname\relax
\fi
+ % reset selector name
\let\bbl at selectorname\@empty}
\long\def\otherlanguage#1{%
\def\bbl at selectorname{other}%
@@ -911,193 +1067,6 @@
\input luababel.def
\fi
\fi
-\bbl at trace{Basic macros}
-\def\bbl at stripslash{\expandafter\@gobble\string}
-\def\bbl at add#1#2{%
- \bbl at ifunset{\bbl at stripslash#1}%
- {\def#1{#2}}%
- {\expandafter\def\expandafter#1\expandafter{#1#2}}}
-\def\bbl at xin@{\@expandtwoargs\in@}
-\def\bbl at carg#1#2{\expandafter#1\csname#2\endcsname}%
-\def\bbl at ncarg#1#2#3{\expandafter#1\expandafter#2\csname#3\endcsname}%
-\def\bbl at ccarg#1#2#3{%
- \expandafter#1\csname#2\expandafter\endcsname\csname#3\endcsname}%
-\def\bbl at csarg#1#2{\expandafter#1\csname bbl@#2\endcsname}%
-\def\bbl at cs#1{\csname bbl@#1\endcsname}
-\def\bbl at cl#1{\csname bbl@#1@\languagename\endcsname}
-\def\bbl at loop#1#2#3{\bbl@@loop#1{#3}#2,\@nnil,}
-\def\bbl at loopx#1#2{\expandafter\bbl at loop\expandafter#1\expandafter{#2}}
-\def\bbl@@loop#1#2#3,{%
- \ifx\@nnil#3\relax\else
- \def#1{#3}#2\bbl at afterfi\bbl@@loop#1{#2}%
- \fi}
-\def\bbl at for#1#2#3{\bbl at loopx#1{#2}{\ifx#1\@empty\else#3\fi}}
-\def\bbl at add@list#1#2{%
- \edef#1{%
- \bbl at ifunset{\bbl at stripslash#1}%
- {}%
- {\ifx#1\@empty\else#1,\fi}%
- #2}}
-\long\def\bbl at afterelse#1\else#2\fi{\fi#1}
-\long\def\bbl at afterfi#1\fi{\fi#1}
-\def\bbl at exp#1{%
- \begingroup
- \let\\\noexpand
- \let\<\bbl at exp@en
- \let\[\bbl at exp@ue
- \edef\bbl at exp@aux{\endgroup#1}%
- \bbl at exp@aux}
-\def\bbl at exp@en#1>{\expandafter\noexpand\csname#1\endcsname}%
-\def\bbl at exp@ue#1]{%
- \unexpanded\expandafter\expandafter\expandafter{\csname#1\endcsname}}%
-\def\bbl at tempa#1{%
- \long\def\bbl at trim##1##2{%
- \futurelet\bbl at trim@a\bbl at trim@c##2\@nil\@nil#1\@nil\relax{##1}}%
- \def\bbl at trim@c{%
- \ifx\bbl at trim@a\@sptoken
- \expandafter\bbl at trim@b
- \else
- \expandafter\bbl at trim@b\expandafter#1%
- \fi}%
- \long\def\bbl at trim@b#1##1 \@nil{\bbl at trim@i##1}}
-\bbl at tempa{ }
-\long\def\bbl at trim@i#1\@nil#2\relax#3{#3{#1}}
-\long\def\bbl at trim@def#1{\bbl at trim{\def#1}}
-\begingroup
- \gdef\bbl at ifunset#1{%
- \expandafter\ifx\csname#1\endcsname\relax
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}
- \bbl at ifunset{ifcsname}%
- {}%
- {\gdef\bbl at ifunset#1{%
- \ifcsname#1\endcsname
- \expandafter\ifx\csname#1\endcsname\relax
- \bbl at afterelse\expandafter\@firstoftwo
- \else
- \bbl at afterfi\expandafter\@secondoftwo
- \fi
- \else
- \expandafter\@firstoftwo
- \fi}}
-\endgroup
-\def\bbl at ifblank#1{%
- \bbl at ifblank@i#1\@nil\@nil\@secondoftwo\@firstoftwo\@nil}
-\long\def\bbl at ifblank@i#1#2\@nil#3#4#5\@nil{#4}
-\def\bbl at ifset#1#2#3{%
- \bbl at ifunset{#1}{#3}{\bbl at exp{\\\bbl at ifblank{\@nameuse{#1}}}{#3}{#2}}}
-\def\bbl at forkv#1#2{%
- \def\bbl at kvcmd##1##2##3{#2}%
- \bbl at kvnext#1,\@nil,}
-\def\bbl at kvnext#1,{%
- \ifx\@nil#1\relax\else
- \bbl at ifblank{#1}{}{\bbl at forkv@eq#1=\@empty=\@nil{#1}}%
- \expandafter\bbl at kvnext
- \fi}
-\def\bbl at forkv@eq#1=#2=#3\@nil#4{%
- \bbl at trim@def\bbl at forkv@a{#1}%
- \bbl at trim{\expandafter\bbl at kvcmd\expandafter{\bbl at forkv@a}}{#2}{#4}}
-\def\bbl at vforeach#1#2{%
- \def\bbl at forcmd##1{#2}%
- \bbl at fornext#1,\@nil,}
-\def\bbl at fornext#1,{%
- \ifx\@nil#1\relax\else
- \bbl at ifblank{#1}{}{\bbl at trim\bbl at forcmd{#1}}%
- \expandafter\bbl at fornext
- \fi}
-\def\bbl at foreach#1{\expandafter\bbl at vforeach\expandafter{#1}}
-\def\bbl at replace#1#2#3{% in #1 -> repl #2 by #3
- \toks@{}%
- \def\bbl at replace@aux##1#2##2#2{%
- \ifx\bbl at nil##2%
- \toks@\expandafter{\the\toks@##1}%
- \else
- \toks@\expandafter{\the\toks@##1#3}%
- \bbl at afterfi
- \bbl at replace@aux##2#2%
- \fi}%
- \expandafter\bbl at replace@aux#1#2\bbl at nil#2%
- \edef#1{\the\toks@}}
-\ifx\detokenize\@undefined\else % Unused macros if old Plain TeX
- \bbl at exp{\def\\\bbl at parsedef##1\detokenize{macro:}}#2->#3\relax{%
- \def\bbl at tempa{#1}%
- \def\bbl at tempb{#2}%
- \def\bbl at tempe{#3}}
- \def\bbl at sreplace#1#2#3{%
- \begingroup
- \expandafter\bbl at parsedef\meaning#1\relax
- \def\bbl at tempc{#2}%
- \edef\bbl at tempc{\expandafter\strip at prefix\meaning\bbl at tempc}%
- \def\bbl at tempd{#3}%
- \edef\bbl at tempd{\expandafter\strip at prefix\meaning\bbl at tempd}%
- \bbl at xin@{\bbl at tempc}{\bbl at tempe}% If not in macro, do nothing
- \ifin@
- \bbl at exp{\\\bbl at replace\\\bbl at tempe{\bbl at tempc}{\bbl at tempd}}%
- \def\bbl at tempc{% Expanded an executed below as 'uplevel'
- \\\makeatletter % "internal" macros with @ are assumed
- \\\scantokens{%
- \bbl at tempa\\\@namedef{\bbl at stripslash#1}\bbl at tempb{\bbl at tempe}}%
- \catcode64=\the\catcode64\relax}% Restore @
- \else
- \let\bbl at tempc\@empty % Not \relax
- \fi
- \bbl at exp{% For the 'uplevel' assignments
- \endgroup
- \bbl at tempc}} % empty or expand to set #1 with changes
-\fi
-\def\bbl at ifsamestring#1#2{%
- \begingroup
- \protected at edef\bbl at tempb{#1}%
- \edef\bbl at tempb{\expandafter\strip at prefix\meaning\bbl at tempb}%
- \protected at edef\bbl at tempc{#2}%
- \edef\bbl at tempc{\expandafter\strip at prefix\meaning\bbl at tempc}%
- \ifx\bbl at tempb\bbl at tempc
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \endgroup}
-\chardef\bbl at engine=%
- \ifx\directlua\@undefined
- \ifx\XeTeXinputencoding\@undefined
- \z@
- \else
- \tw@
- \fi
- \else
- \@ne
- \fi
-\def\bbl at bsphack{%
- \ifhmode
- \hskip\z at skip
- \def\bbl at esphack{\loop\ifdim\lastskip>\z@\unskip\repeat\unskip}%
- \else
- \let\bbl at esphack\@empty
- \fi}
-\def\bbl at cased{%
- \ifx\oe\OE
- \expandafter\in@\expandafter
- {\expandafter\OE\expandafter}\expandafter{\oe}%
- \ifin@
- \bbl at afterelse\expandafter\MakeUppercase
- \else
- \bbl at afterfi\expandafter\MakeLowercase
- \fi
- \else
- \expandafter\@firstofone
- \fi}
-\def\bbl at extras@wrap#1#2#3{% 1:in-test, 2:before, 3:after
- \toks@\expandafter\expandafter\expandafter{%
- \csname extras\languagename\endcsname}%
- \bbl at exp{\\\in@{#1}{\the\toks@}}%
- \ifin@\else
- \@temptokena{#2}%
- \edef\bbl at tempc{\the\@temptokena\the\toks@}%
- \toks@\expandafter{\bbl at tempc#3}%
- \expandafter\edef\csname extras\languagename\endcsname{\the\toks@}%
- \fi}
\bbl at trace{Compatibility with language.def}
\ifx\bbl at languages\@undefined
\ifx\directlua\@undefined
@@ -1165,7 +1134,7 @@
\newcommand\EnableBabelHook[1]{\bbl at csarg\let{hk@#1}\@firstofone}
\newcommand\DisableBabelHook[1]{\bbl at csarg\let{hk@#1}\@gobble}
\def\bbl at usehooks{\bbl at usehooks@lang\languagename}
-\def\bbl at usehooks@lang#1#2#3{%
+\def\bbl at usehooks@lang#1#2#3{% Test for Plain
\ifx\UseHook\@undefined\else\UseHook{babel/*/#2}\fi
\def\bbl at elth##1{%
\bbl at cs{hk@##1}{\bbl at 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 at tempa#1=#2\@@{\NewHook{babel/#1}}
\bbl at foreach\bbl at evargs{\bbl at tempa#1\@@}
\fi
@@ -1891,7 +1860,7 @@
\def\bbl at toglobal#1{\global\let#1#1}
\@ifpackagewith{babel}{nocase}%
{\let\bbl at patchuclc\relax}%
- {\def\bbl at patchuclc{%
+ {\def\bbl at patchuclc{% TODO. Delete. Doesn’t work any more.
\global\let\bbl at patchuclc\relax
\g at addto@macro\@uclclist{\reserved at b{\reserved at b\bbl at uclc}}%
\gdef\bbl at uclc##1{%
@@ -2341,39 +2310,6 @@
\fi
\bbl at trace{Bidi layout}
\providecommand\IfBabelLayout[3]{#3}%
-\newcommand\BabelPatchSection[1]{%
- \@ifundefined{#1}{}{%
- \bbl at exp{\let\<bbl at ss@#1>\<#1>}%
- \@namedef{#1}{%
- \@ifstar{\bbl at presec@s{#1}}%
- {\@dblarg{\bbl at presec@x{#1}}}}}}
-\def\bbl at presec@x#1[#2]#3{%
- \bbl at exp{%
- \\\select at language@x{\bbl at main@language}%
- \\\bbl at cs{sspre@#1}%
- \\\bbl at cs{ss@#1}%
- [\\\foreignlanguage{\languagename}{\unexpanded{#2}}]%
- {\\\foreignlanguage{\languagename}{\unexpanded{#3}}}%
- \\\select at language@x{\languagename}}}
-\def\bbl at presec@s#1#2{%
- \bbl at exp{%
- \\\select at language@x{\bbl at main@language}%
- \\\bbl at cs{sspre@#1}%
- \\\bbl at cs{ss@#1}*%
- {\\\foreignlanguage{\languagename}{\unexpanded{#2}}}%
- \\\select at language@x{\languagename}}}
-\IfBabelLayout{sectioning}%
- {\BabelPatchSection{part}%
- \BabelPatchSection{chapter}%
- \BabelPatchSection{section}%
- \BabelPatchSection{subsection}%
- \BabelPatchSection{subsubsection}%
- \BabelPatchSection{paragraph}%
- \BabelPatchSection{subparagraph}%
- \def\babel at toc#1{%
- \select at language@x{\bbl at main@language}}}{}
-\IfBabelLayout{captions}%
- {\BabelPatchSection{caption}}{}
\bbl at trace{Input engine specific macros}
\ifcase\bbl at engine
\input txtbabel.def
@@ -2395,1396 +2331,6 @@
\let\babelpatterns\babelprehyphenation
\let\babelcharproperty\babelprehyphenation
\fi
-\bbl at trace{Creating languages and reading ini files}
-\let\bbl at extend@ini\@gobble
-\newcommand\babelprovide[2][]{%
- \let\bbl at savelangname\languagename
- \edef\bbl at savelocaleid{\the\localeid}%
- % Set name and locale id
- \edef\languagename{#2}%
- \bbl at id@assign
- % Initialize keys
- \bbl at vforeach{captions,date,import,main,script,language,%
- hyphenrules,linebreaking,justification,mapfont,maparabic,%
- mapdigits,intraspace,intrapenalty,onchar,transforms,alph,%
- Alph,labels,labels*,calendar,date,casing}%
- {\bbl at csarg\let{KVP@##1}\@nnil}%
- \global\let\bbl at release@transforms\@empty
- \let\bbl at calendars\@empty
- \global\let\bbl at inidata\@empty
- \global\let\bbl at extend@ini\@gobble
- \gdef\bbl at key@list{;}%
- \bbl at forkv{#1}{%
- \in@{/}{##1}% With /, (re)sets a value in the ini
- \ifin@
- \global\let\bbl at extend@ini\bbl at extend@ini at aux
- \bbl at renewinikey##1\@@{##2}%
- \else
- \bbl at csarg\ifx{KVP@##1}\@nnil\else
- \bbl at error
- {Unknown key '##1' in \string\babelprovide}%
- {See the manual for valid keys}%
- \fi
- \bbl at csarg\def{KVP@##1}{##2}%
- \fi}%
- \chardef\bbl at howloaded=% 0:none; 1:ldf without ini; 2:ini
- \bbl at ifunset{date#2}\z@{\bbl at ifunset{bbl at llevel@#2}\@ne\tw@}%
- % == init ==
- \ifx\bbl at screset\@undefined
- \bbl at ldfinit
- \fi
- % == date (as option) ==
- % \ifx\bbl at KVP@date\@nnil\else
- % \fi
- % ==
- \let\bbl at lbkflag\relax % \@empty = do setup linebreak, only in 3 cases:
- \ifcase\bbl at howloaded
- \let\bbl at lbkflag\@empty % new
- \else
- \ifx\bbl at KVP@hyphenrules\@nnil\else
- \let\bbl at lbkflag\@empty
- \fi
- \ifx\bbl at KVP@import\@nnil\else
- \let\bbl at lbkflag\@empty
- \fi
- \fi
- % == import, captions ==
- \ifx\bbl at KVP@import\@nnil\else
- \bbl at exp{\\\bbl at ifblank{\bbl at KVP@import}}%
- {\ifx\bbl at initoload\relax
- \begingroup
- \def\BabelBeforeIni##1##2{\gdef\bbl at KVP@import{##1}\endinput}%
- \bbl at input@texini{#2}%
- \endgroup
- \else
- \xdef\bbl at KVP@import{\bbl at initoload}%
- \fi}%
- {}%
- \let\bbl at KVP@date\@empty
- \fi
- \let\bbl at KVP@captions@@\bbl at KVP@captions % TODO. A dirty hack
- \ifx\bbl at KVP@captions\@nnil
- \let\bbl at KVP@captions\bbl at KVP@import
- \fi
- % ==
- \ifx\bbl at KVP@transforms\@nnil\else
- \bbl at replace\bbl at KVP@transforms{ }{,}%
- \fi
- % == Load ini ==
- \ifcase\bbl at howloaded
- \bbl at provide@new{#2}%
- \else
- \bbl at ifblank{#1}%
- {}% With \bbl at load@basic below
- {\bbl at provide@renew{#2}}%
- \fi
- % Post tasks
- % ----------
- % == subsequent calls after the first provide for a locale ==
- \ifx\bbl at inidata\@empty\else
- \bbl at extend@ini{#2}%
- \fi
- % == ensure captions ==
- \ifx\bbl at KVP@captions\@nnil\else
- \bbl at ifunset{bbl at extracaps@#2}%
- {\bbl at exp{\\\babelensure[exclude=\\\today]{#2}}}%
- {\bbl at exp{\\\babelensure[exclude=\\\today,
- include=\[bbl at extracaps@#2]}]{#2}}%
- \bbl at ifunset{bbl at ensure@\languagename}%
- {\bbl at exp{%
- \\\DeclareRobustCommand\<bbl at ensure@\languagename>[1]{%
- \\\foreignlanguage{\languagename}%
- {####1}}}}%
- {}%
- \bbl at exp{%
- \\\bbl at toglobal\<bbl at ensure@\languagename>%
- \\\bbl at toglobal\<bbl at 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 at load@basic{#2}%
- % == script, language ==
- % Override the values from ini or defines them
- \ifx\bbl at KVP@script\@nnil\else
- \bbl at csarg\edef{sname@#2}{\bbl at KVP@script}%
- \fi
- \ifx\bbl at KVP@language\@nnil\else
- \bbl at csarg\edef{lname@#2}{\bbl at KVP@language}%
- \fi
- \ifcase\bbl at engine\or
- \bbl at ifunset{bbl at chrng@\languagename}{}%
- {\directlua{
- Babel.set_chranges_b('\bbl at cl{sbcp}', '\bbl at cl{chrng}') }}%
- \fi
- % == onchar ==
- \ifx\bbl at KVP@onchar\@nnil\else
- \bbl at luahyphenate
- \bbl at exp{%
- \\\AddToHook{env/document/before}{{\\\select at 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 at xin@{ letters }{ \bbl at KVP@onchar\space}%
- \ifin@
- \directlua{
- Babel.locale_props[\the\localeid].letters = true
- }%
- \fi
- \bbl at xin@{ ids }{ \bbl at KVP@onchar\space}%
- \ifin@
- \ifx\bbl at starthyphens\@undefined % Needed if no explicit selection
- \AddBabelHook{babel-onchar}{beforestart}{{\bbl at starthyphens}}%
- \fi
- \bbl at exp{\\\bbl at add\\\bbl at starthyphens
- {\\\bbl at patterns@lua{\languagename}}}%
- % TODO - error/warning if no script
- \directlua{
- if Babel.script_blocks['\bbl at cl{sbcp}'] then
- Babel.loc_to_scr[\the\localeid] =
- Babel.script_blocks['\bbl at cl{sbcp}']
- Babel.locale_props[\the\localeid].lc = \the\localeid\space
- Babel.locale_props[\the\localeid].lg = \the\@nameuse{l@\languagename}\space
- end
- }%
- \fi
- \bbl at xin@{ fonts }{ \bbl at KVP@onchar\space}%
- \ifin@
- \bbl at ifunset{bbl at lsys@\languagename}{\bbl at provide@lsys{\languagename}}{}%
- \bbl at ifunset{bbl at wdir@\languagename}{\bbl at provide@dirs{\languagename}}{}%
- \directlua{
- if Babel.script_blocks['\bbl at cl{sbcp}'] then
- Babel.loc_to_scr[\the\localeid] =
- Babel.script_blocks['\bbl at cl{sbcp}']
- end}%
- \ifx\bbl at mapselect\@undefined % TODO. almost the same as mapfont
- \AtBeginDocument{%
- \bbl at patchfont{{\bbl at mapselect}}%
- {\selectfont}}%
- \def\bbl at mapselect{%
- \let\bbl at mapselect\relax
- \edef\bbl at prefontid{\fontid\font}}%
- \def\bbl at mapdir##1{%
- {\def\languagename{##1}%
- \let\bbl at ifrestoring\@firstoftwo % To avoid font warning
- \bbl at switchfont
- \ifnum\fontid\font>\z@ % A hack, for the pgf nullfont hack
- \directlua{
- Babel.locale_props[\the\csname bbl at id@@##1\endcsname]%
- ['/\bbl at prefontid'] = \fontid\font\space}%
- \fi}}%
- \fi
- \bbl at exp{\\\bbl at add\\\bbl at mapselect{\\\bbl at mapdir{\languagename}}}%
- \fi
- % TODO - catch non-valid values
- \fi
- % == mapfont ==
- % For bidi texts, to switch the font based on direction
- \ifx\bbl at KVP@mapfont\@nnil\else
- \bbl at ifsamestring{\bbl at KVP@mapfont}{direction}{}%
- {\bbl at error{Option '\bbl at KVP@mapfont' unknown for\\%
- mapfont. Use 'direction'.%
- {See the manual for details.}}}%
- \bbl at ifunset{bbl at lsys@\languagename}{\bbl at provide@lsys{\languagename}}{}%
- \bbl at ifunset{bbl at wdir@\languagename}{\bbl at provide@dirs{\languagename}}{}%
- \ifx\bbl at mapselect\@undefined % TODO. See onchar.
- \AtBeginDocument{%
- \bbl at patchfont{{\bbl at mapselect}}%
- {\selectfont}}%
- \def\bbl at mapselect{%
- \let\bbl at mapselect\relax
- \edef\bbl at prefontid{\fontid\font}}%
- \def\bbl at mapdir##1{%
- {\def\languagename{##1}%
- \let\bbl at ifrestoring\@firstoftwo % avoid font warning
- \bbl at switchfont
- \directlua{Babel.fontmap
- [\the\csname bbl at wdir@##1\endcsname]%
- [\bbl at prefontid]=\fontid\font}}}%
- \fi
- \bbl at exp{\\\bbl at add\\\bbl at mapselect{\\\bbl at mapdir{\languagename}}}%
- \fi
- % == Line breaking: intraspace, intrapenalty ==
- % For CJK, East Asian, Southeast Asian, if interspace in ini
- \ifx\bbl at KVP@intraspace\@nnil\else % We can override the ini or set
- \bbl at csarg\edef{intsp@#2}{\bbl at KVP@intraspace}%
- \fi
- \bbl at provide@intraspace
- % == Line breaking: CJK quotes == TODO -> @extras
- \ifcase\bbl at engine\or
- \bbl at xin@{/c}{/\bbl at cl{lnbrk}}%
- \ifin@
- \bbl at ifunset{bbl at quote@\languagename}{}%
- {\directlua{
- Babel.locale_props[\the\localeid].cjk_quotes = {}
- local cs = 'op'
- for c in string.utfvalues(%
- [[\csname bbl at 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 at KVP@justification\@nnil\else
- \let\bbl at KVP@linebreaking\bbl at KVP@justification
- \fi
- \ifx\bbl at KVP@linebreaking\@nnil\else
- \bbl at xin@{,\bbl at KVP@linebreaking,}%
- {,elongated,kashida,cjk,padding,unhyphenated,}%
- \ifin@
- \bbl at csarg\xdef
- {lnbrk@\languagename}{\expandafter\@car\bbl at KVP@linebreaking\@nil}%
- \fi
- \fi
- \bbl at xin@{/e}{/\bbl at cl{lnbrk}}%
- \ifin@\else\bbl at xin@{/k}{/\bbl at cl{lnbrk}}\fi
- \ifin@\bbl at arabicjust\fi
- \bbl at xin@{/p}{/\bbl at cl{lnbrk}}%
- \ifin@\AtBeginDocument{\@nameuse{bbl at tibetanjust}}\fi
- % == Line breaking: hyphenate.other.(locale|script) ==
- \ifx\bbl at lbkflag\@empty
- \bbl at ifunset{bbl at hyotl@\languagename}{}%
- {\bbl at csarg\bbl at replace{hyotl@\languagename}{ }{,}%
- \bbl at startcommands*{\languagename}{}%
- \bbl at csarg\bbl at foreach{hyotl@\languagename}{%
- \ifcase\bbl at engine
- \ifnum##1<257
- \SetHyphenMap{\BabelLower{##1}{##1}}%
- \fi
- \else
- \SetHyphenMap{\BabelLower{##1}{##1}}%
- \fi}%
- \bbl at endcommands}%
- \bbl at ifunset{bbl at hyots@\languagename}{}%
- {\bbl at csarg\bbl at replace{hyots@\languagename}{ }{,}%
- \bbl at csarg\bbl at foreach{hyots@\languagename}{%
- \ifcase\bbl at 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 at engine\else
- \bbl at ifunset{bbl at dgnat@\languagename}{}%
- {\expandafter\ifx\csname bbl at dgnat@\languagename\endcsname\@empty\else
- \expandafter\expandafter\expandafter
- \bbl at setdigits\csname bbl at dgnat@\languagename\endcsname
- \ifx\bbl at KVP@maparabic\@nnil\else
- \ifx\bbl at latinarabic\@undefined
- \expandafter\let\expandafter\@arabic
- \csname bbl at counter@\languagename\endcsname
- \else % ie, if layout=counters, which redefines \@arabic
- \expandafter\let\expandafter\bbl at latinarabic
- \csname bbl at counter@\languagename\endcsname
- \fi
- \fi
- \fi}%
- \fi
- % == Counters: mapdigits ==
- % > luababel.def
- % == Counters: alph, Alph ==
- \ifx\bbl at KVP@alph\@nnil\else
- \bbl at exp{%
- \\\bbl at add\<bbl at preextras@\languagename>{%
- \\\babel at save\\\@alph
- \let\\\@alph\<bbl at cntr@\bbl at KVP@alph @\languagename>}}%
- \fi
- \ifx\bbl at KVP@Alph\@nnil\else
- \bbl at exp{%
- \\\bbl at add\<bbl at preextras@\languagename>{%
- \\\babel at save\\\@Alph
- \let\\\@Alph\<bbl at cntr@\bbl at KVP@Alph @\languagename>}}%
- \fi
- % == Casing ==
- \bbl at exp{\def\<bbl at casing@\languagename>%
- {\<bbl at lbcp@\languagename>%
- \ifx\bbl at KVP@casing\@nnil\else-x-\bbl at KVP@casing\fi}}%
- % == Calendars ==
- \ifx\bbl at KVP@calendar\@nnil
- \edef\bbl at KVP@calendar{\bbl at cl{calpr}}%
- \fi
- \def\bbl at tempe##1 ##2\@@{% Get first calendar
- \def\bbl at tempa{##1}}%
- \bbl at exp{\\\bbl at tempe\bbl at KVP@calendar\space\\\@@}%
- \def\bbl at tempe##1.##2.##3\@@{%
- \def\bbl at tempc{##1}%
- \def\bbl at tempb{##2}}%
- \expandafter\bbl at tempe\bbl at tempa..\@@
- \bbl at csarg\edef{calpr@\languagename}{%
- \ifx\bbl at tempc\@empty\else
- calendar=\bbl at tempc
- \fi
- \ifx\bbl at tempb\@empty\else
- ,variant=\bbl at tempb
- \fi}%
- % == engine specific extensions ==
- % Defined in XXXbabel.def
- \bbl at provide@extra{#2}%
- % == require.babel in ini ==
- % To load or reaload the babel-*.tex, if require.babel in ini
- \ifx\bbl at beforestart\relax\else % But not in doc aux or body
- \bbl at ifunset{bbl at rqtex@\languagename}{}%
- {\expandafter\ifx\csname bbl at rqtex@\languagename\endcsname\@empty\else
- \let\BabelBeforeIni\@gobbletwo
- \chardef\atcatcode=\catcode`\@
- \catcode`\@=11\relax
- \bbl at input@texini{\bbl at cs{rqtex@\languagename}}%
- \catcode`\@=\atcatcode
- \let\atcatcode\relax
- \global\bbl at csarg\let{rqtex@\languagename}\relax
- \fi}%
- \bbl at foreach\bbl at calendars{%
- \bbl at ifunset{bbl at ca@##1}{%
- \chardef\atcatcode=\catcode`\@
- \catcode`\@=11\relax
- \InputIfFileExists{babel-ca-##1.tex}{}{}%
- \catcode`\@=\atcatcode
- \let\atcatcode\relax}%
- {}}%
- \fi
- % == frenchspacing ==
- \ifcase\bbl at howloaded\in at true\else\in at false\fi
- \ifin@\else\bbl at xin@{typography/frenchspacing}{\bbl at key@list}\fi
- \ifin@
- \bbl at extras@wrap{\\\bbl at pre@fs}%
- {\bbl at pre@fs}%
- {\bbl at post@fs}%
- \fi
- % == transforms ==
- % > luababel.def
- % == main ==
- \ifx\bbl at KVP@main\@nnil % Restore only if not 'main'
- \let\languagename\bbl at savelangname
- \chardef\localeid\bbl at savelocaleid\relax
- \fi
- % == hyphenrules (apply if current) ==
- \ifx\bbl at KVP@hyphenrules\@nnil\else
- \ifnum\bbl at savelocaleid=\localeid
- \language\@nameuse{l@\languagename}%
- \fi
- \fi}
-\def\bbl at provide@new#1{%
- \@namedef{date#1}{}% marks lang exists - required by \StartBabelCommands
- \@namedef{extras#1}{}%
- \@namedef{noextras#1}{}%
- \bbl at startcommands*{#1}{captions}%
- \ifx\bbl at KVP@captions\@nnil % and also if import, implicit
- \def\bbl at tempb##1{% elt for \bbl at captionslist
- \ifx##1\@empty\else
- \bbl at exp{%
- \\\SetString\\##1{%
- \\\bbl at nocaption{\bbl at stripslash##1}{#1\bbl at stripslash##1}}}%
- \expandafter\bbl at tempb
- \fi}%
- \expandafter\bbl at tempb\bbl at captionslist\@empty
- \else
- \ifx\bbl at initoload\relax
- \bbl at read@ini{\bbl at KVP@captions}2% % Here letters cat = 11
- \else
- \bbl at read@ini{\bbl at initoload}2% % Same
- \fi
- \fi
- \StartBabelCommands*{#1}{date}%
- \ifx\bbl at KVP@date\@nnil
- \bbl at exp{%
- \\\SetString\\\today{\\\bbl at nocaption{today}{#1today}}}%
- \else
- \bbl at savetoday
- \bbl at savedate
- \fi
- \bbl at endcommands
- \bbl at load@basic{#1}%
- % == hyphenmins == (only if new)
- \bbl at exp{%
- \gdef\<#1hyphenmins>{%
- {\bbl at ifunset{bbl at lfthm@#1}{2}{\bbl at cs{lfthm@#1}}}%
- {\bbl at ifunset{bbl at rgthm@#1}{3}{\bbl at cs{rgthm@#1}}}}}%
- % == hyphenrules (also in renew) ==
- \bbl at provide@hyphens{#1}%
- \ifx\bbl at KVP@main\@nnil\else
- \expandafter\main at language\expandafter{#1}%
- \fi}
-\def\bbl at provide@renew#1{%
- \ifx\bbl at KVP@captions\@nnil\else
- \StartBabelCommands*{#1}{captions}%
- \bbl at read@ini{\bbl at KVP@captions}2% % Here all letters cat = 11
- \EndBabelCommands
- \fi
- \ifx\bbl at KVP@date\@nnil\else
- \StartBabelCommands*{#1}{date}%
- \bbl at savetoday
- \bbl at savedate
- \EndBabelCommands
- \fi
- % == hyphenrules (also in new) ==
- \ifx\bbl at lbkflag\@empty
- \bbl at provide@hyphens{#1}%
- \fi}
-\def\bbl at load@basic#1{%
- \ifcase\bbl at howloaded\or\or
- \ifcase\csname bbl at llevel@\languagename\endcsname
- \bbl at csarg\let{lname@\languagename}\relax
- \fi
- \fi
- \bbl at ifunset{bbl at lname@#1}%
- {\def\BabelBeforeIni##1##2{%
- \begingroup
- \let\bbl at ini@captions at aux\@gobbletwo
- \def\bbl at inidate ####1.####2.####3.####4\relax ####5####6{}%
- \bbl at read@ini{##1}1%
- \ifx\bbl at initoload\relax\endinput\fi
- \endgroup}%
- \begingroup % boxed, to avoid extra spaces:
- \ifx\bbl at initoload\relax
- \bbl at input@texini{#1}%
- \else
- \setbox\z@\hbox{\BabelBeforeIni{\bbl at initoload}{}}%
- \fi
- \endgroup}%
- {}}
-\def\bbl at provide@hyphens#1{%
- \@tempcnta\m at ne % a flag
- \ifx\bbl at KVP@hyphenrules\@nnil\else
- \bbl at replace\bbl at KVP@hyphenrules{ }{,}%
- \bbl at foreach\bbl at KVP@hyphenrules{%
- \ifnum\@tempcnta=\m at ne % if not yet found
- \bbl at ifsamestring{##1}{+}%
- {\bbl at carg\addlanguage{l@##1}}%
- {}%
- \bbl at ifunset{l@##1}% After a possible +
- {}%
- {\@tempcnta\@nameuse{l@##1}}%
- \fi}%
- \ifnum\@tempcnta=\m at ne
- \bbl at warning{%
- Requested 'hyphenrules' for '\languagename' not found:\\%
- \bbl at KVP@hyphenrules.\\%
- Using the default value. Reported}%
- \fi
- \fi
- \ifnum\@tempcnta=\m at ne % if no opt or no language in opt found
- \ifx\bbl at KVP@captions@@\@nnil % TODO. Hackish. See above.
- \bbl at ifunset{bbl at hyphr@#1}{}% use value in ini, if exists
- {\bbl at exp{\\\bbl at ifblank{\bbl at cs{hyphr@#1}}}%
- {}%
- {\bbl at ifunset{l@\bbl at cl{hyphr}}%
- {}% if hyphenrules found:
- {\@tempcnta\@nameuse{l@\bbl at cl{hyphr}}}}}%
- \fi
- \fi
- \bbl at ifunset{l@#1}%
- {\ifnum\@tempcnta=\m at ne
- \bbl at carg\adddialect{l@#1}\language
- \else
- \bbl at carg\adddialect{l@#1}\@tempcnta
- \fi}%
- {\ifnum\@tempcnta=\m at ne\else
- \global\bbl at carg\chardef{l@#1}\@tempcnta
- \fi}}
-\def\bbl at input@texini#1{%
- \bbl at bsphack
- \bbl at 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 at esphack}
-\def\bbl at iniline#1\bbl at iniline{%
- \@ifnextchar[\bbl at inisect{\@ifnextchar;\bbl at iniskip\bbl at inistore}#1\@@}% ]
-\def\bbl at inisect[#1]#2\@@{\def\bbl at section{#1}}
-\def\bbl at iniskip#1\@@{}% if starts with ;
-\def\bbl at inistore#1=#2\@@{% full (default)
- \bbl at trim@def\bbl at tempa{#1}%
- \bbl at trim\toks@{#2}%
- \bbl at xin@{;\bbl at section/\bbl at tempa;}{\bbl at key@list}%
- \ifin@\else
- \bbl at xin@{,identification/include.}%
- {,\bbl at section/\bbl at tempa}%
- \ifin@\edef\bbl at required@inis{\the\toks@}\fi
- \bbl at exp{%
- \\\g at addto@macro\\\bbl at inidata{%
- \\\bbl at elt{\bbl at section}{\bbl at tempa}{\the\toks@}}}%
- \fi}
-\def\bbl at inistore@min#1=#2\@@{% minimal (maybe set in \bbl at read@ini)
- \bbl at trim@def\bbl at tempa{#1}%
- \bbl at trim\toks@{#2}%
- \bbl at xin@{.identification.}{.\bbl at section.}%
- \ifin@
- \bbl at exp{\\\g at addto@macro\\\bbl at inidata{%
- \\\bbl at elt{identification}{\bbl at tempa}{\the\toks@}}}%
- \fi}
-\def\bbl at loop@ini{%
- \loop
- \if T\ifeof\bbl at readstream F\fi T\relax % Trick, because inside \loop
- \endlinechar\m at ne
- \read\bbl at readstream to \bbl at line
- \endlinechar`\^^M
- \ifx\bbl at line\@empty\else
- \expandafter\bbl at iniline\bbl at line\bbl at iniline
- \fi
- \repeat}
-\ifx\bbl at readstream\@undefined
- \csname newread\endcsname\bbl at readstream
-\fi
-\def\bbl at read@ini#1#2{%
- \global\let\bbl at extend@ini\@gobble
- \openin\bbl at readstream=babel-#1.ini
- \ifeof\bbl at readstream
- \bbl at 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 at inidata ==
- \catcode`\[=12 \catcode`\]=12 \catcode`\==12 \catcode`\&=12
- \catcode`\;=12 \catcode`\|=12 \catcode`\%=14 \catcode`\-=12
- \bbl at info{Importing
- \ifcase#2font and identification \or basic \fi
- data for \languagename\\%
- from babel-#1.ini. Reported}%
- \ifnum#2=\z@
- \global\let\bbl at inidata\@empty
- \let\bbl at inistore\bbl at inistore@min % Remember it's local
- \fi
- \def\bbl at section{identification}%
- \let\bbl at required@inis\@empty
- \bbl at exp{\\\bbl at inistore tag.ini=#1\\\@@}%
- \bbl at inistore load.level=#2\@@
- \bbl at loop@ini
- \ifx\bbl at required@inis\@empty\else
- \bbl at replace\bbl at required@inis{ }{,}%
- \bbl at foreach\bbl at required@inis{%
- \openin\bbl at readstream=babel-##1.ini
- \bbl at loop@ini}%
- \fi
- % == Process stored data ==
- \bbl at csarg\xdef{lini@\languagename}{#1}%
- \bbl at read@ini at aux
- % == 'Export' data ==
- \bbl at ini@exports{#2}%
- \global\bbl at csarg\let{inidata@\languagename}\bbl at inidata
- \global\let\bbl at inidata\@empty
- \bbl at exp{\\\bbl at add@list\\\bbl at ini@loaded{\languagename}}%
- \bbl at toglobal\bbl at ini@loaded
- \fi
- \closein\bbl at readstream}
-\def\bbl at read@ini at aux{%
- \let\bbl at savestrings\@empty
- \let\bbl at savetoday\@empty
- \let\bbl at savedate\@empty
- \def\bbl at elt##1##2##3{%
- \def\bbl at section{##1}%
- \in@{=date.}{=##1}% Find a better place
- \ifin@
- \bbl at ifunset{bbl at inikv@##1}%
- {\bbl at ini@calendar{##1}}%
- {}%
- \fi
- \bbl at ifunset{bbl at inikv@##1}{}%
- {\csname bbl at inikv@##1\endcsname{##2}{##3}}}%
- \bbl at inidata}
-\def\bbl at extend@ini at aux#1{%
- \bbl at startcommands*{#1}{captions}%
- % Activate captions/... and modify exports
- \bbl at csarg\def{inikv at captions.licr}##1##2{%
- \setlocalecaption{#1}{##1}{##2}}%
- \def\bbl at inikv@captions##1##2{%
- \bbl at ini@captions at aux{##1}{##2}}%
- \def\bbl at stringdef##1##2{\gdef##1{##2}}%
- \def\bbl at exportkey##1##2##3{%
- \bbl at ifunset{bbl@@kv@##2}{}%
- {\expandafter\ifx\csname bbl@@kv@##2\endcsname\@empty\else
- \bbl at exp{\global\let\<bbl@##1@\languagename>\<bbl@@kv@##2>}%
- \fi}}%
- % As with \bbl at read@ini, but with some changes
- \bbl at read@ini at aux
- \bbl at ini@exports\tw@
- % Update inidata at lang by pretending the ini is read.
- \def\bbl at elt##1##2##3{%
- \def\bbl at section{##1}%
- \bbl at iniline##2=##3\bbl at iniline}%
- \csname bbl at inidata@#1\endcsname
- \global\bbl at csarg\let{inidata@#1}\bbl at inidata
- \StartBabelCommands*{#1}{date}% And from the import stuff
- \def\bbl at stringdef##1##2{\gdef##1{##2}}%
- \bbl at savetoday
- \bbl at savedate
- \bbl at endcommands}
-\def\bbl at ini@calendar#1{%
- \lowercase{\def\bbl at tempa{=#1=}}%
- \bbl at replace\bbl at tempa{=date.gregorian}{}%
- \bbl at replace\bbl at tempa{=date.}{}%
- \in@{.licr=}{#1=}%
- \ifin@
- \ifcase\bbl at engine
- \bbl at replace\bbl at tempa{.licr=}{}%
- \else
- \let\bbl at tempa\relax
- \fi
- \fi
- \ifx\bbl at tempa\relax\else
- \bbl at replace\bbl at tempa{=}{}%
- \ifx\bbl at tempa\@empty\else
- \xdef\bbl at calendars{\bbl at calendars,\bbl at tempa}%
- \fi
- \bbl at exp{%
- \def\<bbl at inikv@#1>####1####2{%
- \\\bbl at inidate####1...\relax{####2}{\bbl at tempa}}}%
- \fi}
-\def\bbl at renewinikey#1/#2\@@#3{%
- \edef\bbl at tempa{\zap at space #1 \@empty}% section
- \edef\bbl at tempb{\zap at space #2 \@empty}% key
- \bbl at trim\toks@{#3}% value
- \bbl at exp{%
- \edef\\\bbl at key@list{\bbl at key@list \bbl at tempa/\bbl at tempb;}%
- \\\g at addto@macro\\\bbl at inidata{%
- \\\bbl at elt{\bbl at tempa}{\bbl at tempb}{\the\toks@}}}}%
-\def\bbl at exportkey#1#2#3{%
- \bbl at ifunset{bbl@@kv@#2}%
- {\bbl at csarg\gdef{#1@\languagename}{#3}}%
- {\expandafter\ifx\csname bbl@@kv@#2\endcsname\@empty
- \bbl at csarg\gdef{#1@\languagename}{#3}%
- \else
- \bbl at exp{\global\let\<bbl@#1@\languagename>\<bbl@@kv@#2>}%
- \fi}}
-\def\bbl at iniwarning#1{%
- \bbl at ifunset{bbl@@kv at identification.warning#1}{}%
- {\bbl at warning{%
- From babel-\bbl at cs{lini@\languagename}.ini:\\%
- \bbl at cs{@kv at identification.warning#1}\\%
- Reported }}}
-\let\bbl at release@transforms\@empty
-\def\bbl at ini@exports#1{%
- % Identification always exported
- \bbl at iniwarning{}%
- \ifcase\bbl at engine
- \bbl at iniwarning{.pdflatex}%
- \or
- \bbl at iniwarning{.lualatex}%
- \or
- \bbl at iniwarning{.xelatex}%
- \fi%
- \bbl at exportkey{llevel}{identification.load.level}{}%
- \bbl at exportkey{elname}{identification.name.english}{}%
- \bbl at exp{\\\bbl at exportkey{lname}{identification.name.opentype}%
- {\csname bbl at elname@\languagename\endcsname}}%
- \bbl at exportkey{tbcp}{identification.tag.bcp47}{}%
- \bbl at exportkey{lbcp}{identification.language.tag.bcp47}{}%
- % Somewhat hackish. TODO
- \bbl at exportkey{casing}{identification.language.tag.bcp47}{}%
- \bbl at exportkey{lotf}{identification.tag.opentype}{dflt}%
- \bbl at exportkey{esname}{identification.script.name}{}%
- \bbl at exp{\\\bbl at exportkey{sname}{identification.script.name.opentype}%
- {\csname bbl at esname@\languagename\endcsname}}%
- \bbl at exportkey{sbcp}{identification.script.tag.bcp47}{}%
- \bbl at exportkey{sotf}{identification.script.tag.opentype}{DFLT}%
- \bbl at exportkey{rbcp}{identification.region.tag.bcp47}{}%
- \bbl at exportkey{vbcp}{identification.variant.tag.bcp47}{}%
- \bbl at exportkey{extt}{identification.extension.t.tag.bcp47}{}%
- \bbl at exportkey{extu}{identification.extension.u.tag.bcp47}{}%
- \bbl at exportkey{extx}{identification.extension.x.tag.bcp47}{}%
- % Also maps bcp47 -> languagename
- \ifbbl at bcptoname
- \bbl at csarg\xdef{bcp at map@\bbl at cl{tbcp}}{\languagename}%
- \fi
- % Conditional
- \ifnum#1>\z@ % 0 = only info, 1, 2 = basic, (re)new
- \bbl at exportkey{calpr}{date.calendar.preferred}{}%
- \bbl at exportkey{lnbrk}{typography.linebreaking}{h}%
- \bbl at exportkey{hyphr}{typography.hyphenrules}{}%
- \bbl at exportkey{lfthm}{typography.lefthyphenmin}{2}%
- \bbl at exportkey{rgthm}{typography.righthyphenmin}{3}%
- \bbl at exportkey{prehc}{typography.prehyphenchar}{}%
- \bbl at exportkey{hyotl}{typography.hyphenate.other.locale}{}%
- \bbl at exportkey{hyots}{typography.hyphenate.other.script}{}%
- \bbl at exportkey{intsp}{typography.intraspace}{}%
- \bbl at exportkey{frspc}{typography.frenchspacing}{u}%
- \bbl at exportkey{chrng}{characters.ranges}{}%
- \bbl at exportkey{quote}{characters.delimiters.quotes}{}%
- \bbl at exportkey{dgnat}{numbers.digits.native}{}%
- \ifnum#1=\tw@ % only (re)new
- \bbl at exportkey{rqtex}{identification.require.babel}{}%
- \bbl at toglobal\bbl at savetoday
- \bbl at toglobal\bbl at savedate
- \bbl at savestrings
- \fi
- \fi}
-\def\bbl at inikv#1#2{% key=value
- \toks@{#2}% This hides #'s from ini values
- \bbl at csarg\edef{@kv@\bbl at section.#1}{\the\toks@}}
-\let\bbl at inikv@identification\bbl at inikv
-\let\bbl at inikv@date\bbl at inikv
-\let\bbl at inikv@typography\bbl at inikv
-\let\bbl at inikv@characters\bbl at inikv
-\let\bbl at inikv@numbers\bbl at inikv
-\def\bbl at inikv@counters#1#2{%
- \bbl at ifsamestring{#1}{digits}%
- {\bbl at error{The counter name 'digits' is reserved for mapping\\%
- decimal digits}%
- {Use another name.}}%
- {}%
- \def\bbl at tempc{#1}%
- \bbl at trim@def{\bbl at tempb*}{#2}%
- \in@{.1$}{#1$}%
- \ifin@
- \bbl at replace\bbl at tempc{.1}{}%
- \bbl at csarg\protected at xdef{cntr@\bbl at tempc @\languagename}{%
- \noexpand\bbl at alphnumeral{\bbl at tempc}}%
- \fi
- \in@{.F.}{#1}%
- \ifin@\else\in@{.S.}{#1}\fi
- \ifin@
- \bbl at csarg\protected at xdef{cntr@#1@\languagename}{\bbl at tempb*}%
- \else
- \toks@{}% Required by \bbl at buildifcase, which returns \bbl at tempa
- \expandafter\bbl at buildifcase\bbl at tempb* \\ % Space after \\
- \bbl at csarg{\global\expandafter\let}{cntr@#1@\languagename}\bbl at tempa
- \fi}
-\ifcase\bbl at engine
- \bbl at csarg\def{inikv at captions.licr}#1#2{%
- \bbl at ini@captions at aux{#1}{#2}}
-\else
- \def\bbl at inikv@captions#1#2{%
- \bbl at ini@captions at aux{#1}{#2}}
-\fi
-\def\bbl at ini@captions at template#1#2{% string language tempa=capt-name
- \bbl at replace\bbl at tempa{.template}{}%
- \def\bbl at toreplace{#1{}}%
- \bbl at replace\bbl at toreplace{[ ]}{\nobreakspace{}}%
- \bbl at replace\bbl at toreplace{[[}{\csname}%
- \bbl at replace\bbl at toreplace{[}{\csname the}%
- \bbl at replace\bbl at toreplace{]]}{name\endcsname{}}%
- \bbl at replace\bbl at toreplace{]}{\endcsname{}}%
- \bbl at xin@{,\bbl at tempa,}{,chapter,appendix,part,}%
- \ifin@
- \@nameuse{bbl at patch\bbl at tempa}%
- \global\bbl at csarg\let{\bbl at tempa fmt@#2}\bbl at toreplace
- \fi
- \bbl at xin@{,\bbl at tempa,}{,figure,table,}%
- \ifin@
- \global\bbl at csarg\let{\bbl at tempa fmt@#2}\bbl at toreplace
- \bbl at exp{\gdef\<fnum@\bbl at tempa>{%
- \\\bbl at ifunset{bbl@\bbl at tempa fmt@\\\languagename}%
- {\[fnum@\bbl at tempa]}%
- {\\\@nameuse{bbl@\bbl at tempa fmt@\\\languagename}}}}%
- \fi}
-\def\bbl at ini@captions at aux#1#2{%
- \bbl at trim@def\bbl at tempa{#1}%
- \bbl at xin@{.template}{\bbl at tempa}%
- \ifin@
- \bbl at ini@captions at template{#2}\languagename
- \else
- \bbl at ifblank{#2}%
- {\bbl at exp{%
- \toks@{\\\bbl at nocaption{\bbl at tempa}{\languagename\bbl at tempa name}}}}%
- {\bbl at trim\toks@{#2}}%
- \bbl at exp{%
- \\\bbl at add\\\bbl at savestrings{%
- \\\SetString\<\bbl at tempa name>{\the\toks@}}}%
- \toks@\expandafter{\bbl at captionslist}%
- \bbl at exp{\\\in@{\<\bbl at tempa name>}{\the\toks@}}%
- \ifin@\else
- \bbl at exp{%
- \\\bbl at add\<bbl at extracaps@\languagename>{\<\bbl at tempa name>}%
- \\\bbl at toglobal\<bbl at extracaps@\languagename>}%
- \fi
- \fi}
-\def\bbl at list@the{%
- part,chapter,section,subsection,subsubsection,paragraph,%
- subparagraph,enumi,enumii,enumiii,enumiv,equation,figure,%
- table,page,footnote,mpfootnote,mpfn}
-\def\bbl at map@cnt#1{% #1:roman,etc, // #2:enumi,etc
- \bbl at ifunset{bbl at map@#1@\languagename}%
- {\@nameuse{#1}}%
- {\@nameuse{bbl at map@#1@\languagename}}}
-\def\bbl at inikv@labels#1#2{%
- \in@{.map}{#1}%
- \ifin@
- \ifx\bbl at KVP@labels\@nnil\else
- \bbl at xin@{ map }{ \bbl at KVP@labels\space}%
- \ifin@
- \def\bbl at tempc{#1}%
- \bbl at replace\bbl at tempc{.map}{}%
- \in@{,#2,}{,arabic,roman,Roman,alph,Alph,fnsymbol,}%
- \bbl at exp{%
- \gdef\<bbl at map@\bbl at tempc @\languagename>%
- {\ifin@\<#2>\else\\\localecounter{#2}\fi}}%
- \bbl at foreach\bbl at list@the{%
- \bbl at ifunset{the##1}{}%
- {\bbl at exp{\let\\\bbl at tempd\<the##1>}%
- \bbl at exp{%
- \\\bbl at sreplace\<the##1>%
- {\<\bbl at tempc>{##1}}{\\\bbl at map@cnt{\bbl at tempc}{##1}}%
- \\\bbl at sreplace\<the##1>%
- {\<\@empty @\bbl at tempc>\<c@##1>}{\\\bbl at map@cnt{\bbl at tempc}{##1}}}%
- \expandafter\ifx\csname the##1\endcsname\bbl at 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 at tempa{#1}%
- \bbl at replace\bbl at tempa{enumerate.}{}%
- \def\bbl at toreplace{#2}%
- \bbl at replace\bbl at toreplace{[ ]}{\nobreakspace{}}%
- \bbl at replace\bbl at toreplace{[}{\csname the}%
- \bbl at replace\bbl at toreplace{]}{\endcsname{}}%
- \toks@\expandafter{\bbl at toreplace}%
- % TODO. Execute only once:
- \bbl at exp{%
- \\\bbl at add\<extras\languagename>{%
- \\\babel at save\<labelenum\romannumeral\bbl at tempa>%
- \def\<labelenum\romannumeral\bbl at tempa>{\the\toks@}}%
- \\\bbl at toglobal\<extras\languagename>}%
- \fi
- \fi}
-\def\bbl at chaptype{chapter}
-\ifx\@makechapterhead\@undefined
- \let\bbl at patchchapter\relax
-\else\ifx\thechapter\@undefined
- \let\bbl at patchchapter\relax
-\else\ifx\ps at headings\@undefined
- \let\bbl at patchchapter\relax
-\else
- \def\bbl at patchchapter{%
- \global\let\bbl at patchchapter\relax
- \gdef\bbl at chfmt{%
- \bbl at ifunset{bbl@\bbl at chaptype fmt@\languagename}%
- {\@chapapp\space\thechapter}
- {\@nameuse{bbl@\bbl at chaptype fmt@\languagename}}}
- \bbl at add\appendix{\def\bbl at chaptype{appendix}}% Not harmful, I hope
- \bbl at sreplace\ps at headings{\@chapapp\ \thechapter}{\bbl at chfmt}%
- \bbl at sreplace\chaptermark{\@chapapp\ \thechapter}{\bbl at chfmt}%
- \bbl at sreplace\@makechapterhead{\@chapapp\space\thechapter}{\bbl at chfmt}%
- \bbl at toglobal\appendix
- \bbl at toglobal\ps at headings
- \bbl at toglobal\chaptermark
- \bbl at toglobal\@makechapterhead}
- \let\bbl at patchappendix\bbl at patchchapter
-\fi\fi\fi
-\ifx\@part\@undefined
- \let\bbl at patchpart\relax
-\else
- \def\bbl at patchpart{%
- \global\let\bbl at patchpart\relax
- \gdef\bbl at partformat{%
- \bbl at ifunset{bbl at partfmt@\languagename}%
- {\partname\nobreakspace\thepart}
- {\@nameuse{bbl at partfmt@\languagename}}}
- \bbl at sreplace\@part{\partname\nobreakspace\thepart}{\bbl at partformat}%
- \bbl at toglobal\@part}
-\fi
-\let\bbl at calendar\@empty
-\DeclareRobustCommand\localedate[1][]{\bbl at localedate{#1}}
-\def\bbl at localedate#1#2#3#4{%
- \begingroup
- \edef\bbl at they{#2}%
- \edef\bbl at them{#3}%
- \edef\bbl at thed{#4}%
- \edef\bbl at tempe{%
- \bbl at ifunset{bbl at calpr@\languagename}{}{\bbl at cl{calpr}},%
- #1}%
- \bbl at replace\bbl at tempe{ }{}%
- \bbl at replace\bbl at tempe{CONVERT}{convert=}% Hackish
- \bbl at replace\bbl at tempe{convert}{convert=}%
- \let\bbl at ld@calendar\@empty
- \let\bbl at ld@variant\@empty
- \let\bbl at ld@convert\relax
- \def\bbl at tempb##1=##2\@@{\@namedef{bbl at ld@##1}{##2}}%
- \bbl at foreach\bbl at tempe{\bbl at tempb##1\@@}%
- \bbl at replace\bbl at ld@calendar{gregorian}{}%
- \ifx\bbl at ld@calendar\@empty\else
- \ifx\bbl at ld@convert\relax\else
- \babelcalendar[\bbl at they-\bbl at them-\bbl at thed]%
- {\bbl at ld@calendar}\bbl at they\bbl at them\bbl at thed
- \fi
- \fi
- \@nameuse{bbl at precalendar}% Remove, eg, +, -civil (-ca-islamic)
- \edef\bbl at calendar{% Used in \month..., too
- \bbl at ld@calendar
- \ifx\bbl at ld@variant\@empty\else
- .\bbl at ld@variant
- \fi}%
- \bbl at cased
- {\@nameuse{bbl at date@\languagename @\bbl at calendar}%
- \bbl at they\bbl at them\bbl at thed}%
- \endgroup}
-\def\bbl at inidate#1.#2.#3.#4\relax#5#6{% TODO - ignore with 'captions'
- \bbl at trim@def\bbl at tempa{#1.#2}%
- \bbl at ifsamestring{\bbl at tempa}{months.wide}% to savedate
- {\bbl at trim@def\bbl at tempa{#3}%
- \bbl at trim\toks@{#5}%
- \@temptokena\expandafter{\bbl at savedate}%
- \bbl at exp{% Reverse order - in ini last wins
- \def\\\bbl at savedate{%
- \\\SetString\<month\romannumeral\bbl at tempa#6name>{\the\toks@}%
- \the\@temptokena}}}%
- {\bbl at ifsamestring{\bbl at tempa}{date.long}% defined now
- {\lowercase{\def\bbl at tempb{#6}}%
- \bbl at trim@def\bbl at toreplace{#5}%
- \bbl at TG@@date
- \global\bbl at csarg\let{date@\languagename @\bbl at tempb}\bbl at toreplace
- \ifx\bbl at savetoday\@empty
- \bbl at exp{% TODO. Move to a better place.
- \\\AfterBabelCommands{%
- \def\<\languagename date>{\\\protect\<\languagename date >}%
- \\\newcommand\<\languagename date >[4][]{%
- \\\bbl at usedategrouptrue
- \<bbl at ensure@\languagename>{%
- \\\localedate[####1]{####2}{####3}{####4}}}}%
- \def\\\bbl at savetoday{%
- \\\SetString\\\today{%
- \<\languagename date>[convert]%
- {\\\the\year}{\\\the\month}{\\\the\day}}}}%
- \fi}%
- {}}}
-\let\bbl at calendar\@empty
-\newcommand\babelcalendar[2][\the\year-\the\month-\the\day]{%
- \@nameuse{bbl at 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 at 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 at 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 at replace@finish at iii#1{%
- \bbl at exp{\def\\#1####1####2####3{\the\toks@}}}
-\def\bbl at TG@@date{%
- \bbl at replace\bbl at toreplace{[ ]}{\BabelDateSpace{}}%
- \bbl at replace\bbl at toreplace{[.]}{\BabelDateDot{}}%
- \bbl at replace\bbl at toreplace{[d]}{\BabelDated{####3}}%
- \bbl at replace\bbl at toreplace{[dd]}{\BabelDatedd{####3}}%
- \bbl at replace\bbl at toreplace{[M]}{\BabelDateM{####2}}%
- \bbl at replace\bbl at toreplace{[MM]}{\BabelDateMM{####2}}%
- \bbl at replace\bbl at toreplace{[MMMM]}{\BabelDateMMMM{####2}}%
- \bbl at replace\bbl at toreplace{[y]}{\BabelDatey{####1}}%
- \bbl at replace\bbl at toreplace{[yy]}{\BabelDateyy{####1}}%
- \bbl at replace\bbl at toreplace{[yyyy]}{\BabelDateyyyy{####1}}%
- \bbl at replace\bbl at toreplace{[y|}{\bbl at datecntr[####1|}%
- \bbl at replace\bbl at toreplace{[m|}{\bbl at datecntr[####2|}%
- \bbl at replace\bbl at toreplace{[d|}{\bbl at datecntr[####3|}%
- \bbl at replace@finish at iii\bbl at toreplace}
-\def\bbl at datecntr{\expandafter\bbl at xdatecntr\expandafter}
-\def\bbl at xdatecntr[#1|#2]{\localenumeral{#2}{#1}}
-\let\bbl at release@transforms\@empty
-\bbl at csarg\let{inikv at transforms.prehyphenation}\bbl at inikv
-\bbl at csarg\let{inikv at transforms.posthyphenation}\bbl at inikv
-\def\bbl at 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 at transforms#1#2#3{&%
- \directlua{
- local str = [==[#2]==]
- str = str:gsub('%.%d+%.%d+$', '')
- token.set_macro('babeltempa', str)
- }&%
- \def\babeltempc{}&%
- \bbl at xin@{,\babeltempa,}{,\bbl at KVP@transforms,}&%
- \ifin@\else
- \bbl at xin@{:\babeltempa,}{,\bbl at KVP@transforms,}&%
- \fi
- \ifin@
- \bbl at foreach\bbl at KVP@transforms{&%
- \bbl at 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 at KVP@transforms]],
- '%(([^%(]-)%)[^%)]-\babeltempa')
- if str == nil then
- token.set_macro('babeltempb', '')
- else
- token.set_macro('babeltempb', ',attribute=' .. str)
- end
- }&%
- \toks@{#3}&%
- \bbl at exp{&%
- \\\g at addto@macro\\\bbl at release@transforms{&%
- \relax &% Closes previous \bbl at transforms@aux
- \\\bbl at transforms@aux
- \\#1{label=\babeltempa\babeltempb\babeltempc}&%
- {\languagename}{\the\toks@}}}&%
- \else
- \g at addto@macro\bbl at release@transforms{, {#3}}&%
- \fi
- \fi}
-\endgroup
-\def\bbl at provide@lsys#1{%
- \bbl at ifunset{bbl at lname@#1}%
- {\bbl at load@info{#1}}%
- {}%
- \bbl at csarg\let{lsys@#1}\@empty
- \bbl at ifunset{bbl at sname@#1}{\bbl at csarg\gdef{sname@#1}{Default}}{}%
- \bbl at ifunset{bbl at sotf@#1}{\bbl at csarg\gdef{sotf@#1}{DFLT}}{}%
- \bbl at csarg\bbl at add@list{lsys@#1}{Script=\bbl at cs{sname@#1}}%
- \bbl at ifunset{bbl at lname@#1}{}%
- {\bbl at csarg\bbl at add@list{lsys@#1}{Language=\bbl at cs{lname@#1}}}%
- \ifcase\bbl at engine\or\or
- \bbl at ifunset{bbl at prehc@#1}{}%
- {\bbl at exp{\\\bbl at ifblank{\bbl at cs{prehc@#1}}}%
- {}%
- {\ifx\bbl at xenohyph\@undefined
- \global\let\bbl at xenohyph\bbl at xenohyph@d
- \ifx\AtBeginDocument\@notprerr
- \expandafter\@secondoftwo % to execute right now
- \fi
- \AtBeginDocument{%
- \bbl at patchfont{\bbl at xenohyph}%
- \expandafter\select at language\expandafter{\languagename}}%
- \fi}}%
- \fi
- \bbl at csarg\bbl at toglobal{lsys@#1}}
-\def\bbl at xenohyph@d{%
- \bbl at ifset{bbl at prehc@\languagename}%
- {\ifnum\hyphenchar\font=\defaulthyphenchar
- \iffontchar\font\bbl at cl{prehc}\relax
- \hyphenchar\font\bbl at cl{prehc}\relax
- \else\iffontchar\font"200B
- \hyphenchar\font"200B
- \else
- \bbl at 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 at load@info#1{%
- \def\BabelBeforeIni##1##2{%
- \begingroup
- \bbl at read@ini{##1}0%
- \endinput % babel- .tex may contain onlypreamble's
- \endgroup}% boxed, to avoid extra spaces:
- {\bbl at input@texini{#1}}}
-\def\bbl at setdigits#1#2#3#4#5{%
- \bbl at exp{%
- \def\<\languagename digits>####1{% ie, \langdigits
- \<bbl at digits@\languagename>####1\\\@nil}%
- \let\<bbl at cntr@digits@\languagename>\<\languagename digits>%
- \def\<\languagename counter>####1{% ie, \langcounter
- \\\expandafter\<bbl at counter@\languagename>%
- \\\csname c@####1\endcsname}%
- \def\<bbl at counter@\languagename>####1{% ie, \bbl at counter@lang
- \\\expandafter\<bbl at digits@\languagename>%
- \\\number####1\\\@nil}}%
- \def\bbl at tempa##1##2##3##4##5{%
- \bbl at exp{% Wow, quite a lot of hashes! :-(
- \def\<bbl at digits@\languagename>########1{%
- \\\ifx########1\\\@nil % ie, \bbl at 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 at digits@\languagename>%
- \\\fi}}}%
- \bbl at tempa}
-\def\bbl at buildifcase#1 {% Returns \bbl at tempa, requires \toks@={}
- \ifx\\#1% % \\ before, in case #1 is multiletter
- \bbl at exp{%
- \def\\\bbl at tempa####1{%
- \<ifcase>####1\space\the\toks@\<else>\\\@ctrerr\<fi>}}%
- \else
- \toks@\expandafter{\the\toks@\or #1}%
- \expandafter\bbl at buildifcase
- \fi}
-\newcommand\localenumeral[2]{\bbl at cs{cntr@#1@\languagename}{#2}}
-\def\bbl at localecntr#1#2{\localenumeral{#2}{#1}}
-\newcommand\localecounter[2]{%
- \expandafter\bbl at localecntr
- \expandafter{\number\csname c@#2\endcsname}{#1}}
-\def\bbl at alphnumeral#1#2{%
- \expandafter\bbl at alphnumeral@i\number#2 76543210\@@{#1}}
-\def\bbl at alphnumeral@i#1#2#3#4#5#6#7#8\@@#9{%
- \ifcase\@car#8\@nil\or % Currenty <10000, but prepared for bigger
- \bbl at alphnumeral@ii{#9}000000#1\or
- \bbl at alphnumeral@ii{#9}00000#1#2\or
- \bbl at alphnumeral@ii{#9}0000#1#2#3\or
- \bbl at alphnumeral@ii{#9}000#1#2#3#4\else
- \bbl at alphnum@invalid{>9999}%
- \fi}
-\def\bbl at alphnumeral@ii#1#2#3#4#5#6#7#8{%
- \bbl at ifunset{bbl at cntr@#1.F.\number#5#6#7#8@\languagename}%
- {\bbl at cs{cntr@#1.4@\languagename}#5%
- \bbl at cs{cntr@#1.3@\languagename}#6%
- \bbl at cs{cntr@#1.2@\languagename}#7%
- \bbl at cs{cntr@#1.1@\languagename}#8%
- \ifnum#6#7#8>\z@ % TODO. An ad hoc rule for Greek. Ugly.
- \bbl at ifunset{bbl at cntr@#1.S.321@\languagename}{}%
- {\bbl at cs{cntr@#1.S.321@\languagename}}%
- \fi}%
- {\bbl at cs{cntr@#1.F.\number#5#6#7#8@\languagename}}}
-\def\bbl at alphnum@invalid#1{%
- \bbl at error{Alphabetic numeral too large (#1)}%
- {Currently this is the limit.}}
-\def\bbl at localeinfo#1#2{%
- \bbl at ifunset{bbl at info@#2}{#1}%
- {\bbl at ifunset{bbl@\csname bbl at info@#2\endcsname @\languagename}{#1}%
- {\bbl at cs{\csname bbl at info@#2\endcsname @\languagename}}}}
-\newcommand\localeinfo[1]{%
- \ifx*#1\@empty % TODO. A bit hackish to make it expandable.
- \bbl at afterelse\bbl at localeinfo{}%
- \else
- \bbl at localeinfo
- {\bbl at 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 at info@tag.ini}{lini}
-\@namedef{bbl at info@name.english}{elname}
-\@namedef{bbl at info@name.opentype}{lname}
-\@namedef{bbl at info@tag.bcp47}{tbcp}
-\@namedef{bbl at info@language.tag.bcp47}{lbcp}
-\@namedef{bbl at info@tag.opentype}{lotf}
-\@namedef{bbl at info@script.name}{esname}
-\@namedef{bbl at info@script.name.opentype}{sname}
-\@namedef{bbl at info@script.tag.bcp47}{sbcp}
-\@namedef{bbl at info@script.tag.opentype}{sotf}
-\@namedef{bbl at info@region.tag.bcp47}{rbcp}
-\@namedef{bbl at info@variant.tag.bcp47}{vbcp}
-\@namedef{bbl at info@extension.t.tag.bcp47}{extt}
-\@namedef{bbl at info@extension.u.tag.bcp47}{extu}
-\@namedef{bbl at info@extension.x.tag.bcp47}{extx}
-\providecommand\BCPdata{}
-\ifx\renewcommand\@undefined\else % For plain. TODO. It’s a quick fix
- \renewcommand\BCPdata[1]{%
- \bbl at ifunset{bbl at info@#1.tag.bcp47}%
- {\bbl at error{Unknown field '#1' in \string\BCPdata.\\%
- Perhaps you misspelled it.}%
- {See the manual for details.}}%
- {\bbl at ifunset{bbl@\csname bbl at info@#1.tag.bcp47\endcsname @\languagename}{}%
- {\bbl at cs{\csname bbl at info@#1.tag.bcp47\endcsname @\languagename}}}}
-\fi
-\@namedef{bbl at info@casing.tag.bcp47}{casing}
-\let\bbl at ensureinfo\@gobble
-\newcommand\BabelEnsureInfo{%
- \ifx\InputIfFileExists\@undefined\else
- \def\bbl at ensureinfo##1{%
- \bbl at ifunset{bbl at lname@##1}{\bbl at load@info{##1}}{}}%
- \fi
- \bbl at foreach\bbl at loaded{{%
- \let\bbl at ensuring\@empty % Flag used in a couple of babel-*.tex files
- \def\languagename{##1}%
- \bbl at ensureinfo{##1}}}}
-\@ifpackagewith{babel}{ensureinfo=off}{}%
- {\AtEndOfPackage{% Test for plain.
- \ifx\@undefined\bbl at loaded\else\BabelEnsureInfo\fi}}
-\newcommand\getlocaleproperty{%
- \@ifstar\bbl at getproperty@s\bbl at getproperty@x}
-\def\bbl at getproperty@s#1#2#3{%
- \let#1\relax
- \def\bbl at elt##1##2##3{%
- \bbl at ifsamestring{##1/##2}{#3}%
- {\providecommand#1{##3}%
- \def\bbl at elt####1####2####3{}}%
- {}}%
- \bbl at cs{inidata@#2}}%
-\def\bbl at getproperty@x#1#2#3{%
- \bbl at getproperty@s{#1}{#2}{#3}%
- \ifx#1\relax
- \bbl at error
- {Unknown key for locale '#2':\\%
- #3\\%
- \string#1 will be set to \relax}%
- {Perhaps you misspelled it.}%
- \fi}
-\let\bbl at ini@loaded\@empty
-\newcommand\LocaleForEach{\bbl at foreach\bbl at ini@loaded}
-\newcommand\babeladjust[1]{% TODO. Error handling.
- \bbl at forkv{#1}{%
- \bbl at ifunset{bbl at ADJ@##1@##2}%
- {\bbl at cs{ADJ@##1}{##2}}%
- {\bbl at cs{ADJ@##1@##2}}}}
-\def\bbl at adjust@lua#1#2{%
- \ifvmode
- \ifnum\currentgrouplevel=\z@
- \directlua{ Babel.#2 }%
- \expandafter\expandafter\expandafter\@gobble
- \fi
- \fi
- {\bbl at 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 at ADJ@bidi.mirroring at on}{%
- \bbl at adjust@lua{bidi}{mirroring_enabled=true}}
-\@namedef{bbl at ADJ@bidi.mirroring at off}{%
- \bbl at adjust@lua{bidi}{mirroring_enabled=false}}
-\@namedef{bbl at ADJ@bidi.text at on}{%
- \bbl at adjust@lua{bidi}{bidi_enabled=true}}
-\@namedef{bbl at ADJ@bidi.text at off}{%
- \bbl at adjust@lua{bidi}{bidi_enabled=false}}
-\@namedef{bbl at ADJ@bidi.math at on}{%
- \let\bbl at noamsmath\@empty}
-\@namedef{bbl at ADJ@bidi.math at off}{%
- \let\bbl at noamsmath\relax}
-\@namedef{bbl at ADJ@bidi.mapdigits at on}{%
- \bbl at adjust@lua{bidi}{digits_mapped=true}}
-\@namedef{bbl at ADJ@bidi.mapdigits at off}{%
- \bbl at adjust@lua{bidi}{digits_mapped=false}}
-\@namedef{bbl at ADJ@linebreak.sea at on}{%
- \bbl at adjust@lua{linebreak}{sea_enabled=true}}
-\@namedef{bbl at ADJ@linebreak.sea at off}{%
- \bbl at adjust@lua{linebreak}{sea_enabled=false}}
-\@namedef{bbl at ADJ@linebreak.cjk at on}{%
- \bbl at adjust@lua{linebreak}{cjk_enabled=true}}
-\@namedef{bbl at ADJ@linebreak.cjk at off}{%
- \bbl at adjust@lua{linebreak}{cjk_enabled=false}}
-\@namedef{bbl at ADJ@justify.arabic at on}{%
- \bbl at adjust@lua{linebreak}{arabic.justify_enabled=true}}
-\@namedef{bbl at ADJ@justify.arabic at off}{%
- \bbl at adjust@lua{linebreak}{arabic.justify_enabled=false}}
-\def\bbl at adjust@layout#1{%
- \ifvmode
- #1%
- \expandafter\@gobble
- \fi
- {\bbl at 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 at ADJ@layout.tabular at on}{%
- \ifnum\bbl at tabular@mode=\tw@
- \bbl at adjust@layout{\let\@tabular\bbl at NL@@tabular}%
- \else
- \chardef\bbl at tabular@mode\@ne
- \fi}
-\@namedef{bbl at ADJ@layout.tabular at off}{%
- \ifnum\bbl at tabular@mode=\tw@
- \bbl at adjust@layout{\let\@tabular\bbl at OL@@tabular}%
- \else
- \chardef\bbl at tabular@mode\z@
- \fi}
-\@namedef{bbl at ADJ@layout.lists at on}{%
- \bbl at adjust@layout{\let\list\bbl at NL@list}}
-\@namedef{bbl at ADJ@layout.lists at off}{%
- \bbl at adjust@layout{\let\list\bbl at OL@list}}
-\@namedef{bbl at ADJ@autoload.bcp47 at on}{%
- \bbl at bcpallowedtrue}
-\@namedef{bbl at ADJ@autoload.bcp47 at off}{%
- \bbl at bcpallowedfalse}
-\@namedef{bbl at ADJ@autoload.bcp47.prefix}#1{%
- \def\bbl at bcp@prefix{#1}}
-\def\bbl at bcp@prefix{bcp47-}
-\@namedef{bbl at ADJ@autoload.options}#1{%
- \def\bbl at autoload@options{#1}}
-\let\bbl at autoload@bcpoptions\@empty
-\@namedef{bbl at ADJ@autoload.bcp47.options}#1{%
- \def\bbl at autoload@bcpoptions{#1}}
-\newif\ifbbl at bcptoname
-\@namedef{bbl at ADJ@bcp47.toname at on}{%
- \bbl at bcptonametrue
- \BabelEnsureInfo}
-\@namedef{bbl at ADJ@bcp47.toname at off}{%
- \bbl at bcptonamefalse}
-\@namedef{bbl at ADJ@prehyphenation.disable at nohyphenation}{%
- \directlua{ Babel.ignore_pre_char = function(node)
- return (node.lang == \the\csname l at nohyphenation\endcsname)
- end }}
-\@namedef{bbl at ADJ@prehyphenation.disable at off}{%
- \directlua{ Babel.ignore_pre_char = function(node)
- return false
- end }}
-\@namedef{bbl at ADJ@select.write at shift}{%
- \let\bbl at restorelastskip\relax
- \def\bbl at savelastskip{%
- \let\bbl at restorelastskip\relax
- \ifvmode
- \ifdim\lastskip=\z@
- \let\bbl at restorelastskip\nobreak
- \else
- \bbl at exp{%
- \def\\\bbl at restorelastskip{%
- \skip@=\the\lastskip
- \\\nobreak \vskip-\skip@ \vskip\skip@}}%
- \fi
- \fi}}
-\@namedef{bbl at ADJ@select.write at keep}{%
- \let\bbl at restorelastskip\relax
- \let\bbl at savelastskip\relax}
-\@namedef{bbl at ADJ@select.write at omit}{%
- \AddBabelHook{babel-select}{beforestart}{%
- \expandafter\babel at aux\expandafter{\bbl at main@language}{}}%
- \let\bbl at restorelastskip\relax
- \def\bbl at savelastskip##1\bbl at restorelastskip{}}
-\@namedef{bbl at ADJ@select.encoding at off}{%
- \let\bbl at encoding@select at off\@empty}
-\ifx\directlua\@undefined\else
- \ifx\bbl at luapatterns\@undefined
- \input luababel.def
- \fi
-\fi
\endinput
%%
%% End of file `babel.def'.
Modified: trunk/Master/texmf-dist/tex/generic/babel/babel.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/babel.sty 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/tex/generic/babel/babel.sty 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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 at trace[1]{\message{^^J[ #1 ]}}%
\let\bbl at debug\@firstofone
@@ -305,6 +305,8 @@
\bbl at csarg\let{tempa\expandafter}\csname opt at babel.sty\endcsname
\def\bbl at tempb#1.#2{% Remove trailing dot
#1\ifx\@empty#2\else,\bbl at afterfi\bbl at tempb#2\fi}%
+\def\bbl at tempe#1=#2\@@{%
+ \bbl at csarg\edef{mod@#1}{\bbl at tempb#2}}
\def\bbl at tempd#1.#2\@nnil{% TODO. Refactor lists?
\ifx\@empty#2%
\edef\bbl at tempc{\ifx\bbl at tempc\@empty\else\bbl at tempc,\fi#1}%
@@ -314,12 +316,17 @@
\edef\bbl at tempc{%
\ifx\bbl at tempc\@empty\else\bbl at tempc,\fi#1.\bbl at tempb#2}%
\else
- \in@{=}{#1}%
+ \in@{$modifiers$}{$#1$}% TODO. Allow spaces.
\ifin@
- \edef\bbl at tempc{\ifx\bbl at tempc\@empty\else\bbl at tempc,\fi#1.#2}%
+ \bbl at tempe#2\@@
\else
- \edef\bbl at tempc{\ifx\bbl at tempc\@empty\else\bbl at tempc,\fi#1}%
- \bbl at csarg\edef{mod@#1}{\bbl at tempb#2}%
+ \in@{=}{#1}%
+ \ifin@
+ \edef\bbl at tempc{\ifx\bbl at tempc\@empty\else\bbl at tempc,\fi#1.#2}%
+ \else
+ \edef\bbl at tempc{\ifx\bbl at tempc\@empty\else\bbl at tempc,\fi#1}%
+ \bbl at csarg\edef{mod@#1}{\bbl at tempb#2}%
+ \fi
\fi
\fi
\fi}
@@ -463,8 +470,8 @@
\expandafter\@secondoftwo
\fi}
\fi
-\def\bbl at version{3.88}
-\def\bbl at date{2023/04/18}
+\def\bbl at version{3.89}
+\def\bbl at date{2023/05/11}
\ifx\language\@undefined
\csname newcount\endcsname\language
\fi
@@ -712,8 +719,6 @@
% set the locale id
\bbl at id@assign
% switch captions, date
- % No text is supposed to be added here, so we remove any
- % spurious spaces.
\bbl at bsphack
\ifcase\bbl at select@type
\csname captions#1\endcsname\relax
@@ -784,6 +789,7 @@
\expandafter\expandafter\expandafter\set at hyphenmins
\csname #1hyphenmins\endcsname\relax
\fi
+ % reset selector name
\let\bbl at selectorname\@empty}
\long\def\otherlanguage#1{%
\def\bbl at selectorname{other}%
@@ -968,193 +974,6 @@
\input luababel.def
\fi
\fi
-\bbl at trace{Basic macros}
-\def\bbl at stripslash{\expandafter\@gobble\string}
-\def\bbl at add#1#2{%
- \bbl at ifunset{\bbl at stripslash#1}%
- {\def#1{#2}}%
- {\expandafter\def\expandafter#1\expandafter{#1#2}}}
-\def\bbl at xin@{\@expandtwoargs\in@}
-\def\bbl at carg#1#2{\expandafter#1\csname#2\endcsname}%
-\def\bbl at ncarg#1#2#3{\expandafter#1\expandafter#2\csname#3\endcsname}%
-\def\bbl at ccarg#1#2#3{%
- \expandafter#1\csname#2\expandafter\endcsname\csname#3\endcsname}%
-\def\bbl at csarg#1#2{\expandafter#1\csname bbl@#2\endcsname}%
-\def\bbl at cs#1{\csname bbl@#1\endcsname}
-\def\bbl at cl#1{\csname bbl@#1@\languagename\endcsname}
-\def\bbl at loop#1#2#3{\bbl@@loop#1{#3}#2,\@nnil,}
-\def\bbl at loopx#1#2{\expandafter\bbl at loop\expandafter#1\expandafter{#2}}
-\def\bbl@@loop#1#2#3,{%
- \ifx\@nnil#3\relax\else
- \def#1{#3}#2\bbl at afterfi\bbl@@loop#1{#2}%
- \fi}
-\def\bbl at for#1#2#3{\bbl at loopx#1{#2}{\ifx#1\@empty\else#3\fi}}
-\def\bbl at add@list#1#2{%
- \edef#1{%
- \bbl at ifunset{\bbl at stripslash#1}%
- {}%
- {\ifx#1\@empty\else#1,\fi}%
- #2}}
-\long\def\bbl at afterelse#1\else#2\fi{\fi#1}
-\long\def\bbl at afterfi#1\fi{\fi#1}
-\def\bbl at exp#1{%
- \begingroup
- \let\\\noexpand
- \let\<\bbl at exp@en
- \let\[\bbl at exp@ue
- \edef\bbl at exp@aux{\endgroup#1}%
- \bbl at exp@aux}
-\def\bbl at exp@en#1>{\expandafter\noexpand\csname#1\endcsname}%
-\def\bbl at exp@ue#1]{%
- \unexpanded\expandafter\expandafter\expandafter{\csname#1\endcsname}}%
-\def\bbl at tempa#1{%
- \long\def\bbl at trim##1##2{%
- \futurelet\bbl at trim@a\bbl at trim@c##2\@nil\@nil#1\@nil\relax{##1}}%
- \def\bbl at trim@c{%
- \ifx\bbl at trim@a\@sptoken
- \expandafter\bbl at trim@b
- \else
- \expandafter\bbl at trim@b\expandafter#1%
- \fi}%
- \long\def\bbl at trim@b#1##1 \@nil{\bbl at trim@i##1}}
-\bbl at tempa{ }
-\long\def\bbl at trim@i#1\@nil#2\relax#3{#3{#1}}
-\long\def\bbl at trim@def#1{\bbl at trim{\def#1}}
-\begingroup
- \gdef\bbl at ifunset#1{%
- \expandafter\ifx\csname#1\endcsname\relax
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi}
- \bbl at ifunset{ifcsname}%
- {}%
- {\gdef\bbl at ifunset#1{%
- \ifcsname#1\endcsname
- \expandafter\ifx\csname#1\endcsname\relax
- \bbl at afterelse\expandafter\@firstoftwo
- \else
- \bbl at afterfi\expandafter\@secondoftwo
- \fi
- \else
- \expandafter\@firstoftwo
- \fi}}
-\endgroup
-\def\bbl at ifblank#1{%
- \bbl at ifblank@i#1\@nil\@nil\@secondoftwo\@firstoftwo\@nil}
-\long\def\bbl at ifblank@i#1#2\@nil#3#4#5\@nil{#4}
-\def\bbl at ifset#1#2#3{%
- \bbl at ifunset{#1}{#3}{\bbl at exp{\\\bbl at ifblank{\@nameuse{#1}}}{#3}{#2}}}
-\def\bbl at forkv#1#2{%
- \def\bbl at kvcmd##1##2##3{#2}%
- \bbl at kvnext#1,\@nil,}
-\def\bbl at kvnext#1,{%
- \ifx\@nil#1\relax\else
- \bbl at ifblank{#1}{}{\bbl at forkv@eq#1=\@empty=\@nil{#1}}%
- \expandafter\bbl at kvnext
- \fi}
-\def\bbl at forkv@eq#1=#2=#3\@nil#4{%
- \bbl at trim@def\bbl at forkv@a{#1}%
- \bbl at trim{\expandafter\bbl at kvcmd\expandafter{\bbl at forkv@a}}{#2}{#4}}
-\def\bbl at vforeach#1#2{%
- \def\bbl at forcmd##1{#2}%
- \bbl at fornext#1,\@nil,}
-\def\bbl at fornext#1,{%
- \ifx\@nil#1\relax\else
- \bbl at ifblank{#1}{}{\bbl at trim\bbl at forcmd{#1}}%
- \expandafter\bbl at fornext
- \fi}
-\def\bbl at foreach#1{\expandafter\bbl at vforeach\expandafter{#1}}
-\def\bbl at replace#1#2#3{% in #1 -> repl #2 by #3
- \toks@{}%
- \def\bbl at replace@aux##1#2##2#2{%
- \ifx\bbl at nil##2%
- \toks@\expandafter{\the\toks@##1}%
- \else
- \toks@\expandafter{\the\toks@##1#3}%
- \bbl at afterfi
- \bbl at replace@aux##2#2%
- \fi}%
- \expandafter\bbl at replace@aux#1#2\bbl at nil#2%
- \edef#1{\the\toks@}}
-\ifx\detokenize\@undefined\else % Unused macros if old Plain TeX
- \bbl at exp{\def\\\bbl at parsedef##1\detokenize{macro:}}#2->#3\relax{%
- \def\bbl at tempa{#1}%
- \def\bbl at tempb{#2}%
- \def\bbl at tempe{#3}}
- \def\bbl at sreplace#1#2#3{%
- \begingroup
- \expandafter\bbl at parsedef\meaning#1\relax
- \def\bbl at tempc{#2}%
- \edef\bbl at tempc{\expandafter\strip at prefix\meaning\bbl at tempc}%
- \def\bbl at tempd{#3}%
- \edef\bbl at tempd{\expandafter\strip at prefix\meaning\bbl at tempd}%
- \bbl at xin@{\bbl at tempc}{\bbl at tempe}% If not in macro, do nothing
- \ifin@
- \bbl at exp{\\\bbl at replace\\\bbl at tempe{\bbl at tempc}{\bbl at tempd}}%
- \def\bbl at tempc{% Expanded an executed below as 'uplevel'
- \\\makeatletter % "internal" macros with @ are assumed
- \\\scantokens{%
- \bbl at tempa\\\@namedef{\bbl at stripslash#1}\bbl at tempb{\bbl at tempe}}%
- \catcode64=\the\catcode64\relax}% Restore @
- \else
- \let\bbl at tempc\@empty % Not \relax
- \fi
- \bbl at exp{% For the 'uplevel' assignments
- \endgroup
- \bbl at tempc}} % empty or expand to set #1 with changes
-\fi
-\def\bbl at ifsamestring#1#2{%
- \begingroup
- \protected at edef\bbl at tempb{#1}%
- \edef\bbl at tempb{\expandafter\strip at prefix\meaning\bbl at tempb}%
- \protected at edef\bbl at tempc{#2}%
- \edef\bbl at tempc{\expandafter\strip at prefix\meaning\bbl at tempc}%
- \ifx\bbl at tempb\bbl at tempc
- \aftergroup\@firstoftwo
- \else
- \aftergroup\@secondoftwo
- \fi
- \endgroup}
-\chardef\bbl at engine=%
- \ifx\directlua\@undefined
- \ifx\XeTeXinputencoding\@undefined
- \z@
- \else
- \tw@
- \fi
- \else
- \@ne
- \fi
-\def\bbl at bsphack{%
- \ifhmode
- \hskip\z at skip
- \def\bbl at esphack{\loop\ifdim\lastskip>\z@\unskip\repeat\unskip}%
- \else
- \let\bbl at esphack\@empty
- \fi}
-\def\bbl at cased{%
- \ifx\oe\OE
- \expandafter\in@\expandafter
- {\expandafter\OE\expandafter}\expandafter{\oe}%
- \ifin@
- \bbl at afterelse\expandafter\MakeUppercase
- \else
- \bbl at afterfi\expandafter\MakeLowercase
- \fi
- \else
- \expandafter\@firstofone
- \fi}
-\def\bbl at extras@wrap#1#2#3{% 1:in-test, 2:before, 3:after
- \toks@\expandafter\expandafter\expandafter{%
- \csname extras\languagename\endcsname}%
- \bbl at exp{\\\in@{#1}{\the\toks@}}%
- \ifin@\else
- \@temptokena{#2}%
- \edef\bbl at tempc{\the\@temptokena\the\toks@}%
- \toks@\expandafter{\bbl at tempc#3}%
- \expandafter\edef\csname extras\languagename\endcsname{\the\toks@}%
- \fi}
\bbl at trace{Compatibility with language.def}
\ifx\bbl at languages\@undefined
\ifx\directlua\@undefined
@@ -1222,7 +1041,7 @@
\newcommand\EnableBabelHook[1]{\bbl at csarg\let{hk@#1}\@firstofone}
\newcommand\DisableBabelHook[1]{\bbl at csarg\let{hk@#1}\@gobble}
\def\bbl at usehooks{\bbl at usehooks@lang\languagename}
-\def\bbl at usehooks@lang#1#2#3{%
+\def\bbl at usehooks@lang#1#2#3{% Test for Plain
\ifx\UseHook\@undefined\else\UseHook{babel/*/#2}\fi
\def\bbl at elth##1{%
\bbl at cs{hk@##1}{\bbl at 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 at tempa#1=#2\@@{\NewHook{babel/#1}}
\bbl at foreach\bbl at evargs{\bbl at tempa#1\@@}
\fi
@@ -1948,7 +1767,7 @@
\def\bbl at toglobal#1{\global\let#1#1}
\@ifpackagewith{babel}{nocase}%
{\let\bbl at patchuclc\relax}%
- {\def\bbl at patchuclc{%
+ {\def\bbl at patchuclc{% TODO. Delete. Doesn’t work any more.
\global\let\bbl at patchuclc\relax
\g at addto@macro\@uclclist{\reserved at b{\reserved at b\bbl at uclc}}%
\gdef\bbl at uclc##1{%
@@ -2470,6 +2289,7 @@
\let\bbl at calendars\@empty
\global\let\bbl at inidata\@empty
\global\let\bbl at extend@ini\@gobble
+ \global\let\bbl at included@inis\@empty
\gdef\bbl at key@list{;}%
\bbl at forkv{#1}{%
\in@{/}{##1}% With /, (re)sets a value in the ini
@@ -2535,6 +2355,14 @@
{}% With \bbl at load@basic below
{\bbl at provide@renew{#2}}%
\fi
+ % == include == TODO
+ % \ifx\bbl at included@inis\@empty\else
+ % \bbl at replace\bbl at included@inis{ }{,}%
+ % \bbl at foreach\bbl at included@inis{%
+ % \openin\bbl at readstream=babel-##1.ini
+ % \bbl at extend@ini{#2}}%
+ % \closein\bbl at readstream
+ % \fi
% Post tasks
% ----------
% == subsequent calls after the first provide for a locale ==
@@ -2557,11 +2385,6 @@
\\\bbl at toglobal\<bbl at ensure@\languagename>%
\\\bbl at toglobal\<bbl at 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 at load@basic{#2}%
% == script, language ==
% Override the values from ini or defines them
@@ -2976,7 +2799,7 @@
\ifin@\else
\bbl at xin@{,identification/include.}%
{,\bbl at section/\bbl at tempa}%
- \ifin@\edef\bbl at required@inis{\the\toks@}\fi
+ \ifin@\xdef\bbl at included@inis{\the\toks@}\fi
\bbl at exp{%
\\\g at addto@macro\\\bbl at inidata{%
\\\bbl at elt{\bbl at section}{\bbl at tempa}{\the\toks@}}}%
@@ -3024,16 +2847,9 @@
\let\bbl at inistore\bbl at inistore@min % Remember it's local
\fi
\def\bbl at section{identification}%
- \let\bbl at required@inis\@empty
\bbl at exp{\\\bbl at inistore tag.ini=#1\\\@@}%
\bbl at inistore load.level=#2\@@
\bbl at loop@ini
- \ifx\bbl at required@inis\@empty\else
- \bbl at replace\bbl at required@inis{ }{,}%
- \bbl at foreach\bbl at required@inis{%
- \openin\bbl at readstream=babel-##1.ini
- \bbl at loop@ini}%
- \fi
% == Process stored data ==
\bbl at csarg\xdef{lini@\languagename}{#1}%
\bbl at read@ini at aux
@@ -3675,13 +3491,18 @@
\@namedef{bbl at 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 at bcpdata@i#1\@empty}
+ \def\bbl at bcpdata@i#1#2#3#4#5#6\@empty{%
+ \@nameuse{str_if_eq:nnTF}{#1#2#3#4#5}{main.}%
+ {\bbl at bcpdata@ii{#6}\bbl at main@language}%
+ {\bbl at bcpdata@ii{#1#2#3#4#5#6}\languagename}}%
+ \def\bbl at bcpdata@ii#1#2{%
\bbl at ifunset{bbl at info@#1.tag.bcp47}%
{\bbl at error{Unknown field '#1' in \string\BCPdata.\\%
Perhaps you misspelled it.}%
{See the manual for details.}}%
- {\bbl at ifunset{bbl@\csname bbl at info@#1.tag.bcp47\endcsname @\languagename}{}%
- {\bbl at cs{\csname bbl at info@#1.tag.bcp47\endcsname @\languagename}}}}
+ {\bbl at ifunset{bbl@\csname bbl at info@#1.tag.bcp47\endcsname @#2}{}%
+ {\bbl at cs{\csname bbl at info@#1.tag.bcp47\endcsname @#2}}}}
\fi
\@namedef{bbl at info@casing.tag.bcp47}{casing}
\let\bbl at ensureinfo\@gobble
@@ -3837,11 +3658,6 @@
\def\bbl at savelastskip##1\bbl at restorelastskip{}}
\@namedef{bbl at ADJ@select.encoding at off}{%
\let\bbl at encoding@select at off\@empty}
-\ifx\directlua\@undefined\else
- \ifx\bbl at luapatterns\@undefined
- \input luababel.def
- \fi
-\fi
\bbl at trace{Cross referencing macros}
\ifx\bbl at opt@safe\@empty\else % ie, if 'ref' and/or 'bib'
\def\@newl at bel#1#2#3{%
@@ -4309,10 +4125,12 @@
\bbl at load@language{hebrew}}
\DeclareOption{hungarian}{\bbl at try@load at lang{}{magyar}{}}
\DeclareOption{lowersorbian}{\bbl at try@load at lang{}{lsorbian}{}}
+\DeclareOption{northernsami}{\bbl at try@load at lang{}{samin}{}}
\DeclareOption{nynorsk}{\bbl at try@load at lang{}{norsk}{}}
\DeclareOption{polutonikogreek}{%
\bbl at try@load at lang{}{greek}{\languageattribute{greek}{polutoniko}}}
\DeclareOption{russian}{\bbl at try@load at lang{}{russianb}{}}
+\DeclareOption{scottishgaelic}{\bbl at try@load at lang{}{scottish}{}}
\DeclareOption{ukrainian}{\bbl at try@load at lang{}{ukraineb}{}}
\DeclareOption{uppersorbian}{\bbl at try@load at lang{}{usorbian}{}}
\ifx\bbl at opt@config\@nnil
Modified: trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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 at format{\jobname}
-\def\bbl at version{3.88}
-\def\bbl at date{2023/04/18}
+\def\bbl at version{3.89}
+\def\bbl at date{2023/05/11}
\ifx\AtBeginDocument\@undefined
\def\@empty{}
\fi
Added: trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-acadian.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-acadian.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-acadian.tex 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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
Property changes on: trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-acadian.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-x-acadian.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-x-acadian.ini (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-x-acadian.ini 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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
Property changes on: trunk/Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-x-acadian.ini
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/se/babel-se.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/se/babel-se.ini 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/se/babel-se.ini 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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
Added: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-ijekavsk.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-ijekavsk.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-ijekavsk.tex 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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
Property changes on: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-ijekavsk.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-latn-ijekavsk.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-latn-ijekavsk.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-latn-ijekavsk.tex 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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
Property changes on: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-latn-ijekavsk.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-BA.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-BA.ini 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-BA.ini 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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 @@
[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 @@
[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,7 +117,7 @@
months.narrow.10 = о
months.narrow.11 = н
months.narrow.12 = д
-days.wide.mon = понедељак
+days.wide.mon = понедјељак
days.wide.tue = уторак
days.wide.wed = сриједа
days.wide.thu = четвртак
@@ -107,13 +124,13 @@
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.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.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbianc
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -160,11 +191,11 @@
hyphenationmin =
[characters]
-delimiters.quotes = „“‘‘
-auxiliary = [ё й щ ъ ы ь э ю я]
+delimiters.quotes = „“’’
+auxiliary = [{а\u0302} {е\u0302} {и\u0302} {о\u0302} {у\u0302}]
exemplarCharacters = [а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш]
index = [А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш]
-punctuation = [\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
+punctuation = [\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
[numbers]
defaultNumberingSystem = latn
@@ -190,7 +221,7 @@
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[žŽ] }
Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-ME.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-ME.ini 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-ME.ini 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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 @@
[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 @@
[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.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.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.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbianc
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -160,11 +188,11 @@
hyphenationmin =
[characters]
-delimiters.quotes = „“‘‘
-auxiliary = [ё й щ ъ ы ь э ю я]
+delimiters.quotes = „“’’
+auxiliary = [{а\u0302} {е\u0302} {и\u0302} {о\u0302} {у\u0302}]
exemplarCharacters = [а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш]
index = [А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш]
-punctuation = [\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
+punctuation = [\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
[numbers]
defaultNumberingSystem = latn
Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-XK.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-XK.ini 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-XK.ini 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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-kosovo serbian-cyrl-xk
@@ -17,9 +18,6 @@
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 @@
[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 @@
[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.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,11 +137,25 @@
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
months.wide.2 = \cyrf\cyre\cyrb\cyrr\cyru\cyra\cyrr
@@ -147,10 +175,10 @@
time.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbianc
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -160,11 +188,11 @@
hyphenationmin =
[characters]
-delimiters.quotes = „“‘‘
-auxiliary = [ё й щ ъ ы ь э ю я]
+delimiters.quotes = „“’’
+auxiliary = [{а\u0302} {е\u0302} {и\u0302} {о\u0302} {у\u0302}]
exemplarCharacters = [а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш]
index = [А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш]
-punctuation = [\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
+punctuation = [\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
[numbers]
defaultNumberingSystem = latn
Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl.ini 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl.ini 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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 @@
[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 @@
[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,11 +137,25 @@
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
months.wide.2 = \cyrf\cyre\cyrb\cyrr\cyru\cyra\cyrr
@@ -144,10 +175,10 @@
time.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbianc
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -157,11 +188,11 @@
hyphenationmin =
[characters]
-delimiters.quotes = „“‘‘
-auxiliary = [ё й щ ъ ы ь э ю я]
+delimiters.quotes = „“’’
+auxiliary = [{а\u0302} {е\u0302} {и\u0302} {о\u0302} {у\u0302}]
exemplarCharacters = [а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш]
index = [А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш]
-punctuation = [\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
+punctuation = [\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
[numbers]
defaultNumberingSystem = latn
@@ -187,7 +218,7 @@
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[žŽ] }
Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-BA.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-BA.ini 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-BA.ini 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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 @@
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 @@
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 @@
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 @@
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 @@
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,7 +99,7 @@
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
@@ -107,13 +106,13 @@
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.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.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbian
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -160,11 +159,11 @@
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
Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ME.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ME.ini 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ME.ini 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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 @@
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 @@
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 @@
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 @@
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.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.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.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbian
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -160,11 +161,11 @@
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
Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-XK.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-XK.ini 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-XK.ini 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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 @@
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 @@
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 @@
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 @@
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 @@
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.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.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.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbian
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -160,11 +159,11 @@
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
Added: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ijekavsk.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ijekavsk.ini (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ijekavsk.ini 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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]
Property changes on: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ijekavsk.ini
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn.ini 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn.ini 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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 @@
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 @@
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 @@
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 @@
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.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.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbian
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -157,11 +159,11 @@
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
Added: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-ijekavsk.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-ijekavsk.ini (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-ijekavsk.ini 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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ČŠ|абвгдђежзијклмнопрстћуфхцчшАБВГДЂЕЖЗИЈКЛМНОПРСТЋУФХЦЧШ} }
Property changes on: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-ijekavsk.ini
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr.ini 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr.ini 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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 @@
[captions]
preface = Предговор
ref = Литература
-abstract = Абстракт
+abstract = Сажетак
bib = Библиографиjа
chapter = Глава
appendix = Додатак
contents = Садржаj
-listfigure = Листаслика
-listtable = Листатабела
-index = Индекспоjмова
+listfigure = Списак слика
+listtable = Списак табела
+index = Индекс
figure = Слика
table = Табела
part = Део
@@ -52,23 +53,23 @@
[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
@@ -75,18 +76,18 @@
[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.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.short = [HH]:[mm]
[typography]
-frenchspacing = no
+frenchspacing = yes
hyphenrules = serbianc
lefthyphenmin = 2
-righthyphenmin = 3
+righthyphenmin = 2
hyphenchar =
prehyphenchar =
posthyphenchar =
@@ -189,11 +190,11 @@
hyphenationmin =
[characters]
-delimiters.quotes = „“‘‘
-auxiliary = [ё й щ ъ ы ь э ю я]
+delimiters.quotes = „“’’
+auxiliary = [{а\u0302} {е\u0302} {и\u0302} {о\u0302} {у\u0302}]
exemplarCharacters = [а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш]
index = [А Б В Г Д Ђ Е Ж З И Ј К Л Љ М Н Њ О П Р С Т Ћ У Ф Х Ц Ч Џ Ш]
-punctuation = [\\- ‐ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
+punctuation = [\\- ‐ ‑ – , ; \\: ! ? . … ‘ ‚ “ „ ( ) \\[ \\] \\{ \\} * #]
[numbers]
defaultNumberingSystem = latn
@@ -219,7 +220,7 @@
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[žŽ] }
Modified: trunk/Master/texmf-dist/tex/generic/babel/luababel.def
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/luababel.def 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/tex/generic/babel/luababel.def 2023-05-11 20:11:39 UTC (rev 67073)
@@ -1515,7 +1515,7 @@
\else
\let\bbl at ams@lap\llap
\fi
- \ExplSyntaxOn
+ \ExplSyntaxOn % Required by \bbl at sreplace with \intertext@
\bbl at sreplace\intertext@{\normalbaselines}%
{\normalbaselines
\ifx\bbl at eqnodir\relax\else\bbl at pardir\@ne\bbl at eqnodir\fi}%
Modified: trunk/Master/texmf-dist/tex/generic/babel/nil.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/nil.ldf 2023-05-11 20:10:13 UTC (rev 67072)
+++ trunk/Master/texmf-dist/tex/generic/babel/nil.ldf 2023-05-11 20:11:39 UTC (rev 67073)
@@ -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 at nil\@undefined
\newlanguage\l at nil
More information about the tex-live-commits
mailing list.