summaryrefslogtreecommitdiff
path: root/macros/latex/required/babel/base/babel.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/required/babel/base/babel.dtx')
-rw-r--r--macros/latex/required/babel/base/babel.dtx118
1 files changed, 85 insertions, 33 deletions
diff --git a/macros/latex/required/babel/base/babel.dtx b/macros/latex/required/babel/base/babel.dtx
index 1e7004c471..c633f24b9e 100644
--- a/macros/latex/required/babel/base/babel.dtx
+++ b/macros/latex/required/babel/base/babel.dtx
@@ -32,7 +32,7 @@
%
% \iffalse
%<*filedriver>
-\ProvidesFile{babel.dtx}[2022/08/29 v3.79 The Babel package]
+\ProvidesFile{babel.dtx}[2022/09/17 v3.80 The Babel package]
\documentclass{ltxdoc}
\GetFileInfo{babel.dtx}
\usepackage{fontspec}
@@ -460,16 +460,16 @@ except if there is a real reason to do so:
Examples of cases where |main| is useful are the following.
-\begin{note}
+\begin{example}
Some classes load \babel{} with a hardcoded language option. Sometimes,
the main language can be overridden with something like that before
|\documentclass|:
\begin{verbatim}
\PassOptionsToPackage{main=english}{babel}
\end{verbatim}
-\end{note}
+\end{example}
-\begin{warning}
+\begin{note}
Languages may be set as global and as package option at the same
time, but in such a case you should set explicitly the main language
with the package option |main|:
@@ -477,7 +477,7 @@ the main language can be overridden with something like that before
\documentclass[_italian_]{book}
\usepackage[ngerman,_main=italian_]{babel}
\end{verbatim}
-\end{warning}
+\end{note}
\begin{warning}
In the preamble the main language has \textit{not} been selected,
@@ -519,7 +519,7 @@ _\foreignlanguage{french}{français}_.
With \xetex{} and \luatex, the following bilingual, single script
document in UTF-8 encoding just prints a couple of ‘captions’ and
|\today| in Danish and Vietnamese. No additional packages are
- required.
+ required, because the default font supports both languages.
\setengine{luatex/xetex}
\begin{verbatim}
\documentclass{article}
@@ -528,11 +528,11 @@ _\usepackage[vietnamese,danish]{babel}_
\begin{document}
-\prefacename{} -- \alsoname{} -- \today
+\prefacename, \alsoname, \today.
\selectlanguage{vietnamese}
-\prefacename{} -- \alsoname{} -- \today
+\prefacename, \alsoname, \today.
\end{document}
\end{verbatim}
@@ -583,7 +583,8 @@ _\foreignlanguage{spanish}{Español}_.
Instead of its name, you may prefer to select the language with the
corresponding BCP47 tag. This alternative, however, must be activated
explicitly, because a two- or tree-letter word is a valid name for a
-language (eg, |yi|). See section \ref{bcp47} for further details.
+language (eg, |lu| can be the locale name with tag |khb| or the tag for
+|lubakatanga|). See section \ref{bcp47} for further details.
\end{note}
\subsection{Modifiers}
@@ -3009,7 +3010,7 @@ the current item, so that |\LocaleForEach{\message{ **#1** }}| just
shows the loaded |ini|’s.
\Describe{ensureinfo=off}{}
-\New{3.75} Previously, |ini| files are loaded only with |\babelprovide|
+\New{3.75} Previously, |ini| files were loaded only with |\babelprovide|
and also when languages are selected if there is a |\babelfont| or they
have not been explicitly declared. Now the |ini| files are loaded (and
therefore the corresponding data) even if these two conditions are not
@@ -3206,8 +3207,8 @@ transforms = transliteration.omega (\withsigmafinal) sigma.final
This applies |transliteration.omega| always, but |sigma.final| only when
|\withsigmafinal| is set.
-Here are the transforms currently predefined. (More to follow
-in future releases.)
+Here are the transforms currently predefined. (A few may still require
+some fine-tuning. More to follow in future releases.)
\begingroup
\def\trans#1#2#3{%
@@ -5175,8 +5176,8 @@ help from Bernd Raichle, for which I am grateful.
% \section{Tools}
%
% \begin{macrocode}
-%<<version=3.79>>
-%<<date=2022/08/29>>
+%<<version=3.80>>
+%<<date=2022/09/17>>
% \end{macrocode}
%
% \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -5944,12 +5945,13 @@ help from Bernd Raichle, for which I am grateful.
%
% For the option safe we use a different approach -- |\bbl@opt@safe|
% says which macros are redefined (B for bibs and R for refs). By
-% default, both are set.
+% default, both are currently set, but in a future release it will be set to
+% |none|.
%
% \begin{macrocode}
\ifx\bbl@opt@safe\@undefined
\def\bbl@opt@safe{BR}
- % \let\bbl@opt@safe\@empty % -- By September
+ % \let\bbl@opt@safe\@empty % Pending of \cite
\fi
% \end{macrocode}
%
@@ -8740,6 +8742,25 @@ help from Bernd Raichle, for which I am grateful.
{\bbl@tolower\@empty}{\bbl@toupper\@empty}}%
\gdef\bbl@tolower{\csname\languagename @bbl@lc\endcsname}%
\gdef\bbl@toupper{\csname\languagename @bbl@uc\endcsname}}}
+% A temporary hack:
+\ifx\BabelCaseHack\@undefined
+\AtBeginDocument{%
+ \bbl@exp{%
+ \\\in@{\string\@uclclist}%
+ {\expandafter\meaning\csname MakeUppercase \endcsname}}%
+ \ifin@\else
+ \expandafter\let\expandafter\bbl@newuc\csname MakeUppercase \endcsname
+ \protected\@namedef{MakeUppercase }#1{{%
+ \def\reserved@a##1##2{\let##1##2\reserved@a}%
+ \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
+ \protected@edef\reserved@a{\bbl@newuc{#1}}\reserved@a}}%
+ \expandafter\let\expandafter\bbl@newlc\csname MakeLowercase \endcsname
+ \protected\@namedef{MakeLowercase }#1{{%
+ \def\reserved@a##1##2{\let##2##1\reserved@a}%
+ \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
+ \protected@edef\reserved@a{\bbl@newlc{#1}}\reserved@a}}%
+ \fi}
+\fi
% \end{macrocode}
%
% \begin{macrocode}
@@ -9152,7 +9173,7 @@ help from Bernd Raichle, for which I am grateful.
\bbl@toglobal\bbl@captionslist
\fi
\fi}
-% \def\bbl@setcaption@s#1#2#3{} % TODO. Not yet implemented
+% \def\bbl@setcaption@s#1#2#3{} % TODO. Not yet implemented (w/o 'name')
% \end{macrocode}
%
% \subsection{Macros common to a number of languages}
@@ -9712,14 +9733,14 @@ help from Bernd Raichle, for which I am grateful.
\bbl@vforeach{captions,date,import,main,script,language,%
hyphenrules,linebreaking,justification,mapfont,maparabic,%
mapdigits,intraspace,intrapenalty,onchar,transforms,alph,%
- Alph,labels,labels*,calendar}%
+ Alph,labels,labels*,calendar,date}%
{\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}{% TODO - error handling
+ \bbl@forkv{#1}{%
\in@{/}{##1}%
\ifin@
\global\let\bbl@extend@ini\bbl@extend@ini@aux
@@ -9738,6 +9759,9 @@ help from Bernd Raichle, for which I am grateful.
\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
\ifcase\bbl@howloaded
@@ -9762,6 +9786,7 @@ help from Bernd Raichle, for which I am grateful.
\xdef\bbl@KVP@import{\bbl@initoload}%
\fi}%
{}%
+ \let\bbl@KVP@date\@empty
\fi
\ifx\bbl@KVP@captions\@nnil
\let\bbl@KVP@captions\bbl@KVP@import
@@ -10128,7 +10153,7 @@ help from Bernd Raichle, for which I am grateful.
\fi
\fi
\StartBabelCommands*{#1}{date}%
- \ifx\bbl@KVP@import\@nnil
+ \ifx\bbl@KVP@date\@nnil
\bbl@exp{%
\\\SetString\\\today{\\\bbl@nocaption{today}{#1today}}}%
\else
@@ -10154,7 +10179,7 @@ help from Bernd Raichle, for which I am grateful.
\bbl@read@ini{\bbl@KVP@captions}2% % Here all letters cat = 11
\EndBabelCommands
\fi
- \ifx\bbl@KVP@import\@nnil\else
+ \ifx\bbl@KVP@date\@nnil\else
\StartBabelCommands*{#1}{date}%
\bbl@savetoday
\bbl@savedate
@@ -10267,6 +10292,9 @@ help from Bernd Raichle, for which I am grateful.
\bbl@trim\toks@{#2}%
\bbl@xin@{;\bbl@section/\bbl@tempa;}{\bbl@key@list}%
\ifin@\else
+ \bbl@xin@{,identification/include.}%
+ {,\bbl@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@}}}%
@@ -10292,6 +10320,16 @@ help from Bernd Raichle, for which I am grateful.
% |\babelprovide| it's either 1 or 2.
%
% \begin{macrocode}
+\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
@@ -10317,17 +10355,16 @@ help from Bernd Raichle, for which I am grateful.
\let\bbl@inistore\bbl@inistore@min % Remember it's local
\fi
\def\bbl@section{identification}%
+ \let\bbl@required@inis\@empty
\bbl@exp{\\\bbl@inistore tag.ini=#1\\\@@}%
\bbl@inistore load.level=#2\@@
- \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
+ \bbl@loop@ini
+ \ifx\bbl@required@inis\@empty\else
+ \bbl@replace\bbl@required@inis{ }{,}%
+ \bbl@foreach\bbl@required@inis{%
+ \openin\bbl@readstream=##1.ini
+ \bbl@loop@ini}%
\fi
- \repeat
% == Process stored data ==
\bbl@csarg\xdef{lini@\languagename}{#1}%
\bbl@read@ini@aux
@@ -10410,7 +10447,7 @@ help from Bernd Raichle, for which I am grateful.
\ifx\bbl@tempa\relax\else
\bbl@replace\bbl@tempa{=}{}%
\ifx\bbl@tempa\@empty\else
- \xdef\bbl@calendars{,\bbl@tempa}%
+ \xdef\bbl@calendars{\bbl@calendars,\bbl@tempa}%
\fi
\bbl@exp{%
\def\<bbl@inikv@#1>####1####2{%
@@ -10762,7 +10799,6 @@ help from Bernd Raichle, for which I am grateful.
% and therefore always converted with other calendars. TODO. Document
%
% \begin{macrocode}
-% Arguments are _not_ protected.
\let\bbl@calendar\@empty
\DeclareRobustCommand\localedate[1][]{\bbl@localedate{#1}}
\def\bbl@localedate#1#2#3#4{%
@@ -10774,6 +10810,7 @@ help from Bernd Raichle, for which I am grateful.
\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
@@ -23167,10 +23204,11 @@ Babel.cjk_breaks = {
%</ca-persian>
% \end{macrocode}
%
-% \section{Coptic}
+% \section{Coptic and Ethiopic}
%
% Adapted from \texttt{jquery.calendars.package-1.1.4}, written by Keith
-% Wood, 2010. Dual license: GPL and MIT.
+% Wood, 2010. Dual license: GPL and MIT. The only difference is the
+% epoch.
%
% \begin{macrocode}
%<*ca-coptic>
@@ -23187,6 +23225,20 @@ Babel.cjk_breaks = {
\edef#6{\fp_eval:n{\bbl@tempc - (#5 - 1) * 30 + 1}}}
\ExplSyntaxOff
%</ca-coptic>
+%<*ca-ethiopic>
+\ExplSyntaxOn
+<@Compute Julian day@>
+\def\bbl@ca@ethiopic#1-#2-#3\@@#4#5#6{%
+ \edef\bbl@tempd{\fp_eval:n{floor(\bbl@cs@jd{#1}{#2}{#3}) + 0.5}}%
+ \edef\bbl@tempc{\fp_eval:n{\bbl@tempd - 1724220.5}}%
+ \edef#4{\fp_eval:n{%
+ floor((\bbl@tempc - floor((\bbl@tempc+366) / 1461)) / 365) + 1}}%
+ \edef\bbl@tempc{\fp_eval:n{%
+ \bbl@tempd - (#4-1) * 365 - floor(#4/4) - 1724220.5}}%
+ \edef#5{\fp_eval:n{floor(\bbl@tempc / 30) + 1}}%
+ \edef#6{\fp_eval:n{\bbl@tempc - (#5 - 1) * 30 + 1}}}
+\ExplSyntaxOff
+%</ca-ethiopic>
% \end{macrocode}
%
% \section{Buddhist}