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