diff options
author | Karl Berry <karl@freefriends.org> | 2021-06-28 20:38:19 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2021-06-28 20:38:19 +0000 |
commit | a977864eac6d306a206d3c4535fe0e397a10ab4a (patch) | |
tree | eef32e46d36c0092e1062db037e8000e4862fc26 /Master/texmf-dist | |
parent | 472bc9cb1b41fa04197e7684ac38bb1ea6550ee0 (diff) |
babel (28jun21)
git-svn-id: svn://tug.org/texlive/trunk@59740 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist')
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 Binary files differindex a184df48a21..8e3aefc9440 100644 --- a/Master/texmf-dist/doc/latex/babel/babel.pdf +++ b/Master/texmf-dist/doc/latex/babel/babel.pdf diff --git a/Master/texmf-dist/source/latex/babel/babel.dtx b/Master/texmf-dist/source/latex/babel/babel.dtx index 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 Binary files differindex 47963bdfefd..060eed17afa 100644 --- a/Master/texmf-dist/source/latex/babel/locale.zip +++ b/Master/texmf-dist/source/latex/babel/locale.zip diff --git a/Master/texmf-dist/tex/generic/babel/babel-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>% |