texlive[75053] Master/texmf-dist: babel (29apr25)
commits+karl at tug.org
commits+karl at tug.org
Tue Apr 29 21:45:17 CEST 2025
Revision: 75053
https://tug.org/svn/texlive?view=revision&revision=75053
Author: karl
Date: 2025-04-29 21:45:16 +0200 (Tue, 29 Apr 2025)
Log Message:
-----------
babel (29apr25)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/babel/README.md
trunk/Master/texmf-dist/doc/latex/babel/babel-code.pdf
trunk/Master/texmf-dist/doc/latex/babel/babel.pdf
trunk/Master/texmf-dist/source/latex/babel/babel.dtx
trunk/Master/texmf-dist/source/latex/babel/babel.ins
trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx
trunk/Master/texmf-dist/source/latex/babel/locale.zip
trunk/Master/texmf-dist/tex/generic/babel/babel.def
trunk/Master/texmf-dist/tex/generic/babel/babel.sty
trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg
trunk/Master/texmf-dist/tex/generic/babel/locale/shared/babel-Hebr.ini
trunk/Master/texmf-dist/tex/generic/babel/nil.ldf
trunk/Master/texmf-dist/tex/generic/babel/xebabel.def
Modified: trunk/Master/texmf-dist/doc/latex/babel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/babel/README.md 2025-04-29 17:38:33 UTC (rev 75052)
+++ trunk/Master/texmf-dist/doc/latex/babel/README.md 2025-04-29 19:45:16 UTC (rev 75053)
@@ -1,6 +1,6 @@
-## Babel 25.7
+## Babel 25.8
-2025-04-14
+2025-04-29
`Babel` is the multilingual framework to localize documents. It fully
supports pdfLaTeX and the Unicode engines LuaLaTeX and XeLaTeX. A few
@@ -21,9 +21,9 @@
The latest stable version is available on <https://ctan.org/pkg/babel>.
-Changes in version 25.7 are described in:
+Changes in version 25.8 are described in:
-https://latex3.github.io/babel/news/whats-new-in-babel-25.7.html
+https://latex3.github.io/babel/news/whats-new-in-babel-25.8.html
Apart from the manual, you can find information and examples in:
@@ -59,13 +59,11 @@
### Summary of latest changes
```
-25.7 2025-04-14
- * New macro: \ShowBabelTransforms.
- * Fixes:
- - Incorrect kashida placement (#336).
- - Ancient Hebrew vowel characters not recognised as Hebrew text (#337).
- - babel-cy.ini captions and captions.licr inconsistent (#338).
- * New locale: ancienthebrew.
+25.8 2025-04-29
+ * The document 'lang' metadata, if provided, is used to set the
+ main language. This is a potentially breaking change. See the
+ news page for further info.
+ * Hebrew justification with inter-letter spacing.
```
### Previous changes
Modified: trunk/Master/texmf-dist/doc/latex/babel/babel-code.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/babel/babel.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/source/latex/babel/babel.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/babel/babel.dtx 2025-04-29 17:38:33 UTC (rev 75052)
+++ trunk/Master/texmf-dist/source/latex/babel/babel.dtx 2025-04-29 19:45:16 UTC (rev 75053)
@@ -37,7 +37,7 @@
lang = en-001,
}
\ProvidesFile{babel.dtx}%
- [2025/04/14 v25.7
+ [2025/04/29 v25.8
The multilingual framework for pdfLaTeX, LuaLaTeX and XeLaTeX]
\documentclass{ltxdoc}
\GetFileInfo{babel.dtx}
@@ -428,6 +428,27 @@
\textsf{fontspec}, although \babel{} provides a higher level interface
(see |\babelfont| below).
+\New{25.8} The PDF document language can also be set with
+|\DocumentMetadata| before |\documentclass|. See the liked news page
+for further info. For example, the following setting will pass
+\texttt{british} as the main language to \babel:
+\begin{verbatim}
+\DocumentMetadata{_lang=en-GB_}
+\documentclass{article}
+\usepackage{babel}
+\end{verbatim}
+The basic tag lookup explained below is applied here, so that
+\texttt{fr-Latn-FR} is valid and mapped to \texttt{fr}, which is in
+turn mapped to \texttt{french}. This eases the localization of
+automatically generated documents.
+
+\begin{warning}
+ This is a \textbf{breaking change}, because until now with this
+ example the dummy language \texttt{nil} was loaded. Tags are not
+ validated, which means mistakes like |en-UK| or wrong tags like
+ |de-AUS| or |la-x-classical| might be accepted without complaining.
+\end{warning}
+
\begin{example}
Here is a simple full example for “traditional” \TeX{} engines (see
below for \luatex{} and \xetex{}). The package |fontenc| does not
@@ -513,14 +534,11 @@
\begin{verbatim}
\usepackage[_pdflang=es-MX_]{hyperref}
\end{verbatim}
-This is not currently done by \babel{} and you must set it by hand. The
-PDF document language can also be set with |\DocumentMetadata|, before
-|\documentclass|; for example:
-\begin{verbatim}
-\DocumentMetadata{_lang=es-MX_}
-\end{verbatim}
+This is not currently done by \babel{} and you must set it by hand.
\end{note}
+
+
\begin{warning}
In the preamble, \textit{no} language has been selected, except
hyphenation patterns and the name assigned to |\localename| (and
@@ -4329,10 +4347,17 @@
does it. To prevent the conversion (an abbreviation, for example), write
|"s|.}
-\trans{Hebrew, Yiddish}{transliteration.cj}{A transliteration system
-based on that devised by Christian Justen for `cjhebrew`. Final letters
-are not converted, and the furtive patah is not shifted.}
+\trans{Hebrew, Yiddish, Ladino, Ancient Hebrew}{transliteration.cj}{A
+transliteration system based on that devised by Christian Justen for
+`cjhebrew`. Final letters are not converted, and the furtive patah is
+not shifted.}
+\trans{Hebrew, Yiddish, Ladino, Ancient
+Hebrew}{justification.interletter}{justification.interletter}{Hebrew
+justification is based on variations in the spacing between individual
+letters within words. This transform activates this justification
+method. See \New{25.8} for further details and an example.}
+
\trans{Hindi, Sanskrit}{punctuation.space}{Inserts a space before the
following four characters: \textit{!?:;}\,.}
@@ -6081,8 +6106,8 @@
% \section{Tools}
%
% \begin{macrocode}
-%<<version=25.7>>
-%<<date=2025/04/14>>
+%<<version=25.8>>
+%<<date=2025/04/29>>
% \end{macrocode}
%
% \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -7163,13 +7188,13 @@
%
% \begin{macrocode}
\chardef\localeid\z@
-\def\bbl at id@last{0} % No real need for a new counter
+\gdef\bbl at id@last{0} % No real need for a new counter
\def\bbl at id@assign{%
\bbl at ifunset{bbl at id@@\languagename}%
{\count@\bbl at id@last\relax
\advance\count@\@ne
\global\bbl at csarg\chardef{id@@\languagename}\count@
- \edef\bbl at id@last{\the\count@}%
+ \xdef\bbl at id@last{\the\count@}%
\ifcase\bbl at engine\or
\directlua{
Babel.locale_props[\bbl at id@last] = {}
@@ -7298,8 +7323,6 @@
\newif\ifbbl at usedategroup
\let\bbl at savedextras\@empty
\def\bbl at switch#1{% from select@, foreign@
- % make sure there is info for the language if so requested
- \bbl at ensureinfo{#1}%
% restore
\originalTeX
\expandafter\def\expandafter\originalTeX\expandafter{%
@@ -8016,7 +8039,7 @@
%
% At the start of processing a language definition file we always
% check the category code of the at-sign. We make sure that it is
-% a `letter' during the processing of the file. We also save its
+% a ‘letter’ during the processing of the file. We also save its
% name as the last called option, even if not loaded.
%
% Another character that needs to have the correct category code
@@ -8057,6 +8080,15 @@
\catcode`\@=11\relax
\chardef\eqcatcode=\catcode`\=
\catcode`\==12\relax
+ \@ifpackagewith{babel}{ensureinfo=off}{}%
+ {\ifx\InputIfFileExists\@undefined\else
+ \bbl at ifunset{bbl at lname@#1}%
+ {{\let\bbl at ensuring\@empty % Flag used in babel-serbianc.tex
+ \def\languagename{#1}%
+ \bbl at id@assign
+ \bbl at load@info{#1}}}%
+ {}%
+ \fi}%
\expandafter\if\expandafter\@backslashchar
\expandafter\@car\string#2\@nil
\ifx#2\@undefined\else
@@ -8072,6 +8104,8 @@
%
% \macro{\ldf at quit}
% This macro interrupts the processing of a language definition file.
+% Remember |\endinput| is not executed immediately, but delayed to
+% the end of the current line in the input file.
%
% \begin{macrocode}
\def\ldf at quit#1{%
@@ -8091,7 +8125,7 @@
% code of the @-sign.
%
% \begin{macrocode}
-\def\bbl at afterldf#1{%
+\def\bbl at afterldf{%
\bbl at afterlang
\let\bbl at afterlang\relax
\let\BabelModifiers\relax
@@ -8098,7 +8132,7 @@
\let\bbl at screset\relax}%
\def\ldf at finish#1{%
\loadlocalcfg{#1}%
- \bbl at afterldf{#1}%
+ \bbl at afterldf
\expandafter\main at language\expandafter{#1}%
\catcode`\@=\atcatcode \let\atcatcode\relax
\catcode`\==\eqcatcode \let\eqcatcode\relax}
@@ -10795,12 +10829,17 @@
% counters); finally, ‘export’ some values by defining global macros
% (identification, typography, characters, numbers). The second
% argument is 0 when called to read the minimal data for fonts; with
-% |\babelprovide| it's either 1 or 2.
+% |\babelprovide| it's either 1 (without \texttt{import}) or 2 (which
+% |import|). The value $-$1 is used with |\DocumentMetadata|.
%
% |\bbl at loop@ini| is the reader, line by line (1: stream), and calls
% |\bbl at iniline| to save the key/value pairs. If |\bbl at inistore| finds
% the |@include| directive, the input stream is switched temporarily and
% |\bbl at read@subini| is called.
+%
+% When the language is being set based on the document metadata (\#2 in
+% |\bbl at read@ini| is $-$1), there is an interlude to get the name,
+% after the data have been collected, and before it’s processed.
%
% \begin{macrocode}
\def\bbl at loop@ini#1{%
@@ -10836,19 +10875,33 @@
% == Store ini data in \bbl at inidata ==
\catcode`\[=12 \catcode`\]=12 \catcode`\==12 \catcode`\&=12
\catcode`\;=12 \catcode`\|=12 \catcode`\%=14 \catcode`\-=12
+ \ifnum#2=\m at ne % Just for the info
+ \edef\languagename{tag \bbl at metalang}%
+ \fi
\bbl at info{Importing
\ifcase#2font and identification \or basic \fi
data for \languagename\\%
from babel-#1.ini. Reported}%
- \ifnum#2=\z@
+ \ifnum#2<\@ne
\global\let\bbl at inidata\@empty
- \let\bbl at inistore\bbl at inistore@min % Remember it's local
+ \let\bbl at inistore\bbl at inistore@min % Remember it's local
\fi
\def\bbl at section{identification}%
- \bbl at exp{\\\bbl at inistore tag.ini=#1\\\@@}%
- \bbl at inistore load.level=#2\@@
+ \bbl at exp{%
+ \\\bbl at inistore tag.ini=#1\\\@@
+ \\\bbl at inistore load.level=\ifnum#2<\@ne 0\else #2\fi\\\@@}%
\bbl at loop@ini\bbl at readstream
% == Process stored data ==
+ \ifnum#2=\m at ne
+ \def\bbl at tempa##1 ##2\@@{##1}% Get first name
+ \def\bbl at elt##1##2##3{%
+ \bbl at ifsamestring{identification/name.babel}{##1/##2}%
+ {\edef\languagename{\bbl at tempa##3 \@@}%
+ \bbl at id@assign
+ \def\bbl at elt####1####2####3{}}%
+ {}}%
+ \bbl at inidata
+ \fi
\bbl at csarg\xdef{lini@\languagename}{#1}%
\bbl at read@ini at aux
% == 'Export' data ==
@@ -10996,6 +11049,16 @@
%
\let\bbl at release@transforms\@empty
\let\bbl at release@casing\@empty
+% \end{macrocode}
+%
+% Relevant keys are ‘exported’, i.e., global macros with short names
+% are created with values taken from the corresponding keys. The
+% number of exported keys depends on the loading level (\#1): $-$1 and
+% 0 only info (the identificacion section), 1 also basic (like
+% linebreaking or character ranges), 2 also (re)new (with date and
+% captions).
+%
+% \begin{macrocode}
\def\bbl at ini@exports#1{%
% Identification always exported
\bbl at iniwarning{}%
@@ -11026,9 +11089,7 @@
\bbl at exportkey{extu}{identification.extension.u.tag.bcp47}{}%
\bbl at exportkey{extx}{identification.extension.x.tag.bcp47}{}%
% Also maps bcp47 -> languagename
- \ifbbl at bcptoname
- \bbl at csarg\xdef{bcp at map@\bbl at cl{tbcp}}{\languagename}%
- \fi
+ \bbl at csarg\xdef{bcp at map@\bbl at cl{tbcp}}{\languagename}%
\ifcase\bbl at engine\or
\directlua{%
Babel.locale_props[\the\bbl at cs{id@@\languagename}].script
@@ -11035,7 +11096,7 @@
= '\bbl at cl{sbcp}'}%
\fi
% Conditional
- \ifnum#1>\z@ % 0 = only info, 1, 2 = basic, (re)new
+ \ifnum#1>\z@ % -1 or 0 = only info, 1 = basic, 2 = (re)new
\bbl at exportkey{calpr}{date.calendar.preferred}{}%
\bbl at exportkey{lnbrk}{typography.linebreaking}{h}%
\bbl at exportkey{hyphr}{typography.hyphenrules}{}%
@@ -11390,7 +11451,7 @@
\newcommand\babelcalendar[2][\the\year-\the\month-\the\day]{%
\@nameuse{bbl at ca@#2}#1\@@}
\newcommand\BabelDateSpace{\nobreakspace}
-\newcommand\BabelDateDot{.\@} % TODO. \let instead of repeating
+\newcommand\BabelDateDot{.\@}
\newcommand\BabelDated[1]{{\number#1}}
\newcommand\BabelDatedd[1]{{\ifnum#1<10 0\fi\number#1}}
\newcommand\BabelDateM[1]{{\number#1}}
@@ -11454,12 +11515,20 @@
%
% \textbf{Transforms.}
%
+% Process the transforms read from |ini| files, converts them to a form
+% close to the user interface (with |\babelprehyphenation| and
+% |\babelprehyphenation|), wrapped with |\bbl at transforms@aux| \ldots
+% |\relax|, and stores them in |\bbl at release@transforms|. However,
+% since building a list enclosed in braces isn’t trivial, the
+% replacements are added after a comma, and then |\bbl at transforms@aux|
+% adds the braces.
+%
% \begin{macrocode}
\bbl at csarg\let{inikv at transforms.prehyphenation}\bbl at inikv
\bbl at csarg\let{inikv at transforms.posthyphenation}\bbl at inikv
\def\bbl at transforms@aux#1#2#3#4,#5\relax{%
#1[#2]{#3}{#4}{#5}}
-\begingroup % A hack. TODO. Don't require a specific order
+\begingroup
\catcode`\%=12
\catcode`\&=14
\gdef\bbl at transforms#1#2#3{&%
@@ -11513,8 +11582,11 @@
%
% \subsection{Handle language system}
%
-% Language and Script values to be used when defining a font or
-% setting the direction are set with the following macros.
+% The language system (i.e., |Language| and |Script|) to be used when
+% defining a font or setting the direction are set with the following
+% macros. It also deals with unhyphenated line breaking in \xetex\
+% (e.g., Thai and traditional Sanskrit), which is done with a hack at
+% the font level because this engine doesn’t support it.
%
% \begin{macrocode}
\def\bbl at provide@lsys#1{%
@@ -11542,26 +11614,6 @@
\fi}}%
\fi
\bbl at csarg\bbl at toglobal{lsys@#1}}
-\def\bbl at xenohyph@d{%
- \bbl at ifset{bbl at prehc@\languagename}%
- {\ifnum\hyphenchar\font=\defaulthyphenchar
- \iffontchar\font\bbl at cl{prehc}\relax
- \hyphenchar\font\bbl at cl{prehc}\relax
- \else\iffontchar\font"200B
- \hyphenchar\font"200B
- \else
- \bbl at warning
- {Neither 0 nor ZERO WIDTH SPACE are available\\%
- in the current font, and therefore the hyphen\\%
- will be printed. Try changing the fontspec's\\%
- 'HyphenChar' to another value, but be aware\\%
- this setting is not safe (see the manual).\\%
- Reported}%
- \hyphenchar\font\defaulthyphenchar
- \fi\fi
- \fi}%
- {\hyphenchar\font\defaulthyphenchar}}
- % \fi}
% \end{macrocode}
%
% The following |ini| reader ignores everything but the
@@ -11668,7 +11720,7 @@
\bbl at cs{cntr@#1.3@\languagename}#6%
\bbl at cs{cntr@#1.2@\languagename}#7%
\bbl at cs{cntr@#1.1@\languagename}#8%
- \ifnum#6#7#8>\z@ % TODO. An ad hoc rule for Greek. Ugly.
+ \ifnum#6#7#8>\z@
\bbl at ifunset{bbl at cntr@#1.S.321@\languagename}{}%
{\bbl at cs{cntr@#1.S.321@\languagename}}%
\fi}%
@@ -11769,31 +11821,17 @@
% \end{macrocode}
%
% With version 3.75 |\BabelEnsureInfo| is executed always, but there is
-% an option to disable it.
+% an option to disable it. Since the info in |ini| files are always
+% loaded, it has be made no-op in version 25.8.
%
% \begin{macrocode}
%<<*More package options>>
\DeclareOption{ensureinfo=off}{}
%<</More package options>>
-\let\bbl at ensureinfo\@gobble
-\newcommand\BabelEnsureInfo{%
- \ifx\InputIfFileExists\@undefined\else
- \def\bbl at ensureinfo##1{%
- \bbl at ifunset{bbl at lname@##1}{\bbl at load@info{##1}}{}}%
- \fi
- \bbl at foreach\bbl at loaded{{%
- \let\bbl at ensuring\@empty % Flag used in a couple of babel-*.tex files
- \def\languagename{##1}%
- \bbl at ensureinfo{##1}}}}
-\@ifpackagewith{babel}{ensureinfo=off}{}%
- {\AtEndOfPackage{% Test for plain.
- \ifx\@undefined\bbl at loaded\else\BabelEnsureInfo\fi}}
+\let\BabelEnsureInfo\relax
% \end{macrocode}
%
-% More general, but non-expandable, is |\getlocaleproperty|. To inspect
-% every possible loaded |ini|, we define |\LocaleForEach|, where
-% |\bbl at ini@loaded| is a comma-separated list of locales, built by
-% |\bbl at read@ini|.
+% More general, but non-expandable, is |\getlocaleproperty|.
%
% \begin{macrocode}
\newcommand\getlocaleproperty{%
@@ -11811,6 +11849,13 @@
\ifx#1\relax
\bbl at error{unknown-locale-key}{#1}{#2}{#3}%
\fi}
+% \end{macrocode}
+%
+% To inspect every possible loaded |ini|, we define |\LocaleForEach|,
+% where |\bbl at ini@loaded| is a comma-separated list of locales, built
+% by |\bbl at read@ini|.
+%
+% \begin{macrocode}
\let\bbl at ini@loaded\@empty
\newcommand\LocaleForEach{\bbl at foreach\bbl at ini@loaded}
\def\ShowLocaleProperties#1{%
@@ -11823,6 +11868,17 @@
%
% \subsection{BCP 47 related commands}
%
+% This macro is called by language selectors when the language isn’t
+% recognized. So, it’s the core for (1) mapping from a BCP 27 tag to
+% the actual language, if |bcp47.toname| is enabled (i.e., if
+% |bbl at bcptoname| is true), and (2) lazy loading. With |autoload.bcp47|
+% enabled \textit{and} lazy loading, we must first build a name for the
+% language, with the help of |autoload.bcp47.prefix|. Then we use
+% |\provideprovide| passing the options set with
+% |autoload.bcp47.options| (by default |import|). Finally, and if the
+% locale has not been loaded before, we use |\provideprovide| with the
+% language name as passed to the selector.
+%
% \begin{macrocode}
\newif\ifbbl at bcpallowed
\bbl at bcpallowedfalse
@@ -11832,8 +11888,11 @@
\bbl at error{base-on-the-fly}{}{}{}%
\fi
\let\bbl at auxname\languagename % Still necessary.
- \bbl at ifunset{bbl at bcp@map@\languagename}{}% Move uplevel??
- {\edef\languagename{\@nameuse{bbl at bcp@map@\languagename}}}%
+ \ifbbl at bcptoname
+ \bbl at ifunset{bbl at bcp@map@\languagename}{}% Move uplevel??
+ {\edef\languagename{\@nameuse{bbl at bcp@map@\languagename}}%
+ \let\localename\languagename}%
+ \fi
\ifbbl at bcpallowed
\expandafter\ifx\csname date\languagename\endcsname\relax
\expandafter
@@ -11840,7 +11899,7 @@
\bbl at bcplookup\languagename-\@empty-\@empty-\@empty\@@
\ifx\bbl at bcp\relax\else % Returned by \bbl at bcplookup
\edef\languagename{\bbl at bcp@prefix\bbl at bcp}%
- \edef\localename{\bbl at bcp@prefix\bbl at bcp}%
+ \let\localename\languagename
\expandafter\ifx\csname date\languagename\endcsname\relax
\let\bbl at initoload\bbl at bcp
\bbl at exp{\\\babelprovide[\bbl at autoload@bcpoptions]{\languagename}}%
@@ -11972,8 +12031,7 @@
\def\bbl at autoload@bcpoptions{#1}}
\newif\ifbbl at bcptoname
\@namedef{bbl at ADJ@bcp47.toname at on}{%
- \bbl at bcptonametrue
- \BabelEnsureInfo}
+ \bbl at bcptonametrue}
\@namedef{bbl at ADJ@bcp47.toname at off}{%
\bbl at bcptonamefalse}
\@namedef{bbl at ADJ@prehyphenation.disable at nohyphenation}{%
@@ -12926,7 +12984,8 @@
*}}%
\@empty}}
\fi
-% \end{macrocode}%
+% \end{macrocode}
+%
% \subsection{Language options}
%
% Languages are loaded when processing the corresponding option
@@ -12995,7 +13054,29 @@
% of the file with the package option |config=<name>|, which will
% load |<name>.cfg| instead.
%
+% If the language as been set as metadata, read the info from the
+% corresponding \texttt{ini} file and extract the \babel\ name. Then
+% added it as a package option at the end, so that it becomes the main
+% language. The behavior of a metatag with a global language option is
+% not well defined, so if there is not a |main| option we set here
+% explicitly.
+%
% \begin{macrocode}
+\ifx\GetDocumentProperties\@undefined\else
+ \edef\bbl at metalang{\GetDocumentProperties{document/lang}}%
+ \ifx\bbl at metalang\@empty\else
+ \begingroup
+ \expandafter
+ \bbl at bcplookup\bbl at metalang-\@empty-\@empty-\@empty\@@
+ \bbl at read@ini{\bbl at bcp}\m at ne
+ \xdef\bbl at language@opts{\bbl at language@opts,\languagename}%
+ \ifx\bbl at opt@main\@nnil
+ \global\let\bbl at opt@main\languagename
+ \fi
+ \bbl at info{Passing \languagename\space to babel}%
+ \endgroup
+ \fi
+\fi
\ifx\bbl at opt@config\@nnil
\@ifpackagewith{babel}{noconfigs}{}%
{\InputIfFileExists{bblopts.cfg}%
@@ -13050,10 +13131,13 @@
\fi}%
\fi
\else
- \bbl at info{Main language set with 'main='. Except if you have\\%
- problems, prefer the default mechanism for setting\\%
- the main language, i.e., as the last declared.\\%
- Reported}
+ \ifx\bbl at metalang\@undefined\else\ifx\bbl at metalang\@empty\else
+ \bbl at afterfi\expandafter\@gobble
+ \fi\fi % except if explicit lang metatag:
+ {\bbl at info{Main language set with 'main='. Except if you have\\%
+ problems, prefer the default mechanism for setting\\%
+ the main language, i.e., as the last declared.\\%
+ Reported}}
\fi
% \end{macrocode}
%
@@ -13083,7 +13167,7 @@
\DeclareOption{#1}{%
\bbl at ldfinit
\babelprovide[@import]{#1}% %%%%%
- \bbl at afterldf{}}%
+ \bbl at afterldf}%
\fi
\fi}
\bbl at foreach\bbl at tempf{%
@@ -13100,7 +13184,7 @@
{\DeclareOption{#1}{%
\bbl at ldfinit
\babelprovide[@import]{#1}% %%%%%%
- \bbl at afterldf{}}}%
+ \bbl at afterldf}}%
{}%
\fi
\fi}
@@ -13163,7 +13247,7 @@
\\\babelprovide
[\bbl at opt@provide, at import,main]% %%%%%
{\bbl at opt@main}}%
- \bbl at afterldf{}
+ \bbl at afterldf
\DeclareOption{\bbl at opt@main}{}
\else % case 0,2 (main is ldf)
\ifx\bbl at loadmain\relax
@@ -14171,6 +14255,31 @@
\def\bbl at provide@extra#1{}
% \end{macrocode}
%
+% Hack for unhyphenated line breaking. See |\bbl at provide@lsys| in the
+% common code.
+%
+% \begin{macrocode}
+\def\bbl at xenohyph@d{%
+ \bbl at ifset{bbl at prehc@\languagename}%
+ {\ifnum\hyphenchar\font=\defaulthyphenchar
+ \iffontchar\font\bbl at cl{prehc}\relax
+ \hyphenchar\font\bbl at cl{prehc}\relax
+ \else\iffontchar\font"200B
+ \hyphenchar\font"200B
+ \else
+ \bbl at warning
+ {Neither 0 nor ZERO WIDTH SPACE are available\\%
+ in the current font, and therefore the hyphen\\%
+ will be printed. Try changing the fontspec's\\%
+ 'HyphenChar' to another value, but be aware\\%
+ this setting is not safe (see the manual).\\%
+ Reported}%
+ \hyphenchar\font\defaulthyphenchar
+ \fi\fi
+ \fi}%
+ {\hyphenchar\font\defaulthyphenchar}}
+% \end{macrocode}
+%
% \subsection{Support for interchar}
%
% \xetex{} reserves some values for CJK (although they are not set in
@@ -25533,7 +25642,6 @@
\let\bbl at opt@shorthands\@nnil
\def\bbl at ifshorthand#1#2#3{#2}%
\let\bbl at language@opts\@empty
-\let\bbl at ensureinfo\@gobble
\let\bbl at provide@locale\relax
\ifx\babeloptionstrings\@undefined
\let\bbl at opt@strings\@nnil
Modified: trunk/Master/texmf-dist/source/latex/babel/babel.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/babel/babel.ins 2025-04-29 17:38:33 UTC (rev 75052)
+++ trunk/Master/texmf-dist/source/latex/babel/babel.ins 2025-04-29 19:45:16 UTC (rev 75053)
@@ -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{2025/04/14}
+\def\filedate{2025/04/29}
\def\batchfile{babel.ins}
\input docstrip.tex
Modified: trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx 2025-04-29 17:38:33 UTC (rev 75052)
+++ trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx 2025-04-29 19:45:16 UTC (rev 75053)
@@ -30,7 +30,7 @@
%
% \iffalse
%<*dtx>
-\ProvidesFile{bbcompat.dtx}[2025/04/14 v25.7]
+\ProvidesFile{bbcompat.dtx}[2025/04/29 v25.8]
%</dtx>
%
%% File 'bbcompat.dtx'
Modified: trunk/Master/texmf-dist/source/latex/babel/locale.zip
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/tex/generic/babel/babel.def
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/babel.def 2025-04-29 17:38:33 UTC (rev 75052)
+++ trunk/Master/texmf-dist/tex/generic/babel/babel.def 2025-04-29 19:45:16 UTC (rev 75053)
@@ -39,7 +39,7 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{babel.def}[2025/04/14 v25.7 Babel common definitions]
+\ProvidesFile{babel.def}[2025/04/29 v25.8 Babel common definitions]
\ifx\AtBeginDocument\@undefined
\def\@empty{}
\def\loadlocalcfg#1{%
@@ -387,7 +387,6 @@
\let\bbl at opt@shorthands\@nnil
\def\bbl at ifshorthand#1#2#3{#2}%
\let\bbl at language@opts\@empty
-\let\bbl at ensureinfo\@gobble
\let\bbl at provide@locale\relax
\ifx\babeloptionstrings\@undefined
\let\bbl at opt@strings\@nnil
@@ -603,8 +602,8 @@
\toks@\expandafter{\bbl at tempc#3}%
\expandafter\edef\csname extras\languagename\endcsname{\the\toks@}%
\fi}
-\def\bbl at version{25.7}
-\def\bbl at date{2025/04/14}
+\def\bbl at version{25.8}
+\def\bbl at date{2025/04/29}
\ifx\language\@undefined
\csname newcount\endcsname\language
\fi
@@ -720,13 +719,13 @@
\expandafter\bbl at set@language\expandafter{\languagename}%
\let\bbl at ifrestoring\@secondoftwo}
\chardef\localeid\z@
-\def\bbl at id@last{0} % No real need for a new counter
+\gdef\bbl at id@last{0} % No real need for a new counter
\def\bbl at id@assign{%
\bbl at ifunset{bbl at id@@\languagename}%
{\count@\bbl at id@last\relax
\advance\count@\@ne
\global\bbl at csarg\chardef{id@@\languagename}\count@
- \edef\bbl at id@last{\the\count@}%
+ \xdef\bbl at id@last{\the\count@}%
\ifcase\bbl at engine\or
\directlua{
Babel.locale_props[\bbl at id@last] = {}
@@ -788,8 +787,6 @@
\newif\ifbbl at usedategroup
\let\bbl at savedextras\@empty
\def\bbl at switch#1{% from select@, foreign@
- % make sure there is info for the language if so requested
- \bbl at ensureinfo{#1}%
% restore
\originalTeX
\expandafter\def\expandafter\originalTeX\expandafter{%
@@ -1221,6 +1218,15 @@
\catcode`\@=11\relax
\chardef\eqcatcode=\catcode`\=
\catcode`\==12\relax
+ \@ifpackagewith{babel}{ensureinfo=off}{}%
+ {\ifx\InputIfFileExists\@undefined\else
+ \bbl at ifunset{bbl at lname@#1}%
+ {{\let\bbl at ensuring\@empty % Flag used in babel-serbianc.tex
+ \def\languagename{#1}%
+ \bbl at id@assign
+ \bbl at load@info{#1}}}%
+ {}%
+ \fi}%
\expandafter\if\expandafter\@backslashchar
\expandafter\@car\string#2\@nil
\ifx#2\@undefined\else
@@ -1237,7 +1243,7 @@
\catcode`\@=\atcatcode \let\atcatcode\relax
\catcode`\==\eqcatcode \let\eqcatcode\relax
\endinput}
-\def\bbl at afterldf#1{%
+\def\bbl at afterldf{%
\bbl at afterlang
\let\bbl at afterlang\relax
\let\BabelModifiers\relax
@@ -1244,7 +1250,7 @@
\let\bbl at screset\relax}%
\def\ldf at finish#1{%
\loadlocalcfg{#1}%
- \bbl at afterldf{#1}%
+ \bbl at afterldf
\expandafter\main at language\expandafter{#1}%
\catcode`\@=\atcatcode \let\atcatcode\relax
\catcode`\==\eqcatcode \let\eqcatcode\relax}
Modified: trunk/Master/texmf-dist/tex/generic/babel/babel.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/babel.sty 2025-04-29 17:38:33 UTC (rev 75052)
+++ trunk/Master/texmf-dist/tex/generic/babel/babel.sty 2025-04-29 19:45:16 UTC (rev 75053)
@@ -34,7 +34,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{babel}%
- [2025/04/14 v25.7
+ [2025/04/29 v25.8
The multilingual framework for pdfLaTeX, LuaLaTeX and XeLaTeX]
\@ifpackagewith{babel}{debug}
{\providecommand\bbl at trace[1]{\message{^^J[ #1 ]}}%
@@ -474,8 +474,8 @@
\expandafter\@secondoftwo
\fi}
\fi
-\def\bbl at version{25.7}
-\def\bbl at date{2025/04/14}
+\def\bbl at version{25.8}
+\def\bbl at date{2025/04/29}
\ifx\language\@undefined
\csname newcount\endcsname\language
\fi
@@ -591,13 +591,13 @@
\expandafter\bbl at set@language\expandafter{\languagename}%
\let\bbl at ifrestoring\@secondoftwo}
\chardef\localeid\z@
-\def\bbl at id@last{0} % No real need for a new counter
+\gdef\bbl at id@last{0} % No real need for a new counter
\def\bbl at id@assign{%
\bbl at ifunset{bbl at id@@\languagename}%
{\count@\bbl at id@last\relax
\advance\count@\@ne
\global\bbl at csarg\chardef{id@@\languagename}\count@
- \edef\bbl at id@last{\the\count@}%
+ \xdef\bbl at id@last{\the\count@}%
\ifcase\bbl at engine\or
\directlua{
Babel.locale_props[\bbl at id@last] = {}
@@ -659,8 +659,6 @@
\newif\ifbbl at usedategroup
\let\bbl at savedextras\@empty
\def\bbl at switch#1{% from select@, foreign@
- % make sure there is info for the language if so requested
- \bbl at ensureinfo{#1}%
% restore
\originalTeX
\expandafter\def\expandafter\originalTeX\expandafter{%
@@ -1092,6 +1090,15 @@
\catcode`\@=11\relax
\chardef\eqcatcode=\catcode`\=
\catcode`\==12\relax
+ \@ifpackagewith{babel}{ensureinfo=off}{}%
+ {\ifx\InputIfFileExists\@undefined\else
+ \bbl at ifunset{bbl at lname@#1}%
+ {{\let\bbl at ensuring\@empty % Flag used in babel-serbianc.tex
+ \def\languagename{#1}%
+ \bbl at id@assign
+ \bbl at load@info{#1}}}%
+ {}%
+ \fi}%
\expandafter\if\expandafter\@backslashchar
\expandafter\@car\string#2\@nil
\ifx#2\@undefined\else
@@ -1108,7 +1115,7 @@
\catcode`\@=\atcatcode \let\atcatcode\relax
\catcode`\==\eqcatcode \let\eqcatcode\relax
\endinput}
-\def\bbl at afterldf#1{%
+\def\bbl at afterldf{%
\bbl at afterlang
\let\bbl at afterlang\relax
\let\BabelModifiers\relax
@@ -1115,7 +1122,7 @@
\let\bbl at screset\relax}%
\def\ldf at finish#1{%
\loadlocalcfg{#1}%
- \bbl at afterldf{#1}%
+ \bbl at afterldf
\expandafter\main at language\expandafter{#1}%
\catcode`\@=\atcatcode \let\atcatcode\relax
\catcode`\==\eqcatcode \let\eqcatcode\relax}
@@ -2633,19 +2640,33 @@
% == Store ini data in \bbl at inidata ==
\catcode`\[=12 \catcode`\]=12 \catcode`\==12 \catcode`\&=12
\catcode`\;=12 \catcode`\|=12 \catcode`\%=14 \catcode`\-=12
+ \ifnum#2=\m at ne % Just for the info
+ \edef\languagename{tag \bbl at metalang}%
+ \fi
\bbl at info{Importing
\ifcase#2font and identification \or basic \fi
data for \languagename\\%
from babel-#1.ini. Reported}%
- \ifnum#2=\z@
+ \ifnum#2<\@ne
\global\let\bbl at inidata\@empty
- \let\bbl at inistore\bbl at inistore@min % Remember it's local
+ \let\bbl at inistore\bbl at inistore@min % Remember it's local
\fi
\def\bbl at section{identification}%
- \bbl at exp{\\\bbl at inistore tag.ini=#1\\\@@}%
- \bbl at inistore load.level=#2\@@
+ \bbl at exp{%
+ \\\bbl at inistore tag.ini=#1\\\@@
+ \\\bbl at inistore load.level=\ifnum#2<\@ne 0\else #2\fi\\\@@}%
\bbl at loop@ini\bbl at readstream
% == Process stored data ==
+ \ifnum#2=\m at ne
+ \def\bbl at tempa##1 ##2\@@{##1}% Get first name
+ \def\bbl at elt##1##2##3{%
+ \bbl at ifsamestring{identification/name.babel}{##1/##2}%
+ {\edef\languagename{\bbl at tempa##3 \@@}%
+ \bbl at id@assign
+ \def\bbl at elt####1####2####3{}}%
+ {}}%
+ \bbl at inidata
+ \fi
\bbl at csarg\xdef{lini@\languagename}{#1}%
\bbl at read@ini at aux
% == 'Export' data ==
@@ -2773,9 +2794,7 @@
\bbl at exportkey{extu}{identification.extension.u.tag.bcp47}{}%
\bbl at exportkey{extx}{identification.extension.x.tag.bcp47}{}%
% Also maps bcp47 -> languagename
- \ifbbl at bcptoname
- \bbl at csarg\xdef{bcp at map@\bbl at cl{tbcp}}{\languagename}%
- \fi
+ \bbl at csarg\xdef{bcp at map@\bbl at cl{tbcp}}{\languagename}%
\ifcase\bbl at engine\or
\directlua{%
Babel.locale_props[\the\bbl at cs{id@@\languagename}].script
@@ -2782,7 +2801,7 @@
= '\bbl at cl{sbcp}'}%
\fi
% Conditional
- \ifnum#1>\z@ % 0 = only info, 1, 2 = basic, (re)new
+ \ifnum#1>\z@ % -1 or 0 = only info, 1 = basic, 2 = (re)new
\bbl at exportkey{calpr}{date.calendar.preferred}{}%
\bbl at exportkey{lnbrk}{typography.linebreaking}{h}%
\bbl at exportkey{hyphr}{typography.hyphenrules}{}%
@@ -3060,7 +3079,7 @@
\newcommand\babelcalendar[2][\the\year-\the\month-\the\day]{%
\@nameuse{bbl at ca@#2}#1\@@}
\newcommand\BabelDateSpace{\nobreakspace}
-\newcommand\BabelDateDot{.\@} % TODO. \let instead of repeating
+\newcommand\BabelDateDot{.\@}
\newcommand\BabelDated[1]{{\number#1}}
\newcommand\BabelDatedd[1]{{\ifnum#1<10 0\fi\number#1}}
\newcommand\BabelDateM[1]{{\number#1}}
@@ -3116,7 +3135,7 @@
\bbl at csarg\let{inikv at transforms.posthyphenation}\bbl at inikv
\def\bbl at transforms@aux#1#2#3#4,#5\relax{%
#1[#2]{#3}{#4}{#5}}
-\begingroup % A hack. TODO. Don't require a specific order
+\begingroup
\catcode`\%=12
\catcode`\&=14
\gdef\bbl at transforms#1#2#3{&%
@@ -3191,26 +3210,6 @@
\fi}}%
\fi
\bbl at csarg\bbl at toglobal{lsys@#1}}
-\def\bbl at xenohyph@d{%
- \bbl at ifset{bbl at prehc@\languagename}%
- {\ifnum\hyphenchar\font=\defaulthyphenchar
- \iffontchar\font\bbl at cl{prehc}\relax
- \hyphenchar\font\bbl at cl{prehc}\relax
- \else\iffontchar\font"200B
- \hyphenchar\font"200B
- \else
- \bbl at warning
- {Neither 0 nor ZERO WIDTH SPACE are available\\%
- in the current font, and therefore the hyphen\\%
- will be printed. Try changing the fontspec's\\%
- 'HyphenChar' to another value, but be aware\\%
- this setting is not safe (see the manual).\\%
- Reported}%
- \hyphenchar\font\defaulthyphenchar
- \fi\fi
- \fi}%
- {\hyphenchar\font\defaulthyphenchar}}
- % \fi}
\def\bbl at load@info#1{%
\def\BabelBeforeIni##1##2{%
\begingroup
@@ -3279,7 +3278,7 @@
\bbl at cs{cntr@#1.3@\languagename}#6%
\bbl at cs{cntr@#1.2@\languagename}#7%
\bbl at cs{cntr@#1.1@\languagename}#8%
- \ifnum#6#7#8>\z@ % TODO. An ad hoc rule for Greek. Ugly.
+ \ifnum#6#7#8>\z@
\bbl at ifunset{bbl at cntr@#1.S.321@\languagename}{}%
{\bbl at cs{cntr@#1.S.321@\languagename}}%
\fi}%
@@ -3358,19 +3357,7 @@
\@namedef{bbl at info@extension.t.tag.bcp47}{extt}
\@namedef{bbl at info@extension.u.tag.bcp47}{extu}
\@namedef{bbl at info@extension.x.tag.bcp47}{extx}
-\let\bbl at ensureinfo\@gobble
-\newcommand\BabelEnsureInfo{%
- \ifx\InputIfFileExists\@undefined\else
- \def\bbl at ensureinfo##1{%
- \bbl at ifunset{bbl at lname@##1}{\bbl at load@info{##1}}{}}%
- \fi
- \bbl at foreach\bbl at loaded{{%
- \let\bbl at ensuring\@empty % Flag used in a couple of babel-*.tex files
- \def\languagename{##1}%
- \bbl at ensureinfo{##1}}}}
-\@ifpackagewith{babel}{ensureinfo=off}{}%
- {\AtEndOfPackage{% Test for plain.
- \ifx\@undefined\bbl at loaded\else\BabelEnsureInfo\fi}}
+\let\BabelEnsureInfo\relax
\newcommand\getlocaleproperty{%
\@ifstar\bbl at getproperty@s\bbl at getproperty@x}
\def\bbl at getproperty@s#1#2#3{%
@@ -3402,8 +3389,11 @@
\bbl at error{base-on-the-fly}{}{}{}%
\fi
\let\bbl at auxname\languagename % Still necessary.
- \bbl at ifunset{bbl at bcp@map@\languagename}{}% Move uplevel??
- {\edef\languagename{\@nameuse{bbl at bcp@map@\languagename}}}%
+ \ifbbl at bcptoname
+ \bbl at ifunset{bbl at bcp@map@\languagename}{}% Move uplevel??
+ {\edef\languagename{\@nameuse{bbl at bcp@map@\languagename}}%
+ \let\localename\languagename}%
+ \fi
\ifbbl at bcpallowed
\expandafter\ifx\csname date\languagename\endcsname\relax
\expandafter
@@ -3410,7 +3400,7 @@
\bbl at bcplookup\languagename-\@empty-\@empty-\@empty\@@
\ifx\bbl at bcp\relax\else % Returned by \bbl at bcplookup
\edef\languagename{\bbl at bcp@prefix\bbl at bcp}%
- \edef\localename{\bbl at bcp@prefix\bbl at bcp}%
+ \let\localename\languagename
\expandafter\ifx\csname date\languagename\endcsname\relax
\let\bbl at initoload\bbl at bcp
\bbl at exp{\\\babelprovide[\bbl at autoload@bcpoptions]{\languagename}}%
@@ -3517,8 +3507,7 @@
\def\bbl at autoload@bcpoptions{#1}}
\newif\ifbbl at bcptoname
\@namedef{bbl at ADJ@bcp47.toname at on}{%
- \bbl at bcptonametrue
- \BabelEnsureInfo}
+ \bbl at bcptonametrue}
\@namedef{bbl at ADJ@bcp47.toname at off}{%
\bbl at bcptonamefalse}
\@namedef{bbl at ADJ@prehyphenation.disable at nohyphenation}{%
@@ -4079,6 +4068,21 @@
\DeclareOption{russian}{\bbl at try@load at lang{}{russianb}{}}
\DeclareOption{ukrainian}{\bbl at try@load at lang{}{ukraineb}{}}
\DeclareOption{uppersorbian}{\bbl at try@load at lang{}{usorbian}{}}
+\ifx\GetDocumentProperties\@undefined\else
+ \edef\bbl at metalang{\GetDocumentProperties{document/lang}}%
+ \ifx\bbl at metalang\@empty\else
+ \begingroup
+ \expandafter
+ \bbl at bcplookup\bbl at metalang-\@empty-\@empty-\@empty\@@
+ \bbl at read@ini{\bbl at bcp}\m at ne
+ \xdef\bbl at language@opts{\bbl at language@opts,\languagename}%
+ \ifx\bbl at opt@main\@nnil
+ \global\let\bbl at opt@main\languagename
+ \fi
+ \bbl at info{Passing \languagename\space to babel}%
+ \endgroup
+ \fi
+\fi
\ifx\bbl at opt@config\@nnil
\@ifpackagewith{babel}{noconfigs}{}%
{\InputIfFileExists{bblopts.cfg}%
@@ -4114,10 +4118,13 @@
\fi}%
\fi
\else
- \bbl at info{Main language set with 'main='. Except if you have\\%
- problems, prefer the default mechanism for setting\\%
- the main language, i.e., as the last declared.\\%
- Reported}
+ \ifx\bbl at metalang\@undefined\else\ifx\bbl at metalang\@empty\else
+ \bbl at afterfi\expandafter\@gobble
+ \fi\fi % except if explicit lang metatag:
+ {\bbl at info{Main language set with 'main='. Except if you have\\%
+ problems, prefer the default mechanism for setting\\%
+ the main language, i.e., as the last declared.\\%
+ Reported}}
\fi
\ifx\bbl at opt@main\@nnil\else
\bbl at ncarg\let\bbl at loadmain{ds@\bbl at opt@main}%
@@ -4134,7 +4141,7 @@
\DeclareOption{#1}{%
\bbl at ldfinit
\babelprovide[@import]{#1}% %%%%%
- \bbl at afterldf{}}%
+ \bbl at afterldf}%
\fi
\fi}
\bbl at foreach\bbl at tempf{%
@@ -4151,7 +4158,7 @@
{\DeclareOption{#1}{%
\bbl at ldfinit
\babelprovide[@import]{#1}% %%%%%%
- \bbl at afterldf{}}}%
+ \bbl at afterldf}}%
{}%
\fi
\fi}
@@ -4190,7 +4197,7 @@
\\\babelprovide
[\bbl at opt@provide, at import,main]% %%%%%
{\bbl at opt@main}}%
- \bbl at afterldf{}
+ \bbl at afterldf
\DeclareOption{\bbl at opt@main}{}
\else % case 0,2 (main is ldf)
\ifx\bbl at loadmain\relax
Modified: trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg 2025-04-29 17:38:33 UTC (rev 75052)
+++ trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg 2025-04-29 19:45:16 UTC (rev 75053)
@@ -37,10 +37,10 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{hyphen.cfg}[2025/04/14 v25.7 Babel hyphens]
+\ProvidesFile{hyphen.cfg}[2025/04/29 v25.8 Babel hyphens]
\xdef\bbl at format{\jobname}
-\def\bbl at version{25.7}
-\def\bbl at date{2025/04/14}
+\def\bbl at version{25.8}
+\def\bbl at date{2025/04/29}
\ifx\AtBeginDocument\@undefined
\def\@empty{}
\fi
Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/shared/babel-Hebr.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/shared/babel-Hebr.ini 2025-04-29 17:38:33 UTC (rev 75052)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/shared/babel-Hebr.ini 2025-04-29 19:45:16 UTC (rev 75053)
@@ -33,4 +33,10 @@
transliteration.cj.6.1 = { string = {1|o*|וֹוּ} }
transliteration.cj.7.0 = { ([aAbdeEghikKlmMnNoOpPqrstuUwyz{*}:'’`‘;]) }
transliteration.cj.7.1 = { string = {1|aAbdeEghikKlmMnNoOpPqrstuUwyz*:'’`‘;|ַָבדֵֶגהִכךלמםנןֹוֹפףקרסתֻוּויזְּאאעע׃} }
+;
+justification.interletter.1.0 = { [֑-ׇֽֿׁׂׅׄא-ײﬞ][א-ײ] }
+justification.interletter.1.1 = {}
+justification.interletter.1.2 = { insert, penalty = 10000 }
+justification.interletter.1.3 = { insert, spacefactor = 0 {interletter.plus|.5} 0 }
+justification.interletter.1.4 = {}
Modified: trunk/Master/texmf-dist/tex/generic/babel/nil.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/nil.ldf 2025-04-29 17:38:33 UTC (rev 75052)
+++ trunk/Master/texmf-dist/tex/generic/babel/nil.ldf 2025-04-29 19:45:16 UTC (rev 75053)
@@ -32,7 +32,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension |.ins|) which are part of the distribution.
%%
-\ProvidesLanguage{nil}[2025/04/14 v25.7 Nil language]
+\ProvidesLanguage{nil}[2025/04/29 v25.8 Nil language]
\LdfInit{nil}{datenil}
\ifx\l at nil\@undefined
\newlanguage\l at nil
Modified: trunk/Master/texmf-dist/tex/generic/babel/xebabel.def
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/xebabel.def 2025-04-29 17:38:33 UTC (rev 75052)
+++ trunk/Master/texmf-dist/tex/generic/babel/xebabel.def 2025-04-29 19:45:16 UTC (rev 75053)
@@ -258,6 +258,25 @@
\bbl at csarg\def{famrst@#4}{\bbl at font@set{#1}#2#3}}
\def\bbl at font@fams{rm,sf,tt}
\def\bbl at provide@extra#1{}
+\def\bbl at xenohyph@d{%
+ \bbl at ifset{bbl at prehc@\languagename}%
+ {\ifnum\hyphenchar\font=\defaulthyphenchar
+ \iffontchar\font\bbl at cl{prehc}\relax
+ \hyphenchar\font\bbl at cl{prehc}\relax
+ \else\iffontchar\font"200B
+ \hyphenchar\font"200B
+ \else
+ \bbl at warning
+ {Neither 0 nor ZERO WIDTH SPACE are available\\%
+ in the current font, and therefore the hyphen\\%
+ will be printed. Try changing the fontspec's\\%
+ 'HyphenChar' to another value, but be aware\\%
+ this setting is not safe (see the manual).\\%
+ Reported}%
+ \hyphenchar\font\defaulthyphenchar
+ \fi\fi
+ \fi}%
+ {\hyphenchar\font\defaulthyphenchar}}
\ifnum\xe at alloc@intercharclass<\thr@@
\xe at alloc@intercharclass\thr@@
\fi
More information about the tex-live-commits
mailing list.