summaryrefslogtreecommitdiff
path: root/macros/latex/required
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-06-11 03:02:13 +0000
committerNorbert Preining <norbert@preining.info>2020-06-11 03:02:13 +0000
commite3a95d205140a9c1ec8bc34f9a6125d8074f5e58 (patch)
tree9c905c13b24fc43e1645387b937d7a8af3dd4f51 /macros/latex/required
parent6706ba0fbc0ef5a672ef0ccb05bd75174a30bb07 (diff)
CTAN sync 202006110302
Diffstat (limited to 'macros/latex/required')
-rw-r--r--macros/latex/required/babel/base/README.md24
-rw-r--r--macros/latex/required/babel/base/babel.dtx335
-rw-r--r--macros/latex/required/babel/base/babel.ins2
-rw-r--r--macros/latex/required/babel/base/babel.pdfbin783363 -> 790671 bytes
-rw-r--r--macros/latex/required/babel/base/bbcompat.dtx2
5 files changed, 237 insertions, 126 deletions
diff --git a/macros/latex/required/babel/base/README.md b/macros/latex/required/babel/base/README.md
index 09b72b457a..9d4077cf82 100644
--- a/macros/latex/required/babel/base/README.md
+++ b/macros/latex/required/babel/base/README.md
@@ -1,4 +1,4 @@
-## Babel 3.44
+## Babel 3.45
This package manages culturally-determined typographical (and other)
rules, and hyphenation patterns for a wide range of languages. Many
@@ -7,9 +7,9 @@ lualatex out of the box. A few even work with plain formats.
The latest stable version is available on <https://ctan.org/pkg/babel>.
-Changes in version 3.44 are described in:
+Changes in version 3.45 are described in:
-https://github.com/latex3/babel/wiki/What's-new-in-babel-3.44
+https://github.com/latex3/babel/wiki/What's-new-in-babel-3.45
Included is a set of ini files for about 200 languages.
@@ -44,6 +44,21 @@ respective authors.
### Latest changes
```
+3.45 2020-06-10
+ - Minor fixes in Hindi, Ancient Greek, Macedonian.
+ - Improvements in Kurdish, Marathi.
+ - Alternative date formats with \localedate[calendar=...,
+ variant=...]{y}{m}{d} (note: no calendar computations, just
+ strings).
+ - \today is (again) case-aware.
+ - \localenumeral{digits}{..} and \localecounter{digits}{cntr}
+ for native digits.
+ - Fixes
+ - Improved handling of math with \babelposthyphenation and
+ \babelprehyphenation (it was ignoring too much).
+ - An error related to \bbl@foreign@x could be raised in some
+ rare cases.
+
3.44 2020-05-13
- WARNING. If you need the Portuguese style you must update
babel-portuges.
@@ -60,6 +75,7 @@ respective authors.
- \babelposthyphenation raised an error if the last char in
the pattern was ].
- \babelposthyphenation is now deativated in math.
+https://github.com/latex3/babel/wiki/What's-new-in-babel-3.44
3.43 2020-04-28
- Autoloading based on the BCP47 codes, with basic lookup.
@@ -72,7 +88,7 @@ respective authors.
- \guillemotleft and \guillemotleft renamed to \guillemetleft
and \guillemetleft (#63).
- A couple of bugs related to autoloading.
-https://github.com/latex3/babel/wiki/What's-new-in-babel-3.44
+https://github.com/latex3/babel/wiki/What's-new-in-babel-3.43
3.42 2020-03-22
- \getlocaleproperty, to get the value of a field from the loaded
diff --git a/macros/latex/required/babel/base/babel.dtx b/macros/latex/required/babel/base/babel.dtx
index 8da203640c..8ffa9a1360 100644
--- a/macros/latex/required/babel/base/babel.dtx
+++ b/macros/latex/required/babel/base/babel.dtx
@@ -31,7 +31,7 @@
%
% \iffalse
%<*filedriver>
-\ProvidesFile{babel.dtx}[2020/05/13 v3.44 The Babel package]
+\ProvidesFile{babel.dtx}[2020/06/10 v3.45 The Babel package]
\documentclass{ltxdoc}
\GetFileInfo{babel.dtx}
\usepackage{fontspec}
@@ -1275,7 +1275,8 @@ LICR). They will be evolving with the time to add more features
following section shows how to make use of them currently (by means of
|\babelprovide|), but a higher interface, based on package options, in
under study. In other words, |\babelprovide| is mainly meant
-for auxiliary tasks.
+for auxiliary tasks, and as alternative when the |ldf|, for some
+reason, does work as expected.
\begin{example}
Although Georgian has its own \texttt{ldf} file, here is how to
@@ -1306,8 +1307,17 @@ _\babelprovide[import, main]{georgian}_
\begin{note}
The \texttt{ini} files just define and set some parameters, but the
- corresponding behavior is not always implemented. Also, there are
- some limitations in the engines. A few remarks follows:
+ corresponding behavior is not always implemented. Also, there are
+ some limitations in the engines. A few remarks follow (which could no
+ longer be valid when you read this manual, if the packages involved
+ han been updated). The Harfbuzz renderer has still some issues, so as
+ a rule of thumb prefer the default renderer, and resort to Harfbuzz
+ only if the former does work for you. Fortunately, fonts can be
+ loaded twice with different renderers; for example:
+\begin{verbatim}
+\babelfont[spanish]{rm}{FreeSerif}
+\babelfont[hindi]{rm}[Renderer=Harfbuzz]{FreeSerif}
+\end{verbatim}
\begin{description}
\itemsep=-\parskip
\item[Arabic] Monolingual documents mostly work in \luatex, but it must
@@ -1318,16 +1328,15 @@ _\babelprovide[import, main]{georgian}_
cantillation marks are misplaced (\xetex{} or \luatex{} with Harfbuzz
seems better, but still problematic).
\item[Devanagari] In \luatex{} and the the default renderer many fonts
-work, but some others do not, the main issue being the ‘ra’. It is
-advisable to set explicitly the script to either |deva| or |dev2|, eg:
+work, but some others do not, the main issue being the ‘ra’. You may
+need to set explicitly the script to either |deva| or |dev2|, eg:
\begin{verbatim}
\newfontscript{Devanagari}{deva}
\end{verbatim}
Other Indic scripts are still under development in the default
- \luatex{} renderer, but should work with the option
- |Renderer=Harfbuzz| in \textsc{fontspec}. They also work with
- \xetex{}, although fine tuning the font behaviour is not always
- possible.
+ \luatex{} renderer, but should work with |Renderer=Harfbuzz|. They
+ also work with \xetex{}, although fine tuning the font behavior is
+ not always possible.
\item[Southeast scripts] Thai works in both \luatex{} and \xetex{}, but
line breaking differs (rules can be modified in \luatex; they are
hard-coded in \xetex). Lao seems to work, too, but there are no
@@ -1343,17 +1352,24 @@ advisable to set explicitly the script to either |deva| or |dev2|, eg:
\end{verbatim}
\endgroup
\item[East Asia scripts] Settings for either Simplified of Traditional
-should work out of the box, with basic line breaking. Although
-for a few words and shorts texts the |ini| files should be fine, CJK
-texts are best set with a dedicated framework (\textsf{CJK},
-\textsf{luatexja}, \textsf{kotex}, \textsf{CTeX}, etc.). This is what
-the class |ltjbook| does with \luatex, which can be used in conjunction
-with the |ldf| for |japanese|, because the following piece of code
-loads \textsf{luatexja}:
+ should work out of the box, with basic line breaking with any
+ renderer. Although for a few words and shorts texts the |ini| files
+ should be fine, CJK texts are best set with a dedicated framework
+ (\textsf{CJK}, \textsf{luatexja}, \textsf{kotex}, \textsf{CTeX},
+ etc.). This is what the class |ltjbook| does with \luatex, which can
+ be used in conjunction with the |ldf| for |japanese|, because the
+ following piece of code loads \textsf{luatexja}:
\begin{verbatim}
\documentclass{ltjbook}
\usepackage[japanese]{babel}
\end{verbatim}
+\item[Latin, Greek, Cyrillic] Combining chars with the default
+ \luatex{} font renderer might be wrong; on then other hand, with the
+ Harfbuzz renderer diacritics are stacked correctly, but many
+ hyphenations points are discarded (this bug seems related to kerning,
+ so it depends on the font). With \xetex{} both combining characters
+ and hyphenation work as expected (not quite, but in most cases it
+ works; the problem here are font clusters).
\end{description}
\end{note}
@@ -2025,14 +2041,18 @@ also the package \textsf{combofont} for a complementary approach.}
\Describe\babelfont{\oarg{language-list}\marg{font-family}%
\oarg{font-options}\marg{font-name}}
+
+\begin{note}
+ See the note in the previous section about some issues in
+ specific languages.
+\end{note}
-The main purpose of |\babelfont| is to define at once in a
-multilingual document the fonts required by the different languages,
-with their corresponding language systems (script and language). So, if
-you load, say, 4 languages, |\babelfont{rm}{FreeSerif}| defines 4 fonts
-(with their variants, of course), which are switched with the language
-by \babel. It is a tool to make things easier and transparent to the
-user.
+The main purpose of |\babelfont| is to define at once in a multilingual
+document the fonts required by the different languages, with their
+corresponding language systems (script and language). So, if you load,
+say, 4 languages, |\babelfont{rm}{FreeSerif}| defines 4 fonts (with
+their variants, of course), which are switched with the language by
+\babel. It is a tool to make things easier and transparent to the user.
Here \textit{font-family} is |rm|, |sf| or |tt| (or newly defined
ones, as explained below), and \textit{font-name} is the same as in
@@ -2380,8 +2400,21 @@ for example:
In other engines it just suppresses hyphenation (because the pattern
list is empty).
-\Describe{main}{} This valueless option makes the language the main
-one. Only in newly defined languages.
+\Describe{main}{} This valueless option makes the language the main one
+(thus overriding that set when \babel\ is loaded). Only in newly defined
+languages.
+\begin{example}
+ Let's assume your document is mainly in Polytonic Greek, but with some
+ sections in Italian. Then, the first attempt should be:
+\begin{verbatim}
+\usepackage[italian, greek.polutonic]{babel}
+\end{verbatim}
+ But if, say, accents in Greek are not shown correctly, you could try:
+\begin{verbatim}
+\usepackage[italian]{babel}
+\babelprovide[import, main]{polytonicgreek}
+\end{verbatim}
+\end{example}
\Describe{script=}{\meta{script-name}}
\New{3.15} Sets the script name to be used by \textsf{fontspec} (eg,
@@ -2397,6 +2430,11 @@ Overrides the value in the |ini| file. If \textsf{fontspec} does not
define it, then \babel{} sets its tag to that provided by the |ini|
file. Not so important, but sometimes still relevant.
+\Describe{alph=}{\meta{counter-name}} Assigns to |\alph| that counter.
+See the next section.
+
+\Describe{Alph=}{\meta{counter-name}} Same for |\Alph|.
+
\bigskip
A few options (only \luatex) set some properties of the writing system
@@ -2512,10 +2550,11 @@ bidi and fonts are processed (ie, to the node list as generated by the
bidirectional behavior (unlike |Numbers=Arabic| in \textsf{fontspec},
which is not recommended).
-\New{4.41} Many `ini` locale files has been extended with information about
-non-positional numerical systems, based on those predefined in CSS.
-They only work with \xetex{} and \luatex{} and are fully expendable (even
-inside an |\edef|). Currently, they are limited to numbers below 10000.
+\New{4.41} Many `ini` locale files has been extended with information
+about non-positional numerical systems, based on those predefined in
+CSS. They only work with \xetex{} and \luatex{} and are fully
+expendable (even inside an unprotected |\edef|). Currently, they are
+limited to numbers below 10000.
There are several ways to use them (for the availabe styles in each
language, see the list below):
@@ -2537,10 +2576,18 @@ The styles are:
\itemsep=-\parskip
\item[Ancient Greek] |lower.ancient|, |upper.ancient|
-\item[Arabic] |abjad|, |maghrebi.abjad|
+\item[Amharic] |afar|, |agaw|, |ari|, |blin|, |dizi|, |gedeo|, |gumuz|,
+|hadiyya|, |harari|, |kaffa|, |kebena|, |kembata|, |konso|, |kunama|,
+|meen|, |oromo|, |saho|, |sidama|, |silti|, |tigre|, |wolaita|, |yemsa|
+
+\item[Arabic] |abjad|, |maghrebi.abjad|
\item[Belarusan, Bulgarian, Macedonian, Serbian] |lower|, |upper|
+\item[Bengali] |alphabetic|
+
+\item[Coptic] |epact|,|lower.letters|
+
\item[Hebrew] |letters| (neither geresh nor gershayim yet)
\item[Hindi] |alphabetic|
@@ -2563,10 +2610,14 @@ The styles are:
|hanja.formal|, |hangul.formal|, |cjk-earthly-branch|,
|cjk-heavenly-stem|, |fullwidth.lower.alpha|, |fullwidth.upper.alpha|
+\item[Marathi] |alphabetic|
+
\item[Persian] |abjad|, |alphabetic|
\item[Russian] |lower|, |lower.full|, |upper|, |upper.full|
+\item[Syriac] |letters|
+
\item[Tamil] |ancient|
\item[Thai] |alphabetic|
@@ -2577,6 +2628,29 @@ The styles are:
|fullwidth.lower.alpha|, |fullwidth.upper.alpha|
\end{description}
+\New{3.45} In addition, native digits (in languages defining them) may
+be printed with the numeral style |digits|.
+
+\subsection{Dates}
+
+\New{3.45} When the data is taken from an |ìni| file, you may print the
+date corresponding to the Gregorian calendar and other lunisolar systems
+with the following command.
+
+\Describe{\localedate}{\o{calendar=.., variant=..}%
+ {\m{year}\m{month}\m{day}}}
+
+By default the calendar is the Gregorian, but a |ini| files may define
+strings for other calendars (currently |ar|, |ar-|*, |he|, |fa|, |hi|.)
+In the latter case, the three arguments are the year, the month, and
+the day in those in the corresponding calendar. They are \textit{not}
+the Gregorian data to be converted (which means, say, 13 is a valid
+month number with |calendar=hebrew|).
+
+Even with a certain calendar there may be variants. In Kurmanji the
+default variant prints something like \textit{30. Çileya Pêşîn 2019},
+but with |variant=izafa| it prints \textit{31’ê Çileya Pêşînê 2019}.
+
\subsection{Accessing language info}
\Describe{\languagename}{}
@@ -3856,10 +3930,9 @@ known. The first two are related to hyphenation patterns.
\DescribeMacro{\addlanguage}
The macro |\addlanguage| is a non-outer version of the macro
-|\newlanguage|, defined in \file{plain.tex} version~3.x. For older
-versions of \file{plain.tex} and \file{lplain.tex} a substitute
-definition is used. Here ``language'' is used in the \TeX{} sense of
-set of hyphenation patterns.
+|\newlanguage|, defined in \file{plain.tex} version~3.x. Here
+``language'' is used in the \TeX{} sense of set of hyphenation
+patterns.
\DescribeMacro{\adddialect}
The macro |\adddialect| can be used when two languages can (or
@@ -4576,13 +4649,15 @@ help from Bernd Raichle, for which I am grateful.
% |date.long.Nominative|, |date.long.Formal|, but no language is
% currently using the latter). \textit{Multi-letter} qualifiers are
% forward compatible in the sense they won’t conflict with new
-% ``global'' keys (which start always with a lowercase case).
+% ``global'' keys (which start always with a lowercase case). There is
+% an exception, however: the section |counters| has been devised to
+% have arbitrary keys, so you can add lowercased keys if you want.
%
% \section{Tools}
%
% \begin{macrocode}
-%<<version=3.44>>
-%<<date=2020/05/13>>
+%<<version=3.45>>
+%<<date=2020/06/10>>
% \end{macrocode}
%
% \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -4909,37 +4984,14 @@ help from Bernd Raichle, for which I am grateful.
%
% \begin{macro}{\addlanguage}
%
-% To add languages to \TeX's memory plain \TeX\ version~3.0
-% supplies |\newlanguage|, in a pre-3.0 environment a similar macro
-% has to be provided. For both cases a new macro is defined here,
-% because the original |\newlanguage| was defined to be |\outer|.
-%
-% For a format based on plain version~2.x, the definition of
-% |\newlanguage| can not be copied because |\count 19| is used for
-% other purposes in these formats. Therefore |\addlanguage| is
-% defined using a definition based on the macros used to define
-% |\newlanguage| in plain \TeX\ version~3.0.
-%
-% For formats based on plain version~3.0 the definition of
-% |\newlanguage| can be simply copied, removing |\outer|.
-% Plain \TeX\ version 3.0 uses |\count 19| for this purpose.
+% This macro was introduced for \TeX{} $<$ 2. Preserved for
+% compatibility.
%
% \begin{macrocode}
%<<*Define core switching macros>>
-\ifx\newlanguage\@undefined
- \csname newcount\endcsname\last@language
- \def\addlanguage#1{%
- \global\advance\last@language\@ne
- \ifnum\last@language<\@cclvi
- \else
- \errmessage{No room for a new \string\language!}%
- \fi
- \global\chardef#1\last@language
- \wlog{\string#1 = \string\language\the\last@language}}
-\else
- \countdef\last@language=19
- \def\addlanguage{\alloc@9\language\chardef\@cclvi}
-\fi
+%<<*Define core switching macros>>
+\countdef\last@language=19 % TODO. why? remove?
+\def\addlanguage{\csname newlanguage\endcsname}
%<</Define core switching macros>>
% \end{macrocode}
%
@@ -7290,7 +7342,7 @@ help from Bernd Raichle, for which I am grateful.
\expandafter\noexpand\csname foreignlanguage \endcsname}
\expandafter\def\csname foreignlanguage \endcsname{%
\@ifstar\bbl@foreign@s\bbl@foreign@x}
-\newcommand\bbl@foreign@x[3][]{%
+\providecommand\bbl@foreign@x[3][]{%
\begingroup
\def\bbl@select@opts{#1}%
\let\BabelText\@firstofone
@@ -8008,6 +8060,9 @@ help from Bernd Raichle, for which I am grateful.
\AtBeginDocument{%
\@nameuse{bbl@beforestart}%
\if@filesw
+ \providecommand\babel@aux[2]{}%
+ \immediate\write\@mainaux{%
+ \string\providecommand\string\babel@aux[2]{}}%
\immediate\write\@mainaux{\string\@nameuse{bbl@beforestart}}%
\fi
\expandafter\selectlanguage\expandafter{\bbl@main@language}%
@@ -10517,6 +10572,7 @@ help from Bernd Raichle, for which I am grateful.
\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}%
@@ -10754,7 +10810,28 @@ help from Bernd Raichle, for which I am grateful.
\global\bbl@csarg\let{renew@\bbl@section}\relax
\bbl@cs{secpost@\bbl@section}%
% The previous code belongs to the previous section.
+ % --------------------------
% Now start the current one.
+ \in@{=date.}{=#1}%
+ \ifin@
+ \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{=}{}%
+ \bbl@exp{%
+ \def\<bbl@inikv@#1>####1=####2\\\@@{%
+ \\\bbl@inidate####1...\relax{####2}{\bbl@tempa}}}%
+ \fi
+ \fi
\def\bbl@section{#1}%
\def\bbl@elt##1##2{%
\@namedef{bbl@KVP@#1/##1}{}}%
@@ -10900,54 +10977,75 @@ help from Bernd Raichle, for which I am grateful.
\\\SetString\<\bbl@tempa name>{\the\toks@}}}}
% \end{macrocode}
%
-% But dates are more complex. The full date format is stores in
-% |date.gregorian|, so we must read it in non-Unicode engines, too
-% (saved months are just discarded when the LICR section is reached).
-%
-% TODO. Remove copypaste pattern.
+% TODO. Document
%
% \begin{macrocode}
-\bbl@csarg\def{inikv@date.gregorian}#1=#2\@@{% for defaults
- \bbl@inidate#1...\relax{#2}{}}
-\bbl@csarg\def{inikv@date.islamic}#1=#2\@@{%
- \bbl@inidate#1...\relax{#2}{islamic}}
-\bbl@csarg\def{inikv@date.hebrew}#1=#2\@@{%
- \bbl@inidate#1...\relax{#2}{hebrew}}
-\bbl@csarg\def{inikv@date.persian}#1=#2\@@{%
- \bbl@inidate#1...\relax{#2}{persian}}
-\bbl@csarg\def{inikv@date.indian}#1=#2\@@{%
- \bbl@inidate#1...\relax{#2}{indian}}
-\ifcase\bbl@engine
- \bbl@csarg\def{inikv@date.gregorian.licr}#1=#2\@@{% override
- \bbl@inidate#1...\relax{#2}{}}
- \bbl@csarg\def{secpre@date.gregorian.licr}{% discard uni
- \ifcase\bbl@engine\let\bbl@savedate\@empty\fi}
-\fi
-% TODO. With the following there is no need to ensure if \select...
-\newcommand\localedate{\@nameuse{bbl@date@\languagename}}
-% eg: 1=months, 2=wide, 3=1, 4=dummy
+% Arguments are _not_ protected.
+\let\bbl@calendar\@empty
+\DeclareRobustCommand\localedate[1][]{\bbl@localedate{#1}}
+\def\bbl@cased{% TODO. Move
+ \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@localedate#1#2#3#4{%
+ \begingroup
+ \ifx\@empty#1\@empty\else
+ \let\bbl@ld@calendar\@empty
+ \let\bbl@ld@variant\@empty
+ \edef\bbl@tempa{\zap@space#1 \@empty}%
+ \def\bbl@tempb##1=##2\@@{\@namedef{bbl@ld@##1}{##2}}%
+ \bbl@foreach\bbl@tempa{\bbl@tempb##1\@@}%
+ \edef\bbl@calendar{%
+ \bbl@ld@calendar
+ \ifx\bbl@ld@variant\@empty\else
+ .\bbl@ld@variant
+ \fi}%
+ \bbl@replace\bbl@calendar{gregorian}{}%
+ \fi
+ \bbl@cased
+ {\@nameuse{bbl@date@\languagename @\bbl@calendar}{#2}{#3}{#4}}%
+ \endgroup}
+% eg: 1=months, 2=wide, 3=1, 4=dummy, 5=value, 6=calendar
\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}%
- \bbl@exp{%
- \\\bbl@add\\\bbl@savedate{%
- \\\SetString\<month\romannumeral\bbl@tempa#6name>{\the\toks@}}}}%
+ \@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
- {\bbl@trim@def\bbl@toreplace{#5}%
+ {\lowercase{\def\bbl@tempb{#6}}%
+ \bbl@trim@def\bbl@toreplace{#5}%
\bbl@TG@@date
- \global\bbl@csarg\let{date@\languagename}\bbl@toreplace
- \bbl@exp{%
- \gdef\<\languagename date>{\\\protect\<\languagename date >}%
- \gdef\<\languagename date >####1####2####3{%
- \\\bbl@usedategrouptrue
- \<bbl@ensure@\languagename>{%
- \<bbl@date@\languagename>{####1}{####2}{####3}}}%
- \\\bbl@add\\\bbl@savetoday{%
- \\\SetString\\\today{%
- \<\languagename date>{\\\the\year}{\\\the\month}{\\\the\day}}}}}}%
- {}}
+ \bbl@ifunset{bbl@date@\languagename @}%
+ {\global\bbl@csarg\let{date@\languagename @}\bbl@toreplace
+ % TODO. Move to a better place.
+ \bbl@exp{%
+ \gdef\<\languagename date>{\\\protect\<\languagename date >}%
+ \gdef\<\languagename date >####1####2####3{%
+ \\\bbl@usedategrouptrue
+ \<bbl@ensure@\languagename>{%
+ \\\localedate{####1}{####2}{####3}}}%
+ \\\bbl@add\\\bbl@savetoday{%
+ \\\SetString\\\today{%
+ \<\languagename date>%
+ {\\\the\year}{\\\the\month}{\\\the\day}}}}}%
+ {}%
+ \ifx\bbl@tempb\@empty\else
+ \global\bbl@csarg\let{date@\languagename @\bbl@tempb}\bbl@toreplace
+ \fi}%
+ {}}}
% \end{macrocode}
%
% Dates will require some macros for the basic formatting. They may be
@@ -11070,10 +11168,9 @@ help from Bernd Raichle, for which I am grateful.
% \begin{macrocode}
\newcommand\localenumeral[2]{\bbl@cs{cntr@#1@\languagename}{#2}}
\def\bbl@localecntr#1#2{\localenumeral{#2}{#1}}
-% TODO. \localecounter{digits}{..} What a mistake on my part!!
-% But the solution seems even logical ;-)
\newcommand\localecounter[2]{%
- \expandafter\bbl@localecntr\csname c@#2\endcsname{#1}}
+ \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{%
@@ -11470,7 +11567,7 @@ help from Bernd Raichle, for which I am grateful.
\def\bbl@hook@loadpatterns#1{\input #1\relax}
\let\bbl@hook@loadexceptions\bbl@hook@loadpatterns
\def\bbl@hook@loadkernel#1{%
- \def\addlanguage{\alloc@9\language\chardef\@cclvi}%
+ \def\addlanguage{\csname newlanguage\endcsname}%
\def\adddialect##1##2{%
\global\chardef##1##2\relax
\wlog{\string##1 = a dialect from \string\language##2}}%
@@ -12997,9 +13094,9 @@ end
elseif item.id == 7 and item.subtype == 3 and not inmath then
word_string = word_string .. '|'
word_nodes[#word_nodes+1] = item
-
- elseif item.id == node.id'math' then
- inmath = (item.subtype == 0)
+
+ elseif item.id == 11 and item.subtype == 0 then
+ inmath = true
elseif word_string == '' then
&% pass
@@ -13119,7 +13216,7 @@ end
end &% for words
return head
end
-
+
&%%%
&% Preliminary code for \babelprehyphenation
&% TODO. Copypaste pattern. Merge with fetch_word
@@ -13156,9 +13253,9 @@ end
item = nil
return word_string, word_nodes, item, lang
end
-
- elseif item.id == node.id'math' then
- inmath = (item.subtype == 0)
+
+ elseif item.id == 11 and item.subtype == 0 then
+ inmath = true
elseif word_string == '' then
&% pass
@@ -13170,7 +13267,7 @@ end
item = item.next
end
end
-
+
&% TODO. Copypaste pattern. Merge with pre_hyphenate_replace
function Babel.pre_hyphenate_replace(head)
local u = unicode.utf8
@@ -20367,8 +20464,6 @@ end
%<*cjkdata>
Babel = Babel or {}
-
-
Babel.cjk_characters = {
[0x0021]={c='ex'},
[0x0024]={c='pr'},
diff --git a/macros/latex/required/babel/base/babel.ins b/macros/latex/required/babel/base/babel.ins
index 6efb6276f6..a188dd14b3 100644
--- a/macros/latex/required/babel/base/babel.ins
+++ b/macros/latex/required/babel/base/babel.ins
@@ -26,7 +26,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%
-\def\filedate{2020/05/13}
+\def\filedate{2020/06/10}
\def\batchfile{babel.ins}
\input docstrip.tex
diff --git a/macros/latex/required/babel/base/babel.pdf b/macros/latex/required/babel/base/babel.pdf
index 9d358cd539..6f4f2ecabf 100644
--- a/macros/latex/required/babel/base/babel.pdf
+++ b/macros/latex/required/babel/base/babel.pdf
Binary files differ
diff --git a/macros/latex/required/babel/base/bbcompat.dtx b/macros/latex/required/babel/base/bbcompat.dtx
index ac16fcab7c..dbfa43a2a1 100644
--- a/macros/latex/required/babel/base/bbcompat.dtx
+++ b/macros/latex/required/babel/base/bbcompat.dtx
@@ -30,7 +30,7 @@
%
% \iffalse
%<*dtx>
-\ProvidesFile{bbcompat.dtx}[2020/05/13 v3.44]
+\ProvidesFile{bbcompat.dtx}[2020/06/10 v3.45]
%</dtx>
%
%% File 'bbcompat.dtx'