summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-06-28 20:38:19 +0000
committerKarl Berry <karl@freefriends.org>2021-06-28 20:38:19 +0000
commita977864eac6d306a206d3c4535fe0e397a10ab4a (patch)
treeeef32e46d36c0092e1062db037e8000e4862fc26 /Master
parent472bc9cb1b41fa04197e7684ac38bb1ea6550ee0 (diff)
babel (28jun21)
git-svn-id: svn://tug.org/texlive/trunk@59740 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex/babel/README.md27
-rw-r--r--Master/texmf-dist/doc/latex/babel/babel.pdfbin843759 -> 846875 bytes
-rw-r--r--Master/texmf-dist/source/latex/babel/babel.dtx374
-rw-r--r--Master/texmf-dist/source/latex/babel/babel.ins2
-rw-r--r--Master/texmf-dist/source/latex/babel/bbcompat.dtx2
-rw-r--r--Master/texmf-dist/source/latex/babel/locale.zipbin785758 -> 786454 bytes
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua2
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua2
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua2
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua2
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.def251
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.sty42
-rw-r--r--Master/texmf-dist/tex/generic/babel/blplain.tex2
-rw-r--r--Master/texmf-dist/tex/generic/babel/bplain.tex2
-rw-r--r--Master/texmf-dist/tex/generic/babel/hyphen.cfg8
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-DZ.ini7
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-MA.ini7
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-SY.ini7
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar.ini10
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/as/babel-as.ini12
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/bn/babel-bn.ini12
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/gu/babel-gu.ini10
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/hi/babel-hi.ini9
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/kn/babel-kn.ini10
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ml/babel-ml.ini10
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/mr/babel-mr.ini12
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/or/babel-or.ini10
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/ta/babel-ta.ini11
-rw-r--r--Master/texmf-dist/tex/generic/babel/locale/te/babel-te.ini10
-rw-r--r--Master/texmf-dist/tex/generic/babel/luababel.def12
-rw-r--r--Master/texmf-dist/tex/generic/babel/nil.ldf4
-rw-r--r--Master/texmf-dist/tex/generic/babel/plain.def2
-rw-r--r--Master/texmf-dist/tex/generic/babel/switch.def2
-rw-r--r--Master/texmf-dist/tex/generic/babel/txtbabel.def2
-rw-r--r--Master/texmf-dist/tex/generic/babel/xebabel.def3
35 files changed, 550 insertions, 330 deletions
diff --git a/Master/texmf-dist/doc/latex/babel/README.md b/Master/texmf-dist/doc/latex/babel/README.md
index f901605218a..0d63b0df473 100644
--- a/Master/texmf-dist/doc/latex/babel/README.md
+++ b/Master/texmf-dist/doc/latex/babel/README.md
@@ -1,4 +1,4 @@
-## Babel 3.60
+## Babel 3.61
This package manages culturally-determined typographical (and other)
rules, and hyphenation patterns for a wide range of languages. Many
@@ -8,13 +8,13 @@ is a set of ini files for about 250 languages.
The latest stable version is available on <https://ctan.org/pkg/babel>.
-Changes in version 3.60 are described in:
+Changes in version 3.61 are described in:
-https://github.com/latex3/babel/blob/master/news-guides/news/whats-new-in-babel-3.60.md
+https://latex3.github.io/babel/news/whats-new-in-babel-3.61.html
Apart from the manual, you can find information on some aspects of babel at:
-https://github.com/latex3/babel/tree/master/news-guides
+https://latex3.github.io/babel/
The best way to install and/or update it is with the help of package
managers.
@@ -46,15 +46,18 @@ respective authors.
### Summary of Latest changes
```
-3.60 2021-06-02
- * A major fix for a bug with the latest LaTeX releases: class
- options were messed up.
- * Improved justification=kashida/elongated: lists, vowelized texts.
- * Fix: Underfull \hbox with amsmath (#133).
- * Improved the ini file for Basque (captions).
+3.61 2021-06-28
+ * Improved justification=kashida/elongated: hboxes (lua).
+ * Transform danda.nobreak for several Indic scripts (lua):
+ Assamese, Bengali, Gujarati, Hindi, Kannada, Malayalam,
+ Marathi, Oriya, Tamil, Telugu.
+ * Improved \babelprovide when used to reconfigure a language.
+ * Fixes:
+ - Partial fix for #114 (bad breaks and spacing with
+ \selectlanguage).
+ - \shorthandoff*{^} caused error for \section command (#129).
```
### Previous changes
-See https://github.com/latex3/babel/blob/master/news-guides/README.md#whats-new
-
+See https://latex3.github.io/babel/
diff --git a/Master/texmf-dist/doc/latex/babel/babel.pdf b/Master/texmf-dist/doc/latex/babel/babel.pdf
index a184df48a21..8e3aefc9440 100644
--- a/Master/texmf-dist/doc/latex/babel/babel.pdf
+++ b/Master/texmf-dist/doc/latex/babel/babel.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex/babel/babel.dtx b/Master/texmf-dist/source/latex/babel/babel.dtx
index 257ecd38513..b6aea49d747 100644
--- a/Master/texmf-dist/source/latex/babel/babel.dtx
+++ b/Master/texmf-dist/source/latex/babel/babel.dtx
@@ -6,6 +6,7 @@
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
%%
+%%
%% This file is part of the Babel system.
%% --------------------------------------
%%
@@ -20,7 +21,6 @@
%% This work has the LPPL maintenance status "maintained".
%%
%% The Current Maintainer of this work is Javier Bezos.
-
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
@@ -32,7 +32,7 @@
%
% \iffalse
%<*filedriver>
-\ProvidesFile{babel.dtx}[2021/06/02 v3.60 The Babel package]
+\ProvidesFile{babel.dtx}[2021/06/28 v3.61 The Babel package]
\documentclass{ltxdoc}
\GetFileInfo{babel.dtx}
\usepackage{fontspec}
@@ -255,8 +255,8 @@ describes the code, and usually it can be ignored.
latest changes?] Changes and new features with relation to version 3.8
are highlighted with \New{X.XX}\hspace{-.5em}, and there are some notes
for the latest versions in
-\href{https://github.com/latex3/babel/tree/master/news-guides}{the
-\babel{} repository}. The most recent features can be still unstable.
+\href{https://latex3.github.io/babel/}{the
+\babel{} site}. The most recent features can be still unstable.
\item[\sffamily\color{messages}Can I help?] Sure! If you are interested
in the \TeX{} multilingual support, please join the
@@ -650,9 +650,8 @@ In e-Plain and pdf-Plain, load languages styles with |\input| and then use
\begin{warning}
Not all languages provide a |sty| file and some of them are not
compatible with those formats. Please, refer to
- \href{https://github.com/latex3/babel/blob/%
- master/news-guides/guides/using-babel-with-plain.md}{Using babel with
- Plain} for further details.
+ \href{https://latex3.github.io/babel/guides/using-babel-with-plain.html}%
+ {Using babel with Plain} for further details.
\end{warning}
\subsection{Basic language selectors}
@@ -711,7 +710,8 @@ the surrounding language is still in force), and (3) it works even if
the language has not been set as package option (but in such a case it
only sets the hyphenation patterns and a warning is shown). With the
|bidi| option, it also enters in horizontal mode (this is not done
-always for backwards compatibility).
+always for backwards compatibility), and since it is meant for phrases
+only the text direction (and not the paragraph one) is set.
\New{3.44} As already said, captions and dates are not switched.
However, with the optional argument you can switch them, too. So, you
@@ -2586,8 +2586,9 @@ Currently used only in Southeast Asian scrips, like Thai. Ignored if 0
script. It sets the linebreaking and justification method, which can be
based on the the \textsc{arabic tatweel} character or in the
‘justification alternatives’ OpenType table (\texttt{jalt}). For an
-explanation see the \href{https://github.com/latex3/babel/blob/master/%
-news-guides/news/whats-new-in-babel-3.59.md}{\babel\ site}.
+explanation see the
+\href{https://latex3.github.io/babel/news/whats-new-in-babel-3.59.html}%
+ {\babel\ site}.
\Describe{linebreaking=}{}
\New{3.59} Just a synonymous for \texttt{justification}.
@@ -3087,8 +3088,7 @@ Spanish}{hyphen.repeat}{Explicit hyphens behave like
a non-syllabic preposition or conjunction into a non-breaking space.}
\trans{Greek}{diaeresis.hyphen}{Removes the diaeresis above iota and
-upsilon if hyphenated just before. It works with the
-three variants.}
+upsilon if hyphenated just before. It works with the three variants.}
\trans{Hindi, Sanskrit}{transliteration.hk}{The Harvard-Kyoto system to
romanize Devanagari.}
@@ -3101,6 +3101,10 @@ four characters: \textit{!?:;}\,.}
\textit{ssz}, \textit{tty} and \textit{zzs} as \textit{cs-cs},
\textit{dz-dz}, etc.}
+\trans{Indic scripts}{danda.nobreak}{Prevents a line break before a
+danda or double danda if there is a space. For Assamese, Bengali,
+Gujarati, Hindi, Kannada, Malayalam, Marathi, Oriya, Tamil, Telugu.}
+
\trans{Arabic, Persian}{kashida.plain}{Experimental. A very simple and
basic transform for ‘plain’ Arabic fonts, which attempts to distribute
the tatwil as evenly as possible (starting at the end of the line). See
@@ -3140,9 +3144,10 @@ This feature is activated with the first |\babelposthyphenation| or
|\babelprehyphenation|.
See the
-\href{https://github.com/latex3/babel/blob/master/news-guides/guides/non-standard-hyphenation-with-luatex.md}{\babel\
-site} for a more detailed description and some examples. It also
-describes a few additional replacement types (|string|, |penalty|).
+\href{https://latex3.github.io/babel/guides/%
+ non-standard-hyphenation-with-luatex.html}{\babel\ site} for a more
+detailed description and some examples. It also describes a few
+additional replacement types (|string|, |penalty|).
Although the main purpose of this command is non-standard hyphenation,
it may actually be used for other transformations (after hyphenation is
@@ -4226,7 +4231,7 @@ but if you want to do it, here are a few guidelines.
The following page provides a starting point for \texttt{ldf} files:
\texttt{http://www.texnia.com/incubator.html}. See also
-\texttt{https://github.com/latex3/babel/blob/master/news-guides/guides/list-of-locale-templates.md}.
+\texttt{https://latex3.github.io/babel/guides/list-of-locale-templates.html}.
If you need further assistance and technical advice in the
development of language styles, I am willing to help you. And of
@@ -4968,8 +4973,8 @@ help from Bernd Raichle, for which I am grateful.
% \section{Tools}
%
% \begin{macrocode}
-%<<version=3.60>>
-%<<date=2021/06/02>>
+%<<version=3.61>>
+%<<date=2021/06/28>>
% \end{macrocode}
%
% \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -5286,6 +5291,23 @@ help from Bernd Raichle, for which I am grateful.
\else
\expandafter\@firstofone
\fi}
+% \end{macrocode}
+%
+% The following adds some code to |\extras...| both before and after,
+% while avoiding doing it twice. It's somewhat convoluted, to deal with
+% |#|'s.
+%
+% \begin{macrocode}
+\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}
%<</Basic macros>>
% \end{macrocode}
%
@@ -5536,7 +5558,7 @@ help from Bernd Raichle, for which I am grateful.
\ifx\@empty#2%
\edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1}%
\else
- \in@{,provide,}{,#1,}%
+ \in@{,provide=}{,#1}%
\ifin@
\edef\bbl@tempc{%
\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1.\bbl@tempb#2}%
@@ -5569,7 +5591,7 @@ help from Bernd Raichle, for which I am grateful.
\DeclareOption{noconfigs}{}
\DeclareOption{showlanguages}{}
\DeclareOption{silent}{}
-\DeclareOption{mono}{}
+% \DeclareOption{mono}{}
\DeclareOption{shorthands=off}{\bbl@tempa shorthands=\bbl@tempa}
\chardef\bbl@iniflag\z@
\DeclareOption{provide=*}{\chardef\bbl@iniflag\@ne} % main -> +1
@@ -5597,6 +5619,7 @@ help from Bernd Raichle, for which I am grateful.
\let\bbl@opt@main\@nnil
\let\bbl@opt@headfoot\@nnil
\let\bbl@opt@layout\@nnil
+\let\bbl@opt@provide\@nnil
% \end{macrocode}
%
% The following tool is defined temporarily to store the values of
@@ -5639,6 +5662,16 @@ help from Bernd Raichle, for which I am grateful.
\ProcessOptions*
% \end{macrocode}
%
+% \begin{macrocode}
+\ifx\bbl@opt@provide\@nnil\else % Tests. Ignore.
+ \chardef\bbl@iniflag\@ne
+ \bbl@replace\bbl@opt@provide{;}{,}
+ \bbl@add\bbl@opt@provide{,import}
+ \show\bbl@opt@provide
+\fi
+%
+% \end{macrocode}
+%
% \subsection{Conditional loading of shorthands}
%
% If there is no |shorthands=<chars>|, the original \textsf{babel}
@@ -6798,23 +6831,6 @@ help from Bernd Raichle, for which I am grateful.
% \end{macrocode}%
% \end{macro}
%
-% Just to be compatible with \LaTeX$\:$2.09 we add a few more lines
-% of code. TODO. Necessary? Correct place? Used by some ldf file?
-%
-% \begin{macrocode}
-\ifx\@unexpandable@protect\@undefined
- \def\@unexpandable@protect{\noexpand\protect\noexpand}
- \long\def\protected@write#1#2#3{%
- \begingroup
- \let\thepage\relax
- #2%
- \let\protect\@unexpandable@protect
- \edef\reserved@a{\write#1{#3}}%
- \reserved@a
- \endgroup
- \if@nobreak\ifvmode\nobreak\fi\fi}
-\fi
-%
% \subsection{Language options}
%
% Languages are loaded when processing the corresponding option
@@ -7036,7 +7052,11 @@ help from Bernd Raichle, for which I am grateful.
\ifodd\bbl@iniflag % case 1,3
\bbl@ldfinit
\let\CurrentOption\bbl@opt@main
- \bbl@exp{\\\babelprovide[import,main]{\bbl@opt@main}}
+ \ifx\bbl@opt@provide\@nnil
+ \bbl@exp{\\\babelprovide[import,main]{\bbl@opt@main}}
+ \else
+ \bbl@exp{\\\babelprovide[\bbl@opt@provide,main]{\bbl@opt@main}}%
+ \fi
\bbl@afterldf{}%
\else % case 0,2
\chardef\bbl@iniflag\z@ % Force ldf
@@ -7498,6 +7518,13 @@ help from Bernd Raichle, for which I am grateful.
% We also write a command to change the current language in the
% auxiliary files.
%
+% |\bbl@savelastskip| is used to deal with skips before the write
+% whatsit (as suggested by U Fischer). Adapted from \textsf{hyperref},
+% but it might fail, so I'll consider it a temporary hack, while I
+% study other options (the ideal, but very likely unfeasible except
+% perhaps in \luatex, is to avoid the |\write| altogether when not
+% needed).
+%
% \begin{macrocode}
\def\BabelContentsFiles{toc,lof,lot}
\def\bbl@set@language#1{% from selectlanguage, pop@
@@ -7515,9 +7542,6 @@ help from Bernd Raichle, for which I am grateful.
macro containing the actual locale, make\\%
sure it does not not match any language.\\%
Reported}%
-% I'll\\%
-% try to fix '\string\localename', but I cannot promise\\%
-% anything. Reported}%
\ifx\scantokens\@undefined
\def\localename{??}%
\else
@@ -7533,16 +7557,15 @@ help from Bernd Raichle, for which I am grateful.
\expandafter\ifx\csname date\languagename\endcsname\relax\else
\if@filesw
\ifx\babel@aux\@gobbletwo\else % Set if single in the first, redundant
- % \bbl@savelastskip
+ \bbl@savelastskip
\protected@write\@auxout{}{\string\babel@aux{\bbl@auxname}{}}%
- % \bbl@restorelastskip
+ \bbl@restorelastskip
\fi
\bbl@usehooks{write}{}%
\fi
\fi}
-% The following is used above to deal with skips before the write
-% whatsit. Adapted from hyperref, but it might fail, so for the moment
-% it's not activated. TODO.
+%
+\let\bbl@restorelastskip\relax
\def\bbl@savelastskip{%
\let\bbl@restorelastskip\relax
\ifvmode
@@ -7555,6 +7578,7 @@ help from Bernd Raichle, for which I am grateful.
\\\nobreak \vskip-\skip@ \vskip\skip@}}%
\fi
\fi}
+%
\newif\ifbbl@bcpallowed
\bbl@bcpallowedfalse
\def\select@language#1{% from set@, babel@aux
@@ -8681,13 +8705,13 @@ help from Bernd Raichle, for which I am grateful.
% The very first thing to do is saving the original catcode and the
% original definition, even if not active, which is possible
% (undefined characters require a special treatement to avoid
-% making them |\relax|).
+% making them |\relax| and preserving some degree of protection).
%
% \begin{macrocode}
\def\@initiate@active@char#1#2#3{%
\bbl@csarg\edef{oricat@#2}{\catcode`#2=\the\catcode`#2\relax}%
\ifx#1\@undefined
- \bbl@csarg\edef{oridef@#2}{\let\noexpand#1\noexpand\@undefined}%
+ \bbl@csarg\def{oridef@#2}{\def#1{\active@prefix#1\@undefined}}%
\else
\bbl@csarg\let{oridef@@#2}#1%
\bbl@csarg\edef{oridef@#2}{%
@@ -9104,8 +9128,8 @@ help from Bernd Raichle, for which I am grateful.
#1%
\bbl@activate{#2}}%
{\bbl@error
- {Cannot declare a shorthand turned off (\string#2)}
- {Sorry, but you cannot use shorthands which have been\\%
+ {I can't declare a shorthand turned off (\string#2)}
+ {Sorry, but you can't use shorthands which have been\\%
turned off in the package options}}}
% \end{macrocode}
%
@@ -9624,6 +9648,29 @@ help from Bernd Raichle, for which I am grateful.
\bbl@elt{\string.}\@m{3000}\bbl@elt{\string?}\@m{3000}%
\bbl@elt{\string!}\@m{3000}\bbl@elt{\string:}\@m{2000}%
\bbl@elt{\string;}\@m{1500}\bbl@elt{\string,}\@m{1250}}
+\def\bbl@pre@fs{%
+ \def\bbl@elt##1##2##3{\sfcode`##1=\the\sfcode`##1\relax}%
+ \edef\bbl@save@sfcodes{\bbl@fs@chars}}%
+\def\bbl@post@fs{%
+ \bbl@save@sfcodes
+ \edef\bbl@tempa{\bbl@cl{frspc}}%
+ \edef\bbl@tempa{\expandafter\@car\bbl@tempa\@nil}%
+ \if u\bbl@tempa % do nothing
+ \else\if n\bbl@tempa % non french
+ \def\bbl@elt##1##2##3{%
+ \ifnum\sfcode`##1=##2\relax
+ \babel@savevariable{\sfcode`##1}%
+ \sfcode`##1=##3\relax
+ \fi}%
+ \bbl@fs@chars
+ \else\if y\bbl@tempa % french
+ \def\bbl@elt##1##2##3{%
+ \ifnum\sfcode`##1=##3\relax
+ \babel@savevariable{\sfcode`##1}%
+ \sfcode`##1=##2\relax
+ \fi}%
+ \bbl@fs@chars
+ \fi\fi\fi}
% \end{macrocode}
%
% \end{macro}
@@ -10799,13 +10846,14 @@ help from Bernd Raichle, for which I am grateful.
%
% \begin{macrocode}
\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}%
- % \global\@namedef{bbl@lcname@#2}{#2}%
\bbl@id@assign
+ % Initialize keys
\let\bbl@KVP@captions\@nil
\let\bbl@KVP@date\@nil
\let\bbl@KVP@import\@nil
@@ -10828,27 +10876,34 @@ help from Bernd Raichle, for which I am grateful.
\let\bbl@KVP@labels\@nil
\bbl@csarg\let{KVP@labels*}\@nil
\global\let\bbl@inidata\@empty
+ \global\let\bbl@extend@ini\@gobble
+ \gdef\bbl@key@list{;}%
\bbl@forkv{#1}{% TODO - error handling
\in@{/}{##1}%
\ifin@
+ \global\let\bbl@extend@ini\bbl@extend@ini@aux
\bbl@renewinikey##1\@@{##2}%
\else
\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
% ==
\let\bbl@lbkflag\relax % \@empty = do setup linebreak
- \bbl@ifunset{date#2}%
- {\let\bbl@lbkflag\@empty}% new
- {\ifx\bbl@KVP@hyphenrules\@nil\else
- \let\bbl@lbkflag\@empty
- \fi
- \ifx\bbl@KVP@import\@nil\else
+ \ifcase\bbl@howloaded
+ \let\bbl@lbkflag\@empty % new
+ \else
+ \ifx\bbl@KVP@hyphenrules\@nil\else
\let\bbl@lbkflag\@empty
- \fi}%
+ \fi
+ \ifx\bbl@KVP@import\@nil\else
+ \let\bbl@lbkflag\@empty
+ \fi
+ \fi
% == import, captions ==
\ifx\bbl@KVP@import\@nil\else
\bbl@exp{\\\bbl@ifblank{\bbl@KVP@import}}%
@@ -10870,13 +10925,19 @@ help from Bernd Raichle, for which I am grateful.
\bbl@replace\bbl@KVP@transforms{ }{,}%
\fi
% Load ini
- \bbl@ifunset{date#2}%
- {\bbl@provide@new{#2}}%
- {\bbl@ifblank{#1}%
+ \ifcase\bbl@howloaded
+ \bbl@provide@new{#2}%
+ \else
+ \bbl@ifblank{#1}%
{}% With \bbl@load@basic below
- {\bbl@provide@renew{#2}}}%
+ {\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\@nil\else
\bbl@ifunset{bbl@extracaps@#2}%
@@ -10995,7 +11056,7 @@ help from Bernd Raichle, for which I am grateful.
\bbl@csarg\edef{intsp@#2}{\bbl@KVP@intraspace}%
\fi
\bbl@provide@intraspace
- %
+ % == Line breaking: justification ==
\ifx\bbl@KVP@justification\@nil\else
\let\bbl@KVP@linebreaking\bbl@KVP@justification
\fi
@@ -11009,7 +11070,7 @@ help from Bernd Raichle, for which I am grateful.
\bbl@xin@{/e}{/\bbl@cl{lnbrk}}%
\ifin@\else\bbl@xin@{/k}{/\bbl@cl{lnbrk}}\fi
\ifin@\bbl@arabicjust\fi
- % == Line breaking: hyphenate.other.locale/.script==
+ % == Line breaking: hyphenate.other.(locale|script) ==
\ifx\bbl@lbkflag\@empty
\bbl@ifunset{bbl@hyotl@\languagename}{}%
{\bbl@csarg\bbl@replace{hyotl@\languagename}{ }{,}%
@@ -11094,25 +11155,21 @@ help from Bernd Raichle, for which I am grateful.
% restored correctly when exiting the language, so we ignore
% this change with the \bbl@alph@saved trick.
\ifx\bbl@KVP@alph\@nil\else
- \toks@\expandafter\expandafter\expandafter{%
- \csname extras\languagename\endcsname}%
+ \bbl@extras@wrap{\\\bbl@alph@saved}%
+ {\let\bbl@alph@saved\@alph}%
+ {\let\@alph\bbl@alph@saved
+ \babel@save\@alph}%
\bbl@exp{%
- \def\<extras\languagename>{%
- \let\\\bbl@alph@saved\\\@alph
- \the\toks@
- \let\\\@alph\\\bbl@alph@saved
- \\\babel@save\\\@alph
+ \\\bbl@add\<extras\languagename>{%
\let\\\@alph\<bbl@cntr@\bbl@KVP@alph @\languagename>}}%
\fi
\ifx\bbl@KVP@Alph\@nil\else
- \toks@\expandafter\expandafter\expandafter{%
- \csname extras\languagename\endcsname}%
+ \bbl@extras@wrap{\\\bbl@Alph@saved}%
+ {\let\bbl@Alph@saved\@Alph}%
+ {\let\@Alph\bbl@Alph@saved
+ \babel@save\@Alph}%
\bbl@exp{%
- \def\<extras\languagename>{%
- \let\\\bbl@Alph@saved\\\@Alph
- \the\toks@
- \let\\\@Alph\\\bbl@Alph@saved
- \\\babel@save\\\@Alph
+ \\\bbl@add\<extras\languagename>{%
\let\\\@Alph\<bbl@cntr@\bbl@KVP@Alph @\languagename>}}%
\fi
% == require.babel in ini ==
@@ -11126,8 +11183,17 @@ help from Bernd Raichle, for which I am grateful.
\bbl@input@texini{\bbl@cs{rqtex@\languagename}}%
\catcode`\@=\atcatcode
\let\atcatcode\relax
+ \global\bbl@csarg\let{rqtex@\languagename}\relax
\fi}%
\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
% == Release saved transforms ==
\bbl@release@transforms\relax % \relax closes the last item.
% == main ==
@@ -11137,7 +11203,9 @@ help from Bernd Raichle, for which I am grateful.
\fi}
% \end{macrocode}
%
-% Depending on whether or not the language exists, we define two macros.
+% Depending on whether or not the language exists (based on
+% |\date<language>|), we define two macros. Remember
+% |\bbl@startcommands| opens a group.
%
% \begin{macrocode}
\def\bbl@provide@new#1{%
@@ -11176,37 +11244,11 @@ help from Bernd Raichle, for which I am grateful.
\gdef\<#1hyphenmins>{%
{\bbl@ifunset{bbl@lfthm@#1}{2}{\bbl@cs{lfthm@#1}}}%
{\bbl@ifunset{bbl@rgthm@#1}{3}{\bbl@cs{rgthm@#1}}}}}%
- % == hyphenrules ==
+ % == hyphenrules (also in renew) ==
\bbl@provide@hyphens{#1}%
- % == frenchspacing == (only if new)
- \bbl@ifunset{bbl@frspc@#1}{}%
- {\edef\bbl@tempa{\bbl@cl{frspc}}%
- \edef\bbl@tempa{\expandafter\@car\bbl@tempa\@nil}%
- \if u\bbl@tempa % do nothing
- \else\if n\bbl@tempa % non french
- \expandafter\bbl@add\csname extras#1\endcsname{%
- \let\bbl@elt\bbl@fs@elt@i
- \bbl@fs@chars}%
- \else\if y\bbl@tempa % french
- \expandafter\bbl@add\csname extras#1\endcsname{%
- \let\bbl@elt\bbl@fs@elt@ii
- \bbl@fs@chars}%
- \fi\fi\fi}%
- %
\ifx\bbl@KVP@main\@nil\else
\expandafter\main@language\expandafter{#1}%
\fi}
-% A couple of macros used above, to avoid hashes #######...
-\def\bbl@fs@elt@i#1#2#3{%
- \ifnum\sfcode`#1=#2\relax
- \babel@savevariable{\sfcode`#1}%
- \sfcode`#1=#3\relax
- \fi}%
-\def\bbl@fs@elt@ii#1#2#3{%
- \ifnum\sfcode`#1=#3\relax
- \babel@savevariable{\sfcode`#1}%
- \sfcode`#1=#2\relax
- \fi}%
%
\def\bbl@provide@renew#1{%
\ifx\bbl@KVP@captions\@nil\else
@@ -11220,7 +11262,7 @@ help from Bernd Raichle, for which I am grateful.
\bbl@savedate
\EndBabelCommands
\fi
- % == hyphenrules ==
+ % == hyphenrules (also in new) ==
\ifx\bbl@lbkflag\@empty
\bbl@provide@hyphens{#1}%
\fi}
@@ -11233,11 +11275,11 @@ help from Bernd Raichle, for which I am grateful.
%
% \begin{macrocode}
\def\bbl@load@basic#1{%
- \bbl@ifunset{bbl@inidata@\languagename}{}%
- {\getlocaleproperty\bbl@tempa{\languagename}{identification/load.level}%
- \ifcase\bbl@tempa
- \bbl@csarg\let{lname@\languagename}\relax
- \fi}%
+ \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
@@ -11320,16 +11362,17 @@ help from Bernd Raichle, for which I am grateful.
% \begin{macrocode}
\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@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@ifunset{bbl@KVP@\bbl@section/\bbl@tempa}%
- {\bbl@exp{%
+ \bbl@xin@{;\bbl@section/\bbl@tempa;}{\bbl@key@list}%
+ \ifin@\else
+ \bbl@exp{%
\\\g@addto@macro\\\bbl@inidata{%
- \\\bbl@elt{\bbl@section}{\bbl@tempa}{\the\toks@}}}}%
- {}}%
+ \\\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}%
@@ -11337,7 +11380,7 @@ help from Bernd Raichle, for which I am grateful.
\ifin@
\bbl@exp{\\\g@addto@macro\\\bbl@inidata{%
\\\bbl@elt{identification}{\bbl@tempa}{\the\toks@}}}%
- \fi}%
+ \fi}
% \end{macrocode}
%
% Now, the ‘main loop’, which \textbf{**must be executed inside a
@@ -11355,6 +11398,7 @@ help from Bernd Raichle, for which I am grateful.
\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
@@ -11363,7 +11407,7 @@ help from Bernd Raichle, for which I am grateful.
is not complete.}%
{Fix the name or reinstall babel.}%
\else
- % Store ini data in \bbl@inidata
+ % == 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
@@ -11386,28 +11430,62 @@ help from Bernd Raichle, for which I am grateful.
\expandafter\bbl@iniline\bbl@line\bbl@iniline
\fi
\repeat
- % Process stored data
+ % == Process stored data ==
\bbl@csarg\xdef{lini@\languagename}{#1}%
- \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@ini@calendar{##1}%
- \fi
- \global\bbl@csarg\let{bbl@KVP@##1/##2}\relax
- \bbl@ifunset{bbl@inikv@##1}{}%
- {\csname bbl@inikv@##1\endcsname{##2}{##3}}}%
- \bbl@inidata
- % 'Export' data
+ \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}
+\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@ini@calendar{##1}%
+ \fi
+ \bbl@ifunset{bbl@inikv@##1}{}%
+ {\csname bbl@inikv@##1\endcsname{##2}{##3}}}%
+ \bbl@inidata}
+% \end{macrocode}
+%
+% A variant to be used when the ini file has been already loaded,
+% because it's not the first |\babelprovide| for this language.
+%
+% \begin{macrocode}
+\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}
% \end{macrocode}
%
% A somewhat hackish tool to handle calendar sections. To be improved.
@@ -11447,7 +11525,7 @@ help from Bernd Raichle, for which I am grateful.
\edef\bbl@tempb{\zap@space #2 \@empty}% key
\bbl@trim\toks@{#3}% value
\bbl@exp{%
- \global\let\<bbl@KVP@\bbl@tempa/\bbl@tempb>\\\@empty % just a flag
+ \edef\\\bbl@key@list{\bbl@key@list \bbl@tempa/\bbl@tempb;}%
\\\g@addto@macro\\\bbl@inidata{%
\\\bbl@elt{\bbl@tempa}{\bbl@tempb}{\the\toks@}}}}%
% \end{macrocode}
@@ -11492,6 +11570,7 @@ help from Bernd Raichle, for which I am grateful.
\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}}%
@@ -11517,9 +11596,9 @@ help from Bernd Raichle, for which I am grateful.
\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{dgnat}{numbers.digits.native}{}%
- \bbl@exportkey{frspc}{typography.frenchspacing}{u}%
\ifnum#1=\tw@ % only (re)new
\bbl@exportkey{rqtex}{identification.require.babel}{}%
\bbl@toglobal\bbl@savetoday
@@ -11692,6 +11771,7 @@ help from Bernd Raichle, for which I am grateful.
\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>%
@@ -11794,9 +11874,7 @@ help from Bernd Raichle, for which I am grateful.
\bbl@trim@def\bbl@toreplace{#5}%
\bbl@TG@@date
\bbl@ifunset{bbl@date@\languagename @}%
- {\global\bbl@csarg\let{date@\languagename @}\bbl@toreplace
- % TODO. Move to a better place.
- \bbl@exp{%
+ {\bbl@exp{% TODO. Move to a better place.
\gdef\<\languagename date>{\\\protect\<\languagename date >}%
\gdef\<\languagename date >####1####2####3{%
\\\bbl@usedategrouptrue
@@ -11804,9 +11882,10 @@ help from Bernd Raichle, for which I am grateful.
\\\localedate{####1}{####2}{####3}}}%
\\\bbl@add\\\bbl@savetoday{%
\\\SetString\\\today{%
- \<\languagename date>%
+ \<\languagename date>%
{\\\the\year}{\\\the\month}{\\\the\day}}}}}%
- {}%
+ {}%
+ \global\bbl@csarg\let{date@\languagename @}\bbl@toreplace
\ifx\bbl@tempb\@empty\else
\global\bbl@csarg\let{date@\languagename @\bbl@tempb}\bbl@toreplace
\fi}%
@@ -13024,6 +13103,7 @@ help from Bernd Raichle, for which I am grateful.
\expandafter\bbl@intrapenalty\bbl@KVP@intrapenalty\@@
\fi
\bbl@exp{%
+ % TODO. Execute only once (but redundant):
\\\bbl@add\<extras\languagename>{%
\XeTeXlinebreaklocale "\bbl@cl{tbcp}"%
\<bbl@xeisp@\languagename>%
@@ -13783,8 +13863,8 @@ help from Bernd Raichle, for which I am grateful.
Babel.arabic.elong_map[\the\localeid] = {}
luatexbase.add_to_callback('post_linebreak_filter',
Babel.arabic.justify, 'Babel.arabic.justify')
-% luatexbase.add_to_callback('hpack_filter',
-% Babel.arabic.justify_hbox, 'Babel.arabic.justify_hbox')
+ luatexbase.add_to_callback('hpack_filter',
+ Babel.arabic.justify_hbox, 'Babel.arabic.justify_hbox')
}}%
% Save both node lists to make replacement. TODO. Save also widths to
% make computations
@@ -13862,8 +13942,14 @@ function Babel.arabic.justify(head)
end
function Babel.arabic.justify_hbox(head, gc, size, pack)
+ local has_inf = false
if Babel.arabic.justify_enabled and pack == 'exactly' then
- Babel.arabic.justify_hlist(head, nil, gc, size, pack)
+ for n in node.traverse_id(12, head) do
+ if n.stretch_order > 0 then has_inf = true end
+ end
+ if not has_inf then
+ Babel.arabic.justify_hlist(head, nil, gc, size, pack)
+ end
end
return head
end
diff --git a/Master/texmf-dist/source/latex/babel/babel.ins b/Master/texmf-dist/source/latex/babel/babel.ins
index 448f711c9eb..feea6e0da7e 100644
--- a/Master/texmf-dist/source/latex/babel/babel.ins
+++ b/Master/texmf-dist/source/latex/babel/babel.ins
@@ -26,7 +26,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%
-\def\filedate{2021/06/02}
+\def\filedate{2021/06/28}
\def\batchfile{babel.ins}
\input docstrip.tex
diff --git a/Master/texmf-dist/source/latex/babel/bbcompat.dtx b/Master/texmf-dist/source/latex/babel/bbcompat.dtx
index 601f524b83e..7500615da15 100644
--- a/Master/texmf-dist/source/latex/babel/bbcompat.dtx
+++ b/Master/texmf-dist/source/latex/babel/bbcompat.dtx
@@ -30,7 +30,7 @@
%
% \iffalse
%<*dtx>
-\ProvidesFile{bbcompat.dtx}[2021/06/02 v3.60]
+\ProvidesFile{bbcompat.dtx}[2021/06/28 v3.61]
%</dtx>
%
%% File 'bbcompat.dtx'
diff --git a/Master/texmf-dist/source/latex/babel/locale.zip b/Master/texmf-dist/source/latex/babel/locale.zip
index 47963bdfefd..060eed17afa 100644
--- a/Master/texmf-dist/source/latex/babel/locale.zip
+++ b/Master/texmf-dist/source/latex/babel/locale.zip
Binary files differ
diff --git a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua
index e562be97d57..ba2f05c10ea 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua
+++ b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic-r.lua
@@ -12,6 +12,7 @@
-- any individual authors listed elsewhere in this file.
-- All rights reserved.
--
+--
-- This file is part of the Babel system.
-- --------------------------------------
--
@@ -26,7 +27,6 @@
-- This work has the LPPL maintenance status "maintained".
--
-- The Current Maintainer of this work is Javier Bezos.
-
--
-- The list of derived (unpacked) files belonging to the distribution
-- and covered by LPPL is defined by the unpacking scripts (with
diff --git a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua
index a4302d0d7f0..cd41ee15ad4 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua
+++ b/Master/texmf-dist/tex/generic/babel/babel-bidi-basic.lua
@@ -12,6 +12,7 @@
-- any individual authors listed elsewhere in this file.
-- All rights reserved.
--
+--
-- This file is part of the Babel system.
-- --------------------------------------
--
@@ -26,7 +27,6 @@
-- This work has the LPPL maintenance status "maintained".
--
-- The Current Maintainer of this work is Javier Bezos.
-
--
-- The list of derived (unpacked) files belonging to the distribution
-- and covered by LPPL is defined by the unpacking scripts (with
diff --git a/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua b/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua
index a24e48245db..3e69d2516ca 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua
+++ b/Master/texmf-dist/tex/generic/babel/babel-data-bidi.lua
@@ -12,6 +12,7 @@
-- any individual authors listed elsewhere in this file.
-- All rights reserved.
--
+--
-- This file is part of the Babel system.
-- --------------------------------------
--
@@ -26,7 +27,6 @@
-- This work has the LPPL maintenance status "maintained".
--
-- The Current Maintainer of this work is Javier Bezos.
-
--
-- The list of derived (unpacked) files belonging to the distribution
-- and covered by LPPL is defined by the unpacking scripts (with
diff --git a/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua b/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua
index c02fede6613..2c1b2645138 100644
--- a/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua
+++ b/Master/texmf-dist/tex/generic/babel/babel-data-cjk.lua
@@ -12,6 +12,7 @@
-- any individual authors listed elsewhere in this file.
-- All rights reserved.
--
+--
-- This file is part of the Babel system.
-- --------------------------------------
--
@@ -26,7 +27,6 @@
-- This work has the LPPL maintenance status "maintained".
--
-- The Current Maintainer of this work is Javier Bezos.
-
--
-- The list of derived (unpacked) files belonging to the distribution
-- and covered by LPPL is defined by the unpacking scripts (with
diff --git a/Master/texmf-dist/tex/generic/babel/babel.def b/Master/texmf-dist/tex/generic/babel/babel.def
index 4424be14a61..9797455fe42 100644
--- a/Master/texmf-dist/tex/generic/babel/babel.def
+++ b/Master/texmf-dist/tex/generic/babel/babel.def
@@ -12,6 +12,7 @@
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
%%
+%%
%% This file is part of the Babel system.
%% --------------------------------------
%%
@@ -26,7 +27,6 @@
%% This work has the LPPL maintenance status "maintained".
%%
%% The Current Maintainer of this work is Javier Bezos.
-
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
@@ -40,7 +40,7 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{babel.def}[2021/06/02 3.60 Babel common definitions]
+\ProvidesFile{babel.def}[2021/06/28 3.61 Babel common definitions]
\ifx\AtBeginDocument\@undefined % TODO. change test.
% == Code for plain ==
\def\@empty{}
@@ -398,8 +398,8 @@
\fi
\countdef\last@language=19 % TODO. why? remove?
\def\addlanguage{\csname newlanguage\endcsname}
-\def\bbl@version{3.60}
-\def\bbl@date{2021/06/02}
+\def\bbl@version{3.61}
+\def\bbl@date{2021/06/28}
\def\adddialect#1#2{%
\global\chardef#1#2\relax
\bbl@usehooks{adddialect}{{#1}{#2}}%
@@ -587,13 +587,14 @@
\expandafter\ifx\csname date\languagename\endcsname\relax\else
\if@filesw
\ifx\babel@aux\@gobbletwo\else % Set if single in the first, redundant
- % \bbl@savelastskip
+ \bbl@savelastskip
\protected@write\@auxout{}{\string\babel@aux{\bbl@auxname}{}}%
- % \bbl@restorelastskip
+ \bbl@restorelastskip
\fi
\bbl@usehooks{write}{}%
\fi
\fi}
+\let\bbl@restorelastskip\relax
\def\bbl@savelastskip{%
\let\bbl@restorelastskip\relax
\ifvmode
@@ -1093,6 +1094,16 @@
\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
@@ -1363,7 +1374,7 @@
\def\@initiate@active@char#1#2#3{%
\bbl@csarg\edef{oricat@#2}{\catcode`#2=\the\catcode`#2\relax}%
\ifx#1\@undefined
- \bbl@csarg\edef{oridef@#2}{\let\noexpand#1\noexpand\@undefined}%
+ \bbl@csarg\def{oridef@#2}{\def#1{\active@prefix#1\@undefined}}%
\else
\bbl@csarg\let{oridef@@#2}#1%
\bbl@csarg\edef{oridef@#2}{%
@@ -1541,8 +1552,8 @@
#1%
\bbl@activate{#2}}%
{\bbl@error
- {Cannot declare a shorthand turned off (\string#2)}
- {Sorry, but you cannot use shorthands which have been\\%
+ {I can't declare a shorthand turned off (\string#2)}
+ {Sorry, but you can't use shorthands which have been\\%
turned off in the package options}}}
\def\user@language@group{user@\language@group}
\def\bbl@set@user@generic#1#2{%
@@ -1767,6 +1778,29 @@
\bbl@elt{\string.}\@m{3000}\bbl@elt{\string?}\@m{3000}%
\bbl@elt{\string!}\@m{3000}\bbl@elt{\string:}\@m{2000}%
\bbl@elt{\string;}\@m{1500}\bbl@elt{\string,}\@m{1250}}
+\def\bbl@pre@fs{%
+ \def\bbl@elt##1##2##3{\sfcode`##1=\the\sfcode`##1\relax}%
+ \edef\bbl@save@sfcodes{\bbl@fs@chars}}%
+\def\bbl@post@fs{%
+ \bbl@save@sfcodes
+ \edef\bbl@tempa{\bbl@cl{frspc}}%
+ \edef\bbl@tempa{\expandafter\@car\bbl@tempa\@nil}%
+ \if u\bbl@tempa % do nothing
+ \else\if n\bbl@tempa % non french
+ \def\bbl@elt##1##2##3{%
+ \ifnum\sfcode`##1=##2\relax
+ \babel@savevariable{\sfcode`##1}%
+ \sfcode`##1=##3\relax
+ \fi}%
+ \bbl@fs@chars
+ \else\if y\bbl@tempa % french
+ \def\bbl@elt##1##2##3{%
+ \ifnum\sfcode`##1=##3\relax
+ \babel@savevariable{\sfcode`##1}%
+ \sfcode`##1=##2\relax
+ \fi}%
+ \bbl@fs@chars
+ \fi\fi\fi}
\bbl@trace{Short tags}
\def\babeltags#1{%
\edef\bbl@tempa{\zap@space#1 \@empty}%
@@ -2347,13 +2381,14 @@
\input xebabel.def
\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}%
- % \global\@namedef{bbl@lcname@#2}{#2}%
\bbl@id@assign
+ % Initialize keys
\let\bbl@KVP@captions\@nil
\let\bbl@KVP@date\@nil
\let\bbl@KVP@import\@nil
@@ -2376,27 +2411,34 @@
\let\bbl@KVP@labels\@nil
\bbl@csarg\let{KVP@labels*}\@nil
\global\let\bbl@inidata\@empty
+ \global\let\bbl@extend@ini\@gobble
+ \gdef\bbl@key@list{;}%
\bbl@forkv{#1}{% TODO - error handling
\in@{/}{##1}%
\ifin@
+ \global\let\bbl@extend@ini\bbl@extend@ini@aux
\bbl@renewinikey##1\@@{##2}%
\else
\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
% ==
\let\bbl@lbkflag\relax % \@empty = do setup linebreak
- \bbl@ifunset{date#2}%
- {\let\bbl@lbkflag\@empty}% new
- {\ifx\bbl@KVP@hyphenrules\@nil\else
- \let\bbl@lbkflag\@empty
- \fi
- \ifx\bbl@KVP@import\@nil\else
+ \ifcase\bbl@howloaded
+ \let\bbl@lbkflag\@empty % new
+ \else
+ \ifx\bbl@KVP@hyphenrules\@nil\else
\let\bbl@lbkflag\@empty
- \fi}%
+ \fi
+ \ifx\bbl@KVP@import\@nil\else
+ \let\bbl@lbkflag\@empty
+ \fi
+ \fi
% == import, captions ==
\ifx\bbl@KVP@import\@nil\else
\bbl@exp{\\\bbl@ifblank{\bbl@KVP@import}}%
@@ -2418,13 +2460,19 @@
\bbl@replace\bbl@KVP@transforms{ }{,}%
\fi
% Load ini
- \bbl@ifunset{date#2}%
- {\bbl@provide@new{#2}}%
- {\bbl@ifblank{#1}%
+ \ifcase\bbl@howloaded
+ \bbl@provide@new{#2}%
+ \else
+ \bbl@ifblank{#1}%
{}% With \bbl@load@basic below
- {\bbl@provide@renew{#2}}}%
+ {\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\@nil\else
\bbl@ifunset{bbl@extracaps@#2}%
@@ -2543,7 +2591,7 @@
\bbl@csarg\edef{intsp@#2}{\bbl@KVP@intraspace}%
\fi
\bbl@provide@intraspace
- %
+ % == Line breaking: justification ==
\ifx\bbl@KVP@justification\@nil\else
\let\bbl@KVP@linebreaking\bbl@KVP@justification
\fi
@@ -2557,7 +2605,7 @@
\bbl@xin@{/e}{/\bbl@cl{lnbrk}}%
\ifin@\else\bbl@xin@{/k}{/\bbl@cl{lnbrk}}\fi
\ifin@\bbl@arabicjust\fi
- % == Line breaking: hyphenate.other.locale/.script==
+ % == Line breaking: hyphenate.other.(locale|script) ==
\ifx\bbl@lbkflag\@empty
\bbl@ifunset{bbl@hyotl@\languagename}{}%
{\bbl@csarg\bbl@replace{hyotl@\languagename}{ }{,}%
@@ -2642,25 +2690,21 @@
% restored correctly when exiting the language, so we ignore
% this change with the \bbl@alph@saved trick.
\ifx\bbl@KVP@alph\@nil\else
- \toks@\expandafter\expandafter\expandafter{%
- \csname extras\languagename\endcsname}%
+ \bbl@extras@wrap{\\\bbl@alph@saved}%
+ {\let\bbl@alph@saved\@alph}%
+ {\let\@alph\bbl@alph@saved
+ \babel@save\@alph}%
\bbl@exp{%
- \def\<extras\languagename>{%
- \let\\\bbl@alph@saved\\\@alph
- \the\toks@
- \let\\\@alph\\\bbl@alph@saved
- \\\babel@save\\\@alph
+ \\\bbl@add\<extras\languagename>{%
\let\\\@alph\<bbl@cntr@\bbl@KVP@alph @\languagename>}}%
\fi
\ifx\bbl@KVP@Alph\@nil\else
- \toks@\expandafter\expandafter\expandafter{%
- \csname extras\languagename\endcsname}%
+ \bbl@extras@wrap{\\\bbl@Alph@saved}%
+ {\let\bbl@Alph@saved\@Alph}%
+ {\let\@Alph\bbl@Alph@saved
+ \babel@save\@Alph}%
\bbl@exp{%
- \def\<extras\languagename>{%
- \let\\\bbl@Alph@saved\\\@Alph
- \the\toks@
- \let\\\@Alph\\\bbl@Alph@saved
- \\\babel@save\\\@Alph
+ \\\bbl@add\<extras\languagename>{%
\let\\\@Alph\<bbl@cntr@\bbl@KVP@Alph @\languagename>}}%
\fi
% == require.babel in ini ==
@@ -2674,8 +2718,17 @@
\bbl@input@texini{\bbl@cs{rqtex@\languagename}}%
\catcode`\@=\atcatcode
\let\atcatcode\relax
+ \global\bbl@csarg\let{rqtex@\languagename}\relax
\fi}%
\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
% == Release saved transforms ==
\bbl@release@transforms\relax % \relax closes the last item.
% == main ==
@@ -2719,36 +2772,11 @@
\gdef\<#1hyphenmins>{%
{\bbl@ifunset{bbl@lfthm@#1}{2}{\bbl@cs{lfthm@#1}}}%
{\bbl@ifunset{bbl@rgthm@#1}{3}{\bbl@cs{rgthm@#1}}}}}%
- % == hyphenrules ==
+ % == hyphenrules (also in renew) ==
\bbl@provide@hyphens{#1}%
- % == frenchspacing == (only if new)
- \bbl@ifunset{bbl@frspc@#1}{}%
- {\edef\bbl@tempa{\bbl@cl{frspc}}%
- \edef\bbl@tempa{\expandafter\@car\bbl@tempa\@nil}%
- \if u\bbl@tempa % do nothing
- \else\if n\bbl@tempa % non french
- \expandafter\bbl@add\csname extras#1\endcsname{%
- \let\bbl@elt\bbl@fs@elt@i
- \bbl@fs@chars}%
- \else\if y\bbl@tempa % french
- \expandafter\bbl@add\csname extras#1\endcsname{%
- \let\bbl@elt\bbl@fs@elt@ii
- \bbl@fs@chars}%
- \fi\fi\fi}%
- %
\ifx\bbl@KVP@main\@nil\else
\expandafter\main@language\expandafter{#1}%
\fi}
-\def\bbl@fs@elt@i#1#2#3{%
- \ifnum\sfcode`#1=#2\relax
- \babel@savevariable{\sfcode`#1}%
- \sfcode`#1=#3\relax
- \fi}%
-\def\bbl@fs@elt@ii#1#2#3{%
- \ifnum\sfcode`#1=#3\relax
- \babel@savevariable{\sfcode`#1}%
- \sfcode`#1=#2\relax
- \fi}%
\def\bbl@provide@renew#1{%
\ifx\bbl@KVP@captions\@nil\else
\StartBabelCommands*{#1}{captions}%
@@ -2761,16 +2789,16 @@
\bbl@savedate
\EndBabelCommands
\fi
- % == hyphenrules ==
+ % == hyphenrules (also in new) ==
\ifx\bbl@lbkflag\@empty
\bbl@provide@hyphens{#1}%
\fi}
\def\bbl@load@basic#1{%
- \bbl@ifunset{bbl@inidata@\languagename}{}%
- {\getlocaleproperty\bbl@tempa{\languagename}{identification/load.level}%
- \ifcase\bbl@tempa
- \bbl@csarg\let{lname@\languagename}\relax
- \fi}%
+ \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
@@ -2834,16 +2862,17 @@
\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@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@ifunset{bbl@KVP@\bbl@section/\bbl@tempa}%
- {\bbl@exp{%
+ \bbl@xin@{;\bbl@section/\bbl@tempa;}{\bbl@key@list}%
+ \ifin@\else
+ \bbl@exp{%
\\\g@addto@macro\\\bbl@inidata{%
- \\\bbl@elt{\bbl@section}{\bbl@tempa}{\the\toks@}}}}%
- {}}%
+ \\\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}%
@@ -2851,11 +2880,12 @@
\ifin@
\bbl@exp{\\\g@addto@macro\\\bbl@inidata{%
\\\bbl@elt{identification}{\bbl@tempa}{\the\toks@}}}%
- \fi}%
+ \fi}
\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
@@ -2864,7 +2894,7 @@
is not complete.}%
{Fix the name or reinstall babel.}%
\else
- % Store ini data in \bbl@inidata
+ % == 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
@@ -2887,28 +2917,56 @@
\expandafter\bbl@iniline\bbl@line\bbl@iniline
\fi
\repeat
- % Process stored data
+ % == Process stored data ==
\bbl@csarg\xdef{lini@\languagename}{#1}%
- \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@ini@calendar{##1}%
- \fi
- \global\bbl@csarg\let{bbl@KVP@##1/##2}\relax
- \bbl@ifunset{bbl@inikv@##1}{}%
- {\csname bbl@inikv@##1\endcsname{##2}{##3}}}%
- \bbl@inidata
- % 'Export' data
+ \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}
+\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@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}{}%
@@ -2932,7 +2990,7 @@
\edef\bbl@tempb{\zap@space #2 \@empty}% key
\bbl@trim\toks@{#3}% value
\bbl@exp{%
- \global\let\<bbl@KVP@\bbl@tempa/\bbl@tempb>\\\@empty % just a flag
+ \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{%
@@ -2960,6 +3018,7 @@
\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}}%
@@ -2985,9 +3044,9 @@
\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{dgnat}{numbers.digits.native}{}%
- \bbl@exportkey{frspc}{typography.frenchspacing}{u}%
\ifnum#1=\tw@ % only (re)new
\bbl@exportkey{rqtex}{identification.require.babel}{}%
\bbl@toglobal\bbl@savetoday
@@ -3121,6 +3180,7 @@
\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>%
@@ -3207,9 +3267,7 @@
\bbl@trim@def\bbl@toreplace{#5}%
\bbl@TG@@date
\bbl@ifunset{bbl@date@\languagename @}%
- {\global\bbl@csarg\let{date@\languagename @}\bbl@toreplace
- % TODO. Move to a better place.
- \bbl@exp{%
+ {\bbl@exp{% TODO. Move to a better place.
\gdef\<\languagename date>{\\\protect\<\languagename date >}%
\gdef\<\languagename date >####1####2####3{%
\\\bbl@usedategrouptrue
@@ -3220,6 +3278,7 @@
\<\languagename date>%
{\\\the\year}{\\\the\month}{\\\the\day}}}}}%
{}%
+ \global\bbl@csarg\let{date@\languagename @}\bbl@toreplace
\ifx\bbl@tempb\@empty\else
\global\bbl@csarg\let{date@\languagename @\bbl@tempb}\bbl@toreplace
\fi}%
diff --git a/Master/texmf-dist/tex/generic/babel/babel.sty b/Master/texmf-dist/tex/generic/babel/babel.sty
index 360f73acce6..bdf21cb3358 100644
--- a/Master/texmf-dist/tex/generic/babel/babel.sty
+++ b/Master/texmf-dist/tex/generic/babel/babel.sty
@@ -12,6 +12,7 @@
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
%%
+%%
%% This file is part of the Babel system.
%% --------------------------------------
%%
@@ -26,7 +27,6 @@
%% This work has the LPPL maintenance status "maintained".
%%
%% The Current Maintainer of this work is Javier Bezos.
-
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
@@ -34,7 +34,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{babel}[2021/06/02 3.60 The Babel package]
+\ProvidesPackage{babel}[2021/06/28 3.61 The Babel package]
\@ifpackagewith{babel}{debug}
{\providecommand\bbl@trace[1]{\message{^^J[ #1 ]}}%
\let\bbl@debug\@firstofone
@@ -217,6 +217,16 @@
\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}
% Temporarily repeat here the code for errors. TODO.
\def\bbl@error#1#2{%
\begingroup
@@ -326,7 +336,7 @@
\ifx\@empty#2%
\edef\bbl@tempc{\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1}%
\else
- \in@{,provide,}{,#1,}%
+ \in@{,provide=}{,#1}%
\ifin@
\edef\bbl@tempc{%
\ifx\bbl@tempc\@empty\else\bbl@tempc,\fi#1.\bbl@tempb#2}%
@@ -350,7 +360,6 @@
\DeclareOption{noconfigs}{}
\DeclareOption{showlanguages}{}
\DeclareOption{silent}{}
-\DeclareOption{mono}{}
\DeclareOption{shorthands=off}{\bbl@tempa shorthands=\bbl@tempa}
\chardef\bbl@iniflag\z@
\DeclareOption{provide=*}{\chardef\bbl@iniflag\@ne} % main -> +1
@@ -387,6 +396,7 @@
\let\bbl@opt@main\@nnil
\let\bbl@opt@headfoot\@nnil
\let\bbl@opt@layout\@nnil
+\let\bbl@opt@provide\@nnil
\def\bbl@tempa#1=#2\bbl@tempa{%
\bbl@csarg\ifx{opt@#1}\@nnil
\bbl@csarg\edef{opt@#1}{#2}%
@@ -407,6 +417,12 @@
\bbl@add@list\bbl@language@opts{\CurrentOption}%
\fi}
\ProcessOptions*
+\ifx\bbl@opt@provide\@nnil\else % Tests. Ignore.
+ \chardef\bbl@iniflag\@ne
+ \bbl@replace\bbl@opt@provide{;}{,}
+ \bbl@add\bbl@opt@provide{,import}
+ \show\bbl@opt@provide
+\fi
\bbl@trace{Conditional loading of shorthands}
\def\bbl@sh@string#1{%
\ifx#1\@empty\else
@@ -995,18 +1011,6 @@
*}}%
\@empty}}
\fi
-\ifx\@unexpandable@protect\@undefined
- \def\@unexpandable@protect{\noexpand\protect\noexpand}
- \long\def\protected@write#1#2#3{%
- \begingroup
- \let\thepage\relax
- #2%
- \let\protect\@unexpandable@protect
- \edef\reserved@a{\write#1{#3}}%
- \reserved@a
- \endgroup
- \if@nobreak\ifvmode\nobreak\fi\fi}
-\fi
\bbl@trace{Language options}
\let\bbl@afterlang\relax
\let\BabelModifiers\relax
@@ -1153,7 +1157,11 @@
\ifodd\bbl@iniflag % case 1,3
\bbl@ldfinit
\let\CurrentOption\bbl@opt@main
- \bbl@exp{\\\babelprovide[import,main]{\bbl@opt@main}}
+ \ifx\bbl@opt@provide\@nnil
+ \bbl@exp{\\\babelprovide[import,main]{\bbl@opt@main}}
+ \else
+ \bbl@exp{\\\babelprovide[\bbl@opt@provide,main]{\bbl@opt@main}}%
+ \fi
\bbl@afterldf{}%
\else % case 0,2
\chardef\bbl@iniflag\z@ % Force ldf
diff --git a/Master/texmf-dist/tex/generic/babel/blplain.tex b/Master/texmf-dist/tex/generic/babel/blplain.tex
index a77b8cb7b28..96b2eb1d307 100644
--- a/Master/texmf-dist/tex/generic/babel/blplain.tex
+++ b/Master/texmf-dist/tex/generic/babel/blplain.tex
@@ -12,6 +12,7 @@
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
%%
+%%
%% This file is part of the Babel system.
%% --------------------------------------
%%
@@ -26,7 +27,6 @@
%% This work has the LPPL maintenance status "maintained".
%%
%% The Current Maintainer of this work is Javier Bezos.
-
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
diff --git a/Master/texmf-dist/tex/generic/babel/bplain.tex b/Master/texmf-dist/tex/generic/babel/bplain.tex
index cec974bf868..9f9f73ae2e8 100644
--- a/Master/texmf-dist/tex/generic/babel/bplain.tex
+++ b/Master/texmf-dist/tex/generic/babel/bplain.tex
@@ -12,6 +12,7 @@
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
%%
+%%
%% This file is part of the Babel system.
%% --------------------------------------
%%
@@ -26,7 +27,6 @@
%% This work has the LPPL maintenance status "maintained".
%%
%% The Current Maintainer of this work is Javier Bezos.
-
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
diff --git a/Master/texmf-dist/tex/generic/babel/hyphen.cfg b/Master/texmf-dist/tex/generic/babel/hyphen.cfg
index 784954b2763..96965b6a086 100644
--- a/Master/texmf-dist/tex/generic/babel/hyphen.cfg
+++ b/Master/texmf-dist/tex/generic/babel/hyphen.cfg
@@ -12,6 +12,7 @@
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
%%
+%%
%% This file is part of the Babel system.
%% --------------------------------------
%%
@@ -26,7 +27,6 @@
%% This work has the LPPL maintenance status "maintained".
%%
%% The Current Maintainer of this work is Javier Bezos.
-
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
@@ -38,10 +38,10 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{hyphen.cfg}[2021/06/02 3.60 Babel hyphens]
+\ProvidesFile{hyphen.cfg}[2021/06/28 3.61 Babel hyphens]
\xdef\bbl@format{\jobname}
-\def\bbl@version{3.60}
-\def\bbl@date{2021/06/02}
+\def\bbl@version{3.61}
+\def\bbl@date{2021/06/28}
\ifx\AtBeginDocument\@undefined
\def\@empty{}
\let\orig@dump\dump
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-DZ.ini b/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-DZ.ini
index 25830fb3d79..a43f56ff0f6 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-DZ.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-DZ.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.8
-date = 2021-05-31
+version = 1.9
+date = 2021-06-25
name.local = العربية
name.english = Arabic
name.babel = arabic-algeria arabic-dz
@@ -179,8 +179,7 @@ abjad = ا ب ج د ه‍ و ز ح ط ي ك ل م ن س ع ف ص ق ر ش ت ث
maghrebi.abjad = ا ب ج د ه‍ و ز ح ط ي ك ل م ن ص ع ف ض ق ر س ت ث خ ذ ظ غ ش
[transforms.prehyphenation]
-kashida.plain.1.0 ={
-()[يئهشسقفغعضصنمكلظطخحجثتب]()[ًٍَُِّ]*[يئهشسقفغعضصنمكلظطخحجثتباأإآوؤذدزرة] }
+kashida.plain.1.0 = { ()[يئهشسقفغعضصنمكلظطخحجثتب]()[ًٍَُِّ]*[يئهشسقفغعضصنمكلظطخحجثتباأإآوؤذدزرة] }
kashida.plain.1.1 = { kashida = 500 }
kashida.plain.2.0 = { ()ل()[اأإآ] }
kashida.plain.2.1 = { kashida = 0 }
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-MA.ini b/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-MA.ini
index df60cba8139..df69846f4cf 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-MA.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-MA.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.8
-date = 2021-05-31
+version = 1.9
+date = 2021-06-25
name.local = العربية
name.english = Arabic
name.babel = arabic-morocco arabic-ma
@@ -179,8 +179,7 @@ abjad = ا ب ج د ه‍ و ز ح ط ي ك ل م ن س ع ف ص ق ر ش ت ث
maghrebi.abjad = ا ب ج د ه‍ و ز ح ط ي ك ل م ن ص ع ف ض ق ر س ت ث خ ذ ظ غ ش
[transforms.prehyphenation]
-kashida.plain.1.0 ={
-()[يئهشسقفغعضصنمكلظطخحجثتب]()[ًٍَُِّ]*[يئهشسقفغعضصنمكلظطخحجثتباأإآوؤذدزرة] }
+kashida.plain.1.0 = { ()[يئهشسقفغعضصنمكلظطخحجثتب]()[ًٍَُِّ]*[يئهشسقفغعضصنمكلظطخحجثتباأإآوؤذدزرة] }
kashida.plain.1.1 = { kashida = 500 }
kashida.plain.2.0 = { ()ل()[اأإآ] }
kashida.plain.2.1 = { kashida = 0 }
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-SY.ini b/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-SY.ini
index fd55a5f7a4e..15ba0d273f9 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-SY.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar-SY.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.8
-date = 2021-05-31
+version = 1.9
+date = 2021-06-25
name.local = العربية
name.english = Arabic
name.babel = arabic-syria arabic-sy
@@ -178,8 +178,7 @@ abjad = ا ب ج د ه‍ و ز ح ط ي ك ل م ن س ع ف ص ق ر ش ت ث
maghrebi.abjad = ا ب ج د ه‍ و ز ح ط ي ك ل م ن ص ع ف ض ق ر س ت ث خ ذ ظ غ ش
[transforms.prehyphenation]
-kashida.plain.1.0 ={
-()[يئهشسقفغعضصنمكلظطخحجثتب]()[ًٍَُِّ]*[يئهشسقفغعضصنمكلظطخحجثتباأإآوؤذدزرة] }
+kashida.plain.1.0 = { ()[يئهشسقفغعضصنمكلظطخحجثتب]()[ًٍَُِّ]*[يئهشسقفغعضصنمكلظطخحجثتباأإآوؤذدزرة] }
kashida.plain.1.1 = { kashida = 500 }
kashida.plain.2.0 = { ()ل()[اأإآ] }
kashida.plain.2.1 = { kashida = 0 }
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar.ini b/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar.ini
index 6aba96a20e5..77dd98dbf5d 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ar/babel-ar.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.11
-date = 2021-05-31
+version = 1.12
+date = 2021-06-25
name.local = العربية
name.english = Arabic
name.babel = arabic
@@ -24,9 +24,8 @@ script.name = Arabic
script.tag.bcp47 = Arab
script.tag.opentype = arab
level = 1
-encodings =
+encodings = LAE
derivate = no
-require.babel = arabic
[captions]
preface = مدخل
@@ -208,8 +207,7 @@ transliteration.dad.7.2 = { string = {1|AauiIbnf|آأؤإئٮںڡ} }
transliteration.dad.8.0 = { ([{007C}AbtjHxdrzsSDTZ`RfqklmnhUIYaui+opCvgJe]) }
transliteration.dad.8.1 = { string = {1|{007C}AbtjHxdrzsSDTZ`RfqklmnhUIYaui+opCvgJe|ءابتجحخدرزسصضطظعغفقكلمنهوىيَُِّْپچڤگژۀ} }
;
-kashida.plain.1.0 ={
-()[يئهشسقفغعضصنمكلظطخحجثتب]()[ًٍَُِّ]*[يئهشسقفغعضصنمكلظطخحجثتباأإآوؤذدزرة] }
+kashida.plain.1.0 = { ()[يئهشسقفغعضصنمكلظطخحجثتب]()[ًٍَُِّ]*[يئهشسقفغعضصنمكلظطخحجثتباأإآوؤذدزرة] }
kashida.plain.1.1 = { kashida = 500 }
kashida.plain.2.0 = { ()ل()[اأإآ] }
kashida.plain.2.1 = { kashida = 0 }
diff --git a/Master/texmf-dist/tex/generic/babel/locale/as/babel-as.ini b/Master/texmf-dist/tex/generic/babel/locale/as/babel-as.ini
index e0c2a545d28..582bc6350d3 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/as/babel-as.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/as/babel-as.ini
@@ -12,8 +12,8 @@
[identification]
charset = utf8
-version = 1.8
-date = 2020-10-11
+version = 1.9
+date = 2021-06-25
name.local = অসমীয়া
name.english = Assamese
name.babel = assamese
@@ -147,4 +147,10 @@ percentSign = %
plusSign = +
superscriptingExponent = ×
-[counters] \ No newline at end of file
+[counters]
+
+[transforms.prehyphenation]
+danda.nobreak.1.0 = { |[।॥] }
+danda.nobreak.1.1 = { insert, penalty=10000 }
+danda.nobreak.1.2 = {}
+danda.nobreak.1.3 = {} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/babel/locale/bn/babel-bn.ini b/Master/texmf-dist/tex/generic/babel/locale/bn/babel-bn.ini
index b3bff10ca0f..69d04371581 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/bn/babel-bn.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/bn/babel-bn.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.8
-date = 2020-10-11
+version = 1.9
+date = 2021-06-25
name.local = বাংলা
name.english = Bangla
name.babel = bengali
@@ -149,4 +149,10 @@ plusSign = +
superscriptingExponent = ×
[counters]
-alphabetic = ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ঢ ণ ত থ দ ধ ন প ফ ব ভ \ No newline at end of file
+alphabetic = ক খ গ ঘ ঙ চ ছ জ ঝ ঞ ট ঠ ড ঢ ণ ত থ দ ধ ন প ফ ব ভ
+
+[transforms.prehyphenation]
+danda.nobreak.1.0 = { |[।॥] }
+danda.nobreak.1.1 = { insert, penalty=10000 }
+danda.nobreak.1.2 = {}
+danda.nobreak.1.3 = {}
diff --git a/Master/texmf-dist/tex/generic/babel/locale/gu/babel-gu.ini b/Master/texmf-dist/tex/generic/babel/locale/gu/babel-gu.ini
index cf6531cd23f..76da70546a4 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/gu/babel-gu.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/gu/babel-gu.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.7
-date = 2020-10-11
+version = 1.8
+date = 2021-06-25
name.local = ગુજરાતી
name.english = Gujarati
name.babel = gujarati
@@ -171,3 +171,9 @@ plusSign = +
superscriptingExponent = ×
[counters]
+
+[transforms.prehyphenation]
+danda.nobreak.1.0 = { |[।॥] }
+danda.nobreak.1.1 = { insert, penalty=10000 }
+danda.nobreak.1.2 = {}
+danda.nobreak.1.3 = {}
diff --git a/Master/texmf-dist/tex/generic/babel/locale/hi/babel-hi.ini b/Master/texmf-dist/tex/generic/babel/locale/hi/babel-hi.ini
index bc5e67eff13..1374e5e7ebb 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/hi/babel-hi.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/hi/babel-hi.ini
@@ -12,8 +12,8 @@
[identification]
charset = utf8
-version = 1.10
-date = 2021-04-24
+version = 1.11
+date = 2021-06-25
name.local = हिन्दी
name.english = Hindi
name.babel = hindi
@@ -203,6 +203,11 @@ superscriptingExponent = ×
alphabetic = क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह
[transforms.prehyphenation]
+danda.nobreak.1.0 = { |[।॥] }
+danda.nobreak.1.1 = { insert, penalty=10000 }
+danda.nobreak.1.2 = {}
+danda.nobreak.1.3 = {}
+;
punctuation.space.1.0 = { {a}()|[:;!{?}]() }
punctuation.space.1.1 = { insert, penalty = 10000 }
punctuation.space.1.2 = { spacefactor= .8 .3 .8, data = 2 }
diff --git a/Master/texmf-dist/tex/generic/babel/locale/kn/babel-kn.ini b/Master/texmf-dist/tex/generic/babel/locale/kn/babel-kn.ini
index b3ff3259bd5..747e1ec078b 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/kn/babel-kn.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/kn/babel-kn.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.7
-date = 2020-10-11
+version = 1.8
+date = 2021-06-25
name.local = ಕನ್ನಡ
name.english = Kannada
name.babel = kannada
@@ -154,3 +154,9 @@ plusSign = +
superscriptingExponent = ×
[counters]
+
+[transforms.prehyphenation]
+danda.nobreak.1.0 = { |[।॥] }
+danda.nobreak.1.1 = { insert, penalty=10000 }
+danda.nobreak.1.2 = {}
+danda.nobreak.1.3 = {} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ml/babel-ml.ini b/Master/texmf-dist/tex/generic/babel/locale/ml/babel-ml.ini
index a18096a8f16..7a05acdfb28 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ml/babel-ml.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ml/babel-ml.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.7
-date = 2021-04-24
+version = 1.8
+date = 2021-06-25
name.local = മലയാളം
name.english = Malayalam
name.babel = malayalam
@@ -160,3 +160,9 @@ plusSign = +
superscriptingExponent = ×
[counters]
+
+[transforms.prehyphenation]
+danda.nobreak.1.0 = { |[।॥] }
+danda.nobreak.1.1 = { insert, penalty=10000 }
+danda.nobreak.1.2 = {}
+danda.nobreak.1.3 = {} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/babel/locale/mr/babel-mr.ini b/Master/texmf-dist/tex/generic/babel/locale/mr/babel-mr.ini
index 927dd8b4986..7e933e127ea 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/mr/babel-mr.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/mr/babel-mr.ini
@@ -13,8 +13,8 @@
[identification]
charset = utf8
-version = 1.10
-date = 2021-04-05
+version = 1.11
+date = 2021-06-25
name.local = मराठी
name.english = Marathi
name.babel = marathi
@@ -151,4 +151,10 @@ plusSign = +
superscriptingExponent = ×
[counters]
-alphabetic = क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह ळ \ No newline at end of file
+alphabetic = क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह ळ
+
+[transforms.prehyphenation]
+danda.nobreak.1.0 = { |[।॥] }
+danda.nobreak.1.1 = { insert, penalty=10000 }
+danda.nobreak.1.2 = {}
+danda.nobreak.1.3 = {}
diff --git a/Master/texmf-dist/tex/generic/babel/locale/or/babel-or.ini b/Master/texmf-dist/tex/generic/babel/locale/or/babel-or.ini
index f7b2bd2bfa6..36339c1a1d1 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/or/babel-or.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/or/babel-or.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.7
-date = 2020-10-11
+version = 1.8
+date = 2021-06-25
name.local = ଓଡ଼ିଆ
name.english = Odia
name.babel = oriya
@@ -171,3 +171,9 @@ plusSign = +
superscriptingExponent = ×
[counters]
+
+[transforms.prehyphenation]
+danda.nobreak.1.0 = { |[।॥] }
+danda.nobreak.1.1 = { insert, penalty=10000 }
+danda.nobreak.1.2 = {}
+danda.nobreak.1.3 = {} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/babel/locale/ta/babel-ta.ini b/Master/texmf-dist/tex/generic/babel/locale/ta/babel-ta.ini
index d46e288abbd..0c3799c5d3f 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/ta/babel-ta.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/ta/babel-ta.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.8
-date = 2020-10-11
+version = 1.9
+date = 2021-06-25
name.local = தமிழ்
name.english = Tamil
name.babel = tamil
@@ -177,4 +177,11 @@ ancient.2 = ௰ ௨௰ ௩௰ ௪௰ ௫௰ ௬௰ ௭௰ ௮௰ ௯௰
ancient.3 = ௱ ௨௱ ௩௱ ௪௱ ௫௱ ௬௱ ௭௱ ௮௱ ௯௱
ancient.4 = ௲ ௨௲ ௩௲ ௪௲ ௫௲ ௬௲ ௭௲ ௮௲ ௯௲
+[transforms.prehyphenation]
+danda.nobreak.1.0 = { |[।॥] }
+danda.nobreak.1.1 = { insert, penalty=10000 }
+danda.nobreak.1.2 = {}
+danda.nobreak.1.3 = {}
+
+
diff --git a/Master/texmf-dist/tex/generic/babel/locale/te/babel-te.ini b/Master/texmf-dist/tex/generic/babel/locale/te/babel-te.ini
index 9f780914fe0..e2727b3ad85 100644
--- a/Master/texmf-dist/tex/generic/babel/locale/te/babel-te.ini
+++ b/Master/texmf-dist/tex/generic/babel/locale/te/babel-te.ini
@@ -11,8 +11,8 @@
[identification]
charset = utf8
-version = 1.7
-date = 2020-10-11
+version = 1.8
+date = 2021-06-25
name.local = తెలుగు
name.english = Telugu
name.babel = telugu
@@ -149,3 +149,9 @@ plusSign = +
superscriptingExponent = ×
[counters]
+
+[transforms.prehyphenation]
+danda.nobreak.1.0 = { |[।॥] }
+danda.nobreak.1.1 = { insert, penalty=10000 }
+danda.nobreak.1.2 = {}
+danda.nobreak.1.3 = {} \ No newline at end of file
diff --git a/Master/texmf-dist/tex/generic/babel/luababel.def b/Master/texmf-dist/tex/generic/babel/luababel.def
index 62687deafa9..ca9aef3ac7e 100644
--- a/Master/texmf-dist/tex/generic/babel/luababel.def
+++ b/Master/texmf-dist/tex/generic/babel/luababel.def
@@ -12,6 +12,7 @@
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
%%
+%%
%% This file is part of the Babel system.
%% --------------------------------------
%%
@@ -26,7 +27,6 @@
%% This work has the LPPL maintenance status "maintained".
%%
%% The Current Maintainer of this work is Javier Bezos.
-
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
@@ -558,6 +558,8 @@
Babel.arabic.elong_map[\the\localeid] = {}
luatexbase.add_to_callback('post_linebreak_filter',
Babel.arabic.justify, 'Babel.arabic.justify')
+ luatexbase.add_to_callback('hpack_filter',
+ Babel.arabic.justify_hbox, 'Babel.arabic.justify_hbox')
}}%
\def\bblar@fetchjalt#1#2#3#4{%
\bbl@exp{\\\bbl@foreach{#1}}{%
@@ -629,8 +631,14 @@ function Babel.arabic.justify(head)
end
function Babel.arabic.justify_hbox(head, gc, size, pack)
+ local has_inf = false
if Babel.arabic.justify_enabled and pack == 'exactly' then
- Babel.arabic.justify_hlist(head, nil, gc, size, pack)
+ for n in node.traverse_id(12, head) do
+ if n.stretch_order > 0 then has_inf = true end
+ end
+ if not has_inf then
+ Babel.arabic.justify_hlist(head, nil, gc, size, pack)
+ end
end
return head
end
diff --git a/Master/texmf-dist/tex/generic/babel/nil.ldf b/Master/texmf-dist/tex/generic/babel/nil.ldf
index 3728df9505c..cd65a825af3 100644
--- a/Master/texmf-dist/tex/generic/babel/nil.ldf
+++ b/Master/texmf-dist/tex/generic/babel/nil.ldf
@@ -12,6 +12,7 @@
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
%%
+%%
%% This file is part of the Babel system.
%% --------------------------------------
%%
@@ -26,14 +27,13 @@
%% This work has the LPPL maintenance status "maintained".
%%
%% The Current Maintainer of this work is Javier Bezos.
-
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-\ProvidesLanguage{nil}[2021/06/02 3.60 Nil language]
+\ProvidesLanguage{nil}[2021/06/28 3.61 Nil language]
\LdfInit{nil}{datenil}
\ifx\l@nil\@undefined
\newlanguage\l@nil
diff --git a/Master/texmf-dist/tex/generic/babel/plain.def b/Master/texmf-dist/tex/generic/babel/plain.def
index 97b5ab1674c..95bcd3b014a 100644
--- a/Master/texmf-dist/tex/generic/babel/plain.def
+++ b/Master/texmf-dist/tex/generic/babel/plain.def
@@ -12,6 +12,7 @@
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
%%
+%%
%% This file is part of the Babel system.
%% --------------------------------------
%%
@@ -26,7 +27,6 @@
%% This work has the LPPL maintenance status "maintained".
%%
%% The Current Maintainer of this work is Javier Bezos.
-
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
diff --git a/Master/texmf-dist/tex/generic/babel/switch.def b/Master/texmf-dist/tex/generic/babel/switch.def
index 3f758a341e3..cd18f9c2d78 100644
--- a/Master/texmf-dist/tex/generic/babel/switch.def
+++ b/Master/texmf-dist/tex/generic/babel/switch.def
@@ -12,6 +12,7 @@
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
%%
+%%
%% This file is part of the Babel system.
%% --------------------------------------
%%
@@ -26,7 +27,6 @@
%% This work has the LPPL maintenance status "maintained".
%%
%% The Current Maintainer of this work is Javier Bezos.
-
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
diff --git a/Master/texmf-dist/tex/generic/babel/txtbabel.def b/Master/texmf-dist/tex/generic/babel/txtbabel.def
index 5305b7de214..b3f45db945f 100644
--- a/Master/texmf-dist/tex/generic/babel/txtbabel.def
+++ b/Master/texmf-dist/tex/generic/babel/txtbabel.def
@@ -12,6 +12,7 @@
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
%%
+%%
%% This file is part of the Babel system.
%% --------------------------------------
%%
@@ -26,7 +27,6 @@
%% This work has the LPPL maintenance status "maintained".
%%
%% The Current Maintainer of this work is Javier Bezos.
-
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
diff --git a/Master/texmf-dist/tex/generic/babel/xebabel.def b/Master/texmf-dist/tex/generic/babel/xebabel.def
index 4530a62f55e..531a79be27f 100644
--- a/Master/texmf-dist/tex/generic/babel/xebabel.def
+++ b/Master/texmf-dist/tex/generic/babel/xebabel.def
@@ -12,6 +12,7 @@
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
%%
+%%
%% This file is part of the Babel system.
%% --------------------------------------
%%
@@ -26,7 +27,6 @@
%% This work has the LPPL maintenance status "maintained".
%%
%% The Current Maintainer of this work is Javier Bezos.
-
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
@@ -73,6 +73,7 @@
\expandafter\bbl@intrapenalty\bbl@KVP@intrapenalty\@@
\fi
\bbl@exp{%
+ % TODO. Execute only once (but redundant):
\\\bbl@add\<extras\languagename>{%
\XeTeXlinebreaklocale "\bbl@cl{tbcp}"%
\<bbl@xeisp@\languagename>%