texlive[67485] Master/texmf-dist: babel (26jun23)
commits+karl at tug.org
commits+karl at tug.org
Mon Jun 26 22:20:23 CEST 2023
Revision: 67485
http://tug.org/svn/texlive?view=revision&revision=67485
Author: karl
Date: 2023-06-26 22:20:23 +0200 (Mon, 26 Jun 2023)
Log Message:
-----------
babel (26jun23)
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/la/babel-la-x-classic.ini
trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-ecclesia.ini
trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-medievallatin.tex
trunk/Master/texmf-dist/tex/generic/babel/luababel.def
trunk/Master/texmf-dist/tex/generic/babel/nil.ldf
trunk/Master/texmf-dist/tex/generic/babel/txtbabel.def
trunk/Master/texmf-dist/tex/generic/babel/xebabel.def
Added Paths:
-----------
trunk/Master/texmf-dist/tex/generic/babel/locale/fa/babel-farsi.tex
trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-classicallatin.tex
trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-ecclesiasticallatin.tex
Removed Paths:
-------------
trunk/Master/texmf-dist/tex/generic/babel/locale/vi/babel-vietnam.tex
Modified: trunk/Master/texmf-dist/doc/latex/babel/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/babel/README.md 2023-06-26 20:19:05 UTC (rev 67484)
+++ trunk/Master/texmf-dist/doc/latex/babel/README.md 2023-06-26 20:20:23 UTC (rev 67485)
@@ -1,6 +1,6 @@
-## Babel 3.89
+## Babel 3.90
-2023-05-11
+2023-06-26
This package manages culturally-determined typographical (and other)
rules, and hyphenation patterns for a wide range of languages. Many
@@ -10,9 +10,9 @@
The latest stable version is available on <https://ctan.org/pkg/babel>.
-Changes in version 3.89 are described in:
+Changes in version 3.90 are described in:
-https://latex3.github.io/babel/news/whats-new-in-babel-3.89.html
+https://latex3.github.io/babel/news/whats-new-in-babel-3.90.html
Apart from the manual, you can find information on some aspects of babel at:
@@ -41,7 +41,7 @@
You may also report them to the current maintainer more informally on:
- http://www.texnia.com/contact.html
+ https://latex3.github.io/babel/contact.html
Bugs related to specific languages are best reported to their
respective authors.
@@ -48,14 +48,18 @@
### Summary of latest changes
```
-3.89 2023-05-11
- * Deprecating \SetCase, \aliasshorthands, and 'strings' package
- options in the manual.
- * The manual has been split in two documents: 'babel.pdf' is the
- user guide, and 'babel-code.pdf' is the code.
- * Alternative syntax to pass 'modifiers' to babel languages.
- * Code cleaned up: babel.def has been shortened dramatically,
- and babel.sty is a bit smaller.
+3.90 2023-06-26
+ * Main language selected at begindocument/before (#240).
+ * Option to limit the number of inserted tatweel.
+ * New macros `\BabelUppercaseMapping` and
+ `\BabelLowercaseMapping`.
+ * Fix: line breaking was sometimes prevented when switching the
+ text direction (#213).
+ * Locale names (in ini files):
+ - `classicallatin` and `ecclesiasticallatin` now preferred to
+ `classiclatin` and `ecclesiasticlatin`.
+ - `farsi` is a synonymous for `persian`.
+ - `vietnam` removed - use `vietnamese`.
```
### 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 2023-06-26 20:19:05 UTC (rev 67484)
+++ trunk/Master/texmf-dist/source/latex/babel/babel.dtx 2023-06-26 20:20:23 UTC (rev 67485)
@@ -32,7 +32,7 @@
%
% \iffalse
%<*filedriver>
-\ProvidesFile{babel.dtx}[2023/05/11 v3.89 The Babel package]
+\ProvidesFile{babel.dtx}[2023/06/26 v3.90 The Babel package]
\documentclass{ltxdoc}
\GetFileInfo{babel.dtx}
\usepackage{fontspec}
@@ -48,11 +48,7 @@
ItalicFont = NotoSans-Italic.ttf,
BoldItalicFont = NotoSans-BoldItalic.ttf]
{NotoSans-Regular.ttf}
-\setmonofont[
- Scale=.88, FakeStretch=.95,
- BoldFont = NotoMono-Regular.ttf,
- ItalicFont = NotoMono-Regular.ttf,
- BoldItalicFont = NotoMono-Regular.ttf]{NotoMono-Regular.ttf}
+\setmonofont[Scale=.86, FakeStretch=.97]{DejaVu Sans Mono}
\raggedright
\addtolength{\textwidth}{25pt}
\addtolength{\textheight}{3.5cm}
@@ -110,6 +106,7 @@
\newtheorem{note}{Note}
\newtheorem{example}{Example}
\newtheorem{troubleshooting}{Troubleshooting}
+\newtheorem{more}{More}
\let\bblxv\verbatim
\let\bblexv\endverbatim
\newcommand\setengine{\def\engine}
@@ -283,7 +280,9 @@
\href{https://github.com/latex3/babel/issues}{GitHub}, which is much
better than just complaining on an e-mail list or a web forum. Remember
\textit{warnings are not errors} by themselves, they just warn about
-possible problems or incompatibilities.
+possible problems or incompatibilities. Hyphenation rules are
+maintained separately
+\href{https://github.com/hyphenation/tex-hyphen}{here}.
\item[\sffamily\color{messages}How can I contribute a new
language?] See section \ref{contribute} for contributing a language.
@@ -300,7 +299,7 @@
there are many
\href{https://github.com/latex3/babel/tree/master/samples}{sample
files}.
-
+
\item[\sffamily\color{messages}Where is the code?]
Run |lualatex --jobname=babel-code \let\babelcode\relax\input{babel.dtx}|.
\end{description}
@@ -437,7 +436,12 @@
\begin{verbatim}
\usepackage[_pdflang=es-MX_]{hyperref}
\end{verbatim}
-This is not currently done by \babel{} and you must set it by hand.
+This is not currently done by \babel{} and you must set it by hand. The
+document language can be also set with |\DocumentMetadata|, before
+|\documentclass|; for example:
+\begin{verbatim}
+\DocumentMetadata{_lang=es-MX_}
+\end{verbatim}
\end{note}
\begin{note}
@@ -583,6 +587,14 @@
is worth remembering that |\babelfont| does \textit{not} load any font
until required, so that it can be used just in case.
+\New{3.84} With \pdftex, when a language is loaded on the fly
+(actually, with |\babelprovide|, because this is the macro used
+internally to load it) selectors now set the font encoding based on the
+list provided when loading |fontenc|. Not all scripts have an
+associated encoding, so this feature works only with Latin, Cyrillic,
+Greek, Arabic, Hebrew, Cherokee, Armenian, and Georgian, provided a
+suitable font is found.
+
\begin{example}
A trivial document with the default font in English and Spanish, and
FreeSerif in Russian is:
@@ -610,14 +622,6 @@
for |lubakatanga|). See section \ref{bcp47} for further details.
\end{note}
-\New{3.84} With \pdftex, when a language is loaded on the fly
-(actually, with |\babelprovide|, because this is the macro used
-internally to load it) selectors now set the font encoding based on the
-list provided when loading |fontenc|. Not all scripts have an
-associated encoding, so this feature works only with Latin, Cyrillic,
-Greek, Arabic, Hebrew, Cherokee, Armenian, and Georgian, provided a
-suitable font is found.
-
\subsection{Modifiers}
\New{3.9c} The basic behavior of some languages can be modified when
@@ -1217,6 +1221,8 @@
footlines are not touched (only marks), and if they contain
language-dependent macros (which is not usual) there may be unexpected
results. With this option you may set the language in heads and foots.
+An alternative is to set the language explicitly when heads and foots
+are redefined.
\Describe{noconfigs}{} Global and language default config files are
not loaded, so you can make sure your document is not spoilt by an
@@ -1358,8 +1364,6 @@
\begin{example}
Although Georgian has its own \texttt{ldf} file, here is how to
declare this language with an |ini| file in Unicode engines.
-\begingroup
-\setmonofont[Scale=.87,Script=Georgian]{DejaVu Sans Mono}
\setengine{luatex/xetex}
\begin{verbatim}
\documentclass{book}
@@ -1379,9 +1383,13 @@
\end{document}
\end{verbatim}
-\endgroup
\end{example}
+\begin{more}
+ There is an example of how to use a template |ini| file
+ \href{https://github.com/latex3/babel/issues/176#issuecomment-1080846575}{here}, for Phoenician.
+\end{more}
+
\New{3.49} Alternatively, you can tell babel to load all or some
languages passed as options with |\babelprovide| and not from the |ldf|
file in a few few typical cases. Thus, |provide=*| means ‘load the main
@@ -1451,13 +1459,10 @@
wrongly with the default renderer. The comment about Indic scripts
and \textsf{lualatex} also applies here. Some quick patterns can
help, with something similar to:
-\begingroup
-\setmonofont[Script=Lao,Scale=MatchLowercase]{DejaVu Sans Mono}
\begin{verbatim}
\babelprovide[import, hyphenrules=+]{lao}
\babelpatterns[lao]{1ດ 1ມ 1ອ 1ງ 1ກ 1າ} % Random
\end{verbatim}
-\endgroup
\item[East Asia scripts] Settings for either Simplified of Traditional
should work out of the box, with basic line breaking with any
renderer. Although for a few words and shorts texts the |ini| files
@@ -1505,6 +1510,8 @@
\def\hascapl{\textsuperscript{l}}
\begin{multicols}{2}
+\tag{aa} Afar
+\tag{ab} Abkhazian
\tag{af} Afrikaans\hascapu\hascapl
\tag{agq} Aghem
\tag{ak} Akan
@@ -1526,11 +1533,14 @@
\tag{az-Cyrl} Azerbaijani
\tag{az-Latn} Azerbaijani
\tag{az} Azerbaijani\hascapu\hascapl
+\tag{bal} Baluchi
\tag{bas} Basaa
\tag{be} Belarusian\hascapu\hascapl
\tag{bem} Bemba
\tag{bez} Bena
\tag{bg} Bulgarian\hascapu\hascapl
+\tag{bgc} Haryanvi
+\tag{bho} Bhojpuri
\tag{bm} Bambara
\tag{bn} Bangla\hascapu
\tag{bo} Tibetan\hascapu
@@ -1539,7 +1549,9 @@
\tag{bs-Cyrl} Bosnian
\tag{bs-Latn} Bosnian\hascapu\hascapl
\tag{bs} Bosnian\hascapu\hascapl
+\tag{byn} Blin
\tag{ca} Catalan\hascapu\hascapl
+\tag{cch} Atsam
\tag{ce} Chechen
\tag{cgg} Chiga
\tag{chr} Cherokee
@@ -1546,6 +1558,7 @@
\tag{ckb-Arab} Central Kurdish\hascapu
\tag{ckb-Latn} Central Kurdish\hascapu
\tag{ckb} Central Kurdish\hascapu
+\tag{co} Corsican
\tag{cop} Coptic
\tag{cs} Czech\hascapu\hascapl
\tag{cu-Cyrs} Church Slavic\hascapu
@@ -1593,12 +1606,16 @@
\tag{fr-CA} Canadian French\hascapu\hascapl
\tag{fr-CH} Swiss French\hascapu\hascapl
\tag{fr-LU} French\hascapu\hascapl
+\tag{fr-x-acadian} Acadian\hascapu\hascapl
\tag{fr} French\hascapu\hascapl
\tag{fur} Friulian\hascapu\hascapl
\tag{fy} Western Frisian
\tag{ga} Irish\hascapu\hascapl
+\tag{gaa} Ga
\tag{gd} Scottish Gaelic\hascapu\hascapl
+\tag{gez} Geez
\tag{gl} Galician\hascapu\hascapl
+\tag{gn} Guarani
\tag{grc} Ancient Greek\hascapu\hascapl
\tag{gsw} Swiss German
\tag{gu} Gujarati
@@ -1620,12 +1637,15 @@
\tag{ii} Sichuan Yi
\tag{is} Icelandic\hascapu\hascapl
\tag{it} Italian\hascapu\hascapl
+\tag{iu} Inuktitut
\tag{ja} Japanese\hascapu
\tag{jgo} Ngomba
\tag{jmc} Machame
\tag{ka} Georgian\hascapu
\tag{kab} Kabyle
+\tag{kaj} Jju
\tag{kam} Kamba
+\tag{kcg} Tyap
\tag{kde} Makonde
\tag{kea} Kabuverdianu
\tag{kgp} Kaingang
@@ -1649,13 +1669,14 @@
\tag{ksh} Colognian
\tag{kw} Cornish
\tag{ky} Kyrgyz
-\tag{la-x-classic} Classic Latin\hascapu\hascapl
-\tag{la-x-ecclesia} Ecclesiastic Latin\hascapu\hascapl
+\tag{la-x-classic} Classical Latin\hascapu\hascapl
+\tag{la-x-ecclesia} Ecclesiastical Latin\hascapu\hascapl
\tag{la-x-medieval} Medieval Latin\hascapu\hascapl
\tag{la} Latin\hascapu\hascapl
\tag{lag} Langi
\tag{lb} Luxembourgish\hascapu\hascapl
\tag{lg} Ganda
+\tag{lij} Ligurian
\tag{lkt} Lakota
\tag{ln} Lingala
\tag{lo} Lao\hascapu
@@ -1680,7 +1701,9 @@
\tag{ms} Malay\hascapu\hascapl
\tag{mt} Maltese
\tag{mua} Mundang
+\tag{mus} Muscogee
\tag{my} Burmese
+\tag{myv} Erzya
\tag{mzn} Mazanderani
\tag{naq} Nama
\tag{nb} Norwegian Bokmål\hascapu\hascapl
@@ -1691,7 +1714,11 @@
\tag{nn} Norwegian Nynorsk\hascapu\hascapl
\tag{nnh} Ngiemboon
\tag{no} Norwegian\hascapu\hascapl
+\tag{nqo} N’Ko
+\tag{nr} South Ndebele
+\tag{nso} Northern Sotho
\tag{nus} Nuer
+\tag{ny} Nyanja
\tag{nyn} Nyankole
\tag{oc} Occitan\hascapu\hascapl
\tag{om} Oromo
@@ -1700,13 +1727,16 @@
\tag{pa-Arab} Punjabi
\tag{pa-Guru} Punjabi\hascapu
\tag{pa} Punjabi\hascapu
+\tag{pap} Papiamento
\tag{pl} Polish\hascapu\hascapl
\tag{pms} Piedmontese\hascapu\hascapl
+\tag{prg} Prussian
\tag{ps} Pashto
\tag{pt-BR} Brazilian Portuguese\hascapu\hascapl
\tag{pt-PT} European Portuguese\hascapu\hascapl
\tag{pt} Portuguese\hascapu\hascapl
\tag{qu} Quechua
+\tag{raj} Rajasthani
\tag{rm} Romansh\hascapu\hascapl
\tag{rn} Rundi
\tag{ro-MD} Moldavian\hascapu\hascapl
@@ -1726,6 +1756,7 @@
\tag{saq} Samburu
\tag{sbp} Sangu
\tag{sc} Sardinian
+\tag{scn} Sicilian
\tag{se} Northern Sami\hascapu\hascapl
\tag{seh} Sena
\tag{ses} Koyraboro Senni
@@ -1744,22 +1775,33 @@
\tag{sr-Cyrl-ME} Serbian\hascapu\hascapl
\tag{sr-Cyrl-XK} Serbian\hascapu\hascapl
\tag{sr-Cyrl} Serbian\hascapu\hascapl
+\tag{sr-ijekavsk} Serbian\hascapu\hascapl
\tag{sr-Latn-BA} Serbian\hascapu\hascapl
+\tag{sr-Latn-ijekavsk} Serbian\hascapu\hascapl
\tag{sr-Latn-ME} Serbian\hascapu\hascapl
\tag{sr-Latn-XK} Serbian\hascapu\hascapl
\tag{sr-Latn} Serbian\hascapu\hascapl
\tag{sr} Serbian\hascapu\hascapl
+\tag{ss} Swati
+\tag{ssy} Saho
+\tag{st} Southern Sotho
\tag{sv} Swedish\hascapu\hascapl
\tag{sw} Swahili
\tag{syr} Syriac
+\tag{szl} Silesian
\tag{ta} Tamil\hascapu
\tag{te} Telugu\hascapu
\tag{teo} Teso
\tag{th} Thai\hascapu\hascapl
\tag{ti} Tigrinya
+\tag{tig} Tigre
\tag{tk} Turkmen\hascapu\hascapl
+\tag{tn} Tswana
\tag{to} Tongan
+\tag{tpi} Tok Pisin
\tag{tr} Turkish\hascapu\hascapl
+\tag{trv} Taroko
+\tag{ts} Tsonga
\tag{twq} Tasawaq
\tag{tzm} Central Atlas Tamazight
\tag{ug} Uyghur\hascapu
@@ -1772,9 +1814,12 @@
\tag{vai-Latn} Vai
\tag{vai-Vaii} Vai
\tag{vai} Vai
+\tag{ve} Venda
\tag{vi} Vietnamese\hascapu\hascapl
+\tag{vo} Volapük
\tag{vun} Vunjo
\tag{wae} Walser
+\tag{wal} Wolaytta
\tag{xog} Soga
\tag{yav} Yangben
\tag{yi} Yiddish
@@ -1791,7 +1836,6 @@
\tag{zh-Hant} Chinese\hascapu
\tag{zh} Chinese\hascapu
\tag{zu} Zulu
-
\end{multicols}
\endgroup
\hrule
@@ -1806,86 +1850,120 @@
\begingroup
\bigskip\hrule\nobreak
-
+\small
\let\\\par
-\begin{multicols}{2}
-afrikaans\\
+\begin{multicols}{3}
+abkhazian\\
+acadian\\
+afar\\
+afrikaans\\
aghem\\
akan\\
albanian\\
american\\
+americanenglish\\
amharic\\
ancientgreek\\
arabic\\
arabic-algeria\\
-arabic-DZ\\
+arabic-dz\\
+arabic-eg\\
+arabic-egypt\\
+arabic-iq\\
+arabic-iraq\\
+arabic-jo\\
+arabic-jordan\\
+arabic-lb\\
+arabic-lebanon\\
+arabic-ma\\
arabic-morocco\\
-arabic-MA\\
+arabic-palestinianterritories\\
+arabic-ps\\
+arabic-sa\\
+arabic-saudiarabia\\
+arabic-sy\\
arabic-syria\\
-arabic-SY\\
+arabic-tn\\
+arabic-tunisia\\
armenian\\
assamese\\
asturian\\
asu\\
+atsam\\
australian\\
+australianenglish\\
austrian\\
+azerbaijani\\
azerbaijani-cyrillic\\
azerbaijani-cyrl\\
azerbaijani-latin\\
azerbaijani-latn\\
-azerbaijani\\
bafia\\
+baluchi\\
bambara\\
+bangla\\
basaa\\
basque\\
belarusian\\
bemba\\
bena\\
-bangla\\
+bengali\\
+bhojpuri\\
+blin\\
bodo\\
+bosnian\\
bosnian-cyrillic\\
bosnian-cyrl\\
bosnian-latin\\
bosnian-latn\\
-bosnian\\
brazilian\\
+brazilianportuguese\\
breton\\
british\\
+britishenglish\\
bulgarian\\
burmese\\
canadian\\
+canadianenglish\\
cantonese\\
catalan\\
centralatlastamazight\\
centralkurdish\\
+centralkurdish-latin\\
+centralkurdish-latn\\
chechen\\
cherokee\\
chiga\\
+chinese\\
+chinese-hans\\
chinese-hans-hk\\
chinese-hans-mo\\
chinese-hans-sg\\
-chinese-hans\\
+chinese-hant\\
chinese-hant-hk\\
chinese-hant-mo\\
-chinese-hant\\
+chinese-simplified\\
chinese-simplified-hongkongsarchina\\
chinese-simplified-macausarchina\\
chinese-simplified-singapore\\
-chinese-simplified\\
+chinese-traditional\\
chinese-traditional-hongkongsarchina\\
chinese-traditional-macausarchina\\
-chinese-traditional\\
-chinese\\
churchslavic\\
churchslavic-cyrs\\
+churchslavic-glag\\
+churchslavic-glagolitic\\
churchslavic-oldcyrillic\footnote{The name in the CLDR
is Old Church Slavonic Cyrillic, but it has been shortened
for practical reasons.}\\
churchsslavic-glag\\
-churchsslavic-glagolitic\\
+churchslavonic\\
+classicallatin\\
colognian\\
+coptic\\
cornish\\
+corsican\\
croatian\\
czech\\
danish\\
@@ -1892,7 +1970,9 @@
duala\\
dutch\\
dzongkha\\
+ecclesiasticallatin\\
embu\\
+english\\
english-au\\
english-australia\\
english-ca\\
@@ -1903,41 +1983,52 @@
english-unitedkingdom\\
english-unitedstates\\
english-us\\
-english\\
+erzya\\
esperanto\\
estonian\\
+europeanportuguese\\
ewe\\
ewondo\\
faroese\\
+farsi\\
filipino\\
finnish\\
+french\\
french-be\\
french-belgium\\
french-ca\\
french-canada\\
+french-canadianfrench\\
french-ch\\
french-lu\\
french-luxembourg\\
+french-swissfrench\\
french-switzerland\\
-french\\
friulian\\
fulah\\
+ga\\
galician\\
ganda\\
+geez\\
georgian\\
+german\\
german-at\\
german-austria\\
+german-austria-traditional\\
german-ch\\
german-switzerland\\
-german\\
+german-switzerland-traditional\\
+german-traditional\\
greek\\
+guarani\\
gujarati\\
gusii\\
+haryanvi\\
+hausa\\
hausa-gh\\
hausa-ghana\\
hausa-ne\\
hausa-niger\\
-hausa\\
hawaiian\\
hebrew\\
hindi\\
@@ -1947,12 +2038,15 @@
inarisami\\
indonesian\\
interlingua\\
+inuktitut\\
irish\\
italian\\
japanese\\
+jju\\
jolafonyi\\
kabuverdianu\\
kabyle\\
+kaingang\\
kako\\
kalaallisut\\
kalenjin\\
@@ -1965,18 +2059,22 @@
kinyarwanda\\
konkani\\
korean\\
+korean-han\\
+korean-hani\\
koyraborosenni\\
koyrachiini\\
+kurmanji\\
kwasio\\
kyrgyz\\
lakota\\
langi\\
lao\\
+latin\\
latvian\\
+ligurian\\
lingala\\
lithuanian\\
lowersorbian\\
-lsorbian\\
lubakatanga\\
luo\\
luxembourgish\\
@@ -1986,11 +2084,11 @@
makhuwameetto\\
makonde\\
malagasy\\
+malay\\
malay-bn\\
malay-brunei\\
malay-sg\\
malay-singapore\\
-malay\\
malayalam\\
maltese\\
manx\\
@@ -1997,58 +2095,81 @@
marathi\\
masai\\
mazanderani\\
+medievallatin\\
meru\\
meta\\
mexican\\
+mexicanspanish\\
+moldavian\\
mongolian\\
+monotonicgreek\\
morisyen\\
mundang\\
+muscogee\\
nama\\
+naustrian\\
nepali\\
newzealand\\
+ngerman\\
ngiemboon\\
ngomba\\
+nheengatu\\
+nko\\
norsk\\
+northernkurdish\\
+northernkurdish-arab\\
+northernkurdish-arabic\\
northernluri\\
northernsami\\
+northernsotho\\
northndebele\\
+norwegian\\
norwegianbokmal\\
norwegiannynorsk\\
nswissgerman\\
nuer\\
+nyanja\\
nyankole\\
nynorsk\\
occitan\\
+odia\\
oriya\\
oromo\\
ossetic\\
+papiamento\\
pashto\\
persian\\
piedmontese\\
polish\\
polytonicgreek\\
+portuguese\\
portuguese-br\\
portuguese-brazil\\
portuguese-portugal\\
portuguese-pt\\
-portuguese\\
+prussian\\
+punjabi\\
punjabi-arab\\
punjabi-arabic\\
punjabi-gurmukhi\\
punjabi-guru\\
-punjabi\\
quechua\\
+rajasthani\\
romanian\\
+romanian-md\\
+romanian-moldova\\
romansh\\
rombo\\
rundi\\
russian\\
rwa\\
+saho\\
sakha\\
samburu\\
-samin\\
sango\\
sangu\\
+sanskrit\\
+sanskrit-bangla\\
sanskrit-beng\\
sanskrit-bengali\\
sanskrit-deva\\
@@ -2061,29 +2182,34 @@
sanskrit-mlym\\
sanskrit-telu\\
sanskrit-telugu\\
-sanskrit\\
+sardinian\\
scottishgaelic\\
sena\\
+serbian\\
+serbian-cyrillic\\
serbian-cyrillic-bosniaherzegovina\\
serbian-cyrillic-kosovo\\
serbian-cyrillic-montenegro\\
-serbian-cyrillic\\
+serbian-cyrl\\
serbian-cyrl-ba\\
serbian-cyrl-me\\
serbian-cyrl-xk\\
-serbian-cyrl\\
+serbian-ijekavsk\\
+serbian-latin\\
serbian-latin-bosniaherzegovina\\
serbian-latin-kosovo\\
serbian-latin-montenegro\\
-serbian-latin\\
+serbian-latn\\
serbian-latn-ba\\
+serbian-latn-ijekavsk\\
serbian-latn-me\\
serbian-latn-xk\\
-serbian-latn\\
-serbian\\
+serbianc\\
shambala\\
shona\\
sichuanyi\\
+sicilian\\
+silesian\\
sinhala\\
slovak\\
slovene\\
@@ -2090,36 +2216,48 @@
slovenian\\
soga\\
somali\\
+sorani\\
+southernsotho\\
+southndebele\\
+spanish\\
spanish-mexico\\
spanish-mx\\
-spanish\\
standardmoroccantamazight\\
swahili\\
+swati\\
swedish\\
swissgerman\\
+swisshighgerman\\
+syriac\\
+tachelhit\\
tachelhit-latin\\
tachelhit-latn\\
tachelhit-tfng\\
tachelhit-tifinagh\\
-tachelhit\\
taita\\
tamil\\
+taroko\\
tasawaq\\
telugu\\
teso\\
thai\\
tibetan\\
+tigre\\
tigrinya\\
+tokpisin\\
tongan\\
+tsonga\\
+tswana\\
turkish\\
turkmen\\
+tyap\\
ukenglish\\
ukrainian\\
uppersorbian\\
urdu\\
usenglish\\
-usorbian\\
uyghur\\
+uzbek\\
uzbek-arab\\
uzbek-arabic\\
uzbek-cyrillic\\
@@ -2126,18 +2264,19 @@
uzbek-cyrl\\
uzbek-latin\\
uzbek-latn\\
-uzbek\\
+vai\\
vai-latin\\
vai-latn\\
vai-vai\\
vai-vaii\\
-vai\\
-vietnam\\
+venda\\
vietnamese\\
+volapuk\\
vunjo\\
walser\\
welsh\\
westernfrisian\\
+wolaytta\\
yangben\\
yiddish\\
yoruba\\
@@ -2221,7 +2360,7 @@
% will be disappointed :-). The following example is built ad hoc to
% emulate the final result to avoid dependencies, and therefore it's
% not "real" code.
-\setmonofont[Scale=.87,Script=Hebrew]{DejaVu Sans Mono} \catcode`@=13
+\catcode`@=13
\def@#1{\ifcase#1\relax \egroup \or \bgroup\textdir TLT \else
\bgroup\textdir TRT \fontspec[Scale=.87,Script=Hebrew]{Liberation
Mono} \fi}
@@ -2438,6 +2577,34 @@
Without the optional argument it just loads some aditional tools if
provided by the |ini| file, like extra counters.
+\Describe{\BabelUppercaseMapping}
+ {\marg{locale-name}\marg{codepoint}\marg{output}}
+\DescribeOther{\BabelLowercaseMapping}
+ {\marg{locale-name}\marg{codepoint}\marg{output}}
+
+\New{3.90} These macros are devised as a high level interface for
+declaring case mappings, based on the locale name as declared by or
+with \babel. They are the equivalent of |\DeclareUppercaseMapping| and
+|\DeclareLowercaseMapping| (see \textsf{usrguide.pdf}). The purpose is
+twofold: (1) a user-friendly way to declare them, because
+often BCP 47 tags are not known (and sometimes can be complex);
+(2) if for some reason the tag changes (eg, you decide to tag
+`english` as `en-001` instead of `en-US`), the new mappings will be
+still assigned to that language.
+
+\begin{example} For Classical Latin (no need to know the tag is
+\texttt{la-x-classic}):
+\begin{verbatim}
+ \BabelUppercaseMapping{classicallatin}{`u}{V}
+\end{verbatim}
+\end{example}
+
+\begin{note}
+ There are still some rough edges when declaring a mapping with the
+ |x| extension, or when two \babel{} languages share the same BCP 47
+ tag. These issues will be sorted out in future releases.
+\end{note}
+
\subsection{Creating a language}
\New{3.10} And what if there is no style for your language or none fits
@@ -2486,6 +2653,20 @@
\end{example}
\begin{example}
+ Sometimes treating the IPA as a language makes sense:
+\begin{verbatim}
+\documentclass{article}
+\usepackage[english]{babel}
+\babelprovide{ipa}
+\babelfont[ipa]{rm}{DejaVu Sans}
+\begin{document}
+Blah \foreignlanguage{ipa}{ɔːlˈðəʊ} Blah.
+\end{document}
+\end{verbatim}
+ Then you can define shorthands, transforms (with \luatex), and so on.
+\end{example}
+
+\begin{example}
Locales with names based on BCP 47 codes can be created with
something like:
\begin{verbatim}
@@ -2588,7 +2769,6 @@
Finally, also remember you might not need to load |italian| at all if
there are only a few word in this language (see~\ref{mostlymono}).
-
\end{example}
\Describe{script=}{\meta{script-name}}
@@ -2610,8 +2790,29 @@
\Describe{Alph=}{\meta{counter-name}} Same for |\Alph|.
-\bigskip
+\Describe{casing}{\meta{rules}} \New{3.90} Selects the casing rules in a few
+languages. They are (from \textsf{interface3.pdf}):
+\begin{description}
+ \item[Armenian] |yiwn|, which maps U+0587 to capital ech and yiwn on
+ uppercasing.
+ \item[German] |eszett|, which maps the lowercase \textit{Eszett} to a
+ \textit{großes Eszett}.
+ \item[Greek] |iota|, which converts the \textit{ypogegrammeni} (subscript muted
+ iota) to capital iota when uppercasing.
+\end{description}
+\begin{example} For the latter:
+\begin{verbatim}
+\usepackage[greek]{babel}
+\babelprovide[_casing=iota_]{greek}
+\end{verbatim}
+\end{example}
+
+\smallskip
+\makebox[\linewidth][c]{*\qquad*\qquad*}
+\smallskip
+
+
A few options (only \luatex) set some properties of the writing system
used by the language. These properties are \textit{always} applied to
the script, no matter which language is active. Although somewhat
@@ -2986,7 +3187,7 @@
extension whose singleton is \m{s} (currently the recognized
singletons are |x|, |t| and |u|). The internal syntax can be somewhat
complex, and this feature is still somewhat tentative. An example is
- \textsf{classiclatin} which sets |extension.x.tag.bcp47| to |classic|.
+ \textsf{classicallatin} which sets |extension.x.tag.bcp47| to |classic|.
\New{3.75}
\end{description}
@@ -3671,7 +3872,8 @@
% will be disappointed :-). The following example is built ad hoc to
% emulate the final result to avoid dependencies, and therefore it's
% not "real" code.
-\setmonofont[Scale=.87,Script=Arabic]{DejaVu Sans Mono} \catcode`@=13
+\setmonofont[Scale=.86, FakeStretch=.97,Script=Arabic]{DejaVu Sans Mono}
+\catcode`@=13
\def@#1{\ifcase#1\relax \egroup \or \bgroup\textdir TLT \else
\bgroup\textdir TRT \pardir TRT \fi}
\begin{verbatim}
@@ -3707,7 +3909,8 @@
% will be disappointed :-). The following example is built ad hoc to
% emulate the final result to avoid dependencies, and therefore it's
% not "real" code.
- \setmonofont[Scale=.87,Script=Arabic]{DejaVu Sans Mono} \catcode`@=13
+ \setmonofont[Scale=.86, FakeStretch=.97,Script=Arabic]{DejaVu Sans Mono}
+ \catcode`@=13
\def@#1{\ifcase#1\relax \egroup \or \bgroup\textdir TRT \else
\bgroup\textdir TLT \pardir TLT \fi}
\begin{verbatim}
@@ -4096,7 +4299,7 @@
you can load \babel\ with for each language. Note this list is open and
the current options may be different. It does not include |ini| files
(see below). Except in a few cases (eg, |ngerman|, |serbianc|,
-|acadien|) names are those of the Unicode CLDR (or based on them).
+|acadian|) names are those of the Unicode CLDR (or based on them).
\begin{description}
\itemsep=-\parskip
@@ -4164,7 +4367,7 @@
(\textsf{uppersorbian}), \textsf{vietnam} (\textsf{vietnamese}),
\textsf{northernsami} (\textsf{samin}), \textsf{ukraineb}
(\textsf{ukrainian}). Deprecated names come in many cases from the
- times when they had to be shortened to 8 characters.
+ times when they had to be shortened to 8 characters.
\end{note}
Most of them work out of the box, but some may require extra fonts,
@@ -5132,7 +5335,6 @@
\fi
-
\section{Acknowledgements}
I would like to thank all who volunteered as $\beta$-testers for their
@@ -5264,8 +5466,8 @@
% \section{Tools}
%
% \begin{macrocode}
-%<<version=3.89>>
-%<<date=2023/05/11>>
+%<<version=3.90>>
+%<<date=2023/06/26>>
% \end{macrocode}
%
% \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -6021,8 +6223,8 @@
% \end{macrocode}
%
% With |headfoot=lang| we can set the language used in heads/foots.
-% For example, in babel/3796 just adds |headfoot=english|. It
-% misuses \cs{@resetactivechars} but seems to work.
+% For example, in babel/3796 just add |headfoot=english|. It
+% misuses \cs{@resetactivechars}, but seems to work.
%
% \begin{macrocode}
\ifx\bbl at opt@headfoot\@nnil\else
@@ -7476,12 +7678,18 @@
\string\providecommand\string\babel at aux[2]{}}%
\immediate\write\@mainaux{\string\@nameuse{bbl at beforestart}}%
\fi
+%<-package>
\expandafter\selectlanguage\expandafter{\bbl at main@language}%
+%<+package>
\ifbbl at single % must go after the line above.
\renewcommand\selectlanguage[1]{}%
\renewcommand\foreignlanguage[2]{#2}%
\global\let\babel at aux\@gobbletwo % Also as flag
\fi}
+%<-core>
+\AddToHook{begindocument/before}{%
+ \expandafter\selectlanguage\expandafter{\bbl at main@language}}
+%<+core>
\ifcase\bbl at engine\or
\AtBeginDocument{\pagedir\bodydir} % TODO - a better place
\fi
@@ -10128,9 +10336,10 @@
\let\\\@Alph\<bbl at cntr@\bbl at KVP@Alph @\languagename>}}%
\fi
% == Casing ==
- \bbl at exp{\def\<bbl at casing@\languagename>%
- {\<bbl at lbcp@\languagename>%
- \ifx\bbl at KVP@casing\@nnil\else-x-\bbl at KVP@casing\fi}}%
+ \ifx\bbl at KVP@casing\@nnil\else
+ \bbl at csarg\xdef{casing@\languagename}%
+ {\@nameuse{bbl at casing@\languagename}-x-\bbl at KVP@casing}%
+ \fi
% == Calendars ==
\ifx\bbl at KVP@calendar\@nnil
\edef\bbl at KVP@calendar{\bbl at cl{calpr}}%
@@ -10591,9 +10800,9 @@
\bbl at exp{\\\bbl at exportkey{lname}{identification.name.opentype}%
{\csname bbl at elname@\languagename\endcsname}}%
\bbl at exportkey{tbcp}{identification.tag.bcp47}{}%
+ % Somewhat hackish. TODO
+ \bbl at exportkey{casing}{identification.tag.bcp47}{}%
\bbl at exportkey{lbcp}{identification.language.tag.bcp47}{}%
- % Somewhat hackish. TODO
- \bbl at exportkey{casing}{identification.language.tag.bcp47}{}%
\bbl at exportkey{lotf}{identification.tag.opentype}{dflt}%
\bbl at exportkey{esname}{identification.script.name}{}%
\bbl at exp{\\\bbl at exportkey{sname}{identification.script.name.opentype}%
@@ -11262,8 +11471,18 @@
{\bbl at ifunset{bbl@\csname bbl at info@#1.tag.bcp47\endcsname @#2}{}%
{\bbl at cs{\csname bbl at info@#1.tag.bcp47\endcsname @#2}}}}
\fi
-% Still somewhat hackish:
+% Still somewhat hackish. WIP.
\@namedef{bbl at info@casing.tag.bcp47}{casing}
+\newcommand\BabelUppercaseMapping[3]{%
+ \let\bbl at tempx\languagename
+ \edef\languagename{#1}%
+ \DeclareUppercaseMapping[\BCPdata{casing}]{#2}{#3}%
+ \let\languagename\bbl at tempx}
+\newcommand\BabelLowercaseMapping[3]{%
+ \let\bbl at tempx\languagename
+ \edef\languagename{#1}%
+ \DeclareLowercaseMapping[\BCPdata{casing}]{#2}{#3}%
+ \let\languagename\bbl at tempx}
% \end{macrocode}
%
% With version 3.75 |\BabelEnsureInfo| is executed always, but there is
@@ -12139,7 +12358,7 @@
\bbl at trace{Loading basic (internal) bidi support}
\ifodd\bbl at engine
\else % TODO. Move to txtbabel
- \ifnum\bbl at bidimode>100 \ifnum\bbl at bidimode<200
+ \ifnum\bbl at bidimode>100 \ifnum\bbl at bidimode<200 % Any xe+lua bidi=
\bbl at error
{The bidi method 'basic' is available only in\\%
luatex. I'll continue with 'bidi=default', so\\%
@@ -12157,7 +12376,7 @@
\bbl at loadfontspec % bidi needs fontspec
\usepackage#1{bidi}}%
\fi}
- \ifnum\bbl at bidimode>200
+ \ifnum\bbl at bidimode>200 % Any xe bidi=
\ifcase\expandafter\@gobbletwo\the\bbl at bidimode\or
\bbl at tentative{bidi=bidi}
\bbl at loadxebidi{}
@@ -12169,7 +12388,7 @@
\fi
\fi
% TODO? Separate:
-\ifnum\bbl at bidimode=\@ne
+\ifnum\bbl at bidimode=\@ne % Any bidi= except default=1
\let\bbl at beforeforeign\leavevmode
\ifodd\bbl at engine
\newattribute\bbl at attr@dir
@@ -12302,7 +12521,7 @@
\newtoks\everypar
\everypar=\bbl at severypar
\bbl at severypar{\bbl at xeeverypar\the\everypar}}
- \ifnum\bbl at bidimode>200
+ \ifnum\bbl at bidimode>200 % Any xe bidi=
\let\bbl at textdir@i\@gobbletwo
\let\bbl at xebidipar\@empty
\AddBabelHook{bidi}{foreign}{%
@@ -13268,7 +13487,7 @@
% \begin{macrocode}
%<<*Footnote changes>>
\bbl at trace{Bidi footnotes}
-\ifnum\bbl at bidimode>\z@
+\ifnum\bbl at bidimode>\z@ % Any bidi=
\def\bbl at footnote#1#2#3{%
\@ifnextchar[%
{\bbl at footnote@o{#1}{#2}{#3}}%
@@ -14217,8 +14436,13 @@
\gdef\bbl at arabicjust{%
\let\bbl at arabicjust\relax
\newattribute\bblar at kashida
- \directlua{ Babel.attr_kashida = luatexbase.registernumber'bblar at kashida' }%
+ \newattribute\bblar at kashida@aux % 0, 1=tatweel, 2=diacritics
+ \directlua{% WIP
+ Babel.attr_kashida = luatexbase.registernumber'bblar at kashida'
+ Babel.attr_kashida_aux = luatexbase.registernumber'bblar at kashida@aux'
+ }%
\bblar at kashida=\z@
+ \bblar at kashida@aux=\z@
\bbl at patchfont{{\bbl at parsejalt}}%
\directlua{
Babel.arabic.elong_map = Babel.arabic.elong_map or {}
@@ -14294,6 +14518,7 @@
Babel.arabic.dest = {}
Babel.arabic.justify_factor = 0.95
Babel.arabic.justify_enabled = true
+Babel.arabic.kashida_limit = -1
function Babel.arabic.justify(head)
if not Babel.arabic.justify_enabled then return head end
@@ -14322,6 +14547,7 @@
local width, width_new, full, k_curr, wt_pos, goal, shift
local subst_done = false
local elong_map = Babel.arabic.elong_map
+ local cnt
local last_line
local GLYPH = node.id'glyph'
local KASHIDA = Babel.attr_kashida
@@ -14394,7 +14620,7 @@
if #k_list == 0 then goto next_line end
width = node.dimensions(line.head) % The 'natural' width
- k_curr = #k_list
+ k_curr = #k_list % Traverse backwards, from the end
wt_pos = 1
while width < goal do
@@ -14419,6 +14645,22 @@
end
end
+ % Limit the number of tatweel by removing them. Not very efficient,
+ % but it does the job in a quite predictable way.
+ if Babel.arabic.kashida_limit > -1 then
+ cnt = 0
+ for n in node.traverse_id(GLYPH, line.head) do
+ if n.char == 0x0640 then
+ cnt = cnt + 1
+ if cnt > Babel.arabic.kashida_limit then
+ node.remove(line.head, n)
+ end
+ else
+ cnt = 0
+ end
+ end
+ end
+
::next_line::
% Must take into account marks and ins, see luatex manual.
@@ -14892,7 +15134,8 @@
% math with the package option bidi=.
%
% \begin{macrocode}
-\ifnum\bbl at bidimode>\@ne % Excludes default=1
+\breakafterdirmode=1
+\ifnum\bbl at bidimode>\@ne % Any bidi= except default=1
\let\bbl at beforeforeign\leavevmode
\AtEndOfPackage{\EnableBabelHook{babel-bidi}}
\RequirePackage{luatexbase}
@@ -14947,7 +15190,7 @@
% math.
%
% \begin{macrocode}
-\ifnum\bbl at bidimode>\z@
+\ifnum\bbl at bidimode>\z@ % Any bidi=
\def\bbl at insidemath{0}%
\def\bbl at everymath{\def\bbl at insidemath{1}}
\def\bbl at everydisplay{\def\bbl at insidemath{2}}
@@ -14985,6 +15228,17 @@
% --, margins, etc.) with |bidi=basic|, without having to patch
% almost any macro where text direction is relevant.
%
+% Still, there are three areas deserving special attention, namely,
+% tabular, math, and graphics, text and intrinsically left-to-right
+% elements are intermingled. I've made some progress in graphics, but
+% they're essentially hacks; I've also made some progress in `tabular`,
+% but when I decided to tackle math (both standard math and `amsmath`)
+% the nightmare began. I'm still not sure how `amsmath` should be
+% modified, but the main problem is that, boxes are “generic”
+% containers that can hold text, math, and graphics (even at the same
+% time; remember that inline math is included in the list of text nodes
+% marked with 'math' (11) nodes too).
+%
% |\@hangfrom| is useful in many contexts and it is redefined always
% with the |layout| option.
%
@@ -15009,7 +15263,7 @@
\DeclareOption{fleqn}{\chardef\bbl at eqnpos\tw@}
%<</More package options>>
%
-\ifnum\bbl at bidimode>\z@
+\ifnum\bbl at bidimode>\z@ % Any bidi=
\ifx\matheqdirmode\@undefined\else
\matheqdirmode\@ne % A luatex primitive
\fi
@@ -15207,7 +15461,7 @@
{\IfBabelLayout{notabular}%
{\chardef\bbl at tabular@mode\z@}%
{\chardef\bbl at tabular@mode\@ne}}% Mixed, with LTR cols
-\ifnum\bbl at bidimode>\@ne
+\ifnum\bbl at bidimode>\@ne % Any bidi= except default=1
\ifnum\bbl at tabular@mode=\@ne
\let\bbl at parabefore\relax
\AddToHook{para/before}{\bbl at parabefore}
@@ -15252,7 +15506,7 @@
% |\@hangfrom|.
%
% \begin{macrocode}
-\ifnum\bbl at bidimode>\z@
+\ifnum\bbl at bidimode>\z@ % Any bidi=
\def\bbl at nextfake#1{% non-local changes, use always inside a group!
\bbl at exp{%
\def\\\bbl at insidemath{0}%
Modified: trunk/Master/texmf-dist/source/latex/babel/babel.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/babel/babel.ins 2023-06-26 20:19:05 UTC (rev 67484)
+++ trunk/Master/texmf-dist/source/latex/babel/babel.ins 2023-06-26 20:20:23 UTC (rev 67485)
@@ -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{2023/05/11}
+\def\filedate{2023/06/26}
\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 2023-06-26 20:19:05 UTC (rev 67484)
+++ trunk/Master/texmf-dist/source/latex/babel/bbcompat.dtx 2023-06-26 20:20:23 UTC (rev 67485)
@@ -30,7 +30,7 @@
%
% \iffalse
%<*dtx>
-\ProvidesFile{bbcompat.dtx}[2023/05/11 v3.89]
+\ProvidesFile{bbcompat.dtx}[2023/06/26 v3.90]
%</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 2023-06-26 20:19:05 UTC (rev 67484)
+++ trunk/Master/texmf-dist/tex/generic/babel/babel.def 2023-06-26 20:20:23 UTC (rev 67485)
@@ -40,7 +40,7 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{babel.def}[2023/05/11 v3.89 Babel common definitions]
+\ProvidesFile{babel.def}[2023/06/26 v3.90 Babel common definitions]
\ifx\AtBeginDocument\@undefined % TODO. change test.
\def\@empty{}
\def\loadlocalcfg#1{%
@@ -595,8 +595,8 @@
\toks@\expandafter{\bbl at tempc#3}%
\expandafter\edef\csname extras\languagename\endcsname{\the\toks@}%
\fi}
-\def\bbl at version{3.89}
-\def\bbl at date{2023/05/11}
+\def\bbl at version{3.90}
+\def\bbl at date{2023/06/26}
\ifx\language\@undefined
\csname newcount\endcsname\language
\fi
Modified: trunk/Master/texmf-dist/tex/generic/babel/babel.sty
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/babel.sty 2023-06-26 20:19:05 UTC (rev 67484)
+++ trunk/Master/texmf-dist/tex/generic/babel/babel.sty 2023-06-26 20:20:23 UTC (rev 67485)
@@ -34,7 +34,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
-\ProvidesPackage{babel}[2023/05/11 v3.89 The Babel package]
+\ProvidesPackage{babel}[2023/06/26 v3.90 The Babel package]
\@ifpackagewith{babel}{debug}
{\providecommand\bbl at trace[1]{\message{^^J[ #1 ]}}%
\let\bbl at debug\@firstofone
@@ -470,8 +470,8 @@
\expandafter\@secondoftwo
\fi}
\fi
-\def\bbl at version{3.89}
-\def\bbl at date{2023/05/11}
+\def\bbl at version{3.90}
+\def\bbl at date{2023/06/26}
\ifx\language\@undefined
\csname newcount\endcsname\language
\fi
@@ -1190,12 +1190,13 @@
\string\providecommand\string\babel at aux[2]{}}%
\immediate\write\@mainaux{\string\@nameuse{bbl at beforestart}}%
\fi
- \expandafter\selectlanguage\expandafter{\bbl at main@language}%
\ifbbl at single % must go after the line above.
\renewcommand\selectlanguage[1]{}%
\renewcommand\foreignlanguage[2]{#2}%
\global\let\babel at aux\@gobbletwo % Also as flag
\fi}
+\AddToHook{begindocument/before}{%
+ \expandafter\selectlanguage\expandafter{\bbl at main@language}}
\ifcase\bbl at engine\or
\AtBeginDocument{\pagedir\bodydir} % TODO - a better place
\fi
@@ -2592,9 +2593,10 @@
\let\\\@Alph\<bbl at cntr@\bbl at KVP@Alph @\languagename>}}%
\fi
% == Casing ==
- \bbl at exp{\def\<bbl at casing@\languagename>%
- {\<bbl at lbcp@\languagename>%
- \ifx\bbl at KVP@casing\@nnil\else-x-\bbl at KVP@casing\fi}}%
+ \ifx\bbl at KVP@casing\@nnil\else
+ \bbl at csarg\xdef{casing@\languagename}%
+ {\@nameuse{bbl at casing@\languagename}-x-\bbl at KVP@casing}%
+ \fi
% == Calendars ==
\ifx\bbl at KVP@calendar\@nnil
\edef\bbl at KVP@calendar{\bbl at cl{calpr}}%
@@ -2962,9 +2964,9 @@
\bbl at exp{\\\bbl at exportkey{lname}{identification.name.opentype}%
{\csname bbl at elname@\languagename\endcsname}}%
\bbl at exportkey{tbcp}{identification.tag.bcp47}{}%
+ % Somewhat hackish. TODO
+ \bbl at exportkey{casing}{identification.tag.bcp47}{}%
\bbl at exportkey{lbcp}{identification.language.tag.bcp47}{}%
- % Somewhat hackish. TODO
- \bbl at exportkey{casing}{identification.language.tag.bcp47}{}%
\bbl at exportkey{lotf}{identification.tag.opentype}{dflt}%
\bbl at exportkey{esname}{identification.script.name}{}%
\bbl at exp{\\\bbl at exportkey{sname}{identification.script.name.opentype}%
@@ -3505,6 +3507,16 @@
{\bbl at cs{\csname bbl at info@#1.tag.bcp47\endcsname @#2}}}}
\fi
\@namedef{bbl at info@casing.tag.bcp47}{casing}
+\newcommand\BabelUppercaseMapping[3]{%
+ \let\bbl at tempx\languagename
+ \edef\languagename{#1}%
+ \DeclareUppercaseMapping[\BCPdata{casing}]{#2}{#3}%
+ \let\languagename\bbl at tempx}
+\newcommand\BabelLowercaseMapping[3]{%
+ \let\bbl at tempx\languagename
+ \edef\languagename{#1}%
+ \DeclareLowercaseMapping[\BCPdata{casing}]{#2}{#3}%
+ \let\languagename\bbl at tempx}
\let\bbl at ensureinfo\@gobble
\newcommand\BabelEnsureInfo{%
\ifx\InputIfFileExists\@undefined\else
@@ -3924,7 +3936,7 @@
\bbl at trace{Loading basic (internal) bidi support}
\ifodd\bbl at engine
\else % TODO. Move to txtbabel
- \ifnum\bbl at bidimode>100 \ifnum\bbl at bidimode<200
+ \ifnum\bbl at bidimode>100 \ifnum\bbl at bidimode<200 % Any xe+lua bidi=
\bbl at error
{The bidi method 'basic' is available only in\\%
luatex. I'll continue with 'bidi=default', so\\%
@@ -3942,7 +3954,7 @@
\bbl at loadfontspec % bidi needs fontspec
\usepackage#1{bidi}}%
\fi}
- \ifnum\bbl at bidimode>200
+ \ifnum\bbl at bidimode>200 % Any xe bidi=
\ifcase\expandafter\@gobbletwo\the\bbl at bidimode\or
\bbl at tentative{bidi=bidi}
\bbl at loadxebidi{}
@@ -3953,7 +3965,7 @@
\fi
\fi
\fi
-\ifnum\bbl at bidimode=\@ne
+\ifnum\bbl at bidimode=\@ne % Any bidi= except default=1
\let\bbl at beforeforeign\leavevmode
\ifodd\bbl at engine
\newattribute\bbl at attr@dir
@@ -4065,7 +4077,7 @@
\newtoks\everypar
\everypar=\bbl at severypar
\bbl at severypar{\bbl at xeeverypar\the\everypar}}
- \ifnum\bbl at bidimode>200
+ \ifnum\bbl at bidimode>200 % Any xe bidi=
\let\bbl at textdir@i\@gobbletwo
\let\bbl at xebidipar\@empty
\AddBabelHook{bidi}{foreign}{%
Modified: trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg 2023-06-26 20:19:05 UTC (rev 67484)
+++ trunk/Master/texmf-dist/tex/generic/babel/hyphen.cfg 2023-06-26 20:20:23 UTC (rev 67485)
@@ -38,10 +38,10 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{hyphen.cfg}[2023/05/11 v3.89 Babel hyphens]
+\ProvidesFile{hyphen.cfg}[2023/06/26 v3.90 Babel hyphens]
\xdef\bbl at format{\jobname}
-\def\bbl at version{3.89}
-\def\bbl at date{2023/05/11}
+\def\bbl at version{3.90}
+\def\bbl at date{2023/06/26}
\ifx\AtBeginDocument\@undefined
\def\@empty{}
\fi
Added: trunk/Master/texmf-dist/tex/generic/babel/locale/fa/babel-farsi.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/fa/babel-farsi.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/fa/babel-farsi.tex 2023-06-26 20:20:23 UTC (rev 67485)
@@ -0,0 +1,12 @@
+% This file is part of babel. For further details see:
+% https://www.ctan.org/pkg/babel
+\ifx\BabelBeforeIni\undefined
+ \PackageError{babel}%
+ {This file is a component of babel and cannot\MessageBreak
+ be loaded directly. I'll stop immediately}%
+ {Just use babel as documented.}%
+ \stop
+\fi
+\BabelBeforeIni{fa}{%
+}
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/generic/babel/locale/fa/babel-farsi.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-classicallatin.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-classicallatin.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-classicallatin.tex 2023-06-26 20:20:23 UTC (rev 67485)
@@ -0,0 +1,25 @@
+\ifx\BabelBeforeIni\undefined
+ \PackageError{babel}%
+ {This file is a component of babel and cannot\MessageBreak
+ be loaded directly. I'll stop immediately}%
+ {Just use babel as documented.}%
+ \stop
+\fi
+\BabelBeforeIni{la-x-classic}{%
+}
+
+\expandafter\addto\csname date\languagename\endcsname{%
+ \babel at save\BabelDatey
+ \def\BabelDatey#1{\@Roman{#1}}%
+ \babel at save\BabelDated
+ \def\BabelDated#1{\@Roman{#1}}}
+
+\StartBabelCommands{\languagename}{}
+ \SetHyphenMap{\BabelLower{`V}{`u}}
+\EndBabelCommands
+
+% TODO. Must be defined somehow in the ini file:
+\BabelUppercaseMapping{\languagename}{`u}{V}
+\BabelLowercaseMapping{\languagename}{`v}{U}
+
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-classicallatin.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-ecclesiasticallatin.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-ecclesiasticallatin.tex (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-ecclesiasticallatin.tex 2023-06-26 20:20:23 UTC (rev 67485)
@@ -0,0 +1,17 @@
+\ifx\BabelBeforeIni\undefined
+ \PackageError{babel}%
+ {This file is a component of babel and cannot\MessageBreak
+ be loaded directly. I'll stop immediately}%
+ {Just use babel as documented.}%
+ \stop
+\fi
+\BabelBeforeIni{la-x-ecclesia}{%
+}
+
+\expandafter\addto\csname date\languagename\endcsname{%
+ \babel at save\BabelDatey
+ \def\BabelDatey#1{\@Roman{#1}}%
+ \babel at save\BabelDated
+ \def\BabelDated#1{\@Roman{#1}}}
+
+\endinput
\ No newline at end of file
Property changes on: trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-ecclesiasticallatin.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-classic.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-classic.ini 2023-06-26 20:19:05 UTC (rev 67484)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-classic.ini 2023-06-26 20:20:23 UTC (rev 67485)
@@ -9,10 +9,10 @@
[identification]
charset = utf8
-version = 1.5
-date = 2022-07-28
-name.english = Classic Latin
-name.babel = classiclatin
+version = 1.6
+date = 2023-06-25
+name.english = Classical Latin
+name.babel = classicallatin
tag.bcp47 = la-x-classic
language.tag.bcp47 = la
tag.opentype = LAT
@@ -23,7 +23,7 @@
level = 1
encodings = T1 OT1 LY1
derivate = no
-require.babel = classiclatin
+require.babel = classicallatin
name.polyglossia.language = latin
name.polyglossia.variant = classic
Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-ecclesia.ini
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-ecclesia.ini 2023-06-26 20:19:05 UTC (rev 67484)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-la-x-ecclesia.ini 2023-06-26 20:20:23 UTC (rev 67485)
@@ -9,10 +9,10 @@
[identification]
charset = utf8
-version = 1.5
-date = 2022-07-28
-name.english = Ecclesiastic Latin
-name.babel = ecclesiasticlatin
+version = 1.6
+date = 2023-06-25
+name.english = Ecclesiastical Latin
+name.babel = ecclesiasticallatin
tag.bcp47 = la-x-ecclesia
language.tag.bcp47 = la
tag.opentype = LAT
@@ -23,7 +23,7 @@
level = 1
encodings = T1 OT1 LY1
derivate = no
-require.babel = ecclesiasticlatin
+require.babel = ecclesiasticallatin
name.polyglossia.language = latin
name.polyglossia.variant = ecclesiastic
Modified: trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-medievallatin.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-medievallatin.tex 2023-06-26 20:19:05 UTC (rev 67484)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/la/babel-medievallatin.tex 2023-06-26 20:20:23 UTC (rev 67485)
@@ -15,11 +15,7 @@
\def\BabelDated#1{\@Roman{#1}}}
\StartBabelCommands{\languagename}{}
- \SetCase
- {\uccode`u=`V\relax}
- {\lccode`V=`u\relax}
- \SetHyphenMap{%
- \BabelLower{`V}{`u}}
+ \SetHyphenMap{\BabelLower{`V}{`u}}
\EndBabelCommands
\endinput
\ No newline at end of file
Deleted: trunk/Master/texmf-dist/tex/generic/babel/locale/vi/babel-vietnam.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/locale/vi/babel-vietnam.tex 2023-06-26 20:19:05 UTC (rev 67484)
+++ trunk/Master/texmf-dist/tex/generic/babel/locale/vi/babel-vietnam.tex 2023-06-26 20:20:23 UTC (rev 67485)
@@ -1,12 +0,0 @@
-% This file is part of babel. For further details see:
-% https://www.ctan.org/pkg/babel
-\ifx\BabelBeforeIni\undefined
- \PackageError{babel}%
- {This file is a component of babel and cannot\MessageBreak
- be loaded directly. I'll stop immediately}%
- {Just use babel as documented.}%
- \stop
-\fi
-\BabelBeforeIni{vi}{%
-}
-\endinput
\ No newline at end of file
Modified: trunk/Master/texmf-dist/tex/generic/babel/luababel.def
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/luababel.def 2023-06-26 20:19:05 UTC (rev 67484)
+++ trunk/Master/texmf-dist/tex/generic/babel/luababel.def 2023-06-26 20:20:23 UTC (rev 67485)
@@ -604,8 +604,13 @@
\gdef\bbl at arabicjust{%
\let\bbl at arabicjust\relax
\newattribute\bblar at kashida
- \directlua{ Babel.attr_kashida = luatexbase.registernumber'bblar at kashida' }%
+ \newattribute\bblar at kashida@aux % 0, 1=tatweel, 2=diacritics
+ \directlua{% WIP
+ Babel.attr_kashida = luatexbase.registernumber'bblar at kashida'
+ Babel.attr_kashida_aux = luatexbase.registernumber'bblar at kashida@aux'
+ }%
\bblar at kashida=\z@
+ \bblar at kashida@aux=\z@
\bbl at patchfont{{\bbl at parsejalt}}%
\directlua{
Babel.arabic.elong_map = Babel.arabic.elong_map or {}
@@ -675,6 +680,7 @@
Babel.arabic.dest = {}
Babel.arabic.justify_factor = 0.95
Babel.arabic.justify_enabled = true
+Babel.arabic.kashida_limit = -1
function Babel.arabic.justify(head)
if not Babel.arabic.justify_enabled then return head end
@@ -703,6 +709,7 @@
local width, width_new, full, k_curr, wt_pos, goal, shift
local subst_done = false
local elong_map = Babel.arabic.elong_map
+ local cnt
local last_line
local GLYPH = node.id'glyph'
local KASHIDA = Babel.attr_kashida
@@ -775,7 +782,7 @@
if #k_list == 0 then goto next_line end
width = node.dimensions(line.head) % The 'natural' width
- k_curr = #k_list
+ k_curr = #k_list % Traverse backwards, from the end
wt_pos = 1
while width < goal do
@@ -800,6 +807,22 @@
end
end
+ % Limit the number of tatweel by removing them. Not very efficient,
+ % but it does the job in a quite predictable way.
+ if Babel.arabic.kashida_limit > -1 then
+ cnt = 0
+ for n in node.traverse_id(GLYPH, line.head) do
+ if n.char == 0x0640 then
+ cnt = cnt + 1
+ if cnt > Babel.arabic.kashida_limit then
+ node.remove(line.head, n)
+ end
+ else
+ cnt = 0
+ end
+ end
+ end
+
::next_line::
% Must take into account marks and ins, see luatex manual.
@@ -1368,7 +1391,8 @@
luatexbase.priority_in_callback('hpack_filter',
'luaotfload.node_processor') or nil)
}}
-\ifnum\bbl at bidimode>\@ne % Excludes default=1
+\breakafterdirmode=1
+\ifnum\bbl at bidimode>\@ne % Any bidi= except default=1
\let\bbl at beforeforeign\leavevmode
\AtEndOfPackage{\EnableBabelHook{babel-bidi}}
\RequirePackage{luatexbase}
@@ -1415,7 +1439,7 @@
\def\bbl at bodydir{\bbl at setluadir{body}\bodydir}% Used once
\def\bbl at pagedir{\bbl at setluadir{page}\pagedir}% Unused
\def\bbl at dirparastext{\pardir\the\textdir\relax}% Used once
-\ifnum\bbl at bidimode>\z@
+\ifnum\bbl at bidimode>\z@ % Any bidi=
\def\bbl at insidemath{0}%
\def\bbl at everymath{\def\bbl at insidemath{1}}
\def\bbl at everydisplay{\def\bbl at insidemath{2}}
@@ -1444,7 +1468,7 @@
}}%
\fi
\bbl at trace{Redefinitions for bidi layout}
-\ifnum\bbl at bidimode>\z@
+\ifnum\bbl at bidimode>\z@ % Any bidi=
\ifx\matheqdirmode\@undefined\else
\matheqdirmode\@ne % A luatex primitive
\fi
@@ -1641,7 +1665,7 @@
{\IfBabelLayout{notabular}%
{\chardef\bbl at tabular@mode\z@}%
{\chardef\bbl at tabular@mode\@ne}}% Mixed, with LTR cols
-\ifnum\bbl at bidimode>\@ne
+\ifnum\bbl at bidimode>\@ne % Any bidi= except default=1
\ifnum\bbl at tabular@mode=\@ne
\let\bbl at parabefore\relax
\AddToHook{para/before}{\bbl at parabefore}
@@ -1675,7 +1699,7 @@
{}}
\fi
\ifx\bbl at opt@layout\@nnil\endinput\fi % if no layout
-\ifnum\bbl at bidimode>\z@
+\ifnum\bbl at bidimode>\z@ % Any bidi=
\def\bbl at nextfake#1{% non-local changes, use always inside a group!
\bbl at exp{%
\def\\\bbl at insidemath{0}%
@@ -1831,7 +1855,7 @@
\let\bbl at OL@p at enumiii\p at enumiii
\def\p at enumiii{\p at enumii)\theenumii(}}{}}{}
\bbl at trace{Bidi footnotes}
-\ifnum\bbl at bidimode>\z@
+\ifnum\bbl at bidimode>\z@ % Any bidi=
\def\bbl at footnote#1#2#3{%
\@ifnextchar[%
{\bbl at footnote@o{#1}{#2}{#3}}%
Modified: trunk/Master/texmf-dist/tex/generic/babel/nil.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/nil.ldf 2023-06-26 20:19:05 UTC (rev 67484)
+++ trunk/Master/texmf-dist/tex/generic/babel/nil.ldf 2023-06-26 20:20:23 UTC (rev 67485)
@@ -33,7 +33,7 @@
%% extension |.ins|) which are part of the distribution.
%%
-\ProvidesLanguage{nil}[2023/05/11 v3.89 Nil language]
+\ProvidesLanguage{nil}[2023/06/26 v3.90 Nil language]
\LdfInit{nil}{datenil}
\ifx\l at nil\@undefined
\newlanguage\l at nil
Modified: trunk/Master/texmf-dist/tex/generic/babel/txtbabel.def
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/txtbabel.def 2023-06-26 20:19:05 UTC (rev 67484)
+++ trunk/Master/texmf-dist/tex/generic/babel/txtbabel.def 2023-06-26 20:20:23 UTC (rev 67485)
@@ -95,7 +95,7 @@
\hskip\columnwidth}}}%
{}
\bbl at trace{Bidi footnotes}
-\ifnum\bbl at bidimode>\z@
+\ifnum\bbl at bidimode>\z@ % Any bidi=
\def\bbl at footnote#1#2#3{%
\@ifnextchar[%
{\bbl at footnote@o{#1}{#2}{#3}}%
Modified: trunk/Master/texmf-dist/tex/generic/babel/xebabel.def
===================================================================
--- trunk/Master/texmf-dist/tex/generic/babel/xebabel.def 2023-06-26 20:19:05 UTC (rev 67484)
+++ trunk/Master/texmf-dist/tex/generic/babel/xebabel.def 2023-06-26 20:20:23 UTC (rev 67485)
@@ -323,7 +323,7 @@
\hskip\columnwidth}}}%
{}
\bbl at trace{Bidi footnotes}
-\ifnum\bbl at bidimode>\z@
+\ifnum\bbl at bidimode>\z@ % Any bidi=
\def\bbl at footnote#1#2#3{%
\@ifnextchar[%
{\bbl at footnote@o{#1}{#2}{#3}}%
More information about the tex-live-commits
mailing list.