summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/polyglossia
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-01-30 03:00:45 +0000
committerNorbert Preining <norbert@preining.info>2020-01-30 03:00:45 +0000
commit1f2683ba3ec9c1855d5518e773c72d2241637449 (patch)
tree8e8cacd9473406eeaf6736cf32f6fa6996439a8d /macros/latex/contrib/polyglossia
parent0d9a20b65398ec99149b5c3d700e78f891b90842 (diff)
CTAN sync 202001300300
Diffstat (limited to 'macros/latex/contrib/polyglossia')
-rw-r--r--macros/latex/contrib/polyglossia/README6
-rw-r--r--macros/latex/contrib/polyglossia/polyglossia.dtx5911
-rw-r--r--macros/latex/contrib/polyglossia/polyglossia.ins164
-rw-r--r--macros/latex/contrib/polyglossia/polyglossia.pdfbin224709 -> 267795 bytes
4 files changed, 4775 insertions, 1306 deletions
diff --git a/macros/latex/contrib/polyglossia/README b/macros/latex/contrib/polyglossia/README
index 18b2c4746a..b2864ae1d1 100644
--- a/macros/latex/contrib/polyglossia/README
+++ b/macros/latex/contrib/polyglossia/README
@@ -1,7 +1,7 @@
¦----------------------------------------------¦
¦ ¦
- ¦ THE POLYGLOSSIA PACKAGE v1.46 ¦
+ ¦ THE POLYGLOSSIA PACKAGE v1.47 ¦
¦ ¦
¦ Modern multilingual typesetting ¦
¦ with XeLaTeX and LuaLaTeX ¦
@@ -34,8 +34,8 @@ Polyglossia makes it possible to automate the following tasks:
LICENSE
-Copyright (c) 2008-2010 François Charette, 2013 Élie Roux, 2011-2019 Arthur Reutenauer,
-Copyright (c) 2019 Bastien Roucariès, 2019 Jürgen Spitzmüller
+Copyright (c) 2008-2010 François Charette, 2013 Élie Roux, 2011-2020 Arthur Reutenauer,
+Copyright (c) 2019-2020 Bastien Roucariès, 2019-2020 Jürgen Spitzmüller
Except where otherwise noted, Polyglossia is placed under the terms of the MIT licence
(https://opensource.org/licenses/MIT).
diff --git a/macros/latex/contrib/polyglossia/polyglossia.dtx b/macros/latex/contrib/polyglossia/polyglossia.dtx
index 6c669bbd57..3c85e2c6ff 100644
--- a/macros/latex/contrib/polyglossia/polyglossia.dtx
+++ b/macros/latex/contrib/polyglossia/polyglossia.dtx
@@ -11,7 +11,7 @@
¦----------------------------------------------¦
¦ ¦
- ¦ THE POLYGLOSSIA PACKAGE v1.46 ¦
+ ¦ THE POLYGLOSSIA PACKAGE v1.47 ¦
¦ ¦
¦ Modern multilingual typesetting ¦
¦ with XeLaTeX and LuaLaTeX ¦
@@ -44,8 +44,8 @@ Polyglossia makes it possible to automate the following tasks:
LICENSE
-Copyright (c) 2008-2010 François Charette, 2013 Élie Roux, 2011-2019 Arthur Reutenauer,
-Copyright (c) 2019 Bastien Roucariès, 2019 Jürgen Spitzmüller
+Copyright (c) 2008-2010 François Charette, 2013 Élie Roux, 2011-2020 Arthur Reutenauer,
+Copyright (c) 2019-2020 Bastien Roucariès, 2019-2020 Jürgen Spitzmüller
Except where otherwise noted, Polyglossia is placed under the terms of the MIT licence
(https://opensource.org/licenses/MIT).
@@ -74,7 +74,7 @@ to track the issues and follow progress.
The polyglossia package
(C) 2008–2010 François Charette
- (C) 2011-2019 Arthur Reutenauer
+ (C) 2011-2020 Arthur Reutenauer
(C) 2013 Elie Roux
License information appended
@@ -82,7 +82,7 @@ to track the issues and follow progress.
\endpreamble
\postamble
- Copyright (C) 2019 by Arthur Reutenauer <arthur 'dot' reutenauer 'at' normalesup 'dot' org>
+ Copyright (C) 2020 by Arthur Reutenauer <arthur 'dot' reutenauer 'at' normalesup 'dot' org>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
@@ -101,61 +101,168 @@ to track the issues and follow progress.
\let\MetaPrefix\DoubleperCent
\askforoverwritefalse
\generate{\file{gloss-acadien.ldf}{\from{polyglossia.dtx}{gloss-acadien.ldf}}}
+\generate{\file{gloss-aeb.ldf}{\from{polyglossia.dtx}{gloss-aeb.ldf}}}
+\generate{\file{gloss-af.ldf}{\from{polyglossia.dtx}{gloss-af.ldf}}}
+\generate{\file{gloss-afb.ldf}{\from{polyglossia.dtx}{gloss-afb.ldf}}}
\generate{\file{gloss-afrikaans.ldf}{\from{polyglossia.dtx}{gloss-afrikaans.ldf}}}
\generate{\file{gloss-albanian.ldf}{\from{polyglossia.dtx}{gloss-albanian.ldf}}}
+\generate{\file{gloss-am.ldf}{\from{polyglossia.dtx}{gloss-am.ldf}}}
\generate{\file{gloss-american.ldf}{\from{polyglossia.dtx}{gloss-american.ldf}}}
\generate{\file{gloss-amharic.ldf}{\from{polyglossia.dtx}{gloss-amharic.ldf}}}
+\generate{\file{gloss-apd.ldf}{\from{polyglossia.dtx}{gloss-apd.ldf}}}
+\generate{\file{gloss-ar-IQ.ldf}{\from{polyglossia.dtx}{gloss-ar-IQ.ldf}}}
+\generate{\file{gloss-ar-JO.ldf}{\from{polyglossia.dtx}{gloss-ar-JO.ldf}}}
+\generate{\file{gloss-ar-LB.ldf}{\from{polyglossia.dtx}{gloss-ar-LB.ldf}}}
+\generate{\file{gloss-ar-MR.ldf}{\from{polyglossia.dtx}{gloss-ar-MR.ldf}}}
+\generate{\file{gloss-ar-PS.ldf}{\from{polyglossia.dtx}{gloss-ar-PS.ldf}}}
+\generate{\file{gloss-ar-SY.ldf}{\from{polyglossia.dtx}{gloss-ar-SY.ldf}}}
+\generate{\file{gloss-ar-YE.ldf}{\from{polyglossia.dtx}{gloss-ar-YE.ldf}}}
+\generate{\file{gloss-ar.ldf}{\from{polyglossia.dtx}{gloss-ar.ldf}}}
\generate{\file{gloss-arabic.ldf}{\from{polyglossia.dtx}{gloss-arabic.ldf}}}
\generate{\file{gloss-armenian.ldf}{\from{polyglossia.dtx}{gloss-armenian.ldf}}}
+\generate{\file{gloss-arq.ldf}{\from{polyglossia.dtx}{gloss-arq.ldf}}}
+\generate{\file{gloss-ary.ldf}{\from{polyglossia.dtx}{gloss-ary.ldf}}}
+\generate{\file{gloss-arz.ldf}{\from{polyglossia.dtx}{gloss-arz.ldf}}}
+\generate{\file{gloss-ast.ldf}{\from{polyglossia.dtx}{gloss-ast.ldf}}}
\generate{\file{gloss-asturian.ldf}{\from{polyglossia.dtx}{gloss-asturian.ldf}}}
\generate{\file{gloss-australian.ldf}{\from{polyglossia.dtx}{gloss-australian.ldf}}}
\generate{\file{gloss-austrian.ldf}{\from{polyglossia.dtx}{gloss-austrian.ldf}}}
+\generate{\file{gloss-ayl.ldf}{\from{polyglossia.dtx}{gloss-ayl.ldf}}}
\generate{\file{gloss-bahasa.ldf}{\from{polyglossia.dtx}{gloss-bahasa.ldf}}}
\generate{\file{gloss-bahasai.ldf}{\from{polyglossia.dtx}{gloss-bahasai.ldf}}}
\generate{\file{gloss-bahasam.ldf}{\from{polyglossia.dtx}{gloss-bahasam.ldf}}}
\generate{\file{gloss-basque.ldf}{\from{polyglossia.dtx}{gloss-basque.ldf}}}
+\generate{\file{gloss-be-tarask.ldf}{\from{polyglossia.dtx}{gloss-be-tarask.ldf}}}
+\generate{\file{gloss-be.ldf}{\from{polyglossia.dtx}{gloss-be.ldf}}}
\generate{\file{gloss-belarusian.ldf}{\from{polyglossia.dtx}{gloss-belarusian.ldf}}}
\generate{\file{gloss-bengali.ldf}{\from{polyglossia.dtx}{gloss-bengali.ldf}}}
+\generate{\file{gloss-bg.ldf}{\from{polyglossia.dtx}{gloss-bg.ldf}}}
+\generate{\file{gloss-bn.ldf}{\from{polyglossia.dtx}{gloss-bn.ldf}}}
+\generate{\file{gloss-bo.ldf}{\from{polyglossia.dtx}{gloss-bo.ldf}}}
\generate{\file{gloss-bosnian.ldf}{\from{polyglossia.dtx}{gloss-bosnian.ldf}}}
+\generate{\file{gloss-br.ldf}{\from{polyglossia.dtx}{gloss-br.ldf}}}
\generate{\file{gloss-brazil.ldf}{\from{polyglossia.dtx}{gloss-brazil.ldf}}}
\generate{\file{gloss-breton.ldf}{\from{polyglossia.dtx}{gloss-breton.ldf}}}
\generate{\file{gloss-british.ldf}{\from{polyglossia.dtx}{gloss-british.ldf}}}
+\generate{\file{gloss-bs.ldf}{\from{polyglossia.dtx}{gloss-bs.ldf}}}
\generate{\file{gloss-bulgarian.ldf}{\from{polyglossia.dtx}{gloss-bulgarian.ldf}}}
+\generate{\file{gloss-ca.ldf}{\from{polyglossia.dtx}{gloss-ca.ldf}}}
\generate{\file{gloss-canadian.ldf}{\from{polyglossia.dtx}{gloss-canadian.ldf}}}
\generate{\file{gloss-canadien.ldf}{\from{polyglossia.dtx}{gloss-canadien.ldf}}}
\generate{\file{gloss-catalan.ldf}{\from{polyglossia.dtx}{gloss-catalan.ldf}}}
+\generate{\file{gloss-ckb-Arab.ldf}{\from{polyglossia.dtx}{gloss-ckb-Arab.ldf}}}
+\generate{\file{gloss-ckb-Latn.ldf}{\from{polyglossia.dtx}{gloss-ckb-Latn.ldf}}}
+\generate{\file{gloss-ckb.ldf}{\from{polyglossia.dtx}{gloss-ckb.ldf}}}
+\generate{\file{gloss-cop.ldf}{\from{polyglossia.dtx}{gloss-cop.ldf}}}
\generate{\file{gloss-coptic.ldf}{\from{polyglossia.dtx}{gloss-coptic.ldf}}}
\generate{\file{gloss-croatian.ldf}{\from{polyglossia.dtx}{gloss-croatian.ldf}}}
+\generate{\file{gloss-cy.ldf}{\from{polyglossia.dtx}{gloss-cy.ldf}}}
+\generate{\file{gloss-cz.ldf}{\from{polyglossia.dtx}{gloss-cz.ldf}}}
\generate{\file{gloss-czech.ldf}{\from{polyglossia.dtx}{gloss-czech.ldf}}}
+\generate{\file{gloss-da.ldf}{\from{polyglossia.dtx}{gloss-da.ldf}}}
\generate{\file{gloss-danish.ldf}{\from{polyglossia.dtx}{gloss-danish.ldf}}}
+\generate{\file{gloss-de-AT-1901.ldf}{\from{polyglossia.dtx}{gloss-de-AT-1901.ldf}}}
+\generate{\file{gloss-de-AT-1996.ldf}{\from{polyglossia.dtx}{gloss-de-AT-1996.ldf}}}
+\generate{\file{gloss-de-AT.ldf}{\from{polyglossia.dtx}{gloss-de-AT.ldf}}}
+\generate{\file{gloss-de-CH-1901.ldf}{\from{polyglossia.dtx}{gloss-de-CH-1901.ldf}}}
+\generate{\file{gloss-de-CH-1996.ldf}{\from{polyglossia.dtx}{gloss-de-CH-1996.ldf}}}
+\generate{\file{gloss-de-CH.ldf}{\from{polyglossia.dtx}{gloss-de-CH.ldf}}}
+\generate{\file{gloss-de-DE-1901.ldf}{\from{polyglossia.dtx}{gloss-de-DE-1901.ldf}}}
+\generate{\file{gloss-de-DE-1996.ldf}{\from{polyglossia.dtx}{gloss-de-DE-1996.ldf}}}
+\generate{\file{gloss-de-DE.ldf}{\from{polyglossia.dtx}{gloss-de-DE.ldf}}}
+\generate{\file{gloss-de-Latf-AT-1901.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-AT-1901.ldf}}}
+\generate{\file{gloss-de-Latf-AT-1996.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-AT-1996.ldf}}}
+\generate{\file{gloss-de-Latf-AT.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-AT.ldf}}}
+\generate{\file{gloss-de-Latf-CH-1901.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-CH-1901.ldf}}}
+\generate{\file{gloss-de-Latf-CH-1996.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-CH-1996.ldf}}}
+\generate{\file{gloss-de-Latf-CH.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-CH.ldf}}}
+\generate{\file{gloss-de-Latf-DE-1901.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-DE-1901.ldf}}}
+\generate{\file{gloss-de-Latf-DE-1996.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-DE-1996.ldf}}}
+\generate{\file{gloss-de-Latf-DE.ldf}{\from{polyglossia.dtx}{gloss-de-Latf-DE.ldf}}}
+\generate{\file{gloss-de-Latf.ldf}{\from{polyglossia.dtx}{gloss-de-Latf.ldf}}}
+\generate{\file{gloss-de.ldf}{\from{polyglossia.dtx}{gloss-de.ldf}}}
\generate{\file{gloss-divehi.ldf}{\from{polyglossia.dtx}{gloss-divehi.ldf}}}
+\generate{\file{gloss-dsb.ldf}{\from{polyglossia.dtx}{gloss-dsb.ldf}}}
\generate{\file{gloss-dutch.ldf}{\from{polyglossia.dtx}{gloss-dutch.ldf}}}
+\generate{\file{gloss-dv.ldf}{\from{polyglossia.dtx}{gloss-dv.ldf}}}
+\generate{\file{gloss-el-monoton.ldf}{\from{polyglossia.dtx}{gloss-el-monoton.ldf}}}
+\generate{\file{gloss-el-polyton.ldf}{\from{polyglossia.dtx}{gloss-el-polyton.ldf}}}
+\generate{\file{gloss-el.ldf}{\from{polyglossia.dtx}{gloss-el.ldf}}}
+\generate{\file{gloss-en-AU.ldf}{\from{polyglossia.dtx}{gloss-en-AU.ldf}}}
+\generate{\file{gloss-en-CA.ldf}{\from{polyglossia.dtx}{gloss-en-CA.ldf}}}
+\generate{\file{gloss-en-GB.ldf}{\from{polyglossia.dtx}{gloss-en-GB.ldf}}}
+\generate{\file{gloss-en-NZ.ldf}{\from{polyglossia.dtx}{gloss-en-NZ.ldf}}}
+\generate{\file{gloss-en-US.ldf}{\from{polyglossia.dtx}{gloss-en-US.ldf}}}
+\generate{\file{gloss-en.ldf}{\from{polyglossia.dtx}{gloss-en.ldf}}}
\generate{\file{gloss-english.ldf}{\from{polyglossia.dtx}{gloss-english.ldf}}}
+\generate{\file{gloss-eo.ldf}{\from{polyglossia.dtx}{gloss-eo.ldf}}}
+\generate{\file{gloss-es-ES.ldf}{\from{polyglossia.dtx}{gloss-es-ES.ldf}}}
+\generate{\file{gloss-es-MX.ldf}{\from{polyglossia.dtx}{gloss-es-MX.ldf}}}
+\generate{\file{gloss-es.ldf}{\from{polyglossia.dtx}{gloss-es.ldf}}}
\generate{\file{gloss-esperanto.ldf}{\from{polyglossia.dtx}{gloss-esperanto.ldf}}}
\generate{\file{gloss-estonian.ldf}{\from{polyglossia.dtx}{gloss-estonian.ldf}}}
+\generate{\file{gloss-et.ldf}{\from{polyglossia.dtx}{gloss-et.ldf}}}
+\generate{\file{gloss-eu.ldf}{\from{polyglossia.dtx}{gloss-eu.ldf}}}
+\generate{\file{gloss-fa.ldf}{\from{polyglossia.dtx}{gloss-fa.ldf}}}
\generate{\file{gloss-farsi.ldf}{\from{polyglossia.dtx}{gloss-farsi.ldf}}}
+\generate{\file{gloss-fi.ldf}{\from{polyglossia.dtx}{gloss-fi.ldf}}}
\generate{\file{gloss-finnish.ldf}{\from{polyglossia.dtx}{gloss-finnish.ldf}}}
+\generate{\file{gloss-fr-CA.ldf}{\from{polyglossia.dtx}{gloss-fr-CA.ldf}}}
+\generate{\file{gloss-fr-CH.ldf}{\from{polyglossia.dtx}{gloss-fr-CH.ldf}}}
+\generate{\file{gloss-fr-FR.ldf}{\from{polyglossia.dtx}{gloss-fr-FR.ldf}}}
+\generate{\file{gloss-fr.ldf}{\from{polyglossia.dtx}{gloss-fr.ldf}}}
\generate{\file{gloss-french.ldf}{\from{polyglossia.dtx}{gloss-french.ldf}}}
\generate{\file{gloss-friulan.ldf}{\from{polyglossia.dtx}{gloss-friulan.ldf}}}
\generate{\file{gloss-friulian.ldf}{\from{polyglossia.dtx}{gloss-friulian.ldf}}}
+\generate{\file{gloss-fur.ldf}{\from{polyglossia.dtx}{gloss-fur.ldf}}}
+\generate{\file{gloss-ga.ldf}{\from{polyglossia.dtx}{gloss-ga.ldf}}}
\generate{\file{gloss-gaelic.ldf}{\from{polyglossia.dtx}{gloss-gaelic.ldf}}}
\generate{\file{gloss-galician.ldf}{\from{polyglossia.dtx}{gloss-galician.ldf}}}
+\generate{\file{gloss-gd.ldf}{\from{polyglossia.dtx}{gloss-gd.ldf}}}
\generate{\file{gloss-georgian.ldf}{\from{polyglossia.dtx}{gloss-georgian.ldf}}}
\generate{\file{gloss-german.ldf}{\from{polyglossia.dtx}{gloss-german.ldf}}}
\generate{\file{gloss-germanb.ldf}{\from{polyglossia.dtx}{gloss-germanb.ldf}}}
+\generate{\file{gloss-gl.ldf}{\from{polyglossia.dtx}{gloss-gl.ldf}}}
+\generate{\file{gloss-grc.ldf}{\from{polyglossia.dtx}{gloss-grc.ldf}}}
\generate{\file{gloss-greek.ldf}{\from{polyglossia.dtx}{gloss-greek.ldf}}}
+\generate{\file{gloss-he.ldf}{\from{polyglossia.dtx}{gloss-he.ldf}}}
\generate{\file{gloss-hebrew.ldf}{\from{polyglossia.dtx}{gloss-hebrew.ldf}}}
+\generate{\file{gloss-hi.ldf}{\from{polyglossia.dtx}{gloss-hi.ldf}}}
\generate{\file{gloss-hindi.ldf}{\from{polyglossia.dtx}{gloss-hindi.ldf}}}
+\generate{\file{gloss-hr.ldf}{\from{polyglossia.dtx}{gloss-hr.ldf}}}
+\generate{\file{gloss-hsb.ldf}{\from{polyglossia.dtx}{gloss-hsb.ldf}}}
+\generate{\file{gloss-hu.ldf}{\from{polyglossia.dtx}{gloss-hu.ldf}}}
\generate{\file{gloss-hungarian.ldf}{\from{polyglossia.dtx}{gloss-hungarian.ldf}}}
+\generate{\file{gloss-hy.ldf}{\from{polyglossia.dtx}{gloss-hy.ldf}}}
+\generate{\file{gloss-ia.ldf}{\from{polyglossia.dtx}{gloss-ia.ldf}}}
\generate{\file{gloss-icelandic.ldf}{\from{polyglossia.dtx}{gloss-icelandic.ldf}}}
+\generate{\file{gloss-id.ldf}{\from{polyglossia.dtx}{gloss-id.ldf}}}
\generate{\file{gloss-interlingua.ldf}{\from{polyglossia.dtx}{gloss-interlingua.ldf}}}
\generate{\file{gloss-irish.ldf}{\from{polyglossia.dtx}{gloss-irish.ldf}}}
+\generate{\file{gloss-is.ldf}{\from{polyglossia.dtx}{gloss-is.ldf}}}
+\generate{\file{gloss-it.ldf}{\from{polyglossia.dtx}{gloss-it.ldf}}}
\generate{\file{gloss-italian.ldf}{\from{polyglossia.dtx}{gloss-italian.ldf}}}
+\generate{\file{gloss-ja.ldf}{\from{polyglossia.dtx}{gloss-ja.ldf}}}
\generate{\file{gloss-japanese.ldf}{\from{polyglossia.dtx}{gloss-japanese.ldf}}}
+\generate{\file{gloss-ka.ldf}{\from{polyglossia.dtx}{gloss-ka.ldf}}}
\generate{\file{gloss-kannada.ldf}{\from{polyglossia.dtx}{gloss-kannada.ldf}}}
\generate{\file{gloss-khmer.ldf}{\from{polyglossia.dtx}{gloss-khmer.ldf}}}
+\generate{\file{gloss-km.ldf}{\from{polyglossia.dtx}{gloss-km.ldf}}}
+\generate{\file{gloss-kmr-Arab.ldf}{\from{polyglossia.dtx}{gloss-kmr-Arab.ldf}}}
+\generate{\file{gloss-kmr-Latn.ldf}{\from{polyglossia.dtx}{gloss-kmr-Latn.ldf}}}
+\generate{\file{gloss-kmr.ldf}{\from{polyglossia.dtx}{gloss-kmr.ldf}}}
+\generate{\file{gloss-kn.ldf}{\from{polyglossia.dtx}{gloss-kn.ldf}}}
+\generate{\file{gloss-ko.ldf}{\from{polyglossia.dtx}{gloss-ko.ldf}}}
\generate{\file{gloss-korean.ldf}{\from{polyglossia.dtx}{gloss-korean.ldf}}}
+\generate{\file{gloss-ku-Arab.ldf}{\from{polyglossia.dtx}{gloss-ku-Arab.ldf}}}
+\generate{\file{gloss-ku-Latn.ldf}{\from{polyglossia.dtx}{gloss-ku-Latn.ldf}}}
+\generate{\file{gloss-ku.ldf}{\from{polyglossia.dtx}{gloss-ku.ldf}}}
\generate{\file{gloss-kurdish.ldf}{\from{polyglossia.dtx}{gloss-kurdish.ldf}}}
+\generate{\file{gloss-kurmanji.ldf}{\from{polyglossia.dtx}{gloss-kurmanji.ldf}}}
+\generate{\file{gloss-la-x-classic.ldf}{\from{polyglossia.dtx}{gloss-la-x-classic.ldf}}}
+\generate{\file{gloss-la-x-ecclesia.ldf}{\from{polyglossia.dtx}{gloss-la-x-ecclesia.ldf}}}
+\generate{\file{gloss-la-x-medieval.ldf}{\from{polyglossia.dtx}{gloss-la-x-medieval.ldf}}}
+\generate{\file{gloss-la.ldf}{\from{polyglossia.dtx}{gloss-la.ldf}}}
\generate{\file{gloss-lao.ldf}{\from{polyglossia.dtx}{gloss-lao.ldf}}}
\generate{\file{gloss-latex.ldf}{\from{polyglossia.dtx}{gloss-latex.ldf}}}
\generate{\file{gloss-latin.ldf}{\from{polyglossia.dtx}{gloss-latin.ldf}}}
@@ -164,15 +271,23 @@ to track the issues and follow progress.
\generate{\file{gloss-latinmedieval.ldf}{\from{polyglossia.dtx}{gloss-latinmedieval.ldf}}}
\generate{\file{gloss-latvian.ldf}{\from{polyglossia.dtx}{gloss-latvian.ldf}}}
\generate{\file{gloss-lithuanian.ldf}{\from{polyglossia.dtx}{gloss-lithuanian.ldf}}}
+\generate{\file{gloss-lo.ldf}{\from{polyglossia.dtx}{gloss-lo.ldf}}}
\generate{\file{gloss-lowersorbian.ldf}{\from{polyglossia.dtx}{gloss-lowersorbian.ldf}}}
\generate{\file{gloss-lsorbian.ldf}{\from{polyglossia.dtx}{gloss-lsorbian.ldf}}}
+\generate{\file{gloss-lt.ldf}{\from{polyglossia.dtx}{gloss-lt.ldf}}}
+\generate{\file{gloss-lv.ldf}{\from{polyglossia.dtx}{gloss-lv.ldf}}}
\generate{\file{gloss-macedonian.ldf}{\from{polyglossia.dtx}{gloss-macedonian.ldf}}}
\generate{\file{gloss-magyar.ldf}{\from{polyglossia.dtx}{gloss-magyar.ldf}}}
\generate{\file{gloss-malay.ldf}{\from{polyglossia.dtx}{gloss-malay.ldf}}}
\generate{\file{gloss-malayalam.ldf}{\from{polyglossia.dtx}{gloss-malayalam.ldf}}}
\generate{\file{gloss-marathi.ldf}{\from{polyglossia.dtx}{gloss-marathi.ldf}}}
+\generate{\file{gloss-mk.ldf}{\from{polyglossia.dtx}{gloss-mk.ldf}}}
+\generate{\file{gloss-ml.ldf}{\from{polyglossia.dtx}{gloss-ml.ldf}}}
+\generate{\file{gloss-mn.ldf}{\from{polyglossia.dtx}{gloss-mn.ldf}}}
\generate{\file{gloss-mongolian.ldf}{\from{polyglossia.dtx}{gloss-mongolian.ldf}}}
+\generate{\file{gloss-mr.ldf}{\from{polyglossia.dtx}{gloss-mr.ldf}}}
\generate{\file{gloss-naustrian.ldf}{\from{polyglossia.dtx}{gloss-naustrian.ldf}}}
+\generate{\file{gloss-nb.ldf}{\from{polyglossia.dtx}{gloss-nb.ldf}}}
\generate{\file{gloss-newzealand.ldf}{\from{polyglossia.dtx}{gloss-newzealand.ldf}}}
\generate{\file{gloss-ngerman.ldf}{\from{polyglossia.dtx}{gloss-ngerman.ldf}}}
\generate{\file{gloss-nko.ldf}{\from{polyglossia.dtx}{gloss-nko.ldf}}}
@@ -249,19 +364,19 @@ to track the issues and follow progress.
% !TeX TS-program = xelatex
\documentclass[11pt]{ltxdoc}
\usepackage{color}
-\usepackage{xspace,fancyvrb,booktabs}
+\usepackage{xspace,fancyvrb,longtable,booktabs}
\usepackage[neverdecrease]{paralist}
\usepackage[format=hang,labelfont=bf,labelsep=period]{caption}
-\definecolor{myblue}{rgb}{0.02,0.04,0.48}
+\definecolor{xpgblue}{rgb}{0.02,0.04,0.48}
\definecolor{lightblue}{rgb}{0.61,.8,.8}
-\definecolor{myred}{rgb}{0.65,0.04,0.07}
+\definecolor{xpgred}{rgb}{0.65,0.04,0.07}
\usepackage[
unicode=true,
bookmarks=true,
colorlinks=true,
- linkcolor=myblue,
- urlcolor=myblue,
- citecolor=myblue,
+ linkcolor=xpgblue,
+ urlcolor=xpgblue,
+ citecolor=xpgblue,
hyperindex=false,
hyperfootnotes=false,
pdftitle={Polyglossia: Modern multilingual typesetting with XeLaTeX and LuaLaTeX},
@@ -277,13 +392,13 @@ to track the issues and follow progress.
\setotherlanguages{arabic,armenian,hebrew,syriac,greek,russian,serbian,catalan,georgian}
\usepackage[protrusion]{microtype}
\newcommand*\Cmd[1]{\cmd{#1}\DescribeMacro{#1}\xspace}
-\newcommand*\pkg[1]{\textsf{\color{myblue}#1}}
-\newcommand*\file[1]{\texttt{\color{myblue}#1}}
-\newcommand*\TR[1]{\textcolor{myred}{#1}}
-\newcommand*\TX[1]{\hyperref[#1]{\textcolor{myred}{#1}}}
-\newcommand*\TB[1]{\textcolor{myblue}{\bf #1}}
-\newcommand*\TA[1]{\textsc{\color{myblue}#1}}
+\newcommand*\pkg[1]{\textsf{\color{xpgblue}#1}}
+\newcommand*\file[1]{\texttt{\color{xpgblue}#1}}
+\newcommand*\TR[1]{\textcolor{xpgred}{#1}}
+\newcommand*\TX[1]{\hyperref[#1]{\textcolor{xpgred}{#1}}}
+\newcommand*\TA[1]{\textsc{\color{xpgblue}#1}}
\newcommand*\link[1]{\href{#1}{#1}}
+\renewcommand*\meta[1]{\texttt{⟨#1⟩}}
\def\eg{\textit{e.g.,}\xspace}
\def\ie{\textit{i.e.,}\xspace}
\def\ca{\textit{ca.}\@\xspace}
@@ -291,14 +406,37 @@ to track the issues and follow progress.
\def\Ie{\textit{I.e.,}\xspace}
\def\etc{\@ifnextchar.{\textit{etc}}{\textit{etc.}\@\xspace}}
+%% Commands for documenting options
+\newcommand*\xpgoption[1]{\textcolor{xpgblue}{\ttfamily\bfseries #1}}
+\newcommand*\xpgvalue[1]{\texttt{#1}}
+\newcommand*\xpgpresetvalue[1]{\texttt{\textit{#1}}}
+\newcommand*\xpgdefaultvalue[1]{\texttt{*#1}}
+
+% arguments: #1 version number, #2 key name, #3 footnote, #4 possible values
+\NewDocumentCommand\xpgchoicekey{omom}{%
+ \xpgoption{#2}\IfValueT{#3}{\footnote{#3}}%
+ \IfValueT{#1}{\new{#1}} \xpgvalue{=} #4\par%
+}
+
+% arguments: #1 version number, #2 key name, #3 footnote
+\NewDocumentCommand\xpgboolkey{omo}{\xpgchoicekey[#1]{#2}[#3]{\xpgdefaultvalue{true} or \xpgvalue{false}}}
+\NewDocumentCommand\xpgboolkeytrue{omo}{\xpgchoicekey[#1]{#2}[#3]{\xpgdefaultvalue{\xpgpresetvalue{true}} or \xpgvalue{false}}}
+\NewDocumentCommand\xpgboolkeyfalse{omo}{\xpgchoicekey[#1]{#2}[#3]{\xpgdefaultvalue{true} or \xpgpresetvalue{false}}}
+
+% arguments: #1 version number, #2 key name, #3 default code
+\NewDocumentCommand\xpgcodekey{omv}{%
+ \xpgoption{#2}\IfValueT{#1}{\new{#1}}
+ \xpgvalue{=} \meta{code} (default value: \texttt{#3})\par%
+}
+
%% Sidenotes << copied from fontspec.dtx
\newcommand\new[1]{%
- \edef\thisversion{#1}%
+ \edef\thisversion{v#1}%
\ifhmode\unskip~\fi{\ifx\thisversion\fileversion\color{blue}\else\color[gray]{0.5}\fi
$\leftarrow$}%
\marginpar{\centering
\small\ifx\thisversion\fileversion\color{blue}\else\color[gray]{0.5}\fi
- \textsf{#1}}}
+ \textsf{v#1}}}
\newcommand\displaycmd[2]{%
\\\DescribeMacro{#2}\centerline{\cmd{#1}}}
\renewenvironment{itemize}{\begin{compactitem}[\char"2023]}%[{\fontspec{DejaVu Sans}\char"25BB}]}%
@@ -318,7 +456,7 @@ to track the issues and follow progress.
\pretocmd{\subsection}{\condbreak{2\baselineskip}}{}{}
%% fontspec declarations:
-\setmainfont{Linux Libertine O}
+\setmainfont{Linux Libertine O}[Numbers=OldStyle]
\setsansfont{Linux Biolinum O}
\setmonofont[Scale=MatchLowercase]{DejaVu Sans Mono}
\newfontfamily\arabicfont[Script=Arabic]{Amiri}
@@ -348,12 +486,12 @@ to track the issues and follow progress.
% \errorcontextlines=999
% \makeatletter
%
-% \hyphenation{Kha-li-ghi Reu-ten-auer}
+% \hyphenation{Kha-li-ghi Reu-ten-auer new-zea-land}
% \GetFileInfo{polyglossia.sty}
%
% \title{\textcolor{lightblue}{\Huge\fontspec[LetterSpace=40]{GFS Ambrosia} Πολυγλωσσια}
% \\[16pt]
-% \color{myblue}Polyglossia: Modern multilingual typesetting with \XeLaTeX\ and \LuaLaTeX}
+% \color{xpgblue}Polyglossia: Modern multilingual typesetting with \XeLaTeX\ and \LuaLaTeX}
% \author{\TA{François Charette} \and \TA{Arthur Reutenauer}\thanks{Current maintainer}
% \and \TA{Bastien Roucariès} \and \TA{Jürgen Spitzmüller}}
% \date{\filedate \qquad \fileversion\\
@@ -376,7 +514,7 @@ to track the issues and follow progress.
% \section{Introduction}
%
% \pkg{Polyglossia} is a package for facilitating multilingual typesetting with
-% \XeLaTeX\ and (with some exceptions) \LuaLaTeX. Basically, it
+% \XeLaTeX\ and (with some exceptions) \LuaLaTeX. Basically, it
% can be used as an alternative to \pkg{babel} for performing the following
% tasks automatically:
%
@@ -400,7 +538,7 @@ to track the issues and follow progress.
% that are written from right to left (via the package \pkg{bidi},
% available separately).
% \end{enumerate}
-%
+% ^^A
% Several features of \pkg{babel} that do not make sense in the \XeTeX\ world (like font
% encodings, shorthands, etc.) are not supported.
% Generally speaking, \pkg{polyglossia} aims to remain as compatible as possible
@@ -412,7 +550,7 @@ to track the issues and follow progress.
% macros defined in the \pkg{etoolbox} package by \TA{Philipp Lehmann} and \TA{Joseph Wright}.
% Being designed for \XeLaTeX\ and \LuaLaTeX, it obviously also relies on \pkg{fontspec} by
% \TA{Will Robertson}. For languages written from right to left, it needs the package \pkg{bidi}
-% (for \XeTeX) or \pkg{luabidi} (for \LuaTeX) by \TA{Vafa Khalighi} (\textarabic{وفا خليقي}) and
+% (for \XeTeX) or \pkg{luabidi} (for \LuaTeX) by \TA{Vafa Khalighi} (\textarabic{وفا خليقي}) and
% the \pkg{bidi-tex GitHub Organisation}.
% Polyglossia also bundles three packages for calendaric computations (\pkg{hebrewcal},
% \pkg{hijrical}, and \pkg{farsical}).
@@ -423,16 +561,16 @@ to track the issues and follow progress.
% \subsection{Activating languages}
%
% The default language of a document is specified by means of the command
-% \displaycmd{\setdefaultlanguage[⟨options⟩]\{⟨lang⟩\}}{\setdefaultlanguage}
+% \displaycmd{\setdefaultlanguage\oarg{options}\marg{lang}}{\setdefaultlanguage}
% (or, equivalently, \Cmd\setmainlanguage).
% Secondary languages are specified with
-% \displaycmd{\setotherlanguage[⟨options⟩]\{⟨lang⟩\}.}{\setotherlanguage}
+% \displaycmd{\setotherlanguage\oarg{options}\marg{lang}.}{\setotherlanguage}
% All these commands allow you to set language-specific options.\footnote{%
% Section~\ref{specific} documents these options for the respective languages.}
% It is also possible to load a series of secondary languages at once (but without options)
% using
-% \displaycmd{\setotherlanguages\{⟨lang1⟩,⟨lang2⟩,⟨lang3⟩,…\}.}{\setotherlanguages}
-%
+% \displaycmd{\setotherlanguages\marg{lang1⟩,⟨lang2⟩,⟨lang3⟩,⟨…}.}{\setotherlanguages}
+% ^^A
% All language-specific options can be modified locally by means of the
% language-switching commands described in section \ref{languageswitching}.
%
@@ -453,7 +591,7 @@ to track the issues and follow progress.
% ^^A Edited by hand -- JS, 2019-11-01
% \begin{tabular}{lllll}
% \toprule
-% \TX{afrikaans} & danish & \TX{hungarian} & marathi & \TX{slovenian} \\
+% \TX{afrikaans} & danish & \TX{hungarian} & \TX{marathi} & \TX{slovenian} \\
% albanian & divehi & icelandic & \TX{mongolian} & \TX{sorbian} \\
% amharic & \TX{dutch} & interlingua & nko & \TX{spanish} \\
% \TX{arabic} & \TX{english} & \TX{italian} & \TX{norwegian} & swedish \\
@@ -467,26 +605,26 @@ to track the issues and follow progress.
% bulgarian & \TX{georgian} & latvian & \TX{russian} & \TX{ukrainian} \\
% \TX{catalan} & \TX{german} & lithuanian & \TX{sami} & urdu \\
% coptic & \TX{greek} & macedonian & \TX{sanskrit} & vietnamese \\
-% croatian & \TX{hebrew} & \TX{malay} & \TX{serbian} & \TX{welsh} \\
+% \TX{croatian} & \TX{hebrew} & \TX{malay} & \TX{serbian} & \TX{welsh} \\
% \TX{czech} & \TX{hindi} & malayalam & \TX{slovak} & \\
% \bottomrule
% \end{tabular}
%
% \end{table}
%
-% \paragraph{Version Notes} The support for Amharic\new{v1.0.1} should be considered an experimental attempt to
+% \paragraph{Version Notes} The support for Amharic\new{1.0.1} should be considered an experimental attempt to
% port the package \pkg{ethiop}; feedback is welcome.
-% Version 1.1.1\new{v1.1.1} added support for Asturian, %\footnote{ Provided by Kevin Godby and Xuacu Saturio.},
+% Version 1.1.1\new{1.1.1} added support for Asturian, %\footnote{ Provided by Kevin Godby and Xuacu Saturio.},
% Lithuanian, %\footnote{ Provided by Kevin Godby and Paulius Sladkevičius.},
% and Urdu. %\footnote{ Provided by Kamal Abdali.}
% ^^A
-% Version 1.2\new{v1.2.0} introduced Armenian, Occitan, Bengali,
+% Version 1.2\new{1.2.0} introduced Armenian, Occitan, Bengali,
% Lao, Malayalam, Marathi, Tamil, Telugu, and Turkmen.\footnote{%
% See acknowledgements at the end for due credit to the various contributors.}
-% Version 1.43\new{v1.43} brought basic support for Japanese (this
+% Version 1.43\new{1.43} brought basic support for Japanese (this
% is considered experimental, feedback is appreciated).
-% In version 1.45\new{v1.45}, support for Kurdish and Mongolian as well as some new
-% variants (Canadian French and English) have been added. Furthermore, for consistency reasons, some language have
+% In version 1.45\new{1.45}, support for Kurdish and Mongolian as well as some new
+% variants (Canadian French and English) have been added. Furthermore, for consistency reasons, some language have
% been renamed (\emph{farsi}\textrightarrow\emph{persian}, \emph{friulan}\textrightarrow\emph{friulian},
% \emph{magyar}\textrightarrow\emph{hungarian}, \emph{portuges}\textrightarrow\emph{portuguese},
% \emph{samin}\textrightarrow\emph{sami}) or merged (\emph{bahasai}\slash\emph{bahasam}\textrightarrow\emph{malay},
@@ -495,10 +633,10 @@ to track the issues and follow progress.
% \emph{irish}\slash\emph{scottish}\textrightarrow\emph{gaelic},
% \emph{norsk}\slash\emph{nynorsk}\textrightarrow\emph{norwegian}). The old names are still supported for backwards
% compatibility reasons.
-% Version 1.46\new{v1.46} introduces support for Afrikaans, Belarusian, Bosnian and Georgian.
+% Version 1.46\new{1.46} introduces support for Afrikaans, Belarusian, Bosnian and Georgian.
%
%
-% \subsection{Relation to and use of Babel language names}
+% \subsection{Relation to and use of Babel language names}\label{sec:babelnames}
%
% If you are familiar with the \pkg{babel} package, you will note that \pkg{polyglossia}'s language naming
% slightly differs. Whereas \pkg{babel} has a unique name for each language variety (\eg\emph{american} and \emph{british}),
@@ -507,7 +645,7 @@ to track the issues and follow progress.
% Furthermore, \pkg{babel} sometimes uses abbreviated language names (\eg\emph{bahasam} for Bahasa Malayu) as well
% as endonyms, \ie language names coming from the designated languages (such as \emph{bahasa}, \emph{canadien} or \emph{magyar}).
% As opposed to this, \pkg{polyglossia} always uses spelled-out (lower-cased) English language names.
-% Please refer to table~\ref{tab:bbllang} for the differing language names in both packages.
+% Please refer to table~\ref{tab:bbllang} for the differing language names in both packages.
%
% \begin{table}
% \caption{\label{tab:bbllang}Babel-polyglossia language name matching}
@@ -515,7 +653,7 @@ to track the issues and follow progress.
% \begin{minipage}[t]{1\columnwidth}
% \small\centering
% \begin{tabular}{lll}
-% \toprule
+% \toprule
% \textbf{Babel name} & \textbf{Polyglossia name} & \textbf{Polyglossia options}\tabularnewline
% \midrule
% acadien & french & variant=acadian \\
@@ -528,20 +666,20 @@ to track the issues and follow progress.
% british & english & variant=british \\
% canadian & english & variant=canadian \\
% canadien & french & variant=canadian \\
+% classiclatin\footnote{In \pkg{babel} currently only selectable via dot modifier (\emph{latin.classic}).}
+% & latin & variant=classic \\
% farsi & persian & \\
+% ecclesiasticlatin\footnote{In \pkg{babel} currently only selectable via dot modifier (\emph{latin.ecclesiastic}).}
+% & latin & variant=ecclesiastic \\
% friulan & friulian & \\
% german\footnote{Due to the name conflict only available in \pkg{polyglossia} as \emph{germanb} (which is a \pkg{babel} synonym).}
% & german & spelling=old \\
% irish & gaelic & variant=irish [\emph{default}] \\
% kurmanji & kurdish & variant=kurmanji \\
-% latin.classic\footnote{Available in \pkg{polyglossia} as \emph{latinclassic} (as dots are invalid in command names).}
-% & latin & variant=classic \\
-% latin.ecclesiastic\footnote{Available in \pkg{polyglossia} as \emph{latinecclesiastic} (as dots are invalid in command names).}
-% & latin & variant=ecclesiastic \\
-% latin.medieval\footnote{Available in \pkg{polyglossia} as \emph{latinmedieval} (as dots are invalid in command names).}
-% & latin & variant=medieval \\
% lowersorbian & sorbian & variant=lower \\
% magyar & hungarian & \\
+% medievallatin\footnote{In \pkg{babel} currently only selectable via dot modifier (\emph{latin.medieval}).}
+% & latin & variant=medieval \\
% naustrian & german & variant=austrian \\
% newzealand & english & variant=newzealand \\
% ngerman & german & variant=german [\emph{default}] \\
@@ -556,62 +694,247 @@ to track the issues and follow progress.
% slovene & slovenian & \\
% spanishmx & spanish & variant=mexican \\
% swissgerman & german & variant=swiss, spelling=old \\
-% uppersorbian & sorbian & variant=upper \\
+% uppersorbian & sorbian & variant=upper [\emph{default}] \\
% \bottomrule
% \end{tabular}
% \end{minipage}
%
% \end{table}
%
-% For convenience reasons, \pkg{polyglossia} also supports the use of babel names\new{v1.46} (for the few justified
+% For convenience reasons, \pkg{polyglossia} also supports the use of babel names\new{1.46} (for the few justified
% exceptions, please refer to the notes in table~\ref{tab:bbllang}).
% The babel names listed in table~\ref{tab:bbllang} can be used instead of the corresponding polyglossia
% name\slash options in \cmd\setdefaultlanguage\ and \cmd\setotherlanguage\ as well as in the \pkg{polyglossia} and
% \pkg{babel} language switching commands\slash environments documented in section~\ref{sec:langcmds} and
-% \ref{sec:babelcmds} (\eg \cmd\textaustrian\ is synonymous to \cmd{\textgerman[variant=austrian,spelling=old]}).
+% \ref{sec:babelcmds} (\eg \cmd\textaustrian\ is synonymous to ¦\textgerman[variant=austrian,spelling=old]¦).
% However, unless you have special reasons, we strongly encourage you to use the \pkg{polyglossia} names.
%
%
+% \subsection{Using IETF language tags}\label{sec:langtags}
+%
+% \pkg{Polyglossia}\new{1.47} also supports the use of language tags that conform to the IETF BCP-47
+% \emph{Best Current Practice}.\footnote{Please refer to \url{https://tools.ietf.org/html/bcp47} and
+% \url{https://en.wikipedia.org/wiki/IETF_language_tag} for details.}
+% Thus, you can use tags such as ¦en-GB¦ (for British English) or ¦de-AT-1901¦ (for Austrian German, old spelling)
+% in \cmd\setdefaultlanguage\ and \cmd\setotherlanguage\ as well as in the language switching command
+% \cmd{\textlang\marg{tag}}, the environment \cmd{\begin\{lang\}\marg{tag}} \ldots\ \cmd{\end\{lang\}} and the \pkg{babel}
+% language switching commands\slash environments documented in section~\ref{sec:babelcmds}.
+% Table~\ref{tab:BCP47-polyglossia} lists the currently supported tags.
+%
+% \bgroup\small\addfontfeatures{Numbers={Monospaced,Lining}}
+% \begin{longtable}[c]{lll}
+% \caption{\label{tab:BCP47-polyglossia}BCP47-polyglossia language name matching}\\
+% \toprule
+% \textbf{BCP-47 tag} & \textbf{Polyglossia name} & \textbf{Polyglossia options}\\
+% \midrule
+% \endfirsthead
+% \caption[]{BCP47-polyglossia language name matching (\emph{continued})}\\
+% \toprule
+% \textbf{BCP-47 tag} & \textbf{Polyglossia name} & \textbf{Polyglossia options}\\
+% \midrule
+% \endhead
+% aeb & arabic & locale=tunisia \\
+% af & afrikaans & \\
+% afb & arabic & locale=default \\
+% am & amharic & \\
+% apd & arabic & locale=default \\
+% ar & arabic & \\
+% ar-IQ & arabic & locale=mashriq \\
+% ar-JO & arabic & locale=mashriq \\
+% ar-LB & arabic & locale=mashriq \\
+% ar-MR & arabic & locale=mauritania \\
+% ar-PS & arabic & locale=mashriq \\
+% ar-SY & arabic & locale=mashriq \\
+% ar-YE & arabic & locale=default \\
+% arq & arabic & locale=algeria \\
+% ary & arabic & locale=morocco \\
+% arz & arabic & locale=default \\
+% ast & asturian & \\
+% ayl & arabic & locale=libya \\
+% be & belarusian & \\
+% be-tarask & belarusian & spelling=classic \\
+% bg & bulgarian & \\
+% bn & bengali & \\
+% bo & tibetan & \\
+% br & breton & \\
+% bs & bosnian & \\
+% ca & catalan & \\
+% ckb & kurdish & variant=sorani [\emph{default}] \\
+% ckb-Arab & kurdish & variant=sorani, script=Arabic [\emph{default}] \\
+% ckb-Latn & kurdish & variant=sorani, script=Latin \\
+% cop & coptic & \\
+% cy & welsh & \\
+% cz & czech & \\
+% da & danish & \\
+% de & german & \\
+% de-AT & german & variant=austrian, spelling=new \\
+% de-AT-1901 & german & variant=austrian, spelling=old \\
+% de-AT-1996 & german & variant=austrian, spelling=new \\
+% de-CH & german & variant=swiss, spelling=new \\
+% de-CH-1901 & german & variant=swiss, spelling=old \\
+% de-CH-1996 & german & variant=swiss, spelling=new \\
+% de-DE & german & variant=german, spelling=new \\
+% de-DE-1901 & german & variant=german, spelling=old \\
+% de-DE-1996 & german & variant=german, spelling=new [\emph{default}] \\
+% de-Latf & german & script=blackletter \\
+% de-Latf-AT & german & variant=austrian, spelling=new, script=blackletter \\
+% de-Latf-AT-1901 & german & variant=austrian, spelling=old, script=blackletter \\
+% de-Latf-AT-1996 & german & variant=austrian, spelling=new, script=blackletter \\
+% de-Latf-CH & german & variant=swiss, spelling=new, script=blackletter \\
+% de-Latf-CH-1901 & german & variant=swiss, spelling=old, script=blackletter \\
+% de-Latf-CH-1996 & german & variant=swiss, spelling=new, script=blackletter \\
+% de-Latf-DE & german & variant=german, spelling=new, script=blackletter \\
+% de-Latf-DE-1901 & german & variant=german, spelling=old, script=blackletter \\
+% de-Latf-DE-1996 & german & variant=german, spelling=new, script=blackletter \\
+% dsb & sorbian & variant=lower \\
+% dv & divehi & \\
+% el & greek & \\
+% el-monoton & greek & variant=monotonic [\emph{default}] \\
+% el-polyton & greek & varant=polytonic \\
+% en & english & \\
+% en-AU & english & variant=australian \\
+% en-CA & english & variant=canadian \\
+% en-GB & english & variant=british \\
+% en-NZ & english & variant=newzealand \\
+% en-US & english & variant=us [\emph{default}] \\
+% eo & esperanto & \\
+% es & spanish & \\
+% es-ES & spanish & variant=spanish [\emph{default}] \\
+% es-MX & spanish & variant=mexican \\
+% et & estonian & \\
+% eu & basque & \\
+% fa & persian & \\
+% fi & finnish & \\
+% fr & french & \\
+% fr-CA & french & variant=canadian \\
+% fr-CH & french & variant=swiss \\
+% fr-FR & french & variant=french [\emph{default}] \\
+% fur & friulian & \\
+% ga & gaelic & variant=irish [\emph{default}] \\
+% gd & gaelic & variant=scottish \\
+% gl & galician & \\
+% grc & greek & variant=ancient \\
+% he & hebrew & \\
+% hi & hindi & \\
+% hr & croatian & \\
+% hsb & sorbian & variant=upper [\emph{default}] \\
+% hu & hungarian & \\
+% hy & armenian & \\
+% ia & interlingua & \\
+% id & malay & variant=indonesian \\
+% is & icelandic & \\
+% it & italian & \\
+% ja & japanese & \\
+% ka & georgian & \\
+% km & khmer & \\
+% kmr & kurdish & variant=kurmanji \\
+% kmr-Arab & kurdish & variant=kurmanji, script=Arabic \\
+% kmr-Latn & kurdish & variant=kurmanji, script=Latin \\
+% kn & kannada & \\
+% ko & korean & \\
+% ku & kurdish & \\
+% ku-Arab & kurdish & script=Arabic \\
+% ku-Latn & kurdish & script=Latin \\
+% la & latin & \\
+% la-x-classic & latin & variant=classic \\
+% la-x-ecclesia & latin & variant=ecclesiastic \\
+% la-x-medieval & latin & variant=medieval \\
+% lo & lao & \\
+% lt & lithuanian & \\
+% lv & latvian & \\
+% mk & macedonian & \\
+% ml & malayalam & \\
+% mn & mongolian & \\
+% mr & marathi & \\
+% nb & norwegian & variant=bokmal \\
+% nko & nko & \\
+% nl & dutch & \\
+% nn & norwegian & variant=nynorsk [\emph{default}] \\
+% oc & occitan & \\
+% pl & polish & \\
+% pms & piedmontese & \\
+% pt & portuguese & \\
+% pt-BR & portuguese & variant=brazilian \\
+% pt-PT & portuguese & variant=portuguese [\emph{default}] \\
+% rm & romansh & \\
+% ro & romanian & \\
+% ru & russian & \\
+% ru-luna1918 & russian & spelling=modern [\emph{default}] \\
+% ru-petr1708 & russian & spelling=old \\
+% sa & sanskrit & \\
+% sa-Beng & sanskrit & script=Bengali \\
+% sa-Deva & sanskrit & script=Devanagari [\emph{default}] \\
+% sa-Gujr & sanskrit & script=Gujarati \\
+% sa-Knda & sanskrit & script=Kannada \\
+% sa-Mlym & sanskrit & script=Malayalam \\
+% sa-Telu & sanskrit & script=Telugu \\
+% se & sami & \\
+% sk & slovak & \\
+% sl & slovenian & \\
+% sq & albanian & \\
+% sr & serbian & \\
+% sr-Cyrl & serbian & script=Cyrillic \\
+% sr-Latn & serbian & script=Latin [\emph{default}] \\
+% sv & swedish & \\
+% syr & syriac & \\
+% ta & tamil & \\
+% te & telugu & \\
+% th & thai & \\
+% tk & turkmen & \\
+% tr & turkish & \\
+% uk & ukrainian & \\
+% ur & urdu & \\
+% vi & vietnamese & \\
+% zsm & malay & variant=malaysian [\emph{default}] \\
+% \bottomrule
+% \end{longtable}
+% \egroup
+%
% \subsection{Global options}
%
% \pkg{Polyglossia} can be loaded with the following global package options:
%
% \begin{itemize}
-% \item \TB{babelshorthands}\new{v1.1.1} globally activates \pkg{babel}
-% shorthands whenever available. Currently shorthands are implemented for
-% Afrikaans, Belarusian, Catalan, Czech, Dutch, Finnish, Georgian, German,
-% Italian, Latin, Mongolian, Russian, and Slovak. Please refer to the respective
-% language descriptions (sec.~\ref{specific}) for details.
-%
-% \item \TB{localmarks} redefines the internal \LaTeX\ macros \cmd\markboth\ and
-% \cmd\markright. In earlier versions of \pkg{polyglossia},\new{v1.2.0} this
+% \item \xpgboolkeyfalse[1.1.1]{babelshorthands}
+% Globally activates \pkg{babel} shorthands whenever available. Currently
+% shorthands are implemented for Afrikaans, Belarusian, Catalan, Croatian,
+% Czech, Dutch, Finnish, Georgian, German, Italian, Latin, Mongolian,
+% Russian, Slovak, and Ukrainian. Please refer to the respective language descriptions
+% (sec.~\ref{specific}) for details.
+%
+% \item \xpgoption{localmarks} redefines the internal \LaTeX\ macros \cmd\markboth\ and
+% \cmd\markright. In earlier versions of \pkg{polyglossia},\new{1.2.0} this
% option was set by default, but we now realize that it causes more problems
% than it helps, so it is now off by default. For backwards-compatibility, the
-% option \TB{nolocalmarks} which used to switch off the previous default, and
+% option \xpgoption{nolocalmarks} which used to switch off the previous default, and
% now does nothing, is still available.
%
-% \item \TB{quiet} turns off most info messages and some of the warnings issued
+% \item \xpgoption{quiet} turns off most info messages and some of the warnings issued
% by \LaTeX, \pkg{fontspec} and \pkg{polyglossia}.
% \end{itemize}
%
+% \condbreak{5\baselineskip}
% \section{Language-switching commands}\label{languageswitching}
%
% \subsection{Recommended commands}\label{sec:langcmds}
% For each activated language the command
-% \cmd{\text⟨lang⟩[⟨options⟩]\{…\}} \DescribeMacro{\text⟨lang⟩}
+% \cmd{\text\meta{lang}\oarg{options}\marg{…}} \DescribeMacro{\text\meta{lang}}
% (as well as the synonymous \DescribeMacro{\textlang}%
-% \cmd{\textlang[⟨options⟩]\{⟨lang⟩\}\{…\}}\new{1.46})
+% \cmd{\textlang\oarg{options}\marg{lang}\marg{…}}\new{1.46})
% becomes available for short insertions of text in that language.
+%
% For example ¦\textrussian{\today}¦ and ¦\textlang{russian}{\today}¦ yield \textrussian{\today}
% The commands switch to the correct hyphenation patterns, they activate
% some extra features for the selected language (such as extra spacing before
-% punctuation in French), and they translate the date when using ¦\today¦.
-% They do not, however, translate so-called \textit{caption strings},\ie
-% ``chapter'', ``figure'' etc., to the local language (these remain in the main
+% punctuation in French), and they translate the date when using \cmd\today.
+% They do not, however, translate so-called \textit{caption strings}, \ie
+% ``chapter'', ``figure'' etc., to the local language (these remain in the currently active `outer'
% language).
%
-% The\DescribeEnv{⟨lang⟩}\ environment ¦⟨lang⟩¦, which is also available for any activated language,
-% is meant for longer passages of text. It behaves slightly different than the \cmd{\text⟨lang⟩} and
+% The\DescribeEnv{\meta{lang}}\ environment \meta{lang}, which is also available for any activated language
+% (as well as the equivalent \DescribeMacro{lang}%
+% \cmd{\begin\{lang\}\oarg{options}\marg{lang}} \dots{} \cmd{\end\{lang\}}\new{1.47}),
+% is meant for longer passages of text. It behaves slightly different than the \cmd{\text\meta{lang}} and
% \cmd\textlang\ commands: It does everything the latter do, but additionally, the caption strings
% are translated as well, and the language is also passed to auxiliary files, the table of contents
% and the lists of figures/tables.
@@ -619,7 +942,7 @@ to track the issues and follow progress.
% For instance the following allows us to quote the beginning
% of Homer’s \textit{Iliad}:
%
-% \begin{Verbatim}[formatcom=\color{myblue}]
+% \begin{Verbatim}[formatcom=\color{xpgblue}]
% \begin{quote}
% \begin{greek}[variant=ancient]
% μῆνιν ἄειδε θεὰ Πηληϊάδεω Ἀχιλῆος οὐλομένην, ἣ μυρί' Ἀχαιοῖς
@@ -651,17 +974,17 @@ to track the issues and follow progress.
% compiled into the \XeLaTeX\ and \LuaLaTeX\ format) are redefined, but keep a
% similar behaviour.
% \begin{itemize}
-% \item \DescribeMacro{\selectlanguage}\cmd{\selectlanguage[⟨options⟩]\{⟨lang⟩\}}
-% \item \DescribeMacro{\foreignlanguage}\cmd{\foreignlanguage[⟨options⟩]\{⟨lang⟩\}\{…\}}
-% \item \DescribeEnv{otherlanguage}\cmd{\begin\{otherlanguage\}[⟨options⟩]\{⟨lang⟩\}} \dots{} \cmd{\end\{otherlanguage\}}
-% \item \DescribeEnv{otherlanguage*}\cmd{\begin\{otherlanguage*\}[⟨options⟩]\{⟨lang⟩\}} \dots{} \cmd{\end\{otherlanguage*\}}
+% \item \DescribeMacro{\selectlanguage}\cmd{\selectlanguage\oarg{options}\marg{lang}}
+% \item \DescribeMacro{\foreignlanguage}\cmd{\foreignlanguage\oarg{options}\marg{lang}\marg{…}}
+% \item \DescribeEnv{otherlanguage}\cmd{\begin\{otherlanguage\}\oarg{options}\marg{lang}} \dots{} \cmd{\end\{otherlanguage\}}
+% \item \DescribeEnv{otherlanguage*}\cmd{\begin\{otherlanguage*\}\oarg{options}\marg{lang}} \dots{} \cmd{\end\{otherlanguage*\}}
% \end{itemize}
% ^^A
-% ¦\selectlanguage{⟨lang⟩}¦ and the ¦otherlanguage¦ environment are identical to the
-% the ¦⟨lang⟩¦ environment, except that ¦\selectlanguage{⟨lang⟩}¦
-% does not need to be explicitly closed. The command ¦\foreinlanguage{⟨lang⟩}{…}¦ and the ¦otherlanguage*¦
-% environment are identical with the use of the ¦\text⟨lang⟩¦ or ¦\textlang¦ command, with the one
-% notable exception that they do not translate the date with ¦\today¦.
+% \cmd\selectlanguage\marg{lang} and the ¦otherlanguage¦ environment are identical to the
+% the \meta{lang} environment, except that \cmd\selectlanguage\marg{lang}
+% does not need to be explicitly closed. The command \cmd\foreinlanguage\marg{lang}\marg{…} and the ¦otherlanguage*¦
+% environment are identical with the use of the \cmd\text\meta{lang} or \cmd\textlang\ command, with the one
+% notable exception that they do not translate the date with \cmd\today.
%
% Since the \XeLaTeX\ and \LuaLaTeX\ format incorporate \pkg{babel}’s \file{hyphen.cfg},
% the low-level commands for hyphenation and language switching
@@ -669,13 +992,12 @@ to track the issues and follow progress.
%
% \subsection{Other commands}
% The following commands are probably of lesser interest to the end user, but
-% ought to be mentioned here.\footnote{Note that these commands require polyglossia
-% language names; they do not support language\slash babel aliases.}
+% ought to be mentioned here.
% \begin{itemize}
-% \item \DescribeMacro{\selectbackgroundlanguage}\cmd{\selectbackgroundlanguage\{⟨lang⟩\}}:
+% \item \DescribeMacro{\selectbackgroundlanguage}\cmd{\selectbackgroundlanguage\marg{lang}}:
% this selects the global font setup and the numbering definitions for the default language.
%
-% \item \DescribeMacro{\resetdefaultlanguage}\cmd{\resetdefaultlanguage[⟨options⟩]\{⟨lang⟩\}} (experimental):
+% \item \DescribeMacro{\resetdefaultlanguage}\cmd{\resetdefaultlanguage\oarg{options}\marg{lang}} (experimental):
% completely switches the default language
% to another one in the middle of a document: \textit{this may have adverse effects}!
%
@@ -693,43 +1015,49 @@ to track the issues and follow progress.
% \subsection{Setting up alias commands}
%
% By means of the macro
-% \displaycmd{\setlanguagealias[⟨options⟩]\{⟨language⟩\}\{⟨alias⟩\}}{\setlanguagealias}\new{v1.46}
+% \displaycmd{\setlanguagealias\oarg{options}\marg{language}\marg{alias}}{\setlanguagealias}\new{1.46}
% you can define alias commands for specific language (variants). \Eg
%
% \begin{quote}
% \begin{verbatim}
-% \setlanguagealias[variant=austrian]{german}{deAT}
+% \setlanguagealias[variant=austrian]{german}{AT}
% \end{verbatim}
% \end{quote}
% ^^A
-% will define a command \cmd{\textdeAT} as well as an environment ¦{deAT}¦ which will link towards
-% the command \cmd{\textgerman[variant=austrian]} and the environment ¦{german}[variant=austrian]¦,
+% will define a command \cmd{\textAT} as well as an environment ¦{AT}¦ which will link towards
+% the command ¦\textgerman[variant=austrian]¦ and the environment ¦{german}[variant=austrian]¦,
% respectively. The aliases can also be used in the language switching commands described in
% section~\ref{sec:langcmds} and \ref{sec:babelcmds}.
% Note, though, that the usual restrictions for command names apply, so something such as
-% ¦de-AT¦ or ¦de_AT¦ will not work since ¦-¦ and ¦_¦ are not allowed in command names.
+% ¦de-AT¦ or ¦de_AT¦ will not work since ¦-¦ and ¦_¦ are not allowed in command names (the same
+% holds true for any non-ASCII character and for digits).
+%
+% For the latter case, and for the case where an alias would clash with an existing command
+% (\eg ¦\fi¦) or a \cmd{\text\meta{\ldots}} command (\eg \cmd\textit), a starred version \Cmd{\setlanguagealias*}
+% is provided which does neither define a \cmd{\text\meta{alias}} command nor an \meta{alias} environment,
+% but which will set up the alias for everything else, including \cmd{\textlang\marg{alias}}
+% and \cmd{\begin\{lang\}\marg{alias}}.
%
-% For the latter case, and for the case where an alias would clash with an existing \cmd{\text⟨...⟩}
-% command (\eg ¦\textit¦), a starred version \Cmd{\setlanguagealias*} is provided which does not define
-% a \cmd{\text⟨alias⟩} command (but which will set up the alias for everything else, including
-% \cmd{\textlang\{⟨alias⟩\}}).
+% \pkg{Polyglossia} comes with some aliases predefined, namely aliases for \pkg{babel} language names
+% (see sec.~\ref{sec:babelnames}) and for IETF BCP-47 language tags (the latter via \cmd{\setlanguagealias*};
+% see sec.~\ref{sec:langtags}).
%
% \section{Font setup}
%
% With polyglossia it is possible to associate a specific font with any script or language
% that occurs in the document. That font should always be defined as
-% ¦\⟨script⟩font¦\ or ¦\⟨language⟩font¦.
+% \cmd{\⟨script⟩font}\ or \cmd{\⟨language⟩font}.
% For instance, if the default font defined by \cmd\setmainfont\
% does not support Greek, then one can define the font used to display Greek with:\\
-% \centerline{ \cmd\newfontfamily\cmd{\greekfont[Script=Greek,⟨…⟩]\{⟨font⟩\}}. }
+% \centerline{ \cmd\newfontfamily\cmd{\greekfont[Script=Greek,\meta{…}]\marg{font}}. }
% Note that polyglossia will use the font defined as is, so assure to do all necessary settings
% (please refer to the \pkg{fontspec} documentation for details).
-% For instance, if ¦\arabicfont¦ is explicitly defined, then the option ¦Script=Arabic¦ should
+% For instance, if \cmd\arabicfont\ is explicitly defined, then the option ¦Script=Arabic¦ should
% be included in that definition.
%
% If a specific sans serif or monospace (`teletype') font is needed for a particular script or language,
-% it can be defined by means of \new{v1.2.0}
-% ¦\⟨script⟩fontsf¦\ or ¦\⟨language⟩fontsf¦ and ¦\⟨script⟩fonttt¦\ or ¦\⟨language⟩fonttt¦, respectively.
+% it can be defined by means of \new{1.2.0}
+% \cmd{\⟨script⟩fontsf} or \cmd{\⟨language⟩fontsf} and \cmd{\⟨script⟩fonttt} or \cmd{\⟨language⟩fonttt}, respectively.
%
% Whenever a new language is activated, \pkg{polyglossia} will first check whether
% a font has been defined for that language or – for languages in non-Latin scripts –
@@ -744,7 +1072,7 @@ to track the issues and follow progress.
%
% \subsection{Hyphenation exceptions}
%
-% \TeX\ provides the command ¦\hyphenation{⟨exceptions⟩}¦ to globally define hyphenation exceptions
+% \TeX\ provides the command \cmd\hyphenation\marg{exceptions} to globally define hyphenation exceptions
% which override the hyphenation patterns for specified words. The command takes as argument a space-separated
% list of words where hyphenation points are marked by a dash (if no dash is used, the respective word is not
% hyphenated at all):
@@ -756,8 +1084,8 @@ to track the issues and follow progress.
% \end{Verbatim}
% ^^A
% These exceptions, however, apply to all languages. In addition to this, \pkg{polyglossia} provides
-% the command\new{v1.45}
-% \displaycmd{\pghyphenation[⟨options⟩]\{⟨lang⟩\}\{⟨exceptions⟩\}}{\pghyphenation}
+% the command\new{1.45}
+% \displaycmd{\xpghyphenation\oarg{options}\marg{lang}\marg{exceptions}}{\xpghyphenation}
% which can be used to define exceptions that only apply to a specific language or language variant,
% respectively.
%
@@ -772,25 +1100,33 @@ to track the issues and follow progress.
%
% \section{Language-specific options and commands}\label{specific}
%
-% This section gives a list of all languages for which options and end-user commands are defined.
-% The default value of each option is given in italic.
-%
-% ^^A\subsection{amharic}\label{amharic}
+% This section gives a list of all languages for which options and end-user
+% commands are defined. Note the following conventions:
+% \begin{itemize}
+% \item The preset value of each option (\ie the setting that applies by default,
+% if the option is not explicitly set) is given in \xpgpresetvalue{italics}.
+% \item If an option key may be used without a value, the value that applies
+% for value-less keys is marked by a preceding \xpgdefaultvalue{asterisk}.
+% \end{itemize}
+% For instance, \texttt{babelshorthands = *true} or \texttt{\textit{false}} means that
+% \xpgvalue{babelshorthands} is \xpgvalue{false} by default in the respective language,
+% and that passing \xpgvalue{babelshorthands} (without value) is equivalent to passing
+% \xpgvalue{babelshorthands=true}.
%
-% \subsection{afrikaans}\label{afikaans}
+% \subsection{afrikaans}\label{afrikaans}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{babelshorthands} = \textit{false} or true. \new{v1.1.1}
-% if this is turned on, the following shorthands defined for fine-tuning hyphenation and
+% \item \xpgboolkeyfalse[1.1.1]{babelshorthands}
+% If this is turned on, the following shorthands defined for fine-tuning hyphenation and
% micro-typography of Afrikaans words are activated:
% \begin{shorthands}
% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to ¦\-¦ in default \TeX).
+% in the hyphenation patterns (as opposed to \cmd\- in default \TeX).
% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
% cases where the hyphen should stick at the following syllable.
% \item[¦"|¦] disables a ligature at this position.
% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
-% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to ¦\slash¦,
+% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to \cmd\slash,
% hyphenation at the breakpoints preset in the hyphenation patterns is still allowed.
% \end{shorthands}
% \end{itemize}
@@ -798,23 +1134,23 @@ to track the issues and follow progress.
% \subsection{arabic}\label{arabic}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{calendar} = \textit{gregorian} or islamic (= hijri)
-% \item \TB{locale} = \textit{default},\footnote{ %
-% For Egypt, Sudan, Yemen and the Gulf states.}
-% mashriq,\footnote{ %
-% For Iraq, Syria, Jordan, Lebanon and Palestine.}
-% libya, algeria, tunisia, morocco, or mauritania.
+% \item \xpgchoicekey{calendar}{\xpgpresetvalue{gregorian} or \xpgvalue{islamic} (= \xpgvalue{hijri})}
+% \item \xpgchoicekey{locale}{\xpgpresetvalue{default}\footnote{ %
+% For Egypt, Sudan, Yemen and the Gulf states.},
+% \xpgvalue{mashriq}\footnote{ %
+% For Iraq, Syria, Jordan, Lebanon and Palestine.},
+% \xpgvalue{libya}, \xpgvalue{algeria}, \xpgvalue{tunisia}, \xpgvalue{morocco}, \xpgvalue{mauritania}}
% This setting influences the spelling of the month names for the Gregorian calendar,
% as well as the form of the numerals (unless overriden by the following option).
-% \item \TB{numerals} = \textit{mashriq} or maghrib
-% (the latter is the default when locale = algeria, tunisia or morocco)
-% \item \TB{abjadjimnotail} = \textit{false} or true. \new{v1.0.3}
+% \item \xpgchoicekey{numerals}{\xpgpresetvalue{mashriq} or \xpgvalue{maghrib}}
+% The latter is the default when \xpgvalue{locale=algeria}, \xpgvalue{tunisia}, or \xpgvalue{morocco}.
+% \item \xpgboolkeyfalse[1.0.3]{abjadjimnotail}
% Set this to true if you want the \textit{abjad} form of the number three to be \textarabic{ج‍} – as in the manuscript tradition – instead of the modern usage \textarabic{ج}.
% \end{itemize}
% \paragraph*{Commands:}
% \begin{itemize}
% \item \Cmd\abjad and \Cmd\abjadmaghribi (see section \ref{abjad})
-% \item \Cmd\aemph to emphasize text with ¦\overline¦.\new{v1.2.0}
+% \item \Cmd\aemph to emphasize text with \cmd\overline.\new{1.2.0}
% ¦\textarabic{\aemph{اب}}¦ yields \textarabic{\aemph{اب}}.
% This command is also available for Farsi, Urdu, etc.
% \end{itemize}
@@ -822,19 +1158,19 @@ to track the issues and follow progress.
% \subsection{armenian}\label{armenian}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{variant}\new{v1.45} = eastern or \textit{western}
-% \item \TB{numerals}\new{v1.45} = armenian or \textit{arabic}
+% \item \xpgchoicekey[1.45]{variant}{\xpgvalue{eastern} or \xpgpresetvalue{western}}
+% \item \xpgchoicekey[1.45]{numerals}{\xpgvalue{armenian} or \xpgpresetvalue{arabic}}
% \end{itemize}
%
-% \subsection[belarusian]{belarusian\new{v1.46}}\label{belarusian}
+% \subsection[belarusian]{belarusian\new{1.46}}\label{belarusian}
%
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{babelshorthands} = \textit{false} or true.
+% \item \xpgboolkeyfalse{babelshorthands}
% If this is turned on, the following shorthands are activated:
% \begin{shorthands}
% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to ¦\-¦).
+% in the hyphenation patterns (as opposed to \cmd\-).
% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
% cases where the hyphen should stick at the following syllable.
% \item[¦"|¦] disables a ligature at this position.
@@ -848,67 +1184,123 @@ to track the issues and follow progress.
% \item[¦"<¦] for French left double quotes (looks like <<).
% \item[¦">¦] for French right double quotes (looks like >>).
% \end{shorthands}
-% \item \TB{numerals} = \textit{arabic} or cyrillic. Uses either Arabic numerals or Cyrillic
-% alphanumerical numbering.
-% \item \TB{spelling} = \textit{modern} or classic (=~tarask). With ¦spelling=classic¦, captions and dates
-% adhere to the Taraškievica (or Belarusian classical) orthography rather than the standard orthography.
+% \item \xpgchoicekey{numerals}{\xpgpresetvalue{arabic}, \xpgvalue{cyrillic-alph} or \xpgvalue{cyrillic-trad}}
+% Uses either Arabic numerals or Cyrillic alphanumerical numbering. The two Cyrillic variants differ as follows:
+% \begin{itemize}
+% \item \xpgvalue{cyrillic-alph} steps through the Cyrillic alphabet. Thus it can only be used up to 30.
+% \item \xpgvalue{cyrillic-trad} (= \xpgvalue{cyrillic}) uses a traditional Cyrillic alphanumeric system.%
+% \footnote{See \url{https://en.wikipedia.org/wiki/Cyrillic_numerals}.}
+% It supports numbers up to 999\,999.
+% \end{itemize}
+% \item \xpgchoicekey{spelling}{\xpgpresetvalue{modern} or \xpgvalue{classic} (= \xpgvalue{tarask})}
+% With ¦spelling=classic¦, captions and dates adhere to the Taraškievica (or
+% Belarusian classical) orthography rather than the standard orthography.
% \end{itemize}
% ^^A
% \paragraph*{Commands:}
% \begin{itemize}
-% \item \Cmd\Asbuk: produces uppercased Cyrillic alphanumerals, for
-% environments such as ¦enumerate¦. The command takes a counter as argument,
-% \eg ¦\textbelarusian{\Asbuk{page}}¦ produces \textrussian{\Asbuk{page}}.
-% \item \Cmd\asbuk: same in lowercase
+% \item \Cmd\Asbuk: produces uppercased Cyrillic alphanumerals, for environments such as ¦enumerate¦.
+% It steps through the Cyrillic alphabet and thus it can only be used up to 30.
+% The command takes a counter as argument, \eg ¦\textbelarusian{\Asbuk{page}}¦ produces \textrussian{\Asbuk{page}}.
+% \item \Cmd\asbuk: same as \cmd\Asbuk\ but in lowercase.
+% \item \Cmd\AsbukTrad: same as \cmd\Asbuk\ but using the traditional Cyrillic alphanumeric numbering which supports
+% numbers up to 999\,999.\\
+% \Eg ¦\textbelarusian{\AsbukTrad{page}}¦ produces \textrussian{\AsbukTrad{page}}.
+% \item \Cmd\asbukTrad: same as \cmd\AsbukTrad\ but in lowercase.
% \end{itemize}
%
-% \subsection[bengali]{bengali\new{v1.2.0}}\label{bengali}
+% \subsection[bengali]{bengali\new{1.2.0}}\label{bengali}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{numerals} = Western, Bengali or \textit{Devanagari}
-% \item \TB{changecounternumbering} = true or \textit{false} (use specified
-% numerals for headings and page numbers)
+% \item \xpgchoicekey{numerals}{\xpgvalue{Western}, \xpgvalue{Bengali}, or \xpgpresetvalue{Devanagari}}
+% \item \xpgboolkeyfalse{changecounternumbering}
+% Use specified numerals for headings and page numbers.
% \end{itemize}
%
% \subsection{catalan}\label{catalan}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{babelshorthands} = \textit{false} or true. \new{v1.1.1}
-% Activates the shorthands \texttt{"l} and \texttt{"L} to type geminated l’s.
+% \item \xpgboolkeyfalse[1.1.1]{babelshorthands}
+% Activates the shorthands \texttt{"l} and \texttt{"L} to type geminated l or L.
% \end{itemize}
%
% \paragraph*{Commands:}
% \begin{itemize}
-% \item \Cmd{\l.l} and \Cmd{\L.L}\new{v1.1.1} can be used to type a geminated l, as in \textit{co\l.laborar},
+% \item \Cmd{\l.l} and \Cmd{\L.L}\new{1.1.1} can be used to type a geminated l, as in \textit{co\l.laborar},
% similar to \pkg{babel} (the glyph U+00B7 MIDDLE DOT is used as a geminating sign).
% \end{itemize}
%
+% \subsection{croatian}\label{croatian}
+% \paragraph*{Options:}
+% \begin{itemize}
+% \item \xpgboolkeyfalse[1.47]{babelshorthands}
+% If this is turned on, the following shorthands for fine-tuning hyphenation and micro-typography
+% of Croatian words are activated.
+% \begin{shorthands}
+% \item[¦"|¦] disables a ligature at this position.
+% \item[¦"=¦] for an explicit hyphen with a breakpoint, allowing for hyphenation at the
+% other points preset in the hyphenation patterns (as opposed to plain ¦-¦).
+% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
+% cases where the hyphen should stick at the following syllable.
+% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
+% in the hyphenation patterns (as opposed to \cmd\-).
+% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
+% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to \cmd\slash, hyphenation
+% at the breakpoints preset in the hyphenation patterns is still allowed.
+% \end{shorthands}
+% Furthermore, the following shorthands generate easy access to Croatian digraphs (ligatures):
+% \begin{shorthands}
+% \item[¦"dz¦] Generates the ligature \charifavailable{01C6}{dž}\ if the font provides it. If not, the
+% two characters are output separately. Also available for ¦"Dz¦ (\charifavailable{01C5}{Dž})
+% and ¦"DZ¦ (\charifavailable{01C4}{DŽ}).
+% \item[¦"lj¦] Generates the ligature \charifavailable{01C9}{lj}\ if the font provides it. If not, the
+% two characters are output separately. Also available for ¦"Lj¦ (\charifavailable{01C8}{Lj})
+% and ¦"LJ¦ (\charifavailable{01C7}{LJ}).
+% \item[¦"nj¦] Generates the ligature \charifavailable{01CC}{nj}\ if the font provides it. If not, the
+% two characters are output separately. Also available for ¦"Nj¦ (\charifavailable{01CB}{Nj})
+% and ¦"NJ¦ (\charifavailable{01CA}{NJ}).
+% \end{shorthands}
+%
+% Finally, there are also four shorthands for quotation marks:
+% \begin{shorthands}
+% \item[¦"`¦] for Croatian left double quotes („).
+% \item[¦"'¦] for Croatian right double quotes (”).
+% \item[¦">¦] for Croatian left guillemets (»).
+% \item[¦"<¦] for Croatian right guillemets («).
+% \end{shorthands}
+% \item \xpgboolkeyfalse[1.47]{disableligatures}
+% If this is \xpgvalue{true}, all Croatian ligatures (for digraphs such as
+% \charifavailable{01C6}{dž}) will be replaced by single characters. This can
+% be useful if the ligatures on your font are broken (if the font does not
+% have them, they are automatically replaced).
+% \end{itemize}
+%
% \subsection{czech}\label{czech}
%
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{babelshorthands} = \textit{false} or true. \new{v1.45}
-% if this is turned on, the following shorthands for Czech are activated:
+% \item \xpgboolkeyfalse[1.45]{babelshorthands}
+% If this is turned on, the following shorthands for Czech are activated:
% \begin{shorthands}
% \item[¦"=¦] for an explicit hyphen sign which is repeated at the beginning
% of the next line when hyphenated, as common in Czech typesetting
% (only needed with ¦splithyphens=false¦).
-% \item[¦"‘¦] for Czech left double quotes (looks like ,,).
-% \item[¦"’¦] for Czech right double quotes (looks like “).
-% \item[¦">¦] for Czech left double guillemets (looks like >>).
-% \item[¦"<¦] for Czech right double guillemets (looks like <<).
+% \item[¦"‘¦] for Czech left double quotes („).
+% \item[¦"’¦] for Czech right double quotes (“).
+% \item[¦">¦] for Czech left double guillemets (»).
+% \item[¦"<¦] for Czech right double guillemets («).
% \end{shorthands}
-% \item \TB{splithyphens} = false or \textit{true}.\new{v1.45}
+% \item \xpgboolkeytrue[1.45]{splithyphens}
% According to Czech typesetting conventions, if a word with a hard hyphen (such as \emph{je-li})
% is hyphenated at this hyphen, a second hyphenation character is to be inserted at the beginning
% of the line that follows the hyphenation (\emph{je-/-li}).
-% By default, this is done automatically\new{v1.46} (if you are using \LuaTeX, the \pkg{luavlna} package is
+% By default, this is done automatically\new{1.46} (if you are using \LuaTeX, the \pkg{luavlna} package is
% loaded to achieve this).
% Set this option to ¦false¦ to disable the feature.
-% \item \TB{vlna} = false or \textit{true}. \new{v1.45}
+% \item \xpgboolkeytrue[1.45]{vlna}
% According to Czech typesetting conventions, single-letter words (non-syllable prepositions)
% must not occur at line ends.
-% \pkg{Polyglossia} takes care of this automatically by default\new{v1.46} (if you are using \LuaTeX, the
+% \pkg{Polyglossia} takes care of this automatically by default\new{1.46} (if you are using \LuaTeX, the
% \pkg{luavlna} package is loaded to achieve this).
% Set this option to ¦false¦ to disable the feature.
% \end{itemize}
@@ -916,17 +1308,17 @@ to track the issues and follow progress.
% \subsection{dutch}\label{dutch}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{babelshorthands} = \textit{false} or true. \new{v1.1.1}
-% if this is turned on, the following shorthands defined for fine-tuning hyphenation and
+% \item \xpgboolkeyfalse[1.1.1]{babelshorthands}
+% If this is turned on, the following shorthands defined for fine-tuning hyphenation and
% micro-typography of Dutch words are activated:
% \begin{shorthands}
% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to ¦\-¦ in default \TeX).
+% in the hyphenation patterns (as opposed to \cmd\- in default \TeX).
% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
% cases where the hyphen should stick at the following syllable.
% \item[¦"|¦] disables a ligature at this position.
% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
-% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to ¦\slash¦,
+% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to \cmd\slash,
% hyphenation at the breakpoints preset in the hyphenation patterns is still allowed.
% \end{shorthands}
% In addition, the macro \Cmd\- is redefined to allow hyphens in the rest of the word (equivalent to ¦"-¦).
@@ -935,9 +1327,10 @@ to track the issues and follow progress.
% \subsection{english}\label{english}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{variant} = \textit{american} (= us), usmax (same as ‘american’ but with additional hyphenation patterns),
-% british (= uk), australian, canadian\new{v1.45} or newzealand
-% \item \TB{ordinalmonthday} = true/\textit{false} (true by default only when variant = british)
+% \item \xpgchoicekey{variant}{\xpgpresetvalue{american} (= \xpgvalue{us}), \xpgvalue{usmax} (same as \xpgvalue{american} but with additional hyphenation patterns),
+% \xpgvalue{british} (= \xpgvalue{uk}), \xpgvalue{australian}, \xpgvalue{canadian}\new{1.45}, or \xpgvalue{newzealand}}
+% \item \xpgboolkeyfalse{ordinalmonthday}
+% The default value is true for \xpgvalue{variant=british}.
% \end{itemize}
%
% \subsection{esperanto}\label{esperanto}
@@ -951,17 +1344,17 @@ to track the issues and follow progress.
% \subsection{finnish}\label{finnish}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{babelshorthands} = \textit{false} or true. \new{v1.45}
-% if this is turned on, the following shorthands for fine-tuning hyphenation and micro-typography
-% of Finnish words are activated:
+% \item \xpgboolkeyfalse[1.45]{babelshorthands}
+% If this is turned on, the following shorthands for fine-tuning hyphenation
+% and micro-typography of Finnish words are activated:
% \begin{shorthands}
% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to ¦\-¦).
+% in the hyphenation patterns (as opposed to \cmd\-).
% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
% cases where the hyphen should stick at the following syllable.
% \item[¦"|¦] disables a ligature at this position.
% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
-% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to ¦\slash¦,
+% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to \cmd\slash,
% hyphenation at the breakpoints preset in the hyphenation patterns is still allowed.
% \end{shorthands}
% \end{itemize}
@@ -969,90 +1362,115 @@ to track the issues and follow progress.
% \subsection{french}\label{french}
% \paragraph*{Options:}
% \begin{itemize}
-% \item\TB{variant} = \textit{french} or canadian (=~acadian).\new{v1.45}
-% Currently, the three variants do not differ; they are supported for compatibility with \pkg{babel} (where they do not differ either).
-% \item \TB{autospacing} = \textit{true} or false. One of the most distinct features of French typography is the addition
-% of extra spacing around punctuation and quotation marks (guillemets). By default, polyglossia adds these spaces automatically, so you don't need
-% to enter them. This options allows you to switch this feature off globally.
-% \item \TB{thincolonspace}\new{v1.46} = true or \textit{false}. Normally, a
-% full (non-breaking) interword space is inserted before a colon. Use this
-% option if you prefer a thinner space as used before \texttt{;}, \texttt{!},
-% and \texttt{?}.
-% \item \TB{autospaceguillemets}\footnote{Up to version 1.44, the option was
-% called \textit{automaticspacesaroundguillemets}. For backards compatibility
-% reasons, the more verbose old option is still supported.} = \textit{true}
-% or false. If you only want to disable the automatic addition of spacing
-% after opening and before closing guillemets (and not at punctuation), set
-% this to \textit{false}. Note that the more general option
-% \textit{autospacing} overrides this.
-% \item \TB{autospacetypewriter}\footnote{Babel's syntax \textit{OriginalTypewriter} is also supported.}\new{1.45} = true or \textit{false} (default value = true). By default, automatic spacing is disabled in typewriter font. If this is enabled, spacing in typewriter context is the same as with roman and sans serif font, depending on the \textit{autospacing} and \textit{autospaceguillemets} settings (note that this was the default up to v.~1.44).
-% \item \TB{frenchfootnote} = true or \textit{false} (default value = true). If \textit{true}, footnotes start with a non-superscripted number followed by a dot, as common in French typography. Note that this might interfere with the specific footnote handling of classes or packages.
-% Also note that this option is only functional (by design) if French is the main language.
-% \item \TB{frenchitemlabels}\new{v.1.46} = true or \textit{false} (default value = true). If \textit{true}, itemize item labels use em-dashes throughout,
-% as common in French typography.
-% Note that this option is only functional (by design) if French is the main language. Also, it might interfere with list packages such as \pkg{enumitem}.
-% \item \TB{itemlabels}\new{v.1.46} = ¦⟨cmd⟩¦ (default value = ¦\textemdash¦). If \emph{frenchitemlabels} is true, you can customize here the used item label of all levels.
-% \item \TB{itemlabeli}\new{v.1.46} = ¦⟨cmd⟩¦ (default value = ¦\textemdash¦). If \emph{frenchitemlabels} is true, you can customize here the used item label of the first level.
-% \item \TB{itemlabelii}\new{v.1.46} = ¦⟨cmd⟩¦ (default value = ¦\textemdash¦). If \emph{frenchitemlabels} is true, you can customize here the used item label of the second level.
-% \item \TB{itemlabeliii}\new{v.1.46} = ¦⟨cmd⟩¦ (default value = ¦\textemdash¦). If \emph{frenchitemlabels} is true, you can customize here the used item label of the third level.
-% \item \TB{itemlabeliv}\new{v.1.46} = ¦⟨cmd⟩¦ (default value = ¦\textemdash¦). If \emph{frenchitemlabels} is true, you can customize here the used item label of the fourth level.
+% \item \xpgchoicekey{variant}{\xpgpresetvalue{french} or \xpgvalue{canadian} (=~\xpgvalue{acadian})\new{1.45}, \xpgvalue{swiss}\new{1.47}}
+% Currently, the only difference between the four variants is that \xpgvalue{swiss}
+% uses \xpgvalue{thincolonspace=true} by default since this conforms to the Swiss
+% conventions.
+% \item \xpgboolkeytrue{autospacing}
+% One of the most distinct features of French typography is the addition of
+% extra spacing around punctuation and quotation marks (guillemets). By
+% default, polyglossia adds these spaces automatically, so you don't need
+% to enter them. This options allows you to switch this feature off
+% globally.
+% \item \xpgboolkeyfalse[1.46]{thincolonspace}
+% With \xpgvalue{variant=swiss}, the default value is \xpgvalue{true}. If \xpgvalue{false}, a full
+% (non-breaking) interword space is inserted before a colon. If \xpgvalue{true}, a
+% thinner space -- as before \texttt{;}, \texttt{!}, and \texttt{?} -- is
+% used. Note that this option must be set after the ¦variant¦ option.
+% \item \xpgboolkeytrue{autospaceguillemets}[Up to version 1.44, the option was
+% called \xpgvalue{automaticspacesaroundguillemets}. For backwards compatibility
+% reasons, the more verbose old option is still supported.]
+% If you only want to disable the automatic addition of spacing after
+% opening and before closing guillemets (and not at punctuation), set this
+% to \textit{false}. Note that the more general option \textit{autospacing}
+% overrides this.
+% \item \xpgboolkeyfalse[1.45]{autospacetypewriter}[Babel's syntax \xpgvalue{OriginalTypewriter}
+% is also supported.]
+% By default, automatic spacing is disabled in typewriter font. If this is
+% enabled, spacing in typewriter context is the same as with roman and sans
+% serif font, depending on the \xpgvalue{autospacing} and
+% \xpgvalue{autospaceguillemets} settings (note that this was the default up
+% to v.~1.44).
+% \item \xpgboolkeyfalse{frenchfootnote}
+% If \xpgvalue{true}, footnotes start with a non-superscripted number
+% followed by a dot, as common in French typography. Note that this might
+% interfere with the specific footnote handling of classes or packages.
+% Also note that this option is only functional (by design) if French is
+% the main language.
+% \item \xpgboolkeyfalse[1.46]{frenchitemlabels}
+% If \textit{true}, itemize item labels use em-dashes throughout, as common
+% in French typography. Note that this option is only functional (by
+% design) if French is the main language. Also, it might interfere with
+% list packages such as \pkg{enumitem}.
+% \item \xpgcodekey[1.46]{itemlabels}¦\textemdash¦
+% If \emph{frenchitemlabels} is true, you can customize here the used item
+% label of all levels.
+% \item \xpgcodekey[1.46]{itemlabeli}¦\textemdash¦
+% If \emph{frenchitemlabels} is true, you can customize here the used item
+% label of the first level.
+% \item \xpgcodekey[1.46]{itemlabelii}¦\textemdash¦
+% If \emph{frenchitemlabels} is true, you can customize here the used item
+% label of the second level.
+% \item \xpgcodekey[1.46]{itemlabeliii}¦\textemdash¦
+% If \emph{frenchitemlabels} is true, you can customize here the used item
+% label of the third level.
+% \item \xpgcodekey[1.46]{itemlabeliv}¦\textemdash¦
+% If \emph{frenchitemlabels} is true, you can customize here the used item
+% label of the fourth level.
% \end{itemize}
% \paragraph*{Commands:}
% \begin{itemize}
-% \item \Cmd\NoAutoSpacing\new{v1.45} disables automatic spacing around punctuation and quotation marks in all following text. The command can also be used locally if braces are used for grouping: ¦{\NoAutoSpacing foo:bar}¦
-% \item \Cmd\AutoSpacing\new{v1.45} enables automatic spacing around punctuation and quotation marks in all following text. The command can also be used locally if braces are used for grouping: ¦{\AutoSpacing regarde!}¦
+% \item \Cmd\NoAutoSpacing\new{1.45} disables automatic spacing around punctuation and quotation marks in all following text. The command can also be used locally if braces are used for grouping: ¦{\NoAutoSpacing foo:bar}¦
+% \item \Cmd\AutoSpacing\new{1.45} enables automatic spacing around punctuation and quotation marks in all following text. The command can also be used locally if braces are used for grouping: ¦{\AutoSpacing regarde!}¦
% \end{itemize}
%
-% \subsection[gaelic]{gaelic\new{v1.45}}\label{gaelic}
+% \subsection[gaelic]{gaelic\new{1.45}}\label{gaelic}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{variant} = \textit{irish} or scottish
+% \item \xpgchoicekey{variant}{\xpgpresetvalue{irish} or \xpgvalue{scottish}}
% \end{itemize}
%
-% \subsection[georgian]{georgian\new{v1.46}}\label{georgian}
+% \subsection[georgian]{georgian\new{1.46}}\label{georgian}
%
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{babelshorthands} = \textit{false} or true.
-% If this is turned on, the following shorthands are activated:
-% \begin{shorthands}
-% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to ¦\-¦).
-% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
-% cases where the hyphen should stick at the following syllable.
-% \item[¦"|¦] disables a ligature at this position.
-% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
-% \item[¦"---¦] Cyrillic emdash in plain text.
-% \item[¦"--~¦] Cyrillic emdash in compound names (surnames).
-% \item[¦"--*¦] Cyrillic emdash for denoting direct speech.
-% \item[¦",¦] thinspace for initials with a breakpoint in following surname.
-% \item[¦"‘¦] for German left double quotes (looks like ,,).
-% \item[¦"’¦] for German right double quotes (looks like “).
-% \item[¦"<¦] for French left double quotes (looks like <<).
-% \item[¦">¦] for French right double quotes (looks like >>).
-% \end{shorthands}
-% \item \TB{numerals} = \textit{arabic} or georgian. Uses either Arabic numerals or Georgian
-% alphanumerical numbering.
-% \item \TB{oldmonthnames} = \textit{true} or false (default: false). Uses traditional Georgian
-% month names.
+% \item \xpgboolkeyfalse{babelshorthands}
+% If this is turned on, the following shorthands are activated:
+% \begin{shorthands}
+% \item[¦"-¦] adds a hyphenation point that does still allow for
+% hyphenation at the points preset in the hyphenation patterns (as opposed
+% to \cmd\-).
+% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
+% cases where the hyphen should stick at the following syllable.
+% \item[¦"|¦] disables a ligature at this position.
+% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
+% \item[¦"---¦] Cyrillic emdash in plain text.
+% \item[¦"--~¦] Cyrillic emdash in compound names (surnames).
+% \item[¦"--*¦] Cyrillic emdash for denoting direct speech.
+% \item[¦",¦] thinspace for initials with a breakpoint in following surname.
+% \item[¦"‘¦] for German left double quotes (looks like ,,).
+% \item[¦"’¦] for German right double quotes (looks like “).
+% \item[¦"<¦] for French left double quotes (looks like <<).
+% \item[¦">¦] for French right double quotes (looks like >>).
+% \end{shorthands}
+% \item \xpgchoicekey{numerals}{\xpgpresetvalue{arabic} or \xpgvalue{georgian}}
+% Uses either Arabic numerals or Georgian alphanumerical numbering.
+% \item \xpgboolkeyfalse{oldmonthnames}
+% Uses traditional Georgian month names.
% \end{itemize}
%
% \subsection{german}\label{german}
% \paragraph*{Options:}
% \begin{itemize}
-% \item\TB{variant} = \textit{german}, austrian or swiss.\new{v1.33.4}
-% Setting variant=austrian or variant=swiss uses some lexical variants.
-% With spelling=old, variant=swiss furthermore loads specific hyphenation
+% \item \xpgchoicekey{variant}{\xpgpresetvalue{german}, austrian, or swiss\new{1.33.4}}
+% Setting \xpgvalue{variant=austrian} or \xpgvalue{variant=swiss} uses some lexical variants.
+% With \xpgvalue{spelling=old}, \xpgvalue{variant=swiss} furthermore loads specific hyphenation
% patterns.
-% \item \TB{spelling} = \textit{new} (= 1996) or old (= 1901):
-% indicates whether hyphenation patterns for traditional (1901) or reformed
+% \item \xpgchoicekey{spelling}{\xpgpresetvalue{new} (= \xpgvalue{1996}) or \xpgvalue{old} (= \xpgvalue{1901})}
+% Indicates whether hyphenation patterns for traditional (1901) or reformed
% (1996) orthography should be used. The latter is the default.
-% \item \TB{latesthyphen} = \textit{false} or true: if this option is set to true,
-% the latest (experimental) hyphenation patterns ‘(n)german-x-latest’
-% will be loaded instead of ‘german’ or ‘ngerman’. NB: This is based on
-% the file \texttt{language.dat} that comes with \TeX Live 2008 and later.
-% \item\TB{babelshorthands} = \textit{false} or true: \new{v1.0.3}
-% if this is turned on, all shorthands defined in \pkg{babel}
+% \item \xpgboolkeyfalse[1.0.3]{babelshorthands}
+% If this is turned on, all shorthands defined in \pkg{babel}
% for fine-tuning hyphenation and micro-typography of German words are activated.
% \begin{shorthands}
% \item[¦"ck¦] for ¦ck¦ to be hyphenated as ¦k-k¦ (1901 spelling).
@@ -1062,12 +1480,12 @@ to track the issues and follow progress.
% \item[¦"=¦] for an explicit hyphen with a breakpoint, allowing for hyphenation at the
% other points preset in the hyphenation patterns (as opposed to plain ¦-¦).
% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
-% cases where the hyphen should stick at the following syllable,\eg ¦bergauf und "~ab¦.
+% cases where the hyphen should stick at the following syllable, \eg ¦bergauf und "~ab¦.
% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to ¦\-¦).
-% \item[¦""¦] allows for a line break at this position (without hyphenation sign);
+% in the hyphenation patterns (as opposed to \cmd\-).
+% \item[¦""¦] allows for a line break at this position (without hyphenation sign);
% \eg ¦(pseudo"~)""wissenschaftlich¦.
-% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to ¦\slash¦, hyphenation at the breakpoints
+% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to \cmd\slash, hyphenation at the breakpoints
% preset in the hyphenation patterns is still allowed.
% \end{shorthands}
%
@@ -1078,7 +1496,7 @@ to track the issues and follow progress.
% \item[¦"<¦] for French left double quotes («)
% \item[¦">¦] for French right double quotes (»).
% \end{shorthands}
-% \item\TB{script} = \textit{latin} or blackletter\new{v1.46} (=~fraktur\new{v1.2.0}).
+% \item \xpgchoicekey[1.2.0]{script}{\xpgpresetvalue{latin} or \xpgvalue{blackletter}\new{1.46} (= \xpgvalue{fraktur})}
% Setting ¦script=blackletter¦ adapts the captions for typesetting German in blackletter type (using the long s (ſ)
% where appropriate).
% \end{itemize}
@@ -1086,9 +1504,9 @@ to track the issues and follow progress.
% \subsection{greek}\label{greek}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{variant} = \textit{monotonic} (= mono), polytonic (= poly), or ancient
-% \item \TB{numerals} = \textit{greek} or arabic
-% \item \TB{attic} = \textit{false}/true
+% \item \xpgchoicekey{variant}{\xpgpresetvalue{monotonic} (= \xpgvalue{mono}), \xpgvalue{polytonic} (= \xpgvalue{poly}), or \xpgvalue{ancient}}
+% \item \xpgchoicekey{numerals}{\xpgpresetvalue{greek} or \xpgvalue{arabic}}
+% \item \xpgboolkeyfalse{attic}
% \end{itemize}
% \paragraph*{Commands:}
% \begin{itemize}
@@ -1103,10 +1521,12 @@ to track the issues and follow progress.
% \subsection{hebrew}\label{hebrew}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{numerals} = hebrew or \textit{arabic}
-% \item \TB{calendar} = hebrew or \textit{gregorian}
-% \item \TB{marcheshvan} = true or \textit{false} (default value = true). If true, the second month of the civil year will be output as \texthebrew{מרחשון} (Marcheshvan)
-% rather than \texthebrew{חשון} (Heshvan), which is the default.
+% \item \xpgchoicekey{numerals}{\xpgvalue{hebrew} or \xpgpresetvalue{arabic}}
+% \item \xpgchoicekey{calendar}{\xpgvalue{hebrew} or \xpgpresetvalue{gregorian}}
+% \item \xpgboolkeyfalse{marcheshvan}
+% If \xpgvalue{true}, the second month of the civil year will be output as
+% \texthebrew{מרחשון} (Marcheshvan) rather than \texthebrew{חשון} (Heshvan),
+% which is the default.
% \end{itemize}
% \paragraph*{Commands:}
% \begin{itemize}
@@ -1114,17 +1534,17 @@ to track the issues and follow progress.
% \item \Cmd\aemph (see section \ref{arabic}).
% \end{itemize}
%
-% \subsection[hindi]{hindi\new{v1.2.0}}\label{hindi}
+% \subsection[hindi]{hindi\new{1.2.0}}\label{hindi}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{numerals} = Western or \textit{Devanagari}
+% \item \xpgchoicekey{numerals}{\xpgvalue{Western} or \xpgpresetvalue{Devanagari}}
% \end{itemize}
%
% \subsection{hungarian}\label{hungarian}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{swapstrings} = \textit{all}, captions, headings, headers, hheaders or none\new{v1.46}
-%
+% \item \xpgchoicekey[1.46]{swapstrings}{\xpgdefaultvalue{\xpgpresetvalue{all}},
+% \xpgvalue{captions}, \xpgvalue{headings}, \xpgvalue{headers}, \xpgvalue{hheaders}, or \xpgvalue{none}}
% In Hungarian, some caption strings need to be in a different order than in other languages
% (\eg \emph{1. fejezet} instead of \emph{Chapter 1}). By default, \pkg{polyglossia} tries hard to
% provide the correct order for different classes and packages (standard classes, \pkg{KOMA-script},
@@ -1151,41 +1571,66 @@ to track the issues and follow progress.
% \subsection{italian}\label{italian}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{babelshorthands} = \textit{false} or true. \new{v1.2.0cc}% TODO: check version
+% \item \xpgboolkeyfalse[1.2.0cc]{babelshorthands}% TODO: check version
% Activates the ¦"¦ character as a switch to perform etymological
% hyphenation when followed by a letter. Furthermore, the following shorthands are activated:
% \begin{shorthands}
% \item[¦""¦] double raised open quotes (the Italian keyboard misses the backtick).
% \item[¦"<¦] open guillemet (looks like <<).
% \item[¦">¦] closing guillemet (looks like >>).
-% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to ¦\slash¦,
+% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to \cmd\slash,
% hyphenation at the breakpoints preset in the hyphenation patterns is still allowed.
% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to ¦\-¦).
+% in the hyphenation patterns (as opposed to \cmd\-).
% \end{shorthands}
% \end{itemize}
%
-% \subsection[korean]{korean\new{v1.40.0}}\label{korean}
+% \subsection[korean]{korean\new{1.40.0}}\label{korean}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{variant} = \textit{plain}, classic or modern:
-% for spacing before/after CJK punctuations.
-% `classic' is suitable for text with no interword spaces,
-% `modern' for text with interword spaces.
-% \item \TB{captions} = \textit{hangul} or hanja
+% \item \xpgchoicekey{variant}{\xpgpresetvalue{plain}, \xpgvalue{classic}, or \xpgvalue{modern}}
+% These variants control spacing before/after CJK punctuations.
+% \begin{itemize}
+% \item ¦plain¦: Do nothing
+% \item ¦classic¦: Suitable for text with no interword spaces.
+% This option forces CJK punctuations to half-width, and
+% inserts half-width glue around them.
+% \item ¦modern¦: Suitable for text with interword spaces.
+% This option forces CJK punctuations to half-width, and
+% inserts small (half of interword space) glue around them.
+% \end{itemize}
+% \item \xpgchoicekey{captions}{\xpgpresetvalue{hangul} or \xpgvalue{hanja}}
+% \item \xpgchoicekey[1.47]{swapstrings}{\xpgdefaultvalue{\xpgpresetvalue{all}},
+% \xpgvalue{headers}, \xpgvalue{headings}, or \xpgvalue{none}}
+% With this option, Korean-style part and chapter headings, and
+% running headers are available.
+% It is similar to Hungarian (see \ref{hungarian}) except that
+% figure and table captions are not touched.
+% \begin{itemize}
+% \item ¦all¦: Redefine part and chapter headings, and running headers
+% (=~default setting)
+% \item ¦headings¦: Redefine part and chapter headings only
+% \item ¦headers¦: Redefine running headers only
+% \item ¦none¦: Do not redefine anything
+% \end{itemize}
% \end{itemize}
%
-% \subsection[kurdish]{kurdish\new{v1.45}}\label{kurdish}
+% \subsection[kurdish]{kurdish\new{1.45}}\label{kurdish}
%
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{variant} = kurmanji or \textit{sorani}
-% \item \TB{script} = Arabic or Latin. Defaults are ¦Arabic¦ for Sorani and ¦Latin¦ for Kurmanji.
-% \item \TB{numerals} = western or eastern. Defaults are ¦western¦ for Latin and ¦eastern¦ for Arabic script, depending on the selection above.
-% \item \TB{abjadjimnotail} = \textit{false} or true.
-% Set this to true if you want the \textit{abjad} form of the number three to be \textarabic{ج‍} – as in the manuscript tradition – instead of the modern usage \textarabic{ج}.
-% ^^A \item \TB{locale} (not yet implemented)
-% ^^A \item \TB{calendar} (not yet implemented)
+% \item \xpgchoicekey{variant}{\xpgvalue{kurmanji} or \xpgpresetvalue{sorani}}
+% \item \xpgchoicekey{script}{\xpgvalue{Arabic} or \xpgvalue{Latin}}
+% Defaults are \xpgvalue{Arabic} for Sorani and \xpgvalue{Latin} for Kurmanji.
+% \item \xpgchoicekey{numerals}{\xpgvalue{western} or \xpgvalue{eastern}}
+% Defaults are \xpgvalue{western} for Latin and \xpgvalue{eastern} for Arabic script, depending
+% on the selection above.
+% \item \xpgboolkeyfalse{abjadjimnotail}
+% Set this to true if you want the \textit{abjad} form of the number three to
+% be \textarabic{ج‍} – as in the manuscript tradition – instead of the
+% modern usage \textarabic{ج}.
+% ^^A \item \xpgchoicekey{locale}{} (not yet implemented)
+% ^^A \item \xpgchoicekey{calendar}{} (not yet implemented)
% \end{itemize}
% \condbreak{2\baselineskip}
% \paragraph*{Commands:}
@@ -1196,34 +1641,33 @@ to track the issues and follow progress.
% \item \Cmd\aemph (see section \ref{arabic})
% \end{itemize}
%
-% \subsection[lao]{lao\new{v1.2.0}}\label{lao}
+% \subsection[lao]{lao\new{1.2.0}}\label{lao}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{numerals} = lao or \textit{arabic}
+% \item \xpgchoicekey{numerals}{\xpgvalue{lao} or \xpgpresetvalue{arabic}}
% \end{itemize}
%
% \subsection{latin}\label{latin}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{variant} = classic, medieval, \emph{modern}, or ecclesiastic\new{v.1.46}
-%
-% These variants refer to different spelling conventions. The ¦classic¦
-% and the ¦medieval¦ variant do not use the letters \emph{U} and
+% \item \xpgchoicekey{variant}{\xpgvalue{classic}, \xpgvalue{medieval}, \xpgpresetvalue{modern}, or \xpgvalue{ecclesiastic}\new{1.46}}
+% These variants refer to different spelling conventions. The \xpgvalue{classic}
+% and the \xpgvalue{medieval} variant do not use the letters \emph{U} and
% \emph{v}, but only \emph{V} and \emph{u}. This concerns predefined terms like
% month names as well as the behaviour of the \cmd\MakeUppercase\ and the
% \cmd\MakeLowercase\ command. The ¦medieval¦ and the
% ¦ecclesiastic¦ variant use the ligatures \emph{\ae} and \emph{\oe}.
% See table \ref{tab:latin-spelling} for examples.
%
-% Furthermore, the \texttt{ecclesiastic} variant takes care for a punctuation
+% Furthermore, the \xpgvalue{ecclesiastic} variant takes care for a punctuation
% spacing similar to French, but with smaller spaces, as provided for
% PDF\TeX\ by the \pkg{ecclesiastic} package.
% \begin{table}
% \centering
% \caption{\label{tab:latin-spelling}Spelling differences between the Latin
% language variants.\newline The capitalization of month names and the use of
-% \emph{i/j} may be affected by the \texttt{capitalizemonth} and the
-% \texttt{usej} option.}
+% \emph{i/j} may be affected by the \xpgvalue{capitalizemonth} and the
+% \xpgvalue{usej} option.}
% \begin{tabular}{llll}
% \toprule
% \textbf{classic} & \textbf{medieval} & \textbf{modern} & \textbf{ecclesiastic} \\
@@ -1236,8 +1680,7 @@ to track the issues and follow progress.
% \bottomrule
% \end{tabular}
% \end{table}
-% \item \TB{hyphenation}\new{v.1.46} = classic, modern, or liturgical
-%
+% \item \xpgchoicekey[1.46]{hyphenation}{\xpgvalue{classic}, \xpgvalue{modern}, or \xpgvalue{liturgical}}
% There are three different sets of hyphenation patterns for Latin. Separate
% documention for them is available on the
% Internet.\footnote{\url{https://github.com/gregorio-project/hyphen-la/blob/master/doc/README.md\#hyphenation-styles}}
@@ -1246,7 +1689,7 @@ to track the issues and follow progress.
% ¦hyphenation¦ option if the default style does not fit your needs.
% Note that the liturgical hyphenation patterns are the default of none of the
% language variants. To use them, you have to say
-% ¦hyphenation=liturgical¦ in any case.
+% \xpgvalue{hyphenation=liturgical} in any case.
% \begin{table}
% \caption{\label{tab:latin-hyphenation}Latin default hyphenation styles}
% \centering
@@ -1261,8 +1704,7 @@ to track the issues and follow progress.
% \bottomrule
% \end{tabular}
% \end{table}
-% \item \TB{ecclesiasticfootnotes}\new{v.1.46} = true or \emph{false}
-%
+% \item \xpgboolkeyfalse[1.46]{ecclesiasticfootnotes}
% Use footnotes as provided by the \pkg{ecclesiastic} package, which typesets
% footnotes with ordinary instead of superior numbers and without indentation.
% As many ecclesiastic documents and liturgical books use footnotes that are
@@ -1271,24 +1713,21 @@ to track the issues and follow progress.
%
% Note that this option is only possible if Latin is the main language of your
% document.
-% \item \TB{usej}\new{v.1.46} = true or \emph{false}
-%
+% \item \xpgboolkeyfalse[1.46]{usej}
% Use \emph{J/j} in predefined terms. The letter \emph{j} is not of ancient
% origin. In early modern times, it was used to distinguish the consonantic
% \emph{i} from the vocalic~\emph{i}. Nowadays, the use of \emph{j} has
% disappeared from most Latin publications. So ¦false¦ is the default
% value for all four language variants. Use this option if you prefer
% \emph{Januarii} and \emph{Maji} to \emph{Ianuarii} and \emph{Maii}.
-% \item \TB{capitalizemonth}\new{v.1.46} = true or false
-%
+% \item \xpgboolkey[1.46]{capitalizemonth}
% Capitalize the month name when printing dates (using the \cmd\today\
% command). Traditionally, month names are capitalized. However, in recent
% liturgical books they are lowercase. So ¦true¦ is the default value for
% the variants ¦classic¦, ¦medieval¦, and ¦modern¦,
% whereas ¦false¦ is the default value for the ¦ecclesiastic¦
% variant.
-% \item \TB{babelshorthands} = true or \emph{false}
-%
+% \item \xpgboolkeyfalse{babelshorthands}
% Enable the following shorthands inherited from \pkg{babel-latin} and the
% \pkg{ecclesiastic} package.
% \begin{shorthands}
@@ -1314,14 +1753,12 @@ to track the issues and follow progress.
% \item[¦'Ae¦] for Ǽ (AE ligature with acute), also available for \'Œ
% \item[¦'AE¦] for Ǽ (AE ligature with acute), also available for \'Œ
% \end{shorthands}
-% \item \TB{prosodicshorthands}\new{v.1.46} = true or \emph{false}
-%
+% \item \xpgboolkeyfalse[1.46]{prosodicshorthands}
% Enable shorthands for prosodic marks (macrons and breves) very similiar to
% those provided by \pkg{babel-latin} using the ¦withprosodicmarks¦
% modifier.
-%
% Note that the active ¦=¦ character used for macrons will cause problems with
-% commands using \texttt{key=value} interfaces, \eg
+% commands using \texttt{key=value} interfaces, such as the command
% ¦\includegraphics[scale=2]{...}¦. Use \cmd{\shorthandoff\{=\}} before
% such commands (and \cmd{\shorthandon\{=\}} thereafter) within every
% environment with prosodic shorthands enabled.
@@ -1354,20 +1791,25 @@ to track the issues and follow progress.
% \subsection{malay}\label{malay}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{variant}\new{v1.45} = \textit{indonesian} (=~bahasai in \pkg{babel}) or
-% malaysian (=~bahasam in \pkg{babel})
+% \item \xpgchoicekey[1.45]{variant}{\xpgpresetvalue{indonesian} or \xpgvalue{malaysian}}
% \end{itemize}
%
-% \subsection[mongolian]{mongolian\new{v1.45}}\label{mongolian}
+% \subsection{marathi}\label{marathi}
+% \paragraph*{Options:}
+% \begin{itemize}
+% \item \xpgchoicekey{numerals}{\xpgpresetvalue{Devanagari} or \xpgvalue{Western}}
+% \end{itemize}
+%
+% \subsection[mongolian]{mongolian\new{1.45}}\label{mongolian}
% Currently, only the Khalkha variety in Cyrillic script is supported.
%
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{babelshorthands} = \textit{false} or true.
+% \item \xpgboolkeyfalse{babelshorthands}
% If this is turned on, the following shorthands are activated:
% \begin{shorthands}
% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to ¦\-¦).
+% in the hyphenation patterns (as opposed to \cmd\-).
% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
% cases where the hyphen should stick at the following syllable.
% \item[¦"|¦] disables a ligature at this position.
@@ -1381,32 +1823,44 @@ to track the issues and follow progress.
% \item[¦"<¦] for French left double quotes (looks like <<).
% \item[¦">¦] for French right double quotes (looks like >>).
% \end{shorthands}
-% \item \TB{numerals} = \textit{arabic} or cyrillic. Uses either Arabic numerals or Cyrillic
-% alphanumerical numbering.
+% \item \xpgchoicekey{numerals}{\xpgpresetvalue{arabic}, \xpgvalue{cyrillic-alph} or \xpgvalue{cyrillic-trad}}
+% Uses either Arabic numerals or Cyrillic alphanumerical numbering. The two Cyrillic variants differ as follows:
+% \begin{itemize}
+% \item \xpgvalue{cyrillic-alph} steps through the Cyrillic alphabet. Thus it can only be used up to 30.
+% \item \xpgvalue{cyrillic-trad} (= \xpgvalue{cyrillic}) uses a traditional Cyrillic alphanumeric system.%
+% \footnote{See \url{https://en.wikipedia.org/wiki/Cyrillic_numerals}.}
+% It supports numbers up to 999\,999.
+% \end{itemize}
% \end{itemize}
% ^^A
% \paragraph*{Commands:}
% \begin{itemize}
-% \item \Cmd\Asbuk: produces uppercased Cyrillic alphanumerals, for
-% environments such as ¦enumerate¦. The command takes a counter as argument,
-% \eg ¦\textmongolian{\Asbuk{page}}¦ produces \textrussian{\Asbuk{page}}.
-% \item \Cmd\asbuk: same in lowercase
+% \item \Cmd\Asbuk: produces uppercased Cyrillic alphanumerals, for environments such as ¦enumerate¦.
+% It steps through the Cyrillic alphabet and thus it can only be used up to 30.
+% The command takes a counter as argument, \eg ¦\textmongolian{\Asbuk{section}}¦ produces \textrussian{\Asbuk{section}}.
+% \item \Cmd\asbuk: same as \cmd\Asbuk\ but in lowercase.
+% \item \Cmd\AsbukTrad: same as \cmd\Asbuk\ but using the traditional Cyrillic alphanumeric numbering which supports
+% numbers up to 999\,999.\\
+% \Eg ¦\textmongolian{\AsbukTrad{section}}¦ produces \textrussian{\AsbukTrad{section}}.
+% \item \Cmd\asbukTrad: same as \cmd\AsbukTrad\ but in lowercase.
% \end{itemize}
%
% \subsection{norwegian}\label{norwegian}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{variant}\new{v1.45} = bokmal (=~`norsk' in \pkg{babel}) or \textit{nynorsk}
+% \item \xpgchoicekey[1.45]{variant}{\xpgvalue{bokmal} or \xpgpresetvalue{nynorsk}}
% \end{itemize}
%
% \subsection{persian}\label{persian}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{numerals} = western or \textit{eastern}
-% \item \TB{abjadjimnotail} = \textit{false} or true. \new{v1.0.3}
-% Set this to true if you want the \textit{abjad} form of the number three to be \textarabic{ج‍} – as in the manuscript tradition – instead of the modern usage \textarabic{ج}.
-% ^^A \item \TB{locale} (not yet implemented)
-% ^^A \item \TB{calendar} (not yet implemented)
+% \item \xpgchoicekey{numerals}{\xpgvalue{western} or \xpgpresetvalue{eastern}}
+% \item \xpgboolkeyfalse[1.0.3]{abjadjimnotail}
+% Set this to \xpgvalue{true} if you want the \textit{abjad} form of the number three to
+% be \textarabic{ج‍} – as in the manuscript tradition – instead of the
+% modern usage \textarabic{ج}.
+% ^^A \item \xpgchoicekey{locale}{} (not yet implemented)
+% ^^A \item \xpgchoicekey{calendar}{} (not yet implemented)
% \end{itemize}
% \paragraph*{Commands:}
% \begin{itemize}
@@ -1417,17 +1871,17 @@ to track the issues and follow progress.
% \subsection{portuguese}\label{portuguese}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{variant}\new{v1.45} = brazilian or \textit{portuguese}
+% \item \xpgchoicekey[1.45]{variant}{\xpgvalue{brazilian} or \xpgpresetvalue{portuguese}}
% \end{itemize}
%
% \subsection{russian}\label{russian}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{babelshorthands} = \textit{false} or true.
+% \item \xpgboolkeyfalse{babelshorthands}
% If this is turned on, the following shorthands are activated:
% \begin{shorthands}
% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to ¦\-¦).
+% in the hyphenation patterns (as opposed to \cmd\-).
% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
% cases where the hyphen should stick at the following syllable.
% \item[¦"|¦] disables a ligature at this position.
@@ -1442,48 +1896,72 @@ to track the issues and follow progress.
% ^^A \item[¦"<¦] for French left double quotes (looks like <<).
% ^^A \item[¦">¦] for French right double quotes (looks like >>).
% \end{shorthands}
-% \item \TB{indentfirst}\new{v1.46} = \textit{true} or false. By default, all paragraphs are indented in Russian,
-% also those after a chapter or section heading. If this option is false, the latter paragraphs
-% are not indented, as normal in \LaTeX.
-% \item \TB{spelling} = \textit{modern} or old (for captions and date only, not for hyphenation)
-% \item \TB{numerals} = \textit{arabic} or cyrillic. Uses either Arabic numerals or Cyrillic
-% alphanumerical numbering.
+% \item \xpgboolkeytrue[1.46]{indentfirst}
+% By default, all paragraphs are indented in Russian, also those after a
+% chapter or section heading. If this option is false, the latter paragraphs
+% are not indented, as normal in \LaTeX.
+% \item \xpgchoicekey{spelling}{\xpgpresetvalue{modern} or \xpgvalue{old}}
+% This option is for captions and date only, not for hyphenation.
+% \item \xpgchoicekey{numerals}{\xpgpresetvalue{arabic}, \xpgvalue{cyrillic-alph} or \xpgvalue{cyrillic-trad}}
+% Uses either Arabic numerals or Cyrillic alphanumerical numbering. The two Cyrillic variants differ as follows:
+% \begin{itemize}
+% \item \xpgvalue{cyrillic-alph} steps through the Cyrillic alphabet. Thus it can only be used up to 30.
+% \item \xpgvalue{cyrillic-trad} (= \xpgvalue{cyrillic}) uses a traditional Cyrillic alphanumeric system.%
+% \footnote{See \url{https://en.wikipedia.org/wiki/Cyrillic_numerals}.}
+% It supports numbers up to 999\,999.
+% \end{itemize}
% \end{itemize}
% ^^A
% \paragraph*{Commands:}
% \begin{itemize}
-% \item \Cmd\Asbuk: produces uppercased Cyrillic alphanumerals, for
-% environments such as ¦enumerate¦. The command takes a counter as argument,
-% \eg ¦\textrussian{\Asbuk{page}}¦ produces \textrussian{\Asbuk{page}}.
-% \item \Cmd\asbuk: same in lowercase
+% \item \Cmd\Asbuk: produces uppercased Cyrillic alphanumerals, for environments such as ¦enumerate¦.
+% It steps through the Cyrillic alphabet and thus it can only be used up to 30.
+% The command takes a counter as argument, \eg ¦\textrussian{\Asbuk{section}}¦ produces \textrussian{\Asbuk{section}}.
+% \item \Cmd\asbuk: same as \cmd\Asbuk\ but in lowercase.
+% \item \Cmd\AsbukTrad: same as \cmd\Asbuk\ but using the traditional Cyrillic alphanumeric numbering which supports
+% numbers up to 999\,999.\\
+% \Eg ¦\textrussian{\AsbukTrad{page}}¦ produces \textrussian{\AsbukTrad{page}}.
+% \item \Cmd\asbukTrad: same as \cmd\AsbukTrad\ but in lowercase.
% \end{itemize}
%
-% \subsection[sami]{sami\new{v1.45}}\label{sami}
+% \subsection[sami]{sami\new{1.45}}\label{sami}
% Currently support for Sami is limited to Northern Sami.
%
% \subsection{sanskrit}\label{sanskrit}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{script} = \textit{Devanagari}\new{v1.0.2}, Gujarati, Malayalam, Bengali, Kannada,
-% Telugu or Latin.
-% The value is passed to \pkg{fontspec} in cases where the respective ¦\⟨script⟩font¦ is not defined.
-% This can be useful if you typeset Sanskrit texts in scripts other than Devanagari.
-% \item \TB{numerals} = \textit{Devanagari}\new{v1.45} or Western
+% \item \xpgchoicekey[1.0.2]{script}{\xpgpresetvalue{Devanagari}, \xpgvalue{Gujarati},
+% \xpgvalue{Malayalam}, \xpgvalue{Bengali}, \xpgvalue{Kannada}, \xpgvalue{Telugu}, or \xpgvalue{Latin}}
+% The value is passed to \pkg{fontspec} in cases where the respective
+% \cmd{\⟨script⟩font} is not defined. This can be useful if you typeset Sanskrit
+% texts in scripts other than Devanagari.
+% \item \xpgchoicekey[1.45]{numerals}{\xpgpresetvalue{Devanagari} or \xpgvalue{Western}}
% \end{itemize}
-%
+%
% \subsection{serbian}\label{serbian}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{script} = \textit{Cyrillic} or Latin.
-% \item \TB{numerals} = \textit{arabic} or cyrillic. Uses either Arabic numerals or Cyrillic
-% alphanumerical numbering.
-% \end{itemize}
+% \item \xpgchoicekey{script}{\xpgpresetvalue{Cyrillic} or \xpgvalue{Latin}}
+% \item \xpgchoicekey{numerals}{\xpgpresetvalue{arabic}, \xpgvalue{cyrillic-alph} or \xpgvalue{cyrillic-trad}}
+% Uses either Arabic numerals or Cyrillic alphanumerical numbering. The two Cyrillic variants differ as follows:
+% \begin{itemize}
+% \item \xpgvalue{cyrillic-alph} steps through the Cyrillic alphabet. Thus it can only be used up to 30.
+% \item \xpgvalue{cyrillic-trad} (= \xpgvalue{cyrillic}) uses a traditional Cyrillic alphanumeric system.%
+% \footnote{See \url{https://en.wikipedia.org/wiki/Cyrillic_numerals}.}
+% It supports numbers up to 999\,999.
+% \end{itemize}
+% \end{itemize}
+% ^^A
% \paragraph*{Commands:}
% \begin{itemize}
-% \item \Cmd\Asbuk: produces uppercased Cyrillic alphanumerals, for
-% environments such as ¦enumerate¦. The command takes a counter as argument,\\
-% Example: ¦\textserbian[numerals=cyrillic]{\Asbuk{page}}¦ produces \textserbian[numerals=cyrillic]{\Asbuk{page}}.
-% \item \Cmd\asbuk: same in lowercase
+% \item \Cmd\Asbuk: produces uppercased Cyrillic alphanumerals, for environments such as ¦enumerate¦.
+% It steps through the Cyrillic alphabet and thus it can only be used up to 30.
+% The command takes a counter as argument, \eg ¦\textserbian{\Asbuk{section}}¦ produces \textrussian{\Asbuk{section}}.
+% \item \Cmd\asbuk: same as \cmd\Asbuk\ but in lowercase.
+% \item \Cmd\AsbukTrad: same as \cmd\Asbuk\ but using the traditional Cyrillic alphanumeric numbering which supports
+% numbers up to 999\,999.\\
+% \Eg ¦\textserbian{\AsbukTrad{page}}¦ produces \textrussian{\AsbukTrad{page}}.
+% \item \Cmd\asbukTrad: same as \cmd\AsbukTrad\ but in lowercase.
% \end{itemize}
%
%
@@ -1491,9 +1969,9 @@ to track the issues and follow progress.
%
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{babelshorthands} = \textit{false} or true. \new{v1.46}
-% if this is turned on, the following shorthands for Slovak are activated:
-% \begin{shorthands}
+% \item \xpgboolkeyfalse[1.46]{babelshorthands}
+% If this is turned on, the following shorthands for Slovak are activated:
+% \begin{shorthands}
% \item[¦"=¦] for an explicit hyphen sign which is repeated at the beginning
% of the next line when hyphenated, as common in Slovak typesetting
% (only needed with ¦splithyphens=false¦).
@@ -1501,23 +1979,23 @@ to track the issues and follow progress.
% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
% cases where the hyphen should stick at the following syllable.
% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
-% in the hyphenation patterns (as opposed to ¦\-¦).
+% in the hyphenation patterns (as opposed to \cmd\-).
% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
-% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to ¦\slash¦, hyphenation at the breakpoints
+% \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to \cmd\slash, hyphenation at the breakpoints
% preset in the hyphenation patterns is still allowed.
% \item[¦"‘¦] for Slovak left double quotes (looks like ,,).
% \item[¦"’¦] for Slovak right double quotes (looks like “).
% \item[¦">¦] for Slovak left double guillemets (looks like >>).
% \item[¦"<¦] for Slovak right double guillemets (looks like <<).
-% \end{shorthands}
-% \item \TB{splithyphens} = \textit{false} or true. \new{v1.46}
+% \end{shorthands}
+% \item \xpgboolkeytrue[1.46]{splithyphens}
% According to Slovak typesetting conventions, if a word with a hard hyphen (such as \emph{je-li})
% is hyphenated at this hyphen, a second hyphenation character is to be inserted at the beginning
% of the line that follows the hyphenation (\emph{je-/-li}).
% By default, this is done automatically (if you are using \LuaTeX, the \pkg{luavlna} package is
% loaded to achieve this).
% Set this option to ¦false¦ to disable the feature.
-% \item \TB{vlna} = \textit{false} or true. \new{v1.46}
+% \item \xpgboolkeytrue[1.46]{vlna}
% According to Slovak typesetting conventions, single-letter words (non-syllable prepositions)
% must not occur at line ends.
% \pkg{Polyglossia} takes care of this automatically by default (if you are using \LuaTeX, the
@@ -1528,26 +2006,31 @@ to track the issues and follow progress.
% \subsection{slovenian}\label{slovenian}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{localalph} = true or \textit{false}
+% \item \xpgboolkeyfalse{localalph}
+% If \xpgvalue{true}, alpha-numeric counters will use a localized version including characters with caron
+% (a, b, c, č, d, \ldots).
% \end{itemize}
%
% \subsection{sorbian}\label{sorbian}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{variant}\new{v1.45} = lower or \textit{upper}
-% \item \TB{olddate}\new{v1.45} = true or \textit{false} (default value = true). If true, ¦\today¦
-% will use traditional Sorbian month names (\ie it will be synonymous to ¦\oldtoday¦ below)
+% \item \xpgchoicekey[1.45]{variant}{\xpgvalue{lower} or \xpgpresetvalue{upper}}
+% \item \xpgboolkeyfalse[1.45]{olddate}
+% If \xpgvalue{true}, \cmd\today\ will use traditional Sorbian month names (\ie it will be
+% synonymous to \cmd\oldtoday\ below).
% \end{itemize}
% \paragraph*{Commands:}
% \begin{itemize}
-% \item \Cmd\oldtoday: outputs the current date using traditional Sorbian month names, even if \TB{olddate} is false.
+% \item \Cmd\oldtoday: outputs the current date using traditional Sorbian month names, even if
+% \xpgvalue{olddate} is \xpgvalue{false}.
% \end{itemize}
%
% \subsection{spanish}\label{spanish}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{variant} = \textit{spanish} or mexican.\new{v1.46}
-% \item \TB{spanishoperators} = all, accented, spaced or none or \textit{false} (default value = all).\new{v1.46}
+% \item \xpgchoicekey[1.46]{variant}{\xpgpresetvalue{spanish} or \xpgvalue{mexican}}
+% \item \xpgchoicekey[1.46]{spanishoperators}{\xpgdefaultvalue{all}, \xpgvalue{accented},
+% \xpgvalue{spaced}, \xpgvalue{none}, or \xpgpresetvalue{false}}
% Determines of and how math operators are localized to Spanish.
% \begin{itemize}
% \item ¦accented¦ causes some math operators to use accents where usual in Spanish (\emph{lím},
@@ -1555,29 +2038,29 @@ to track the issues and follow progress.
% \item ¦spaced¦ causes some math operators to use spaces where usual in Spanish (\emph{arc\,cos},
% \emph{arc\,sen}, \emph{arc\,tg}).
% \item ¦all¦ activates ¦accented¦ and ¦spaced¦ and furthermore provides Spanish localizations of
-% ¦\sin¦ (\emph{sen}), ¦\tan¦ (\emph{tg}), ¦\sinh¦ (\emph{senh}), and ¦\tanh¦ (\emph{tgh}).
-% \item ¦none¦ does no localization at all (default setting).
+% \cmd\sin\ (\emph{sen}), \cmd\tan\ (\emph{tg}), \cmd\sinh\ (\emph{senh}), and \cmd\tanh\ (\emph{tgh}).
+% \item ¦none¦ does no localization at all (default setting).
% \end{itemize}
% \end{itemize}
-% \paragraph*{\color{black}Commands:}\new{v1.46}
+% \paragraph*{\color{black}Commands:}\new{1.46}
% \begin{itemize}
-% \item \Cmd\arcsen: alias to ¦\arcsin¦ (\pkg{babel} compatibility)
-% \item \Cmd\arctg: alias to ¦\arctan¦ (\pkg{babel} compatibility)
-% \item \Cmd\sen: alias to ¦\sin¦ (\pkg{babel} compatibility)
-% \item \Cmd\senh: alias to ¦\sinh¦ (\pkg{babel} compatibility)
-% \item \Cmd\tg: alias to ¦\tan¦ (\pkg{babel} compatibility)
-% \item \Cmd\tgh: alias to ¦\tanh¦ (\pkg{babel} compatibility)
+% \item \Cmd\arcsen: alias to \cmd\arcsin\ (\pkg{babel} compatibility)
+% \item \Cmd\arctg: alias to \cmd\arctan\ (\pkg{babel} compatibility)
+% \item \Cmd\sen: alias to \cmd\sin\ (\pkg{babel} compatibility)
+% \item \Cmd\senh: alias to \cmd\sinh\ (\pkg{babel} compatibility)
+% \item \Cmd\tg: alias to \cmd\tan\ (\pkg{babel} compatibility)
+% \item \Cmd\tgh: alias to \cmd\tanh\ (\pkg{babel} compatibility)
% \item \Cmd\spanishoperator: allows you to define further localized operators. For instance, ¦\spanishoperator{cotg}¦
-% defines a command ¦\cotg¦ that outputs \emph{cotg} in math. The optional argument of the command lets you specify the
+% defines a command \cmd\cotg\ that outputs \emph{cotg} in math. The optional argument of the command lets you specify the
% spelling, if needed, \eg ¦\spanishoperator[arc\,ctg]{arcctg}¦.
% \end{itemize}
%
% \subsection{syriac}\label{syriac}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{numerals} = \textit{western} (i.e., 1234567890), eastern
-% (for which the Oriental Arabic numerals are used: \textarabic{١٢٣٤٥٦٧٨٩٠}),
-% or abjad. \new{v1.0.1}.
+% \item \xpgchoicekey[1.0.1]{numerals}{\xpgpresetvalue{western} (\ie 1234567890), \xpgvalue{eastern}
+% (for which the Oriental Arabic numerals are used: \textarabic{١٢٣٤٥٦٧٨٩٠}), or
+% \xpgvalue{abjad}}
% \end{itemize}
% \paragraph*{Commands:}
% \begin{itemize}
@@ -1588,7 +2071,7 @@ to track the issues and follow progress.
% \subsection{thai}\label{thai}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{numerals} = thai or \textit{arabic}
+% \item \xpgchoicekey{numerals}{\xpgvalue{thai} or \xpgpresetvalue{arabic}}
% \end{itemize}
% ^^A
% To insert word breaks, you need to use an external processor.
@@ -1598,21 +2081,58 @@ to track the issues and follow progress.
% \subsection{tibetan}\label{tibetan}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{numerals} = tibetan or \textit{arabic}
+% \item \xpgchoicekey{numerals}{\xpgvalue{tibetan} or \xpgpresetvalue{arabic}}
% \end{itemize}
%
% \subsection{ukrainian}\label{ukrainian}
-% \paragraph*{Commands:}
+%
+% \paragraph*{Options:}
+% \begin{itemize}
+% \item \xpgboolkeyfalse{babelshorthands}
+% If this is turned on, the following shorthands are activated:
+% \begin{shorthands}
+% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset
+% in the hyphenation patterns (as opposed to \cmd\-).
+% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for
+% cases where the hyphen should stick at the following syllable.
+% \item[¦"|¦] disables a ligature at this position.
+% \item[¦""¦] allows for a line break at this position (without hyphenation sign).
+% \item[¦"---¦] Cyrillic emdash in plain text.
+% \item[¦"--~¦] Cyrillic emdash in compound names (surnames).
+% \item[¦"--*¦] Cyrillic emdash for denoting direct speech.
+% ^^A These are commented out in gloss-ukrainian
+% ^^A \item[¦",¦] thinspace for initials with a breakpoint in following surname.
+% ^^A \item[¦"‘¦] for German left double quotes (looks like ,,).
+% ^^A \item[¦"’¦] for German right double quotes (looks like “).
+% ^^A \item[¦"<¦] for French left double quotes (looks like <<).
+% ^^A \item[¦">¦] for French right double quotes (looks like >>).
+% \end{shorthands}
+% \item \xpgchoicekey{numerals}{\xpgpresetvalue{arabic}, \xpgvalue{cyrillic-alph} or \xpgvalue{cyrillic-trad}}
+% Uses either Arabic numerals or Cyrillic alphanumerical numbering. The two Cyrillic variants differ as follows:
% \begin{itemize}
-% \item \Cmd\Asbuk: produces the uppercase Ukrainian alphabet, for
-% environments such as ¦enumerate¦
-% \item \Cmd\asbuk: same in lowercase
+% \item \xpgvalue{cyrillic-alph} steps through the Cyrillic alphabet. Thus it can only be used up to 30.
+% \item \xpgvalue{cyrillic-trad} (= \xpgvalue{cyrillic}) uses a traditional Cyrillic alphanumeric system.%
+% \footnote{See \url{https://en.wikipedia.org/wiki/Cyrillic_numerals}.}
+% It supports numbers up to 999\,999.
% \end{itemize}
+% \end{itemize}
+% ^^A
+% \paragraph*{Commands:}
+% \begin{itemize}
+% \item \Cmd\Asbuk: produces uppercased Cyrillic alphanumerals, for environments such as ¦enumerate¦.
+% It steps through the Cyrillic alphabet and thus it can only be used up to 30.
+% The command takes a counter as argument, \eg ¦\textukrainian{\Asbuk{section}}¦ produces \textrussian{\Asbuk{section}}.
+% \item \Cmd\asbuk: same as \cmd\Asbuk\ but in lowercase.
+% \item \Cmd\AsbukTrad: same as \cmd\Asbuk\ but using the traditional Cyrillic alphanumeric numbering which supports
+% numbers up to 999\,999.\\
+% \Eg ¦\textukrainian{\AsbukTrad{page}}¦ produces \textrussian{\AsbukTrad{page}}.
+% \item \Cmd\asbukTrad: same as \cmd\AsbukTrad\ but in lowercase.
+% \end{itemize}
%
% \subsection{welsh}\label{welsh}
% \paragraph*{Options:}
% \begin{itemize}
-% \item \TB{date} = long or \textit{short}
+% \item \xpgchoicekey{date}{\xpgvalue{long} or \xpgpresetvalue{short}}
% \end{itemize}
%
%
@@ -1620,55 +2140,55 @@ to track the issues and follow progress.
%
% \pkg{Polyglossia} uses the following macros to define language-specific captions
% (\ie strings such as ``chapter''), date formats and additional language settings
-% (¦⟨lang⟩¦ is to be replaces with the respective language name):
+% (\meta{lang} is to be replaces with the respective language name):
%
% \begin{itemize}
-% \item \Cmd{\captions⟨lang⟩} stores definitions of caption strings
+% \item \Cmd{\captions\meta{lang}} stores definitions of caption strings
% (such as, in the case of English, ¦\def\chaptername{Chapter}¦)
-% \item \Cmd{\date⟨lang⟩} stores definitions of date formats (usually redefinitions
-% of ¦\today¦, in some cases also definitions of additional date commands)
-% \item \Cmd{\blockextras⟨lang⟩} stores macros that are to be executed when the language
-% ⟨lang⟩ is activated via ¦\selectlanguage¦ command or the ¦⟨lang⟩¦ environment
-% \item \Cmd{\inlineextras⟨lang⟩} stores macros that are to be executed when the language
-% ⟨lang⟩ is activated locally via ¦\text⟨lang⟩¦ command
-% \item \Cmd{\noextras⟨lang⟩} stores macros that are to be executed when the language
-% ¦⟨lang⟩¦ is closed
-% \end{itemize}
+% \item \Cmd{\date\meta{lang}} stores definitions of date formats (usually redefinitions
+% of \cmd\today, in some cases also definitions of additional date commands)
+% \item \Cmd{\blockextras\meta{lang}} stores macros that are to be executed when the language
+% \meta{lang} is activated via \cmd\selectlanguage command or the \meta{lang} environment
+% \item \Cmd{\inlineextras\meta{lang}} stores macros that are to be executed when the language
+% \meta{lang} is activated locally via \cmd\text\meta{lang} command
+% \item \Cmd{\noextras\meta{lang}} stores macros that are to be executed when the language
+% \meta{lang} is closed
+% \end{itemize}
% ^^A
-% In order to redefine internal macros, we recommend to use the command ¦\gappto¦.
-% For compatibility with \pkg{babel} the command ¦\addto¦ is also available
-% to the same effect. For instance, to change the ¦\chaptername¦ for language ¦lingua¦,
+% In order to redefine internal macros, we recommend to use the command \cmd\gappto.
+% For compatibility with \pkg{babel} the command \cmd\addto\ is also available
+% to the same effect. For instance, to change the \cmd\chaptername\ for language ¦lingua¦,
% you can do this:
% \begin{verbatim}
% \gappto\captionslingua{\def\chaptername{Caput}}
% \end{verbatim}
% ^^A
% Note that this needs to be done after the respective language has been loaded with
-% ¦\setmainlanguage¦ or ¦\setotherlanguage¦.
+% \cmd\setmainlanguage\ or \cmd\setotherlanguage.
%
% Specifically for package authors, analogous commands are provided which are only executed
% if a specific language \emph{variety} is used. As opposed to the macros above, these refer
% to babel names. Other than that, the function is identical:
%
% \begin{itemize}
-% \item \Cmd{\captions@bbl@⟨babelname⟩}
-% \item \Cmd{\date@bbl@⟨babelname⟩}
-% \item \Cmd{\blockextras@bbl@⟨babelname⟩}
-% \item \Cmd{\inlineextras@bbl@⟨babelname⟩}
-% \item \Cmd{\noextras@bbl@⟨babelname⟩}
+% \item \Cmd{\captions@bbl@\meta{babelname}}
+% \item \Cmd{\date@bbl@\meta{babelname}}
+% \item \Cmd{\blockextras@bbl@\meta{babelname}}
+% \item \Cmd{\inlineextras@bbl@\meta{babelname}}
+% \item \Cmd{\noextras@bbl@\meta{babelname}}
% \end{itemize}
% ^^A
% By default, these macros are undefined. If they are defined (\eg by an external package),
-% they will be executed after their respective ¦⟨lang⟩¦ counterpart and thus can be used to
-% overwrite definitions of the former. Again, use ¦\gappto¦ to define\slash modify these macros.
-% For instance, to add a new caption ¦\footnotename¦ to the Swiss variety of German (babel name
+% they will be executed after their respective \meta{lang} counterpart and thus can be used to
+% overwrite definitions of the former. Again, use \cmd\gappto\ to define\slash modify these macros.
+% For instance, to add a new caption \cmd\footnotename\ to the Swiss variety of German (babel name
% ¦nswissgerman¦), you can do this:
% \begin{verbatim}
% \gappto\captions@bbl@nswissgerman{\def\footnotename{Fussnote}}
% \end{verbatim}
% ^^A
% If you do this in a document preamble rather than in a package, you need to embrace the redefinition
-% by ¦\makeatletter¦ and ¦\makeatother¦ due to the ¦@¦ in the macro names.
+% by \cmd\makeatletter\ and \cmd\makeatother\ due to the ¦@¦ in the macro names.
%
% \section{Script-specific numbering}
%
@@ -1694,25 +2214,27 @@ to track the issues and follow progress.
% ¦\localnumeral{42}¦ yields \textarabic{\localnumeral{42}}, whereas in an Hebrew environment, it
% results in \texthebrew[numerals=hebrew]{\localnumeral{42}} with ¦numerals=hebrew¦, and \texthebrew{\localnumeral{42}}
% with ¦numerals=arabic¦. Note that, as opposed to the various ¦digits¦ macros (described in sec.~\ref{sec:decdigit}),
-% the argument of ¦\localnumeral¦ must consist of numbers only.
+% the argument of \cmd\localnumeral\ must consist of numbers only.
%
% For\new{1.45} the conversion of counters, the starred version \Cmd{\localnumeral*} is provided. This takes a counter as argument.
% For instance in an Arabic environment ¦\localnumeral*{page}¦ yields \textarabic{\localnumeral*{page}}.
%
-% For scripts with alphanumeric numbering, the variants \Cmd{\Localnumeral} and \Cmd{\Localnumeral*} provide the uppercased
+% For scripts with alphanumeric numbering, the variants \Cmd{\Localnumeral} and \Cmd{\Localnumeral*} provide the uppercased
% versions.\medskip
%
% \noindent All these macros provide the following options:
%
% \begin{itemize}
-% \item \TB{lang} =\DescribeMacro{[lang=]}\ \textit{local}, main, or <language>.\\
-% Output number in the local form of the currently active language for ¦local¦, the main language of the document for ¦main¦,
-% and any (loaded) language for ¦<language>¦ (\eg ¦\localnumeral[lang=arabic]{42}}¦).
+% \item \DescribeMacro{[lang=]}\xpgchoicekey{lang}{\xpgpresetvalue{local}, \xpgvalue{main},
+% or \xpgvalue{\meta{language}}}
+% Output number in the local form of the currently active language for
+% ¦local¦, the main language of the document for ¦main¦, and any (loaded)
+% language for \meta{language} (\eg ¦\localnumeral[lang=arabic]{42}}¦).
% \end{itemize}
%
% \subsection{Non-Western decimal digits}\label{sec:decdigit}
%
-% In addition\new{v1.1.1} to the generic macros described above, \pkg{polyglossia} provides language-specific conversion macros
+% In addition\new{1.1.1} to the generic macros described above, \pkg{polyglossia} provides language-specific conversion macros
% which can be used if the generic ones do not suit the need.\footnote{%
% A third method are so-called TECKit fontmappings.
% Those can be activated with the \pkg{fontspec} ¦Mapping¦ option,
@@ -1721,7 +2243,7 @@ to track the issues and follow progress.
% typing \cmd{\textarabic\{2010\}} results in \textarabic{٢٠١٠}. Note that this method has some drawbacks, though,
% for instance when the value of a counter has to be written and read from auxiliary files.
% So please use this with care.}
-% The macros have the form ¦\<script>digits¦. They convert Arabic numerical input and leave every other input untouched.
+% The macros have the form \cmd{\⟨script⟩digits}. They convert Arabic numerical input and leave every other input untouched.
% In an Arabic context, for instance, ¦\arabicdigits{9182/738543-X}¦ yields \textarabic{\arabicdigits{9182/738543-X}}.
%
% Currently, the following macros are provided:
@@ -1748,9 +2270,9 @@ to track the issues and follow progress.
% \url{http://en.wikipedia.org/wiki/Hebrew_numerals},
% and \url{http://en.wikipedia.org/wiki/Syriac_alphabet}.}, dedicated macros are provided.
%
-% They work in a similar way than the ¦\<script>digits¦ macros described above: They take Arabic numerical input
+% They work in a similar way than the \cmd{\⟨script⟩digits} macros described above: They take Arabic numerical input
% and output the respective value in the local alphabetic numbering scheme (most of these macros are equivalent
-% to ¦\localnumeral¦ and ¦\Localnumeral¦ in the respective context).
+% to \cmd\localnumeral\ and \cmd\Localnumeral\ in the respective context).
%
% The following macros are provided:
%
@@ -1767,6 +2289,13 @@ to track the issues and follow progress.
%
% \item \Cmd\armeniannumeral produces Armenian alphabetic numbering.
% Example: ¦\armeniannumeral{1863}¦ yields \textarmenian{\armeniannumeral{1863}}.
+%
+% \item \Cmd\belarusiannumeral produces Belarusian numbering, with uppercased variant (for alphanumerical variant) via \Cmd\Belarusiannumeral.
+% Depending on the ¦numerals¦ option in the Belarusian language selection, this is either Arabic digit or Cyrillic
+% alphanumercial output.\\
+% Example: With ¦numerals=latin¦ ¦\belarusiannumeral{19}¦ yields \textrussian{\russiannumeral{19}},
+% with ¦numerals=cyrillic-trad¦ ¦\belarusiannumeral{19}¦ results in \textrussian[numerals=cyrillic-trad]{\russiannumeral{19}},\\
+% with ¦numerals=cyrillic-alph¦ ¦\belarusiannumeral{19}¦ results in \textrussian[numerals=cyrillic-alph]{\russiannumeral{19}}.
%
% \item \Cmd\georgiannumeral produces Georgian alphabetic numbering.\\
% Example: ¦\georgiannumeral{1863}¦ yields \textgeorgian{\georgiannumeral{1863}}.
@@ -1776,24 +2305,40 @@ to track the issues and follow progress.
% ¦\Greeknumeral{1863}¦ results in \textgreek{\Greeknumeral{1863}}.
%
% \item \Cmd\hebrewnumeral, \Cmd\Hebrewnumeral and \Cmd\Hebrewnumeralfinal generate variants of Hebrew alphanumeric numerals.
-% The commands behave exactly as they do in \pkg{babel}: ¦\hebrewnumeral¦ outputs the numbers without any decoration,
-% ¦\Hebrewnumeral¦ adds \textit{gereshayim} before the last letter, ¦\Hebrewnumeralfinal¦ uses in addition the final forms of Hebrew letters.
+% The commands behave exactly as they do in \pkg{babel}: \cmd\hebrewnumeral\ outputs the numbers without any decoration,
+% \cmd\Hebrewnumeral\ adds \textit{gereshayim} before the last letter, \cmd\Hebrewnumeralfinal\ uses in addition the final forms of Hebrew letters.
% Examples:
% ¦\hebrewnumeral{1750}¦ yields \texthebrew{\hebrewnumeral{1750}},
% ¦\Hebrewnumeral{1750}¦ yields \texthebrew{\Hebrewnumeral{1750}},
% and ¦\Hebrewnumeralfinal{1750}¦ yields \texthebrew{\Hebrewnumeralfinal{1750}}.
+%
+% \item \Cmd\mongoliannumeral produces Mongolian numbering, with uppercased variant (for alphanumerical variant) via \Cmd\Mongoliannumeral.
+% Depending on the ¦numerals¦ option in the Mongolian language selection, this is either Arabic digit or Cyrillic
+% alphanumercial output.\\
+% Example: With ¦numerals=latin¦ ¦\mongoliannumeral{19}¦ yields \textrussian{\russiannumeral{19}},
+% with ¦numerals=cyrillic-trad¦ ¦\mongoliannumeral{19}¦ results in \textrussian[numerals=cyrillic-trad]{\russiannumeral{19}},\\
+% with ¦numerals=cyrillic-alph¦ ¦\mongoliannumeral{19}¦ results in \textrussian[numerals=cyrillic-alph]{\russiannumeral{19}}.
%
% \item \Cmd\russiannumeral produces Russian numbering, with uppercased variant (for alphanumerical variant) via \Cmd\Russiannumeral.
% Depending on the ¦numerals¦ option in the Russian language selection, this is either Arabic digit or Cyrillic
% alphanumercial output.\\
% Example: With ¦numerals=latin¦ ¦\russiannumeral{19}¦ yields \textrussian{\russiannumeral{19}},
-% with ¦numerals=cyrillic¦ ¦\russiannumeral{19}¦ results in \textrussian[numerals=cyrillic]{\russiannumeral{19}}.
+% with ¦numerals=cyrillic-trad¦ ¦\russiannumeral{19}¦ results in \textrussian[numerals=cyrillic-trad]{\russiannumeral{19}},\\
+% with ¦numerals=cyrillic-alph¦ ¦\russiannumeral{19}¦ results in \textrussian[numerals=cyrillic-alph]{\russiannumeral{19}}.
%
% \item \Cmd\serbiannumeral produces Serbian numbering, with uppercased variant (for alphanumerical variant) via \Cmd\Serbiannumeral.
% Depending on the ¦numerals¦ option in the Serbian language selection, this is either Arabic digit or Cyrillic
% alphanumercial output.\\
-% Example: With ¦numerals=latin¦ ¦\serbiannumeral{19}¦ yields \textserbian{\serbiannumeral{19}},
-% with ¦numerals=cyrillic¦ ¦\serbiannumeral{19}¦ results in \textserbian[numerals=cyrillic]{\serbiannumeral{19}}.
+% Example: With ¦numerals=latin¦ ¦\serbiannumeral{19}¦ yields \textrussian{\serbiannumeral{19}},
+% with ¦numerals=cyrillic-trad¦ ¦\serbiannumeral{19}¦ results in \textrussian[numerals=cyrillic-trad]{\serbiannumeral{19}},\\
+% with ¦numerals=cyrillic-alph¦ ¦\serbiannumeral{19}¦ results in \textrussian[numerals=cyrillic-alph]{\serbiannumeral{19}}.
+%
+% \item \Cmd\ukrainiannumeral produces Ukrainian numbering, with uppercased variant (for alphanumerical variant) via \Cmd\Ukrainiannumeral.
+% Depending on the ¦numerals¦ option in the Ukrainian language selection, this is either Arabic digit or Cyrillic
+% alphanumercial output.\\
+% Example: With ¦numerals=latin¦ ¦\ukrainiannumeral{19}¦ yields \textrussian{\russiannumeral{19}},
+% with ¦numerals=cyrillic-trad¦ ¦\ukrainiannumeral{19}¦ results in \textrussian[numerals=cyrillic-trad]{\russiannumeral{19}},\\
+% with ¦numerals=cyrillic-alph¦ ¦\ukrainiannumeral{19}¦ results in \textrussian[numerals=cyrillic-alph]{\russiannumeral{19}}.
% \end{itemize}
%
%
@@ -1806,14 +2351,14 @@ to track the issues and follow progress.
%
% \subsection{Horizontal footnote position}
%
-% When right-to-left languages are used, the ¦\footnote¦ command becomes sensitive to the text directionality. The footnote is
+% When right-to-left languages are used, the \cmd\footnote\ command becomes sensitive to the text directionality. The footnote is
% always placed on the side that is currently the origin of direction: on the left side of the page in LTR paragraphs and
% on the right in RTL paragraphs.
%
% For cases where this is not desired, two additional footnote commands are provided: \Cmd\RTLfootnote and \Cmd\LTRfootnote.
-% ¦\LTRfootnote¦ always places the footnote on the left side, notwithstanding the current
-% directionality. Likewise, ¦\RTLfootnote¦ always places it on the right side. Like ¦\footnote¦, ¦\RTLfootnote¦
-% and ¦\LTRfootnote¦ provide an optional argument to customize the number.
+% \cmd\LTRfootnote\ always places the footnote on the left side, notwithstanding the current
+% directionality. Likewise, \cmd\RTLfootnote\ always places it on the right side. Like \cmd\footnote, \cmd\RTLfootnote\
+% and \cmd\LTRfootnote\ provide an optional argument to customize the number.
%
%
% \subsection{Footnote rule length and position}
@@ -1830,12 +2375,13 @@ to track the issues and follow progress.
% \item Put \Cmd\autofootnoterule in the preamble to have automatic placement depending on the context (see below for elaboration).
% \item Put \Cmd\textwidthfootnoterule in the preamble to have a rule that spans the whole text width.
% \end{itemize}
-% With ¦\autofootnoterule¦, the first footnote on the current page determines the placement. Note that this automatic can fail with
-% footnotes at page boundaries that differ in directionality from the first footnote on the page. You can work around such cases by switching to ¦\rightfootnoterule¦ or ¦\leftfootnoterule¦ on these pages.
+% With \cmd\autofootnoterule, the first footnote on the current page determines the placement. Note that this automatic can fail with
+% footnotes at page boundaries that differ in directionality from the first footnote on the page. You can work around such cases by switching to \cmd\rightfootnoterule\ or \cmd\leftfootnoterule\ on these pages.
%
% Note also that the rule switches might interfere in bad ways with packages or classes that redefine footnotes themselves. This is also the reason
-% why ¦\autofootnoterule¦ is not used by default.
+% why \cmd\autofootnoterule\ is not used by default.
%
+% \condbreak{5\baselineskip}
% \section{Calendars}
%
% \subsection{Hebrew calendar (hebrewcal.sty)}
@@ -1852,24 +2398,24 @@ to track the issues and follow progress.
% (Cambridge University Press, 2001).\label{reingold}}
% It provides two macros for the end-user.
% The command
-% \displaycmd{\HijriFromGregorian\{⟨year⟩\}\{⟨month⟩\}\{⟨day⟩\}}{\HijriFromGregorian}
+% \displaycmd{\HijriFromGregorian\marg{year}\marg{month}\marg{day}}{\HijriFromGregorian}
% sets the counters ¦Hijriday¦, ¦Hijrimonth¦ and ¦Hijriyear¦.
% \Cmd\Hijritoday\ formats the Hijri date for the current day.
-% This command is now locale-aware\new{v1.1.1}: its output will differ depending on the
+% This command is now locale-aware\new{1.1.1}: its output will differ depending on the
% currently active language. Presently \pkg{polyglossia}’s language definition files
-% for Arabic, Farsi, Urdu, Turkish and Malay provide a localized version of ¦\Hijritoday¦.
+% for Arabic, Farsi, Urdu, Turkish and Malay provide a localized version of \cmd\Hijritoday.
% If the formatting macro for the current language is undefined, the Hijri date will be formatted
% in Arabic or in roman transliteration, depending of the current writing direction.
% You can define a new format or redefine one with the command
-% \displaycmd{\DefineHijriDateFormat\{<lang>\}\{<code>\}.}{\DefineHijriDateFormat}
+% \displaycmd{\DefineHijriDateFormat\marg{lang}\marg{code}.}{\DefineHijriDateFormat}
%
-% The command ¦\Hijritoday¦ also accepts an optional argument to add or subtract a correction
+% The command \cmd\Hijritoday\ also accepts an optional argument to add or subtract a correction
% (in days) to the date computed by the arithmetical algorithm.\footnote{ %
% The Islamic calendar is indeed a purely lunar calendar based on the observation
% of the first visibility of the lunar crescent at the beginning of the lunar month,
% so there can be differences between different localities, as well as between
% civil and religious authorities.}
-% For instance if ¦\Hijritoday¦ yields the date “7 Rajab 1429” (which is the date that was
+% For instance if \cmd\Hijritoday\ yields the date “7 Rajab 1429” (which is the date that was
% displayed on the front page of \href{http://www.aljazeera.net}{aljazeera.net} on
% 11th July 2008), ¦\Hijritoday[1]¦ would rather print “8 Rajab 1429” (the date
% indicated the same day on the site \href{http://www.gulfnews.com}{gulfnews.com}).
@@ -1877,19 +2423,26 @@ to track the issues and follow progress.
% \subsection{Farsi (jalālī) calendar (farsical.sty)}
% This package is an almost verbatim copy of ¦Arabiftoday.sty¦ (in the \pkg{Arabi} package),
% itself a slight modification of ¦ftoday.sty¦ in Farsi\TeX.\footnote{ %
-% One day I may rewrite \pkg{farsical} from scratch using the algorithm in
-% Reingold \& Gershowitz (ref.~n.~\ref{reingold}).}
+% One day we may rewrite \pkg{farsical} from scratch using the algorithm in
+% Reingold \& Gershowitz (ref.~n.\,\ref{reingold}).}
% Here we have renamed the command \cmd\ftoday\ to
% \Cmd\Jalalitoday.
% Example: today is \Jalalitoday.
%
%
-% ^^A\section{Varia}
+% \section{Auxiliary commands}
+%
+% The macro \displaycmd{\charifavailable\marg{char code}\marg{substitution}}{\charifavailable}\new{1.47} checks whether
+% the character with the specified \meta{char code} (\ie unicode utf-16 code without preceding ¦0x¦) exists in
+% the current font. If so, the character is printed, if not, the \meta{substitution} is printed.
+%
+% Example: ¦\charifavailable{1E9E}{SS}¦ prints the capital version of the German letter ⟨ß⟩ if available
+% (\ie \charifavailable{1E9E}{SS}), else it prints the substitution digraph SS.
+%
%
% \section{Accessing language information}
%
% The following is specifically relevant to package authors who need information about the languages in use.
-%
% In order to get such information, \pkg{polyglossia} provides the following macros:
%
% \begin{itemize}
@@ -1904,20 +2457,36 @@ to track the issues and follow progress.
% Note that this macro is also defined for languages that are not supported in \pkg{babel}. In that
% case, they are equal to the polyglossia language name.
% \item \Cmd\mainbabelname\ analogously stores the name of document's main language (variant) in \pkg{babel}.
+% \item \Cmd{\languageid\marg{type}}\new{1.47} stores the identifier tag of the current language. Currently supported \meta{types}:
+% \begin{itemize}
+% \item ¦bcp-47¦ (alias ¦bcp47¦): IETF BCP-47 language identifier
+% \end{itemize}
+% \item \Cmd{\mainlanguageid\marg{type}}\new{1.47} stores identifier tag of the main language. Currently supported \meta{types}:
+% see \cmd\languageid.
% \end{itemize}
-% ^^A
-% If you want to have a full list of loaded languages/variants, use the following macros:
+% \bigskip
+%
+% \noindent If you want to have a full list of loaded languages/variants, use the following macros:
% \begin{itemize}
% \item \Cmd{\xpg@loaded}\ stores a comma-separated list of all loaded languages (polyglossia name)
% \item \Cmd{\xpg@vloaded}\ stores a comma-separated list of all loaded variants
-% \item \Cmd{\xpg@bloaded}\ stores a comma-separated list of \pkg{babel} names of all language variants
+% \item \Cmd{\xpg@bloaded}\ stores a comma-separated list of \pkg{babel} names of all language variants
+% \item \Cmd{\xpg@bcp@loaded}\new{1.47}\ stores a comma-separated list of the BCP-47 IDs of all language variants
% \end{itemize}
-% ^^A
-% Finally, you can test whether a language is loaded by
-% \displaycmd{\iflanguageloaded\{⟨lang⟩\}\{⟨true⟩\}\{⟨false⟩\}}{\iflanguageloaded}
-% where \texttt{⟨lang⟩} is a \pkg{polyglossia} language name, or
-% \displaycmd{\ifbabellanguageloaded\{⟨lang⟩\}\{⟨true⟩\}\{⟨false⟩\}}{\ifbabellanguageloaded}
-% where \texttt{⟨lang⟩} is a \pkg{babel} language name.
+% \bigskip
+%
+% \noindent Whether a language is loaded can be tested by
+% \displaycmd{\iflanguageloaded\marg{lang}\marg{true}\marg{false}}{\iflanguageloaded}
+% where \texttt{\meta{lang}} is a \pkg{polyglossia} language name, by
+% \displaycmd{\ifbabellanguageloaded\marg{lang}\marg{true}\marg{false}}{\ifbabellanguageloaded}
+% where \texttt{\meta{lang}} is a \pkg{babel} language name (see table~\ref{tab:bbllang} on p.~\pageref{tab:bbllang}), or by
+% \displaycmd{\iflanguageidloaded\marg{type}\marg{id}\marg{true}\marg{false}}{\iflanguageidloaded}\new{1.47}
+% where \meta{type} is a supported language id type (such as ¦bcp-47¦) and \meta{id} is a language id
+% (such as ¦en-US¦; see table~\ref{tab:BCP47-polyglossia} on p.~\pageref{tab:BCP47-polyglossia}).
+% \bigskip
+%
+% \noindent Finally, if you want to know whether a specific language option has been set, you can use
+% \displaycmd{\iflanguageoption\marg{lang}\marg{opt. key}\marg{opt. value}\marg{true}\marg{false}}{\iflanguageoption}\new{1.47}
%
% \section{Acknowledgements (by François Charette)}
% \pkg{Polyglossia} is notable for being a recycle box of previous contributions
@@ -1933,7 +2502,7 @@ to track the issues and follow progress.
% (Sanskrit), \TA{Zdenĕk Wagner} (Hindi), \TA{Mikhal Oren} (Hebrew), \TA{Sergey Astanin} (Russian),
% \TA{Khaled Hosny} (Arabic), \TA{Sertaç Ö. Yıldız} (Turkish), \TA{Kamal Abdali} (Urdu),
% and several other members of the \XeTeX\ user community, notably \TA{Enrico Gregorio}, who
-% has sent me many useful suggestions and corrections and contributed the ¦\newXeTeXintercharclass¦
+% has sent me many useful suggestions and corrections and contributed the \cmd\newXeTeXintercharclass\
% mechanism in xelatex.ini which is now used by polyglossia.
% More recently, \TA{Kevin Godby} of the \href{http://ubuntu-manual.org}{Ubuntu Manual} project has
% contributed very useful feedback, bug hunting and, with the help of translators,
@@ -1950,9 +2519,9 @@ to track the issues and follow progress.
% In alphabetical order: \TA{Ignas Anikevicius}, \TA{Sina Ahmadi}, \TA{Wouter Bolsterlee}, \TA{Christian Buhtz},
% \TA{Zgarbul Andrey}, \TA{Oleg Domanov}, \TA{Philipp Gesang}, \TA{Kevin Godby}, \TA{Enrico Gregorio},
% \TA{Khaled Hosny}, \TA{Najib Idrissi}, user \TA{julroy67}, \TA{Dohyun Kim}, \TA{Phil Kime}, \TA{Mike Kroutikov},
-% \TA{Ivan Kokan}, \TA{Caleb Maclennan}, \TA{José Mancera}, \TA{Yevgen Pogribnyi}, \TA{Maïeul Rouquette},
-% \TA{Elie Roux}, \TA{Hugo Roy}, \TA{Guy Rutenberg}, \TA{Philipp Stephani}, \TA{Keno Wehr}, \TA{Dominik Wujastyk},
-% \TA{Sertaç Ö. Yıldız}, \TA{Maksim Zholudev}, \TA{Yan Zhou}, and \TA{Stefan Zlatinov}.
+% \TA{Ivan Kokan}, \TA{Caleb Maclennan}, \TA{José Mancera}, \TA{Yevgen Pogribnyi}, \TA{Will Robertson}, \TA{Maïeul Rouquette},
+% \TA{Elie Roux}, \TA{Hugo Roy}, \TA{Guy Rutenberg}, \TA{Philipp Stephani}, \TA{Niranjan Tambe}, \TA{Keno Wehr},
+% \TA{Dominik Wujastyk}, \TA{Sertaç Ö. Yıldız}, \TA{Maksim Zholudev}, \TA{Yan Zhou}, and \TA{Stefan Zlatinov}.
% Their respective contributions can be identified from the contributor statistics on
% \href{https://github.com/reutenauer/polyglossia/graphs/contributors}{GitHub}.
%
@@ -1986,6 +2555,51 @@ to track the issues and follow progress.
% \end{macrocode}
% \iffalse
%</gloss-acadien.ldf>
+%<*gloss-aeb.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-aeb.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-aeb.ldf}[polyglossia: module for aeb (arabic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{arabic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-aeb.ldf>
+%<*gloss-af.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-af.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-af.ldf}[polyglossia: module for af (afrikaans)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{afrikaans}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-af.ldf>
+%<*gloss-afb.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-afb.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-afb.ldf}[polyglossia: module for afb (arabic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{arabic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-afb.ldf>
%<*gloss-afrikaans.ldf>
% \fi
% \clearpage
@@ -1995,6 +2609,7 @@ to track the issues and follow progress.
\ProvidesFile{gloss-afrikaans.ldf}[polyglossia: module for afrikaans]
\PolyglossiaSetup{afrikaans}{
+ bcp47=af,
hyphennames={afrikaans,dutch},
hyphenmins={2,2},
langtag=AFK,
@@ -2002,8 +2617,14 @@ to track the issues and follow progress.
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{afrikaans}{af}
+
\define@boolkey{afrikaans}[afrikaans@]{babelshorthands}[true]{}
+% Register default options
+\xpg@initialize@gloss@options{afrikaans}{babelshorthands=false}
+
\ifsystem@babelshorthands
\setkeys{afrikaans}{babelshorthands=true}
\else
@@ -2089,6 +2710,7 @@ to track the issues and follow progress.
\ProvidesFile{gloss-albanian.ldf}[polyglossia: module for albanian]
\PolyglossiaSetup{albanian}{
+ bcp47=sq,
hyphennames={albanian},
langtag=SQI,
hyphenmins={2,2},
@@ -2096,6 +2718,9 @@ to track the issues and follow progress.
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{albanian}{sq}
+
\def\captionsalbanian{%
\def\refname{Referencat}%
\def\abstractname{Përmbledhja}%
@@ -2129,6 +2754,21 @@ to track the issues and follow progress.
% \end{macrocode}
% \iffalse
%</gloss-albanian.ldf>
+%<*gloss-am.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-am.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-am.ldf}[polyglossia: module for am (amharic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{amharic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-am.ldf>
%<*gloss-american.ldf>
% \fi
% \clearpage
@@ -2152,6 +2792,7 @@ to track the issues and follow progress.
% \begin{macrocode}
\ProvidesFile{gloss-amharic.ldf}[polyglossia: module for amharic]
\PolyglossiaSetup{amharic}{
+ bcp47=am,
script=Ethiopic,
scripttag=ethi,
langtag=AMH,
@@ -2161,6 +2802,9 @@ to track the issues and follow progress.
%TODO localalph=ethnum
}
+% BCP-47 compliant aliases
+\setlanguagealias*{amharic}{am}
+
\def\captionsamharic{%
\def\refname{የነሥ ጹሁፍ ምንጭ}%
\def\abstractname{አኅጽተሮ ጽሁፍ}%
@@ -2356,6 +3000,141 @@ to track the issues and follow progress.
% \end{macrocode}
% \iffalse
%</gloss-amharic.ldf>
+%<*gloss-apd.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-apd.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-apd.ldf}[polyglossia: module for apd (arabic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{arabic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-apd.ldf>
+%<*gloss-ar-IQ.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ar-IQ.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ar-IQ.ldf}[polyglossia: module for ar-IQ (arabic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{arabic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ar-IQ.ldf>
+%<*gloss-ar-JO.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ar-JO.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ar-JO.ldf}[polyglossia: module for ar-JO (arabic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{arabic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ar-JO.ldf>
+%<*gloss-ar-LB.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ar-LB.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ar-LB.ldf}[polyglossia: module for ar-LB (arabic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{arabic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ar-LB.ldf>
+%<*gloss-ar-MR.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ar-MR.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ar-MR.ldf}[polyglossia: module for ar-MR (arabic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{arabic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ar-MR.ldf>
+%<*gloss-ar-PS.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ar-PS.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ar-PS.ldf}[polyglossia: module for ar-PS (arabic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{arabic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ar-PS.ldf>
+%<*gloss-ar-SY.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ar-SY.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ar-SY.ldf}[polyglossia: module for ar-SY (arabic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{arabic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ar-SY.ldf>
+%<*gloss-ar-YE.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ar-YE.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ar-YE.ldf}[polyglossia: module for ar-YE (arabic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{arabic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ar-YE.ldf>
+%<*gloss-ar.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ar.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ar.ldf}[polyglossia: module for ar (arabic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{arabic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ar.ldf>
%<*gloss-arabic.ldf>
% \fi
% \clearpage
@@ -2374,6 +3153,7 @@ and may look very wrong.}
\RequirePackage{hijrical}
\PolyglossiaSetup{arabic}{
+ bcp47=ar,
script=Arabic,
direction=RL,
langtag=ARA,
@@ -2385,6 +3165,23 @@ and may look very wrong.}
%TODO localalph={abjad,abjad}
}
+% BCP-47 compliant aliases
+\setlanguagealias*{arabic}{ar}
+\setlanguagealias*[locale=mashriq]{arabic}{ar-IQ}
+\setlanguagealias*[locale=default]{arabic}{ar-YE}
+\setlanguagealias*[locale=mashriq]{arabic}{ar-LB}
+\setlanguagealias*[locale=mashriq]{arabic}{ar-JO}
+\setlanguagealias*[locale=default]{arabic}{afb}
+\setlanguagealias*[locale=mauritania]{arabic}{ar-MR}
+\setlanguagealias*[locale=default]{arabic}{arz}
+\setlanguagealias*[locale=morocco]{arabic}{ary}
+\setlanguagealias*[locale=algeria]{arabic}{arq}
+\setlanguagealias*[locale=tunisia]{arabic}{aeb}
+\setlanguagealias*[locale=mashriq]{arabic}{ar-SY}
+\setlanguagealias*[locale=libya]{arabic}{ayl}
+\setlanguagealias*[locale=default]{arabic}{apd}
+\setlanguagealias*[locale=mashriq]{arabic}{ar-PS}
+
\newif\ifeastern@numerals
\def\tmp@mashriq{mashriq}
\def\tmp@maghrib{maghrib}
@@ -2411,9 +3208,11 @@ and may look very wrong.}
\def\@tmpa{#1}%
\ifx\@tmpa\tmp@morocco%
\eastern@numeralsfalse%
+ \SetLanguageKeys{arabic}{bcp47=ary}%
\else
\ifx\@tmpa\tmp@algeria%
\eastern@numeralsfalse%
+ \SetLanguageKeys{arabic}{bcp47=arq}%
\fi%
\fi%
\gdef\@@arabic@month{\@arabic@month{#1}}}
@@ -2433,8 +3232,10 @@ and may look very wrong.}
\define@key{arabic}{hijricorrection}[0]{%
\gdef\@hijri@correction{#1}}%
-% This should set the defaults
-\setkeys{arabic}{locale,calendar,numerals,hijricorrection,abjadjimnotail=false}
+% Register default options
+\xpg@initialize@gloss@options{arabic}{locale=default,calendar=gregorian,numerals=mashriq,hijricorrection=0,abjadjimnotail=false}
+% Register alias options
+\xpg@set@alias@values{arabic}{calendar}{islamic}{hijri}
\def\arabicgregmonth@default#1{\ifcase#1%
% Egypt, Sudan, Yemen and Golf states
@@ -2596,6 +3397,7 @@ and may look very wrong.}
\ProvidesFile{gloss-armenian.ldf}[polyglossia: module for armenian]
\PolyglossiaSetup{armenian}{
+ bcp47=hy,
script=Armenian,
scripttag=armn,
langtag=HYE,
@@ -2605,6 +3407,9 @@ and may look very wrong.}
localnumeral=armeniannumerals
}
+% BCP-47 compliant aliases
+\setlanguagealias*{armenian}{hy}
+
\newif\if@eastern@armenian
\@eastern@armenianfalse
\define@choicekey*+{armenian}{variant}[\val\nr]{western,eastern}[western]{%
@@ -2624,6 +3429,9 @@ and may look very wrong.}
\ifstrequal{#1}{arabic}{\@armenian@numeralsfalse}{\@armenian@numeralstrue}%
}
+% Register default options
+\xpg@initialize@gloss@options{armenian}{numerals=armenian,variant=western}
+
% Taken from ArmTeX. Audit!
\def\captionsarmenian{%
\def\refname{Հղումներ}%
@@ -2765,6 +3573,66 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-armenian.ldf>
+%<*gloss-arq.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-arq.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-arq.ldf}[polyglossia: module for arq (arabic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{arabic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-arq.ldf>
+%<*gloss-ary.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ary.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ary.ldf}[polyglossia: module for ary (arabic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{arabic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ary.ldf>
+%<*gloss-arz.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-arz.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-arz.ldf}[polyglossia: module for arz (arabic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{arabic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-arz.ldf>
+%<*gloss-ast.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ast.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ast.ldf}[polyglossia: module for ast (asturian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{asturian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ast.ldf>
%<*gloss-asturian.ldf>
% \fi
% \clearpage
@@ -2776,6 +3644,7 @@ and may look very wrong.}
%
\ProvidesFile{gloss-asturian.ldf}[polyglossia: module for asturian]
\PolyglossiaSetup{asturian}{
+ bcp47=ast,
hyphennames={asturian,catalan},
hyphenmins={2,2},
langtag=AST,
@@ -2784,6 +3653,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{asturian}{ast}
+
\def\captionsasturian{%
\def\prefacename{Entamu}%
\def\refname{Referencies}%
@@ -2838,7 +3710,7 @@ and may look very wrong.}
%
% \subsection{gloss-austrian.ldf}
% \begin{macrocode}
-\ProvidesFile{gloss-acadien.ldf}[polyglossia: module for austrian german (old spelling)]
+\ProvidesFile{gloss-austrian.ldf}[polyglossia: module for austrian german (old spelling)]
% We provide this as a babel alias
@@ -2847,17 +3719,32 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-austrian.ldf>
+%<*gloss-ayl.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ayl.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ayl.ldf}[polyglossia: module for ayl (arabic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{arabic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ayl.ldf>
%<*gloss-bahasa.ldf>
% \fi
% \clearpage
%
% \subsection{gloss-bahasa.ldf}
% \begin{macrocode}
-\ProvidesFile{gloss-kurmanji.ldf}[polyglossia: module for kurmanji kurdish]
+\ProvidesFile{gloss-bahasa.ldf}[polyglossia: module for bahasa indonesia]
% We provide this as a babel alias
-\xpg@load@master@language{kurdish}
+\xpg@load@master@language{malay}
% \end{macrocode}
% \iffalse
@@ -2902,6 +3789,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-basque.ldf}[polyglossia: module for basque]
\PolyglossiaSetup{basque}{
+ bcp47=eu,
hyphennames={basque},
hyphenmins={2,2},
langtag=EUQ,
@@ -2909,6 +3797,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{basque}{eu}
+
\def\captionsbasque{%
\def\refname{Erreferentziak}%
\def\abstractname{Laburpena}%
@@ -2943,6 +3834,36 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-basque.ldf>
+%<*gloss-be-tarask.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-be-tarask.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-be-tarask.ldf}[polyglossia: module for be-tarask (belarusian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{belarusian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-be-tarask.ldf>
+%<*gloss-be.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-be.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-be.ldf}[polyglossia: module for be (belarusian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{belarusian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-be.ldf>
%<*gloss-belarusian.ldf>
% \fi
% \clearpage
@@ -2954,6 +3875,7 @@ and may look very wrong.}
\RequirePackage{xpg-cyrillicnumbers}
\PolyglossiaSetup{belarusian}{
+ bcp47=be,
script=Cyrillic,
scripttag=cyrl,
langtag=BEL,
@@ -2965,30 +3887,56 @@ and may look very wrong.}
Localnumeral=Belarusiannumerals
}
+% BCP-47 compliant aliases
+\setlanguagealias*[spelling=classic]{belarusian}{be-tarask}
+\setlanguagealias*{belarusian}{be}
+
\def\belarusian@spelling{modern}
\define@choicekey*+{belarusian}{spelling}[\val\nr]{modern,classic,tarask}[modern]{%
\ifcase\nr\relax
% modern:
- \def\belarusian@spelling{modern}
+ \def\belarusian@spelling{modern}%
+ \SetLanguageKeys{belarusian}{bcp47=be}%
\or
% classic:
- \def\belarusian@spelling{tarask}
+ \def\belarusian@spelling{tarask}%
+ \SetLanguageKeys{belarusian}{bcp47=be-tarask}%
\or
% tarask:
- \def\belarusian@spelling{tarask}
+ \def\belarusian@spelling{tarask}%
+ \SetLanguageKeys{belarusian}{bcp47=be-tarask}%
\fi
}{\xpg@warning{Unknown Belarusian spelling `#1'}}
\newif\ifcyrillic@numerals
-\define@key{belarusian}{numerals}[arabic]{%
- \ifstrequal{#1}{cyrillic}%
- {\cyrillic@numeralstrue}%
- {\cyrillic@numeralsfalse}%
-}
+\newif\ifcyrillic@asbuk@numerals
+\define@choicekey*+{belarusian}{numerals}[\val\nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
+ \ifcase\nr\relax
+ % arabic:
+ \cyrillic@numeralsfalse%
+ \cyrillic@asbuk@numeralsfalse%
+ \or
+ % cyrillic:
+ \cyrillic@numeralstrue%
+ \cyrillic@asbuk@numeralsfalse%
+ \or
+ % cyrillic-trad:
+ \cyrillic@numeralstrue%
+ \cyrillic@asbuk@numeralsfalse%
+ \or
+ % cyrillic-alph:
+ \cyrillic@numeralstrue%
+ \cyrillic@asbuk@numeralstrue%
+ \fi
+ \xpg@info{Option: Belarusian, numerals=\val}%
+}{\xpg@warning{Unknown Belarusian numerals value `#1'}}
-\define@boolkey{belarusian}[belarusian@]{babelshorthands}[false]{}
+\define@boolkey{belarusian}[belarusian@]{babelshorthands}[true]{}
-\setkeys{belarusian}{numerals}
+% Register default options
+\xpg@initialize@gloss@options{belarusian}{babelshorthands=false,numerals=arabic,spelling=modern}
+% Register alias options
+\xpg@set@alias@values{belarusian}{spelling}{classic}{tarask}
\ifsystem@babelshorthands
\setkeys{belarusian}{babelshorthands=true}
@@ -3153,7 +4101,11 @@ and may look very wrong.}
\def\belarusiannumber#1{%
\ifcyrillic@numerals
- \cyr@alph{#1}%
+ \ifcyrillic@asbuk@numerals
+ \belarusian@asbuk@alph{#1}%
+ \else
+ \cyr@alph{#1}%
+ \fi
\else
\number#1%
\fi%
@@ -3161,7 +4113,11 @@ and may look very wrong.}
\def\Belarusiannumber#1{%
\ifcyrillic@numerals
- \cyr@Alph{#1}%
+ \ifcyrillic@asbuk@numerals
+ \belarusian@asbuk@Alph{#1}%
+ \else
+ \cyr@Alph{#1}%
+ \fi
\else
\number#1%
\fi%
@@ -3170,24 +4126,30 @@ and may look very wrong.}
\let\belarusiannumeral=\belarusiannumber
\let\Belarusiannumeral=\Belarusiannumber
-\def\Asbuk#1{\expandafter\cyr@Alph\csname c@#1\endcsname}
+\def\Asbuk#1{\expandafter\belarusian@asbuk@Alph\csname c@#1\endcsname}
+\def\asbuk#1{\expandafter\belarusian@asbuk@alph\csname c@#1\endcsname}
-\def\asbuk#1{\expandafter\cyr@alph\csname c@#1\endcsname}
+\def\AsbukTrad#1{\expandafter\cyr@Alph\csname c@#1\endcsname}
+\def\asbukTrad#1{\expandafter\cyr@alph\csname c@#1\endcsname}
-% This is a poor man's cyrillic alphanumeric. It just uses the alphabet and
-% thus ends at 30. We now use proper cyrillic numbering.
-%\def\belarusian@Alph#1{\ifcase#1\or
-% А\or Б\or В\or Г\or Д\or Е\or Ж\or
-% З\or И\or К\or Л\or М\or Н\or О\or
-% П\or Р\or С\or Т\or У\or Ф\or Х\or
-% Ц\or Ч\or Ш\or Щ\or Э\or Ю\or Я\else\xpg@ill@value{#1}{belarusian@Alph}\fi}
+% This is a poor man's cyrillic alphanumeric. It just uses the alphabet and
+% thus ends at 30.
+\def\belarusian@asbuk@Alph#1{\ifcase#1\or
+ А\or Б\or В\or Г\or Д\or Е\or Ж\or
+ З\or И\or К\or Л\or М\or Н\or О\or
+ П\or Р\or С\or Т\or У\or Ф\or Х\or
+ Ц\or Ч\or Ш\or Щ\or Э\or Ю\or Я%
+ \else\xpg@ill@value{#1}{belarusian@asbuk@Alph}\fi%
+}
-%\def\belarusian@alph#1{\ifcase#1\or
-% а\or б\or в\or г\or д\or е\or ж\or
-% з\or и\or к\or л\or м\or н\or о\or
-% п\or р\or с\or т\or у\or ф\or х\or
-% ц\or ч\or ш\or щ\or э\or ю\or я\else\xpg@ill@value{#1}{belarusian@alph}\fi}
+\def\belarusian@asbuk@alph#1{\ifcase#1\or
+ а\or б\or в\or г\or д\or е\or ж\or
+ з\or и\or к\or л\or м\or н\or о\or
+ п\or р\or с\or т\or у\or ф\or х\or
+ ц\or ч\or ш\or щ\or э\or ю\or я%
+ \else\xpg@ill@value{#1}{belarusian@asbuk@alph}\fi%
+}
\def\belarusian@numbers{%
\let\latin@alph\@alph
@@ -3232,16 +4194,19 @@ and may look very wrong.}
% TODO implement Bengali calendar
\ProvidesFile{gloss-bengali.ldf}[polyglossia: module for bengali]
+
\ifluatex
\xpg@warning{Bengali is not supported with LuaTeX.\MessageBreak
-I will proceed with the compilation, but\MessageBreak
-the output is not guaranteed to be correct\MessageBreak
-and may look very wrong.}
+ I will proceed with the compilation, but\MessageBreak
+ the output is not guaranteed to be correct\MessageBreak
+ and may look very wrong.}
\fi
+
\RequirePackage{devanagaridigits}
\RequirePackage{bengalidigits}
\PolyglossiaSetup{bengali}{
+ bcp47=bn,
script=Bengali,
scripttag=beng,
langtag=BEN,
@@ -3252,55 +4217,35 @@ and may look very wrong.}
%TODO nouppercase=true,
}
-\def\tmp@western{Western}
+% BCP-47 compliant aliases
+\setlanguagealias*{bengali}{bn}
+
\newif\ifbengali@devanagari@numerals
-\bengali@devanagari@numeralstrue
-\def\tmp@bengali{Bengali}
\newif\ifbengali@bengali@numerals
-\bengali@bengali@numeralsfalse % Implied, but you never know
-
-
-\define@key{bengali}{numerals}[Devanagari]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@western
- \bengali@devanagari@numeralsfalse
- \else\ifx\@tmpa\tmp@bengali
- \bengali@devanagari@numeralsfalse
- \bengali@bengali@numeralstrue\fi
- \fi}
+\define@choicekey*+{bengali}{numerals}[\val\nr]{Devanagari,Bengali,Western}[Devanagari]{%
+ \ifcase\nr\relax
+ % Devanagari:
+ \bengali@bengali@numeralsfalse%
+ \bengali@devanagari@numeralstrue%
+ \or
+ % Bengali:
+ \bengali@bengali@numeralstrue%
+ \bengali@devanagari@numeralsfalse%
+ \or
+ % Western:
+ \bengali@bengali@numeralsfalse%
+ \bengali@devanagari@numeralsfalse%
+ \fi
+ \xpg@info{Option: Bengali, numerals=\val}%
+}{\xpg@warning{Unknown Bengali numeral `#1'}}
\def\extras@bengali{}
\def\noextras@bengali{}
-\define@boolkey{bengali}[bengali@]{changecounternumbering}{
- \def\@tmpa{#1}
- \def\@tmptrue{true}
- \ifx\@tmpa\@tmptrue
- \def\extras@bengali{%
- % FIXME Tied to the article class! And horrible coding style
- \let\savethepage\thepage
- \let\savethesection\thesection
- \let\savethesubsection\thesubsection
- \let\savethesubsubsection\thesubsubsection
- \let\savetheparagraph\theparagraph
- \let\savethesubparagraph\thesubparagraph
- \def\thepage{\bengalinumeral{page}}
- \def\thesection{\bengalinumeral{section}}
- \def\thesubsection{\bengalinumeral{subsection}}
- \def\thesubsubsection{\bengalinumeral{subsubsection}}
- \def\theparagraph{\bengalinumeral{paragraph}}
- \def\thesubparagraph{\bengalinumeral{subparagraph}}
- }
- \def\noextras@bengali{%
- \let\thepage\savethepage
- \let\thesection\savethesection
- \let\thesubsection\savethesubsection
- \let\thesubsubsection\savethesubsubsection
- \let\theparagraph\savetheparagraph
- \let\thesubparagraph\savethesubparagraph
- }
- \fi
-}
+\define@boolkey{bengali}[bengali@]{changecounternumbering}[true]{}
+
+% Register default options
+\xpg@initialize@gloss@options{bengali}{changecounternumbering=false,numerals=Devanagari}
\def\captionsbengali{%
\def\refname{তথ্যসূত্রসমূহ}%
@@ -3355,13 +4300,19 @@ and may look very wrong.}
\else % Assumed Western
\number#1%
\fi
- \fi}
+ \fi%
+}
-\def\bengalinumeral#1{\expandafter\bengalinumber\expandafter{\the##1}}% Takes counter
+% Backwards compatibility. This command was never documented, but
+% some people might use it nevertheless (see #381).
+% This takes a counter.
+\newcommand\bengalinumeral[1]{\localnumeral*[lang=bengali]{#1}}
\def\bengali@globalnumbers{%
- \let\@arabic\bengalinumber%
- \renewcommand\thefootnote{\localnumeral*{footnote}}%
+ \ifbengali@changecounternumbering
+ \let\@arabic\bengalinumber%
+ \renewcommand\thefootnote{\localnumeral*{footnote}}%
+ \fi
}
% Store original definition
@@ -3377,6 +4328,51 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-bengali.ldf>
+%<*gloss-bg.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-bg.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-bg.ldf}[polyglossia: module for bg (bulgarian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{bulgarian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-bg.ldf>
+%<*gloss-bn.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-bn.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-bn.ldf}[polyglossia: module for bn (bengali)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{bengali}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-bn.ldf>
+%<*gloss-bo.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-bo.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-bo.ldf}[polyglossia: module for bo (tibetan)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{tibetan}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-bo.ldf>
%<*gloss-bosnian.ldf>
% \fi
% \clearpage
@@ -3386,6 +4382,7 @@ and may look very wrong.}
\ProvidesFile{gloss-bosnian.ldf}[polyglossia: module for bosnian]
\PolyglossiaSetup{bosnian}{
+ bcp47=bs,
langtag=BOS,
hyphennames={bosnian,croatian},
hyphenmins={2,2}, % adapted from gloss-croatian
@@ -3394,6 +4391,9 @@ and may look very wrong.}
fontsetup=true
}
+% BCP-47 compliant aliases
+\setlanguagealias*{bosnian}{bs}
+
% TODO: Add script=Cyrillic
% from babel-bosnian
@@ -3431,6 +4431,21 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-bosnian.ldf>
+%<*gloss-br.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-br.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-br.ldf}[polyglossia: module for br (breton)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{breton}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-br.ldf>
%<*gloss-brazil.ldf>
% \fi
% \clearpage
@@ -3456,6 +4471,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-breton.ldf}[polyglossia: module for breton]
\PolyglossiaSetup{breton}{
+ bcp47=br,
hyphennames={breton},
hyphenmins={2,2},
langtag=BRE,
@@ -3464,6 +4480,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{breton}{br}
+
\ifluatex
% TODO
\else
@@ -3553,7 +4572,7 @@ and may look very wrong.}
%
% \subsection{gloss-british.ldf}
% \begin{macrocode}
-\ProvidesFile{gloss-acadien.ldf}[polyglossia: module for british english]
+\ProvidesFile{gloss-british.ldf}[polyglossia: module for british english]
% We provide this as a babel alias
@@ -3562,6 +4581,21 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-british.ldf>
+%<*gloss-bs.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-bs.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-bs.ldf}[polyglossia: module for bs (bosnian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{bosnian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-bs.ldf>
%<*gloss-bulgarian.ldf>
% \fi
% \clearpage
@@ -3570,6 +4604,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-bulgarian.ldf}[polyglossia: module for bulgarian]
\PolyglossiaSetup{bulgarian}{
+ bcp47=bg,
script=Cyrillic,
scripttag=cyrl,
langtag=BGR,
@@ -3580,6 +4615,9 @@ and may look very wrong.}
%TODO localalph=bulgarian@alph
}
+% BCP-47 compliant aliases
+\setlanguagealias*{bulgarian}{bg}
+
\def\bulgarian@Alph#1{%
\ifcase#1\or
А\or Б\or В\or Г\or Д\or Е\or Ж\or
@@ -3654,6 +4692,21 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-bulgarian.ldf>
+%<*gloss-ca.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ca.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ca.ldf}[polyglossia: module for ca (catalan)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{catalan}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ca.ldf>
%<*gloss-canadian.ldf>
% \fi
% \clearpage
@@ -3675,7 +4728,7 @@ and may look very wrong.}
%
% \subsection{gloss-canadien.ldf}
% \begin{macrocode}
-\ProvidesFile{gloss-acadien.ldf}[polyglossia: module for canadian french]
+\ProvidesFile{gloss-canadien.ldf}[polyglossia: module for canadian french]
% We provide this as a babel alias
@@ -3692,6 +4745,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-catalan.ldf}[polyglossia: module for catalan]
\PolyglossiaSetup{catalan}{
+ bcp47=ca,
hyphennames={catalan},
hyphenmins={2,2},
langtag=CAT,
@@ -3700,6 +4754,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{catalan}{ca}
+
\define@boolkey{catalan}[catalan@]{babelshorthands}[true]{}
\ifsystem@babelshorthands
\setkeys{catalan}{babelshorthands=true}
@@ -3707,6 +4764,9 @@ and may look very wrong.}
\setkeys{catalan}{babelshorthands=false}
\fi
+% Register default options
+\xpg@initialize@gloss@options{catalan}{babelshorthands=false}
+
\ifcsundef{initiate@active@char}{%
\input{babelsh.def}%
\initiate@active@char{"}%
@@ -3715,33 +4775,21 @@ and may look very wrong.}
%%% adapted from Babel's catalan.ldf
\newdimen\leftllkern \newdimen\rightllkern \newdimen\raiselldim
+
% we check if char · exists, and use it instead of raised dot:
\def\xpg@raiseddot{%
- \ifluatex %
- \expandafter\ifnum\directlua{polyglossia.check_char(183)} > 0\hbox{\char"00B7}%
- \else\raise\raiselldim\hbox{.}%
- \fi %
- \else %
- \ifnum\XeTeXcharglyph"00B7 > 0\hbox{\char"00B7}% why a hbox here?
- \else\raise\raiselldim\hbox{.}%
- \fi %
- \fi %
- }
+ \charifavailable{00B7}{\raise\raiselldim\hbox{.}}%
+}
+
\def\lgem{%
\ifmmode
\csname normal@char\string"\endcsname l%
\else
\leftllkern=0pt\rightllkern=0pt\raiselldim=0pt%
\setbox0\hbox{l}\setbox1\hbox{l\/}%
- \ifluatex %
- \expandafter\ifnum\directlua{polyglossia.check_char(183)} > 0\setbox2\hbox{\char"00B7}%
- \else\setbox2\hbox{.}%
- \fi %
- \else %
- \ifnum\XeTeXcharglyph"00B7 > 0\setbox2\hbox{\char"00B7}%
- \else\setbox2\hbox{.}%
- \fi %
- \fi %
+ \xpg@if@char@available{00B7}%
+ {\setbox2\hbox{\char"00B7}}%
+ {\setbox2\hbox{.}}%
\advance\raiselldim by \the\fontdimen5\the\font
\advance\raiselldim by -\ht2%
\leftllkern=-.25\wd0%
@@ -3755,21 +4803,16 @@ and may look very wrong.}
\kern\rightllkern\hbox{l}}\allowhyphens
\fi
}
+
\def\Lgem{%
\ifmmode
\csname normal@char\string"\endcsname L%
\else
\leftllkern=0pt\rightllkern=0pt\raiselldim=0pt%
\setbox0\hbox{L}\setbox1\hbox{L\/}%
- \ifluatex %
- \expandafter\ifnum\directlua{polyglossia.check_char(183)} > 0\setbox2\hbox{\char"00B7}%
- \else\setbox2\hbox{.}%
- \fi %
- \else %
- \ifnum\XeTeXcharglyph"00B7 > 0\setbox2\hbox{\char"00B7}%
- \else\setbox2\hbox{.}%
- \fi %
- \fi %
+ \xpg@if@char@available{00B7}%
+ {\setbox2\hbox{\char"00B7}}%
+ {\setbox2\hbox{.}}%
\advance\raiselldim by .5\ht0%
\advance\raiselldim by -.5\ht2%
\leftllkern=-.125\wd0%
@@ -3784,6 +4827,7 @@ and may look very wrong.}
\kern\rightllkern\hbox{L}}\allowhyphens
\fi
}
+
\AtBeginDocument{%
\let\lslash\l
\let\Lslash\L
@@ -3848,6 +4892,66 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-catalan.ldf>
+%<*gloss-ckb-Arab.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ckb-Arab.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ckb-Arab.ldf}[polyglossia: module for ckb-Arab (kurdish)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{kurdish}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ckb-Arab.ldf>
+%<*gloss-ckb-Latn.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ckb-Latn.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ckb-Latn.ldf}[polyglossia: module for ckb-Latn (kurdish)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{kurdish}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ckb-Latn.ldf>
+%<*gloss-ckb.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ckb.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ckb.ldf}[polyglossia: module for ckb (kurdish)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{kurdish}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ckb.ldf>
+%<*gloss-cop.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-cop.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-cop.ldf}[polyglossia: module for cop (coptic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{coptic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-cop.ldf>
%<*gloss-coptic.ldf>
% \fi
% \clearpage
@@ -3856,6 +4960,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-coptic.ldf}[polyglossia: module for coptic]
\PolyglossiaSetup{coptic}{
+ bcp47=cop,
script=Coptic,
scripttag=copt,
langtag=COP,
@@ -3864,6 +4969,9 @@ and may look very wrong.}
fontsetup=true
}
+% BCP-47 compliant aliases
+\setlanguagealias*{coptic}{cop}
+
%\def\captionscoptic{%
% \def\refname{<++>}%
% \def\abstractname{<++>}%
@@ -3903,6 +5011,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-croatian.ldf}[polyglossia: module for croatian]
\PolyglossiaSetup{croatian}{
+ bcp47=hr,
langtag=HRV,
hyphennames={croatian},
hyphenmins={2,2}, % aligned with https://ctan.org/pkg/hrhyph patterns and http://lebesgue.math.hr/~nenad/Diplomski/Maja_Ribaric_2011.pdf
@@ -3911,12 +5020,134 @@ and may look very wrong.}
fontsetup=true
}
+% BCP-47 compliant aliases
+\setlanguagealias*{croatian}{hr}
+
+\define@boolkey{croatian}[croatian@]{babelshorthands}[true]{}
+
+\define@boolkey{croatian}[croatian@]{disableligatures}[true]{}
+
+% Register default options
+\xpg@initialize@gloss@options{croatian}{babelshorthands=false,disableligatures=false}
+
+\ifsystem@babelshorthands
+ \setkeys{croatian}{babelshorthands=true}
+\else
+ \setkeys{croatian}{babelshorthands=false}
+\fi
+
+\ifcsundef{initiate@active@char}{%
+ \input{babelsh.def}%
+ \initiate@active@char{"}%
+ \shorthandoff{"}%
+}{}
+
+\def\croatian@shorthands{%
+ \bbl@activate{"}%
+ \def\language@group{croatian}%
+ \declare@shorthand{croatian}{"=}{\penalty\@M-\hskip\z@skip}%
+ \declare@shorthand{croatian}{""}{\hskip\z@skip}%
+ \declare@shorthand{croatian}{"~}{\textormath{\leavevmode\hbox{-}}{-}}%
+ \declare@shorthand{croatian}{"-}{\nobreak\-\bbl@allowhyphens}%
+ \declare@shorthand{croatian}{"|}{%
+ \textormath{\penalty\@M\discretionary{-}{}{\kern.03em}%
+ \bbl@allowhyphens}{}%
+ }%
+ \declare@shorthand{croatian}{"/}{\textormath
+ {\bbl@allowhyphens\discretionary{/}{}{/}\bbl@allowhyphens}{}}%
+ \declare@shorthand{croatian}{"`}{„}%
+ \declare@shorthand{croatian}{"'}{”}%
+ \declare@shorthand{croatian}{"<}{«}%
+ \declare@shorthand{croatian}{">}{»}%
+ \declare@shorthand{croatian}{"D}{\xpg@hr@lig{D}}%
+ \declare@shorthand{croatian}{"d}{\xpg@hr@lig{d}}%
+ \declare@shorthand{croatian}{"L}{\xpg@hr@lig{L}}%
+ \declare@shorthand{croatian}{"l}{\xpg@hr@lig{l}}%
+ \declare@shorthand{croatian}{"N}{\xpg@hr@lig{N}}%
+ \declare@shorthand{croatian}{"n}{\xpg@hr@lig{n}}%
+}
+
+\def\nocroatian@shorthands{%
+ \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
+}
+
+\newcommand*\hr@charifavailable[2]{%
+ \ifcroatian@disableligatures
+ \bgroup#2\egroup%
+ \else
+ \charifavailable{#1}{#2}%
+ \fi%
+}
+
+% Provide croatian ligatures if available in current font
+\def\xpg@hr@lig#1#2{%
+ \bgroup%
+ % 1. DŽ, Dž and dž
+ \ifx#1D%
+ \ifx#2Z\relax%
+ \hr@charifavailable{01C4}{DŽ}%
+ \else%
+ \ifx#2z\relax
+ \hr@charifavailable{01C5}{Dž}%
+ \else
+ D#2%
+ \fi%
+ \fi%
+ \fi%
+ \ifx#1d%
+ \ifx#2z\relax
+ \hr@charifavailable{01C6}{dž}%
+ \else
+ d#2%
+ \fi%
+ \fi%
+ % 2. LJ, Lj and lj
+ \ifx#1L%
+ \ifx#2J\relax%
+ \hr@charifavailable{01C7}{LJ}%
+ \else%
+ \ifx#2j\relax
+ \hr@charifavailable{01C8}{Lj}%
+ \else
+ L#2%
+ \fi%
+ \fi%
+ \fi%
+ \ifx#1l%
+ \ifx#2j\relax
+ \hr@charifavailable{01C9}{lj}%
+ \else
+ l#2%
+ \fi%
+ \fi%
+ % 2. NJ, Nj and nj
+ \ifx#1N%
+ \ifx#2J\relax%
+ \hr@charifavailable{01CA}{NJ}%
+ \else%
+ \ifx#2j\relax
+ \hr@charifavailable{01CB}{Nj}%
+ \else
+ N#2%
+ \fi%
+ \fi%
+ \fi%
+ \ifx#1n%
+ \ifx#2j\relax
+ \hr@charifavailable{01CC}{nj}%
+ \else
+ n#2%
+ \fi%
+ \fi%
+ \egroup%
+}
+
\def\captionscroatian{%
\def\prefacename{Predgovor}%
\def\refname{Literatura}%
\def\abstractname{Sažetak}%
\def\bibname{Bibliografija}%
- \def\chaptername{Poglavlje}%
+ \def\chaptername{Poglav\hr@charifavailable{01C9}{lj}e}%
\def\appendixname{Dodatak}%
\def\contentsname{Sadržaj}%
\def\listfigurename{Popis slika}%
@@ -3934,15 +5165,59 @@ and may look very wrong.}
\def\proofname{Dokaz}%
\def\glossaryname{Pojmovnik}%
}
+
\def\datecroatian{%
\def\today{\number\day.~\ifcase\month\or
siječnja\or veljače\or ožujka\or travnja\or svibnja\or
lipnja\or srpnja\or kolovoza\or rujna\or listopada\or studenoga\or
- prosinca\fi \space \number\year.}}
+ prosinca\fi \space \number\year.}%
+}
+
+\def\noextras@croatian{%
+ \nocroatian@shorthands%
+}
+
+\def\blockextras@croatian{%
+ \ifcroatian@babelshorthands\croatian@shorthands\fi%
+}
+
+\def\inlineextras@croatian{%
+ \ifcroatian@babelshorthands\croatian@shorthands\fi%
+}
% \end{macrocode}
% \iffalse
%</gloss-croatian.ldf>
+%<*gloss-cy.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-cy.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-cy.ldf}[polyglossia: module for cy (welsh)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{welsh}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-cy.ldf>
+%<*gloss-cz.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-cz.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-cz.ldf}[polyglossia: module for cz (czech)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{czech}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-cz.ldf>
%<*gloss-czech.ldf>
% \fi
% \clearpage
@@ -3952,6 +5227,7 @@ and may look very wrong.}
\ProvidesFile{gloss-czech.ldf}[polyglossia: module for czech]
\PolyglossiaSetup{czech}{
+ bcp47=cz,
hyphennames={czech},
hyphenmins={2,2},
langtag=CSY,
@@ -3959,6 +5235,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{czech}{cz}
+
\ifluatex
\RequirePackage{luavlna}
\fi
@@ -3969,7 +5248,8 @@ and may look very wrong.}
\define@boolkey{czech}[czech@]{vlna}[true]{}
-\setkeys{czech}{splithyphens,vlna}
+% Register default options
+\xpg@initialize@gloss@options{czech}{babelshorthands=false,splithyphens=true,vlna=true}
\ifsystem@babelshorthands
\setkeys{czech}{babelshorthands=true}
@@ -3984,8 +5264,12 @@ and may look very wrong.}
}{}
\def\cs@@splithyphen#1{%
- \kern\z@\discretionary{-}{\char\hyphenchar\the\font}{#1}%
- \nobreak\hskip\z@%
+ \ifnum\hyphenchar \font>0%
+ \kern\z@\discretionary{-}{\char\hyphenchar\the\font}{#1}%
+ \nobreak\hskip\z@%
+ \else%
+ #1%
+ \fi%
}
\def\cs@splithyphen{%
@@ -4163,18 +5447,33 @@ and may look very wrong.}
\def\blockextras@czech{%
\ifczech@babelshorthands\czech@shorthands\fi%
\ifczech@vlna\czech@vlna\else\noczech@vlna\fi%
- \ifczech@splithyphens\czech@hyphens\else\noczech@hyhens\fi%
+ \ifczech@splithyphens\czech@hyphens\else\noczech@hyphens\fi%
}
\def\inlineextras@czech{%
\ifczech@babelshorthands\czech@shorthands\fi%
\ifczech@vlna\czech@vlna\else\noczech@vlna\fi%
- \ifczech@splithyphens\czech@hyphens\else\noczech@hyhens\fi%
+ \ifczech@splithyphens\czech@hyphens\else\noczech@hyphens\fi%
}
% \end{macrocode}
% \iffalse
%</gloss-czech.ldf>
+%<*gloss-da.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-da.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-da.ldf}[polyglossia: module for da (danish)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{danish}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-da.ldf>
%<*gloss-danish.ldf>
% \fi
% \clearpage
@@ -4183,6 +5482,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-danish.ldf}[polyglossia: module for danish]
\PolyglossiaSetup{danish}{
+ bcp47=da,
hyphennames={danish},
hyphenmins={2,3},
langtag=DAN,
@@ -4190,6 +5490,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{danish}{da}
+
\def\captionsdanish{%
\def\prefacename{Forord}%
\def\refname{Litteratur}%
@@ -4223,6 +5526,306 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-danish.ldf>
+%<*gloss-de-AT-1901.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-AT-1901.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-AT-1901.ldf}[polyglossia: module for de-AT-1901 (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-AT-1901.ldf>
+%<*gloss-de-AT-1996.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-AT-1996.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-AT-1996.ldf}[polyglossia: module for de-AT-1996 (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-AT-1996.ldf>
+%<*gloss-de-AT.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-AT.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-AT.ldf}[polyglossia: module for de-AT (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-AT.ldf>
+%<*gloss-de-CH-1901.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-CH-1901.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-CH-1901.ldf}[polyglossia: module for de-CH-1901 (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-CH-1901.ldf>
+%<*gloss-de-CH-1996.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-CH-1996.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-CH-1996.ldf}[polyglossia: module for de-CH-1996 (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-CH-1996.ldf>
+%<*gloss-de-CH.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-CH.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-CH.ldf}[polyglossia: module for de-CH (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-CH.ldf>
+%<*gloss-de-DE-1901.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-DE-1901.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-DE-1901.ldf}[polyglossia: module for de-DE-1901 (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-DE-1901.ldf>
+%<*gloss-de-DE-1996.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-DE-1996.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-DE-1996.ldf}[polyglossia: module for de-DE-1996 (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-DE-1996.ldf>
+%<*gloss-de-DE.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-DE.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-DE.ldf}[polyglossia: module for de-DE (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-DE.ldf>
+%<*gloss-de-Latf-AT-1901.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-Latf-AT-1901.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-AT-1901-Latf.ldf}[polyglossia: module for de-AT-1901-Latf (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-Latf-AT-1901.ldf>
+%<*gloss-de-Latf-AT-1996.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-Latf-AT-1996.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-AT-1996-Latf.ldf}[polyglossia: module for de-AT-1996-Latf (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-Latf-AT-1996.ldf>
+%<*gloss-de-Latf-AT.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-Latf-AT.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-AT-Latf.ldf}[polyglossia: module for de-AT-Latf (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-Latf-AT.ldf>
+%<*gloss-de-Latf-CH-1901.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-Latf-CH-1901.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-CH-1901-Latf.ldf}[polyglossia: module for de-CH-1901-Latf (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-Latf-CH-1901.ldf>
+%<*gloss-de-Latf-CH-1996.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-Latf-CH-1996.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-CH-1996-Latf.ldf}[polyglossia: module for de-CH-1996-Latf (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-Latf-CH-1996.ldf>
+%<*gloss-de-Latf-CH.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-Latf-CH.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-CH-Latf.ldf}[polyglossia: module for de-CH-Latf (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-Latf-CH.ldf>
+%<*gloss-de-Latf-DE-1901.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-Latf-DE-1901.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-DE-1901-Latf.ldf}[polyglossia: module for de-DE-1901-Latf (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-Latf-DE-1901.ldf>
+%<*gloss-de-Latf-DE-1996.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-Latf-DE-1996.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-DE-1996-Latf.ldf}[polyglossia: module for de-DE-1996-Latf (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-Latf-DE-1996.ldf>
+%<*gloss-de-Latf-DE.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-Latf-DE.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-DE-Latf.ldf}[polyglossia: module for de-DE-Latf (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-Latf-DE.ldf>
+%<*gloss-de-Latf.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de-Latf.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de-Latf.ldf}[polyglossia: module for de-Latf (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de-Latf.ldf>
+%<*gloss-de.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-de.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-de.ldf}[polyglossia: module for de (german)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{german}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-de.ldf>
%<*gloss-divehi.ldf>
% \fi
% \clearpage
@@ -4238,6 +5841,7 @@ and may look very wrong.}
\fi
\RequireBidi
\PolyglossiaSetup{divehi}{
+ bcp47=dv,
script=Thaana,
scripttag=thaa,
langtag=DIV,% TODO Support DHV as well?
@@ -4246,6 +5850,9 @@ and may look very wrong.}
fontsetup=true
}
+% BCP-47 compliant aliases
+\setlanguagealias*{divehi}{dv}
+
%\def\captionsdivehi{%
% \def\refname{<++>}%
% \def\abstractname{<++>}%
@@ -4287,6 +5894,21 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-divehi.ldf>
+%<*gloss-dsb.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-dsb.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-dsb.ldf}[polyglossia: module for dsb (sorbian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{sorbian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-dsb.ldf>
%<*gloss-dutch.ldf>
% \fi
% \clearpage
@@ -4295,6 +5917,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-dutch.ldf}[polyglossia: module for dutch]
\PolyglossiaSetup{dutch}{
+ bcp47=nl,
hyphennames={dutch},
hyphenmins={2,2},
langtag=NLD,
@@ -4302,8 +5925,14 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{dutch}{nl}
+
\define@boolkey{dutch}[dutch@]{babelshorthands}[true]{}
+% Register default options
+\xpg@initialize@gloss@options{dutch}{babelshorthands=false}
+
\ifsystem@babelshorthands
\setkeys{dutch}{babelshorthands=true}
\else
@@ -4381,6 +6010,156 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-dutch.ldf>
+%<*gloss-dv.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-dv.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-dv.ldf}[polyglossia: module for dv (divehi)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{divehi}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-dv.ldf>
+%<*gloss-el-monoton.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-el-monoton.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-el-monoton.ldf}[polyglossia: module for el-monoton (greek)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{greek}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-el-monoton.ldf>
+%<*gloss-el-polyton.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-el-polyton.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-el-polyton.ldf}[polyglossia: module for el-polyton (greek)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{greek}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-el-polyton.ldf>
+%<*gloss-el.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-el.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-el.ldf}[polyglossia: module for el (greek)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{greek}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-el.ldf>
+%<*gloss-en-AU.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-en-AU.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-en-AU.ldf}[polyglossia: module for en-AU (english)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{english}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-en-AU.ldf>
+%<*gloss-en-CA.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-en-CA.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-en-CA.ldf}[polyglossia: module for en-CA (english)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{english}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-en-CA.ldf>
+%<*gloss-en-GB.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-en-GB.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-en-GB.ldf}[polyglossia: module for en-GB (english)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{english}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-en-GB.ldf>
+%<*gloss-en-NZ.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-en-NZ.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-en-NZ.ldf}[polyglossia: module for en-NZ (english)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{english}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-en-NZ.ldf>
+%<*gloss-en-US.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-en-US.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-en-US.ldf}[polyglossia: module for en-US (english)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{english}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-en-US.ldf>
+%<*gloss-en.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-en.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-en.ldf}[polyglossia: module for en (english)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{english}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-en.ldf>
%<*gloss-english.ldf>
% \fi
% \clearpage
@@ -4390,12 +6169,21 @@ and may look very wrong.}
\ProvidesFile{gloss-english.ldf}[polyglossia: module for english]
\PolyglossiaSetup{english}{
+ bcp47=en-US,
hyphennames={english,american,usenglish,USenglish},
hyphenmins={2,3},
langtag=ENG,
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{english}{en}
+\setlanguagealias*[variant=australian]{english}{en-AU}
+\setlanguagealias*[variant=newzealand]{english}{en-NZ}
+\setlanguagealias*[variant=us]{english}{en-US}
+\setlanguagealias*[variant=british]{english}{en-GB}
+\setlanguagealias*[variant=canadian]{english}{en-CA}
+
% Babel aliases
\setlanguagealias[variant=us]{english}{american}
\setlanguagealias[variant=australian]{english}{australian}
@@ -4417,41 +6205,41 @@ and may look very wrong.}
% Option ordinalmonthday
\define@boolkey{english}[english@]{ordinalmonthday}[true]{}
-\define@choicekey*+{english}{variant}[\val\nr]{uk,british,us,american,usmax,australian,newzealand,canadian}{%
+\define@choicekey*+{english}{variant}[\val\nr]{uk,british,us,american,usmax,australian,newzealand,canadian}[us]{%
\ifcase\nr\relax
% uk:
\british@hyphentrue
\british@dateformattrue
\english@ordinalmonthdaytrue
- \SetLanguageKeys{english}{babelname=british}%
+ \SetLanguageKeys{english}{babelname=british,bcp47=en-GB}%
\xpg@info{Option: English, variant=british}%
\or
% british:
\british@hyphentrue
\british@dateformattrue
\english@ordinalmonthdaytrue
- \SetLanguageKeys{english}{babelname=british}%
+ \SetLanguageKeys{english}{babelname=british,bcp47=en-GB}%
\xpg@info{Option: english variant=british}%
\or
% us:
\british@hyphenfalse
\british@dateformatfalse
\english@ordinalmonthdayfalse
- \SetLanguageKeys{english}{babelname=american}%
+ \SetLanguageKeys{english}{babelname=american,bcp47=en-US}%
\xpg@info{Option: English, variant=american}%
\or
% american:
\british@hyphenfalse
\british@dateformatfalse
\english@ordinalmonthdayfalse
- \SetLanguageKeys{english}{babelname=american}%
+ \SetLanguageKeys{english}{babelname=american,bcp47=en-US}%
\xpg@info{Option: English, variant=american}%
\or
% usmax:
\british@hyphenfalse
\british@dateformatfalse
\english@ordinalmonthdayfalse
- \SetLanguageKeys{english}{babelname=american}%
+ \SetLanguageKeys{english}{babelname=american,bcp47=en-US}%
\xpg@info{Option: english variant=american (with additional patterns)}%
\xpg@ifdefined{usenglishmax}{}%
{\xpg@warning{No hyphenation patterns were loaded for "US English Max"\MessageBreak
@@ -4466,8 +6254,9 @@ and may look very wrong.}
\british@hyphentrue
\british@dateformattrue
\english@ordinalmonthdayfalse
- \SetLanguageKeys{english}{babelname=australian}%
+ \SetLanguageKeys{english}{babelname=australian,bcp47=en-AU}%
\xpg@info{Option: English, variant=australian}%
+ \adddialect\l@australian\l@english%
\or
% newzealand:
% These use the british hyphenation patterns
@@ -4475,16 +6264,18 @@ and may look very wrong.}
\british@hyphentrue
\british@dateformattrue
\english@ordinalmonthdayfalse
- \SetLanguageKeys{english}{babelname=newzealand}%
+ \SetLanguageKeys{english}{babelname=newzealand,bcp47=en-NZ}%
\xpg@info{Option: English, variant=newzealand}%
+ \adddialect\l@newzealand\l@english%
\or
% canadian:
% This is currently equivalent to usenglish (as in babel)
\british@hyphenfalse
\british@dateformatfalse
\english@ordinalmonthdayfalse
- \SetLanguageKeys{english}{babelname=canadian}%
+ \SetLanguageKeys{english}{babelname=canadian,bcp47=en-CA}%
\xpg@info{Option: English, variant=american}%
+ \adddialect\l@canadian\l@english%
\fi
\ifbritish@hyphen
\xpg@ifdefined{ukenglish}{}%
@@ -4496,6 +6287,12 @@ and may look very wrong.}
\fi
}{\xpg@warning{Unknown English variant `#1'}}
+% Register default options
+\xpg@initialize@gloss@options{english}{variant=us,ordinalmonthday=false}
+% Register alias options
+\xpg@set@alias@values{english}{variant}{us}{american}
+\xpg@set@alias@values{english}{variant}{uk}{british}
+
\ifxetex
% Check if \l@english is defined. If not, try to set it to some variety
% (specific order as in the csv list below), or null language if everything fails
@@ -4515,7 +6312,7 @@ and may look very wrong.}
\fi
\def\english@language{%
- \polyglossia@setup@language@patterns{\english@variant}
+ \polyglossia@setup@language@patterns{\english@variant}%
}%
\def\captionsenglish{%
@@ -4566,6 +6363,66 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-english.ldf>
+%<*gloss-eo.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-eo.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-eo.ldf}[polyglossia: module for eo (esperanto)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{esperanto}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-eo.ldf>
+%<*gloss-es-ES.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-es-ES.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-es-ES.ldf}[polyglossia: module for es-ES (spanish)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{spanish}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-es-ES.ldf>
+%<*gloss-es-MX.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-es-MX.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-es-MX.ldf}[polyglossia: module for es-MX (spanish)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{spanish}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-es-MX.ldf>
+%<*gloss-es.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-es.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-es.ldf}[polyglossia: module for es (spanish)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{spanish}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-es.ldf>
%<*gloss-esperanto.ldf>
% \fi
% \clearpage
@@ -4574,6 +6431,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-esperanto.ldf}[polyglossia: module for esperanto]
\PolyglossiaSetup{esperanto}{
+ bcp47=eo,
hyphennames={esperanto},
hyphenmins={2,2},
langtag=NTO,
@@ -4581,6 +6439,9 @@ and may look very wrong.}
%TODO localalph={esperanto@alph,esperanto@Alph}
}
+% BCP-47 compliant aliases
+\setlanguagealias*{esperanto}{eo}
+
\def\captionsesperanto{%
\def\refname{Citaĵoj}%
\def\abstractname{Resumo}%
@@ -4646,6 +6507,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-estonian.ldf}[polyglossia: module for estonian]
\PolyglossiaSetup{estonian}{
+ bcp47=et,
hyphennames={estonian},
hyphenmins={2,2},
langtag=ETI,
@@ -4653,6 +6515,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{estonian}{et}
+
\def\captionsestonian{%
\def\refname{Viited}%
\def\abstractname{Kokkuvõte}%
@@ -4686,6 +6551,51 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-estonian.ldf>
+%<*gloss-et.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-et.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-et.ldf}[polyglossia: module for et (estonian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{estonian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-et.ldf>
+%<*gloss-eu.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-eu.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-eu.ldf}[polyglossia: module for eu (basque)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{basque}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-eu.ldf>
+%<*gloss-fa.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-fa.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-fa.ldf}[polyglossia: module for fa (persian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{persian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-fa.ldf>
%<*gloss-farsi.ldf>
% \fi
% \clearpage
@@ -4702,6 +6612,21 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-farsi.ldf>
+%<*gloss-fi.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-fi.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-fi.ldf}[polyglossia: module for fi (finnish)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{finnish}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-fi.ldf>
%<*gloss-finnish.ldf>
% \fi
% \clearpage
@@ -4710,6 +6635,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-finnish.ldf}[polyglossia: module for finnish]
\PolyglossiaSetup{finnish}{
+ bcp47=fi,
hyphennames={finnish},
hyphenmins={2,2},
langtag=FIN,
@@ -4717,8 +6643,14 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{finnish}{fi}
+
\define@boolkey{finnish}[finnish@]{babelshorthands}[true]{}
+% Register default options
+\xpg@initialize@gloss@options{finnish}{babelshorthands=false}
+
\ifsystem@babelshorthands
\setkeys{finnish}{babelshorthands=true}
\else
@@ -4793,6 +6725,66 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-finnish.ldf>
+%<*gloss-fr-CA.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-fr-CA.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-fr-CA.ldf}[polyglossia: module for fr-CA (french)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{french}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-fr-CA.ldf>
+%<*gloss-fr-CH.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-fr-CH.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-fr-CH.ldf}[polyglossia: module for fr-CH (french)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{french}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-fr-CH.ldf>
+%<*gloss-fr-FR.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-fr-FR.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-fr-FR.ldf}[polyglossia: module for fr-FR (french)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{french}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-fr-FR.ldf>
+%<*gloss-fr.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-fr.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-fr.ldf}[polyglossia: module for fr (french)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{french}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-fr.ldf>
%<*gloss-french.ldf>
% \fi
% \clearpage
@@ -4802,6 +6794,7 @@ and may look very wrong.}
\ProvidesFile{gloss-french.ldf}[polyglossia: module for french]
\PolyglossiaSetup{french}{%
+ bcp47=fr-FR,
language=French,
script=Latin,
langtag=FRA,
@@ -4811,46 +6804,63 @@ and may look very wrong.}
hyphenmins={2,2},
fontsetup=true}
+% BCP-47 compliant aliases
+\setlanguagealias*{french}{fr}
+\setlanguagealias*[variant=french]{french}{fr-FR}
+\setlanguagealias*[variant=canadian]{french}{fr-CA}
+\setlanguagealias*[variant=swiss]{french}{fr-CH}
+
% Babel aliases
\setlanguagealias[variant=acadian]{french}{acadien}
\setlanguagealias[variant=canadian]{french}{canadien}
\def\french@variant{french}
-\define@choicekey*+{french}{variant}[\val\nr]{french,canadian,acadian}[french]{%
+\define@choicekey*+{french}{variant}[\val\nr]{french,canadian,acadian,swiss}[french]{%
\ifcase\nr\relax
% french:
\def\french@variant{french}%
+ \SetLanguageKeys{french}{babelname=french,bcp47=fr-FR}%
+ \french@thincolonspacefalse
\or
% canadian:
\def\french@variant{canadien}%
- \SetLanguageKeys{french}{babelname=canadien}%
+ \SetLanguageKeys{french}{babelname=canadien,bcp47=fr-CA}%
\xpg@ifdefined{canadien}{}%
{\xpg@warning{No hyphenation patterns were loaded for "French (Canada)"\MessageBreak
I will use the standard patterns for French instead}%
\adddialect\l@canadien\l@french\relax}%
+ \french@thincolonspacefalse
\or
% acadian:
\def\french@variant{acadian}%
- \SetLanguageKeys{french}{babelname=canadien}%
+ \SetLanguageKeys{french}{babelname=canadien,bcp47=fr-CA}%
\xpg@ifdefined{acadian}{}%
{\xpg@warning{No hyphenation patterns were loaded for "French (Canada)"\MessageBreak
I will use the standard patterns for French instead}%
\adddialect\l@acadian\l@french\relax}%
+ \french@thincolonspacefalse
+ \or
+ % swiss:
+ \def\french@variant{swissfrench}%
+ \SetLanguageKeys{french}{babelname=french,bcp47=fr-CH}%
+ \adddialect\l@swissfrench\l@french\relax%
+ \french@thincolonspacetrue
\fi
\xpg@info{Option: French, variant=\val}%
}{\xpg@warning{Unknown French variant `#1'}}
\def\french@language{%
- \polyglossia@setup@language@patterns{\french@variant}
+ \polyglossia@setup@language@patterns{\french@variant}%
}%
\ifluatex
\directlua{require('polyglossia-french')}%
\else
- \newXeTeXintercharclass\french@openbrackets % ( ] {
- \newXeTeXintercharclass\french@closebrackets % ( ] {
- \newXeTeXintercharclass\french@punctthin % ! ? ; et autres
+ \newXeTeXintercharclass\french@openbrackets % ( [ {
+ \newXeTeXintercharclass\french@closebrackets % ) ] }
+ \newXeTeXintercharclass\french@questionexclamation % ! ? et autres
+ \newXeTeXintercharclass\french@punctthin % ; (et :)
\newXeTeXintercharclass\french@punctthick % :
\newXeTeXintercharclass\french@punctguillstart % « ‹
\newXeTeXintercharclass\french@punctguillend % » ›
@@ -4863,9 +6873,9 @@ and may look very wrong.}
\define@boolkey{french}[french@]{frenchfootnote}[true]{%
\AfterPreamble{%
- \ifdefstring{\xpg@main@language}{french}{%
- \iffrench@frenchfootnote
- \ifx\@makefntext\undefined\else
+ \iffrench@frenchfootnote
+ \ifdefstring{\xpg@main@language}{french}{%
+ \ifx\@makefntext\undefined\else
\long\def\french@makefntext##1{%
\parindent1em \noindent\quad%
\ifx\@thefnmark\empty\else%
@@ -4873,10 +6883,10 @@ and may look very wrong.}
}
\let\@makefntext\french@makefntext
\fi
- \else
- \let\@makefntext\xpg@orig@makefntext
- \fi
- }{\xpg@warning{Option 'frenchfootnote' only supported if French is main language!}}%
+ }{\xpg@warning{Option 'frenchfootnote' only supported if French is main language!}}%
+ \else
+ \let\@makefntext\xpg@orig@makefntext
+ \fi
}%
}
@@ -4948,19 +6958,28 @@ and may look very wrong.}
\define@boolkey{french}[french@]{frenchitemlabels}[true]{%
\AfterPreamble{%
- \ifdefstring{\xpg@main@language}{french}{%
- \iffrench@frenchitemlabels
+ \iffrench@frenchitemlabels
+ \ifdefstring{\xpg@main@language}{french}{%
\renewcommand{\labelitemi}{\french@itemi}%
\renewcommand{\labelitemii}{\french@itemii}%
\renewcommand{\labelitemiii}{\french@itemiii}%
\renewcommand{\labelitemiv}{\french@itemiv}%
- \else
- \let\@makefntext\xpg@orig@makefntext
- \fi
- }{\xpg@warning{Option 'frenchitemlabels' only supported if French is main language!}}%
+ }{\xpg@warning{Option 'frenchitemlabels' only supported if French is main language!}}%
+ \else
+ \let\@makefntext\xpg@orig@makefntext
+ \fi
}%
}
+% Register default options
+\xpg@initialize@gloss@options{french}{variant=french,autospacing=true,thincolonspace=false,
+ autospaceguillemets=true,autospacetypewriter=false,
+ frenchfootnote=false,frenchitemlabels=false,
+ itemlabels=\textemdash,itemlabeli=\textemdash,itemlabelii=\textemdash,
+ itemlabeliii=\textemdash,itemlabeliv=\textemdash}
+% Register alias options
+\xpg@set@alias@values{french}{variant}{canadian}{acadian}
+
\def\french@fontsetup{%
\unless\iffrench@autospacetypewriter
@@ -4993,12 +7012,13 @@ and may look very wrong.}
\fi
\else
\XeTeXinterchartokenstate=1
- \XeTeXcharclass `\! \french@punctthin
- \XeTeXcharclass `\? \french@punctthin
- \XeTeXcharclass `\‼ \french@punctthin
- \XeTeXcharclass `\⁇ \french@punctthin
- \XeTeXcharclass `\⁈ \french@punctthin
- \XeTeXcharclass `\⁉ \french@punctthin
+ \XeTeXcharclass `\! \french@questionexclamation
+ \XeTeXcharclass `\? \french@questionexclamation
+ \XeTeXcharclass `\‼ \french@questionexclamation
+ \XeTeXcharclass `\⁇ \french@questionexclamation
+ \XeTeXcharclass `\⁈ \french@questionexclamation
+ \XeTeXcharclass `\⁉ \french@questionexclamation
+ \XeTeXcharclass `\‽ \french@questionexclamation % U+203D (interrobang)
\XeTeXcharclass `\; \french@punctthin
\iffrench@thincolonspace
\XeTeXcharclass `\: \french@punctthin
@@ -5017,26 +7037,35 @@ and may look very wrong.}
\XeTeXcharclass `\} \french@closebrackets
\XeTeXcharclass `\⟨ \french@openbrackets
\XeTeXcharclass `\⟩ \french@closebrackets
+ \XeTeXinterchartoks \z@ \french@questionexclamation = {\xpg@french@thinsp}%
\XeTeXinterchartoks \z@ \french@punctthin = {\xpg@french@thinsp}%
\XeTeXinterchartoks \z@ \french@punctthick = {\nobreakspace}%
+ \XeTeXinterchartoks \xpg@boundaryclass \french@questionexclamation = {\xpg@unskip\xpg@french@thinsp}%
\XeTeXinterchartoks \xpg@boundaryclass \french@punctthin = {\xpg@unskip\xpg@french@thinsp}%
\XeTeXinterchartoks \xpg@boundaryclass \french@punctthick = {\xpg@unskip\nobreakspace}%
\iffrench@autospaceguillemets
\let\xpg@french@guillspace\xpg@french@thinsp%
\XeTeXinterchartoks \french@punctguillstart \z@ = {\xpg@french@guillspace}% "«a" -> "«\,a"
+ \XeTeXinterchartoks \french@punctguillstart \french@punctguillstart = {\xpg@french@guillspace}% "«‹" -> "«\,‹"
% \XeTeXinterchartoks \z@ \french@punctguillstart = {\nobreakspace}% "a«" unchanged?
% \XeTeXinterchartoks \french@punctguillend \z@ = {\nobreakspace}% "»a" unchanged?
\XeTeXinterchartoks \z@ \french@punctguillend = {\xpg@french@guillspace}% "a»" -> "a\,»"
\XeTeXinterchartoks \french@punctguillstart \xpg@boundaryclass = {\xpg@french@guillspace\ignorespaces}% "« " -> "«\,"
\XeTeXinterchartoks \xpg@boundaryclass \french@punctguillend = {\xpg@unskip\xpg@french@guillspace}% " »" -> "\,»"
\XeTeXinterchartoks \french@closebrackets \french@punctguillend = {\xpg@french@guillspace}% ")»" -> ")\,»"
+ \XeTeXinterchartoks \french@questionexclamation \french@punctguillend = {\xpg@french@guillspace}% "?»" -> "?\,»"
+ \XeTeXinterchartoks \french@punctthin \french@punctguillend = {\xpg@french@guillspace}% ";»" -> ";\,»"
+ \XeTeXinterchartoks \french@punctguillend \french@punctguillend = {\xpg@french@guillspace}% "›»" -> "›\,»"
\else
\def\xpg@french@guillspace{}%
\fi
+ \XeTeXinterchartoks \french@punctguillend \french@questionexclamation = {\xpg@french@thinsp}% "»?" -> "»\,?"
\XeTeXinterchartoks \french@punctguillend \french@punctthin = {\xpg@french@thinsp}% "»;" -> "»\,;"
\XeTeXinterchartoks \french@punctguillend \french@punctthick = {\nobreakspace}% "»:" -> "» :"
- \XeTeXinterchartoks \french@punctthin \french@punctguillend = {\xpg@french@thinsp}% "?»" -> "?\,»"
- \XeTeXinterchartoks \french@openbrackets \french@punctthin = {\xpg@unskip}% "(?" -> "(?" and not "( ?"
+ \XeTeXinterchartoks \french@questionexclamation \french@punctthin = {\xpg@french@thinsp}% "?;" -> "?\,;"
+ \XeTeXinterchartoks \french@questionexclamation \french@punctthick = {\xpg@french@thinsp}% "?:" -> "?\,:"
+ \XeTeXinterchartoks \french@openbrackets \french@questionexclamation = {\xpg@unskip}% "(?" -> "(?" and not "( ?"
+ \XeTeXinterchartoks \french@openbrackets \french@punctthin = {\xpg@unskip}% "(;" -> "(;" and not "( ;"
\XeTeXinterchartoks \french@punctthin \french@closebrackets = {\xpg@unskip}% "?)" -> "?)" (code not need, just for symetry with previous one)
\XeTeXinterchartoks \french@closebrackets \french@punctthin = {\xpg@french@thinsp}% ")?" -> ")\,?"
\XeTeXinterchartoks \french@closebrackets \french@punctthick = {\nobreakspace}% "):" -> ") :"
@@ -5054,6 +7083,7 @@ and may look very wrong.}
\XeTeXcharclass `\⁇ \z@
\XeTeXcharclass `\⁈ \z@
\XeTeXcharclass `\⁉ \z@
+ \XeTeXcharclass `\‽ \z@
\XeTeXcharclass `\; \z@
\XeTeXcharclass `\: \z@
\XeTeXcharclass `\« \z@
@@ -5184,6 +7214,7 @@ and may look very wrong.}
\ProvidesFile{gloss-friulian.ldf}[polyglossia: module for friulian]
\PolyglossiaSetup{friulian}{%
+ bcp47=fur,
language=Friulian,
babelname=friulan,
hyphennames={friulan,furlan},
@@ -5194,6 +7225,9 @@ and may look very wrong.}
frenchspacing=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{friulian}{fur}
+
% Babel and backwards compat. alias
\setlanguagealias{friulian}{friulan}
@@ -5253,6 +7287,36 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-friulian.ldf>
+%<*gloss-fur.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-fur.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-fur.ldf}[polyglossia: module for fur (friulian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{friulian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-fur.ldf>
+%<*gloss-ga.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ga.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ga.ldf}[polyglossia: module for ga (gaelic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{gaelic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ga.ldf>
%<*gloss-gaelic.ldf>
% \fi
% \clearpage
@@ -5262,6 +7326,7 @@ and may look very wrong.}
\ProvidesFile{gloss-gaelic.ldf}[polyglossia: module for gaelic]
\PolyglossiaSetup{gaelic}{
+ bcp47=ga,
language=Irish,
babelname=irish,
hyphennames={irish},
@@ -5270,6 +7335,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*[variant=irish]{gaelic}{ga}
+\setlanguagealias*[variant=scottish]{gaelic}{gd}
% Babel aliases
\setlanguagealias[variant=irish]{gaelic}{irish}
\setlanguagealias[variant=scottish]{gaelic}{scottish}
@@ -5279,17 +7347,20 @@ and may look very wrong.}
\ifcase\nr\relax
% irish:
\gdef\gaelic@variant{irish}%
- \SetLanguageKeys{gaelic}{language=Irish,langtag=IRI,babelname=irish}%
+ \SetLanguageKeys{gaelic}{language=Irish,langtag=IRI,babelname=irish,bcp47=ga}%
\xpg@fontsetup@latin{gaelic}%
\or
% scottish:
\gdef\gaelic@variant{scottish}%
- \SetLanguageKeys{gaelic}{language=Gaelic,langtag=GAE,babelname=scottish}%
+ \SetLanguageKeys{gaelic}{language=Gaelic,langtag=GAE,babelname=scottish,bcp47=gd}%
\xpg@fontsetup@latin{gaelic}%
\fi
\xpg@info{Option: gaelic, variant=\val}%
}{\xpg@warning{Unknown gaelic variant `#1'}}
+% Register default options
+\xpg@initialize@gloss@options{gaelic}{variant=irish}
+
\def\captionsgaelic@irish{%
\def\refname{Tagairtí}%
\def\abstractname{Achoimre}%
@@ -5380,6 +7451,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-galician.ldf}[polyglossia: module for galician]
\PolyglossiaSetup{galician}{
+ bcp47=gl,
hyphennames={galician},
hyphenmins={2,2},
langtag=GAL,
@@ -5387,6 +7459,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{galician}{gl}
+
\def\captionsgalician{%
\def\refname{Referencias}%
\def\abstractname{Resumo}%
@@ -5420,6 +7495,21 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-galician.ldf>
+%<*gloss-gd.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-gd.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-gd.ldf}[polyglossia: module for gd (gaelic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{gaelic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-gd.ldf>
%<*gloss-georgian.ldf>
% \fi
% \clearpage
@@ -5429,6 +7519,7 @@ and may look very wrong.}
\ProvidesFile{gloss-georgian.ldf}[polyglossia: module for georgian]
\PolyglossiaSetup{georgian}{
+ bcp47=ka,
script=Georgian,
scripttag=geor,
langtag=KAT,
@@ -5437,6 +7528,9 @@ and may look very wrong.}
localnumeral=georgiannumerals
}
+% BCP-47 compliant aliases
+\setlanguagealias*{georgian}{ka}
+
\newif\ifgeorgian@numerals
\define@key{georgian}{numerals}[arabic]{%
\ifstrequal{#1}{georgian}%
@@ -5448,6 +7542,9 @@ and may look very wrong.}
\define@boolkey{georgian}[georgian@]{oldmonthnames}[true]{}
+% Register default options
+\xpg@initialize@gloss@options{georgian}{babelshorthands=false,oldmonthnames=false,numerals=arabic}
+
\ifsystem@babelshorthands
\setkeys{georgian}{babelshorthands=true}
\else
@@ -5662,6 +7759,7 @@ and may look very wrong.}
\ProvidesFile{gloss-german.ldf}[polyglossia: module for german]
\PolyglossiaSetup{german}{
+ bcp47=de-DE,
hyphenmins={2,2},
frenchspacing=true,
fontsetup=true,
@@ -5669,6 +7767,28 @@ and may look very wrong.}
babelname=ngerman
}
+% BCP-47 compliant aliases
+\setlanguagealias*{german}{de}
+\setlanguagealias*[variant=swiss,spelling=new]{german}{de-CH}
+\setlanguagealias*[variant=austrian,spelling=new]{german}{de-AT}
+\setlanguagealias*[variant=german,spelling=new]{german}{de-DE}
+\setlanguagealias*[variant=swiss,spelling=new,script=blackletter]{german}{de-Latf-CH}
+\setlanguagealias*[variant=german,spelling=new,script=blackletter]{german}{de-Latf-DE}
+\setlanguagealias*[variant=austrian,spelling=new,script=blackletter]{german}{de-Latf-AT}
+\setlanguagealias*[variant=austrian,spelling=old]{german}{de-AT-1901}
+\setlanguagealias*[variant=swiss,spelling=new]{german}{de-CH-1996}
+\setlanguagealias*[variant=austrian,spelling=new]{german}{de-AT-1996}
+\setlanguagealias*[variant=german,spelling=old]{german}{de-DE-1901}
+\setlanguagealias*[variant=swiss,spelling=old,script=blackletter]{german}{de-Latf-CH-1901}
+\setlanguagealias*[variant=swiss,spelling=old]{german}{de-CH-1901}
+\setlanguagealias*[variant=austrian,spelling=old,script=blackletter]{german}{de-Latf-AT-1901}
+\setlanguagealias*[variant=swiss,spelling=new,script=blackletter]{german}{de-Latf-CH-1996}
+\setlanguagealias*[script=blackletter]{german}{de-Latf}
+\setlanguagealias*[variant=german,spelling=new]{german}{de-DE-1996}
+\setlanguagealias*[variant=german,spelling=old,script=blackletter]{german}{de-Latf-DE-1901}
+\setlanguagealias*[variant=german,spelling=new,script=blackletter]{german}{de-Latf-DE-1996}
+\setlanguagealias*[variant=austrian,spelling=new,script=blackletter]{german}{de-Latf-AT-1996}
+
% Babel aliases
\setlanguagealias[variant=austrian,spelling=old]{german}{austrian}
\setlanguagealias[variant=austrian,spelling=new]{german}{naustrian}
@@ -5679,7 +7799,7 @@ and may look very wrong.}
\newif\if@german@oldspelling
\@german@oldspellingfalse
-\define@choicekey*+{german}{spelling}[\val\nr]{new,old,1901}[new]{%
+\define@choicekey*+{german}{spelling}[\val\nr]{new,old,1901,1996}[new]{%
\ifcase\nr\relax
% new:
\@german@oldspellingfalse
@@ -5689,6 +7809,9 @@ and may look very wrong.}
\or
% 1901:
\@german@oldspellingtrue
+ \or
+ % 1996:
+ \@german@oldspellingfalse
\fi
\german@set@babelname%
\xpg@info{Option: German, spelling=\val}%
@@ -5725,21 +7848,45 @@ and may look very wrong.}
\def\german@set@babelname{%
\if@german@oldspelling
\if@swiss@locale
- \SetLanguageKeys{german}{babelname=swissgerman}%
+ \if@german@blackletter
+ \SetLanguageKeys{german}{babelname=swissgerman,bcp47=de-Latf-CH-1901}%
+ \else
+ \SetLanguageKeys{german}{babelname=swissgerman,bcp47=de-CH-1901}%
+ \fi
\else
\if@austrian@locale
- \SetLanguageKeys{german}{babelname=austrian}%
+ \if@german@blackletter
+ \SetLanguageKeys{german}{babelname=austrian,bcp47=de-Latf-AT-1901}%
+ \else
+ \SetLanguageKeys{german}{babelname=austrian,bcp47=de-AT-1901}%
+ \fi
\else
- \SetLanguageKeys{german}{babelname=german}%
+ \if@german@blackletter
+ \SetLanguageKeys{german}{babelname=german,bcp47=de-Latf-DE-1901}%
+ \else
+ \SetLanguageKeys{german}{babelname=german,bcp47=de-DE-1901}%
+ \fi
\fi\fi
\else
\if@swiss@locale
- \SetLanguageKeys{german}{babelname=nswissgerman}%
+ \if@german@blackletter
+ \SetLanguageKeys{german}{babelname=nswissgerman,bcp47=de-Latf-CH}%
+ \else
+ \SetLanguageKeys{german}{babelname=nswissgerman,bcp47=de-CH}%
+ \fi
\else
\if@austrian@locale
- \SetLanguageKeys{german}{babelname=naustrian}%
+ \if@german@blackletter
+ \SetLanguageKeys{german}{babelname=naustrian,bcp47=de-Latf-AT}%
+ \else
+ \SetLanguageKeys{german}{babelname=naustrian,bcp47=de-AT}%
+ \fi
\else
- \SetLanguageKeys{german}{babelname=ngerman}%
+ \if@german@blackletter
+ \SetLanguageKeys{german}{babelname=ngerman,bcp47=de-Latf-DE}%
+ \else
+ \SetLanguageKeys{german}{babelname=ngerman,bcp47=de-DE}%
+ \fi
\fi\fi
\fi
}
@@ -5756,14 +7903,24 @@ and may look very wrong.}
% fraktur:
\@german@blacklettertrue%
\fi
+ \german@set@babelname%
\xpg@info{Option: German, script=\val}%
}{\xpg@warning{Unknown German script `#1'}}
-\define@boolkey{german}[german@]{latesthyphen}[false]{}
+% Option defunc'ed, as bot XeTeX and LuaTeX meanwhile
+% use the experimental German hyphenation patterns by default.
+\define@boolkey{german}[german@]{latesthyphen}[true]{}
\define@boolkey{german}[german@]{babelshorthands}[true]{}
-\setkeys{german}{spelling,latesthyphen,script,variant}
+\setkeys{german}{spelling,script,variant}
+
+% Register default options
+\xpg@initialize@gloss@options{german}{variant=german,spelling=new,script=latin,latesthyphen=false,babelshorthands=false}
+% Register alias options
+\xpg@set@alias@values{german}{spelling}{new}{1996}
+\xpg@set@alias@values{german}{spelling}{old}{1901}
+\xpg@set@alias@values{german}{script}{blackletter}{fraktur}
\ifsystem@babelshorthands
\setkeys{german}{babelshorthands=true}
@@ -5890,26 +8047,23 @@ and may look very wrong.}
}
\def\german@language{%
- \ifgerman@latesthyphen
- \if@german@oldspelling
- \if@swiss@locale
- \polyglossia@setup@language@patterns{swissgerman}%
- \else
- \polyglossia@setup@language@patterns{german-x-latest}%
- \fi
- \else
- \polyglossia@setup@language@patterns{ngerman-x-latest}%
- \fi
- \else% (latesthyphen=false)
- \if@german@oldspelling
- \if@swiss@locale
- \polyglossia@setup@language@patterns{swissgerman}%
- \else
- \polyglossia@setup@language@patterns{german}%
- \fi
- \else
- \polyglossia@setup@language@patterns{ngerman}%
- \fi
+ \if@german@oldspelling
+ \if@swiss@locale
+ \polyglossia@setup@language@patterns{swissgerman}%
+ \else
+ \polyglossia@setup@language@patterns{german}%
+ \fi
+ \if@austrian@locale
+ \adddialect\l@austrian\l@german%
+ \fi
+ \else
+ \polyglossia@setup@language@patterns{ngerman}%
+ \if@austrian@locale
+ \adddialect\l@naustrian\l@ngerman%
+ \fi
+ \if@swiss@locale
+ \adddialect\l@nswissgerman\l@ngerman%
+ \fi
\fi
}
@@ -5943,6 +8097,36 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-germanb.ldf>
+%<*gloss-gl.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-gl.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-gl.ldf}[polyglossia: module for gl (galician)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{galician}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-gl.ldf>
+%<*gloss-grc.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-grc.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-grc.ldf}[polyglossia: module for grc (greek)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{greek}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-grc.ldf>
%<*gloss-greek.ldf>
% \fi
% \clearpage
@@ -5952,6 +8136,7 @@ and may look very wrong.}
\ProvidesFile{gloss-greek.ldf}[polyglossia: module for greek]
\PolyglossiaSetup{greek}{
+ bcp47=el-monoton,
script=Greek,
scripttag=grek,
langtag=ELL,
@@ -5963,6 +8148,12 @@ and may look very wrong.}
%TODO localalph={greek@alph,greek@Alph}
}
+% BCP-47 compliant aliases
+\setlanguagealias*[variant=ancient]{greek}{grc}
+\setlanguagealias*[varant=polytonic]{greek}{el-polyton}
+\setlanguagealias*[variant=monotonic]{greek}{el-monoton}
+\setlanguagealias*{greek}{el}
+
% Babel aliases
\setlanguagealias[variant=polytonic]{greek}{polutonikogreek}
@@ -5999,7 +8190,7 @@ and may look very wrong.}
\def\greek@variant{polygreek}%
\def\captionsgreek{\polygreekcaptions}%
\def\dategreek{\datepolygreek}%
- \SetLanguageKeys{greek}{babelname=polutonikogreek}%
+ \SetLanguageKeys{greek}{babelname=polutonikogreek,bcp47=el-polyton}%
\xpg@info{Option: Polytonic Greek}%
\else
\ifx\@tmpa\tmp@ancient
@@ -6010,6 +8201,7 @@ and may look very wrong.}
\def\greek@variant{ancientgreek}%
\def\captionsgreek{\ancientgreekcaptions}%
\def\dategreek{\dateancientgreek}%
+ \SetLanguageKeys{greek}{babelname=greek,bcp47=grc}%
\xpg@info{Option: Ancient Greek}%
\else %monotonic
\xpg@ifdefined{monogreek}{}%
@@ -6019,12 +8211,13 @@ and may look very wrong.}
\def\greek@variant{monogreek}% monotonic
\def\captionsgreek{\monogreekcaptions}%
\def\dategreek{\datemonogreek}%
+ \SetLanguageKeys{greek}{babelname=greek,bcp47=el-monoton}%
\xpg@info{Option: Monotonic Greek}%
\fi
\fi}
\def\greek@language{%
- \polyglossia@setup@language@patterns{\greek@variant}
+ \polyglossia@setup@language@patterns{\greek@variant}%
}
@@ -6035,8 +8228,11 @@ and may look very wrong.}
\define@boolkey{greek}{attic}[true]{\xpg@warning{Greek option `attic' is no longer required.}}
-% This sets the defaults
-\setkeys{greek}{numerals,variant}
+% Register default options
+\xpg@initialize@gloss@options{greek}{variant=monotonic,numerals=greek}
+% Register alias options
+\xpg@set@alias@values{greek}{variant}{monotonic}{mono}
+\xpg@set@alias@values{greek}{variant}{polytonic}{poly}
\def\monogreekcaptions{%
\def\refname{Αναφορές}%
@@ -6347,6 +8543,21 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-greek.ldf>
+%<*gloss-he.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-he.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-he.ldf}[polyglossia: module for he (hebrew)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{hebrew}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-he.ldf>
%<*gloss-hebrew.ldf>
% \fi
% \clearpage
@@ -6364,6 +8575,7 @@ and may look very wrong.}
\RequirePackage{hebrewcal}
\PolyglossiaSetup{hebrew}{
+ bcp47=he,
script=Hebrew,
direction=RL,
scripttag=hebr,
@@ -6375,6 +8587,9 @@ and may look very wrong.}
%digits = hebrewnumber
}
+% BCP-47 compliant aliases
+\setlanguagealias*{hebrew}{he}
+
\newif\if@calendar@hebrew
\def\tmp@hebrew{hebrew}
\define@key{hebrew}{calendar}[gregorian]{%
@@ -6405,6 +8620,9 @@ and may look very wrong.}
\setkeys{hebrew}{numerals}
+% Register default options
+\xpg@initialize@gloss@options{hebrew}{numerals=arabic,calendar=gregorian,marcheshvan=false}
+
\def\captionshebrew{%
\def\prefacename{מבוא}%
\def\refname{מקורות}%
@@ -6459,19 +8677,45 @@ and may look very wrong.}
\fi
}
+% Bidi inserts an RTL mark (0x200f) before any number, forcing numbers to
+% RTL. Hebrew uses LTR numbers, though. So we insert an LTR mark to revert
+% the directionality
+\ifxetex
+ \newcommand\xpg@hebrew@DigitsDotDashInterCharToks{\if@nonlatin\char"200E \fi}
+\fi
+
+\def\hebrew@ltr@numbers{%
+ \ifxetex
+ \XeTeXinterchartoks \bidi@sepmark@charclass \bidi@digits@charclass = {\xpg@hebrew@DigitsDotDashInterCharToks}
+ \fi%
+}
+
+\def\nohebrew@ltr@numbers{%
+ \ifxetex
+ % This is bidi's original intervention
+ \XeTeXinterchartoks \bidi@sepmark@charclass \bidi@digits@charclass = {\DigitsDotDashInterCharToks}
+ \fi%
+}
+
\def\hebrew@numbers{%
\let\@alph\hebrewnumeral%
\let\@Alph\Hebrewnumeral%
+ % Prevent bidi from setting the numbers RTL
+ \hebrew@ltr@numbers%
}
\def\nohebrew@numbers{%
\let\@alph\latin@alph%
\let\@Alph\latin@Alph%
+ % Restore previous bidi numbers definition
+ \nohebrew@ltr@numbers
}
\def\hebrew@globalnumbers{%
\let\@arabic\hebrewnumber%
\renewcommand\thefootnote{\localnumeral*{footnote}}%
+ % Prevent bidi from setting the numbers RTL
+ \hebrew@ltr@numbers%
}
% Store original definition
@@ -6496,6 +8740,21 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-hebrew.ldf>
+%<*gloss-hi.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-hi.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-hi.ldf}[polyglossia: module for hi (hindi)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{hindi}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-hi.ldf>
%<*gloss-hindi.ldf>
% \fi
% \clearpage
@@ -6510,6 +8769,7 @@ and may look very wrong.}
\ProvidesFile{gloss-hindi.ldf}[polyglossia: module for hindi]
\RequirePackage{devanagaridigits}
\PolyglossiaSetup{hindi}{
+ bcp47=hi,
script=Devanagari,
scripttag=deva,
langtag=HIN,
@@ -6519,6 +8779,9 @@ and may look very wrong.}
%TODO nouppercase=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{hindi}{hi}
+
\ifx\l@hindi\@undefined%
\ifx\l@sanskrit\@undefined%
\xpg@nopatterns{Hindi}%
@@ -6542,7 +8805,11 @@ and may look very wrong.}
\def\@tmpa{#1}%
\ifx\@tmpa\tmp@western
\hindi@devanagari@numeralsfalse
- \fi}
+ \fi%
+}
+
+% Register default options
+\xpg@initialize@gloss@options{hindi}{numerals=Devanagari}
\newcommand{\hindinumerals}[2]{\hindinumber{#2}}
@@ -6611,6 +8878,51 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-hindi.ldf>
+%<*gloss-hr.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-hr.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-hr.ldf}[polyglossia: module for hr (croatian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{croatian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-hr.ldf>
+%<*gloss-hsb.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-hsb.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-hsb.ldf}[polyglossia: module for hsb (sorbian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{sorbian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-hsb.ldf>
+%<*gloss-hu.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-hu.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-hu.ldf}[polyglossia: module for hu (hungarian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{hungarian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-hu.ldf>
%<*gloss-hungarian.ldf>
% \fi
% \clearpage
@@ -6620,6 +8932,7 @@ and may look very wrong.}
\ProvidesFile{gloss-hungarian.ldf}[polyglossia: module for hungarian]
\PolyglossiaSetup{hungarian}{
+ bcp47=hu,
babelname=magyar,
hyphennames={hungarian,magyar},
langtag=HUN,
@@ -6627,6 +8940,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{hungarian}{hu}
+
\frenchspacing
% Babel and backwards compat. alias
@@ -6670,7 +8986,13 @@ and may look very wrong.}
\xpg@info{Option: Hungarian, swapstrings=\val}%
}{\xpg@warning{Unknown Hungarian swapstrings value `#1'}}
-\setkeys{hungarian}{swapstrings}
+% Register default options
+\xpg@initialize@gloss@options{hungarian}{swapstrings=all}
+
+\def\hungarian@language{%
+ \polyglossia@setup@language@patterns{hungarian}%
+ \xpg@ifdefined{hungarian}{\adddialect\l@magyar\l@hungarian}{}%
+}%
\def\captionshungarian{%
\def\refname{Hivatkozások}%
@@ -6741,81 +9063,81 @@ and may look very wrong.}
% change chapter and part headings
\if@hungarian@swapheadings
% With titlesec
- \ifdefined\titleformat%
- \ifdefined\@part%
+ \ifcsdef{titleformat}{%
+ \ifcsdef{@part}{%
\let\xpg@save@part@format\@part%
\patchcmd{\@part}%
{\partname\nobreakspace\thepart}%
{\thepart.\nobreakspace\partname}%
{}%
{\xpg@warning{Failed to patch part for Hungarian}}%
- \fi%
- \ifdefined\chapter%
+ }{}%
+ \ifcsdef{chapter}{%
\titleformat\chapter[display]%
{\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}
{\thechapter.\space\@chapapp}{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}
- \fi%
- \else% (not \ifdefined\titleformat)
+ }{}%
+ }{% (not \ifdefined\titleformat)
% With KOMA
- \ifdefined\sectionformat%
- \ifdefined\partformat%
+ \ifcsdef{sectionformat}{%
+ \ifcsdef{partformat}{%
\let\xpg@save@part@format\partformat%
\renewcommand{\partformat}{\thepart.~\partname}%
- \fi%
- \ifdefined\chapterformat%
+ }{}%
+ \ifcsdef{chapterformat}{%
\let\xpg@save@chap@format\chapterformat%
\renewcommand{\chapterformat}{\mbox{\thechapter\autodot%
\IfUsePrefixLine{\nobreakspace\chapapp}{\enskip}}}%
- \fi%
- \else% (not \ifdefined\sectionformat)
+ }{}%
+ }{% (not \ifdefined\sectionformat)
% With memoir
- \ifdefined\@memptsize%
- \ifdefined\@makechapterhead%
+ \ifcsdef{@memptsize}{%
+ \ifcsdef{@makechapterhead}{%
\let\xpg@save@chap@format\@makechapterhead%
\patchcmd{\@makechapterhead}{\printchaptername \chapternamenum \printchapternum}%
{\printchapternum.\chapternamenum\printchaptername}%
{}%
{\xpg@warning{Failed to patch chapter for Hungarian}}%
- \fi%
- \ifdefined\@part%
+ }{}%
+ \ifcsdef{@part}{%
\let\xpg@save@part@format\@part%
\patchcmd{\@part}{\printpartname \partnamenum \printpartnum}%
{\printpartnum.\partnamenum\printpartname}%
{}%
{\xpg@warning{Failed to patch part for Hungarian}}%
- \fi%
- \else% (not \ifdefined\@memptsize)
+ }{}%
+ }{% (not \ifdefined\@memptsize)
% With standard classes
- \ifdefined\@makechapterhead%
+ \ifcsdef{@makechapterhead}{%
\let\xpg@save@chap@format\@makechapterhead%
\patchcmd{\@makechapterhead}%
{\@chapapp\space \thechapter}%
{\thechapter.\space \@chapapp}%
{}%
{\xpg@warning{Failed to patch chapter for Hungarian}}%
- \fi%
- \ifdefined\@part%
+ }{}%
+ \ifcsdef{@part}{%
\let\xpg@save@part@format\@part%
\patchcmd{\@part}%
{\partname\nobreakspace\thepart}%
{\thepart.\nobreakspace\partname}%
{}%
{\xpg@warning{Failed to patch part for Hungarian}}%
- \fi% (end \ifdefined\@part)
- \fi% (end \ifdefined\@memptsize)
- \fi% (end \ifdefined\sectionformat)
- \fi% (end \ifdefined\titleformat)
+ }{}% (end \ifdefined\@part)
+ }% (end \ifdefined\@memptsize)
+ }% (end \ifdefined\sectionformat)
+ }% (end \ifdefined\titleformat)
\fi% (end \if@hungarian@swapheadings)
%
% Change running headers
\if@hungarian@swapheaders
- \ifdefined\chapterformat%
+ \ifcsdef{chapterformat}{%
% With KOMA
\let\xpg@save@chaptermark@format\chaptermarkformat%
\renewcommand*\chaptermarkformat{%
\thechapter\autodot\ \IfChapterUsesPrefixLine{\chapapp\enskip}{}}
- \else% (not \ifdefined\chapterformat)
- \ifdefined\@memptsize%
+ }{% (not \ifdefined\chapterformat)
+ \ifcsdef{@memptsize}{%
% With memoir
\let\xpg@save@chaptermark@format\chaptermark%
\renewcommand*\chaptermark[1]{%
@@ -6826,18 +9148,21 @@ and may look very wrong.}
\fi
\fi
##1}}{}}%
- \else% (not \ifdefined\@memptsize)
+ }{% (not \ifdefined\@memptsize)
% With standard classes
- \ifdefined\chaptermark%
- \let\xpg@save@chaptermark@format\chaptermark%
- \patchcmd{\chaptermark}%
+ \ifcsdef{chaptermark}{%
+ \ifpatchable{\chaptermark}%
+ {\@chapapp\ \thechapter.}%
+ {\let\xpg@save@chaptermark@format\chaptermark%
+ \patchcmd{\chaptermark}%
{\@chapapp\ \thechapter.}%
{\thechapter.\ \@chapapp}%
{}%
- {\xpg@warning{Failed to patch chaptermark for Hungarian}}%
- \fi% (end \ifdefined\chaptermark)
- \fi% (end \ifdefined\@memptsize)
- \fi% (end \ifdefined\chapterformat)
+ {\xpg@warning{Failed to patch chaptermark for Hungarian}}}%
+ {}%
+ }{}% (end \ifdefined\chaptermark)
+ }% (end \ifdefined\@memptsize)
+ }% (end \ifdefined\chapterformat)
\fi% (end \if@hungarian@swapheaders)
}
@@ -6848,50 +9173,50 @@ and may look very wrong.}
\let\fnum@figure\xpg@save@fnum@figure%
%
% Reset chapter and part heading
- \ifdefined\titleformat%
+ \ifcsdef{titleformat}{%
% With titlesec
- \ifdefined\xpg@save@part@format
+ \ifcsdef{xpg@save@part@format}{%
\let\@part\xpg@save@part@format
- \fi%
- \ifdefined\chapter
+ }{}%
+ \ifcsdef{chapter}{%
\titleformat\chapter[display]%
{\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}
{\@chapapp\space\thechapter}{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}
- \fi%
- \else% (not \ifdefined\titleformat)
- \ifdefined\sectionformat%
+ }{}%
+ }{% (not \ifdefined\titleformat)
+ \ifcsdef{sectionformat}{%
% With KOMA
- \ifdefined\xpg@save@part@format
+ \ifcsdef{xpg@save@part@format}{%
\let\partformat\xpg@save@part@format
- \fi%
- \ifdefined\xpg@save@chap@format
+ }{}%
+ \ifcsdef{xpg@save@chap@format}{%
\let\chapterformat\xpg@save@chap@format
- \fi%
- \else%
+ }{}%
+ }{%
% With memoir and standard classes
- \ifdefined\xpg@save@part@format
+ \ifcsdef{xpg@save@part@format}{%
\let\@part\xpg@save@part@format
- \fi%
- \ifdefined\xpg@save@chap@format
+ }{}%
+ \ifcsdef{xpg@save@chap@format}{%
\let\@makechapterhead\xpg@save@chap@format
- \fi%
- \fi% (end \ifdefined\sectionformat)
- \fi% (end \ifdefined\titleformat)
+ }{}%
+ }% (end \ifdefined\sectionformat)
+ }% (end \ifdefined\titleformat)
%
% Reset headers
- \ifdefined\chaptermarkformat%
+ \ifcsdef{chaptermarkformat}{%
% With KOMA
- \ifdefined\xpg@save@chaptermark@format
+ \ifcsdef{xpg@save@chaptermark@format}{%
\let\chaptermarkformat\xpg@save@chaptermark@format%
- \fi
- \else%
- \ifdefined\chaptermark%
+ }{}%
+ }{%
+ \ifcsdef{chaptermark}{%
% With memoir and standard classes
- \ifdefined\xpg@save@chaptermark@format
+ \ifcsdef{xpg@save@chaptermark@format}{%
\let\chaptermark\xpg@save@chaptermark@format%
- \fi
- \fi% (end \ifdefined\chaptermark)
- \fi% (end \ifdefined\chapterformat)
+ }{}%
+ }{}% (end \ifdefined\chaptermark)
+ }% (end \ifdefined\chapterformat)
}
\def\blockextras@hungarian{%
@@ -6906,6 +9231,36 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-hungarian.ldf>
+%<*gloss-hy.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-hy.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-hy.ldf}[polyglossia: module for hy (armenian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{armenian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-hy.ldf>
+%<*gloss-ia.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ia.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ia.ldf}[polyglossia: module for ia (interlingua)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{interlingua}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ia.ldf>
%<*gloss-icelandic.ldf>
% \fi
% \clearpage
@@ -6914,12 +9269,16 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-icelandic.ldf}[polyglossia: module for icelandic]
\PolyglossiaSetup{icelandic}{
+ bcp47=is,
hyphennames={icelandic},
hyphenmins={2,2},
langtag=ISL,
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{icelandic}{is}
+
\def\captionsicelandic{%
\def\refname{Heimildir}%
\def\abstractname{Útdráttur}%
@@ -6956,6 +9315,21 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-icelandic.ldf>
+%<*gloss-id.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-id.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-id.ldf}[polyglossia: module for id (malay)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{malay}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-id.ldf>
%<*gloss-interlingua.ldf>
% \fi
% \clearpage
@@ -6964,6 +9338,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-interlingua.ldf}[polyglossia: module for interlingua]
\PolyglossiaSetup{interlingua}{
+ bcp47=ia,
hyphennames={interlingua},
hyphenmins={2,2},
langtag=INA,
@@ -6972,6 +9347,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{interlingua}{ia}
+
\def\captionsinterlingua{%
\def\refname{Referentias}%
\def\abstractname{Summario}%
@@ -7022,6 +9400,36 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-irish.ldf>
+%<*gloss-is.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-is.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-is.ldf}[polyglossia: module for is (icelandic)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{icelandic}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-is.ldf>
+%<*gloss-it.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-it.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-it.ldf}[polyglossia: module for it (italian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{italian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-it.ldf>
%<*gloss-italian.ldf>
% \fi
% \clearpage
@@ -7031,6 +9439,7 @@ and may look very wrong.}
% !TEX encoding = UTF-8 Unicode
\ProvidesFile{gloss-italian.ldf}[polyglossia: module for italian]
\PolyglossiaSetup{italian}{
+ bcp47=it,
hyphennames={italian},
hyphenmins={2,2},
langtag=ITA,
@@ -7039,10 +9448,16 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{italian}{it}
+
%%% CHANGES START %%% by Enrico Gregorio
\define@boolkey{italian}[italian@]{babelshorthands}[true]{}
+% Register default options
+\xpg@initialize@gloss@options{italian}{babelshorthands=false}
+
\ifsystem@babelshorthands
\setkeys{italian}{babelshorthands=true}
\else
@@ -7163,6 +9578,21 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-italian.ldf>
+%<*gloss-ja.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ja.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ja.ldf}[polyglossia: module for ja (japanese)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{japanese}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ja.ldf>
%<*gloss-japanese.ldf>
% \fi
% \clearpage
@@ -7170,21 +9600,27 @@ and may look very wrong.}
% \subsection{gloss-japanese.ldf}
% \begin{macrocode}
\ProvidesFile{gloss-japanese.ldf}[polyglossia: module for japanese]
+
\PolyglossiaSetup{japanese}{
+ bcp47=ja,
script=CJK,
language=Japanese,
langtag=JAN,
hyphennames={nohyphenation},
frenchspacing=false,
- fontsetup=true
+ fontsetup=true,
+ localnumeral=japanesenumerals
}
+% BCP-47 compliant aliases
+\setlanguagealias*{japanese}{ja}
+
\def\japanese@capsformat{%
\def\@seccntformat##1{%
\csname pre##1\endcsname%
\csname the##1\endcsname%
\csname post##1\endcsname%
- }
+ }%
\def\postsection{節\space}%
\def\postsubsection{節\space}%
\def\postsubsubsection{節\space}%
@@ -7224,33 +9660,33 @@ and may look very wrong.}
\newif\if@IzumoTuki \@IzumoTukifalse%
\newcount\c@TempJNum%
-\def\@JapaneseDigit#1{
- \ifcase#1\or 一\or 二\or 三\or 四\or 五\or
- 六\or 七\or 八\or 九\or 十\or
- 十一\or 十二\or 十三\or 十四\or 十五\or
- 十六\or 十七\or 十八\or 十九\or 廿\or
- 廿一\or 廿二\or 廿三\or 廿四\or 廿五\or
- 廿六\or 廿七\or 廿八\or 廿九\or 丗\or
- 丗一\or 丗二\or 丗三\or 丗四\or 丗五\or
- 丗六\or 丗七\or 丗八\or 丗九\or 四十\or
- 四十一\or 四十二\or 四十三\or 四十四\or 四十五\or
- 四十六\or 四十七\or 四十八\or 四十九\or 五十\or
- 五十一\or 五十二\or 五十三\or 五十四\or 五十五\or
- 五十六\or 五十七\or 五十八\or 五十九\or 六十\or
- 六十一\or 六十二\or 六十三\or 六十四\or 六十五\or
- 六十六\or 六十七\or 六十八\or 六十九\or 七十\or
- 七十一\or 七十二\or 七十三\or 七十四\or 七十五\or
- 七十六\or 七十七\or 七十八\or 七十九\or 八十\or
- 八十一\or 八十二\or 八十三\or 八十四\or 八十五\or
- 八十六\or 八十七\or 八十八\or 八十九\or 九十\or
- 九十一\or 九十二\or 九十三\or 九十四\or 九十五\or
- 九十六\or 九十七\or 九十八\or 九十九
+\def\@JapaneseDigit#1{%
+ \ifcase#1\or 一\or 二\or 三\or 四\or 五\or%
+ 六\or 七\or 八\or 九\or 十\or%
+ 十一\or 十二\or 十三\or 十四\or 十五\or%
+ 十六\or 十七\or 十八\or 十九\or 廿\or%
+ 廿一\or 廿二\or 廿三\or 廿四\or 廿五\or%
+ 廿六\or 廿七\or 廿八\or 廿九\or 丗\or%
+ 丗一\or 丗二\or 丗三\or 丗四\or 丗五\or%
+ 丗六\or 丗七\or 丗八\or 丗九\or 四十\or%
+ 四十一\or 四十二\or 四十三\or 四十四\or 四十五\or%
+ 四十六\or 四十七\or 四十八\or 四十九\or 五十\or%
+ 五十一\or 五十二\or 五十三\or 五十四\or 五十五\or%
+ 五十六\or 五十七\or 五十八\or 五十九\or 六十\or%
+ 六十一\or 六十二\or 六十三\or 六十四\or 六十五\or%
+ 六十六\or 六十七\or 六十八\or 六十九\or 七十\or%
+ 七十一\or 七十二\or 七十三\or 七十四\or 七十五\or%
+ 七十六\or 七十七\or 七十八\or 七十九\or 八十\or%
+ 八十一\or 八十二\or 八十三\or 八十四\or 八十五\or%
+ 八十六\or 八十七\or 八十八\or 八十九\or 九十\or%
+ 九十一\or 九十二\or 九十三\or 九十四\or 九十五\or%
+ 九十六\or 九十七\or 九十八\or 九十九%
\else
- \@ctrerr
- \fi\relax
+ \@ctrerr%
+ \fi\relax%
}
-\def\@JapaneseNum#1{
+\def\@JapaneseNum#1{%
\c@TempJNum=#1\divide\c@TempJNum by 1000\relax%
\ifnum\c@TempJNum=\z@\c@TempJNum=#1%
\divide\c@TempJNum by 100\relax%
@@ -7260,7 +9696,7 @@ and may look very wrong.}
六百\or 七百\or 八百\or 九百%
\fi
\c@TempJNum=#1\divide\c@TempJNum by 100\multiply\c@TempJNum by -100\advance\c@TempJNum#1\@JapaneseDigit\c@TempJNum\relax%
- \fi
+ \fi%
\else
\ifcase\c@TempJNum\or 千\or 二千\or 三千\or 四千\or 五千\or
六千\or 七千\or 八千\or 九千%
@@ -7277,7 +9713,7 @@ and may look very wrong.}
\fi
}
-\def\@japanesenumber#1{
+\def\@japanesenumber#1{%
\@tempcnta=#1%
\ifnum\@tempcnta=\z@{〇}%
\else
@@ -7310,12 +9746,14 @@ and may look very wrong.}
\fi
}
-\def\japanesenumber#1{
+\def\japanesenumber#1{%
\expandafter\@japanesenumber\csname c@#1\endcsname%
}
-\def\datejapanese{
- {
+\newcommand{\japanesenumerals}[2]{\@japanesenumber{#2}}
+
+\def\datejapanese{%
+ {%
\ifnum\year<1868%
\xdef\the@WarekiCur{}%
\else
@@ -7334,14 +9772,14 @@ and may look very wrong.}
\fi
\fi
\xdef\the@WameiTosi{\the\year}%
- }
+ }%
\def\西暦{\@WameiRekifalse \@WameiTukifalse \@WameiHifalse}%
\def\和暦{\@WameiRekitrue \@WameiTosifalse \@WameiTukifalse \@WameiHifalse}%
\def\和名暦{\@WameiTositrue \@WameiTukitrue \@WameiHitrue}%
\def\数字暦{\@WameiTosifalse \@WameiTukifalse \@WameiHifalse}%
\def\出雲月{\@IzumoTukitrue}%
\def\大和月{\@IzumoTukifalse}%
- \def\today{
+ \def\today{%
\if@WameiReki%
\the@WarekiCur%
\if@WameiTosi%
@@ -7368,8 +9806,8 @@ and may look very wrong.}
\else
\,\number\day\,%
\fi
- {日}
- }
+ {日}%
+ }%
}
\def\noextras@japanese{%
@@ -7388,6 +9826,21 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-japanese.ldf>
+%<*gloss-ka.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ka.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ka.ldf}[polyglossia: module for ka (georgian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{georgian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ka.ldf>
%<*gloss-kannada.ldf>
% \fi
% \clearpage
@@ -7420,6 +9873,7 @@ the output is not guaranteed to be correct\MessageBreak
and may look very wrong.}
\fi
\PolyglossiaSetup{kannada}{
+ bcp47=kn,
script=Kannada,
scripttag=knda,
langtag=KAN,
@@ -7429,6 +9883,9 @@ and may look very wrong.}
localnumeral=kannadanumerals
}
+% BCP-47 compliant aliases
+\setlanguagealias*{kannada}{kn}
+
%% Defining Kannada digits equivalents to english
\def\kannadadigits#1{\expandafter\@kannada@digits #1@}
\def\@kannada@digits#1{%
@@ -7516,6 +9973,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-khmer.ldf}[polyglossia: module for Khmer]
\PolyglossiaSetup{khmer}{
+ bcp47=km,
script=Khmer,%
scripttag=khmr,%
langtag=KHM,%
@@ -7674,6 +10132,96 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-khmer.ldf>
+%<*gloss-km.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-km.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-km.ldf}[polyglossia: module for km (khmer)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{khmer}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-km.ldf>
+%<*gloss-kmr-Arab.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-kmr-Arab.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-kmr-Arab.ldf}[polyglossia: module for kmr-Arab (kurdish)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{kurdish}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-kmr-Arab.ldf>
+%<*gloss-kmr-Latn.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-kmr-Latn.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-kmr-Latn.ldf}[polyglossia: module for kmr-Latn (kurdish)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{kurdish}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-kmr-Latn.ldf>
+%<*gloss-kmr.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-kmr.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-kmr.ldf}[polyglossia: module for kmr (kurdish)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{kurdish}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-kmr.ldf>
+%<*gloss-kn.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-kn.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-kn.ldf}[polyglossia: module for kn (kannada)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{kannada}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-kn.ldf>
+%<*gloss-ko.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ko.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ko.ldf}[polyglossia: module for ko (korean)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{korean}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ko.ldf>
%<*gloss-korean.ldf>
% \fi
% \clearpage
@@ -7683,6 +10231,7 @@ and may look very wrong.}
\ProvidesFile{gloss-korean.ldf}[polyglossia: module for Korean]
\PolyglossiaSetup{korean}{
+ bcp47=ko,
script=Hangul,
scripttag=hang,
language=Korean,
@@ -7692,6 +10241,9 @@ and may look very wrong.}
fontsetup=true
}
+% BCP-47 compliant aliases
+\setlanguagealias*{korean}{ko}
+
% variant : plain (0), classic (1), or modern (2)
\define@choicekey{korean}{variant}[\val\nr]{plain,classic,modern}[plain]{%
\let\xpg@korean@variant\nr
@@ -7700,7 +10252,32 @@ and may look very wrong.}
\define@choicekey{korean}{captions}[\val\nr]{hangul,hanja}[hangul]{%
\let\xpg@korean@captions\nr
}
-\setkeys{korean}{variant,captions}
+% swapstrings: all (0), headings (1), headers (2), or none (3)
+\newif\if@korean@swapheadings
+\newif\if@korean@swapheaders
+\define@choicekey*+{korean}{swapstrings}[\val\nr]{all,headings,headers,none}[all]{%
+ \ifcase\nr\relax
+ % all:
+ \@korean@swapheadingstrue%
+ \@korean@swapheaderstrue%
+ \or
+ % headings:
+ \@korean@swapheadingstrue%
+ \@korean@swapheadersfalse%
+ \or
+ % headers:
+ \@korean@swapheadingsfalse%
+ \@korean@swapheaderstrue%
+ \or
+ % none:
+ \@korean@swapheadingsfalse%
+ \@korean@swapheadersfalse%
+ \fi
+ \xpg@info{Option: Korean, swapstrings=\val}%
+}{\xpg@warning{Unknown Korean swapstrings value `#1'}}
+
+% Register default options
+\xpg@initialize@gloss@options{korean}{variant=plain,swapstrings=all,captions=hangul}
\def\captionskorean{%
\ifcase\xpg@korean@captions\relax
@@ -7713,7 +10290,7 @@ and may look very wrong.}
}
\def\captions@korean@hangul{%
\def\koreanTHEname{제}%
- \def\partname##1##2{제##1##2 편}%
+ \def\partname{편}%
\def\chaptername{장}%
\def\refname{참고문헌}%
\def\abstractname{요약}%
@@ -7731,10 +10308,11 @@ and may look very wrong.}
\def\proofname{증명}%
\def\headtoname{수신:}%
\def\ccname{사본}%
+ \def\glossaryname{용어집}%
}
\def\captions@korean@hanja{%
\def\koreanTHEname{第}%
- \def\partname##1##2{第##1##2 篇}%
+ \def\partname{篇}%
\def\chaptername{章}%
\def\refname{參考文獻}%
\def\abstractname{要約}%
@@ -7752,6 +10330,217 @@ and may look very wrong.}
\def\proofname{證明}%
\def\headtoname{受信:}%
\def\ccname{寫本}%
+ \def\glossaryname{用語集}%
+}
+
+\def\korean@appendix@chapapp{\appendixname}% to exclude appendix
+
+\def\korean@headingsformat{%
+ % change chapter and part headings
+ \if@korean@swapheadings
+ % With titlesec
+ \ifdefined\titleformat
+ \ifdefined\@part
+ \let\xpg@save@part@format\@part
+ \patchcmd{\@part}%
+ {\partname\nobreakspace\thepart}%
+ {\koreanTHEname\nobreakspace \thepart\nobreakspace \partname}%
+ {}%
+ {\xpg@warning{Failed to patch part for Korean}}%
+ \fi
+ \ifdefined\chapter
+ \titleformat\chapter[display]%
+ {\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}%
+ {%
+ \ifx\@chapapp\korean@appendix@chapapp
+ \appendixname\space \thechapter
+ \else
+ \koreanTHEname\space \thechapter\space \@chapapp
+ \fi
+ }{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}%
+ \fi
+ \else % (not \ifdefined\titleformat)
+ % With KOMA
+ \ifdefined\sectionformat
+ \ifdefined\partformat
+ \let\xpg@save@part@format\partformat
+ \renewcommand*{\partformat}{\koreanTHEname~\thepart~\partname}%
+ \fi
+ \ifdefined\chapterformat
+ \let\xpg@save@chap@format\chapterformat
+ \renewcommand*{\chapterformat}{\mbox{%
+ \IfChapterUsesPrefixLine
+ {%
+ \ifx\@chapapp\korean@appendix@chapapp
+ \chapappifchapterprefix\nobreakspace \thechapter\autodot
+ \else
+ \koreanTHEname\nobreakspace \thechapter\nobreakspace \chapappifchapterprefix{}%
+ \fi
+ }%
+ {\thechapter\autodot\enskip}%
+ }}%
+ \fi
+ \else % (not \ifdefined\sectionformat)
+ % With memoir
+ \ifdefined\@memptsize
+ \ifdefined\@makechapterhead
+ \let\xpg@save@chap@format\@makechapterhead
+ \patchcmd{\@makechapterhead}%
+ {\printchaptername \chapternamenum \printchapternum}%
+ {%
+ \ifx\@chapapp\korean@appendix@chapapp
+ \printchaptername\relax\chapternamenum \printchapternum
+ \else
+ \printkoreanchapterthe \printchapternum\chapternamenum \printchaptername
+ \fi
+ }%
+ {}%
+ {\xpg@warning{Failed to patch chapter for Korean}}%
+ \ifdefined\printkoreanchapterthe\else
+ \def\printkoreanchapterthe{%
+ \ifpatchable\printchaptername\@chapapp
+ {\chapnamefont\koreanTHEname\chapternamenum}{}}%
+ \fi
+ \fi
+ \ifdefined\@part
+ \let\xpg@save@part@format\@part
+ \patchcmd{\@part}%
+ {\printpartname \partnamenum \printpartnum}%
+ {\printkoreanpartthe \printpartnum\partnamenum \printpartname}%
+ {}%
+ {\xpg@warning{Failed to patch part for Korean}}%
+ \ifdefined\printkoreanpartthe\else
+ \def\printkoreanpartthe{\partnamefont\koreanTHEname\partnamenum}%
+ \fi
+ \fi
+ \else % (not \ifdefined\@memptsize)
+ % With standard classes
+ \ifdefined\@makechapterhead
+ \let\xpg@save@chap@format\@makechapterhead
+ \patchcmd{\@makechapterhead}%
+ {\@chapapp\space \thechapter}%
+ {%
+ \ifx\@chapapp\korean@appendix@chapapp
+ \appendixname\space \thechapter
+ \else
+ \koreanTHEname\space \thechapter\space \@chapapp
+ \fi
+ }%
+ {}%
+ {\xpg@warning{Failed to patch chapter for Korean}}%
+ \fi
+ \ifdefined\@part
+ \let\xpg@save@part@format\@part
+ \patchcmd{\@part}%
+ {\partname\nobreakspace\thepart}%
+ {\koreanTHEname\nobreakspace \thepart\nobreakspace \partname}%
+ {}%
+ {\xpg@warning{Failed to patch part for Korean}}%
+ \fi % (end \ifdefined\@part)
+ \fi % (end \ifdefined\@memptsize)
+ \fi % (end \ifdefined\sectionformat)
+ \fi % (end \ifdefined\titleformat)
+ \fi % (end \if@korean@swapheadings)
+ %
+ % Change running headers
+ \if@korean@swapheaders
+ \ifdefined\chapterformat
+ % With KOMA
+ \let\xpg@save@chaptermark@format\chaptermarkformat
+ \renewcommand*\chaptermarkformat{%
+ \IfChapterUsesPrefixLine
+ {%
+ \ifx\@chapapp\korean@appendix@chapapp
+ \chapappifchapterprefix\ \thechapter\autodot
+ \else
+ \koreanTHEname\ \thechapter\ \chapappifchapterprefix{}%
+ \fi
+ }%
+ {\thechapter\autodot}%
+ \enskip
+ }%
+ \else % (not \ifdefined\chapterformat)
+ \ifdefined\@memptsize
+ % With memoir
+ \let\xpg@save@chaptermark@format\chaptermark
+ \patchcmd{\chaptermark}%
+ {\@chapapp\ \@nameuse{thechapter}}%
+ {%
+ \ifx\@chapapp\korean@appendix@chapapp
+ \appendixname\ \@nameuse{thechapter}%
+ \else
+ \koreanTHEname\ \@nameuse{thechapter}\ \@chapapp
+ \fi
+ }%
+ {}%
+ {}%
+ \else % (not \ifdefined\@memptsize)
+ % With standard classes
+ \ifdefined\chaptermark
+ \let\xpg@save@chaptermark@format\chaptermark
+ \patchcmd{\chaptermark}%
+ {\@chapapp\ \thechapter}%
+ {%
+ \ifx\@chapapp\korean@appendix@chapapp
+ \appendixname\ \thechapter
+ \else
+ \koreanTHEname\ \thechapter\ \@chapapp
+ \fi
+ }%
+ {}%
+ {}%
+ \fi % (end \ifdefined\chaptermark)
+ \fi % (end \ifdefined\@memptsize)
+ \fi % (end \ifdefined\chapterformat)
+ \fi % (end \if@korean@swapheaders)
+}
+
+\def\nokorean@headingsformat{%
+ % Reset chapter and part heading
+ \ifdefined\titleformat
+ % With titlesec
+ \ifdefined\xpg@save@part@format
+ \let\@part\xpg@save@part@format
+ \fi
+ \ifdefined\chapter
+ \titleformat\chapter[display]%
+ {\@ifundefined{ttl@fil}{\raggedright}{\ttl@fil}\ttl@fonts\ttl@sizes6}%
+ {\@chapapp\space\thechapter}{.8\baselineskip}{\ttl@sizes\z@\ttl@passexplicit}%
+ \fi
+ \else % (not \ifdefined\titleformat)
+ \ifdefined\sectionformat
+ % With KOMA
+ \ifdefined\xpg@save@part@format
+ \let\partformat\xpg@save@part@format
+ \fi
+ \ifdefined\xpg@save@chap@format
+ \let\chapterformat\xpg@save@chap@format
+ \fi
+ \else
+ % With memoir and standard classes
+ \ifdefined\xpg@save@part@format
+ \let\@part\xpg@save@part@format
+ \fi
+ \ifdefined\xpg@save@chap@format
+ \let\@makechapterhead\xpg@save@chap@format
+ \fi
+ \fi % (end \ifdefined\sectionformat)
+ \fi % (end \ifdefined\titleformat)
+ %
+ % Reset headers
+ \ifdefined\chaptermarkformat
+ % With KOMA
+ \ifdefined\xpg@save@chaptermark@format
+ \let\chaptermarkformat\xpg@save@chaptermark@format
+ \fi
+ \else
+ \ifdefined\chaptermark
+ % With memoir and standard classes
+ \ifdefined\xpg@save@chaptermark@format
+ \let\chaptermark\xpg@save@chaptermark@format
+ \fi
+ \fi % (end \ifdefined\chaptermark)
+ \fi % (end \ifdefined\chapterformat)
}
\def\datekorean{%
@@ -7827,17 +10616,11 @@ and may look very wrong.}
\def\blockextras@korean{%
\inlineextras@korean
- \ifdefined\@chapapp
- \long\def\@tmpa{\chaptername}\def\@tmpb{\chaptername}%
- \ifnum0\ifx\@chapapp\@tmpa1\else\ifx\@chapapp\@tmpb1\fi\fi>\z@
- \let\xpg@orig@@chapapp\@chapapp
- \def\@chapapp##1##2{\koreanTHEname ##1##2##1\chaptername}%
- \fi
- \fi
+ \korean@headingsformat
}
\def\noextras@korean@common{%
- \ifdefined\xpg@orig@@chapapp \let\@chapapp\xpg@orig@@chapapp \fi
+ \nokorean@headingsformat
}
\ifluatex % luatex
@@ -7871,6 +10654,51 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-korean.ldf>
+%<*gloss-ku-Arab.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ku-Arab.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ku-Arab.ldf}[polyglossia: module for ku-Arab (kurdish)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{kurdish}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ku-Arab.ldf>
+%<*gloss-ku-Latn.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ku-Latn.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ku-Latn.ldf}[polyglossia: module for ku-Latn (kurdish)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{kurdish}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ku-Latn.ldf>
+%<*gloss-ku.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ku.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ku.ldf}[polyglossia: module for ku (kurdish)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{kurdish}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ku.ldf>
%<*gloss-kurdish.ldf>
% \fi
% \clearpage
@@ -7887,6 +10715,7 @@ and may look very wrong.}
\RequirePackage{hijrical}
\PolyglossiaSetup{kurdish}{
+ bcp47=ckb,
script=Arabic,
direction=RL,
scripttag=arab,
@@ -7896,6 +10725,17 @@ and may look very wrong.}
localnumeral=kurdishnumerals
}
+% BCP-47 compliant aliases
+\setlanguagealias*{kurdish}{ku}
+\setlanguagealias*[variant=kurmanji,script=Latin]{kurdish}{kmr-Latn}
+\setlanguagealias*[variant=sorani]{kurdish}{ckb}
+\setlanguagealias*[variant=kurmanji,script=Arabic]{kurdish}{kmr-Arab}
+\setlanguagealias*[script=Latin]{kurdish}{ku-Latn}
+\setlanguagealias*[variant=sorani,script=Arabic]{kurdish}{ckb-Arab}
+\setlanguagealias*[variant=sorani,script=Latin]{kurdish}{ckb-Latn}
+\setlanguagealias*[script=Arabic]{kurdish}{ku-Arab}
+\setlanguagealias*[variant=kurmanji]{kurdish}{kmr}
+
% Babel aliases
\setlanguagealias[variant=kurmanji]{kurdish}{kurmanji}
@@ -7942,9 +10782,9 @@ and may look very wrong.}
\@western@numeralstrue%
\if@kurdish@kurmanji
\def\kurdish@pattern{kurmanji}%
- \SetLanguageKeys{kurdish}{script=Latin,direction=LR,scripttag=latn,babelname=kurmanji}%
+ \SetLanguageKeys{kurdish}{script=Latin,direction=LR,scripttag=latn,babelname=kurmanji,bcp47=kmr-Latn}%
\else
- \SetLanguageKeys{kurdish}{script=Latin,direction=LR,scripttag=latn,babelname=kurdish}%
+ \SetLanguageKeys{kurdish}{script=Latin,direction=LR,scripttag=latn,babelname=kurdish,bcp47=ckb-Arab}%
\fi
\def\kurdish@script{latin}
\xpg@fontsetup@latin{kurdish}%
@@ -7952,20 +10792,20 @@ and may look very wrong.}
\if@kurdish@arabic% Arabic explicitly set
\if@kurdish@kurmanji
\if@force@western@numerals\else\@western@numeralsfalse\fi%
- \SetLanguageKeys{kurdish}{script=Arabic,direction=RL,scripttag=arab,babelname=kurmanji}%
+ \SetLanguageKeys{kurdish}{script=Arabic,direction=RL,scripttag=arab,babelname=kurmanji,bcp47=kmr-Arab}%
\def\kurdish@script{arabic}%
\else
- \SetLanguageKeys{kurdish}{script=Arabic,direction=RL,scripttag=arab,babelname=kurdish}%
+ \SetLanguageKeys{kurdish}{script=Arabic,direction=RL,scripttag=arab,babelname=kurdish,bcp47=ckb-Arab}%
\fi
\xpg@fontsetup@nonlatin{kurdish}%
\else% sorani=Arabic, kurmanji=Latin
\if@kurdish@kurmanji
\@western@numeralstrue%
- \SetLanguageKeys{kurdish}{script=Latin,direction=LR,scripttag=latn,babelname=kurmanji}%
+ \SetLanguageKeys{kurdish}{script=Latin,direction=LR,scripttag=latn,babelname=kurmanji,bcp47=kmr-Latn}%
\xpg@fontsetup@latin{kurdish}%
\def\kurdish@script{latin}
\else
- \SetLanguageKeys{kurdish}{script=Arabic,direction=RL,scripttag=arab,babelname=kurdish}%
+ \SetLanguageKeys{kurdish}{script=Arabic,direction=RL,scripttag=arab,babelname=kurdish,bcp47=ckb-Arab}%
\xpg@fontsetup@nonlatin{kurdish}%
\fi
\fi
@@ -7997,7 +10837,8 @@ and may look very wrong.}
%TODO add option for CALENDAR
-\setkeys{kurdish}{variant,locale}
+% Register default options
+\xpg@initialize@gloss@options{kurdish}{variant=sorani,locale=default,script=Arabic,abjadjimnotail=false,numerals=eastern}
\def\kurdish@language{%
\polyglossia@setup@language@patterns{\kurdish@pattern}%
@@ -8204,19 +11045,9 @@ and may look very wrong.}
\if@western@numerals
\number#1%
\else
- \ifxetex
- \ifnum\XeTeXcharglyph"06F0 > 0\relax
- \farsidigits{\number#1}%
- \else%
- \arabicdigits{\number#1}%
- \fi
- \else\ifluatex
- \expandafter\ifnum\directlua{polyglossia.check_char(0x6F0)} > 0\relax
- \farsidigits{\number#1}%
- \else%
- \arabicdigits{\number#1}%
- \fi
- \fi\fi
+ \xpg@if@char@available{06F0}%
+ {\farsidigits{\number#1}}%
+ {\arabicdigits{\number#1}}%
\fi
}
@@ -8266,6 +11097,81 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-kurdish.ldf>
+%<*gloss-kurmanji.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-kurmanji.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-kurmanji.ldf}[polyglossia: module for kurmanji kurdish]
+
+% We provide this gloss for babel compatibility.
+
+\xpg@load@master@language{kurdish}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-kurmanji.ldf>
+%<*gloss-la-x-classic.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-la-x-classic.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-la-xclassic.ldf}[polyglossia: module for la-xclassic (latin)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{latin}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-la-x-classic.ldf>
+%<*gloss-la-x-ecclesia.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-la-x-ecclesia.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-la-xecclesiastic.ldf}[polyglossia: module for la-xecclesiastic (latin)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{latin}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-la-x-ecclesia.ldf>
+%<*gloss-la-x-medieval.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-la-x-medieval.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-la-xmedieval.ldf}[polyglossia: module for la-xmedieval (latin)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{latin}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-la-x-medieval.ldf>
+%<*gloss-la.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-la.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-la.ldf}[polyglossia: module for la (latin)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{latin}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-la.ldf>
%<*gloss-lao.ldf>
% \fi
% \clearpage
@@ -8280,6 +11186,7 @@ the output is not guaranteed to be correct\MessageBreak
and may look very wrong.}
\fi
\PolyglossiaSetup{lao}{
+ bcp47=lo,
script=Lao,
scripttag=lao,
langtag=LAO,
@@ -8291,6 +11198,9 @@ and may look very wrong.}
%TODO localdigits=laonumber
}
+% BCP-47 compliant aliases
+\setlanguagealias*{lao}{lo}
+
\newif\if@lao@numerals
\def\tmp@lao{lao}
\define@key{lao}{numerals}[arabic]{%
@@ -8299,7 +11209,8 @@ and may look very wrong.}
\@lao@numeralsfalse\fi
}
-\setkeys{lao}{numerals}
+% Register default options
+\xpg@initialize@gloss@options{lao}{numerals=arabic}
% Translations provided by Brian Wilson <bountonw at gmail.com>
\def\captionslao{%
@@ -8420,23 +11331,29 @@ and may look very wrong.}
%
% \subsection{gloss-latin.ldf}
% \begin{macrocode}
-\ProvidesFile{gloss-latin.ldf}[polyglossia: module for Latin v.2.0 2019-10-28]
+\ProvidesFile{gloss-latin.ldf}[polyglossia: module for Latin v.2.2 2020-01-03]
\ExplSyntaxOn
\PolyglossiaSetup {latin}
{
- hyphennames = {latin},
+ bcp47 = la,
hyphenmins = {2,2},
frenchspacing = true,
fontsetup = true,
langtag = LAT
}
+% BCP-47 compliant aliases
+\setlanguagealias*{latin}{la}
+\setlanguagealias*[variant=classic]{latin}{la-x-classic}
+\setlanguagealias*[variant=ecclesiastic]{latin}{la-x-ecclesia}
+\setlanguagealias*[variant=medieval]{latin}{la-x-medieval}
+
% Babel aliases
-\setlanguagealias[variant=classic]{latin}{latinclassic}
-\setlanguagealias[variant=ecclesiastic]{latin}{latinecclesiastic}
-\setlanguagealias[variant=medieval]{latin}{latinmedieval}
+\setlanguagealias[variant=classic]{latin}{classiclatin}
+\setlanguagealias[variant=ecclesiastic]{latin}{ecclesiasticlatin}
+\setlanguagealias[variant=medieval]{latin}{medievallatin}
%%%%% Variables and commands concerning spelling
@@ -8469,8 +11386,7 @@ and may look very wrong.}
\msg_new:nnn {polyglossia} {latin / missing modern patterns}
{
- No~hyphenation~patterns~were~found~for~Latin~\msg_line_context:.~
- I~will~not~hyphenate~Latin~words.
+ The~hyphenation~patterns~for~modern~Latin~were~not~found~\msg_line_context:.
}
\msg_new:nnn {polyglossia} {latin / missing patterns}
@@ -8486,11 +11402,23 @@ and may look very wrong.}
\def \latin@language
{
\polyglossia@setup@language@patterns {latin}
+ \str_case:Vn \l_polyglossia_latin_variant_str
+ {
+ {classic} { \adddialect \l@classiclatin \l@latin }
+ {medieval} { \adddialect \l@medievallatin \l@latin }
+ {ecclesiastic} { \adddialect \l@ecclesiasticlatin \l@latin }
+ }
}
}
{
\msg_warning:nn {polyglossia} {latin / missing modern patterns}
- \adddialect \l@latin \l@nohyphenation
+ \str_case:Vn \l_polyglossia_latin_variant_str
+ {
+ {classic} { \adddialect \l@classiclatin \l@nohyphenation }
+ {medieval} { \adddialect \l@medievallatin \l@nohyphenation }
+ {modern} { \adddialect \l@latin \l@nohyphenation }
+ {ecclesiastic} { \adddialect \l@ecclesiasticlatin \l@nohyphenation }
+ }
}
}
@@ -8502,19 +11430,22 @@ and may look very wrong.}
\def \latin@language
{
\polyglossia@setup@language@patterns {#1}
+ \str_case:Vn \l_polyglossia_latin_variant_str
+ {
+ {classic} {
+ \str_if_eq:nnTF{#1}{liturgicallatin}
+ { \adddialect \l@classiclatin { \use:c {l@#1} } }
+ {}
+ }
+ {medieval} { \adddialect \l@medievallatin { \use:c {l@#1} } }
+ {modern} { \adddialect \l@latin { \use:c {l@#1} } }
+ {ecclesiastic} { \adddialect \l@ecclesiasticlatin { \use:c {l@#1} } }
+ }
}
}
{
- \xpg@ifdefined {latin}
- {
- \msg_warning:nnn {polyglossia} {latin / missing patterns} {#1}
- \adddialect \l@ #1 \l@latin
- \polyglossia_latin_use_modern_patterns:
- }
- {
- \msg_warning:nn {polyglossia} {latin / missing modern patterns}
- \adddialect \l@ #1 \l@nohyphenation
- }
+ \msg_warning:nnn {polyglossia} {latin / missing patterns} {#1}
+ \polyglossia_latin_use_modern_patterns:
}
}
@@ -8528,7 +11459,8 @@ and may look very wrong.}
\directlua { require('polyglossia-latin') }
}
{
- \newXeTeXintercharclass \g_polyglossia_latin_punctuation_class
+ \newXeTeXintercharclass \g_polyglossia_latin_question_exclamation_class
+ \newXeTeXintercharclass \g_polyglossia_latin_colon_semicolon_class
\newXeTeXintercharclass \g_polyglossia_latin_opening_guillemet_class
\newXeTeXintercharclass \g_polyglossia_latin_closing_guillemet_class
\newXeTeXintercharclass \g_polyglossia_latin_opening_bracket_class
@@ -8559,14 +11491,15 @@ and may look very wrong.}
}
{
\XeTeXinterchartokenstate = 1
- \XeTeXcharclass `\! \g_polyglossia_latin_punctuation_class
- \XeTeXcharclass `\? \g_polyglossia_latin_punctuation_class
- \XeTeXcharclass `\‼ \g_polyglossia_latin_punctuation_class
- \XeTeXcharclass `\⁇ \g_polyglossia_latin_punctuation_class
- \XeTeXcharclass `\⁈ \g_polyglossia_latin_punctuation_class
- \XeTeXcharclass `\⁉ \g_polyglossia_latin_punctuation_class
- \XeTeXcharclass `\; \g_polyglossia_latin_punctuation_class
- \XeTeXcharclass `\: \g_polyglossia_latin_punctuation_class
+ \XeTeXcharclass `\! \g_polyglossia_latin_question_exclamation_class
+ \XeTeXcharclass `\? \g_polyglossia_latin_question_exclamation_class
+ \XeTeXcharclass `\‼ \g_polyglossia_latin_question_exclamation_class
+ \XeTeXcharclass `\⁇ \g_polyglossia_latin_question_exclamation_class
+ \XeTeXcharclass `\⁈ \g_polyglossia_latin_question_exclamation_class
+ \XeTeXcharclass `\⁉ \g_polyglossia_latin_question_exclamation_class
+ \XeTeXcharclass `\‽ \g_polyglossia_latin_question_exclamation_class
+ \XeTeXcharclass `\; \g_polyglossia_latin_colon_semicolon_class
+ \XeTeXcharclass `\: \g_polyglossia_latin_colon_semicolon_class
\XeTeXcharclass `\« \g_polyglossia_latin_opening_guillemet_class
\XeTeXcharclass `\» \g_polyglossia_latin_closing_guillemet_class
\XeTeXcharclass `\‹ \g_polyglossia_latin_opening_guillemet_class
@@ -8580,13 +11513,28 @@ and may look very wrong.}
\XeTeXcharclass `\⟨ \g_polyglossia_latin_opening_bracket_class
\XeTeXcharclass `\⟩ \g_polyglossia_latin_closing_bracket_class
- % punctuation followed by a closing guillemet
- \XeTeXinterchartoks \g_polyglossia_latin_punctuation_class \g_polyglossia_latin_closing_guillemet_class =
+ % question or exclamation mark followed by a closing guillemet
+ \XeTeXinterchartoks \g_polyglossia_latin_question_exclamation_class \g_polyglossia_latin_closing_guillemet_class =
+ {
+ \polyglossia_latin_insert_punctuation_space:
+ }
+ % question or exclamation mark followed by a colon or semicolon
+ \XeTeXinterchartoks \g_polyglossia_latin_question_exclamation_class \g_polyglossia_latin_colon_semicolon_class =
+ {
+ \polyglossia_latin_insert_punctuation_space:
+ }
+ % colon or semicolon followed by a closing guillemet
+ \XeTeXinterchartoks \g_polyglossia_latin_colon_semicolon_class \g_polyglossia_latin_closing_guillemet_class =
+ {
+ \polyglossia_latin_insert_punctuation_space:
+ }
+ % closing bracket followed by a question or exclamation mark
+ \XeTeXinterchartoks \g_polyglossia_latin_closing_bracket_class \g_polyglossia_latin_question_exclamation_class =
{
\polyglossia_latin_insert_punctuation_space:
}
- % closing bracket followed by punctuation
- \XeTeXinterchartoks \g_polyglossia_latin_closing_bracket_class \g_polyglossia_latin_punctuation_class =
+ % closing bracket followed by a colon or semicolon
+ \XeTeXinterchartoks \g_polyglossia_latin_closing_bracket_class \g_polyglossia_latin_colon_semicolon_class =
{
\polyglossia_latin_insert_punctuation_space:
}
@@ -8600,18 +11548,38 @@ and may look very wrong.}
{
\polyglossia_latin_replace_following_space:
}
+ % opening guillemet followed by an opening guillemet
+ \XeTeXinterchartoks \g_polyglossia_latin_opening_guillemet_class \g_polyglossia_latin_opening_guillemet_class =
+ {
+ \polyglossia_latin_insert_punctuation_space:
+ }
% opening guillemet followed by an ordinary character
\XeTeXinterchartoks \g_polyglossia_latin_opening_guillemet_class \z@ =
{
\polyglossia_latin_insert_punctuation_space:
}
- % closing guillemet followed by punctuation
- \XeTeXinterchartoks \g_polyglossia_latin_closing_guillemet_class \g_polyglossia_latin_punctuation_class =
+ % closing guillemet followed by a closing guillemet
+ \XeTeXinterchartoks \g_polyglossia_latin_closing_guillemet_class \g_polyglossia_latin_closing_guillemet_class =
+ {
+ \polyglossia_latin_insert_punctuation_space:
+ }
+ % closing guillemet followed by a question or exclamation mark
+ \XeTeXinterchartoks \g_polyglossia_latin_closing_guillemet_class \g_polyglossia_latin_question_exclamation_class =
+ {
+ \polyglossia_latin_insert_punctuation_space:
+ }
+ % closing guillemet followed by a colon or semicolon
+ \XeTeXinterchartoks \g_polyglossia_latin_closing_guillemet_class \g_polyglossia_latin_colon_semicolon_class =
{
\polyglossia_latin_insert_punctuation_space:
}
- % space followed by punctuation
- \XeTeXinterchartoks \xpg@boundaryclass \g_polyglossia_latin_punctuation_class =
+ % space followed by a question or exclamation mark
+ \XeTeXinterchartoks \xpg@boundaryclass \g_polyglossia_latin_question_exclamation_class =
+ {
+ \polyglossia_latin_replace_preceding_space:
+ }
+ % space followed by a colon or semicolon
+ \XeTeXinterchartoks \xpg@boundaryclass \g_polyglossia_latin_colon_semicolon_class =
{
\polyglossia_latin_replace_preceding_space:
}
@@ -8620,8 +11588,13 @@ and may look very wrong.}
{
\polyglossia_latin_replace_preceding_space:
}
- % ordinary character followed by punctuation
- \XeTeXinterchartoks \z@ \g_polyglossia_latin_punctuation_class =
+ % ordinary character followed by a question or exclamation mark
+ \XeTeXinterchartoks \z@ \g_polyglossia_latin_question_exclamation_class =
+ {
+ \polyglossia_latin_insert_punctuation_space:
+ }
+ % ordinary character followed by a colon or semicolon
+ \XeTeXinterchartoks \z@ \g_polyglossia_latin_colon_semicolon_class =
{
\polyglossia_latin_insert_punctuation_space:
}
@@ -8646,6 +11619,7 @@ and may look very wrong.}
\XeTeXcharclass `\⁇ \z@
\XeTeXcharclass `\⁈ \z@
\XeTeXcharclass `\⁉ \z@
+ \XeTeXcharclass `\‽ \z@
\XeTeXcharclass `\; \z@
\XeTeXcharclass `\: \z@
\XeTeXcharclass `\« \z@
@@ -8701,7 +11675,9 @@ and may look very wrong.}
}
}
{
- \msg_warning:nn {polyglossia} {latin / ineffective footnote option}
+ \iflatin@ecclesiasticfootnotes
+ \msg_warning:nn {polyglossia} {latin / ineffective footnote option}
+ \fi
}
}
@@ -8723,6 +11699,8 @@ and may look very wrong.}
%%%%% Language variants: classic, medieval, modern, and ecclesiastic
+\str_new:N \l_polyglossia_latin_variant_str
+
\msg_new:nnn {polyglossia} {latin / language variant}
{
Activating~Latin~language~variant~"#1"~\msg_line_context:.
@@ -8740,7 +11718,8 @@ and may look very wrong.}
\bool_set_false:N \l_polyglossia_latin_use_digraphs_bool
\bool_set_true:N \l_polyglossia_latin_capitalize_month_bool
\bool_set_false:N \l_polyglossia_latin_punctuation_spacing_bool
- \SetLanguageKeys {latin} { babelname = latin.classic }
+ \str_set:Nn \l_polyglossia_latin_variant_str {classic}
+ \SetLanguageKeys {latin} { babelname = classiclatin, bcp47 = la-x-classic }
\polyglossia_latin_set_patterns:n {classiclatin}
}
@@ -8751,7 +11730,8 @@ and may look very wrong.}
\bool_set_true:N \l_polyglossia_latin_use_digraphs_bool
\bool_set_true:N \l_polyglossia_latin_capitalize_month_bool
\bool_set_false:N \l_polyglossia_latin_punctuation_spacing_bool
- \SetLanguageKeys {latin} { babelname = latin.medieval }
+ \str_set:Nn \l_polyglossia_latin_variant_str {medieval}
+ \SetLanguageKeys {latin} { babelname = medievallatin, bcp47 = la-x-medieval }
\polyglossia_latin_use_modern_patterns:
}
@@ -8762,7 +11742,8 @@ and may look very wrong.}
\bool_set_false:N \l_polyglossia_latin_use_digraphs_bool
\bool_set_true:N \l_polyglossia_latin_capitalize_month_bool
\bool_set_false:N \l_polyglossia_latin_punctuation_spacing_bool
- \SetLanguageKeys {latin} { babelname = latin }
+ \str_set:Nn \l_polyglossia_latin_variant_str {modern}
+ \SetLanguageKeys {latin} { babelname = latin, bcp47 = la }
\polyglossia_latin_use_modern_patterns:
}
@@ -8773,7 +11754,8 @@ and may look very wrong.}
\bool_set_true:N \l_polyglossia_latin_use_digraphs_bool
\bool_set_false:N \l_polyglossia_latin_capitalize_month_bool
\bool_set_true:N \l_polyglossia_latin_punctuation_spacing_bool
- \SetLanguageKeys {latin} { babelname = latin.ecclesiastic }
+ \str_set:Nn \l_polyglossia_latin_variant_str {ecclesiastic}
+ \SetLanguageKeys {latin} { babelname = ecclesiasticlatin, bcp47 = la-x-ecclesia }
\polyglossia_latin_use_modern_patterns:
}
@@ -8841,7 +11823,7 @@ and may look very wrong.}
The~Latin~hyphenation~variant~"#1"~is~undefined~\msg_line_context:.
}
-\define@key{latin}{hyphenation}
+\define@key {latin} {hyphenation}
{
\str_case:nnTF {#1}
{
@@ -8940,6 +11922,11 @@ and may look very wrong.}
{
}
+% Register default options
+\xpg@initialize@gloss@options{latin}{variant=modern,hyphenation=modern,babelshorthands=false,
+ prosodicshorthands=false,ecclesiasticfootnotes=false,
+ usej=false,capitalizemonth=true}
+
\ifsystem@babelshorthands
\setkeys{latin}{babelshorthands=true}
\else
@@ -9322,7 +12309,7 @@ and may look very wrong.}
%% Copyright (C) Claudio Beccari 2013-2016
%% Copyright (C) Élie Roux 2016-2019
-%% Copyright (C) Keno Wehr 2019
+%% Copyright (C) Keno Wehr 2019-2020
%%
%% Permission is hereby granted, free of charge, to any person obtaining
%% a copy of this software and associated documentation files
@@ -9400,12 +12387,16 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-latvian.ldf}[polyglossia: module for latvian]
\PolyglossiaSetup{latvian}{
+ bcp47=lv,
hyphennames={latvian},
hyphenmins={2,2},
langtag=LVI,
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{latvian}{lv}
+
\def\captionslatvian{%
\def\prefacename{Priekšvārds}%
\def\refname{Literatūras saraksts}%
@@ -9451,6 +12442,7 @@ and may look very wrong.}
\ProvidesFile{gloss-lithuanian.ldf}[polyglossia: module for lithuanian]
\PolyglossiaSetup{lithuanian}{
+ bcp47=lt,
hyphennames={lithuanian},
hyphenmins={2,2},
langtag=LTH,
@@ -9458,6 +12450,9 @@ and may look very wrong.}
fontsetup=true
}
+% BCP-47 compliant aliases
+\setlanguagealias*{lithuanian}{lt}
+
\def\captionslithuanian{%
\def\prefacename{Pratarmė}%
\def\refname{Literatūra}%
@@ -9514,6 +12509,21 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-lithuanian.ldf>
+%<*gloss-lo.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-lo.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-lo.ldf}[polyglossia: module for lo (lao)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{lao}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-lo.ldf>
%<*gloss-lowersorbian.ldf>
% \fi
% \clearpage
@@ -9545,6 +12555,36 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-lsorbian.ldf>
+%<*gloss-lt.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-lt.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-lt.ldf}[polyglossia: module for lt (lithuanian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{lithuanian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-lt.ldf>
+%<*gloss-lv.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-lv.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-lv.ldf}[polyglossia: module for lv (latvian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{latvian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-lv.ldf>
%<*gloss-macedonian.ldf>
% \fi
% \clearpage
@@ -9553,6 +12593,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-macedonian.ldf}[polyglossia: module for macedonian]
\PolyglossiaSetup{macedonian}{
+ bcp47=mk,
script=Cyrillic,
scripttag=cyrl,
langtag=MKD,
@@ -9562,6 +12603,9 @@ and may look very wrong.}
fontsetup
}
+% BCP-47 compliant aliases
+\setlanguagealias*{macedonian}{mk}
+
\def\macedonian@Alph#1{%
\ifcase#1\or
А\or Б\or В\or Г\or Д\or Ѓ\or Е\or
@@ -9662,11 +12706,17 @@ and may look very wrong.}
\RequirePackage{hijrical}
\PolyglossiaSetup{malay}{%
+ bcp47=id,
language=Malay,
langtag=MLY,
hyphennames={malay,melayu,bahasam,bahasai,indonesian,indon,bahasa},
hyphenmins={2,2},
- fontsetup=true}
+ fontsetup=true
+}
+
+% BCP-47 compliant aliases
+\setlanguagealias*[variant=malaysian]{malay}{zsm}
+\setlanguagealias*[variant=indonesian]{malay}{id}
% Babel aliases
\setlanguagealias[variant=indonesian]{malay}{bahasai}
@@ -9689,7 +12739,7 @@ and may look very wrong.}
\malay@melayutrue
\fi
\ifmalay@melayu
- \SetLanguageKeys{malay}{language=Malay,langtag=MLY,babelname=bahasam}%
+ \SetLanguageKeys{malay}{language=Malay,langtag=MLY,babelname=bahasam,bcp47=zsm}%
\xpg@fontsetup@latin{malay}%
% Check if \l@malay is defined. If not, try to set it to some variety
% (specific order as in the csv list below), or null language if everything fails
@@ -9707,7 +12757,7 @@ and may look very wrong.}
}%
}%
\else
- \SetLanguageKeys{malay}{language=Indonesian,langtag=IND,babelname=bahasa}%
+ \SetLanguageKeys{malay}{language=Indonesian,langtag=IND,babelname=bahasa,bcp47=id}%
\xpg@fontsetup@latin{malay}%
% Check if \l@indonesian is defined. If not, try to set it to some variety
% (specific order as in the csv list below), or null language if everything fails
@@ -9728,6 +12778,9 @@ and may look very wrong.}
\xpg@info{Option: malay, variant=\val}%
}{\xpg@warning{Unknown malay variant `#1'}}
+% Register default options
+\xpg@initialize@gloss@options{malay}{variant=malaysian}
+
\def\malay@language{%
\polyglossia@setup@language@patterns{\malay@variant}%
@@ -9853,6 +12906,7 @@ and may look very wrong.}
% Translations provided by Kevin & Siji, 01-11-2009
\PolyglossiaSetup{malayalam}{
+ bcp47=ml,
script=Malayalam,
scripttag=mlym,
langtag=MAL, %FIXME there is also MLR for "Malayalam Reformed"
@@ -9861,6 +12915,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{malayalam}{ml}
+
\def\captionsmalayalam{%
\def\abstractname{സാരാംശം}%
\def\appendixname{ശിഷ്ടം}%
@@ -9911,6 +12968,7 @@ and may look very wrong.}
% \subsection{gloss-marathi.ldf}
% \begin{macrocode}
% Translations provided by Abhijit Navale <abhi_navale@live.in>
+% Ordinals (1-100) added by Niranjan Tambe <niranjanvikastambe@gmail.com> on 14th December, 2019
% TODO implement Hindu calendar (not used in day-to-day practice)
\ProvidesFile{gloss-marathi.ldf}[polyglossia: module for marathi]
@@ -9923,6 +12981,7 @@ and may look very wrong.}
\RequirePackage{devanagaridigits}
\PolyglossiaSetup{marathi}{
+ bcp47=mr,
script=Devanagari,
scripttag=deva,
langtag=MAR,
@@ -9933,15 +12992,25 @@ and may look very wrong.}
%TODO nouppercase=true,
}
-\def\tmp@western{Western}
+% BCP-47 compliant aliases
+\setlanguagealias*{marathi}{mr}
+
\newif\ifmarathi@devanagari@numerals
\marathi@devanagari@numeralstrue
-\define@key{marathi}{numerals}[Devanagari]{%
- \def\@tmpa{#1}%
- \ifx\@tmpa\tmp@western
- \marathi@devanagari@numeralsfalse
- \fi}
+\define@choicekey*+{marathi}{numerals}[\val\nr]{Western,Devanagari}[Devanagari]{%
+ \ifcase\nr\relax
+ % Western:
+ \marathi@devanagari@numeralsfalse%
+ \or
+ % Devanagari:
+ \marathi@devanagari@numeralstrue%
+ \fi
+ \xpg@info{Option: Marathi, numerals=\val}%
+}{\xpg@warning{Unknown Marathi numerals value `#1'}}
+
+% Register default options
+\xpg@initialize@gloss@options{marathi}{numerals=Devanagari}
\newcommand{\marathinumerals}[2]{\marathinumber{#2}}
@@ -9950,55 +13019,155 @@ and may look very wrong.}
\devanagaridigits{\number#1}%
\else
\number#1%
- \fi}
+ \fi%
+}
\def\captionsmarathi{%
\def\refname{संदर्भ}%
\def\abstractname{सारांश}%
- \def\bibname{संदर्भ ग्रंथांची यादी}%
+ \def\bibname{संदर्भसूची}%
\def\prefacename{प्रस्तावना}%
\def\chaptername{प्रकरण}%
\def\appendixname{परिशिष्ट}%
\def\contentsname{अनुक्रमणिका}%
- \def\listfigurename{आकृत्यांची यादी}%
- \def\listtablename{कोष्टकांची यादी}%
+ \def\listfigurename{आकृत्यांची सूची}%
+ \def\listtablename{कोष्टक सूची}%
\def\indexname{सूची}%
\def\figurename{आकृती}%
\def\tablename{कोष्टक}%
- %\def\thepart{}% TODO
- \def\partname{भाग}%
- \def\pagename{पान}%
- \def\seename{पहा}%
- \def\alsoname{हे सुध्दा पहा}%
+ \def\partname{खंड}%
+ \def\pagename{पृष्ठ}%
+ \def\seename{पाहा}%
+ \def\alsoname{हेदेखील पाहा}%
\def\enclname{समाविष्ट}%
- \def\ccname{सि.सि.}%
+ \def\ccname{सी.सी.}%
\def\headtoname{प्रति}%
\def\proofname{सिद्धता}%
- \def\glossaryname{स्पष्टीकरणांची यादी}%
+ \def\glossaryname{संक्षेपसूची}%
\def\authorsand{आणि}%
}
+
\def\datemarathi{%
\def\marathimonth{%
\ifcase\month\or
- जानेवारी\or
- फेब्रुवारी\or
- मार्च\or
- एप्रिल\or
- मे\or
- जून\or
- जुलै\or
- ऑगस्ट\or
- सप्टेंबर\or
- ऑक्टोबर\or
- नोव्हेंबर\or
- डिसेंबर\fi
+ जानेवारी\or
+ फेब्रुवारी\or
+ मार्च\or
+ एप्रिल\or
+ मे\or
+ जून\or
+ जुलै\or
+ ऑगस्ट\or
+ सप्टेंबर\or
+ ऑक्टोबर\or
+ नोव्हेंबर\or
+ डिसेंबर%
+ \fi%
}%
- \def\today{\marathinumber\day\space\marathimonth\space\marathinumber\year}%
+ \def\today{%
+ \marathinumber\day\space\marathimonth\space\marathinumber\year%
+ }%
+}
+
+\def\devanagari@akshar#1{\ifcase#1\or अ\or आ\or इ\or ई\or उ\or ऊ\or ए\or ऐ\or ओ\or औ\or अं\or अः\else\@ctrerr\fi}
+
+\def\devanagari@alph#1{%
+ \ifcase#1\or क\or ख\or ग\or घ\or ङ\or च\or छ\or ज\or झ\or ञ\or ट\or ठ\or ड\or ढ\or ण\or त\or थ\or द%
+ \or ध\or न\or प\or फ\or ब\or भ\or म\or य\or र\or ल\or व\or श\or ष\or स\or ह\or ळ\else\@ctrerr%
+ \fi%
+}
+
+\def\devanagari@letter#1{%
+ \ifcase#1\or एक\or दोन\or तीन\or चार\or पाच\or सहा\or सात\or आठ\or नऊ\or दहा\or अकरा\or बारा\or तेरा\or चौदा%
+ \or पंधरा\or सोळा\or सतरा\or अठरा\or एकोणीस\or वीसएकवीस\or बावीस\or तेवीस\or चोवीस\or पंचवीस\or सव्वीस\or सत्तावीस\or अठाव्वीस%
+ \or एकोणतीस\or तीस\or एकतीस\or बत्तीस\or तेहेत्तीस \or चौतीस \or पस्तीस \or छत्तीस \or सतदिस \or अडतीस \or एकोणचाळीस \or चाळीस %
+ \or एक्केचाळीस \or बेचाळीस \or त्रेचाळीस \or चौवेचाळीस\or पंचेचाळीस \or सेहेचाळीस \or सत्तेचाळीस \or अठ्ठेचाळीस \or एकोणपन्नास \or पन्नास %
+ \or एक्कावन्न \or बावन्न \or त्रेपन्न \or चोपन्न \or पंचावन्न \or छपन्न\or सत्तावन्न \or अठ्ठावन्न \or एकोणसाठ \or साठ \or एकसष्ठ \or बासष्ठ \or त्रेसष्ट %
+ \or चौसष्ठ \or पासष्ठ \or सहासष्ठ \or सदुष्ठ \or अडुसष्ठ \or एकोणसत्तर\or सत्तर \or एकाहत्तर \or बहात्तर \or त्र्याहत्तर \or चौऱ्याहत्तर \or पंच्याहत्तर %
+ \or शहात्तर \or सत्याहत्तर \or अठ्याहत्तर \or एकोणऐशी \or ऐंशी\or एक्याऐंशी \or ब्याऐंशी \or त्र्याऐंशी \or चौऱ्याऐंशी \or पंच्याऐंशी \or शह्यांशी \or सत्यांऐंशी %
+ \or अठ्ठ्याऐंशी \or एकोणनव्वद \or नव्वद \or एक्याण्णव\or ब्याण्णव \or त्र्याण्णव \or चौऱ्याण्णव \or पंच्याण्णव \or शहाण्णव \or सत्याण्णव \or अठ्याण्णव %
+ \or नव्याण्णव \or शंभर\else\@ctrerr%
+ \fi%
+}
+
+\let\xpg@save@roman\@roman
+\let\xpg@save@Roman\@Roman
+
+\def\marathi@numbers{%
+ \let\@alph\devanagari@akshar
+ \let\@Alph\devanagari@letter
+ \let\@roman\devanagari@alph
+ \let\@Roman\devanagari@letter
+}
+
+\def\nomarathi@numbers{%
+ \let\@alph\latin@alph%
+ \let\@Alph\latin@Alph%
+ \let\@roman\xpg@save@roman
+ \let\@Roman\xpg@save@Roman
+}
+
+\def\blockextras@marathi{%
+ \let\xpg@orig@baselinestretch\baselinestrech%
+ \renewcommand{\baselinestretch}{1.2}%
+ \renewcommand{\labelitemii}{$\rightarrow$}%
+}
+
+\let\xpg@orig@labelitemii\labelitemii
+
+\def\noextras@marathi{%
+ \let\baselinestrech\xpg@orig@baselinestretch%
+ \let\labelitemii\xpg@orig@labelitemii%
}
% \end{macrocode}
% \iffalse
%</gloss-marathi.ldf>
+%<*gloss-mk.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-mk.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-mk.ldf}[polyglossia: module for mk (macedonian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{macedonian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-mk.ldf>
+%<*gloss-ml.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-ml.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-ml.ldf}[polyglossia: module for ml (malayalam)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{malayalam}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-ml.ldf>
+%<*gloss-mn.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-mn.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-mn.ldf}[polyglossia: module for mn (mongolian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{mongolian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-mn.ldf>
%<*gloss-mongolian.ldf>
% \fi
% \clearpage
@@ -10010,6 +13179,7 @@ and may look very wrong.}
\RequirePackage{xpg-cyrillicnumbers}
\PolyglossiaSetup{mongolian}{
+ bcp47=mn,
script=Cyrillic,
scripttag=cyrl,
langtag=MNG,
@@ -10021,6 +13191,9 @@ and may look very wrong.}
Localnumeral=Mongoliannumerals
}
+% BCP-47 compliant aliases
+\setlanguagealias*{mongolian}{mn}
+
% This file is derived from mongolian-babel. which
% provides support for Mongolian (Khalkha variety)
% with Cyrillic script
@@ -10028,15 +13201,32 @@ and may look very wrong.}
% variants of Mongolian
\newif\ifcyrillic@numerals
-\define@key{mongolian}{numerals}[arabic]{%
- \ifstrequal{#1}{cyrillic}%
- {\cyrillic@numeralstrue}%
- {\cyrillic@numeralsfalse}%
-}
+\newif\ifcyrillic@asbuk@numerals
+\define@choicekey*+{mongolian}{numerals}[\val\nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
+ \ifcase\nr\relax
+ % arabic:
+ \cyrillic@numeralsfalse%
+ \cyrillic@asbuk@numeralsfalse%
+ \or
+ % cyrillic:
+ \cyrillic@numeralstrue%
+ \cyrillic@asbuk@numeralsfalse%
+ \or
+ % cyrillic-trad:
+ \cyrillic@numeralstrue%
+ \cyrillic@asbuk@numeralsfalse%
+ \or
+ % cyrillic-alph:
+ \cyrillic@numeralstrue%
+ \cyrillic@asbuk@numeralstrue%
+ \fi
+ \xpg@info{Option: Mongolian, numerals=\val}%
+}{\xpg@warning{Unknown Mongolian numerals value `#1'}}
-\define@boolkey{mongolian}[mongolian@]{babelshorthands}[false]{}
+\define@boolkey{mongolian}[mongolian@]{babelshorthands}[true]{}
-\setkeys{mongolian}{numerals}
+% Register default options
+\xpg@initialize@gloss@options{mongolian}{babelshorthands=false,numerals=arabic}
\ifsystem@babelshorthands
\setkeys{mongolian}{babelshorthands=true}
@@ -10131,7 +13321,11 @@ and may look very wrong.}
\def\mongoliannumber#1{%
\ifcyrillic@numerals
- \cyr@alph{#1}%
+ \ifcyrillic@asbuk@numerals
+ \mongolian@asbuk@alph{#1}%
+ \else
+ \cyr@alph{#1}%
+ \fi
\else
\number#1%
\fi%
@@ -10139,7 +13333,11 @@ and may look very wrong.}
\def\Mongoliannumber#1{%
\ifcyrillic@numerals
- \cyr@Alph{#1}%
+ \ifcyrillic@asbuk@numerals
+ \mongolian@asbuk@Alph{#1}%
+ \else
+ \cyr@Alph{#1}%
+ \fi
\else
\number#1%
\fi%
@@ -10148,24 +13346,29 @@ and may look very wrong.}
\let\mongoliannumeral=\mongoliannumber
\let\Mongoliannumeral=\Mongoliannumber
-\def\Asbuk#1{\expandafter\cyr@Alph\csname c@#1\endcsname}
+\def\Asbuk#1{\expandafter\mongolian@asbuk@Alph\csname c@#1\endcsname}
+\def\asbuk#1{\expandafter\mongolian@asbuk@alph\csname c@#1\endcsname}
-\def\asbuk#1{\expandafter\cyr@alph\csname c@#1\endcsname}
+\def\AsbukTrad#1{\expandafter\cyr@Alph\csname c@#1\endcsname}
+\def\asbukTrad#1{\expandafter\cyr@alph\csname c@#1\endcsname}
% This is a poor man's cyrillic alphanumeric. It just uses the alphabet and
-% thus ends at 30. We now use proper cyrillic numbering.
-
-%\def\mongolian@Alph#1{\ifcase#1\or
-% А\or Б\or В\or Г\or Д\or Е\or Ж\or
-% З\or И\or К\or Л\or М\or Н\or О\or
-% П\or Р\or С\or Т\or У\or Ф\or Х\or
-% Ц\or Ч\or Ш\or Щ\or Э\or Ю\or Я\else\xpg@ill@value{#1}{mongolian@Alph}\fi}
+% thus ends at 30.
+\def\mongolian@asbuk@Alph#1{\ifcase#1\or
+ А\or Б\or В\or Г\or Д\or Е\or Ж\or
+ З\or И\or К\or Л\or М\or Н\or О\or
+ П\or Р\or С\or Т\or У\or Ф\or Х\or
+ Ц\or Ч\or Ш\or Щ\or Э\or Ю\or Я%
+ \else\xpg@ill@value{#1}{mongolian@asbuk@Alph}\fi%
+}
-%\def\mongolian@alph#1{\ifcase#1\or
-% а\or б\or в\or г\or д\or е\or ж\or
-% з\or и\or к\or л\or м\or н\or о\or
-% п\or р\or с\or т\or у\or ф\or х\or
-% ц\or ч\or ш\or щ\or э\or ю\or я\else\xpg@ill@value{#1}{mongolian@alph}\fi}
+\def\mongolian@asbuk@alph#1{\ifcase#1\or
+ а\or б\or в\or г\or д\or е\or ж\or
+ з\or и\or к\or л\or м\or н\or о\or
+ п\or р\or с\or т\or у\or ф\or х\or
+ ц\or ч\or ш\or щ\or э\or ю\or я%
+ \else\xpg@ill@value{#1}{mongolian@asbuk@alph}\fi%
+}
\def\mongolian@numbers{%
\let\latin@alph\@alph
@@ -10200,6 +13403,21 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-mongolian.ldf>
+%<*gloss-mr.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-mr.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-mr.ldf}[polyglossia: module for mr (marathi)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{marathi}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-mr.ldf>
%<*gloss-naustrian.ldf>
% \fi
% \clearpage
@@ -10215,6 +13433,21 @@ and may look very wrong.}
% \end{macrocode}
% \iffalse
%</gloss-naustrian.ldf>
+%<*gloss-nb.ldf>
+% \fi
+% \clearpage
+%
+% \subsection{gloss-nb.ldf}
+% \begin{macrocode}
+\ProvidesFile{gloss-nb.ldf}[polyglossia: module for nb (norwegian)]
+
+% We provide this as a bcp47-compliant alias
+
+\xpg@load@master@language{norwegian}
+
+% \end{macrocode}
+% \iffalse
+%</gloss-nb.ldf>
%<*gloss-newzealand.ldf>
% \fi
% \clearpage
@@ -10253,6 +13486,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-nko.ldf}[Polyglossia: module for N’Ko v0.1 2013/05/19]
\PolyglossiaSetup{nko}{%
+ bcp47=nko,
script=N'ko,
scripttag=nko~,
langtag=NKO,
@@ -10261,6 +13495,7 @@ and may look very wrong.}
direction=RL,
localnumeral=nkonumerals
}
+
\RequirePackage{nkonumbers}%
\newcommand{\nkonumerals}[2]{\nkonumber{#2}}
@@ -10361,6 +13596,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-norwegian.ldf}[polyglossia: module for norwegian]
\PolyglossiaSetup{norwegian}{
+ bcp47=nn,
hyphennames={nynorsk},
langtag=NYN,
hyphenmins={2,2},
@@ -10368,6 +13604,9 @@ and may look very wrong.}
fontsetup=false,
}
+% BCP-47 compliant aliases
+\setlanguagealias*[variant=bokmal]{norwegian}{nb}
+\setlanguagealias*[variant=nynorsk]{norwegian}{nn}
% Babel and backwards compat. aliases
\setlanguagealias[variant=bokmal]{norwegian}{norsk}
\setlanguagealias[variant=nynorsk]{norwegian}{nynorsk}
@@ -10377,20 +13616,24 @@ and may look very wrong.}
\ifcase\nr\relax
% nynorsk:
\def\norwegian@variant{nynorsk}%
- \SetLanguageKeys{norwegian}{langtag=NYN,babelname=nynorsk}%
+ \SetLanguageKeys{norwegian}{langtag=NYN,babelname=nynorsk,bcp47=nn}%
\xpg@fontsetup@latin{norwegian}%
\or
% bokmal:
\def\norwegian@variant{norsk}%
- \SetLanguageKeys{norwegian}{langtag=NOR,babelname=norsk}%
+ \SetLanguageKeys{norwegian}{langtag=NOR,babelname=norsk,bcp47=nb}%
\xpg@fontsetup@latin{norwegian}%
\fi
\xpg@info{Option: norwegian, variant=\val}%
}{\xpg@warning{Unknown norwegian variant `#1'}}
+% Register default options
+\xpg@initialize@gloss@options{norwegian}{variant=nynorsk}
+
+
\def\norwegian@language{%
- \polyglossia@setup@language@patterns{\norwegian@variant}
+ \polyglossia@setup@language@patterns{\norwegian@variant}%
}%
\def\captionsnorwegian@nynorsk{%
@@ -10525,6 +13768,7 @@ and may look very wrong.}
\ProvidesFile{gloss-occitan.ldf}[2016/02/04 v0.3 polyglossia:
module for Occitan]
\PolyglossiaSetup{occitan}{
+ bcp47=oc,
hyphennames={occitan},
langtag=OCI,
hyphenmins={2,2},
@@ -10532,6 +13776,10 @@ and may look very wrong.}
indentfirst=true,
fontsetup=true,
}
+
+% BCP-47 compliant aliases
+\setlanguagealias*{occitan}{oc}
+
\define@boolkey{occitan}[occitan@]{babelshorthands}[true]{}
\ifsystem@babelshorthands
@@ -10687,6 +13935,7 @@ and may look very wrong.}
\RequirePackage{farsical}
\RequirePackage{hijrical}
\PolyglossiaSetup{persian}{
+ bcp47=fa,
babelname=farsi,
script=Arabic,
direction=RL,
@@ -10697,6 +13946,9 @@ and may look very wrong.}
localnumeral=farsinumerals
}
+% BCP-47 compliant aliases
+\setlanguagealias*{persian}{fa}
+
% Babel and backwards compat. alias
\setlanguagealias{persian}{farsi}
@@ -10723,7 +13975,8 @@ and may look very wrong.}
%TODO add option for CALENDAR
-\setkeys{persian}{locale,numerals}
+% Register default options
+\xpg@initialize@gloss@options{persian}{locale=default,numerals=eastern,abjadjimnotail=false}
\def\farsigregmonth#1{\ifcase#1%
\or ژانویه\or فوریه\or مارس\or آوریل\or مه\or ژوئن\or ژوئیه\or اوت\or سپتامبر\or اکتبر\or نوامبر\or دسامبر\fi}
@@ -10764,28 +14017,13 @@ and may look very wrong.}
\newcommand{\farsinumerals}[2]{\farsinumber{#2}}
-\newif\ifpersiandigits
-
\def\farsinumber#1{%
\if@western@numerals
\number#1%
\else
- \ifxetex
- \ifnum\XeTeXcharglyph"06F0 > 0\relax
- \persiandigitstrue
- \fi
- \else\ifluatex
- \expandafter\ifnum\directlua{polyglossia.check_char(0x6F0)} > 0\relax
- \persiandigitstrue
- \fi
- \fi\fi
- \ifpersiandigits
- \farsidigits{\number#1}%
- %%{\protect\addfontfeature{Mapping=farsidigits}\number#1}%
- \else%
- \arabicdigits{\number#1}%
- %%{\protect\addfontfeature{Mapping=arabicdigits}\number#1}%
- \fi
+ \xpg@if@char@available{06F0}%
+ {\farsidigits{\number#1}}%
+ {\arabicdigits{\number#1}}%
\fi
}
@@ -10841,6 +14079,7 @@ and may look very wrong.}
\ProvidesFile{gloss-piedmontese.ldf}[2013/02/12 v1.0 polyglossia: module for piedmontese]
\makeatletter
\PolyglossiaSetup{piedmontese}{
+ bcp47=pms,
hyphennames={piedmontese},
hyphenmins={2,2},
langtag=PMS,
@@ -10848,6 +14087,8 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{piedmontese}{pms}
\define@boolkey{piedmontese}[piedmontese@]{babelshorthands}[true]{}
@@ -10963,6 +14204,7 @@ and may look very wrong.}
% \begin{macrocode}
\ProvidesFile{gloss-polish.ldf}[polyglossia: module for polish]
\PolyglossiaSetup{polish}{
+ bcp47=pl,
hyphennames={polish},
hyphenmins={2,2},
langtag=PLK,
@@ -10970,6 +14212,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{polish}{pl}
+
\def\captionspolish{%
\def\prefacename{Przedmowa}%
\def\refname{Literatura}%
@@ -11047,6 +14292,7 @@ and may look very wrong.}
\ProvidesFile{gloss-portuguese.ldf}[polyglossia: module for portuguese]
\PolyglossiaSetup{portuguese}{
+ bcp47=pt-PT,
babelname=portuges,
hyphennames={portuges,portuguese},
hyphenmins={2,3},
@@ -11054,6 +14300,11 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*[variant=portuguese]{portuguese}{pt-PT}
+\setlanguagealias*[variant=brazilian]{portuguese}{pt-BR}
+\setlanguagealias*{portuguese}{pt}
+
% Babel aliases
\setlanguagealias[variant=portuguese]{portuguese}{portuges}
\setlanguagealias[variant=brazilian]{portuguese}{brazil}
@@ -11063,11 +14314,11 @@ and may look very wrong.}
\ifcase\nr\relax
% portuguese:
\def\portuguese@variant{portuges}%
- \SetLanguageKeys{portuguese}{babelname=portuges}%
+ \SetLanguageKeys{portuguese}{babelname=portuges,bcp47=pt-PT}%
\or
% brazilian:
\def\portuguese@variant{brazil}%
- \SetLanguageKeys{portuguese}{babelname=brazil}%
+ \SetLanguageKeys{portuguese}{babelname=brazil,bcp47=pt-BR}%
\xpg@ifdefined{brazil}{}%
{\xpg@warning{No hyphenation patterns were loaded for "Portuguese (Brazil)"\MessageBreak
I will use the standard patterns for Portuguese instead}%
@@ -11077,8 +14328,12 @@ and may look very wrong.}
}{\xpg@warning{Unknown portuguese variant `#1'}}
+% Register default options
+\xpg@initialize@gloss@options{portuguese}{variant=portuguese}
+
+
\def\portuguese@language{%
- \polyglossia@setup@language@patterns{\portuguese@variant}
+ \polyglossia@setup@language@patterns{\portuguese@variant}%
}%
\def\captionsportuguese@portuges{%
@@ -11164,12 +14419,16 @@ and may look very wrong.}
\ProvidesFile{gloss-romanian.ldf}[polyglossia: module for romanian]
\PolyglossiaSetup{romanian}{
+ bcp47=ro,
hyphennames={romanian},
hyphenmins={2,2},
langtag=ROM,
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{romanian}{ro}
+
\def\captionsromanian{%
\def\refname{Bibliografie}%
\def\abstractname{Rezumat}%
@@ -11215,6 +14474,7 @@ and may look very wrong.}
\ProvidesFile{gloss-romansh.ldf}[polyglossia: module for romansh]
\makeatletter
\PolyglossiaSetup{romansh}{%
+ bcp47=rm,
hyphennames={romansh},
hyphenmins={2,2},
langtag=RMS,
@@ -11222,6 +14482,8 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{romansh}{rm}
\def\captionsromansh{%
\def\prefacename{Prefaziun}%
@@ -11268,6 +14530,7 @@ and may look very wrong.}
\RequirePackage{xpg-cyrillicnumbers}
\PolyglossiaSetup{russian}{
+ bcp47=ru,
script=Cyrillic,
scripttag=cyrl,
langtag=RUS,
@@ -11280,11 +14543,16 @@ and may look very wrong.}
Localnumeral=Russiannumerals
}
+% BCP-47 compliant aliases
+\setlanguagealias*{russian}{ru}
+\setlanguagealias*[spelling=modern]{russian}{ru-luna1918}
+\setlanguagealias*[spelling=old]{russian}{ru-petr1708}
+
\newif\if@russian@modern
\define@key{russian}{spelling}[modern]{%
\ifstrequal{#1}{old}%
- {\@russian@modernfalse}%
- {\@russian@moderntrue}%
+ {\@russian@modernfalse\SetLanguageKeys{russian}{bcp47=ru-petr1708}}%
+ {\@russian@moderntrue\SetLanguageKeys{russian}{bcp47=ru}}%
}
\def\captionsrussian{%
@@ -11296,13 +14564,29 @@ and may look very wrong.}
}%
\newif\ifcyrillic@numerals
-\define@key{russian}{numerals}[arabic]{%
- \ifstrequal{#1}{cyrillic}%
- {\cyrillic@numeralstrue}%
- {\cyrillic@numeralsfalse}%
-}
+\newif\ifcyrillic@asbuk@numerals
+\define@choicekey*+{russian}{numerals}[\val\nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
+ \ifcase\nr\relax
+ % arabic:
+ \cyrillic@numeralsfalse%
+ \cyrillic@asbuk@numeralsfalse%
+ \or
+ % cyrillic:
+ \cyrillic@numeralstrue%
+ \cyrillic@asbuk@numeralsfalse%
+ \or
+ % cyrillic-trad:
+ \cyrillic@numeralstrue%
+ \cyrillic@asbuk@numeralsfalse%
+ \or
+ % cyrillic-alph:
+ \cyrillic@numeralstrue%
+ \cyrillic@asbuk@numeralstrue%
+ \fi
+ \xpg@info{Option: Russian, numerals=\val}%
+}{\xpg@warning{Unknown Russian numerals value `#1'}}
-\define@boolkey{russian}[russian@]{indentfirst}{
+\define@boolkey{russian}[russian@]{indentfirst}[true]{
\ifrussian@indentfirst
\SetLanguageKeys{russian}{indentfirst=true}
\else
@@ -11310,9 +14594,12 @@ and may look very wrong.}
\fi
}
-\define@boolkey{russian}[russian@]{babelshorthands}[false]{}
+\define@boolkey{russian}[russian@]{babelshorthands}[true]{}
+
+
+% Register default options
+\xpg@initialize@gloss@options{russian}{babelshorthands=false,spelling=modern,numerals=arabic,indentfirst=false}
-\setkeys{russian}{spelling,numerals}
\ifsystem@babelshorthands
\setkeys{russian}{babelshorthands=true}
@@ -11496,7 +14783,11 @@ and may look very wrong.}
\def\russiannumber#1{%
\ifcyrillic@numerals
- \cyr@alph{#1}%
+ \ifcyrillic@asbuk@numerals
+ \russian@asbuk@alph{#1}%
+ \else
+ \cyr@alph{#1}%
+ \fi
\else
\number#1%
\fi%
@@ -11504,7 +14795,11 @@ and may look very wrong.}
\def\Russiannumber#1{%
\ifcyrillic@numerals
- \cyr@Alph{#1}%
+ \ifcyrillic@asbuk@numerals
+ \russian@asbuk@Alph{#1}%
+ \else
+ \cyr@Alph{#1}%
+ \fi
\else
\number#1%
\fi%
@@ -11513,24 +14808,30 @@ and may look very wrong.}
\let\russiannumeral=\russiannumber
\let\Russiannumeral=\Russiannumber
-\def\Asbuk#1{\expandafter\cyr@Alph\csname c@#1\endcsname}
+\def\Asbuk#1{\expandafter\russian@asbuk@Alph\csname c@#1\endcsname}
+\def\asbuk#1{\expandafter\russian@asbuk@alph\csname c@#1\endcsname}
-\def\asbuk#1{\expandafter\cyr@alph\csname c@#1\endcsname}
+\def\AsbukTrad#1{\expandafter\cyr@Alph\csname c@#1\endcsname}
+\def\asbukTrad#1{\expandafter\cyr@alph\csname c@#1\endcsname}
-% This is a poor man's cyrillic alphanumeric. It just uses the alphabet and
-% thus ends at 30. We now use proper cyrillic numbering.
-%\def\russian@Alph#1{\ifcase#1\or
-% А\or Б\or В\or Г\or Д\or Е\or Ж\or
-% З\or И\or К\or Л\or М\or Н\or О\or
-% П\or Р\or С\or Т\or У\or Ф\or Х\or
-% Ц\or Ч\or Ш\or Щ\or Э\or Ю\or Я\else\xpg@ill@value{#1}{russian@Alph}\fi}
+% This is a poor man's cyrillic alphanumeric. It just uses the alphabet and
+% thus ends at 30.
+\def\russian@asbuk@Alph#1{\ifcase#1\or
+ А\or Б\or В\or Г\or Д\or Е\or Ж\or
+ З\or И\or К\or Л\or М\or Н\or О\or
+ П\or Р\or С\or Т\or У\or Ф\or Х\or
+ Ц\or Ч\or Ш\or Щ\or Э\or Ю\or Я%
+ \else\xpg@ill@value{#1}{russian@asbuk@Alph}\fi%
+}
-%\def\russian@alph#1{\ifcase#1\or
-% а\or б\or в\or г\or д\or е\or ж\or
-% з\or и\or к\or л\or м\or н\or о\or
-% п\or р\or с\or т\or у\or ф\or х\or
-% ц\or ч\or ш\or щ\or э\or ю\or я\else\xpg@ill@value{#1}{russian@alph}\fi}
+\def\russian@asbuk@alph#1{\ifcase#1\or
+ а\or б\or в\or г\or д\or е\or ж\or
+ з\or и\or к\or л\or м\or н\or о\or
+ п\or р\or с\or т\or у\or ф\or х\or
+ ц\or ч\or ш\or щ\or э\or ю\or я%
+ \else\xpg@ill@value{#1}{russian@asbuk@alph}\fi%
+}
\def\russian@numbers{%
\let\latin@alph\@alph
@@ -11538,8 +14839,8 @@ and may look very wrong.}
\ifcyrillic@numerals%
\def\russian@alph##1{\expandafter\russiannumeral\expandafter{\the##1}}%
\def\russian@Alph##1{\expandafter\Russiannumeral\expandafter{\the##1}}%
- \let\@alph\russian@alph%
- \let\@Alph\russian@Alph%
+ \let\@alph\russian@alph%
+ \let\@Alph\russian@Alph%
\fi
}
@@ -11611,6 +14912,7 @@ and may look very wrong.}
\ProvidesFile{gloss-sami.ldf}[polyglossia: module for sami]
\PolyglossiaSetup{sami}{
+ bcp47=se,
babelname=samin,
hyphennames={samin},
hyphenmins={2,2},
@@ -11619,6 +14921,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{sami}{se}
+
% Babel and backwards compat. alias
\setlanguagealias{sami}{samin}
%\setlanguagealias[variant=northern]{sami}{samin}
@@ -11642,7 +14947,7 @@ and may look very wrong.}
%\def\sami@language{%
-% \polyglossia@setup@language@patterns{\sami@variant}
+% \polyglossia@setup@language@patterns{\sami@variant}%
%}%
\def\captionssami@northern{%
@@ -11731,6 +15036,7 @@ and may look very wrong.}
\RequirePackage{devanagaridigits}
\PolyglossiaSetup{sanskrit}{
+ bcp47=sa-Deva,
langtag=SAN,
hyphennames={sanskrit,prakrit},
hyphenmins={1,3},
@@ -11739,6 +15045,16 @@ and may look very wrong.}
localnumeral=sanskritnumerals
}
+% BCP-47 compliant aliases
+\setlanguagealias*{sanskrit}{sa}
+\setlanguagealias*[script=Devanagari]{sanskrit}{sa-Deva}
+\setlanguagealias*[script=Malayalam]{sanskrit}{sa-Mlym}
+\setlanguagealias*[script=Telugu]{sanskrit}{sa-Telu}
+\setlanguagealias*[script=Bengali]{sanskrit}{sa-Beng}
+\setlanguagealias*[script=Kannada]{sanskrit}{sa-Knda}
+\setlanguagealias*[script=Gujarati]{sanskrit}{sa-Gujr}
+\setlanguagealias*[script=Latin]{sanskrit}{sa-Latn}
+
\define@key{sanskrit}{Script}[Devanagari]{%
\ifcsdef{fontsetup@sanskrit@#1}%
{\csname fontsetup@sanskrit@#1\endcsname}%
@@ -11749,29 +15065,27 @@ and may look very wrong.}
\define@key{sanskrit}{script}[Devanagari]{\setkeys{sanskrit}{Script=#1}}
\def\fontsetup@sanskrit@Devanagari{%
- \SetLanguageKeys{sanskrit}{scripttag=deva,script=Devanagari}
+ \SetLanguageKeys{sanskrit}{scripttag=deva,script=Devanagari,bcp47=sa-Deva}
\xpg@fontsetup@nonlatin{sanskrit}}
\def\fontsetup@sanskrit@Gujarati{%
- \SetLanguageKeys{sanskrit}{scripttag=gujr,script=Gujarati}
+ \SetLanguageKeys{sanskrit}{scripttag=gujr,script=Gujarati,bcp47=sa-Gujr}
\xpg@fontsetup@nonlatin{sanskrit}}
\def\fontsetup@sanskrit@Malayalam{%
- \SetLanguageKeys{sanskrit}{scripttag=mlym,script=Malayalam}
+ \SetLanguageKeys{sanskrit}{scripttag=mlym,script=Malayalam,bcp47=sa-Mlym}
\xpg@fontsetup@nonlatin{sanskrit}}
\def\fontsetup@sanskrit@Bengali{%
- \SetLanguageKeys{sanskrit}{scripttag=beng,script=Bengali}
+ \SetLanguageKeys{sanskrit}{scripttag=beng,script=Bengali,bcp47=sa-Beng}
\xpg@fontsetup@nonlatin{sanskrit}}
\def\fontsetup@sanskrit@Kannada{%
- \SetLanguageKeys{sanskrit}{scripttag=knda,script=Kannada}
+ \SetLanguageKeys{sanskrit}{scripttag=knda,script=Kannada,bcp47=sa-Knda}
\xpg@fontsetup@nonlatin{sanskrit}}
\def\fontsetup@sanskrit@Telugu{%
- \SetLanguageKeys{sanskrit}{scripttag=telu,script=Telugu}
+ \SetLanguageKeys{sanskrit}{scripttag=telu,script=Telugu,bcp47=sa-Relu}
\xpg@fontsetup@nonlatin{sanskrit}}
\def\fontsetup@sanskrit@Latin{%
- \SetLanguageKeys{sanskrit}{scripttag=latn,script=Latin}
+ \SetLanguageKeys{sanskrit}{scripttag=latn,script=Latin,bcp47=sa-Latn}
\xpg@fontsetup@latin{sanskrit}}
-\setkeys{sanskrit}{Script} %sets the default for Devanagari
-
\newif\ifsanskrit@devanagari@numerals
\sanskrit@devanagari@numeralstrue
@@ -11787,6 +15101,10 @@ and may look very wrong.}
}{\xpg@warning{Unknown Sanskrit numeral `#1'}}
+% Register default options
+\xpg@initialize@gloss@options{sanskrit}{script=Devanagari,numerals=Devanagari}
+
+
\newcommand{\sanskritnumerals}[2]{\sanskritnumber{#2}}
\def\sanskritnumber#1{%
@@ -11800,7 +15118,8 @@ and may look very wrong.}
\ifluatex
\directlua{require('polyglossia-sanskrit')}%
\else
- \newXeTeXintercharclass\sanskrit@punctthin % ! ? ‼ ⁇ ⁈ ⁉ : ; danda double_danda
+ \newXeTeXintercharclass\sanskrit@questionexclamation % ! ? ‼ ⁇ ⁈ ⁉ ‽
+ \newXeTeXintercharclass\sanskrit@punctthin % : ; danda double_danda
\fi
\def\sanskrit@punctthinspace{{\unskip\thinspace}}
@@ -11810,17 +15129,20 @@ and may look very wrong.}
\directlua{polyglossia.activate_sanskrit_punct()}%
\else
\XeTeXinterchartokenstate=1%
- \XeTeXcharclass `\! \sanskrit@punctthin
- \XeTeXcharclass `\? \sanskrit@punctthin
- \XeTeXcharclass `\‼ \sanskrit@punctthin
- \XeTeXcharclass `\⁇ \sanskrit@punctthin
- \XeTeXcharclass `\⁈ \sanskrit@punctthin
- \XeTeXcharclass `\⁉ \sanskrit@punctthin
+ \XeTeXcharclass `\! \sanskrit@questionexclamation
+ \XeTeXcharclass `\? \sanskrit@questionexclamation
+ \XeTeXcharclass `\‼ \sanskrit@questionexclamation
+ \XeTeXcharclass `\⁇ \sanskrit@questionexclamation
+ \XeTeXcharclass `\⁈ \sanskrit@questionexclamation
+ \XeTeXcharclass `\⁉ \sanskrit@questionexclamation
+ \XeTeXcharclass `\‽ \sanskrit@questionexclamation % interrobang, U+203D
\XeTeXcharclass `\: \sanskrit@punctthin
\XeTeXcharclass `\; \sanskrit@punctthin
\XeTeXcharclass `\। \sanskrit@punctthin % danda, U+0964
\XeTeXcharclass `\॥ \sanskrit@punctthin % double danda, U+0965
+ \XeTeXinterchartoks \z@ \sanskrit@questionexclamation = \sanskrit@punctthinspace
\XeTeXinterchartoks \z@ \sanskrit@punctthin = \sanskrit@punctthinspace
+ \XeTeXinterchartoks \sanskrit@questionexclamation \sanskrit@punctthin = \sanskrit@punctthinspace
\fi
}
@@ -11834,6 +15156,7 @@ and may look very wrong.}
\XeTeXcharclass `\⁇ \z@
\XeTeXcharclass `\⁈ \z@
\XeTeXcharclass `\⁉ \z@
+ \XeTeXcharclass `\‽ \z@
\XeTeXcharclass `\: \z@
\XeTeXcharclass `\; \z@
\XeTeXcharclass `\। \z@
@@ -11884,6 +15207,7 @@ and may look very wrong.}
\RequirePackage{xpg-cyrillicnumbers}
\PolyglossiaSetup{serbian}{
+ bcp47=sr-Latn,
langtag=SRB,
hyphennames={serbian},
hyphenmins={2,2},
@@ -11894,6 +15218,11 @@ and may look very wrong.}
%TODO localalph
}
+% BCP-47 compliant aliases
+\setlanguagealias*{serbian}{sr}
+\setlanguagealias*[script=Cyrillic]{serbian}{sr-Cyrl}
+\setlanguagealias*[script=Latin]{serbian}{sr-Latn}
+
% Babel aliases
\setlanguagealias[script=Cyrillic]{serbian}{serbianc}
@@ -11902,12 +15231,12 @@ and may look very wrong.}
\ifcase\nr\relax
% cyrillic:
\@serbian@cyrtrue
- \SetLanguageKeys{serbian}{scripttag=cyrl,script=Cyrillic,babelname=serbianc}
+ \SetLanguageKeys{serbian}{scripttag=cyrl,script=Cyrillic,babelname=serbianc,bcp47=sr-Cyrl}
\xpg@fontsetup@nonlatin{serbian}%
\or
% latin:
\@serbian@cyrfalse
- \SetLanguageKeys{serbian}{scripttag=latn,script=Latin}
+ \SetLanguageKeys{serbian}{scripttag=latn,script=Latin,bcp47=sr-Latn}
\xpg@fontsetup@latin{serbian}%
%TODO \def\serbian@language{\language=\l@serbianlat}%
% or should we use Croatian patterns as a fallback for the time being???
@@ -11917,17 +15246,34 @@ and may look very wrong.}
\define@key{serbian}{script}[Cyrillic]{\setkeys{serbian}{Script=#1}}
-\newif\ifserbian@numerals
-\define@key{serbian}{numerals}[arabic]{%
- \ifstrequal{#1}{latin}{\serbian@numeralsfalse}{%
- \ifstrequal{#1}{cyrillic}%
- {\serbian@numeralstrue}
- {\serbian@numeralsfalse}%
- }%
-}
+\newif\ifcyrillic@numerals
+\newif\ifcyrillic@asbuk@numerals
+\define@choicekey*+{serbian}{numerals}[\val\nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
+ \ifcase\nr\relax
+ % arabic:
+ \cyrillic@numeralsfalse%
+ \cyrillic@asbuk@numeralsfalse%
+ \or
+ % cyrillic:
+ \cyrillic@numeralstrue%
+ \cyrillic@asbuk@numeralsfalse%
+ \or
+ % cyrillic-trad:
+ \cyrillic@numeralstrue%
+ \cyrillic@asbuk@numeralsfalse%
+ \or
+ % cyrillic-alph:
+ \cyrillic@numeralstrue%
+ \cyrillic@asbuk@numeralstrue%
+ \fi
+ \xpg@info{Option: Serbian, numerals=\val}%
+}{\xpg@warning{Unknown Serbian numerals value `#1'}}
\setkeys{serbian}{Script,numerals}
+% Register default options
+\xpg@initialize@gloss@options{serbian}{script=Cyrillic,numerals=arabic}
+
\def\captionsserbian{%
\if@serbian@cyr\captionsserbian@cyr\else\captionsserbian@lat\fi
}
@@ -12012,19 +15358,27 @@ and may look very wrong.}
\newcommand{\Serbiannumerals}[2]{\Serbiannumber{#2}}
\def\serbiannumber#1{%
- \ifserbian@numerals
- \cyr@alph{#1}%
+ \ifcyrillic@numerals
+ \ifcyrillic@asbuk@numerals
+ \serbian@asbuk@alph{#1}%
+ \else
+ \cyr@alph{#1}%
+ \fi
\else
\number#1%
- \fi
+ \fi%
}
\def\Serbiannumber#1{%
- \ifserbian@numerals
- \cyr@Alph{#1}%
+ \ifcyrillic@numerals
+ \ifcyrillic@asbuk@numerals
+ \serbian@asbuk@Alph{#1}%
+ \else
+ \cyr@Alph{#1}%
+ \fi
\else
\number#1%
- \fi
+ \fi%
}
\let\serbiannumeral=\serbiannumber
@@ -12054,24 +15408,29 @@ and may look very wrong.}
\ifserbian@numerals\noserbian@numbers\fi
}
-\def\Asbuk#1{\expandafter\cyr@Alph\csname c@#1\endcsname}
+\def\Asbuk#1{\expandafter\serbian@asbuk@Alph\csname c@#1\endcsname}
+\def\asbuk#1{\expandafter\serbian@asbuk@alph\csname c@#1\endcsname}
-\def\asbuk#1{\expandafter\cyr@alph\csname c@#1\endcsname}
+\def\AsbukTrad#1{\expandafter\cyr@Alph\csname c@#1\endcsname}
+\def\asbukTrad#1{\expandafter\cyr@alph\csname c@#1\endcsname}
% This is a poor man's cyrillic alphanumeric. It just uses the alphabet and
-% thus ends at 30. We now use proper cyrillic numbering.
-
-%\def\cyr@Alph#1{\ifcase#1\or
-% А\or Б\or В\or Г\or Д\or Ђ\or Е\or Ж\or
-% З\or И\or Ј\or К\or Л\or Љ\or М\or Н\or
-% Њ\or О\or П\or Р\or С\or Т\or Ћ\or У\or
-% Ф\or Х\or Ц\or Ч\or Џ\or Ш\else\xpg@ill@value{#1}{cyr@Alph}\fi}
+% thus ends at 30.
+\def\serbian@asbuk@Alph#1{\ifcase#1\or
+ А\or Б\or В\or Г\or Д\or Е\or Ж\or
+ З\or И\or К\or Л\or М\or Н\or О\or
+ П\or Р\or С\or Т\or У\or Ф\or Х\or
+ Ц\or Ч\or Ш\or Щ\or Э\or Ю\or Я%
+ \else\xpg@ill@value{#1}{serbian@asbuk@Alph}\fi%
+}
-%\def\cyr@alph#1{\ifcase#1\or
-% а\or б\or в\or г\or д\or ђ\or е\or ж\or
-% з\or и\or ј\or к\or л\or љ\or м\or н\or
-% њ\or о\or п\or р\or с\or т\or ћ\or у\or
-% ф\or х\or ц\or ч\or џ\or ш\else\xpg@ill@value{#1}{cyr@alph}\fi}
+\def\serbian@asbuk@alph#1{\ifcase#1\or
+ а\or б\or в\or г\or д\or е\or ж\or
+ з\or и\or к\or л\or м\or н\or о\or
+ п\or р\or с\or т\or у\or ф\or х\or
+ ц\or ч\or ш\or щ\or э\or ю\or я%
+ \else\xpg@ill@value{#1}{serbian@asbuk@alph}\fi%
+}
% \end{macrocode}
@@ -12101,12 +15460,16 @@ and may look very wrong.}
\ProvidesFile{gloss-slovak.ldf}[polyglossia: module for slovak]
\PolyglossiaSetup{slovak}{
+ bcp47=sk,
hyphennames={slovak},
hyphenmins={2,2},
langtag=SKY,
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{slovak}{sk}
+
\ifluatex
\RequirePackage{luavlna}
\fi
@@ -12117,7 +15480,8 @@ and may look very wrong.}
\define@boolkey{slovak}[slovak@]{vlna}[true]{}
-\setkeys{slovak}{splithyphens,vlna}
+% Register default options
+\xpg@initialize@gloss@options{slovak}{babelshorthands=false,splithyphens=true,vlna=true}
\ifsystem@babelshorthands
\setkeys{slovak}{babelshorthands=true}
@@ -12132,8 +15496,12 @@ and may look very wrong.}
}{}
\def\slovak@@splhyphen#1{%
- \kern\z@\discretionary{-}{\char\hyphenchar\the\font}{#1}%
- \nobreak\hskip\z@%
+ \ifnum\hyphenchar \font>0%
+ \kern\z@\discretionary{-}{\char\hyphenchar\the\font}{#1}%
+ \nobreak\hskip\z@%
+ \else%
+ #1%
+ \fi%
}
\def\slovak@splhyphen{%
@@ -12320,13 +15688,13 @@ and may look very wrong.}
\def\blockextras@slovak{%
\ifslovak@babelshorthands\slovak@shorthands\fi%
\ifslovak@vlna\slovak@vlna\else\noslovak@vlna\fi%
- \ifslovak@splithyphens\slovak@hyphens\else\noslovak@hyhens\fi%
+ \ifslovak@splithyphens\slovak@hyphens\else\noslovak@hyphens\fi%
}
\def\inlineextras@slovak{%
\ifslovak@babelshorthands\slovak@shorthands\fi%
\ifslovak@vlna\slovak@vlna\else\noslovak@vlna\fi%
- \ifslovak@splithyphens\slovak@hyphens\else\noslovak@hyhens\fi%
+ \ifslovak@splithyphens\slovak@hyphens\else\noslovak@hyphens\fi%
}
% \end{macrocode}
@@ -12356,6 +15724,7 @@ and may look very wrong.}
\ProvidesFile{gloss-slovenian.ldf}[polyglossia: module for slovenian]
\PolyglossiaSetup{slovenian}{
+ bcp47=sl,
hyphennames={slovenian,slovene},
babelname=slovene,
hyphenmins={2,2},
@@ -12363,18 +15732,16 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{slovenian}{sl}
+
% Babel aliases
\setlanguagealias{slovenian}{slovene}
-\providebool{slovenian@localalph}
-\define@boolkey{slovenian}[slovenian@]{localalph}[false]{%
- \def\@tmpa{#1}%
- \def\@tmptrue{true}%
- \ifx\@tmpa\@tmptrue
- \slovenian@localalphtrue
- \fi
- \setlocalalph
-}
+\define@boolkey{slovenian}[slovenian@]{localalph}[true]{}
+
+% Register default options
+\xpg@initialize@gloss@options{slovenian}{localalph=false}
\def\captionsslovenian{%
@@ -12400,14 +15767,14 @@ and may look very wrong.}
\def\headtoname{Prejme}%
\def\proofname{Dokaz}%
\def\glossaryname{Slovar}%
- }
+}
\def\dateslovenian{%
\def\today{\number\day.~\ifcase\month\or
januar\or februar\or marec\or april\or maj\or junij\or
julij\or avgust\or september\or oktober\or november\or december\fi
\space \number\year}%
- }
+}
\def\slovenian@alph#1{%
\ifcase#1\or a\or b\or c\or č\or d\or e\or f\or g\or h\or i\or j\or k\or l\or
@@ -12415,17 +15782,22 @@ and may look very wrong.}
}
\def\slovenian@Alph#1{%
\ifcase#1\or A\or B\or C\or Č\or D\or E\or F\or G\or H\or I\or J\or K\or L\or
- M\or N\or O\or P\or R\or S\or Š\or T\or U\or V\or Z\or Ž\else#1\fi}
+ M\or N\or O\or P\or R\or S\or Š\or T\or U\or V\or Z\or Ž\else#1\fi
+}
+
\def\abeceda#1{\expandafter\slovenian@alph\csname c@#1\endcsname}
\def\Abeceda#1{\expandafter\slovenian@Alph\csname c@#1\endcsname}
-\def\setlocalalph{%
- \def\extras@slovenian{\let\alph\abeceda\let\Alph\Abeceda}
- \def\blockextras@slovenian{\extras@slovenian}
- \def\inlineextras@slovenian{\extras@slovenian}
- \def\noextras@slovenian{\let\alph\latinalph\let\Alph\latinAlph}
+\def\extras@slovenian{%
+ \ifslovenian@localalph\let\alph\abeceda\let\Alph\Abeceda\fi%
}
+\def\blockextras@slovenian{\extras@slovenian}
+
+\def\inlineextras@slovenian{\extras@slovenian}
+
+\def\noextras@slovenian{\let\alph\latinalph\let\Alph\latinAlph}
+
% \end{macrocode}
% \iffalse
%</gloss-slovenian.ldf>
@@ -12438,6 +15810,7 @@ and may look very wrong.}
\ProvidesFile{gloss-sorbian.ldf}[polyglossia: module for sorbian]
\PolyglossiaSetup{sorbian}{
+ bcp47=hsb,
language=Upper Sorbian,
babelname=uppersorbian,
hyphennames={usorbian,uppersorbian},
@@ -12446,6 +15819,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*[variant=upper]{sorbian}{hsb}
+\setlanguagealias*[variant=lower]{sorbian}{dsb}
% Backwards compat. aliases
\setlanguagealias[variant=lower]{sorbian}{lsorbian}
\setlanguagealias[variant=upper]{sorbian}{usorbian}
@@ -12459,7 +15835,7 @@ and may look very wrong.}
\ifcase\nr\relax
% upper:
\def\sorbian@variant{usorbian}%
- \SetLanguageKeys{sorbian}{language=Upper Sorbian,langtag=USB,babelname=uppersorbian}%
+ \SetLanguageKeys{sorbian}{language=Upper Sorbian,langtag=USB,babelname=uppersorbian,bcp47=hsb}%
\xpg@fontsetup@latin{sorbian}%
% Check if \l@usorbian is defined. If not, try to set it to some variety
% (specific order as in the csv list below), or null language if everything fails
@@ -12479,7 +15855,7 @@ and may look very wrong.}
\or
% lower:
\def\sorbian@variant{lsorbian}%
- \SetLanguageKeys{sorbian}{language=Lower Sorbian,langtag=LSB,babelname=lowersorbian}%
+ \SetLanguageKeys{sorbian}{language=Lower Sorbian,langtag=LSB,babelname=lowersorbian,bcp47=dsb}%
\xpg@fontsetup@latin{sorbian}%
% Check if \l@lsorbian is defined. If not, try to set it to some variety
% (specific order as in the csv list below), or null language if everything fails
@@ -12503,7 +15879,8 @@ and may look very wrong.}
\define@boolkey{sorbian}[sorbian@]{olddate}[true]{}
-\setkeys{sorbian}{variant}
+% Register default options
+\xpg@initialize@gloss@options{sorbian}{variant=upper,olddate=false}
\def\sorbian@language{%
@@ -12620,8 +15997,10 @@ and may look very wrong.}
\ProvidesFile{gloss-spanish.ldf}[polyglossia: module for spanish]
\PolyglossiaSetup{spanish}{
+ bcp47=es-ES,
hyphennames={spanish},
hyphenmins={2,2},
+ totalhyphenmin=5,
langtag=ESP,
frenchspacing=true,
indentfirst=true,
@@ -12629,6 +16008,11 @@ and may look very wrong.}
babelname=spanish
}
+% BCP-47 compliant aliases
+\setlanguagealias*{spanish}{es}
+\setlanguagealias*[variant=mexican]{spanish}{es-MX}
+\setlanguagealias*[variant=spanish]{spanish}{es-ES}
+
% Babel aliases
\setlanguagealias[variant=mexican]{spanish}{spanishmx}
@@ -12638,11 +16022,11 @@ and may look very wrong.}
\ifcase\nr\relax
% spanish:
\@spanish@mexicofalse%
- \SetLanguageKeys{spanish}{babelname=spanish}%
+ \SetLanguageKeys{spanish}{babelname=spanish,bcp47=es-ES}%
\or
% mexican:
\@spanish@mexicotrue%
- \SetLanguageKeys{spanish}{babelname=spanishmx}%
+ \SetLanguageKeys{spanish}{babelname=spanishmx,bcp47=es-MX}%
\fi
\xpg@info{Option: spanish, variant=\val}%
}{\xpg@warning{Unknown spanish variant `#1'}}
@@ -12677,6 +16061,10 @@ and may look very wrong.}
\xpg@info{Option: Spanish, spanishoperators=\val}%
}{\xpg@warning{Unknown spanishoperators value `#1'}}
+
+% Register default options
+\xpg@initialize@gloss@options{spanish}{variant=spanish,spanishoperators=none}
+
\let\xpg@save@lim\lim
\let\xpg@save@limsup\limsup
\let\xpg@save@liminf\liminf
@@ -12857,6 +16245,7 @@ and may look very wrong.}
\ProvidesFile{gloss-swedish.ldf}[polyglossia: module for swedish]
\PolyglossiaSetup{swedish}{
+ bcp47=sv,
hyphennames={swedish},
hyphenmins={2,2},
langtag=SVE,
@@ -12864,6 +16253,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{swedish}{sv}
+
\def\captionsswedish{%
\def\refname{Referenser}%
\def\abstractname{Sammanfattning}%
@@ -12937,6 +16329,7 @@ and may look very wrong.}
\RequirePackage{arabicnumbers}
\PolyglossiaSetup{syriac}{
+ bcp47=syr,
script=Syriac,
scripttag=syrc,
langtag=SYR,
@@ -12947,6 +16340,9 @@ and may look very wrong.}
%TODO localalph
}
+% BCP-47 compliant aliases
+\setlanguagealias*{syriac}{syr}
+
\def\syriacnumber#1{\@syriacnumber{#1}}%
\newif\if@eastern@numerals
@@ -12964,7 +16360,8 @@ and may look very wrong.}
\fi
\fi}
-\setkeys{syriac}{numerals}
+% Register default options
+\xpg@initialize@gloss@options{syriac}{numerals=western}
%\define@key{polyglossia}{syriaclocale}[default]{%
% \def\@syriac@locale{#1}}
@@ -13048,33 +16445,22 @@ and may look very wrong.}
%%% we test for the presence of one of ١٢٣٤٥٦٧٨٩٠ in the Syriac font,
%%% else we try \arabicfont if defined (and give a warning),
%%% else we fall back to the Western numerals.
- \ifxetex
- \ifnum\XeTeXcharglyph"0661 > 0%
- %%\protect\addfontfeature{Mapping=arabicdigits}\number#1}%
- \protect\arabicdigits{\number#1}%
- \else%
+ \xpg@if@char@available{0661}%
+ {\protect\arabicdigits{\number#1}}%
+ {\arabicdigits{\number#1}
\ifcsdef{arabicfont}%
{\protect\arabicdigits{\number#1}%
- \xpg@warning{You have specified the option numerals=eastern for Syriac, but the Syriac font does not contain the appropriate glyphs: I am using \string\arabicfont instead}}%
+ \xpg@warning{You have specified the option numerals=eastern for Syriac, but the Syriac font does not contain the appropriate glyphs:
+ I am using \string\arabicfont instead}}%
{\number#1%%% <---changed from \RL{\protect\reset@font\protect\number#1}%
- \xpg@warning{You have specified the option numerals=eastern for Syriac, but the Syriac font does not contain the appropriate glyphs: since \string\arabicfont is not defined, we'll use Western numerals instead}}%
- \fi
- \else% LuaTeX
- \expandafter\ifnum\directlua{polyglossia.check_char(0x661)} > 0\relax
- %%\protect\addfontfeature{Mapping=arabicdigits}\number#1}%
- \protect\arabicdigits{\number#1}%
- \else%
- \ifcsdef{arabicfont}%
- {\protect\arabicdigits{\number#1}%
- \xpg@warning{You have specified the option numerals=eastern for Syriac, but the Syriac font does not contain the appropriate glyphs: I am using \string\arabicfont instead}}%
- {\number#1%%% <---changed from \RL{\protect\reset@font\protect\number#1}%
- \xpg@warning{You have specified the option numerals=eastern for Syriac, but the Syriac font does not contain the appropriate glyphs: since \string\arabicfont is not defined, we'll use Western numerals instead}}%
- \fi
- \fi
+ \xpg@warning{You have specified the option numerals=eastern for Syriac, but the Syriac font does not contain the appropriate glyphs:
+ since \string\arabicfont is not defined, we'll use Western numerals instead}}%
+ }%
\else
%%\RL{\protect\reset@font\number#1}%
\number#1%
- \fi}
+ \fi%
+}
\def\syriac@numbers{%
\let\@alph\abjadsyriac%
@@ -13131,6 +16517,7 @@ and may look very wrong.}
% Translations provided by Kevin & Siji, 01-11-2009
\PolyglossiaSetup{tamil}{
+ bcp47=ta,
script=Tamil,
scripttag=taml,
langtag=TAM,
@@ -13139,6 +16526,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{tamil}{ta}
+
\def\captionstamil{%
\def\abstractname{சாராம்சம்}%
\def\appendixname{பிற்சேர்க்கை}%பின்னிணைப்பு
@@ -13198,6 +16588,7 @@ and may look very wrong.}
% Translations provided by Anmol Sharma <unmole.in@gmail.com>
\PolyglossiaSetup{telugu}{
+ bcp47=te,
script=Telugu,
scripttag=telu,
langtag=TEL,
@@ -13206,6 +16597,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{telugu}{te}
+
\def\captionstelugu{%
\def\refname{ఆధారాలు}%
\def\abstractname{సారాంశం}%
@@ -13275,6 +16669,7 @@ the output is not guaranteed to be correct\MessageBreak
and may look very wrong.}
\fi
\PolyglossiaSetup{thai}{
+ bcp47=th,
script=Thai,
scripttag=thai,
langtag=THA,
@@ -13285,6 +16680,9 @@ and may look very wrong.}
%TODO localdigits=thainumber
}
+% BCP-47 compliant aliases
+\setlanguagealias*{thai}{th}
+
\newif\if@thai@numerals
\def\tmp@thai{thai}
\define@key{thai}{numerals}[arabic]{%
@@ -13293,7 +16691,8 @@ and may look very wrong.}
\@thai@numeralsfalse\fi
}
-\setkeys{thai}{numerals}
+% Register default options
+\xpg@initialize@gloss@options{thai}{numerals=arabic}
\def\captionsthai{%
\def\refname{หนังสืออ้างอิง}%
@@ -13416,6 +16815,7 @@ and may look very wrong.}
%%
\PolyglossiaSetup{tibetan}{
+ bcp47=bo,
script=Tibetan,
scripttag=tibt,
langtag=TIB,
@@ -13425,6 +16825,9 @@ and may look very wrong.}
%TODO localalph={xxx@alph,xxx@Alph}
}
+% BCP-47 compliant aliases
+\setlanguagealias*{tibetan}{bo}
+
\newif\if@tibetan@numerals
\def\tmp@tibetan{tibetan}
\define@key{tibetan}{numerals}[tibetan]{%
@@ -13458,7 +16861,8 @@ and may look very wrong.}
\fi %
}
-\setkeys{tibetan}{numerals}
+% Register default options
+\xpg@initialize@gloss@options{tibetan}{numerals=tibetan}
% some are known, but very few
% a few come from "Standardizing Tibetan Terms of Information Technology"
@@ -13590,6 +16994,7 @@ and may look very wrong.}
\ProvidesFile{gloss-turkish.ldf}[polyglossia: module for turkish]
\RequirePackage{hijrical}
\PolyglossiaSetup{turkish}{
+ bcp47=tr,
hyphennames={turkish},
hyphenmins={2,2},
langtag=TRK,
@@ -13617,6 +17022,9 @@ and may look very wrong.}
\fi
}
+% BCP-47 compliant aliases
+\setlanguagealias*{turkish}{tr}
+
\def\noturkish@punctuation{%
\ifxetex
\XeTeXcharclass `\! \z@
@@ -13700,6 +17108,7 @@ and may look very wrong.}
\ProvidesFile{gloss-turkmen.ldf}[polyglossia: module for turkmen]
%% Translations provided by Nazar Annagurban <nazartm at gmail dot com>
\PolyglossiaSetup{turkmen}{
+ bcp47=tk,
hyphennames={turkmen},
hyphenmins={2,2},
langtag=TKM,
@@ -13707,6 +17116,9 @@ and may look very wrong.}
fontsetup=true
}
+% BCP-47 compliant aliases
+\setlanguagealias*{turkmen}{tk}
+
\def\captionsturkmen{%
\def\prefacename{Sözbaşy}%
\def\refname{Çeşmeler}%
@@ -13751,32 +17163,57 @@ and may look very wrong.}
% Strings taken from Babel
% and revised by Roman Kyrylych
-\PolyglossiaSetup{ukrainian}{
+\RequirePackage{xpg-cyrillicnumbers}
+
+\PolyglossiaSetup{ukrainian}{%
+ bcp47=uk,
script=Cyrillic,
scripttag=cyrl,
langtag=UKR,
hyphennames={ukrainian},
hyphenmins={2,2},
frenchspacing=true,
- fontsetup=true
- %TODO localalph
+ fontsetup=true,
+ localnumeral=ukrainiannumerals,
+ Localnumeral=Ukrainiannumerals
}
+% BCP-47 compliant aliases
+\setlanguagealias*{ukrainian}{uk}
+
\newif\ifcyrillic@numerals
-\define@key{ukrainian}{numerals}[latin]{%
-\ifstrequal{#1}{cyrillic}%
-{\cyrillic@numeralstrue}
-{\cyrillic@numeralsfalse}%
-}
+\newif\ifcyrillic@asbuk@numerals
+\define@choicekey*+{ukrainian}{numerals}[\val\nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
+ \ifcase\nr\relax
+ % arabic:
+ \cyrillic@numeralsfalse%
+ \cyrillic@asbuk@numeralsfalse%
+ \or
+ % cyrillic:
+ \cyrillic@numeralstrue%
+ \cyrillic@asbuk@numeralsfalse%
+ \or
+ % cyrillic-trad:
+ \cyrillic@numeralstrue%
+ \cyrillic@asbuk@numeralsfalse%
+ \or
+ % cyrillic-alph:
+ \cyrillic@numeralstrue%
+ \cyrillic@asbuk@numeralstrue%
+ \fi
+ \xpg@info{Option: Ukrainian, numerals=\val}%
+}{\xpg@warning{Unknown Ukrainian numerals value `#1'}}
-\define@boolkey{ukrainian}[ukrainian@]{babelshorthands}[false]{}
-\setkeys{ukrainian}{numerals}
+% Register default options
+\xpg@initialize@gloss@options{ukrainian}{numerals=arabic}
+
+\define@boolkey{ukrainian}[ukrainian@]{babelshorthands}[true]{}
\ifsystem@babelshorthands
-\setkeys{ukrainian}{babelshorthands=true}
+ \setkeys{ukrainian}{babelshorthands=true}
\else
-\setkeys{ukrainian}{babelshorthands=false}
+ \setkeys{ukrainian}{babelshorthands=false}
\fi
\ifcsundef{initiate@active@char}{%
@@ -13786,45 +17223,47 @@ and may look very wrong.}
}{}
\def\ukrainian@shorthands{%
-\bbl@activate{"}%
-\def\language@group{ukrainian}%
+ \bbl@activate{"}%
+ \def\language@group{ukrainian}%
% \declare@shorthand{ukrainian}{"`}{„}%
% \declare@shorthand{ukrainian}{"'}{“}%
% \declare@shorthand{ukrainian}{"<}{«}%
% \declare@shorthand{ukrainian}{">}{»}%
-\declare@shorthand{ukrainian}{""}{\hskip\z@skip}%
-\declare@shorthand{ukrainian}{"~}{\textormath{\leavevmode\hbox{-}}{-}}%
-\declare@shorthand{ukrainian}{"=}{\nobreak-\hskip\z@skip}%
-\declare@shorthand{ukrainian}{"|}{\textormath{\nobreak\discretionary{-}{}{\kern.03em}\allowhyphens}{}}%
-\declare@shorthand{ukrainian}{"-}{%
-\def\ukrainian@sh@tmp{%
-\if\ukrainian@sh@next-\expandafter\ukrainian@sh@emdash
-\else\expandafter\ukrainian@sh@hyphen\fi
-}%
-\futurelet\ukrainian@sh@next\ukrainian@sh@tmp}%
-\def\ukrainian@sh@hyphen{%
-\nobreak\-\bbl@allowhyphens}%
-\def\ukrainian@sh@emdash##1##2{\cdash-##1##2}%
-\def\cdash##1##2##3{\def\tempx@{##3}%
-\def\tempa@{-}\def\tempb@{~}\def\tempc@{*}%
-\ifx\tempx@\tempa@\@Acdash\else
-\ifx\tempx@\tempb@\@Bcdash\else
-\ifx\tempx@\tempc@\@Ccdash\else
-\errmessage{Wrong usage of cdash}\fi\fi\fi}%
-\def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi
-\cyrdash\hskip.2em\ignorespaces}%
-\def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi
-\nobreak\cyrdash\penalty\exhyphenpenalty\hskip\z@skip\ignorespaces}%
-\def\@Ccdash{\leavevmode
-\nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}%
-\ifx\cyrdash\undefined
-\def\cyrdash{\hbox to.8em{--\hss--}}
-\fi
-\declare@shorthand{ukrainian}{",}{\nobreak\hskip.2em\ignorespaces}%
+ \declare@shorthand{ukrainian}{""}{\hskip\z@skip}%
+ \declare@shorthand{ukrainian}{"~}{\textormath{\leavevmode\hbox{-}}{-}}%
+ \declare@shorthand{ukrainian}{"=}{\nobreak-\hskip\z@skip}%
+ \declare@shorthand{ukrainian}{"|}{\textormath{\nobreak\discretionary{-}{}{\kern.03em}\allowhyphens}{}}%
+ \declare@shorthand{ukrainian}{"-}{%
+ \def\ukrainian@sh@tmp{%
+ \if\ukrainian@sh@next-\expandafter\ukrainian@sh@emdash
+ \else\expandafter\ukrainian@sh@hyphen\fi
+ }%
+ \futurelet\ukrainian@sh@next\ukrainian@sh@tmp}%
+ \def\ukrainian@sh@hyphen{%
+ \nobreak\-\bbl@allowhyphens}%
+ \def\ukrainian@sh@emdash##1##2{\cdash-##1##2}%
+ \def\cdash##1##2##3{%
+ \def\tempx@{##3}%
+ \def\tempa@{-}\def\tempb@{~}\def\tempc@{*}%
+ \ifx\tempx@\tempa@\@Acdash\else
+ \ifx\tempx@\tempb@\@Bcdash\else
+ \ifx\tempx@\tempc@\@Ccdash\else
+ \errmessage{Wrong usage of cdash}\fi\fi\fi%
+ }%
+ \def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi
+ \cyrdash\hskip.2em\ignorespaces}%
+ \def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi
+ \nobreak\cyrdash\penalty\exhyphenpenalty\hskip\z@skip\ignorespaces}%
+ \def\@Ccdash{\leavevmode
+ \nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}%
+ \ifx\cyrdash\undefined
+ \def\cyrdash{\hbox to.8em{--\hss--}}
+ \fi
+ \declare@shorthand{ukrainian}{",}{\nobreak\hskip.2em\ignorespaces}%
}
\def\noukrainian@shorthands{%
-\@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
+ \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
}
\def\captionsukrainian{%
@@ -13851,7 +17290,8 @@ and may look very wrong.}
\def\headtoname{До}%
\def\proofname{Доведення}%
\def\glossaryname{Словник термінів}%
- }
+}
+
\def\dateukrainian{%
\def\today{\number\day~\ifcase\month\or
січня\or
@@ -13866,39 +17306,82 @@ and may look very wrong.}
жовтня\or
листопада\or
грудня\fi%
- \space\number\year~р.}}
+ \space\number\year~р.}%
+}
% The following is based on some ideas from ruscor.sty
\def\ukrainian@capsformat{%
-\def\@seccntformat##1{\csname pre##1\endcsname%
-\csname the##1\endcsname%
-\csname post##1\endcsname}%
-\def\@aftersepkern{\hspace{0.5em}}%
-\def\postchapter{.\@aftersepkern}%
-\def\postsection{.\@aftersepkern}%
-\def\postsubsection{.\@aftersepkern}%
-\def\postsubsubsection{.\@aftersepkern}%
-\def\postparagraph{.\@aftersepkern}%
-\def\postsubparagraph{.\@aftersepkern}%
-\def\prechapter{}%
-\def\presection{}%
-\def\presubsection{}%
-\def\presubsubsection{}%
-\def\preparagraph{}%
-\def\presubparagraph{}}
-
-\def\Asbuk#1{\expandafter\ukrainian@Alph\csname c@#1\endcsname}
-\def\ukrainian@Alph#1{\ifcase#1\or
- А\or Б\or В\or Г\or Д\or Е\or Є\or Ж\or
- З\or И\or І\or Ї\or Й\or К\or Л\or М\or Н\or О\or
+ \def\@seccntformat##1{\csname pre##1\endcsname%
+ \csname the##1\endcsname%
+ \csname post##1\endcsname}%
+ \def\@aftersepkern{\hspace{0.5em}}%
+ \def\postchapter{.\@aftersepkern}%
+ \def\postsection{.\@aftersepkern}%
+ \def\postsubsection{.\@aftersepkern}%
+ \def\postsubsubsection{.\@aftersepkern}%
+ \def\postparagraph{.\@aftersepkern}%
+ \def\postsubparagraph{.\@aftersepkern}%
+ \def\prechapter{}%
+ \def\presection{}%
+ \def\presubsection{}%
+ \def\presubsubsection{}%
+ \def\preparagraph{}%
+ \def\presubparagraph{}%
+}
+
+\newcommand{\ukrainiannumerals}[2]{\ukrainiannumber{#2}}
+\newcommand{\Ukrainiannumerals}[2]{\Ukrainiannumber{#2}}
+
+\def\ukrainiannumber#1{%
+ \ifcyrillic@numerals
+ \ifcyrillic@asbuk@numerals
+ \serbian@asbuk@alph{#1}%
+ \else
+ \cyr@alph{#1}%
+ \fi
+ \else
+ \number#1%
+ \fi%
+}
+
+\def\Ukrainiannumber#1{%
+ \ifcyrillic@numerals
+ \ifcyrillic@asbuk@numerals
+ \serbian@asbuk@Alph{#1}%
+ \else
+ \cyr@Alph{#1}%
+ \fi
+ \else
+ \number#1%
+ \fi%
+}
+
+\let\ukrainiannumeral=\ukrainiannumber
+\let\Ukrainiannumeral=\Ukrainiannumber
+
+\def\Asbuk#1{\expandafter\ukranian@asbuk@Alph\csname c@#1\endcsname}
+\def\asbuk#1{\expandafter\ukranian@asbuk@alph\csname c@#1\endcsname}
+
+\def\AsbukTrad#1{\expandafter\cyr@Alph\csname c@#1\endcsname}
+\def\asbukTrad#1{\expandafter\cyr@alph\csname c@#1\endcsname}
+
+% This is a poor man's cyrillic alphanumeric. It just uses the alphabet and
+% thus ends at 30.
+\def\ukranian@asbuk@Alph#1{\ifcase#1\or
+ А\or Б\or В\or Г\or Д\or Е\or Ж\or
+ З\or И\or К\or Л\or М\or Н\or О\or
П\or Р\or С\or Т\or У\or Ф\or Х\or
- Ц\or Ч\or Ш\or Щ\or Ю\or Я\else\xpg@ill@value{#1}{ukrainian@Alph}\fi}
-\def\asbuk#1{\expandafter\ukrainian@alph\csname c@#1\endcsname}
-\def\ukrainian@alph#1{\ifcase#1\or
- а\or б\or в\or г\or д\or е\or є\or ж\or
- з\or и\or і\or ї\or й\or к\or л\or м\or н\or о\or
+ Ц\or Ч\or Ш\or Щ\or Э\or Ю\or Я%
+ \else\xpg@ill@value{#1}{ukranian@asbuk@Alph}\fi%
+}
+
+\def\ukranian@asbuk@alph#1{\ifcase#1\or
+ а\or б\or в\or г\or д\or е\or ж\or
+ з\or и\or к\or л\or м\or н\or о\or
п\or р\or с\or т\or у\or ф\or х\or
- ц\or ч\or ш\or щ\or ю\or я\else\xpg@ill@value{#1}{ukrainian@alph}\fi}
+ ц\or ч\or ш\or щ\or э\or ю\or я%
+ \else\xpg@ill@value{#1}{ukranian@asbuk@alph}\fi%
+}
\def\ukrainian@numbers{%
\let\@Alph\ukrainian@Alph%
@@ -13911,19 +17394,19 @@ and may look very wrong.}
}
\def\noextras@ukrainian{%
-\def\@seccntformat##1{\csname the##1\endcsname\quad}% = LaTeX kernel
-\ifcyrillic@numerals\noukrainian@numbers\fi
-\noukrainian@shorthands%
+ \def\@seccntformat##1{\csname the##1\endcsname\quad}% = LaTeX kernel
+ \ifcyrillic@numerals\noukrainian@numbers\fi
+ \noukrainian@shorthands%
}
\def\blockextras@ukrainian{%
-\ukrainian@capsformat%
-\ifcyrillic@numerals\ukrainian@numbers\fi
-\ifukrainian@babelshorthands\ukrainian@shorthands\fi
+ \ukrainian@capsformat%
+ \ifcyrillic@numerals\ukrainian@numbers\fi
+ \ifukrainian@babelshorthands\ukrainian@shorthands\fi
}
\def\inlineextras@ukrainian{%
-\ifukrainian@babelshorthands\ukrainian@shorthands\fi%
+ \ifukrainian@babelshorthands\ukrainian@shorthands\fi%
}
%%% stuff from Babel
@@ -13985,6 +17468,7 @@ and may look very wrong.}
\RequirePackage{hijrical}
\PolyglossiaSetup{urdu}{
+ bcp47=ur,
script=Arabic,
direction=RL,
scripttag=arab,
@@ -13995,6 +17479,9 @@ and may look very wrong.}
%TODO localalph={abjad,abjad}
}
+% BCP-47 compliant aliases
+\setlanguagealias*{urdu}{ur}
+
\newif\if@western@numerals
\def\tmp@western{western}
\define@key{urdu}{numerals}[eastern]{%
@@ -14147,6 +17634,7 @@ and may look very wrong.}
%% Strings contributed by Daniel Owens < dhowens . pmbx . net >
\PolyglossiaSetup{vietnamese}{
+ bcp47=vi,
hyphennames={nohyphenation},
hyphenmins={2,2},
langtag=VIT,
@@ -14154,6 +17642,9 @@ and may look very wrong.}
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{vietnamese}{vi}
+
\def\captionsvietnamese{%
\def\refname{Tài liệu}%
\def\abstractname{Tóm tắt nội dung}%
@@ -14197,20 +17688,31 @@ and may look very wrong.}
\ProvidesFile{gloss-welsh.ldf}[polyglossia: module for welsh]
\PolyglossiaSetup{welsh}{
+ bcp47=cy,
hyphennames={welsh},
hyphenmins={2,3},
langtag=WEL,
fontsetup=true,
}
+% BCP-47 compliant aliases
+\setlanguagealias*{welsh}{cy}
+
\providebool{welsh@formaldate}
-% TODO (maybe) Interface to change that mid-document
-\define@key{welsh}{date}{%
- \ifstrequal{#1}{long}{%
- \welsh@formaldatetrue
- }% Anything else gives \welsh@formaldatefalse
-}
+\define@choicekey*+{welsh}{date}[\val\nr]{long,short}[short]{%
+ \ifcase\nr\relax
+ % long:
+ \welsh@formaldatetrue
+ \or
+ % accented:
+ \welsh@formaldatefalse
+ \fi
+ \xpg@info{Option: Welsh, date=\val}%
+}{\xpg@warning{Unknown date value `#1'}}
+
+% Register default options
+\xpg@initialize@gloss@options{welsh}{date=short}
\def\captionswelsh{%
\def\refname{Cyfeiriadau}%
@@ -14441,6 +17943,7 @@ local function activate_french_punct(thincolonspace, autospaceguillemets)
set_left_space(lang, '⁇', 0.5)
set_left_space(lang, '⁈', 0.5)
set_left_space(lang, '⁉', 0.5)
+ set_left_space(lang, '‽', 0.5) -- U+203D (interrobang)
if autospaceguillemets then
set_left_space(lang, '»', 0.5)
@@ -14887,14 +18390,19 @@ local function reorder_tm (head)
local curr, tone = node.slide(head)
while curr do
if curr.id == glyph_id and node.has_attribute(curr, attr_korean) then
- local c, wd = curr.char or 0, curr.width or 0
- if (c == 0x302E or c == 0x302F) and wd > 0 then
- tone = curr
- elseif tone and not nobr_before[c] then
- head = node.remove(head, tone)
- tone.next, tone.prev = nil, nil
- head, curr = node.insert_before(head, curr, tone)
+ local f = font.getfont(curr.font) or font.fonts[curr.font]
+ if f and f.hb then -- harfbuzz do the right thing
tone = nil
+ else
+ local c, wd = curr.char or 0, curr.width or 0
+ if (c == 0x302E or c == 0x302F) and wd > 0 then
+ tone = curr
+ elseif tone and not nobr_before[c] then
+ head = node.remove(head, tone)
+ tone.next, tone.prev = nil, nil
+ head, curr = node.insert_before(head, curr, tone)
+ tone = nil
+ end
end
end
curr = curr.prev
@@ -15085,21 +18593,31 @@ require('polyglossia-punct')
-- between 1/4 and 1/3 of a quad. We choose a half of a \thinspace here.
local hairspace = 0.08333 -- 1/12
+local function space_left(char)
+ polyglossia.add_left_spaced_character('latin', char, hairspace, 'quad')
+end
+
+local function space_right(char)
+ polyglossia.add_right_spaced_character('latin', char, hairspace, 'quad')
+end
+
+polyglossia.clear_spaced_characters('latin')
+space_left('!')
+space_left('?')
+space_left('‼')
+space_left('⁇')
+space_left('⁈')
+space_left('⁉')
+space_left('‽') -- U+203D (interrobang)
+space_left(':')
+space_left(';')
+space_left('»')
+space_left('›')
+space_right('«')
+space_right('‹')
+
local function activate_latin_punct()
polyglossia.activate_punct('latin')
- polyglossia.clear_spaced_characters('latin')
- polyglossia.add_left_spaced_character('latin',':',hairspace,'quad')
- polyglossia.add_left_spaced_character('latin','!',hairspace,'quad')
- polyglossia.add_left_spaced_character('latin','?',hairspace,'quad')
- polyglossia.add_left_spaced_character('latin',';',hairspace,'quad')
- polyglossia.add_left_spaced_character('latin','‼',hairspace,'quad')
- polyglossia.add_left_spaced_character('latin','⁇',hairspace,'quad')
- polyglossia.add_left_spaced_character('latin','⁈',hairspace,'quad')
- polyglossia.add_left_spaced_character('latin','⁉',hairspace,'quad')
- polyglossia.add_left_spaced_character('latin','»',hairspace,'quad')
- polyglossia.add_left_spaced_character('latin','›',hairspace,'quad')
- polyglossia.add_right_spaced_character('latin','«',hairspace,'quad')
- polyglossia.add_right_spaced_character('latin','‹',hairspace,'quad')
end
local function deactivate_latin_punct()
@@ -15180,12 +18698,54 @@ local function get_penalty_node()
return node_copy(penalty_node)
end
--- we have here all possible space characters, referenced by their unicode slot
--- number, taken from char-def.lua
-local space_chars = {[32] = true, [160] = true, [5760] = true, [6158] = true,
- [8192] = true, [8193] = true, [8194] = true, [8195] = true, [8196] = true,
- [8197] = true, [8198] = true, [8199] = true, [8200] = true, [8201] = true,
- [8202] = true, [8239] = true, [8287] = true, [12288] = true}
+-- all possible space characters according to section 6.2 of the Unicode Standard
+-- https://www.unicode.org/versions/Unicode12.0.0/ch06.pdf
+local space_chars = {
+ [0x20] = true, -- space
+ [0xA0] = true, -- no-break space
+ [0x1680] = true, -- ogham space mark
+ [0x2000] = true, -- en quad
+ [0x2001] = true, -- em quad
+ [0x2002] = true, -- en space
+ [0x2003] = true, -- em space
+ [0x2004] = true, -- three-per-em-space
+ [0x2005] = true, -- four-per-em space
+ [0x2006] = true, -- six-per-em space
+ [0x2007] = true, -- figure space
+ [0x2008] = true, -- punctuation space
+ [0x2009] = true, -- thin space
+ [0x200A] = true, -- hair space
+ [0x202F] = true, -- narrow no-break space
+ [0x205F] = true, -- medium mathematical space
+ [0x3000] = true -- ideographic space
+}
+
+-- all left bracket characters, referenced by their Unicode slot
+local left_bracket_chars = {
+ [0x28] = true, -- left parenthesis
+ [0x5B] = true, -- left square bracket
+ [0x7B] = true, -- left curly bracket
+ [0x27E8] = true -- mathematical left angle bracket
+}
+
+-- all right bracket characters, referenced by their Unicode slot
+local right_bracket_chars = {
+ [0x29] = true, -- right parenthesis
+ [0x5D] = true, -- right square bracket
+ [0x7D] = true, -- right curly bracket
+ [0x27E9] = true -- mathematical right angle bracket
+}
+
+-- question and exclamation marks, referenced by their Unicode slot
+local question_exclamation_chars = {
+ [0x21] = true, -- exclamation mark !
+ [0x3F] = true, -- question mark ?
+ [0x203C] = true, -- double exclamation mark ‼
+ [0x203D] = true, -- interrobang ‽
+ [0x2047] = true, -- double question mark ⁇
+ [0x2048] = true, -- question exclamation mark ⁈
+ [0x2049] = true, -- exclamation question mark ⁉
+}
-- from nodes-tst.lua, adapted
local function somespace(n)
@@ -15203,9 +18763,6 @@ local function somespace(n)
end
end
--- we have here all left bracket characters, referenced by their unicode slot
-local left_bracket_chars = {[40] = true, [123] = true, [91] = true, [10216] = true}
-
local function someleftbracket(n)
if n then
local id = n.id
@@ -15215,9 +18772,6 @@ local function someleftbracket(n)
end
end
--- we have here all right bracket characters, referenced by their unicode slot
-local right_bracket_chars = {[41] = true, [125] = true, [93] = true, [10217] = true}
-
local function somerightbracket(n)
if n then
local id = n.id
@@ -15227,6 +18781,16 @@ local function somerightbracket(n)
end
end
+local function question_exclamation_sequence(n1, n2)
+ if n1 and n2 then
+ local id1 = n1.id
+ local id2 = n2.id
+ if id1 == glyph_code and id2 == glyph_code then
+ return question_exclamation_chars[n1.char] and question_exclamation_chars[n2.char]
+ end
+ end
+end
+
-- idem
local function somepenalty(n, value)
if n then
@@ -15312,13 +18876,13 @@ local function process(head)
if leftspace or rightspace then
local fontparameters = fonts.hashes.parameters[current.font]
local unit, stretch, shrink, spacing_node
- if leftspace then
+ if leftspace and fontparameters then
local prev = getprev(current)
local space_exception = false
if prev then
local prevprev = getprev(prev)
- -- do not add space after left (opening) bracket
- space_exception = someleftbracket(prev)
+ -- do not add space after left (opening) bracket and between question/exclamation marks
+ space_exception = someleftbracket(prev) or question_exclamation_sequence(prev, current)
if somespace(prev) then
-- TODO: there is a question here: do we override a preceding space or not?...
if somepenalty(prevprev, 10000) then
@@ -15345,7 +18909,7 @@ local function process(head)
head = insert_node_before(head, current, spacing_node)
end
end
- if rightspace then
+ if rightspace and fontparameters then
local next = getnext(current)
local space_exception = false
if next then
@@ -15440,19 +19004,25 @@ require('polyglossia-punct')
-- value.
local thinspace = 0.16667 -- 1/6
+local function space_left(char)
+ polyglossia.add_left_spaced_character('sanskrit', char, thinspace, 'quad')
+end
+
+polyglossia.clear_spaced_characters('sanskrit')
+space_left('!')
+space_left('?')
+space_left('‼')
+space_left('⁇')
+space_left('⁈')
+space_left('⁉')
+space_left('‽') -- U+203D (interrobang)
+space_left(':')
+space_left(';')
+space_left('।') -- danda, U+0964
+space_left('॥') -- double danda, U+0965
+
local function activate_sanskrit_punct()
polyglossia.activate_punct('sanskrit')
- polyglossia.clear_spaced_characters('sanskrit')
- polyglossia.add_left_spaced_character('sanskrit','!',thinspace,'quad')
- polyglossia.add_left_spaced_character('sanskrit','?',thinspace,'quad')
- polyglossia.add_left_spaced_character('sanskrit','‼',thinspace,'quad')
- polyglossia.add_left_spaced_character('sanskrit','⁇',thinspace,'quad')
- polyglossia.add_left_spaced_character('sanskrit','⁈',thinspace,'quad')
- polyglossia.add_left_spaced_character('sanskrit','⁉',thinspace,'quad')
- polyglossia.add_left_spaced_character('sanskrit',':',thinspace,'quad')
- polyglossia.add_left_spaced_character('sanskrit',';',thinspace,'quad')
- polyglossia.add_left_spaced_character('sanskrit','।',thinspace,'quad') -- danda, U+0964
- polyglossia.add_left_spaced_character('sanskrit','॥',thinspace,'quad') -- double danda, U+0965
end
local function deactivate_sanskrit_punct()
@@ -15767,7 +19337,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
¦----------------------------------------------¦
¦ ¦
- ¦ THE POLYGLOSSIA PACKAGE v1.46 ¦
+ ¦ THE POLYGLOSSIA PACKAGE v1.47 ¦
¦ ¦
¦ Modern multilingual typesetting ¦
¦ with XeLaTeX and LuaLaTeX ¦
@@ -15800,8 +19370,8 @@ Polyglossia makes it possible to automate the following tasks:
LICENSE
-Copyright (c) 2008-2010 François Charette, 2013 Élie Roux, 2011-2019 Arthur Reutenauer,
-Copyright (c) 2019 Bastien Roucariès, 2019 Jürgen Spitzmüller
+Copyright (c) 2008-2010 François Charette, 2013 Élie Roux, 2011-2020 Arthur Reutenauer,
+Copyright (c) 2019-2020 Bastien Roucariès, 2019-2020 Jürgen Spitzmüller
Except where otherwise noted, Polyglossia is placed under the terms of the MIT licence
(https://opensource.org/licenses/MIT).
@@ -15815,6 +19385,69 @@ This is more efficient than contacting the maintainer by email as it allows me
to track the issues and follow progress.
%</../README>
%<*Changelog>
+1.47 (29-01-2020)
+
+New features:
+ * IETF BCP-47 compliant language tags can now be used for loading and switching
+ languages alternatively to language names (#226).
+ * New commands \languageid{<type>} and \mainlanguageid{<type>}.
+ * New test \iflanguageidloaded.
+ * New list \xpg@bcp@loaded.
+ * New environment {lang}{<lang>} (equivalent to {<lang>}, but also available with
+ \setlanguagealias* which does not define dedicated alias environments).
+ * New gloss option totalhyphenmin (corresponds to LuaTeX's \hyphenationmin) (#111).
+ * New test \iflanguageoption{<lang>}{<key>}{<val>} (#364).
+ * Restore simple alphabetic numbering for \asbuk and \Asbuk in Belarusian, Mongolian,
+ Russian, Serbian, and Ukrainian (#377).
+ * New command \AsbukTrad and \asbukTrad for Belarusian, Mongolian, Russian, Serbian,
+ and Ukrainian which uses traditional alphanumerical numbering.
+ * New numerals option "cyrillic-trad" and "cyrillic-alph" to differentiate simple
+ alphabetic and traditional alpnanumerical Cyrillic numbering.
+ * \selectbackgroundlanguage and \resetdefaultlanguage now also support language
+ aliases.
+ * New macro \charifavailable{<char code>}{<substitution>}.
+ * Add French language variant "swiss".
+ * Implement babelshorthands for Croatian.
+ * Implement \localnumeral for Japanese.
+
+Bug fixes:
+ * Fix font family issue in headers (#355).
+ * Fix whitespace issues in \text<lang> (#356).
+ * Fix option-less \babelname in multi-variant languages (#357).
+ * Fix some spacing inconsistencies with French, Latin, and Sanskrit (#358).
+ * Fix issues with babelshorthands and graphics package (#368).
+ * Fix some captions and improve numbering in Marathi (#370).
+ * Fix Hungarian swapstrings feature (#373).
+ * Fix lua punctuation code problem (#374).
+ * Fix Bengali changecounternumbering option (#381).
+ * Fix whitespace issue in Japanese (#387).
+ * Fix \text<lang> command with multiple paragraphs.
+ * Actually implement documented german spelling variant '1996' (= 'new').
+ * Fix Slovenian localalph option.
+ * Fix Czech and Slovak splithyphens with typewriter fonts.
+ * farsical.sty: fix spacing issue with some month names.
+ * Fix directionalty of numbers in Hebrew with XeTeX.
+ * Improve interoperatability with biblatex (some language variants did not work yet).
+
+Interface and defaults changes:
+ * Some boolean options had 'false' value by default, which meant if you passed
+ them without value, the logic was reversed. This has been changed, leading to
+ change of behavior should you have used one of these options without value (#363).
+ Concerned are the following options:
+ - babelshorthands in language belarusian, mongolian, ukrainian, and russian
+ ('babelshorthands' now equals 'babelshorthand=true', no longer 'babelshorthands=false')
+ - localalph in language slovenian ('localalph' now equals 'localalph=true')
+ - latesthyphen in language german ('latesthyphen' now equals 'latesthyphen=true')
+ - fullyear in package hebrewcal ('fullyear' now equals 'fullyear=true')
+ * The command \setlanguagealias* (introduced in v1.46) does no longer define
+ dedicated alias environments.
+ * The babelnames for latin variants have been corrected to classiclatin, ecclesiasticlatin
+ and medievallatin. This is how the hyphenation patterns and babel \extras are named, even
+ though the variants can currently be selected in babel only via appended "dot modifier".
+ * In accordance with the respective l3kernel change, \str_lower_case:n has been renamed to
+ \str_lowercase:n where used in polyglossia.sty. Thus polyglossia 1.47 requires l3kernel
+ 2020-01-12 at least.
+
1.46 (15-11-2019)
New features:
diff --git a/macros/latex/contrib/polyglossia/polyglossia.ins b/macros/latex/contrib/polyglossia/polyglossia.ins
deleted file mode 100644
index 56050f53cb..0000000000
--- a/macros/latex/contrib/polyglossia/polyglossia.ins
+++ /dev/null
@@ -1,164 +0,0 @@
-\input docstrip.tex
-\keepsilent
-\let\MetaPrefix\relax
-\preamble
- ____________________________
-
- The polyglossia package
- (C) 2008–2010 François Charette
- (C) 2011-2019 Arthur Reutenauer
- (C) 2013 Elie Roux
- License information appended
-
-\endpreamble
-\postamble
-
- Copyright (C) 2019 by Arthur Reutenauer <arthur 'dot' reutenauer 'at' normalesup 'dot' org>
-
- This work may be distributed and/or modified under the
- conditions of the LaTeX Project Public License, either version 1.3
- of this license of (at your option) any later version.
- The latest version of this license is in
- http://www.latex-project.org/lppl.txt
- and version 1.3 or later is part of all distributions of LaTeX
- version 2005/12/01 or later.
-
- This work has the LPPL maintenance status `maintained'.
-
- The Current Maintainer of this work is Arthur Reutenauer.
-
-\endpostamble
-\let\MetaPrefix\DoubleperCent
-\askforoverwritefalse
-\generate{\file{gloss-acadien.ldf}{\from{polyglossia.dtx}{gloss-acadien.ldf}}}
-\generate{\file{gloss-afrikaans.ldf}{\from{polyglossia.dtx}{gloss-afrikaans.ldf}}}
-\generate{\file{gloss-albanian.ldf}{\from{polyglossia.dtx}{gloss-albanian.ldf}}}
-\generate{\file{gloss-american.ldf}{\from{polyglossia.dtx}{gloss-american.ldf}}}
-\generate{\file{gloss-amharic.ldf}{\from{polyglossia.dtx}{gloss-amharic.ldf}}}
-\generate{\file{gloss-arabic.ldf}{\from{polyglossia.dtx}{gloss-arabic.ldf}}}
-\generate{\file{gloss-armenian.ldf}{\from{polyglossia.dtx}{gloss-armenian.ldf}}}
-\generate{\file{gloss-asturian.ldf}{\from{polyglossia.dtx}{gloss-asturian.ldf}}}
-\generate{\file{gloss-australian.ldf}{\from{polyglossia.dtx}{gloss-australian.ldf}}}
-\generate{\file{gloss-austrian.ldf}{\from{polyglossia.dtx}{gloss-austrian.ldf}}}
-\generate{\file{gloss-bahasa.ldf}{\from{polyglossia.dtx}{gloss-bahasa.ldf}}}
-\generate{\file{gloss-bahasai.ldf}{\from{polyglossia.dtx}{gloss-bahasai.ldf}}}
-\generate{\file{gloss-bahasam.ldf}{\from{polyglossia.dtx}{gloss-bahasam.ldf}}}
-\generate{\file{gloss-basque.ldf}{\from{polyglossia.dtx}{gloss-basque.ldf}}}
-\generate{\file{gloss-belarusian.ldf}{\from{polyglossia.dtx}{gloss-belarusian.ldf}}}
-\generate{\file{gloss-bengali.ldf}{\from{polyglossia.dtx}{gloss-bengali.ldf}}}
-\generate{\file{gloss-bosnian.ldf}{\from{polyglossia.dtx}{gloss-bosnian.ldf}}}
-\generate{\file{gloss-brazil.ldf}{\from{polyglossia.dtx}{gloss-brazil.ldf}}}
-\generate{\file{gloss-breton.ldf}{\from{polyglossia.dtx}{gloss-breton.ldf}}}
-\generate{\file{gloss-british.ldf}{\from{polyglossia.dtx}{gloss-british.ldf}}}
-\generate{\file{gloss-bulgarian.ldf}{\from{polyglossia.dtx}{gloss-bulgarian.ldf}}}
-\generate{\file{gloss-canadian.ldf}{\from{polyglossia.dtx}{gloss-canadian.ldf}}}
-\generate{\file{gloss-canadien.ldf}{\from{polyglossia.dtx}{gloss-canadien.ldf}}}
-\generate{\file{gloss-catalan.ldf}{\from{polyglossia.dtx}{gloss-catalan.ldf}}}
-\generate{\file{gloss-coptic.ldf}{\from{polyglossia.dtx}{gloss-coptic.ldf}}}
-\generate{\file{gloss-croatian.ldf}{\from{polyglossia.dtx}{gloss-croatian.ldf}}}
-\generate{\file{gloss-czech.ldf}{\from{polyglossia.dtx}{gloss-czech.ldf}}}
-\generate{\file{gloss-danish.ldf}{\from{polyglossia.dtx}{gloss-danish.ldf}}}
-\generate{\file{gloss-divehi.ldf}{\from{polyglossia.dtx}{gloss-divehi.ldf}}}
-\generate{\file{gloss-dutch.ldf}{\from{polyglossia.dtx}{gloss-dutch.ldf}}}
-\generate{\file{gloss-english.ldf}{\from{polyglossia.dtx}{gloss-english.ldf}}}
-\generate{\file{gloss-esperanto.ldf}{\from{polyglossia.dtx}{gloss-esperanto.ldf}}}
-\generate{\file{gloss-estonian.ldf}{\from{polyglossia.dtx}{gloss-estonian.ldf}}}
-\generate{\file{gloss-farsi.ldf}{\from{polyglossia.dtx}{gloss-farsi.ldf}}}
-\generate{\file{gloss-finnish.ldf}{\from{polyglossia.dtx}{gloss-finnish.ldf}}}
-\generate{\file{gloss-french.ldf}{\from{polyglossia.dtx}{gloss-french.ldf}}}
-\generate{\file{gloss-friulan.ldf}{\from{polyglossia.dtx}{gloss-friulan.ldf}}}
-\generate{\file{gloss-friulian.ldf}{\from{polyglossia.dtx}{gloss-friulian.ldf}}}
-\generate{\file{gloss-gaelic.ldf}{\from{polyglossia.dtx}{gloss-gaelic.ldf}}}
-\generate{\file{gloss-galician.ldf}{\from{polyglossia.dtx}{gloss-galician.ldf}}}
-\generate{\file{gloss-georgian.ldf}{\from{polyglossia.dtx}{gloss-georgian.ldf}}}
-\generate{\file{gloss-german.ldf}{\from{polyglossia.dtx}{gloss-german.ldf}}}
-\generate{\file{gloss-germanb.ldf}{\from{polyglossia.dtx}{gloss-germanb.ldf}}}
-\generate{\file{gloss-greek.ldf}{\from{polyglossia.dtx}{gloss-greek.ldf}}}
-\generate{\file{gloss-hebrew.ldf}{\from{polyglossia.dtx}{gloss-hebrew.ldf}}}
-\generate{\file{gloss-hindi.ldf}{\from{polyglossia.dtx}{gloss-hindi.ldf}}}
-\generate{\file{gloss-hungarian.ldf}{\from{polyglossia.dtx}{gloss-hungarian.ldf}}}
-\generate{\file{gloss-icelandic.ldf}{\from{polyglossia.dtx}{gloss-icelandic.ldf}}}
-\generate{\file{gloss-interlingua.ldf}{\from{polyglossia.dtx}{gloss-interlingua.ldf}}}
-\generate{\file{gloss-irish.ldf}{\from{polyglossia.dtx}{gloss-irish.ldf}}}
-\generate{\file{gloss-italian.ldf}{\from{polyglossia.dtx}{gloss-italian.ldf}}}
-\generate{\file{gloss-japanese.ldf}{\from{polyglossia.dtx}{gloss-japanese.ldf}}}
-\generate{\file{gloss-kannada.ldf}{\from{polyglossia.dtx}{gloss-kannada.ldf}}}
-\generate{\file{gloss-khmer.ldf}{\from{polyglossia.dtx}{gloss-khmer.ldf}}}
-\generate{\file{gloss-korean.ldf}{\from{polyglossia.dtx}{gloss-korean.ldf}}}
-\generate{\file{gloss-kurdish.ldf}{\from{polyglossia.dtx}{gloss-kurdish.ldf}}}
-\generate{\file{gloss-lao.ldf}{\from{polyglossia.dtx}{gloss-lao.ldf}}}
-\generate{\file{gloss-latex.ldf}{\from{polyglossia.dtx}{gloss-latex.ldf}}}
-\generate{\file{gloss-latin.ldf}{\from{polyglossia.dtx}{gloss-latin.ldf}}}
-\generate{\file{gloss-latinclassic.ldf}{\from{polyglossia.dtx}{gloss-latinclassic.ldf}}}
-\generate{\file{gloss-latinecclesiastic.ldf}{\from{polyglossia.dtx}{gloss-latinecclesiastic.ldf}}}
-\generate{\file{gloss-latinmedieval.ldf}{\from{polyglossia.dtx}{gloss-latinmedieval.ldf}}}
-\generate{\file{gloss-latvian.ldf}{\from{polyglossia.dtx}{gloss-latvian.ldf}}}
-\generate{\file{gloss-lithuanian.ldf}{\from{polyglossia.dtx}{gloss-lithuanian.ldf}}}
-\generate{\file{gloss-lowersorbian.ldf}{\from{polyglossia.dtx}{gloss-lowersorbian.ldf}}}
-\generate{\file{gloss-lsorbian.ldf}{\from{polyglossia.dtx}{gloss-lsorbian.ldf}}}
-\generate{\file{gloss-macedonian.ldf}{\from{polyglossia.dtx}{gloss-macedonian.ldf}}}
-\generate{\file{gloss-magyar.ldf}{\from{polyglossia.dtx}{gloss-magyar.ldf}}}
-\generate{\file{gloss-malay.ldf}{\from{polyglossia.dtx}{gloss-malay.ldf}}}
-\generate{\file{gloss-malayalam.ldf}{\from{polyglossia.dtx}{gloss-malayalam.ldf}}}
-\generate{\file{gloss-marathi.ldf}{\from{polyglossia.dtx}{gloss-marathi.ldf}}}
-\generate{\file{gloss-mongolian.ldf}{\from{polyglossia.dtx}{gloss-mongolian.ldf}}}
-\generate{\file{gloss-naustrian.ldf}{\from{polyglossia.dtx}{gloss-naustrian.ldf}}}
-\generate{\file{gloss-newzealand.ldf}{\from{polyglossia.dtx}{gloss-newzealand.ldf}}}
-\generate{\file{gloss-ngerman.ldf}{\from{polyglossia.dtx}{gloss-ngerman.ldf}}}
-\generate{\file{gloss-nko.ldf}{\from{polyglossia.dtx}{gloss-nko.ldf}}}
-\generate{\file{gloss-norsk.ldf}{\from{polyglossia.dtx}{gloss-norsk.ldf}}}
-\generate{\file{gloss-norwegian.ldf}{\from{polyglossia.dtx}{gloss-norwegian.ldf}}}
-\generate{\file{gloss-nswissgerman.ldf}{\from{polyglossia.dtx}{gloss-nswissgerman.ldf}}}
-\generate{\file{gloss-nynorsk.ldf}{\from{polyglossia.dtx}{gloss-nynorsk.ldf}}}
-\generate{\file{gloss-occitan.ldf}{\from{polyglossia.dtx}{gloss-occitan.ldf}}}
-\generate{\file{gloss-persian.ldf}{\from{polyglossia.dtx}{gloss-persian.ldf}}}
-\generate{\file{gloss-piedmontese.ldf}{\from{polyglossia.dtx}{gloss-piedmontese.ldf}}}
-\generate{\file{gloss-polish.ldf}{\from{polyglossia.dtx}{gloss-polish.ldf}}}
-\generate{\file{gloss-polutonikogreek.ldf}{\from{polyglossia.dtx}{gloss-polutonikogreek.ldf}}}
-\generate{\file{gloss-portuges.ldf}{\from{polyglossia.dtx}{gloss-portuges.ldf}}}
-\generate{\file{gloss-portuguese.ldf}{\from{polyglossia.dtx}{gloss-portuguese.ldf}}}
-\generate{\file{gloss-romanian.ldf}{\from{polyglossia.dtx}{gloss-romanian.ldf}}}
-\generate{\file{gloss-romansh.ldf}{\from{polyglossia.dtx}{gloss-romansh.ldf}}}
-\generate{\file{gloss-russian.ldf}{\from{polyglossia.dtx}{gloss-russian.ldf}}}
-\generate{\file{gloss-sami.ldf}{\from{polyglossia.dtx}{gloss-sami.ldf}}}
-\generate{\file{gloss-samin.ldf}{\from{polyglossia.dtx}{gloss-samin.ldf}}}
-\generate{\file{gloss-sanskrit.ldf}{\from{polyglossia.dtx}{gloss-sanskrit.ldf}}}
-\generate{\file{gloss-scottish.ldf}{\from{polyglossia.dtx}{gloss-scottish.ldf}}}
-\generate{\file{gloss-serbian.ldf}{\from{polyglossia.dtx}{gloss-serbian.ldf}}}
-\generate{\file{gloss-serbianc.ldf}{\from{polyglossia.dtx}{gloss-serbianc.ldf}}}
-\generate{\file{gloss-slovak.ldf}{\from{polyglossia.dtx}{gloss-slovak.ldf}}}
-\generate{\file{gloss-slovene.ldf}{\from{polyglossia.dtx}{gloss-slovene.ldf}}}
-\generate{\file{gloss-slovenian.ldf}{\from{polyglossia.dtx}{gloss-slovenian.ldf}}}
-\generate{\file{gloss-sorbian.ldf}{\from{polyglossia.dtx}{gloss-sorbian.ldf}}}
-\generate{\file{gloss-spanish.ldf}{\from{polyglossia.dtx}{gloss-spanish.ldf}}}
-\generate{\file{gloss-spanishmx.ldf}{\from{polyglossia.dtx}{gloss-spanishmx.ldf}}}
-\generate{\file{gloss-swedish.ldf}{\from{polyglossia.dtx}{gloss-swedish.ldf}}}
-\generate{\file{gloss-swissgerman.ldf}{\from{polyglossia.dtx}{gloss-swissgerman.ldf}}}
-\generate{\file{gloss-syriac.ldf}{\from{polyglossia.dtx}{gloss-syriac.ldf}}}
-\generate{\file{gloss-tamil.ldf}{\from{polyglossia.dtx}{gloss-tamil.ldf}}}
-\generate{\file{gloss-telugu.ldf}{\from{polyglossia.dtx}{gloss-telugu.ldf}}}
-\generate{\file{gloss-thai.ldf}{\from{polyglossia.dtx}{gloss-thai.ldf}}}
-\generate{\file{gloss-tibetan.ldf}{\from{polyglossia.dtx}{gloss-tibetan.ldf}}}
-\generate{\file{gloss-turkish.ldf}{\from{polyglossia.dtx}{gloss-turkish.ldf}}}
-\generate{\file{gloss-turkmen.ldf}{\from{polyglossia.dtx}{gloss-turkmen.ldf}}}
-\generate{\file{gloss-ukrainian.ldf}{\from{polyglossia.dtx}{gloss-ukrainian.ldf}}}
-\generate{\file{gloss-uppersorbian.ldf}{\from{polyglossia.dtx}{gloss-uppersorbian.ldf}}}
-\generate{\file{gloss-urdu.ldf}{\from{polyglossia.dtx}{gloss-urdu.ldf}}}
-\generate{\file{gloss-usorbian.ldf}{\from{polyglossia.dtx}{gloss-usorbian.ldf}}}
-\generate{\file{gloss-vietnamese.ldf}{\from{polyglossia.dtx}{gloss-vietnamese.ldf}}}
-\generate{\file{gloss-welsh.ldf}{\from{polyglossia.dtx}{gloss-welsh.ldf}}}
-\generate{\file{arabicdigits.map}{\from{polyglossia.dtx}{arabicdigits.map}}}
-\generate{\file{bengalidigits.map}{\from{polyglossia.dtx}{bengalidigits.map}}}
-\generate{\file{devanagaridigits.map}{\from{polyglossia.dtx}{devanagaridigits.map}}}
-\generate{\file{farsidigits.map}{\from{polyglossia.dtx}{farsidigits.map}}}
-\generate{\file{thaidigits.map}{\from{polyglossia.dtx}{thaidigits.map}}}
-\def\MetaPrefix{-- }
-\generate{\file{polyglossia-french.lua}{\from{polyglossia.dtx}{polyglossia-french.lua}}}
-\generate{\file{polyglossia-korean.lua}{\from{polyglossia.dtx}{polyglossia-korean.lua}}}
-\generate{\file{polyglossia-latin.lua}{\from{polyglossia.dtx}{polyglossia-latin.lua}}}
-\generate{\file{polyglossia-punct.lua}{\from{polyglossia.dtx}{polyglossia-punct.lua}}}
-\generate{\file{polyglossia-sanskrit.lua}{\from{polyglossia.dtx}{polyglossia-sanskrit.lua}}}
-\generate{\file{polyglossia-tibt.lua}{\from{polyglossia.dtx}{polyglossia-tibt.lua}}}
-\generate{\file{polyglossia.lua}{\from{polyglossia.dtx}{polyglossia.lua}}}
-\let\MetaPrefix\DoubleperCent
-\endbatchfile
diff --git a/macros/latex/contrib/polyglossia/polyglossia.pdf b/macros/latex/contrib/polyglossia/polyglossia.pdf
index 0698550579..94b595acc6 100644
--- a/macros/latex/contrib/polyglossia/polyglossia.pdf
+++ b/macros/latex/contrib/polyglossia/polyglossia.pdf
Binary files differ