summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-05-11 20:11:39 +0000
committerKarl Berry <karl@freefriends.org>2023-05-11 20:11:39 +0000
commit2fe9170cef7c130ec1dd170cdec3605ce3541c4d (patch)
tree0976b2b13c456009c0e98b07ea61cd283e5cb2e6 /Master/texmf-dist/tex/generic
parentcb4b9d4e10f52f852461e569e09e8b5cfb9fc65d (diff)
babel (11may23)
git-svn-id: svn://tug.org/texlive/trunk@67073 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic')
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.def1846
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.sty258
-rw-r--r--Master/texmf-dist/tex/generic/babel/hyphen.cfg6
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/fr/babel-acadian.tex12
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/fr/babel-fr-x-acadian.ini186
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/se/babel-se.ini6
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-ijekavsk.tex12
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-serbian-latn-ijekavsk.tex12
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-BA.ini95
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-ME.ini96
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl-XK.ini94
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Cyrl.ini79
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-BA.ini65
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ME.ini63
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-XK.ini63
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn-ijekavsk.ini186
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-Latn.ini50
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr-ijekavsk.ini200
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/sr/babel-sr.ini93
-rw-r--r--Master/texmf-dist/tex/generic/babel/luababel.def2
-rw-r--r--Master/texmf-dist/tex/generic/babel/nil.ldf2
21 files changed, 1259 insertions, 2167 deletions
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