From baa694429155689a0e8bba804206961689e0a606 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Thu, 8 Feb 2024 03:01:02 +0000 Subject: CTAN sync 202402080301 --- macros/latex/required/babel/base/README.md | 16 +- macros/latex/required/babel/base/babel-code.pdf | Bin 642704 -> 647075 bytes macros/latex/required/babel/base/babel.dtx | 1958 +++++++++++------------ macros/latex/required/babel/base/babel.ins | 3 +- macros/latex/required/babel/base/babel.pdf | Bin 419409 -> 421738 bytes macros/latex/required/babel/base/bbcompat.dtx | 2 +- 6 files changed, 907 insertions(+), 1072 deletions(-) (limited to 'macros/latex/required') diff --git a/macros/latex/required/babel/base/README.md b/macros/latex/required/babel/base/README.md index 55553c86e8..1469c5b7f1 100644 --- a/macros/latex/required/babel/base/README.md +++ b/macros/latex/required/babel/base/README.md @@ -1,6 +1,6 @@ -## Babel 24.1 +## Babel 24.2 -2024-01-07 +2024-02-07 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 300 languages. The latest stable version is available on . -Changes in version 24.1 are described in: +Changes in version 24.2 are described in: -https://latex3.github.io/babel/news/whats-new-in-babel-24.1.html +https://latex3.github.io/babel/news/whats-new-in-babel-24.2.html Apart from the manual, you can find information on some aspects of babel at: @@ -48,11 +48,9 @@ respective authors. ### Summary of latest changes ``` -24.1 2024-01-07 - * New version numbering scheme. - * New key in \babelprovide: interchar (xe). - * Definitions for French interchar=punctuation.space (xe) and - transforms=punctuation.space (lua). +24.2 2024-02-07 + * Cleaned up some language names. + * Mosty internal changes and minor fixes. ``` ### Previous changes diff --git a/macros/latex/required/babel/base/babel-code.pdf b/macros/latex/required/babel/base/babel-code.pdf index d9b3837fe9..fa0a798307 100644 Binary files a/macros/latex/required/babel/base/babel-code.pdf and b/macros/latex/required/babel/base/babel-code.pdf differ diff --git a/macros/latex/required/babel/base/babel.dtx b/macros/latex/required/babel/base/babel.dtx index 4bf1f3e84d..ea14d382bb 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}[2024/01/07 v24.1 The Babel package] +\ProvidesFile{babel.dtx}[2024/02/07 v24.2 The Babel package] \documentclass{ltxdoc} \GetFileInfo{babel.dtx} \usepackage{fontspec} @@ -824,6 +824,13 @@ course, with |date,| |captions|). Until 3.43 you had to write something like |{\selectlanguage{..} ..}|, which was not always the most convenient way. +\begin{note} + |\bibitem| is out of sync with |\selectlanguage| in the \file{.aux} + file. The reason is |\bibitem| uses |\immediate| (and others, in + fact), while |\selectlanguage| doesn't. There is a similar issue with + floats, too. There is no known workaround. +\end{note} + \subsection{Auxiliary language selectors} \Describe{\begin\menv{otherlanguage}}{\marg{language}\Eenv{otherlanguage}} @@ -1164,7 +1171,8 @@ check them, as they may change:\footnote{Thanks to Enrico Gregorio} \item[Estonian] |" ~| \item[French] (all varieties) |: ; ? !| \item[Galician] |" . ' ~ < >| -\item[Greek] |~| +\item[Greek] (ancient, polutoniko, only 8-bit \TeX) |~|, (optional, see +the manual for Greek) |;| \item[Hungarian] |`| \item[Kurmanji] |^| \item[Latin] |" ^ =| @@ -1181,6 +1189,23 @@ preserved for backward compatibility.} \New{3.23} Tests if a character has been made a shorthand. +\begin{note} + \catcode`\|=12\relax Both \textsf{ltxdoc} and \textsf{babel} use + \verb|\AtBeginDocument| to change some catcodes, and babel reloads + \textsf{hhline} to make sure \verb|:| has the right one, so if you + want to change the catcode of \verb/|/ it has to be done using the + same method at the proper place, with +\begin{verbatim} +\AtBeginDocument{\DeleteShortVerb{\|}} +\end{verbatim} + \textit{before} loading babel. This way, when the document begins + the sequence is (1) make \verb/|/ active (\textsf{ltxdoc}); (2) make + it inactive (your settings); (3) make babel shorthands active + (\textsf{babel)}; (4) reload \textsf{hhline} (\textsf{babel}, now + with the correct catcodes for \verb/|/ and + \verb|:|).\catcode`\|=\active +\end{note} + \subsection{Package options} \New{3.9a} @@ -1528,849 +1553,6 @@ need to set explicitly the script to either |deva| or |dev2|, eg: redefined easily. \end{note} -Here is the list (u means Unicode captions, and l means LICR -captions): - -\begingroup -\bigskip\hrule\nobreak - -\makeatletter -\def\tag#1{\par\@hangfrom{\makebox[7em][l]{#1}}\ignorespaces} -\def\hascapu{\textsuperscript{u}} -\def\hascapl{\textsuperscript{l}} - -\begin{multicols}{2} -\tag{aa} Afar -\tag{ab} Abkhazian -\tag{af} Afrikaans\hascapu\hascapl -\tag{agq} Aghem -\tag{ak} Akan -\tag{am} Amharic\hascapu\hascapl -\tag{ar-DZ} Arabic\hascapu -\tag{ar-EG} Arabic\hascapu -\tag{ar-IQ} Arabic\hascapu -\tag{ar-JO} Arabic\hascapu -\tag{ar-LB} Arabic\hascapu -\tag{ar-MA} Arabic\hascapu -\tag{ar-PS} Arabic\hascapu -\tag{ar-SA} Arabic\hascapu -\tag{ar-SY} Arabic\hascapu -\tag{ar-TN} Arabic\hascapu -\tag{ar} Arabic\hascapu -\tag{as} Assamese\hascapu -\tag{asa} Asu -\tag{ast} Asturian\hascapu\hascapl -\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 -\tag{br} Breton\hascapu\hascapl -\tag{brx} Bodo -\tag{bs-Cyrl} Bosnian -\tag{bs-Latn} Bosnian\hascapu\hascapl -\tag{bs} Bosnian\hascapu\hascapl -\tag{bua} Buriat\hascapu\hascapl -\tag{byn} Blin -\tag{ca} Catalan\hascapu\hascapl -\tag{cch} Atsam -\tag{ccp} Chakma -\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 -\tag{cu-Glag} Church Slavic -\tag{cu} Church Slavic\hascapu -\tag{cy} Welsh\hascapu\hascapl -\tag{da} Danish\hascapu\hascapl -\tag{dav} Taita -\tag{de-1901} German\hascapu\hascapl -\tag{de-1996} German\hascapu\hascapl -\tag{de-AT-1901} Austrian German\hascapu\hascapl -\tag{de-AT-1996} Austrian German\hascapu\hascapl -\tag{de-AT} Austrian German\hascapu\hascapl -\tag{de-CH-1901} Swiss High German\hascapu\hascapl -\tag{de-CH-1996} Swiss High German\hascapu\hascapl -\tag{de-CH} Swiss High German\hascapu\hascapl -\tag{de} German\hascapu\hascapl -\tag{dje} Zarma -\tag{dsb} Lower Sorbian\hascapu\hascapl -\tag{dua} Duala -\tag{dyo} Jola-Fonyi -\tag{dz} Dzongkha -\tag{ebu} Embu -\tag{ee} Ewe -\tag{el-polyton} Polytonic Greek\hascapu\hascapl -\tag{el} Greek\hascapu\hascapl -\tag{en-AU} Australian English\hascapu\hascapl -\tag{en-CA} Canadian English\hascapu\hascapl -\tag{en-GB} British English\hascapu\hascapl -\tag{en-NZ} English\hascapu\hascapl -\tag{en-US} American English\hascapu\hascapl -\tag{en} English\hascapu\hascapl -\tag{eo} Esperanto\hascapu\hascapl -\tag{es-MX} Mexican Spanish\hascapu\hascapl -\tag{es} Spanish\hascapu\hascapl -\tag{et} Estonian\hascapu\hascapl -\tag{eu} Basque\hascapu\hascapl\hascapl -\tag{ewo} Ewondo -\tag{fa} Persian\hascapu -\tag{ff} Fulah -\tag{fi} Finnish\hascapu\hascapl -\tag{fil} Filipino -\tag{fo} Faroese -\tag{fr-BE} French\hascapu\hascapl -\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 -\tag{guz} Gusii -\tag{gv} Manx -\tag{ha-GH} Hausa -\tag{ha-NE} Hausa -\tag{ha} Hausa\hascapu\hascapl -\tag{haw} Hawaiian -\tag{he} Hebrew\hascapu\hascapl -\tag{hi} Hindi\hascapu -\tag{hr} Croatian\hascapu\hascapl -\tag{hsb} Upper Sorbian\hascapu\hascapl -\tag{hu} Hungarian\hascapu\hascapl\hascapl\hascapl -\tag{hy} Armenian\hascapu\hascapl -\tag{ia} Interlingua\hascapu\hascapl -\tag{id} Indonesian\hascapu\hascapl -\tag{ig} Igbo -\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 -\tag{khq} Koyra Chiini -\tag{ki} Kikuyu -\tag{kk} Kazakh -\tag{kkj} Kako -\tag{kl} Kalaallisut -\tag{kln} Kalenjin -\tag{km} Khmer\hascapu -\tag{kmr-Arab} Northern Kurdish\hascapu -\tag{kmr-Latn} Northern Kurdish\hascapu\hascapl -\tag{kmr} Northern Kurdish\hascapu\hascapl -\tag{kn} Kannada\hascapu -\tag{ko-Hani} Korean\hascapu -\tag{ko} Korean\hascapu -\tag{kok} Konkani -\tag{ks} Kashmiri -\tag{ksb} Shambala -\tag{ksf} Bafia -\tag{ksh} Colognian -\tag{kw} Cornish -\tag{ky} Kyrgyz -\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 -\tag{lrc} Northern Luri -\tag{lt} Lithuanian\hascapu\hascapl\hascapl\hascapl -\tag{lu} Luba-Katanga -\tag{luo} Luo -\tag{luy} Luyia -\tag{lv} Latvian\hascapu\hascapl -\tag{mas} Masai -\tag{mer} Meru -\tag{mfe} Morisyen -\tag{mg} Malagasy -\tag{mgh} Makhuwa-Meetto -\tag{mgo} Metaʼ -\tag{mk} Macedonian\hascapu\hascapl -\tag{ml} Malayalam\hascapu -\tag{mn} Mongolian -\tag{mr} Marathi\hascapu -\tag{ms-BN} Malay -\tag{ms-SG} Malay -\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 -\tag{nd} North Ndebele -\tag{nds} Low German -\tag{ne} Nepali -\tag{nl} Dutch\hascapu\hascapl -\tag{nmg} Kwasio -\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 -\tag{or} Odia -\tag{os} Ossetic -\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 -\tag{ro} Romanian\hascapu\hascapl -\tag{rof} Rombo -\tag{ru} Russian\hascapu\hascapl -\tag{rw} Kinyarwanda -\tag{rwk} Rwa -\tag{sa-Beng} Sanskrit -\tag{sa-Deva} Sanskrit -\tag{sa-Gujr} Sanskrit -\tag{sa-Knda} Sanskrit -\tag{sa-Mlym} Sanskrit -\tag{sa-Telu} Sanskrit -\tag{sa} Sanskrit -\tag{sah} Sakha -\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 -\tag{sg} Sango -\tag{shi-Latn} Tachelhit -\tag{shi-Tfng} Tachelhit -\tag{shi} Tachelhit -\tag{si} Sinhala\hascapu -\tag{sk} Slovak\hascapu\hascapl -\tag{sl} Slovenian\hascapu\hascapl -\tag{smn} Inari Sami -\tag{sn} Shona -\tag{so} Somali -\tag{sq} Albanian\hascapu\hascapl -\tag{sr-Cyrl-BA} Serbian\hascapu\hascapl -\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 -\tag{uk} Ukrainian\hascapu\hascapl -\tag{ur} Urdu\hascapu -\tag{uz-Arab} Uzbek -\tag{uz-Cyrl} Uzbek -\tag{uz-Latn} Uzbek -\tag{uz} Uzbek -\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 -\tag{yo} Yoruba -\tag{yrl} Nheengatu -\tag{yue} Cantonese -\tag{zgh} Standard Moroccan Tamazight -\tag{zh-Hans-HK} Chinese -\tag{zh-Hans-MO} Chinese -\tag{zh-Hans-SG} Chinese -\tag{zh-Hans} Chinese\hascapu -\tag{zh-Hant-HK} Chinese -\tag{zh-Hant-MO} Chinese -\tag{zh-Hant} Chinese\hascapu -\tag{zh} Chinese\hascapu -\tag{zu} Zulu -\end{multicols} -\endgroup -\hrule -\bigskip - -In some contexts (currently |\babelfont|) an \texttt{ini} file may be -loaded by its name. Here is the list of the names currently supported. -With these languages, |\babelfont| loads (if not done before) the -language and script names (even if the language is defined as a package -option with an \textsf{ldf} file). These are also the names recognized -by |\babelprovide| with a valueless |import|. - -\begingroup -\bigskip\hrule\nobreak -\small -\let\\\par - -\begin{multicols}{3} -abkhazian\\ -acadian\\ -afar\\ -afrikaans\\ -aghem\\ -akan\\ -albanian\\ -american\\ -americanenglish\\ -amharic\\ -ancientgreek\\ -arabic\\ -arabic-algeria\\ -arabic-dz\\ -arabic-eg\\ -arabic-egypt\\ -arabic-iq\\ -arabic-iraq\\ -arabic-jo\\ -arabic-jordan\\ -arabic-lb\\ -arabic-lebanon\\ -arabic-ma\\ -arabic-morocco\\ -arabic-palestinianterritories\\ -arabic-ps\\ -arabic-sa\\ -arabic-saudiarabia\\ -arabic-sy\\ -arabic-syria\\ -arabic-tn\\ -arabic-tunisia\\ -armenian\\ -assamese\\ -asturian\\ -asu\\ -atsam\\ -australian\\ -australianenglish\\ -austrian\\ -azerbaijani\\ -azerbaijani-cyrillic\\ -azerbaijani-cyrl\\ -azerbaijani-latin\\ -azerbaijani-latn\\ -bafia\\ -baluchi\\ -bambara\\ -bangla\\ -basaa\\ -basque\\ -belarusian\\ -bemba\\ -bena\\ -bengali\\ -bhojpuri\\ -blin\\ -bodo\\ -bosnian\\ -bosnian-cyrillic\\ -bosnian-cyrl\\ -bosnian-latin\\ -bosnian-latn\\ -brazilian\\ -brazilianportuguese\\ -breton\\ -british\\ -britishenglish\\ -bulgarian\\ -buriat\\ -burmese\\ -canadian\\ -canadianenglish\\ -cantonese\\ -catalan\\ -centralatlastamazight\\ -centralkurdish\\ -centralkurdish-latin\\ -centralkurdish-latn\\ -chakma\\ -chechen\\ -cherokee\\ -chiga\\ -chinese\\ -chinese-hans\\ -chinese-hans-hk\\ -chinese-hans-mo\\ -chinese-hans-sg\\ -chinese-hant\\ -chinese-hant-hk\\ -chinese-hant-mo\\ -chinese-simplified\\ -chinese-simplified-hongkongsarchina\\ -chinese-simplified-macausarchina\\ -chinese-simplified-singapore\\ -chinese-traditional\\ -chinese-traditional-hongkongsarchina\\ -chinese-traditional-macausarchina\\ -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\\ -churchslavonic\\ -classicallatin\\ -colognian\\ -coptic\\ -cornish\\ -corsican\\ -croatian\\ -czech\\ -danish\\ -duala\\ -dutch\\ -dzongkha\\ -ecclesiasticallatin\\ -embu\\ -english\\ -english-au\\ -english-australia\\ -english-ca\\ -english-canada\\ -english-gb\\ -english-newzealand\\ -english-nz\\ -english-unitedkingdom\\ -english-unitedstates\\ -english-us\\ -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\\ -friulian\\ -fulah\\ -ga\\ -galician\\ -ganda\\ -geez\\ -georgian\\ -german\\ -german-at\\ -german-austria\\ -german-austria-traditional\\ -german-ch\\ -german-switzerland\\ -german-switzerland-traditional\\ -german-traditional\\ -greek\\ -guarani\\ -gujarati\\ -gusii\\ -haryanvi\\ -hausa\\ -hausa-gh\\ -hausa-ghana\\ -hausa-ne\\ -hausa-niger\\ -hawaiian\\ -hebrew\\ -hindi\\ -hungarian\\ -icelandic\\ -igbo\\ -inarisami\\ -indonesian\\ -interlingua\\ -inuktitut\\ -irish\\ -italian\\ -japanese\\ -javanese\\ -jju\\ -jolafonyi\\ -kabuverdianu\\ -kabyle\\ -kaingang\\ -kako\\ -kalaallisut\\ -kalenjin\\ -kamba\\ -kannada\\ -kashmiri\\ -kazakh\\ -khmer\\ -kikuyu\\ -kinyarwanda\\ -konkani\\ -korean\\ -korean-han\\ -korean-hani\\ -koyraborosenni\\ -koyrachiini\\ -kurmanji\\ -kwasio\\ -kyrgyz\\ -lakota\\ -langi\\ -lao\\ -latin\\ -latvian\\ -ligurian\\ -lingala\\ -lithuanian\\ -lowersorbian\\ -lowgerman\\ -lubakatanga\\ -luo\\ -luxembourgish\\ -luyia\\ -macedonian\\ -machame\\ -maithiri\\ -makhuwameetto\\ -makonde\\ -malagasy\\ -malay\\ -malay-bn\\ -malay-brunei\\ -malay-sg\\ -malay-singapore\\ -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\\ -nigerianpidgin\\ -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\\ -prussian\\ -punjabi\\ -punjabi-arab\\ -punjabi-arabic\\ -punjabi-gurmukhi\\ -punjabi-guru\\ -quechua\\ -rajasthani\\ -romanian\\ -romanian-md\\ -romanian-moldova\\ -romansh\\ -rombo\\ -rundi\\ -russian\\ -rwa\\ -saho\\ -sakha\\ -samburu\\ -sango\\ -sangu\\ -sanskrit\\ -sanskrit-bangla\\ -sanskrit-beng\\ -sanskrit-bengali\\ -sanskrit-deva\\ -sanskrit-devanagari\\ -sanskrit-gujarati\\ -sanskrit-gujr\\ -sanskrit-kannada\\ -sanskrit-knda\\ -sanskrit-malayalam\\ -sanskrit-mlym\\ -sanskrit-telu\\ -sanskrit-telugu\\ -sardinian\\ -scottishgaelic\\ -sena\\ -serbian\\ -serbian-cyrillic\\ -serbian-cyrillic-bosniaherzegovina\\ -serbian-cyrillic-kosovo\\ -serbian-cyrillic-montenegro\\ -serbian-cyrl\\ -serbian-cyrl-ba\\ -serbian-cyrl-me\\ -serbian-cyrl-xk\\ -serbian-ijekavsk\\ -serbian-latin\\ -serbian-latin-bosniaherzegovina\\ -serbian-latin-kosovo\\ -serbian-latin-montenegro\\ -serbian-latn\\ -serbian-latn-ba\\ -serbian-latn-ijekavsk\\ -serbian-latn-me\\ -serbian-latn-xk\\ -serbianc\\ -shambala\\ -shona\\ -sichuanyi\\ -sicilian\\ -silesian\\ -sinhala\\ -slovak\\ -slovene\\ -slovenian\\ -soga\\ -somali\\ -sorani\\ -southernsotho\\ -southndebele\\ -spanish\\ -spanish-mexico\\ -spanish-mx\\ -standardmoroccantamazight\\ -swahili\\ -swati\\ -swedish\\ -swissgerman\\ -swisshighgerman\\ -syriac\\ -tachelhit\\ -tachelhit-latin\\ -tachelhit-latn\\ -tachelhit-tfng\\ -tachelhit-tifinagh\\ -taita\\ -tamil\\ -taroko\\ -tasawaq\\ -telugu\\ -teso\\ -thai\\ -tibetan\\ -tigre\\ -tigrinya\\ -tokpisin\\ -tongan\\ -tsonga\\ -tswana\\ -turkish\\ -turkmen\\ -tyap\\ -ukenglish\\ -ukrainian\\ -uppersorbian\\ -urdu\\ -usenglish\\ -uyghur\\ -uzbek\\ -uzbek-arab\\ -uzbek-arabic\\ -uzbek-cyrillic\\ -uzbek-cyrl\\ -uzbek-latin\\ -uzbek-latn\\ -vai\\ -vai-latin\\ -vai-latn\\ -vai-vai\\ -vai-vaii\\ -venda\\ -vietnamese\\ -volapuk\\ -vunjo\\ -walser\\ -welsh\\ -westernfrisian\\ -wolaytta\\ -wolof\\ -yangben\\ -yiddish\\ -yoruba\\ -zarma\\ -zulu -\end{multicols} -\endgroup -\hrule - -\bigskip - -Many locale templates are quite useable, provided captions and dates are -not required (which is a very frequent case, particularly in ancient -languages). So, they will be included in the default \babel{} distribution. -This can serve to encourage contributions, too. A warning will remember -they are ‘bare minimum locales’. The locales are currently -the following: -\begin{multicols}{4} -\small -akkadian\\ -ancientegyptian\\ -aramaic\\ -avestan\\ -aymara\\ -balinese\\ -bashkir\\ -bataktoba\\ -bavarian\\ -classicalmandaic\\ -divehi\\ -egyptianarabic\footnote{Masri or Colloquial Egyptian, with tag -\texttt{arz}, not to be confused with the Standard Arabic as spoken in -Egypt, with tag \texttt{ar-EG}.}\\ -ingush\\ -komi\\ -ladino\\ -lepcha\\ -limbu\\ -lineara\\ -lombard\\ -lu\\ -makasar\\ -navajo\\ -newari\\ -oldnorse\\ -phoenician\\ -samaritan\\ -sinteromani\\ -southernaltai\\ -tainua\\ -tangut\\ -waray -\end{multicols} - \textbf{Modifying and adding values to |ini| files} \nobreak @@ -2390,6 +1572,585 @@ parameters. % hyphenation with % \end{example} +\subsection{List of locales available in \cs{babelprovide}} + +Here is the list of the names currently supported with |ini| locale +files, with |\babelprovide| (or |provide=|). With these languages, +|\babelfont| loads (if not done before) the language and script names +(even if the language is defined as a package option with an +\textsf{ldf} file). These are also the names recognized by +|\babelprovide| with a valueless |import|, which will load the |ini| +file with the tag given in parenthesis. + +Many locale are quite useable, provided captions and dates are +not required (which is a very frequent case, particularly in ancient +languages). So, they are included in the default \babel{} distribution. +This can serve to encourage contributions, too. A warning will remember +they are ‘bare minimum locales’. They are set in +\textcolor[gray]{.4}{gray} in the following list. + +\begin{note} + Although the names of the corresponding |lfd| files match those in + this list, there are some exceptions, particularly in German and + Serbian. So, |ngerman| is called here |german|, which is the name in + the CLDR and, actually, the most logical. +\end{note} + +\begingroup +\bigskip\hrule\nobreak + +\makeatletter +\def\tag#1{\par\@hangfrom{\makebox[10em][l]{#1}}\ignorespaces} +\def\tag#1#2#3{\par + \hspace{-2em}\textcolor{thered}{\texttt{#1}}#2\enspace + \mbox{\footnotesize(#3)}} +\def\subtag#1#2#3{\par + \hspace{-1em}\texttt{#1}#2\enspace + \mbox{\footnotesize(#3)}} +\def\subtagalt#1#2#3{\par + \hspace{-1em}\textcolor{thered}{\texttt{#1}}#2\enspace + \mbox{\footnotesize(#3)}} +\def\tagmin#1#2#3{\par + \hspace{-2em}\textcolor[gray]{.4}{\texttt{#1}}#2\enspace + \mbox{\footnotesize(#3)}} +\def\subtagmin#1#2#3{\par + \hspace{-1em}\textcolor[gray]{.4}{\texttt{#1}}#2\enspace + \mbox{\footnotesize(#3)}} +\def\hascapu{\textsuperscript{u}} +\def\hascapl{\textsuperscript{l}} +\def\note#1{\par{\footnotesize#1\par}} +\small + +\bigskip + +Recommended names are set in \textcolor{thered}{red}.\\ +In variants with the region or the script name (which are not +highlighted), prefer the full forms.\\ +Bare minimum locales are set in \textcolor[gray]{.4}{gray}.\\ +Discouraged and deprecated names are not included.\\ +\hascapu{} means Unicode captions; \hascapl{} means LICR captions.\\ +There are some notes in a few locales. + +\bigskip\hrule\nobreak + +\begin{multicols}{2} +\leftskip2em +\tag{abkhazian}{}{ab} +\tag{afar}{}{aa} +\tag{afrikaans}{\hascapu\hascapl}{af} +\tag{aghem}{}{agq} +\tag{akan}{}{ak} +\tagmin{akkadian}{}{akk} +\tag{albanian}{\hascapu\hascapl}{sq} +\tag{amharic}{\hascapu\hascapl}{am} +\tagmin{ancientegyptian}{}{egy} +\tag{ancientgreek}{\hascapu\hascapl}{grc}\note{It’s a different +language from \texttt{greek}.} +\tag{arabic}{\hascapu}{ar} +\subtag{arabic-algeria}{\hascapu}{ar-DZ} +\subtag{arabic-dz}{\hascapu}{ar-DZ} +\subtag{arabic-egypt}{\hascapu}{ar-EG} +\subtag{arabic-eg}{\hascapu}{ar-EG} +\subtag{arabic-iraq}{\hascapu}{ar-IQ} +\subtag{arabic-iq}{\hascapu}{ar-IQ} +\subtag{arabic-jordan}{\hascapu}{ar-JO} +\subtag{arabic-jo}{\hascapu}{ar-JO} +\subtag{arabic-lebanon}{\hascapu}{ar-LB} +\subtag{arabic-lb}{\hascapu}{ar-LB} +\subtag{arabic-morocco}{\hascapu}{ar-MA} +\subtag{arabic-ma}{\hascapu}{ar-MA} +\subtag{arabic-palestinianterritories}{\hascapu}{ar-PS} +\subtag{arabic-ps}{\hascapu}{ar-PS} +\subtag{arabic-saudiarabia}{\hascapu}{ar-SA} +\subtag{arabic-sa}{\hascapu}{ar-SA} +\subtag{arabic-syria}{\hascapu}{ar-SY} +\subtag{arabic-sy}{\hascapu}{ar-SY} +\subtag{arabic-tunisia}{\hascapu}{ar-TN} +\subtag{arabic-tn}{\hascapu}{ar-TN} +\tagmin{aramaic}{}{arc} +\subtagmin{aramaic-nabataean}{}{arc-nbat} +\subtagmin{aramaic-nbat}{}{arc-nbat} +\subtagmin{aramaic-palmyrene}{}{arc-palm} +\subtagmin{aramaic-palm}{}{arc-palm} +\tag{armenian}{\hascapu\hascapl}{hy} +\tag{assamese}{\hascapu}{as} +\tag{asturian}{\hascapu\hascapl}{ast} +\tag{asu}{}{asa} +\tag{atsam}{}{cch} +\tagmin{avestan}{}{ae} +\tag{awadhi}{}{awa} +\tagmin{aymara}{}{ay} +\tag{azerbaijani}{\hascapu\hascapl}{az} +\subtag{azerbaijani-cyrillic}{}{az-Cyrl} +\subtag{azerbaijani-cyrl}{}{az-Cyrl} +\subtag{azerbaijani-latin}{}{az-Latn} +\subtag{azerbaijani-latn}{}{az-Latn} +\tag{bafia}{}{ksf} +\tagmin{balinese}{}{ban} +\tag{baluchi}{}{bal} +\tag{bambara}{}{bm} +\tag{bangla}{\hascapu}{bn} +\tag{basaa}{}{bas} +\tagmin{bashkir}{}{ba} +\tag{basque}{\hascapu\hascapl}{eu} +\tagmin{bataktoba}{}{bbc} +\tagmin{bavarian}{}{bar} +\tag{belarusian}{\hascapu\hascapl}{be} +\tag{bemba}{}{bem} +\tag{bena}{}{bez} +\tag{bengali}{\hascapu}{bn} +\tag{bhojpuri}{}{bho} +\tag{blin}{}{byn} +\tag{bodo}{}{brx} +\tag{bosnian}{\hascapu\hascapl}{bs} +\subtag{bosnian-cyrillic}{}{bs-Cyrl} +\subtag{bosnian-cyrl}{}{bs-Cyrl} +\subtag{bosnian-latin}{\hascapu\hascapl}{bs-Latn} +\subtag{bosnian-latn}{\hascapu\hascapl}{bs-Latn} +\tag{breton}{\hascapu\hascapl}{br} +\tag{bulgarian}{\hascapu\hascapl}{bg} +\tag{buriat}{\hascapu\hascapl}{bua} +\tag{burmese}{}{my} +\tag{cantonese}{}{yue} +\tag{catalan}{\hascapu\hascapl}{ca} +\tag{cebuano}{}{ceb} +\tag{centralatlastamazight}{}{tzm} +\tag{centralkurdish}{\hascapu}{ckb} +\subtag{centralkurdish-latin}{\hascapu}{ckb-Latn} +\subtag{centralkurdish-latn}{\hascapu}{ckb-Latn} +\tag{chakma}{}{ccp} +\tag{chechen}{}{ce} +\tag{cherokee}{}{chr} +\tag{chiga}{}{cgg} +\tag{chinese}{\hascapu}{zh} +\subtag{chinese-simplified}{\hascapu}{zh-Hans} +\subtag{chinese-hans}{\hascapu}{zh-Hans} +\subtag{chinese-traditional}{\hascapu}{zh-Hant} +\subtag{chinese-hant}{\hascapu}{zh-Hant} +\subtag{chinese-simplified-hongkongsarchina}{}{zh-Hans-HK} +\subtag{chinese-hans-hk}{}{zh-Hans-HK} +\subtag{chinese-simplified-macausarchina}{}{zh-Hans-MO} +\subtag{chinese-hans-mo}{}{zh-Hans-MO} +\subtag{chinese-simplified-singapore}{}{zh-Hans-SG} +\subtag{chinese-hans-sg}{}{zh-Hans-SG} +\subtag{chinese-hant-hk}{}{zh-Hant-HK} +\subtag{chinese-traditional-hongkongsarchina}{}{zh-Hant-HK} +\subtag{chinese-hant-mo}{}{zh-Hant-MO} +\subtag{chinese-traditional-macausarchina}{}{zh-Hant-MO} +\tag{churchslavic}{\hascapu}{cu} +\subtag{churchslavic-cyrs}{\hascapu}{cu-Cyrs} +\subtag{churchslavic-glag}{}{cu-Glag} +\subtag{churchslavic-glagolitic}{}{cu-Glag} +\subtag{churchslavic-oldcyrillic}{\hascapu}{cu-Cyrs} +% \tag{churchslavonic}{\hascapu}{cu} +\tag{chuvash}{}{cv} +\tagmin{classicalmandaic}{}{myz} +% \tag{classiclatin}{\hascapu\hascapl}{la-x-classic} +\tag{colognian}{}{ksh} +\tag{coptic}{}{cop} +\tag{cornish}{}{kw} +\tag{corsican}{}{co} +\tag{croatian}{\hascapu\hascapl}{hr} +\tag{czech}{\hascapu\hascapl}{cs} +\tag{danish}{\hascapu\hascapl}{da} +\tagmin{divehi}{}{dv} +\tag{dogri}{}{doi} +\tag{duala}{}{dua} +\tag{dutch}{\hascapu\hascapl}{nl} +\tag{dzongkha}{}{dz} +% \tag{ecclesiasticlatin}{\hascapu\hascapl}{la-x-ecclesia} +\tagmin{egyptianarabic}{}{arz}\note{Masri or Colloquial Egyptian, with tag +\texttt{arz}, different from Standard Arabic as spoken in +Egypt, with tag \texttt{ar-EG}.} +\tag{embu}{}{ebu} +\tag{english}{\hascapu\hascapl}{en} +\subtagalt{american}{\hascapu\hascapl}{en-US} +\subtag{americanenglish}{\hascapu\hascapl}{en-US} +\subtagalt{australian}{\hascapu\hascapl}{en-AU} +\subtag{australianenglish}{\hascapu\hascapl}{en-AU} +\subtagalt{british}{\hascapu\hascapl}{en-GB} +\subtag{britishenglish}{\hascapu\hascapl}{en-GB} +\subtagalt{canadian}{\hascapu\hascapl}{en-CA} +\subtag{canadianenglish}{\hascapu\hascapl}{en-CA} +\subtag{english-australia}{\hascapu\hascapl}{en-AU} +\subtag{english-au}{\hascapu\hascapl}{en-AU} +\subtag{english-canada}{\hascapu\hascapl}{en-CA} +\subtag{english-ca}{\hascapu\hascapl}{en-CA} +\subtag{english-unitedkingdom}{\hascapu\hascapl}{en-GB} +\subtag{english-gb}{\hascapu\hascapl}{en-GB} +\subtag{english-newzealand}{\hascapu\hascapl}{en-NZ} +\subtag{english-unitedstates}{\hascapu\hascapl}{en-US} +\subtag{english-nz}{\hascapu\hascapl}{en-NZ} +\subtag{english-us}{\hascapu\hascapl}{en-US} +\tag{erzya}{}{myv} +\tag{esperanto}{\hascapu\hascapl}{eo} +\tag{estonian}{\hascapu\hascapl}{et} +\tag{ewe}{}{ee} +\tag{ewondo}{}{ewo} +\tag{faroese}{}{fo} +\tag{farsi}{\hascapu}{fa} +\tag{filipino}{}{fil} +\tag{finnish}{\hascapu\hascapl}{fi} +\tag{french}{\hascapu\hascapl}{fr} +\subtagalt{acadian}{\hascapu\hascapl}{fr-x-acadian} +\subtag{canadianfrench}{\hascapu\hascapl}{fr-CA} +\subtag{swissfrench}{\hascapu\hascapl}{fr-CH} +\subtag{french-belgium}{\hascapu\hascapl}{fr-BE} +\subtag{french-be}{\hascapu\hascapl}{fr-BE} +\subtag{french-canada}{\hascapu\hascapl}{fr-CA} +\subtag{french-ca}{\hascapu\hascapl}{fr-CA} +\subtag{french-luxembourg}{\hascapu\hascapl}{fr-LU} +\subtag{french-lu}{\hascapu\hascapl}{fr-LU} +\subtag{french-switzerland}{\hascapu\hascapl}{fr-CH} +\subtag{french-ch}{\hascapu\hascapl}{fr-CH} +\tag{friulian}{\hascapu\hascapl}{fur} +\tag{fulah}{}{ff} +\tag{ga}{}{gaa} +\tag{galician}{\hascapu\hascapl}{gl} +\tag{ganda}{}{lg} +\tag{geez}{}{gez} +\tag{georgian}{\hascapu}{ka} +\tag{german}{\hascapu\hascapl}{de} +\note{Note the \texttt{ldf} names differ. See note above.} +\subtag{german-traditional}{\hascapu\hascapl}{de-1901} +\subtagalt{austrian}{\hascapu\hascapl}{de-AT} +\subtag{german-austria}{\hascapu\hascapl}{de-AT} +\subtag{german-at}{\hascapu\hascapl}{de-AT} +\subtag{german-austria-traditional}{\hascapu\hascapl}{de-AT-1901} +\subtagalt{swisshighgerman}{\hascapu\hascapl}{de-CH}\note{\texttt{swissgerman}, +with tag \texttt{gsw} is a different language.} +\subtag{german-switzerland}{\hascapu\hascapl}{de-CH} +\subtag{german-ch}{\hascapu\hascapl}{de-CH} +\subtag{german-switzerland-traditional}{\hascapu\hascapl}{de-CH-1901} +\tagmin{gothic}{}{got} +\tag{greek}{\hascapu\hascapl}{el} +\subtag{monotonicgreek}{\hascapu\hascapl}{el} +\subtagalt{polytonicgreek}{\hascapu\hascapl}{el-polyton} +\tag{guarani}{}{gn} +\tag{gujarati}{\hascapu}{gu} +\tag{gusii}{}{guz} +\tag{haryanvi}{}{bgc} +\tag{hausa}{\hascapu\hascapl}{ha} +\subtag{hausa-ghana}{}{ha-GH} +\subtag{hausa-gh}{}{ha-GH} +\subtag{hausa-niger}{}{ha-NE} +\subtag{hausa-ne}{}{ha-NE} +\tag{hawaiian}{}{haw} +\tag{hebrew}{\hascapu\hascapl}{he} +\tag{hindi}{\hascapu}{hi} +\tag{hmongnjua}{}{hnj} +\tag{hungarian}{\hascapu\hascapl\hascapl\hascapl}{hu} +\tag{icelandic}{\hascapu\hascapl}{is} +\tag{igbo}{}{ig} +\tag{inarisami}{}{smn} +\tag{indonesian}{\hascapu\hascapl}{id} +\tagmin{ingush}{}{inh} +\tag{interlingua}{\hascapu\hascapl}{ia} +\tag{inuktitut}{}{iu} +\tag{irish}{\hascapu\hascapl}{ga} +\tag{italian}{\hascapu\hascapl}{it} +\tag{japanese}{\hascapu}{ja} +\tag{javanese}{}{jv} +\tag{jju}{}{kaj} +\tag{jolafonyi}{}{dyo} +\tag{kabuverdianu}{}{kea} +\tag{kabyle}{}{kab} +\tag{kaingang}{}{kgp} +\tag{kako}{}{kkj} +\tag{kalaallisut}{}{kl} +\tag{kalenjin}{}{kln} +\tag{kamba}{}{kam} +\tag{kannada}{\hascapu}{kn} +\tag{kashmiri}{}{ks} +\tag{kazakh}{}{kk} +\tag{khmer}{\hascapu}{km} +\tag{kikuyu}{}{ki} +\tag{kinyarwanda}{}{rw} +\tagmin{komi}{}{kv} +\tag{konkani}{}{kok} +\tag{korean}{\hascapu}{ko} +\subtag{korean-han}{\hascapu}{ko-Hani} +\subtag{korean-hani}{\hascapu}{ko-Hani} +\tag{koyraborosenni}{}{ses} +\tag{koyrachiini}{}{khq} +\tag{kurmanji}{\hascapu\hascapl}{kmr} +\tag{kwasio}{}{nmg} +\tag{kyrgyz}{}{ky} +\tagmin{ladino}{}{lad} +\tag{lakota}{}{lkt} +\tag{langi}{}{lag} +\tag{lao}{\hascapu}{lo} +\tag{latin}{\hascapu\hascapl}{la} +\subtagalt{ecclesiasticallatin}{\hascapu\hascapl}{la-x-ecclesia} +\subtagalt{classicallatin}{\hascapu\hascapl}{la-x-classic} +\subtagalt{medievallatin}{\hascapu\hascapl}{la-x-medieval} +\tag{latvian}{\hascapu\hascapl}{lv} +\tagmin{lepcha}{}{lep} +\tag{ligurian}{}{lij} +\tagmin{limbu}{}{lif} +\subtagmin{limbu-limb}{}{lif-limb} +\subtagmin{limbu-limbu}{}{lif-limb} +\tagmin{lineara}{}{lab} +\tag{lingala}{}{ln} +\tag{lithuanian}{\hascapu\hascapl\hascapl\hascapl}{lt} +\tagmin{lombard}{}{lmo} +\tag{lowersorbian}{\hascapu\hascapl}{dsb} +\tag{lowgerman}{}{nds} +% \tag{lsorbian}{\hascapu\hascapl}{dsb} +\tagmin{lu}{}{khb} +\tag{lubakatanga}{}{lu} +\tag{luo}{}{luo} +\tag{luxembourgish}{\hascapu\hascapl}{lb} +\tag{luyia}{}{luy} +\tag{macedonian}{\hascapu\hascapl}{mk} +\tag{machame}{}{jmc} +\tag{magyar}{\hascapu\hascapl\hascapl\hascapl}{hu} +\tag{maithili}{}{mai} +\tagmin{makasar}{}{mak} +\subtagmin{makasar-bugi}{}{mak-Bugi} +\subtagmin{makasar-buginese}{}{mak-Bugi} +\tag{makhuwameetto}{}{mgh} +\tag{makonde}{}{kde} +\tag{malagasy}{}{mg} +\tag{malay}{\hascapu\hascapl}{ms} +\subtag{malay-brunei}{}{ms-BN} +\subtag{malay-bn}{}{ms-BN} +\subtag{malay-singapore}{}{ms-SG} +\subtag{malay-sg}{}{ms-SG} +\tag{malayalam}{\hascapu}{ml} +\tag{maltese}{}{mt} +\tag{manipuri}{}{mni} +\tag{manx}{}{gv} +\tag{maori}{}{mi} +\tag{marathi}{\hascapu}{mr} +\tag{masai}{}{mas} +\tag{mazanderani}{}{mzn} +\tag{meru}{}{mer} +\tag{meta}{}{mgo} +\tag{mongolian}{}{mn} +\tag{monotonicgreek}{\hascapu\hascapl}{el} +\tag{morisyen}{}{mfe} +\tag{mundang}{}{mua} +\tag{muscogee}{}{mus} +\tag{nama}{}{naq} +% \tag{naustrian}{\hascapu\hascapl}{de-AT} +\tagmin{navajo}{}{nv} +\tag{nepali}{}{ne} +\tagmin{newari}{}{new} +\tag{newzealand}{\hascapu\hascapl}{en-NZ} +% \tag{ngerman}{\hascapu\hascapl}{de} +\tag{ngiemboon}{}{nnh} +\tag{ngomba}{}{jgo} +\tag{nheengatu}{}{yrl} +\tag{nigerianpidgin}{}{pcm} +\tag{nko}{}{nqo} +\tag{northernfrisian}{}{frr} +\tag{northernkurdish}{\hascapu\hascapl}{kmr} +\subtag{northernkurdish-arab}{\hascapu}{kmr-Arab} +\subtag{northernkurdish-arabic}{\hascapu}{kmr-Arab} +\tag{northernluri}{}{lrc} +\tag{northernsami}{\hascapu\hascapl}{se} +\tag{northernsotho}{}{nso} +\tag{northndebele}{}{nd} +\tag{norwegian}{\hascapu\hascapl}{no} +\subtag{norsk}{\hascapu\hascapl}{no} +\note{In the CLDR, \texttt{norwegianbokmal} (nb) just inherites from +\texttt{norwegian}, so use the latter.} +% \tag{norwegianbokmal}{\hascapu\hascapl}{nb} +\tag{nswissgerman}{\hascapu\hascapl}{de-CH} +\tag{nuer}{}{nus} +\tag{nyanja}{}{ny} +\tag{nyankole}{}{nyn} +\tag{nynorsk}{\hascapu\hascapl}{nn} +\subtag{norwegiannynorsk}{\hascapu\hascapl}{nn} +\tag{occitan}{\hascapu\hascapl}{oc} +\tag{odia}{\hascapu}{or} +\tagmin{oldnorse}{}{non} +% \tag{oriya}{\hascapu}{or} +\tag{oromo}{}{om} +\tag{ossetic}{}{os} +\tag{papiamento}{}{pap} +\tag{pashto}{}{ps} +\tag{persian}{\hascapu}{fa} +\subtag{farsi}{\hascapu}{fa} +\tagmin{phoenician}{}{phn} +\tag{piedmontese}{\hascapu\hascapl}{pms} +\tag{polish}{\hascapu\hascapl}{pl} +\tag{portuguese}{\hascapu\hascapl}{pt} +\subtagalt{brazilian}{\hascapu\hascapl}{pt-BR} +\subtag{brazilianportuguese}{\hascapu\hascapl}{pt-BR} +\subtag{portuguese-brazil}{\hascapu\hascapl}{pt-BR} +\subtag{portuguese-br}{\hascapu\hascapl}{pt-BR} +\subtag{europeanportuguese}{\hascapu\hascapl}{pt-PT} +\subtag{portuguese-portugal}{\hascapu\hascapl}{pt-PT} +\subtag{portuguese-pt}{\hascapu\hascapl}{pt-PT} +\tag{prussian}{}{prg} +\tag{punjabi}{\hascapu}{pa} +\subtag{punjabi-arabic}{}{pa-Arab} +\subtag{punjabi-arab}{}{pa-Arab} +\subtag{punjabi-gurmukhi}{\hascapu}{pa-Guru} +\subtag{punjabi-guru}{\hascapu}{pa-Guru} +\tag{quechua}{}{qu} +\tag{rajasthani}{}{raj} +\tag{romanian}{\hascapu\hascapl}{ro} +\subtagalt{moldavian}{\hascapu\hascapl}{ro-MD} +\subtag{romanian-moldova}{\hascapu\hascapl}{ro-MD} +\subtag{romanian-md}{\hascapu\hascapl}{ro-MD} +\tag{romansh}{\hascapu\hascapl}{rm} +\tag{rombo}{}{rof} +\tag{rundi}{}{rn} +\tag{russian}{\hascapu\hascapl}{ru} +\tag{rwa}{}{rwk} +\tag{saho}{}{ssy} +\tag{sakha}{}{sah} +\tagmin{samaritan}{}{smp} +\tag{samburu}{}{saq} +\tag{samin}{\hascapu\hascapl}{se} +\tag{sango}{}{sg} +\tag{sangu}{}{sbp} +\tag{sanskrit}{}{sa} +\subtag{sanskrit-bangla}{}{sa-Beng} +\subtag{sanskrit-beng}{}{sa-Beng} +% \subtag{sanskrit-bengali}{}{sa-Beng} +\subtag{sanskrit-devanagari}{}{sa-Deva} +\subtag{sanskrit-deva}{}{sa-Deva} +\subtag{sanskrit-gujarati}{}{sa-Gujr} +\subtag{sanskrit-gujr}{}{sa-Gujr} +\subtag{sanskrit-kannada}{}{sa-Knda} +\subtag{sanskrit-knda}{}{sa-Knda} +\subtag{sanskrit-malayalam}{}{sa-Mlym} +\subtag{sanskrit-mlym}{}{sa-Mlym} +\subtag{sanskrit-telugu}{}{sa-Telu} +\subtag{sanskrit-telu}{}{sa-Telu} +\tag{santali}{}{sat} +\tag{saraiki}{}{skr} +\tag{sardinian}{}{sc} +\tag{scottishgaelic}{\hascapu\hascapl}{gd} +\tag{sena}{}{seh} +\tag{serbian}{\hascapu\hascapl}{sr} +\note{Note the \texttt{ldf} names differ. See note above.} +\subtag{serbian-cyrillic}{\hascapu\hascapl}{sr-Cyrl} +\subtag{serbian-cyrl}{\hascapu\hascapl}{sr-Cyrl} +\subtag{serbian-cyrillic-bosniaherzegovina}{\hascapu\hascapl}{sr-Cyrl-BA} +\subtag{serbian-cyrl-ba}{\hascapu\hascapl}{sr-Cyrl-BA} +\subtag{serbian-cyrillic-kosovo}{\hascapu\hascapl}{sr-Cyrl-XK} +\subtag{serbian-cyrl-xk}{\hascapu\hascapl}{sr-Cyrl-XK} +\subtag{serbian-cyrillic-montenegro}{\hascapu\hascapl}{sr-Cyrl-ME} +\subtag{serbian-cyrl-me}{\hascapu\hascapl}{sr-Cyrl-ME} +\subtag{serbian-latin}{\hascapu\hascapl}{sr-Latn} +\subtag{serbian-latn}{\hascapu\hascapl}{sr-Latn} +\subtag{serbian-latin-bosniaherzegovina}{\hascapu\hascapl}{sr-Latn-BA} +\subtag{serbian-latn-ba}{\hascapu\hascapl}{sr-Latn-BA} +\subtag{serbian-latin-kosovo}{\hascapu\hascapl}{sr-Latn-XK} +\subtag{serbian-latn-xk}{\hascapu\hascapl}{sr-Latn-XK} +\subtag{serbian-latin-montenegro}{\hascapu\hascapl}{sr-Latn-ME} +\subtag{serbian-latn-me}{\hascapu\hascapl}{sr-Latn-ME} +\subtag{serbian-ijekavsk}{\hascapu\hascapl}{sr-ijekavsk} +\subtag{serbian-latn-ijekavsk}{\hascapu\hascapl}{sr-Latn-ijekavsk} +% \tag{serbianc}{\hascapu\hascapl}{sr} +\tag{shambala}{}{ksb} +\tag{shona}{}{sn} +\tag{sichuanyi}{}{ii} +\tag{sicilian}{}{scn} +\tag{silesian}{}{szl} +\tag{sindhi}{}{sd} +\subtag{sindhi-devanagari}{}{sd-deva} +\subtag{sindhi-deva}{}{sd-deva} +\subtag{sindhi-khojki}{}{sd-khoj} +\subtag{sindhi-khoj}{}{sd-khoj} +\subtag{sindhi-khudawadi}{}{sd-sind} +\subtag{sindhi-sind}{}{sd-sind} +\tag{sinhala}{\hascapu}{si} +\tagmin{sinteromani}{}{rmo} +\tag{slovak}{\hascapu\hascapl}{sk} +\tag{slovene}{\hascapu\hascapl}{sl} +\tag{slovenian}{\hascapu\hascapl}{sl} +\tag{soga}{}{xog} +\tag{somali}{}{so} +\tag{sorani}{\hascapu}{ckb} +\tagmin{southernaltai}{}{alt} +\tag{southernsotho}{}{st} +\tag{southndebele}{}{nr} +\tag{spanish}{\hascapu\hascapl}{es} +\subtagalt{mexican}{\hascapu\hascapl}{es-MX} +\subtag{mexicanspanish}{\hascapu\hascapl}{es-MX} +\subtag{spanish-mexico}{\hascapu\hascapl}{es-MX} +\subtag{spanish-mx}{\hascapu\hascapl}{es-MX} +\tag{standardmoroccantamazight}{}{zgh} +\tag{sundanese}{}{su} +\tag{swahili}{}{sw} +\tag{swati}{}{ss} +\tag{swedish}{\hascapu\hascapl}{sv} +\tag{swissgerman}{}{gsw} +\note{Different from \texttt{swisshighgerman} (de-CH), which is German as spoken +in Switzerland.} +\tag{syriac}{}{syr} +\tag{tachelhit}{}{shi} +\subtag{tachelhit-latin}{}{shi-Latn} +\subtag{tachelhit-latn}{}{shi-Latn} +\subtag{tachelhit-tifinagh}{}{shi-Tfng} +\subtag{tachelhit-tfng}{}{shi-Tfng} +\tagmin{tainua}{}{tdd} +\tag{taita}{}{dav} +\tag{tajik}{}{tg} +\tag{tamil}{\hascapu}{ta} +\tagmin{tangut}{}{txg} +\tag{taroko}{}{trv} +\tag{tasawaq}{}{twq} +\tag{tatar}{}{tt} +\tag{telugu}{\hascapu}{te} +\tag{teso}{}{teo} +\tag{thai}{\hascapu\hascapl}{th} +\tag{tibetan}{\hascapu}{bo} +\tag{tigre}{}{tig} +\tag{tigrinya}{}{ti} +\tag{tokpisin}{}{tpi} +\tag{tongan}{}{to} +\tag{tsonga}{}{ts} +\tag{tswana}{}{tn} +\tag{turkish}{\hascapu\hascapl}{tr} +\tag{turkmen}{\hascapu\hascapl}{tk} +\tag{tyap}{}{kcg} +\tag{ukenglish}{\hascapu\hascapl}{en-GB} +\tag{ukrainian}{\hascapu\hascapl}{uk} +\tag{uppersorbian}{\hascapu\hascapl}{hsb} +\tag{urdu}{\hascapu}{ur} +\tag{usenglish}{\hascapu\hascapl}{en-US} +\tag{usorbian}{\hascapu\hascapl}{hsb} +\tag{uyghur}{\hascapu}{ug} +\tag{uzbek}{}{uz} +\subtag{uzbek-arabic}{}{uz-Arab} +\subtag{uzbek-arab}{}{uz-Arab} +\subtag{uzbek-cyrillic}{}{uz-Cyrl} +\subtag{uzbek-cyrl}{}{uz-Cyrl} +\subtag{uzbek-latin}{}{uz-Latn} +\subtag{uzbek-latn}{}{uz-Latn} +\tag{vai}{}{vai} +\subtag{vai-latin}{}{vai-Latn} +\subtag{vai-latn}{}{vai-Latn} +\subtag{vai-vai}{}{vai-Vaii} +\subtag{vai-vaii}{}{vai-Vaii} +\tag{venda}{}{ve} +\tag{vietnamese}{\hascapu\hascapl}{vi} +\tag{volapuk}{}{vo} +\tag{vunjo}{}{vun} +\tag{walser}{}{wae} +\tagmin{waray}{}{war} +\tag{welsh}{\hascapu\hascapl}{cy} +\tag{westernfrisian}{}{fy} +\tag{wolaytta}{}{wal} +\tag{wolof}{}{wo} +\tag{xhosa}{}{xh} +\tag{yangben}{}{yav} +\tag{yiddish}{}{yi} +\tag{yoruba}{}{yo} +\tag{zarma}{}{dje} +\tag{zulu}{}{zu} +\end{multicols} +\endgroup +\hrule +\bigskip + \subsection{Selecting fonts} \New{3.15} Babel provides a high level interface on top of |fontspec| @@ -4718,29 +4479,6 @@ options (like paragraph direction with |bidi.text|). \subsection{Tips, workarounds, known issues and notes} \begin{itemize} -\item If you use the document class \cls{book} \emph{and} you use - |\ref| inside the argument of |\chapter| (or just use |\ref| inside - |\MakeUppercase|), \LaTeX\ will keep complaining about an undefined - label. To prevent such problems, you can revert to using - uppercase labels, you can use |\lowercase{\ref{foo}}| inside the - argument of |\chapter|, or, if you will not use shorthands in - labels, set the |safe| option to |none| or |bib|. - -\item\catcode`\|=12\relax Both \textsf{ltxdoc} and \textsf{babel} use - \verb|\AtBeginDocument| to change some catcodes, and babel reloads - \textsf{hhline} to make sure \verb|:| has the right one, so if you - want to change the catcode of \verb/|/ it has to be done using the - same method at the proper place, with -\begin{verbatim} -\AtBeginDocument{\DeleteShortVerb{\|}} -\end{verbatim} - \textit{before} loading babel. This way, when the document begins - the sequence is (1) make \verb/|/ active (\textsf{ltxdoc}); (2) make - it inactive (your settings); (3) make babel shorthands active - (\textsf{babel)}; (4) reload \textsf{hhline} (\textsf{babel}, now - with the correct catcodes for \verb/|/ and - \verb|:|).\catcode`\|=\active - \item For the hyphenation to work correctly, lccodes cannot change, because \TeX{} only takes into account the values when the paragraph is hyphenated, i.e., when it has been @@ -4754,19 +4492,13 @@ options (like paragraph direction with |bidi.text|). \babel. Alternatively, you may use |\useshorthands| to activate |'| and |\defineshorthand|, or redefine |\textquoteright| (the latter is called by the non-ASCII right quote). -\item \verb|\bibitem| is out of sync with \verb|\selectlanguage| in - the \file{.aux} file. The reason is \verb|\bibitem| uses - \verb|\immediate| (and others, in fact), while - \verb|\selectlanguage| doesn't. There is a similar issue with floats, - too. There is no known workaround. \item Babel does not take into account |\normalsfcodes| and (non-)French spacing is not always properly (un)set by languages. However, problems are unlikely to happen and therefore - this part remains untouched in version 3.9 (but it is in the `to - do' list). + this part remains untouched (but it is in the `to do' list). \item Using a character mathematically active (ie, with math code |"8000|) as a shorthand can make \TeX{} enter in an infinite loop in - some rare cases. (Another issue in the `to do' list, although there + some rare cases. (Another issue in the ‘to do’ list, although there is a partial solution.) \end{itemize} @@ -5695,8 +5427,8 @@ wouldn’t exist. % \section{Tools} % % \begin{macrocode} -%<> -%<> +%<> +%<> % \end{macrocode} % % \textbf{Do not use the following macros in \texttt{ldf} files. They @@ -6142,11 +5874,12 @@ wouldn’t exist. \directlua{ Babel = Babel or {} Babel.debug = false }% \fi} -\def\bbl@error#1#2{% +\def\bbl@error#1{% Implicit #2#3#4 \begingroup - \def\\{\MessageBreak}% - \PackageError{babel}{#1}{#2}% - \endgroup} + \catcode`\\=0 \catcode`\==12 \catcode`\`=12 + \input errbabel.def + \endgroup + \bbl@error{#1}} \def\bbl@warning#1{% \begingroup \def\\{\MessageBreak}% @@ -6344,12 +6077,7 @@ wouldn’t exist. \bbl@csarg\ifx{opt@#1}\@nnil \bbl@csarg\edef{opt@#1}{#2}% \else - \bbl@error - {Bad option '#1=#2'. Either you have misspelled the\\% - key or there is a previous setting of '#1'. Valid\\% - keys are, among others, 'shorthands', 'main', 'bidi',\\% - 'strings', 'config', 'headfoot', 'safe', 'math'.}% - {See the manual for further details.} + \bbl@error{bad-package-option}{#1}{#2}{}% \fi} % \end{macrocode} % @@ -6658,11 +6386,7 @@ wouldn’t exist. %<-core> \def\bbl@provide@locale{% \ifx\babelprovide\@undefined - \bbl@error{For a language to be defined on the fly 'base'\\% - is not enough, and the whole package must be\\% - loaded. Either delete the 'base' option or\\% - request the languages explicitly}% - {See the manual for further details.}% + \bbl@error{base-on-the-fly}{}{}{}% \fi \let\bbl@auxname\languagename % Still necessary. TODO \bbl@ifunset{bbl@bcp@map@\languagename}{}% Move uplevel?? @@ -7413,10 +7137,7 @@ wouldn’t exist. % will use the concept of `locale': % % \begin{macrocode} -\providecommand\setlocale{% - \bbl@error - {Not yet available}% - {Find an armchair, sit down and wait}} +\providecommand\setlocale{\bbl@error{not-yet-available}{}{}{}} \let\uselocale\setlocale \let\locale\setlocale \let\selectlocale\setlocale @@ -7472,12 +7193,7 @@ wouldn’t exist. They might not work as expected and their behavior\\% could change in the future.\\% Reported}} -\def\@nolanerr#1{% - \bbl@error - {You haven't defined the language '#1' yet.\\% - Perhaps you misspelled it or your installation\\% - is not complete}% - {Your command will be ignored, type to proceed}} +\def\@nolanerr#1{\bbl@error{undefined-language}{#1}{}{}} \def\@nopatterns#1{% \bbl@warning {No hyphenation patterns were preloaded for\\% @@ -8505,10 +8221,7 @@ wouldn’t exist. \initiate@active@char{#2}% #1% \bbl@activate{#2}}% - {\bbl@error - {I can't declare a shorthand turned off (\string#2)} - {Sorry, but you can't use shorthands which have been\\% - turned off in the package options}}} + {\bbl@error{shorthand-is-off}{}{#2}{}}} % \end{macrocode} % % \end{macro} @@ -8583,10 +8296,7 @@ wouldn’t exist. \bbl@activate{#2}% \fi \fi}% - {\bbl@error - {Cannot declare a shorthand turned off (\string#2)} - {Sorry, but you cannot use shorthands which have been\\% - turned off in the package options}}} + {\bbl@error{shorthand-is-off}{}{#2}{}}} % \end{macrocode} % % \end{macro} @@ -8594,13 +8304,7 @@ wouldn’t exist. % \begin{macro}{\@notshorthand} % % \begin{macrocode} -\def\@notshorthand#1{% - \bbl@error{% - The character '\string #1' should be made a shorthand character;\\% - add the command \string\useshorthands\string{#1\string} to - the preamble.\\% - I will ignore your instruction}% - {You may proceed, but expect unexpected results}} +\def\@notshorthand#1{\bbl@error{not-a-shorthand}{#1}{}{}} % \end{macrocode} % % \end{macro} @@ -8639,10 +8343,7 @@ wouldn’t exist. \def\bbl@switch@sh#1#2{% \ifx#2\@nnil\else \bbl@ifunset{bbl@active@\string#2}% - {\bbl@error - {I can't switch '\string#2' on or off--not a shorthand}% - {This character is not a shorthand. Maybe you made\\% - a typing mistake? I will ignore your instruction.}}% + {\bbl@error{not-a-shorthand-b}{}{#2}{}}% {\ifcase#1% off, on, off* \catcode`#212\relax \or @@ -8845,9 +8546,7 @@ wouldn’t exist. % % \begin{macrocode} \newcommand*{\@attrerr}[2]{% - \bbl@error - {The attribute #2 is unknown for language #1.}% - {Your command will be ignored, type to proceed}} + \bbl@error{unknown-attribute}{#1}{#2}{}} % \end{macrocode} % % \end{macro} @@ -9384,9 +9083,7 @@ wouldn’t exist. \bbl@scswitch \ifx\bbl@G\@empty \def\SetString##1##2{% - \bbl@error{Missing group for string \string##1}% - {You must assign strings to some category, typically\\% - captions or extras, but you set none}}% + \bbl@error{missing-group}{##1}{}{}}% \fi \ifx\@empty#1% \bbl@usehooks{defaultcommands}{}% @@ -10180,14 +9877,8 @@ wouldn’t exist. \or \input xebabel.def \fi -\providecommand\babelfont{% - \bbl@error - {This macro is available only in LuaLaTeX and XeLaTeX.}% - {Consider switching to these engines.}} -\providecommand\babelprehyphenation{% - \bbl@error - {This macro is available only in LuaLaTeX.}% - {Consider switching to that engine.}} +\providecommand\babelfont{\bbl@error@{only-lua-xe}{}{}{}} +\providecommand\babelprehyphenation{\bbl@error{only-lua}{}{}{}} \ifx\babelposthyphenation\@undefined \let\babelposthyphenation\babelprehyphenation \let\babelpatterns\babelprehyphenation @@ -10235,9 +9926,7 @@ wouldn’t exist. \bbl@renewinikey##1\@@{##2}% \else \bbl@csarg\ifx{KVP@##1}\@nnil\else - \bbl@error - {Unknown key '##1' in \string\babelprovide}% - {See the manual for valid keys}% + \bbl@error{unknown-provide-key}{##1}{}{}% \fi \bbl@csarg\def{KVP@##1}{##2}% \fi}% @@ -10396,14 +10085,17 @@ wouldn’t exist. \let\bbl@mapselect\relax \edef\bbl@prefontid{\fontid\font}}% \def\bbl@mapdir##1{% - {\def\languagename{##1}% - \let\bbl@ifrestoring\@firstoftwo % To avoid font warning - \bbl@switchfont - \ifnum\fontid\font>\z@ % A hack, for the pgf nullfont hack - \directlua{ - Babel.locale_props[\the\csname bbl@id@@##1\endcsname]% - ['/\bbl@prefontid'] = \fontid\font\space}% - \fi}}% + \begingroup + \setbox\z@\hbox{% Force text mode + \def\languagename{##1}% + \let\bbl@ifrestoring\@firstoftwo % To avoid font warning + \bbl@switchfont + \ifnum\fontid\font>\z@ % A hack, for the pgf nullfont hack + \directlua{ + Babel.locale_props[\the\csname bbl@id@@##1\endcsname]% + ['/\bbl@prefontid'] = \fontid\font\space}% + \fi}% + \endgroup}% \fi \bbl@exp{\\\bbl@add\\\bbl@mapselect{\\\bbl@mapdir{\languagename}}}% \fi @@ -10413,9 +10105,7 @@ wouldn’t exist. % For bidi texts, to switch the font based on direction \ifx\bbl@KVP@mapfont\@nnil\else \bbl@ifsamestring{\bbl@KVP@mapfont}{direction}{}% - {\bbl@error{Option '\bbl@KVP@mapfont' unknown for\\% - mapfont. Use 'direction'.% - {See the manual for details.}}}% + {\bbl@error{unknown-mapfont}{}{}{}}% \bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}% \bbl@ifunset{bbl@wdir@\languagename}{\bbl@provide@dirs{\languagename}}{}% \ifx\bbl@mapselect\@undefined % TODO. See onchar. @@ -10825,11 +10515,7 @@ wouldn’t exist. \global\let\bbl@extend@ini\@gobble \openin\bbl@readstream=babel-#1.ini \ifeof\bbl@readstream - \bbl@error - {There is no ini file for the requested language\\% - (#1: \languagename). Perhaps you misspelled it or your\\% - installation is not complete.}% - {Fix the name or reinstall babel.}% + \bbl@error{no-ini-file}{#1}{}{}% \else % == Store ini data in \bbl@inidata == \catcode`\[=12 \catcode`\]=12 \catcode`\==12 \catcode`\&=12 @@ -11100,9 +10786,7 @@ wouldn’t exist. % \begin{macrocode} \def\bbl@inikv@counters#1#2{% \bbl@ifsamestring{#1}{digits}% - {\bbl@error{The counter name 'digits' is reserved for mapping\\% - decimal digits}% - {Use another name.}}% + {\bbl@error{digits-is-reserved}{}{}{}}% {}% \def\bbl@tempc{#1}% \bbl@trim@def{\bbl@tempb*}{#2}% @@ -11393,10 +11077,7 @@ wouldn’t exist. \else\ifnum#1<1000 \expandafter\@gobble\number#1 % \else\ifnum#1<10000 \expandafter\@gobbletwo\number#1 % \else - \bbl@error - {Currently two-digit years are restricted to the\\ - range 0-9999.}% - {There is little you can do. Sorry.}% + \bbl@error{limit-two-digits}{}{}{}% \fi\fi\fi\fi}} \newcommand\BabelDateyyyy[1]{{\number#1}} % TODO - add leading 0 \newcommand\BabelDateU[1]{{\number#1}}% @@ -11641,8 +11322,7 @@ wouldn’t exist. \fi}% {\bbl@cs{cntr@#1.F.\number#5#6#7#8@\languagename}}} \def\bbl@alphnum@invalid#1{% - \bbl@error{Alphabetic numeral too large (#1)}% - {Currently this is the limit.}} + \bbl@error{alphabetic-too-large}{#1}{}{}} % \end{macrocode} % % The information in the identification section can be useful, so the @@ -11658,10 +11338,7 @@ wouldn’t exist. \bbl@afterelse\bbl@localeinfo{}% \else \bbl@localeinfo - {\bbl@error{I've found no info for the current locale.\\% - The corresponding ini file has not been loaded\\% - Perhaps it doesn't exist}% - {See the manual for details.}}% + {\bbl@error{no-ini-info}{}{}{}}% {#1}% \fi} % \@namedef{bbl@info@name.locale}{lcname} @@ -11704,9 +11381,7 @@ wouldn’t exist. {\bbl@bcpdata@ii{#1#2#3#4#5#6}\languagename}}% \def\bbl@bcpdata@ii#1#2{% \bbl@ifunset{bbl@info@#1.tag.bcp47}% - {\bbl@error{Unknown field '#1' in \string\BCPdata.\\% - Perhaps you misspelled it.}% - {See the manual for details.}}% + {\bbl@error{unknown-ini-field}{#1}{}{}}% {\bbl@ifunset{bbl@\csname bbl@info@#1.tag.bcp47\endcsname @#2}{}% {\bbl@cs{\csname bbl@info@#1.tag.bcp47\endcsname @#2}}}} \fi @@ -11799,11 +11474,7 @@ wouldn’t exist. \def\bbl@getproperty@x#1#2#3{% \bbl@getproperty@s{#1}{#2}{#3}% \ifx#1\relax - \bbl@error - {Unknown key for locale '#2':\\% - #3\\% - \string#1 will be set to \relax}% - {Perhaps you misspelled it.}% + \bbl@error{unknown-locale-key}{#1}{#2}{#3}% \fi} \let\bbl@ini@loaded\@empty \newcommand\LocaleForEach{\bbl@foreach\bbl@ini@loaded} @@ -11834,10 +11505,7 @@ wouldn’t exist. \expandafter\expandafter\expandafter\@gobble \fi \fi - {\bbl@error % The error is gobbled if everything went ok. - {Currently, #1 related features can be adjusted only\\% - in the main vertical list.}% - {Maybe things change in the future, but this is what it is.}}} + {\bbl@error{adjust-only-vertical}{#1}{}{}}}% Gobbled if everything went ok. \@namedef{bbl@ADJ@bidi.mirroring@on}{% \bbl@adjust@lua{bidi}{mirroring_enabled=true}} \@namedef{bbl@ADJ@bidi.mirroring@off}{% @@ -11873,10 +11541,7 @@ wouldn’t exist. #1% \expandafter\@gobble \fi - {\bbl@error % The error is gobbled if everything went ok. - {Currently, layout related features can be adjusted only\\% - in vertical mode.}% - {Maybe things change in the future, but this is what it is.}}} + {\bbl@error{layout-only-vertical}{}{}{}}}% Gobbled if everything went ok. \@namedef{bbl@ADJ@layout.tabular@on}{% \ifnum\bbl@tabular@mode=\tw@ \bbl@adjust@layout{\let\@tabular\bbl@NL@@tabular}% @@ -12092,8 +11757,8 @@ wouldn’t exist. \bbl@xin@{B}\bbl@opt@safe \ifin@ \bbl@redefine\@citex[#1]#2{% - \@safe@activestrue\edef\@tempa{#2}\@safe@activesfalse - \org@@citex[#1]{\@tempa}} + \@safe@activestrue\edef\bbl@tempa{#2}\@safe@activesfalse + \org@@citex[#1]{\bbl@tempa}} % \end{macrocode} % % Unfortunately, the packages \pkg{natbib} and \pkg{cite} need a @@ -12118,8 +11783,8 @@ wouldn’t exist. % % \begin{macrocode} \def\@citex[#1][#2]#3{% - \@safe@activestrue\edef\@tempa{#3}\@safe@activesfalse - \org@@citex[#1][#2]{\@tempa}}% + \@safe@activestrue\edef\bbl@tempa{#3}\@safe@activesfalse + \org@@citex[#1][#2]{\bbl@tempa}}% }{}} % \end{macrocode} % @@ -12640,11 +12305,7 @@ wouldn’t exist. \ifodd\bbl@engine \else % TODO. Move to txtbabel \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\\% - expect wrong results}% - {See the manual for further details.}% + \bbl@error{bidi-only-lua}{}{}{}% \let\bbl@beforeforeign\leavevmode \AtEndOfPackage{% \EnableBabelHook{babel-bidi}% @@ -12760,8 +12421,7 @@ wouldn’t exist. \ifhmode \ifnum\currentgrouplevel>\z@ \ifnum\currentgrouplevel=\bbl@dirlevel - \bbl@error{Multiple bidi settings inside a group}% - {I'll insert a new group, but expect wrong results.}% + \bbl@error{multiple-bidi}{}{}{}% \bgroup\aftergroup#2\aftergroup\egroup \else \ifcase\currentgrouptype\or % 0 bottom @@ -12895,14 +12555,7 @@ wouldn’t exist. If it’s the main language, try adding `provide=*'\\% to the babel package options}}% {\let\bbl@tempa\empty}% - \bbl@error{% - Unknown option '\CurrentOption'. Either you misspelled it\\% - or the language definition file \CurrentOption.ldf\\% - was not found% - \bbl@tempa}{% - Valid options are, among others: shorthands=, KeepShorthandsActive,\\% - activeacute, activegrave, noconfigs, safe=, main=, math=\\% - headfoot=, strings=, config=, hyphenmap=, or a language name.}}} + \bbl@error{unknown-package-option}{}{}{}}} % \end{macrocode} % % Now, we set a few language options whose names are different from @@ -12917,16 +12570,16 @@ wouldn’t exist. {#1\bbl@load@language{#2}#3}} % \DeclareOption{hebrew}{% + \ifcase\bbl@engine\or + \bbl@error{only-pdftex-lang}{hebrew}{luatex}{}% + \fi \input{rlbabel.def}% \bbl@load@language{hebrew}} \DeclareOption{hungarian}{\bbl@try@load@lang{}{magyar}{}} \DeclareOption{lowersorbian}{\bbl@try@load@lang{}{lsorbian}{}} -\DeclareOption{northernsami}{\bbl@try@load@lang{}{samin}{}} -\DeclareOption{nynorsk}{\bbl@try@load@lang{}{norsk}{}} \DeclareOption{polutonikogreek}{% \bbl@try@load@lang{}{greek}{\languageattribute{greek}{polutoniko}}} \DeclareOption{russian}{\bbl@try@load@lang{}{russianb}{}} -\DeclareOption{scottishgaelic}{\bbl@try@load@lang{}{scottish}{}} \DeclareOption{ukrainian}{\bbl@try@load@lang{}{ukraineb}{}} \DeclareOption{uppersorbian}{\bbl@try@load@lang{}{usorbian}{}} % \end{macrocode} @@ -12952,9 +12605,7 @@ wouldn’t exist. {\typeout{*************************************^^J% * Local config file \bbl@opt@config.cfg used^^J% *}}% - {\bbl@error{% - Local config file '\bbl@opt@config.cfg' not found}{% - Perhaps you misspelled it.}}% + {\bbl@error{config-not-found}{}{}{}}% \fi % \end{macrocode} % @@ -13110,10 +12761,7 @@ wouldn’t exist. \fi \bbl@exp{% \\\AtBeginDocument{\\\bbl@usehooks@lang{/}{begindocument}{{}}}}% -\def\AfterBabelLanguage{% - \bbl@error - {Too late for \string\AfterBabelLanguage}% - {Languages have been loaded, so I can do nothing}} +\def\AfterBabelLanguage{\bbl@error{late-after-babel}{}{}{}} % \end{macrocode} % % In order to catch the case where the user didn’t specify a @@ -13158,6 +12806,203 @@ wouldn’t exist. \input babel.def \let\bbl@onlyswitch\@undefined % +% +% \section{Error messages} +% +% They are loaded when |\bll@error| is first called. To save space, the +% main code just identifies them with a tag, and messages are stored in +% a separate file. Since it can be loaded anywhere, you make sure some +% catcodes have the right value, although those for |\|, |`|, |^^M|, +% |%| and |=| are reset before loading the file. +% +%<*errors> +\catcode`\{=1 \catcode`\}=2 \catcode`\#=6 +\catcode`\:=12 \catcode`\,=12 \catcode`\.=12 \catcode`\-=12 +\catcode`\'=12 \catcode`\(=12 \catcode`\)=12 +\catcode`\@=11 \catcode`\^=7 +% +\ifx\MessageBreak\@undefined + \gdef\bbl@error@i#1#2{% + \begingroup + \newlinechar=`\^^J + \def\\{^^J(babel) }% + \errhelp{#2}\errmessage{\\#1}% + \endgroup} +\else + \gdef\bbl@error@i#1#2{% + \begingroup + \def\\{\MessageBreak}% + \PackageError{babel}{#1}{#2}% + \endgroup} +\fi +\def\bbl@errmessage#1#2#3{% + \expandafter\gdef\csname bbl@err@#1\endcsname##1##2##3{% + \bbl@error@i{#2}{#3}}} +% Implicit #2#3#4: +\gdef\bbl@error#1{\csname bbl@err@#1\endcsname} +% +\bbl@errmessage{not-yet-available} + {Not yet available}% + {Find an armchair, sit down and wait} +\bbl@errmessage{bad-package-option}% + {Bad option '#1=#2'. Either you have misspelled the\\% + key or there is a previous setting of '#1'. Valid\\% + keys are, among others, 'shorthands', 'main', 'bidi',\\% + 'strings', 'config', 'headfoot', 'safe', 'math'.}% + {See the manual for further details.} +\bbl@errmessage{base-on-the-fly} + {For a language to be defined on the fly 'base'\\% + is not enough, and the whole package must be\\% + loaded. Either delete the 'base' option or\\% + request the languages explicitly}% + {See the manual for further details.} +\bbl@errmessage{undefined-language} + {You haven't defined the language '#1' yet.\\% + Perhaps you misspelled it or your installation\\% + is not complete}% + {Your command will be ignored, type to proceed} +\bbl@errmessage{shorthand-is-off} + {I can't declare a shorthand turned off (\string#2)} + {Sorry, but you can't use shorthands which have been\\% + turned off in the package options} +\bbl@errmessage{not-a-shorthand} + {The character '\string #1' should be made a shorthand character;\\% + add the command \string\useshorthands\string{#1\string} to + the preamble.\\% + I will ignore your instruction}% + {You may proceed, but expect unexpected results} +\bbl@errmessage{not-a-shorthand-b} + {I can't switch '\string#2' on or off--not a shorthand}% + {This character is not a shorthand. Maybe you made\\% + a typing mistake? I will ignore your instruction.} +\bbl@errmessage{unknown-attribute} + {The attribute #2 is unknown for language #1.}% + {Your command will be ignored, type to proceed} +\bbl@errmessage{missing-group} + {Missing group for string \string#1}% + {You must assign strings to some category, typically\\% + captions or extras, but you set none} +\bbl@errmessage{only-lua-xe} + {This macro is available only in LuaLaTeX and XeLaTeX.}% + {Consider switching to these engines.} +\bbl@errmessage{only-lua} + {This macro is available only in LuaLaTeX.}% + {Consider switching to that engine.} +\bbl@errmessage{unknown-provide-key} + {Unknown key '#1' in \string\babelprovide}% + {See the manual for valid keys}% +\bbl@errmessage{unknown-mapfont} + {Option '\bbl@KVP@mapfont' unknown for\\% + mapfont. Use 'direction'.}% + {See the manual for details.} +\bbl@errmessage{no-ini-file} + {There is no ini file for the requested language\\% + (#1: \languagename). Perhaps you misspelled it or your\\% + installation is not complete.}% + {Fix the name or reinstall babel.} +\bbl@errmessage{digits-is-reserved} + {The counter name 'digits' is reserved for mapping\\% + decimal digits}% + {Use another name.} +\bbl@errmessage{limit-two-digits} + {Currently two-digit years are restricted to the\\ + range 0-9999.}% + {There is little you can do. Sorry.} +\bbl@errmessage{alphabetic-too-large} + {Alphabetic numeral too large (#1)}% + {Currently this is the limit.} +\bbl@errmessage{no-ini-info} + {I've found no info for the current locale.\\% + The corresponding ini file has not been loaded\\% + Perhaps it doesn't exist}% + {See the manual for details.} +\bbl@errmessage{unknown-ini-field} + {Unknown field '#1' in \string\BCPdata.\\% + Perhaps you misspelled it.}% + {See the manual for details.} +\bbl@errmessage{unknown-locale-key} + {Unknown key for locale '#2':\\% + #3\\% + \string#1 will be set to \relax}% + {Perhaps you misspelled it.}% +\bbl@errmessage{adjust-only-vertical} + {Currently, #1 related features can be adjusted only\\% + in the main vertical list.}% + {Maybe things change in the future, but this is what it is.} +\bbl@errmessage{layout-only-vertical} + {Currently, layout related features can be adjusted only\\% + in vertical mode.}% + {Maybe things change in the future, but this is what it is.} +\bbl@errmessage{bidi-only-lua} + {The bidi method 'basic' is available only in\\% + luatex. I'll continue with 'bidi=default', so\\% + expect wrong results}% + {See the manual for further details.} +\bbl@errmessage{multiple-bidi} + {Multiple bidi settings inside a group}% + {I'll insert a new group, but expect wrong results.} +\bbl@errmessage{unknown-package-option} + {Unknown option '\CurrentOption'. Either you misspelled it\\% + or the language definition file \CurrentOption.ldf\\% + was not found% + \bbl@tempa} + {Valid options are, among others: shorthands=, KeepShorthandsActive,\\% + activeacute, activegrave, noconfigs, safe=, main=, math=\\% + headfoot=, strings=, config=, hyphenmap=, or a language name.} +\bbl@errmessage{config-not-found} + {Local config file '\bbl@opt@config.cfg' not found}% + {Perhaps you misspelled it.} +\bbl@errmessage{late-after-babel} + {Too late for \string\AfterBabelLanguage}% + {Languages have been loaded, so I can do nothing} +\bbl@errmessage{double-hyphens-class} + {Double hyphens aren't allowed in \string\babelcharclass\\% + because it's potentially ambiguous}% + {See the manual for further info} +\bbl@errmessage{unknown-interchar} + {'#1' for '\languagename' cannot be enabled.\\% + Maybe there is a typo.}% + {See the manual for further details.} +\bbl@errmessage{unknown-interchar-b} + {'#1' for '\languagename' cannot be disabled.\\% + Maybe there is a typo.}% + {See the manual for further details.} +\bbl@errmessage{charproperty-only-vertical} + {\string\babelcharproperty\space can be used only in\\% + vertical mode (preamble or between paragraphs)}% + {See the manual for further info} +\bbl@errmessage{unknown-char-property} + {No property named '#2'. Allowed values are\\% + direction (bc), mirror (bmg), and linebreak (lb)}% + {See the manual for further info} +\bbl@errmessage{bad-transform-option} + {Bad option '#1' in a transform.\\% + I’ll ignore it but expect more errors}% + {See the manual for further info.} +\bbl@errmessage{font-conflict-transforms} + {Transforms cannot be re-assigned to different\\% + fonts. The conflict is in '\bbl@kv@label'.\\% + Apply the same fonts or use a different label}% + {See the manual for further details.} +\bbl@errmessage{transform-not-available} + {'#1' for '\languagename' cannot be enabled.\\% + Maybe there is a typo or it’s a font-dependent transform}% + {See the manual for further details.} +\bbl@errmessage{transform-not-available-b} + {'#1' for '\languagename' cannot be disabled.\\% + Maybe there is a typo or it’s a font-dependent transform}% + {See the manual for further details.} +\bbl@errmessage{year-out-range} + {Year out of range.\\% + The allowed range is #1}% + {See the manual for further details.} +\bbl@errmessage{only-pdftex-lang} + {The '#1' ldf style doesn't work with #2,\\% + but you can use the ini locale instead.\\% + Try adding 'provide=*' to the option list. You may\\% + also want to set 'bidi=' to some value.}% + {See the manual for further details.} +% %<*patterns> % \end{macrocode} % @@ -13386,7 +13231,7 @@ wouldn’t exist. \def\bbl@usehooks##1##2{}% TODO. Temporary!! \def\setlocale{% \errhelp{Find an armchair, sit down and wait}% - \errmessage{Not yet available}}% + \errmessage{(babel) Not yet available}}% \let\uselocale\setlocale \let\locale\setlocale \let\selectlocale\setlocale @@ -14023,9 +13868,7 @@ wouldn’t exist. \else\ifnum\count@=\z@ \bbl@charclass{-}% \else - \bbl@error{Double hyphens aren't allowed in \string\babelcharclass\\% - because it's potentially ambiguous}% - {See the manual for further info}% + \bbl@error{double-hyphens-class}{}{}{}% \fi\fi} % \end{macrocode} % @@ -14059,17 +13902,11 @@ wouldn’t exist. @#3@#4@#2 \@empty\endcsname}}}} \DeclareRobustCommand\enablelocaleinterchar[1]{% \bbl@ifunset{bbl@ic@#1@\languagename}% - {\bbl@error - {'#1' for '\languagename' cannot be enabled.\\% - Maybe there is a typo.}% - {See the manual for further details.}}% + {\bbl@error{unknown-interchar}{#1}{}{}}% {\bbl@csarg\let{ic@#1@\languagename}\@firstofone}} \DeclareRobustCommand\disablelocaleinterchar[1]{% \bbl@ifunset{bbl@ic@#1@\languagename}% - {\bbl@error - {'#1' for '\languagename' cannot be disabled.\\% - Maybe there is a typo.}% - {See the manual for further details.}}% + {\bbl@error{unknown-interchar-b}{#1}{}{}}% {\bbl@csarg\let{ic@#1@\languagename}\@gobble}} % % \end{macrocode} @@ -15329,17 +15166,13 @@ end \count@=#1\relax \ifvmode \expandafter\bbl@chprop - \else - \bbl@error{\string\babelcharproperty\space can be used only in\\% - vertical mode (preamble or between paragraphs)}% - {See the manual for further info}% + \else + \bbl@error{charproperty-only-vertical}{}{}{}% \fi} \newcommand\bbl@chprop[3][\the\count@]{% \@tempcnta=#1\relax - \bbl@ifunset{bbl@chprop@#2}% - {\bbl@error{No property named '#2'. Allowed values are\\% - direction (bc), mirror (bmg), and linebreak (lb)}% - {See the manual for further info}}% + \bbl@ifunset{bbl@chprop@#2}% {unknown-char-property} + {\bbl@error{unknown-char-property}{}{#2}{}}% {}% \loop \bbl@cs{chprop@#2}{#3}% @@ -15443,10 +15276,7 @@ end \in@{,####1,}{,nil,step,data,remove,insert,string,no,pre,&% no,post,penalty,kashida,space,spacefactor,}&% \ifin@\else - \bbl@error - {Bad option '####1' in a transform.\\&% - I’ll ignore it but expect more errors}&% - {See the manual for further info.}&% + \bbl@error{bad-transform-option}{####1}{}{}&% \fi}}&% \let\bbl@kv@attribute\relax \let\bbl@kv@label\relax @@ -15463,11 +15293,7 @@ end \bbl@ifsamestring{#3,\bbl@kv@label}{##1,##2}&% {\bbl@ifsamestring{\bbl@kv@fonts}{##3}&% {\count@\@ne}&% - {\bbl@error - {Transforms cannot be re-assigned to different\\&% - fonts. The conflict is in '\bbl@kv@label'.\\&% - Apply the same fonts or use a different label}&% - {See the manual for further details.}}}&% + {\bbl@error{font-conflict-transforms}{}{}{}}}&% {}}&% \bbl@transfont@list \ifnum\count@=\z@ @@ -15556,17 +15382,11 @@ end {}}} \DeclareRobustCommand\enablelocaletransform[1]{% \bbl@ifunset{bbl@ATR@#1@\languagename @}% - {\bbl@error - {'#1' for '\languagename' cannot be enabled.\\% - Maybe there is a typo or it’s a font-dependent transform}% - {See the manual for further details.}}% + {\bbl@error{transform-not-available}{#1}{}{}}% {\bbl@csarg\setattribute{ATR@#1@\languagename @}\@ne}} \DeclareRobustCommand\disablelocaletransform[1]{% \bbl@ifunset{bbl@ATR@#1@\languagename @}% - {\bbl@error - {'#1' for '\languagename' cannot be disabled.\\% - Maybe there is a typo or it’s a font-dependent transform}% - {See the manual for further details.}}% + {\bbl@error{transform-not-available-b}{#1}{}{}}% {\bbl@csarg\unsetattribute{ATR@#1@\languagename @}}} \def\bbl@activateposthyphen{% \let\bbl@activateposthyphen\relax @@ -23207,6 +23027,13 @@ Babel.fontmap[0] = {} -- l Babel.fontmap[1] = {} -- r Babel.fontmap[2] = {} -- al/an +-- To cancel mirroring. Also OML, OMS, U? +Babel.symbol_fonts = Babel.symbol_fonts or {} +Babel.symbol_fonts[font.id('tenln')] = true +Babel.symbol_fonts[font.id('tenlnw')] = true +Babel.symbol_fonts[font.id('tencirc')] = true +Babel.symbol_fonts[font.id('tencircw')] = true + Babel.bidi_enabled = true Babel.mirroring_enabled = true @@ -23250,6 +23077,14 @@ local function insert_numeric(head, state) return head, new_state end +local function glyph_not_symbol_font(node) + if node.id == GLYPH then + return not Babel.symbol_fonts[node.font] + else + return false + end +end + -- TODO - \hbox with an explicit dir can lead to wrong results -- }> and }>. A small attempt -- was s made to improve the situation, but the problem is the 3-dir @@ -23305,7 +23140,7 @@ function Babel.bidi(head, ispar, hdir) -- current one is not added until we start processing the neutrals. -- three cases: glyph, dir, otherwise - if item.id == GLYPH + if glyph_not_symbol_font(item) or (item.id == 7 and item.subtype == 2) then local d_font = nil @@ -23434,7 +23269,7 @@ function Babel.bidi(head, ispar, hdir) temp = 'on' -- W6 end for e = first_et, #nodes do - if nodes[e][1].id == GLYPH then nodes[e][2] = temp end + if glyph_not_symbol_font(nodes[e][1]) then nodes[e][2] = temp end end first_et = nil has_en = false @@ -23474,7 +23309,7 @@ function Babel.bidi(head, ispar, hdir) temp = 'on' -- W6 end for e = first_et, #nodes do - if nodes[e][1].id == GLYPH then nodes[e][2] = temp end + if glyph_not_symbol_font(nodes[e][1]) then nodes[e][2] = temp end end end @@ -23510,7 +23345,7 @@ function Babel.bidi(head, ispar, hdir) for r = first_on, q - 1 do nodes[r][2] = temp item = nodes[r][1] -- MIRRORING - if Babel.mirroring_enabled and item.id == GLYPH + if Babel.mirroring_enabled and glyph_not_symbol_font(item) and temp == 'r' and characters[item.char] then local font_mode = '' if item.font > 0 and font.fonts[item.font].properties then @@ -24126,7 +23961,7 @@ Babel.cjk_breaks = { \ifnum#2>2014 \ifnum#2<2038 \bbl@afterfi\expandafter\@gobble \fi\fi - {\bbl@error{Year~out~of~range}{The~allowed~range~is~2014-2038}}% + {\bbl@error{year-out-range}{2014-2038}{}{}}% \edef\bbl@tempd{\fp_eval:n{ % (Julian) day \bbl@cs@jd{#2}{#3}{#4} + 0.5 - 2400000 #1}}% \count@\@ne @@ -24437,7 +24272,7 @@ Babel.cjk_breaks = { \ifnum\bbl@tempa>2012 \ifnum\bbl@tempa<2051 \bbl@afterfi\expandafter\@gobble \fi\fi - {\bbl@error{Year~out~of~range}{The~allowed~range~is~2013-2050}}% + {\bbl@error{year-out-range}{2013-2050}{}{}}% \bbl@xin@{\bbl@tempa}{\bbl@cs@firstjal@xx}% \ifin@\def\bbl@tempe{20}\else\def\bbl@tempe{21}\fi \edef\bbl@tempc{\fp_eval:n{\bbl@cs@jd{\bbl@tempa}{#2}{#3}+.5}}% current @@ -24736,12 +24571,13 @@ Babel.cjk_breaks = { \ifx#2\@empty\else\expandafter\zap@space\fi #2} \let\bbl@trace\@gobble -\def\bbl@error#1#2{% +\def\bbl@error#1{% Implicit #2#3#4 \begingroup - \newlinechar=`\^^J - \def\\{^^J(babel) }% - \errhelp{#2}\errmessage{\\#1}% - \endgroup} + \catcode`\\=0 \catcode`\==12 \catcode`\`=12 + \catcode`\^^M=5 \catcode`\%=14 + \input errbabel.def + \endgroup + \bbl@error{#1}} \def\bbl@warning#1{% \begingroup \newlinechar=`\^^J diff --git a/macros/latex/required/babel/base/babel.ins b/macros/latex/required/babel/base/babel.ins index 5c80152d15..4b857314cb 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{2024/01/07} +\def\filedate{2024/02/07} \def\batchfile{babel.ins} \input docstrip.tex @@ -161,6 +161,7 @@ \file{switch.def}{\from{babel.dtx}{kernel}} \file{hyphen.cfg}{\from{babel.dtx}{patterns}} \file{nil.ldf}{\from{babel.dtx}{nil}} + \file{errbabel.def}{\from{babel.dtx}{errors}} \file{babel-ca-buddhist.tex}{\from{babel.dtx}{ca-buddhist}} \file{babel-ca-coptic.tex}{\from{babel.dtx}{ca-coptic}} \file{babel-ca-ethiopic.tex}{\from{babel.dtx}{ca-ethiopic}} diff --git a/macros/latex/required/babel/base/babel.pdf b/macros/latex/required/babel/base/babel.pdf index b28a330557..21d664d5bb 100644 Binary files a/macros/latex/required/babel/base/babel.pdf and b/macros/latex/required/babel/base/babel.pdf differ diff --git a/macros/latex/required/babel/base/bbcompat.dtx b/macros/latex/required/babel/base/bbcompat.dtx index e1de136111..8d45882360 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}[2024/01/07 v24.1] +\ProvidesFile{bbcompat.dtx}[2024/02/07 v24.2] % % %% File 'bbcompat.dtx' -- cgit v1.2.3