summaryrefslogtreecommitdiff
path: root/macros/latex/required
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-06-27 03:00:56 +0000
committerNorbert Preining <norbert@preining.info>2023-06-27 03:00:56 +0000
commita0b68c12d9e67182560eb31f202f3e86f0e4a5de (patch)
tree5d0d249a669c45205fc467d62bd18d5edb2ae3ae /macros/latex/required
parenta2ebe77da32f4499676953174f774795b0d054fb (diff)
CTAN sync 202306270300
Diffstat (limited to 'macros/latex/required')
-rw-r--r--macros/latex/required/babel/base/README.md30
-rw-r--r--macros/latex/required/babel/base/babel-code.pdfbin592226 -> 625101 bytes
-rw-r--r--macros/latex/required/babel/base/babel.dtx440
-rw-r--r--macros/latex/required/babel/base/babel.ins2
-rw-r--r--macros/latex/required/babel/base/babel.pdfbin399234 -> 404372 bytes
-rw-r--r--macros/latex/required/babel/base/bbcompat.dtx2
6 files changed, 366 insertions, 108 deletions
diff --git a/macros/latex/required/babel/base/README.md b/macros/latex/required/babel/base/README.md
index f41986807e..12e18a9aa3 100644
--- a/macros/latex/required/babel/base/README.md
+++ b/macros/latex/required/babel/base/README.md
@@ -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 @@ is a set of ini files for about 250 languages.
The latest stable version is available on <https://ctan.org/pkg/babel>.
-Changes in version 3.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,21 +41,25 @@ contact the developer, and not us!
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.
### 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
diff --git a/macros/latex/required/babel/base/babel-code.pdf b/macros/latex/required/babel/base/babel-code.pdf
index afec13d466..8ac14245b4 100644
--- a/macros/latex/required/babel/base/babel-code.pdf
+++ b/macros/latex/required/babel/base/babel-code.pdf
Binary files differ
diff --git a/macros/latex/required/babel/base/babel.dtx b/macros/latex/required/babel/base/babel.dtx
index bc6e15cb9f..1477fd0449 100644
--- a/macros/latex/required/babel/base/babel.dtx
+++ b/macros/latex/required/babel/base/babel.dtx
@@ -32,7 +32,7 @@
%
% \iffalse
%<*filedriver>
-\ProvidesFile{babel.dtx}[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 @@ found a bug, I strongly beg you to report it in
\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 @@ necessary in some languages), is described below; go to \ref{inifiles}.
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 @@ Package babel Warning: No hyphenation patterns were preloaded for
\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 @@ beforehand (for example, titles in a bibliography). At this regard, it
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 @@ _\foreignlanguage{spanish}{Español}_.
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 @@ languages.
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 @@ reason, does not work as expected.
\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 @@ _\babelprovide[import, main]{georgian}_
\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 @@ need to set explicitly the script to either |deva| or |dev2|, eg:
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 @@ captions):
\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 @@ captions):
\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,13 +1549,16 @@ captions):
\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
\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 @@ captions):
\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 @@ captions):
\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 @@ captions):
\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 @@ captions):
\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 @@ captions):
\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 @@ captions):
\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 @@ captions):
\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 @@ captions):
\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 @@ captions):
\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 @@ captions):
\tag{zh-Hant} Chinese\hascapu
\tag{zh} Chinese\hascapu
\tag{zu} Zulu
-
\end{multicols}
\endgroup
\hrule
@@ -1806,93 +1850,129 @@ by |\babelprovide| with a valueless |import|.
\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\\
duala\\
dutch\\
dzongkha\\
+ecclesiasticallatin\\
embu\\
+english\\
english-au\\
english-australia\\
english-ca\\
@@ -1903,41 +1983,52 @@ english-nz\\
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 @@ igbo\\
inarisami\\
indonesian\\
interlingua\\
+inuktitut\\
irish\\
italian\\
japanese\\
+jju\\
jolafonyi\\
kabuverdianu\\
kabyle\\
+kaingang\\
kako\\
kalaallisut\\
kalenjin\\
@@ -1965,18 +2059,22 @@ kikuyu\\
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,69 +2084,92 @@ machame\\
makhuwameetto\\
makonde\\
malagasy\\
+malay\\
malay-bn\\
malay-brunei\\
malay-sg\\
malay-singapore\\
-malay\\
malayalam\\
maltese\\
manx\\
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,83 +2182,101 @@ sanskrit-malayalam\\
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\\
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\\
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 @@ you may add further key/value pairs if necessary.
% 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 @@ hyphenation. The rest of the language definitions are not touched.
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 @@ languages loaded on the fly are not yet available in the preamble.
\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 @@ Remerber there is an alternative syntax for the latter:
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,7 +2790,28 @@ See the next section.
\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
@@ -2986,7 +3187,7 @@ expandable, and the available fields are:
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 @@ See particularly |lua-bidibasic.tex| and |lua-secenum.tex|.
% 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 @@ _\babelprovide[import, main]{arabic}_
% 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 @@ and |.ldf| file are listed, together with the names of the option which
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 @@ ibygreek, bgreek, serbianc, frenchle, ethiop} and \textsf{friulan}.
(\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 @@ Its natural place of use is in hooks or in |\extras|\m{language}.
\fi
-
\section{Acknowledgements}
I would like to thank all who volunteered as $\beta$-testers for their
@@ -5264,8 +5466,8 @@ wouldn’t exist.
% \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 @@ wouldn’t exist.
% \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@opt@headfoot\@nnil\else
@@ -7476,12 +7678,18 @@ wouldn’t exist.
\string\providecommand\string\babel@aux[2]{}}%
\immediate\write\@mainaux{\string\@nameuse{bbl@beforestart}}%
\fi
+%<-package>
\expandafter\selectlanguage\expandafter{\bbl@main@language}%
+%<+package>
\ifbbl@single % must go after the line above.
\renewcommand\selectlanguage[1]{}%
\renewcommand\foreignlanguage[2]{#2}%
\global\let\babel@aux\@gobbletwo % Also as flag
\fi}
+%<-core>
+\AddToHook{begindocument/before}{%
+ \expandafter\selectlanguage\expandafter{\bbl@main@language}}
+%<+core>
\ifcase\bbl@engine\or
\AtBeginDocument{\pagedir\bodydir} % TODO - a better place
\fi
@@ -10128,9 +10336,10 @@ wouldn’t exist.
\let\\\@Alph\<bbl@cntr@\bbl@KVP@Alph @\languagename>}}%
\fi
% == Casing ==
- \bbl@exp{\def\<bbl@casing@\languagename>%
- {\<bbl@lbcp@\languagename>%
- \ifx\bbl@KVP@casing\@nnil\else-x-\bbl@KVP@casing\fi}}%
+ \ifx\bbl@KVP@casing\@nnil\else
+ \bbl@csarg\xdef{casing@\languagename}%
+ {\@nameuse{bbl@casing@\languagename}-x-\bbl@KVP@casing}%
+ \fi
% == Calendars ==
\ifx\bbl@KVP@calendar\@nnil
\edef\bbl@KVP@calendar{\bbl@cl{calpr}}%
@@ -10591,9 +10800,9 @@ wouldn’t exist.
\bbl@exp{\\\bbl@exportkey{lname}{identification.name.opentype}%
{\csname bbl@elname@\languagename\endcsname}}%
\bbl@exportkey{tbcp}{identification.tag.bcp47}{}%
- \bbl@exportkey{lbcp}{identification.language.tag.bcp47}{}%
% Somewhat hackish. TODO
- \bbl@exportkey{casing}{identification.language.tag.bcp47}{}%
+ \bbl@exportkey{casing}{identification.tag.bcp47}{}%
+ \bbl@exportkey{lbcp}{identification.language.tag.bcp47}{}%
\bbl@exportkey{lotf}{identification.tag.opentype}{dflt}%
\bbl@exportkey{esname}{identification.script.name}{}%
\bbl@exp{\\\bbl@exportkey{sname}{identification.script.name.opentype}%
@@ -11262,8 +11471,18 @@ wouldn’t exist.
{\bbl@ifunset{bbl@\csname bbl@info@#1.tag.bcp47\endcsname @#2}{}%
{\bbl@cs{\csname bbl@info@#1.tag.bcp47\endcsname @#2}}}}
\fi
-% Still somewhat hackish:
+% Still somewhat hackish. WIP.
\@namedef{bbl@info@casing.tag.bcp47}{casing}
+\newcommand\BabelUppercaseMapping[3]{%
+ \let\bbl@tempx\languagename
+ \edef\languagename{#1}%
+ \DeclareUppercaseMapping[\BCPdata{casing}]{#2}{#3}%
+ \let\languagename\bbl@tempx}
+\newcommand\BabelLowercaseMapping[3]{%
+ \let\bbl@tempx\languagename
+ \edef\languagename{#1}%
+ \DeclareLowercaseMapping[\BCPdata{casing}]{#2}{#3}%
+ \let\languagename\bbl@tempx}
% \end{macrocode}
%
% With version 3.75 |\BabelEnsureInfo| is executed always, but there is
@@ -12139,7 +12358,7 @@ wouldn’t exist.
\bbl@trace{Loading basic (internal) bidi support}
\ifodd\bbl@engine
\else % TODO. Move to txtbabel
- \ifnum\bbl@bidimode>100 \ifnum\bbl@bidimode<200
+ \ifnum\bbl@bidimode>100 \ifnum\bbl@bidimode<200 % Any xe+lua bidi=
\bbl@error
{The bidi method 'basic' is available only in\\%
luatex. I'll continue with 'bidi=default', so\\%
@@ -12157,7 +12376,7 @@ wouldn’t exist.
\bbl@loadfontspec % bidi needs fontspec
\usepackage#1{bidi}}%
\fi}
- \ifnum\bbl@bidimode>200
+ \ifnum\bbl@bidimode>200 % Any xe bidi=
\ifcase\expandafter\@gobbletwo\the\bbl@bidimode\or
\bbl@tentative{bidi=bidi}
\bbl@loadxebidi{}
@@ -12169,7 +12388,7 @@ wouldn’t exist.
\fi
\fi
% TODO? Separate:
-\ifnum\bbl@bidimode=\@ne
+\ifnum\bbl@bidimode=\@ne % Any bidi= except default=1
\let\bbl@beforeforeign\leavevmode
\ifodd\bbl@engine
\newattribute\bbl@attr@dir
@@ -12302,7 +12521,7 @@ wouldn’t exist.
\newtoks\everypar
\everypar=\bbl@severypar
\bbl@severypar{\bbl@xeeverypar\the\everypar}}
- \ifnum\bbl@bidimode>200
+ \ifnum\bbl@bidimode>200 % Any xe bidi=
\let\bbl@textdir@i\@gobbletwo
\let\bbl@xebidipar\@empty
\AddBabelHook{bidi}{foreign}{%
@@ -13268,7 +13487,7 @@ wouldn’t exist.
% \begin{macrocode}
%<<*Footnote changes>>
\bbl@trace{Bidi footnotes}
-\ifnum\bbl@bidimode>\z@
+\ifnum\bbl@bidimode>\z@ % Any bidi=
\def\bbl@footnote#1#2#3{%
\@ifnextchar[%
{\bbl@footnote@o{#1}{#2}{#3}}%
@@ -14217,8 +14436,13 @@ end
\gdef\bbl@arabicjust{%
\let\bbl@arabicjust\relax
\newattribute\bblar@kashida
- \directlua{ Babel.attr_kashida = luatexbase.registernumber'bblar@kashida' }%
+ \newattribute\bblar@kashida@aux % 0, 1=tatweel, 2=diacritics
+ \directlua{% WIP
+ Babel.attr_kashida = luatexbase.registernumber'bblar@kashida'
+ Babel.attr_kashida_aux = luatexbase.registernumber'bblar@kashida@aux'
+ }%
\bblar@kashida=\z@
+ \bblar@kashida@aux=\z@
\bbl@patchfont{{\bbl@parsejalt}}%
\directlua{
Babel.arabic.elong_map = Babel.arabic.elong_map or {}
@@ -14294,6 +14518,7 @@ Babel.arabic.from = {}
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 @@ function Babel.arabic.justify_hlist(head, line, gc, size, pack)
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 @@ function Babel.arabic.justify_hlist(head, line, gc, size, pack)
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 @@ function Babel.arabic.justify_hlist(head, line, gc, size, pack)
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 @@ end
% math with the package option bidi=.
%
% \begin{macrocode}
-\ifnum\bbl@bidimode>\@ne % Excludes default=1
+\breakafterdirmode=1
+\ifnum\bbl@bidimode>\@ne % Any bidi= except default=1
\let\bbl@beforeforeign\leavevmode
\AtEndOfPackage{\EnableBabelHook{babel-bidi}}
\RequirePackage{luatexbase}
@@ -14947,7 +15190,7 @@ end
% math.
%
% \begin{macrocode}
-\ifnum\bbl@bidimode>\z@
+\ifnum\bbl@bidimode>\z@ % Any bidi=
\def\bbl@insidemath{0}%
\def\bbl@everymath{\def\bbl@insidemath{1}}
\def\bbl@everydisplay{\def\bbl@insidemath{2}}
@@ -14985,6 +15228,17 @@ end
% --, 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 @@ end
\DeclareOption{fleqn}{\chardef\bbl@eqnpos\tw@}
%<</More package options>>
%
-\ifnum\bbl@bidimode>\z@
+\ifnum\bbl@bidimode>\z@ % Any bidi=
\ifx\matheqdirmode\@undefined\else
\matheqdirmode\@ne % A luatex primitive
\fi
@@ -15207,7 +15461,7 @@ end
{\IfBabelLayout{notabular}%
{\chardef\bbl@tabular@mode\z@}%
{\chardef\bbl@tabular@mode\@ne}}% Mixed, with LTR cols
-\ifnum\bbl@bidimode>\@ne
+\ifnum\bbl@bidimode>\@ne % Any bidi= except default=1
\ifnum\bbl@tabular@mode=\@ne
\let\bbl@parabefore\relax
\AddToHook{para/before}{\bbl@parabefore}
@@ -15252,7 +15506,7 @@ end
% |\@hangfrom|.
%
% \begin{macrocode}
-\ifnum\bbl@bidimode>\z@
+\ifnum\bbl@bidimode>\z@ % Any bidi=
\def\bbl@nextfake#1{% non-local changes, use always inside a group!
\bbl@exp{%
\def\\\bbl@insidemath{0}%
diff --git a/macros/latex/required/babel/base/babel.ins b/macros/latex/required/babel/base/babel.ins
index 3706b2c074..9aae84b337 100644
--- a/macros/latex/required/babel/base/babel.ins
+++ b/macros/latex/required/babel/base/babel.ins
@@ -26,7 +26,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%
-\def\filedate{2023/05/11}
+\def\filedate{2023/06/26}
\def\batchfile{babel.ins}
\input docstrip.tex
diff --git a/macros/latex/required/babel/base/babel.pdf b/macros/latex/required/babel/base/babel.pdf
index cdc413d277..1372db8c42 100644
--- a/macros/latex/required/babel/base/babel.pdf
+++ b/macros/latex/required/babel/base/babel.pdf
Binary files differ
diff --git a/macros/latex/required/babel/base/bbcompat.dtx b/macros/latex/required/babel/base/bbcompat.dtx
index cf059447fb..a75572297a 100644
--- a/macros/latex/required/babel/base/bbcompat.dtx
+++ b/macros/latex/required/babel/base/bbcompat.dtx
@@ -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'