diff options
author | Karl Berry <karl@freefriends.org> | 2020-01-29 22:37:53 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-01-29 22:37:53 +0000 |
commit | 015c5f064b14e4a79f151b46a6dd46b150520c81 (patch) | |
tree | cc3434d0ae73900950b37bc952816286d4d76d5c /Master/texmf-dist/tex/latex/polyglossia | |
parent | e9549ffe43d42fda4e5d3778e1d26fbd95e4ae9f (diff) |
polyglossia (29jan20)
git-svn-id: svn://tug.org/texlive/trunk@53592 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/polyglossia')
206 files changed, 3220 insertions, 815 deletions
diff --git a/Master/texmf-dist/tex/latex/polyglossia/farsical.sty b/Master/texmf-dist/tex/latex/polyglossia/farsical.sty index 7c715c82471..862a806cc24 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/farsical.sty +++ b/Master/texmf-dist/tex/latex/polyglossia/farsical.sty @@ -1,5 +1,5 @@ \ProvidesPackage{farsical} - [2008/07/02 v0.1 % + [2019/12/12 v0.2 % Farsi (jalali) calendar] \ifluatex\RequirePackage{luabidi}\else\RequirePackage{bidi}\fi \RequirePackage{calc,arabicnumbers} @@ -197,7 +197,7 @@ \or مهر\or آبان\or آذر\or دی\or بهمن\or اسفند% \fi} \def\JalalimonthEnglish#1{\ifcase#1% -\or Farvardīn\or Ordībehesht\or Khordād\or Tīr -\or Mordād\or Shahrīvar\or Mihr\or Ābān\or Āzar +\or Farvardīn\or Ordībehesht\or Khordād\or Tīr% +\or Mordād\or Shahrīvar\or Mihr\or Ābān\or Āzar% \or Dai\or Bahman\or Esfand\fi} \endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-aeb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-aeb.ldf new file mode 100644 index 00000000000..3148830da51 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-aeb.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-aeb.ldf}[polyglossia: module for aeb (arabic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{arabic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-af.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-af.ldf new file mode 100644 index 00000000000..681ef83507d --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-af.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-af.ldf}[polyglossia: module for af (afrikaans)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{afrikaans} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-afb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-afb.ldf new file mode 100644 index 00000000000..4624d19d1ac --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-afb.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-afb.ldf}[polyglossia: module for afb (arabic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{arabic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-afrikaans.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-afrikaans.ldf index 76b0bd1a58f..545ecd34292 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-afrikaans.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-afrikaans.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-afrikaans.ldf}[polyglossia: module for afrikaans] \PolyglossiaSetup{afrikaans}{ + bcp47=af, hyphennames={afrikaans,dutch}, hyphenmins={2,2}, langtag=AFK, @@ -8,8 +9,14 @@ 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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf index 617bdca2755..fdc720bc001 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-albanian.ldf}[polyglossia: module for albanian] \PolyglossiaSetup{albanian}{ + bcp47=sq, hyphennames={albanian}, langtag=SQI, hyphenmins={2,2}, @@ -8,6 +9,9 @@ fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{albanian}{sq} + \def\captionsalbanian{% \def\refname{Referencat}% \def\abstractname{Përmbledhja}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-am.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-am.ldf new file mode 100644 index 00000000000..60b5f54d061 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-am.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-am.ldf}[polyglossia: module for am (amharic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{amharic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-amharic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-amharic.ldf index 9a33de9fb90..14fca7f35ca 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-amharic.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-amharic.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-amharic.ldf}[polyglossia: module for amharic] \PolyglossiaSetup{amharic}{ + bcp47=am, script=Ethiopic, scripttag=ethi, langtag=AMH, @@ -9,6 +10,9 @@ %TODO localalph=ethnum } +% BCP-47 compliant aliases +\setlanguagealias*{amharic}{am} + \def\captionsamharic{% \def\refname{የነሥ ጹሁፍ ምንጭ}% \def\abstractname{አኅጽተሮ ጽሁፍ}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-apd.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-apd.ldf new file mode 100644 index 00000000000..f828ac234cc --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-apd.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-apd.ldf}[polyglossia: module for apd (arabic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{arabic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-IQ.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-IQ.ldf new file mode 100644 index 00000000000..d0982b16bbf --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-IQ.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ar-IQ.ldf}[polyglossia: module for ar-IQ (arabic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{arabic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-JO.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-JO.ldf new file mode 100644 index 00000000000..ed09424bf49 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-JO.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ar-JO.ldf}[polyglossia: module for ar-JO (arabic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{arabic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-LB.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-LB.ldf new file mode 100644 index 00000000000..f7edef6ed87 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-LB.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ar-LB.ldf}[polyglossia: module for ar-LB (arabic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{arabic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-MR.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-MR.ldf new file mode 100644 index 00000000000..2b3a50e66ab --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-MR.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ar-MR.ldf}[polyglossia: module for ar-MR (arabic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{arabic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-PS.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-PS.ldf new file mode 100644 index 00000000000..b93863f9d40 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-PS.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ar-PS.ldf}[polyglossia: module for ar-PS (arabic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{arabic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-SY.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-SY.ldf new file mode 100644 index 00000000000..ac4a8bd8ac7 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-SY.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ar-SY.ldf}[polyglossia: module for ar-SY (arabic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{arabic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-YE.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-YE.ldf new file mode 100644 index 00000000000..df33b749538 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar-YE.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ar-YE.ldf}[polyglossia: module for ar-YE (arabic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{arabic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ar.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar.ldf new file mode 100644 index 00000000000..f86a520af9e --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ar.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ar.ldf}[polyglossia: module for ar (arabic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{arabic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-arabic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-arabic.ldf index a00d3c777dd..6cd68bdb7f6 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-arabic.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-arabic.ldf @@ -10,6 +10,7 @@ and may look very wrong.} \RequirePackage{hijrical} \PolyglossiaSetup{arabic}{ + bcp47=ar, script=Arabic, direction=RL, langtag=ARA, @@ -21,6 +22,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} @@ -47,9 +65,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}}} @@ -69,8 +89,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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-armenian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-armenian.ldf index b645a3af818..add8aa5cb30 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-armenian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-armenian.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-armenian.ldf}[polyglossia: module for armenian] \PolyglossiaSetup{armenian}{ + bcp47=hy, script=Armenian, scripttag=armn, langtag=HYE, @@ -10,6 +11,9 @@ localnumeral=armeniannumerals } +% BCP-47 compliant aliases +\setlanguagealias*{armenian}{hy} + \newif\if@eastern@armenian \@eastern@armenianfalse \define@choicekey*+{armenian}{variant}[\val\nr]{western,eastern}[western]{% @@ -29,6 +33,9 @@ \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{Հղումներ}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-arq.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-arq.ldf new file mode 100644 index 00000000000..bff535e088e --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-arq.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-arq.ldf}[polyglossia: module for arq (arabic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{arabic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ary.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ary.ldf new file mode 100644 index 00000000000..495efac6c56 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ary.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ary.ldf}[polyglossia: module for ary (arabic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{arabic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-arz.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-arz.ldf new file mode 100644 index 00000000000..051b4ccd50d --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-arz.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-arz.ldf}[polyglossia: module for arz (arabic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{arabic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ast.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ast.ldf new file mode 100644 index 00000000000..4d83cf6e45a --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ast.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ast.ldf}[polyglossia: module for ast (asturian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{asturian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-asturian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-asturian.ldf index 5c21fde3175..0cdec249b4b 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-asturian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-asturian.ldf @@ -3,6 +3,7 @@ % \ProvidesFile{gloss-asturian.ldf}[polyglossia: module for asturian] \PolyglossiaSetup{asturian}{ + bcp47=ast, hyphennames={asturian,catalan}, hyphenmins={2,2}, langtag=AST, @@ -11,6 +12,9 @@ fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{asturian}{ast} + \def\captionsasturian{% \def\prefacename{Entamu}% \def\refname{Referencies}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-austrian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-austrian.ldf index 87d89848742..816c0ee220b 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-austrian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-austrian.ldf @@ -1,4 +1,4 @@ -\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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ayl.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ayl.ldf new file mode 100644 index 00000000000..26a4d41544b --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ayl.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ayl.ldf}[polyglossia: module for ayl (arabic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{arabic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasa.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasa.ldf index 7e897526982..43b65c656ea 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasa.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bahasa.ldf @@ -1,7 +1,7 @@ -\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} \endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-basque.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-basque.ldf index 16ee1d3b909..d11fbe857b1 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-basque.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-basque.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-basque.ldf}[polyglossia: module for basque] \PolyglossiaSetup{basque}{ + bcp47=eu, hyphennames={basque}, hyphenmins={2,2}, langtag=EUQ, @@ -7,6 +8,9 @@ fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{basque}{eu} + \def\captionsbasque{% \def\refname{Erreferentziak}% \def\abstractname{Laburpena}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-be-tarask.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-be-tarask.ldf new file mode 100644 index 00000000000..5ec8cd3e89c --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-be-tarask.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-be-tarask.ldf}[polyglossia: module for be-tarask (belarusian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{belarusian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-be.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-be.ldf new file mode 100644 index 00000000000..0c144cced1b --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-be.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-be.ldf}[polyglossia: module for be (belarusian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{belarusian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-belarusian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-belarusian.ldf index c02dc9b3bc6..f6c78ad7595 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-belarusian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-belarusian.ldf @@ -3,6 +3,7 @@ \RequirePackage{xpg-cyrillicnumbers} \PolyglossiaSetup{belarusian}{ + bcp47=be, script=Cyrillic, scripttag=cyrl, langtag=BEL, @@ -14,30 +15,56 @@ 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} @@ -202,7 +229,11 @@ \def\belarusiannumber#1{% \ifcyrillic@numerals - \cyr@alph{#1}% + \ifcyrillic@asbuk@numerals + \belarusian@asbuk@alph{#1}% + \else + \cyr@alph{#1}% + \fi \else \number#1% \fi% @@ -210,7 +241,11 @@ \def\Belarusiannumber#1{% \ifcyrillic@numerals - \cyr@Alph{#1}% + \ifcyrillic@asbuk@numerals + \belarusian@asbuk@Alph{#1}% + \else + \cyr@Alph{#1}% + \fi \else \number#1% \fi% @@ -219,24 +254,30 @@ \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\AsbukTrad#1{\expandafter\cyr@Alph\csname c@#1\endcsname} +\def\asbukTrad#1{\expandafter\cyr@alph\csname c@#1\endcsname} -\def\asbuk#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} - -%\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} +% 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@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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bengali.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bengali.ldf index 3b2226be3b5..802a7db00b1 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bengali.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bengali.ldf @@ -2,16 +2,19 @@ % 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, @@ -22,55 +25,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{তথ্যসূত্রসমূহ}% @@ -125,13 +108,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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bg.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bg.ldf new file mode 100644 index 00000000000..3a60349b213 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bg.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-bg.ldf}[polyglossia: module for bg (bulgarian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{bulgarian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bn.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bn.ldf new file mode 100644 index 00000000000..d61dcb54245 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bn.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-bn.ldf}[polyglossia: module for bn (bengali)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{bengali} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bo.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bo.ldf new file mode 100644 index 00000000000..45bc3080f56 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bo.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-bo.ldf}[polyglossia: module for bo (tibetan)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{tibetan} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bosnian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bosnian.ldf index 187bb3e65f9..e533f8c439b 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bosnian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bosnian.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-bosnian.ldf}[polyglossia: module for bosnian] \PolyglossiaSetup{bosnian}{ + bcp47=bs, langtag=BOS, hyphennames={bosnian,croatian}, hyphenmins={2,2}, % adapted from gloss-croatian @@ -9,6 +10,9 @@ fontsetup=true } +% BCP-47 compliant aliases +\setlanguagealias*{bosnian}{bs} + % TODO: Add script=Cyrillic % from babel-bosnian diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-br.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-br.ldf new file mode 100644 index 00000000000..6b87c846698 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-br.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-br.ldf}[polyglossia: module for br (breton)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{breton} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf index a3d1eee2a12..de859428fb9 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-breton.ldf}[polyglossia: module for breton] \PolyglossiaSetup{breton}{ + bcp47=br, hyphennames={breton}, hyphenmins={2,2}, langtag=BRE, @@ -8,6 +9,9 @@ fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{breton}{br} + \ifluatex % TODO \else diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-british.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-british.ldf index e598d02edcf..5aa113d6efc 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-british.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-british.ldf @@ -1,4 +1,4 @@ -\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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bs.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bs.ldf new file mode 100644 index 00000000000..c7f14b64aea --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bs.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-bs.ldf}[polyglossia: module for bs (bosnian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{bosnian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-bulgarian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-bulgarian.ldf index 8f8aef1b727..bb30dd1c6ab 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-bulgarian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-bulgarian.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-bulgarian.ldf}[polyglossia: module for bulgarian] \PolyglossiaSetup{bulgarian}{ + bcp47=bg, script=Cyrillic, scripttag=cyrl, langtag=BGR, @@ -10,6 +11,9 @@ %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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ca.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ca.ldf new file mode 100644 index 00000000000..9e9768c120a --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ca.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ca.ldf}[polyglossia: module for ca (catalan)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{catalan} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-canadien.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-canadien.ldf index 02f9e44a888..afe4ccd80f1 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-canadien.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-canadien.ldf @@ -1,4 +1,4 @@ -\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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-catalan.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-catalan.ldf index 6dbd8df9130..a2a5d7c420f 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-catalan.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-catalan.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-catalan.ldf}[polyglossia: module for catalan] \PolyglossiaSetup{catalan}{ + bcp47=ca, hyphennames={catalan}, hyphenmins={2,2}, langtag=CAT, @@ -8,6 +9,9 @@ fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{catalan}{ca} + \define@boolkey{catalan}[catalan@]{babelshorthands}[true]{} \ifsystem@babelshorthands \setkeys{catalan}{babelshorthands=true} @@ -15,6 +19,9 @@ \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{"}% @@ -23,33 +30,21 @@ %%% 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% @@ -63,21 +58,16 @@ \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% @@ -92,6 +82,7 @@ \kern\rightllkern\hbox{L}}\allowhyphens \fi } + \AtBeginDocument{% \let\lslash\l \let\Lslash\L diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Arab.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Arab.ldf new file mode 100644 index 00000000000..2f3321d71c4 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Arab.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ckb-Arab.ldf}[polyglossia: module for ckb-Arab (kurdish)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{kurdish} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Latn.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Latn.ldf new file mode 100644 index 00000000000..ab59c00e670 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb-Latn.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ckb-Latn.ldf}[polyglossia: module for ckb-Latn (kurdish)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{kurdish} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb.ldf new file mode 100644 index 00000000000..104c4e4ec74 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ckb.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ckb.ldf}[polyglossia: module for ckb (kurdish)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{kurdish} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-cop.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-cop.ldf new file mode 100644 index 00000000000..94859cec3ef --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-cop.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-cop.ldf}[polyglossia: module for cop (coptic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{coptic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-coptic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-coptic.ldf index 76a4fb151a5..455b9faaf59 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-coptic.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-coptic.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-coptic.ldf}[polyglossia: module for coptic] \PolyglossiaSetup{coptic}{ + bcp47=cop, script=Coptic, scripttag=copt, langtag=COP, @@ -8,6 +9,9 @@ fontsetup=true } +% BCP-47 compliant aliases +\setlanguagealias*{coptic}{cop} + %\def\captionscoptic{% % \def\refname{<++>}% % \def\abstractname{<++>}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf index 50574e1ddd0..1d7fe73f9b5 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf @@ -1,5 +1,6 @@ \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 @@ -8,12 +9,134 @@ 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}% @@ -31,10 +154,24 @@ \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% +} \endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-cy.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-cy.ldf new file mode 100644 index 00000000000..0032d39ccda --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-cy.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-cy.ldf}[polyglossia: module for cy (welsh)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{welsh} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-cz.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-cz.ldf new file mode 100644 index 00000000000..aa0b681bed2 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-cz.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-cz.ldf}[polyglossia: module for cz (czech)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{czech} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-czech.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-czech.ldf index 1205da7870b..afa8ef435c9 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-czech.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-czech.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-czech.ldf}[polyglossia: module for czech] \PolyglossiaSetup{czech}{ + bcp47=cz, hyphennames={czech}, hyphenmins={2,2}, langtag=CSY, @@ -8,6 +9,9 @@ fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{czech}{cz} + \ifluatex \RequirePackage{luavlna} \fi @@ -18,7 +22,8 @@ \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} @@ -33,8 +38,12 @@ }{} \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{% @@ -212,13 +221,13 @@ \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% } \endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-da.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-da.ldf new file mode 100644 index 00000000000..b4bdb898a3a --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-da.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-da.ldf}[polyglossia: module for da (danish)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{danish} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-danish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-danish.ldf index 2de0ae89278..a4356d67c1f 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-danish.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-danish.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-danish.ldf}[polyglossia: module for danish] \PolyglossiaSetup{danish}{ + bcp47=da, hyphennames={danish}, hyphenmins={2,3}, langtag=DAN, @@ -7,6 +8,9 @@ fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{danish}{da} + \def\captionsdanish{% \def\prefacename{Forord}% \def\refname{Litteratur}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1901.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1901.ldf new file mode 100644 index 00000000000..023d14760e1 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1901.ldf @@ -0,0 +1,7 @@ +\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} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1996.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1996.ldf new file mode 100644 index 00000000000..f1ec1091f45 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT-1996.ldf @@ -0,0 +1,7 @@ +\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} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT.ldf new file mode 100644 index 00000000000..6cd9e5f2c0d --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-AT.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-de-AT.ldf}[polyglossia: module for de-AT (german)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{german} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1901.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1901.ldf new file mode 100644 index 00000000000..f5f75b90927 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1901.ldf @@ -0,0 +1,7 @@ +\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} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1996.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1996.ldf new file mode 100644 index 00000000000..ca782509210 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH-1996.ldf @@ -0,0 +1,7 @@ +\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} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH.ldf new file mode 100644 index 00000000000..3b53a24534e --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-CH.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-de-CH.ldf}[polyglossia: module for de-CH (german)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{german} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1901.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1901.ldf new file mode 100644 index 00000000000..280712a0135 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1901.ldf @@ -0,0 +1,7 @@ +\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} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1996.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1996.ldf new file mode 100644 index 00000000000..eb47982699e --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE-1996.ldf @@ -0,0 +1,7 @@ +\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} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE.ldf new file mode 100644 index 00000000000..5d18658335f --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-DE.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-de-DE.ldf}[polyglossia: module for de-DE (german)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{german} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1901.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1901.ldf new file mode 100644 index 00000000000..8494e0aab09 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1901.ldf @@ -0,0 +1,7 @@ +\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} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1996.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1996.ldf new file mode 100644 index 00000000000..1fc174cafc9 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT-1996.ldf @@ -0,0 +1,7 @@ +\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} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT.ldf new file mode 100644 index 00000000000..905d2e318fe --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-AT.ldf @@ -0,0 +1,7 @@ +\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} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1901.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1901.ldf new file mode 100644 index 00000000000..dbbd4467be8 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1901.ldf @@ -0,0 +1,7 @@ +\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} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1996.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1996.ldf new file mode 100644 index 00000000000..afd8626169b --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH-1996.ldf @@ -0,0 +1,7 @@ +\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} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH.ldf new file mode 100644 index 00000000000..971936554c8 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-CH.ldf @@ -0,0 +1,7 @@ +\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} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1901.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1901.ldf new file mode 100644 index 00000000000..abd6b680356 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1901.ldf @@ -0,0 +1,7 @@ +\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} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1996.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1996.ldf new file mode 100644 index 00000000000..73ff933a11c --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE-1996.ldf @@ -0,0 +1,7 @@ +\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} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE.ldf new file mode 100644 index 00000000000..0ff7361cf54 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf-DE.ldf @@ -0,0 +1,7 @@ +\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} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf.ldf new file mode 100644 index 00000000000..13e6e30fad4 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de-Latf.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-de-Latf.ldf}[polyglossia: module for de-Latf (german)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{german} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-de.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-de.ldf new file mode 100644 index 00000000000..98462d1b878 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-de.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-de.ldf}[polyglossia: module for de (german)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{german} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-divehi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-divehi.ldf index ad5dc56bd4d..188e5bae6ff 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-divehi.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-divehi.ldf @@ -7,6 +7,7 @@ and may look very wrong.} \fi \RequireBidi \PolyglossiaSetup{divehi}{ + bcp47=dv, script=Thaana, scripttag=thaa, langtag=DIV,% TODO Support DHV as well? @@ -15,6 +16,9 @@ and may look very wrong.} fontsetup=true } +% BCP-47 compliant aliases +\setlanguagealias*{divehi}{dv} + %\def\captionsdivehi{% % \def\refname{<++>}% % \def\abstractname{<++>}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-dsb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-dsb.ldf new file mode 100644 index 00000000000..cf89f6426a8 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-dsb.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-dsb.ldf}[polyglossia: module for dsb (sorbian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{sorbian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-dutch.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-dutch.ldf index 5bbefc5dc85..1ec5c0e2889 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-dutch.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-dutch.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-dutch.ldf}[polyglossia: module for dutch] \PolyglossiaSetup{dutch}{ + bcp47=nl, hyphennames={dutch}, hyphenmins={2,2}, langtag=NLD, @@ -7,8 +8,14 @@ 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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-dv.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-dv.ldf new file mode 100644 index 00000000000..08b2551920d --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-dv.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-dv.ldf}[polyglossia: module for dv (divehi)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{divehi} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-el-monoton.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-el-monoton.ldf new file mode 100644 index 00000000000..cfbf599f25c --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-el-monoton.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-el-monoton.ldf}[polyglossia: module for el-monoton (greek)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{greek} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-el-polyton.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-el-polyton.ldf new file mode 100644 index 00000000000..b5c1d44a75a --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-el-polyton.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-el-polyton.ldf}[polyglossia: module for el-polyton (greek)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{greek} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-el.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-el.ldf new file mode 100644 index 00000000000..6f40887f82e --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-el.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-el.ldf}[polyglossia: module for el (greek)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{greek} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-en-AU.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-AU.ldf new file mode 100644 index 00000000000..a48dbf4b521 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-AU.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-en-AU.ldf}[polyglossia: module for en-AU (english)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{english} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-en-CA.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-CA.ldf new file mode 100644 index 00000000000..ba7402ebd85 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-CA.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-en-CA.ldf}[polyglossia: module for en-CA (english)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{english} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-en-GB.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-GB.ldf new file mode 100644 index 00000000000..b90683b034c --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-GB.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-en-GB.ldf}[polyglossia: module for en-GB (english)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{english} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-en-NZ.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-NZ.ldf new file mode 100644 index 00000000000..a458157925a --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-NZ.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-en-NZ.ldf}[polyglossia: module for en-NZ (english)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{english} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-en-US.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-US.ldf new file mode 100644 index 00000000000..4ed4b6f30e2 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-en-US.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-en-US.ldf}[polyglossia: module for en-US (english)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{english} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-en.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-en.ldf new file mode 100644 index 00000000000..4884583ca8f --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-en.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-en.ldf}[polyglossia: module for en (english)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{english} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf index 626209d8800..5e5db8a2f46 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf @@ -1,12 +1,21 @@ \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} @@ -28,41 +37,41 @@ % 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 @@ -77,8 +86,9 @@ \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 @@ -86,16 +96,18 @@ \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}{}% @@ -107,6 +119,12 @@ \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 @@ -126,7 +144,7 @@ \fi \def\english@language{% - \polyglossia@setup@language@patterns{\english@variant} + \polyglossia@setup@language@patterns{\english@variant}% }% \def\captionsenglish{% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-eo.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-eo.ldf new file mode 100644 index 00000000000..3d77ba69bb1 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-eo.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-eo.ldf}[polyglossia: module for eo (esperanto)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{esperanto} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-es-ES.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-es-ES.ldf new file mode 100644 index 00000000000..114160582a6 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-es-ES.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-es-ES.ldf}[polyglossia: module for es-ES (spanish)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{spanish} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-es-MX.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-es-MX.ldf new file mode 100644 index 00000000000..389d3bf748a --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-es-MX.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-es-MX.ldf}[polyglossia: module for es-MX (spanish)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{spanish} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-es.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-es.ldf new file mode 100644 index 00000000000..b00dccaaf68 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-es.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-es.ldf}[polyglossia: module for es (spanish)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{spanish} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-esperanto.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-esperanto.ldf index f3a6bf09911..f7f344dc555 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-esperanto.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-esperanto.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-esperanto.ldf}[polyglossia: module for esperanto] \PolyglossiaSetup{esperanto}{ + bcp47=eo, hyphennames={esperanto}, hyphenmins={2,2}, langtag=NTO, @@ -7,6 +8,9 @@ %TODO localalph={esperanto@alph,esperanto@Alph} } +% BCP-47 compliant aliases +\setlanguagealias*{esperanto}{eo} + \def\captionsesperanto{% \def\refname{Citaĵoj}% \def\abstractname{Resumo}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-estonian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-estonian.ldf index f8df426a94f..2649fb2cd47 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-estonian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-estonian.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-estonian.ldf}[polyglossia: module for estonian] \PolyglossiaSetup{estonian}{ + bcp47=et, hyphennames={estonian}, hyphenmins={2,2}, langtag=ETI, @@ -7,6 +8,9 @@ fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{estonian}{et} + \def\captionsestonian{% \def\refname{Viited}% \def\abstractname{Kokkuvõte}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-et.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-et.ldf new file mode 100644 index 00000000000..cfa8de251f6 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-et.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-et.ldf}[polyglossia: module for et (estonian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{estonian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-eu.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-eu.ldf new file mode 100644 index 00000000000..7482d21a2e0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-eu.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-eu.ldf}[polyglossia: module for eu (basque)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{basque} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fa.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fa.ldf new file mode 100644 index 00000000000..531a3a2ea49 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fa.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-fa.ldf}[polyglossia: module for fa (persian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{persian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fi.ldf new file mode 100644 index 00000000000..c9fd02b9f72 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fi.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-fi.ldf}[polyglossia: module for fi (finnish)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{finnish} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-finnish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-finnish.ldf index e0c884f9664..d59a7eaf52e 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-finnish.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-finnish.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-finnish.ldf}[polyglossia: module for finnish] \PolyglossiaSetup{finnish}{ + bcp47=fi, hyphennames={finnish}, hyphenmins={2,2}, langtag=FIN, @@ -7,8 +8,14 @@ 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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CA.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CA.ldf new file mode 100644 index 00000000000..5e278bbedc7 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CA.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-fr-CA.ldf}[polyglossia: module for fr-CA (french)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{french} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CH.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CH.ldf new file mode 100644 index 00000000000..763afe344be --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-CH.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-fr-CH.ldf}[polyglossia: module for fr-CH (french)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{french} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-FR.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-FR.ldf new file mode 100644 index 00000000000..c787a45aa4a --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr-FR.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-fr-FR.ldf}[polyglossia: module for fr-FR (french)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{french} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fr.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr.ldf new file mode 100644 index 00000000000..2a2caa22fe0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fr.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-fr.ldf}[polyglossia: module for fr (french)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{french} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf index 57ec25f48e5..43040b0c70b 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-french.ldf}[polyglossia: module for french] \PolyglossiaSetup{french}{% + bcp47=fr-FR, language=French, script=Latin, langtag=FRA, @@ -10,46 +11,63 @@ 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 % » › @@ -62,9 +80,9 @@ \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% @@ -72,10 +90,10 @@ } \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 }% } @@ -147,19 +165,28 @@ \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 @@ -192,12 +219,13 @@ \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 @@ -216,26 +244,35 @@ \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}% "):" -> ") :" @@ -253,6 +290,7 @@ \XeTeXcharclass `\⁇ \z@ \XeTeXcharclass `\⁈ \z@ \XeTeXcharclass `\⁉ \z@ + \XeTeXcharclass `\‽ \z@ \XeTeXcharclass `\; \z@ \XeTeXcharclass `\: \z@ \XeTeXcharclass `\« \z@ diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-friulian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-friulian.ldf index 8cabe99e69c..e68fd60813e 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-friulian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-friulian.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-friulian.ldf}[polyglossia: module for friulian] \PolyglossiaSetup{friulian}{% + bcp47=fur, language=Friulian, babelname=friulan, hyphennames={friulan,furlan}, @@ -11,6 +12,9 @@ frenchspacing=true, } +% BCP-47 compliant aliases +\setlanguagealias*{friulian}{fur} + % Babel and backwards compat. alias \setlanguagealias{friulian}{friulan} diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-fur.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-fur.ldf new file mode 100644 index 00000000000..d7bfff5aa1c --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-fur.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-fur.ldf}[polyglossia: module for fur (friulian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{friulian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ga.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ga.ldf new file mode 100644 index 00000000000..6f2dfe81faf --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ga.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ga.ldf}[polyglossia: module for ga (gaelic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{gaelic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-gaelic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-gaelic.ldf index 91666261c57..b9cdccd0d96 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-gaelic.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-gaelic.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-gaelic.ldf}[polyglossia: module for gaelic] \PolyglossiaSetup{gaelic}{ + bcp47=ga, language=Irish, babelname=irish, hyphennames={irish}, @@ -9,6 +10,9 @@ 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} @@ -18,17 +22,20 @@ \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}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-galician.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-galician.ldf index be4853ebbef..f9cf4ac3d23 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-galician.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-galician.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-galician.ldf}[polyglossia: module for galician] \PolyglossiaSetup{galician}{ + bcp47=gl, hyphennames={galician}, hyphenmins={2,2}, langtag=GAL, @@ -7,6 +8,9 @@ fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{galician}{gl} + \def\captionsgalician{% \def\refname{Referencias}% \def\abstractname{Resumo}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-gd.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-gd.ldf new file mode 100644 index 00000000000..f5a4388bf58 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-gd.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-gd.ldf}[polyglossia: module for gd (gaelic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{gaelic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-georgian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-georgian.ldf index 8d53e228a05..1fa2091b93e 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-georgian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-georgian.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-georgian.ldf}[polyglossia: module for georgian] \PolyglossiaSetup{georgian}{ + bcp47=ka, script=Georgian, scripttag=geor, langtag=KAT, @@ -9,6 +10,9 @@ localnumeral=georgiannumerals } +% BCP-47 compliant aliases +\setlanguagealias*{georgian}{ka} + \newif\ifgeorgian@numerals \define@key{georgian}{numerals}[arabic]{% \ifstrequal{#1}{georgian}% @@ -20,6 +24,9 @@ \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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf index 3c66f6f8367..0cf07c8c6da 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-german.ldf}[polyglossia: module for german] \PolyglossiaSetup{german}{ + bcp47=de-DE, hyphenmins={2,2}, frenchspacing=true, fontsetup=true, @@ -8,6 +9,28 @@ 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} @@ -18,7 +41,7 @@ \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 @@ -28,6 +51,9 @@ \or % 1901: \@german@oldspellingtrue + \or + % 1996: + \@german@oldspellingfalse \fi \german@set@babelname% \xpg@info{Option: German, spelling=\val}% @@ -64,21 +90,45 @@ \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 } @@ -95,14 +145,24 @@ % 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} @@ -229,26 +289,23 @@ } \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 } diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-gl.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-gl.ldf new file mode 100644 index 00000000000..9ef3f96da98 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-gl.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-gl.ldf}[polyglossia: module for gl (galician)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{galician} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-grc.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-grc.ldf new file mode 100644 index 00000000000..9226621218f --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-grc.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-grc.ldf}[polyglossia: module for grc (greek)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{greek} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-greek.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-greek.ldf index eba37b56c74..90d34f14550 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-greek.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-greek.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-greek.ldf}[polyglossia: module for greek] \PolyglossiaSetup{greek}{ + bcp47=el-monoton, script=Greek, scripttag=grek, langtag=ELL, @@ -12,6 +13,12 @@ %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} @@ -48,7 +55,7 @@ \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 @@ -59,6 +66,7 @@ \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}{}% @@ -68,12 +76,13 @@ \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}% } @@ -84,8 +93,11 @@ \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{Αναφορές}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-he.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-he.ldf new file mode 100644 index 00000000000..9fa94cc0064 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-he.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-he.ldf}[polyglossia: module for he (hebrew)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{hebrew} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf index 1f366a0f551..a21d5909cba 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf @@ -9,6 +9,7 @@ and may look very wrong.} \RequirePackage{hebrewcal} \PolyglossiaSetup{hebrew}{ + bcp47=he, script=Hebrew, direction=RL, scripttag=hebr, @@ -20,6 +21,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]{% @@ -50,6 +54,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{מקורות}% @@ -104,19 +111,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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hi.ldf new file mode 100644 index 00000000000..cfcc09f48a4 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hi.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-hi.ldf}[polyglossia: module for hi (hindi)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{hindi} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hindi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hindi.ldf index 56ca28f404e..3fa551dd56a 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hindi.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hindi.ldf @@ -6,6 +6,7 @@ \ProvidesFile{gloss-hindi.ldf}[polyglossia: module for hindi] \RequirePackage{devanagaridigits} \PolyglossiaSetup{hindi}{ + bcp47=hi, script=Devanagari, scripttag=deva, langtag=HIN, @@ -15,6 +16,9 @@ %TODO nouppercase=true, } +% BCP-47 compliant aliases +\setlanguagealias*{hindi}{hi} + \ifx\l@hindi\@undefined% \ifx\l@sanskrit\@undefined% \xpg@nopatterns{Hindi}% @@ -38,7 +42,11 @@ \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}} diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hr.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hr.ldf new file mode 100644 index 00000000000..a3db290b7ca --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hr.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-hr.ldf}[polyglossia: module for hr (croatian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{croatian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hsb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hsb.ldf new file mode 100644 index 00000000000..6f6e43716c9 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hsb.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-hsb.ldf}[polyglossia: module for hsb (sorbian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{sorbian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hu.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hu.ldf new file mode 100644 index 00000000000..bb176cf1fa1 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hu.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-hu.ldf}[polyglossia: module for hu (hungarian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{hungarian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hungarian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hungarian.ldf index c44c7a63ff0..78403e33d6f 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hungarian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hungarian.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-hungarian.ldf}[polyglossia: module for hungarian] \PolyglossiaSetup{hungarian}{ + bcp47=hu, babelname=magyar, hyphennames={hungarian,magyar}, langtag=HUN, @@ -8,6 +9,9 @@ fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{hungarian}{hu} + \frenchspacing % Babel and backwards compat. alias @@ -51,7 +55,13 @@ \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}% @@ -122,81 +132,81 @@ % 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]{% @@ -207,18 +217,21 @@ \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) } @@ -229,50 +242,50 @@ \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{% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hy.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hy.ldf new file mode 100644 index 00000000000..430cf90aebd --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hy.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-hy.ldf}[polyglossia: module for hy (armenian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{armenian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ia.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ia.ldf new file mode 100644 index 00000000000..e3add18ef78 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ia.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ia.ldf}[polyglossia: module for ia (interlingua)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{interlingua} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-icelandic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-icelandic.ldf index 1520d58472a..1450fcc6f47 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-icelandic.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-icelandic.ldf @@ -1,11 +1,15 @@ \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}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-id.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-id.ldf new file mode 100644 index 00000000000..a3a7e7bda19 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-id.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-id.ldf}[polyglossia: module for id (malay)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{malay} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-interlingua.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-interlingua.ldf index 4708cf0320b..56ff1ef52f6 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-interlingua.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-interlingua.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-interlingua.ldf}[polyglossia: module for interlingua] \PolyglossiaSetup{interlingua}{ + bcp47=ia, hyphennames={interlingua}, hyphenmins={2,2}, langtag=INA, @@ -8,6 +9,9 @@ fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{interlingua}{ia} + \def\captionsinterlingua{% \def\refname{Referentias}% \def\abstractname{Summario}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-is.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-is.ldf new file mode 100644 index 00000000000..f9c084c2665 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-is.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-is.ldf}[polyglossia: module for is (icelandic)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{icelandic} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-it.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-it.ldf new file mode 100644 index 00000000000..34566d847d9 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-it.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-it.ldf}[polyglossia: module for it (italian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{italian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-italian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-italian.ldf index 3d7b02d8951..fb284be12c2 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-italian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-italian.ldf @@ -1,6 +1,7 @@ % !TEX encoding = UTF-8 Unicode \ProvidesFile{gloss-italian.ldf}[polyglossia: module for italian] \PolyglossiaSetup{italian}{ + bcp47=it, hyphennames={italian}, hyphenmins={2,2}, langtag=ITA, @@ -9,10 +10,16 @@ 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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ja.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ja.ldf new file mode 100644 index 00000000000..57116c35d4b --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ja.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ja.ldf}[polyglossia: module for ja (japanese)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{japanese} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-japanese.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-japanese.ldf index 6c36af9f15e..d45de100e53 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-japanese.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-japanese.ldf @@ -1,19 +1,25 @@ \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}% @@ -53,33 +59,33 @@ \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% @@ -89,7 +95,7 @@ 六百\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 九千% @@ -106,7 +112,7 @@ \fi } -\def\@japanesenumber#1{ +\def\@japanesenumber#1{% \@tempcnta=#1% \ifnum\@tempcnta=\z@{〇}% \else @@ -139,12 +145,14 @@ \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 @@ -163,14 +171,14 @@ \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% @@ -197,8 +205,8 @@ \else \,\number\day\,% \fi - {日} - } + {日}% + }% } \def\noextras@japanese{% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ka.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ka.ldf new file mode 100644 index 00000000000..ece3caa5e7d --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ka.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ka.ldf}[polyglossia: module for ka (georgian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{georgian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kannada.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kannada.ldf index 0525d6289fd..0fc557bf0ba 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-kannada.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kannada.ldf @@ -24,6 +24,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, @@ -33,6 +34,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{% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-khmer.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-khmer.ldf index 00c569c06b1..6b62813ed29 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-khmer.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-khmer.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-khmer.ldf}[polyglossia: module for Khmer] \PolyglossiaSetup{khmer}{ + bcp47=km, script=Khmer,% scripttag=khmr,% langtag=KHM,% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-km.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-km.ldf new file mode 100644 index 00000000000..815c84b0f1d --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-km.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-km.ldf}[polyglossia: module for km (khmer)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{khmer} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Arab.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Arab.ldf new file mode 100644 index 00000000000..dae24ca1c3c --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Arab.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-kmr-Arab.ldf}[polyglossia: module for kmr-Arab (kurdish)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{kurdish} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Latn.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Latn.ldf new file mode 100644 index 00000000000..ee7734e7b86 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr-Latn.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-kmr-Latn.ldf}[polyglossia: module for kmr-Latn (kurdish)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{kurdish} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr.ldf new file mode 100644 index 00000000000..58c6b560a65 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kmr.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-kmr.ldf}[polyglossia: module for kmr (kurdish)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{kurdish} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kn.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kn.ldf new file mode 100644 index 00000000000..05ef8b2dc12 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kn.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-kn.ldf}[polyglossia: module for kn (kannada)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{kannada} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ko.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ko.ldf new file mode 100644 index 00000000000..bd0aa3ed805 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ko.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ko.ldf}[polyglossia: module for ko (korean)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{korean} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf index 5aefe04dfa3..5918062e7a9 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-korean.ldf}[polyglossia: module for Korean] \PolyglossiaSetup{korean}{ + bcp47=ko, script=Hangul, scripttag=hang, language=Korean, @@ -10,6 +11,9 @@ 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 @@ -18,7 +22,32 @@ \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 @@ -31,7 +60,7 @@ } \def\captions@korean@hangul{% \def\koreanTHEname{제}% - \def\partname##1##2{제##1##2 편}% + \def\partname{편}% \def\chaptername{장}% \def\refname{참고문헌}% \def\abstractname{요약}% @@ -49,10 +78,11 @@ \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{要約}% @@ -70,6 +100,217 @@ \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{% @@ -145,17 +386,11 @@ \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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Arab.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Arab.ldf new file mode 100644 index 00000000000..05204d5362d --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Arab.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ku-Arab.ldf}[polyglossia: module for ku-Arab (kurdish)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{kurdish} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Latn.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Latn.ldf new file mode 100644 index 00000000000..19d7974c62b --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ku-Latn.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ku-Latn.ldf}[polyglossia: module for ku-Latn (kurdish)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{kurdish} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ku.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ku.ldf new file mode 100644 index 00000000000..6d2dc88b947 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ku.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ku.ldf}[polyglossia: module for ku (kurdish)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{kurdish} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kurdish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kurdish.ldf index 3f118de9b4c..8072041b3e6 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-kurdish.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kurdish.ldf @@ -8,6 +8,7 @@ \RequirePackage{hijrical} \PolyglossiaSetup{kurdish}{ + bcp47=ckb, script=Arabic, direction=RL, scripttag=arab, @@ -17,6 +18,17 @@ 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} @@ -63,9 +75,9 @@ \@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}% @@ -73,20 +85,20 @@ \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 @@ -118,7 +130,8 @@ %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}% @@ -325,19 +338,9 @@ \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 } diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-kurmanji.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-kurmanji.ldf new file mode 100644 index 00000000000..fae13a23273 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-kurmanji.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-kurmanji.ldf}[polyglossia: module for kurmanji kurdish] + +% We provide this gloss for babel compatibility. + +\xpg@load@master@language{kurdish} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-classic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-classic.ldf new file mode 100644 index 00000000000..e165370d7d5 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-classic.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-la-xclassic.ldf}[polyglossia: module for la-xclassic (latin)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{latin} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-ecclesia.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-ecclesia.ldf new file mode 100644 index 00000000000..20449f71137 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-ecclesia.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-la-xecclesiastic.ldf}[polyglossia: module for la-xecclesiastic (latin)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{latin} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-medieval.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-medieval.ldf new file mode 100644 index 00000000000..dcb2c010302 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-la-x-medieval.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-la-xmedieval.ldf}[polyglossia: module for la-xmedieval (latin)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{latin} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-la.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-la.ldf new file mode 100644 index 00000000000..565c5545581 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-la.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-la.ldf}[polyglossia: module for la (latin)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{latin} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lao.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lao.ldf index 96b5c436cf7..5786584703d 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-lao.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lao.ldf @@ -6,6 +6,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, @@ -17,6 +18,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]{% @@ -25,7 +29,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{% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf index 08c4883f748..085f1939bc0 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf @@ -1,20 +1,26 @@ -\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 @@ -47,8 +53,7 @@ \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} @@ -64,11 +69,23 @@ \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 } + } } } @@ -80,19 +97,22 @@ \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: } } @@ -106,7 +126,8 @@ \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 @@ -137,14 +158,15 @@ } { \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 @@ -158,13 +180,28 @@ \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: } @@ -178,18 +215,38 @@ { \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: } @@ -198,8 +255,13 @@ { \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: } @@ -224,6 +286,7 @@ \XeTeXcharclass `\⁇ \z@ \XeTeXcharclass `\⁈ \z@ \XeTeXcharclass `\⁉ \z@ + \XeTeXcharclass `\‽ \z@ \XeTeXcharclass `\; \z@ \XeTeXcharclass `\: \z@ \XeTeXcharclass `\« \z@ @@ -279,7 +342,9 @@ } } { - \msg_warning:nn {polyglossia} {latin / ineffective footnote option} + \iflatin@ecclesiasticfootnotes + \msg_warning:nn {polyglossia} {latin / ineffective footnote option} + \fi } } @@ -301,6 +366,8 @@ %%%%% 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:. @@ -318,7 +385,8 @@ \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} } @@ -329,7 +397,8 @@ \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: } @@ -340,7 +409,8 @@ \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: } @@ -351,7 +421,8 @@ \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: } @@ -419,7 +490,7 @@ The~Latin~hyphenation~variant~"#1"~is~undefined~\msg_line_context:. } -\define@key{latin}{hyphenation} +\define@key {latin} {hyphenation} { \str_case:nnTF {#1} { @@ -518,6 +589,11 @@ { } +% 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 @@ -900,7 +976,7 @@ %% 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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-latvian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-latvian.ldf index 067ee3a921b..4fd0814c0f9 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-latvian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-latvian.ldf @@ -1,11 +1,15 @@ \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}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf index 3d8ead44857..208fcad25ed 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf @@ -2,6 +2,7 @@ \ProvidesFile{gloss-lithuanian.ldf}[polyglossia: module for lithuanian] \PolyglossiaSetup{lithuanian}{ + bcp47=lt, hyphennames={lithuanian}, hyphenmins={2,2}, langtag=LTH, @@ -9,6 +10,9 @@ fontsetup=true } +% BCP-47 compliant aliases +\setlanguagealias*{lithuanian}{lt} + \def\captionslithuanian{% \def\prefacename{Pratarmė}% \def\refname{Literatūra}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lo.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lo.ldf new file mode 100644 index 00000000000..8f8769538d1 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lo.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-lo.ldf}[polyglossia: module for lo (lao)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{lao} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lt.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lt.ldf new file mode 100644 index 00000000000..cf51eee41a6 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lt.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-lt.ldf}[polyglossia: module for lt (lithuanian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{lithuanian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lv.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lv.ldf new file mode 100644 index 00000000000..bd85f60c176 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lv.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-lv.ldf}[polyglossia: module for lv (latvian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{latvian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-macedonian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-macedonian.ldf index 95924c51c5b..4475b92a973 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-macedonian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-macedonian.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-macedonian.ldf}[polyglossia: module for macedonian] \PolyglossiaSetup{macedonian}{ + bcp47=mk, script=Cyrillic, scripttag=cyrl, langtag=MKD, @@ -9,6 +10,9 @@ fontsetup } +% BCP-47 compliant aliases +\setlanguagealias*{macedonian}{mk} + \def\macedonian@Alph#1{% \ifcase#1\or А\or Б\or В\or Г\or Д\or Ѓ\or Е\or diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-malay.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-malay.ldf index 819dbf31469..be81a5829fd 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-malay.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-malay.ldf @@ -3,11 +3,17 @@ \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} @@ -30,7 +36,7 @@ \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 @@ -48,7 +54,7 @@ }% }% \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 @@ -69,6 +75,9 @@ \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}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-malayalam.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-malayalam.ldf index bb5dcffbdec..c8ed7780207 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-malayalam.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-malayalam.ldf @@ -8,6 +8,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" @@ -16,6 +17,9 @@ and may look very wrong.} fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{malayalam}{ml} + \def\captionsmalayalam{% \def\abstractname{സാരാംശം}% \def\appendixname{ശിഷ്ടം}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf index 645e7275a58..b644a43d5de 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf @@ -1,4 +1,5 @@ % 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] @@ -11,6 +12,7 @@ and may look very wrong.} \RequirePackage{devanagaridigits} \PolyglossiaSetup{marathi}{ + bcp47=mr, script=Devanagari, scripttag=deva, langtag=MAR, @@ -21,15 +23,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}} @@ -38,50 +50,105 @@ 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% } \endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-mk.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-mk.ldf new file mode 100644 index 00000000000..c6caa3ac116 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-mk.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-mk.ldf}[polyglossia: module for mk (macedonian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{macedonian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ml.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ml.ldf new file mode 100644 index 00000000000..ed151363ec3 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ml.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-ml.ldf}[polyglossia: module for ml (malayalam)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{malayalam} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-mn.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-mn.ldf new file mode 100644 index 00000000000..9350dd8660d --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-mn.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-mn.ldf}[polyglossia: module for mn (mongolian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{mongolian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-mongolian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-mongolian.ldf index 0d6f896fb35..dd113a2fabc 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-mongolian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-mongolian.ldf @@ -3,6 +3,7 @@ \RequirePackage{xpg-cyrillicnumbers} \PolyglossiaSetup{mongolian}{ + bcp47=mn, script=Cyrillic, scripttag=cyrl, langtag=MNG, @@ -14,6 +15,9 @@ 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 @@ -21,15 +25,32 @@ % 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} @@ -124,7 +145,11 @@ \def\mongoliannumber#1{% \ifcyrillic@numerals - \cyr@alph{#1}% + \ifcyrillic@asbuk@numerals + \mongolian@asbuk@alph{#1}% + \else + \cyr@alph{#1}% + \fi \else \number#1% \fi% @@ -132,7 +157,11 @@ \def\Mongoliannumber#1{% \ifcyrillic@numerals - \cyr@Alph{#1}% + \ifcyrillic@asbuk@numerals + \mongolian@asbuk@Alph{#1}% + \else + \cyr@Alph{#1}% + \fi \else \number#1% \fi% @@ -141,24 +170,29 @@ \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} - -%\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@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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-mr.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-mr.ldf new file mode 100644 index 00000000000..f127d254d19 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-mr.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-mr.ldf}[polyglossia: module for mr (marathi)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{marathi} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-nb.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-nb.ldf new file mode 100644 index 00000000000..645e092d734 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-nb.ldf @@ -0,0 +1,7 @@ +\ProvidesFile{gloss-nb.ldf}[polyglossia: module for nb (norwegian)] + +% We provide this as a bcp47-compliant alias + +\xpg@load@master@language{norwegian} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-nko.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-nko.ldf index f69b4e138d3..d432a7b5bfd 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-nko.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-nko.ldf @@ -1,5 +1,6 @@ \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, @@ -8,6 +9,7 @@ direction=RL, localnumeral=nkonumerals } + \RequirePackage{nkonumbers}% \newcommand{\nkonumerals}[2]{\nkonumber{#2}} diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-norwegian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-norwegian.ldf index f06119053d0..a8d7a857847 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-norwegian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-norwegian.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-norwegian.ldf}[polyglossia: module for norwegian] \PolyglossiaSetup{norwegian}{ + bcp47=nn, hyphennames={nynorsk}, langtag=NYN, hyphenmins={2,2}, @@ -7,6 +8,9 @@ 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} @@ -16,20 +20,24 @@ \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{% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-occitan.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-occitan.ldf index 9b505b7010b..b494272b0d8 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-occitan.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-occitan.ldf @@ -18,6 +18,7 @@ \ProvidesFile{gloss-occitan.ldf}[2016/02/04 v0.3 polyglossia: module for Occitan] \PolyglossiaSetup{occitan}{ + bcp47=oc, hyphennames={occitan}, langtag=OCI, hyphenmins={2,2}, @@ -25,6 +26,10 @@ indentfirst=true, fontsetup=true, } + +% BCP-47 compliant aliases +\setlanguagealias*{occitan}{oc} + \define@boolkey{occitan}[occitan@]{babelshorthands}[true]{} \ifsystem@babelshorthands diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-persian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-persian.ldf index 6dc2c72a0b6..6d6f60c2e6f 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-persian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-persian.ldf @@ -10,6 +10,7 @@ and may look very wrong.} \RequirePackage{farsical} \RequirePackage{hijrical} \PolyglossiaSetup{persian}{ + bcp47=fa, babelname=farsi, script=Arabic, direction=RL, @@ -20,6 +21,9 @@ and may look very wrong.} localnumeral=farsinumerals } +% BCP-47 compliant aliases +\setlanguagealias*{persian}{fa} + % Babel and backwards compat. alias \setlanguagealias{persian}{farsi} @@ -46,7 +50,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} @@ -87,28 +92,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 } diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-piedmontese.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-piedmontese.ldf index 4474c8a99e2..536ff648efb 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-piedmontese.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-piedmontese.ldf @@ -2,6 +2,7 @@ \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, @@ -9,6 +10,8 @@ fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{piedmontese}{pms} \define@boolkey{piedmontese}[piedmontese@]{babelshorthands}[true]{} diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-polish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-polish.ldf index ef773026692..0649d087a92 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-polish.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-polish.ldf @@ -1,5 +1,6 @@ \ProvidesFile{gloss-polish.ldf}[polyglossia: module for polish] \PolyglossiaSetup{polish}{ + bcp47=pl, hyphennames={polish}, hyphenmins={2,2}, langtag=PLK, @@ -7,6 +8,9 @@ fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{polish}{pl} + \def\captionspolish{% \def\prefacename{Przedmowa}% \def\refname{Literatura}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-portuguese.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-portuguese.ldf index 2463006cc67..1196bc4075f 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-portuguese.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-portuguese.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-portuguese.ldf}[polyglossia: module for portuguese] \PolyglossiaSetup{portuguese}{ + bcp47=pt-PT, babelname=portuges, hyphennames={portuges,portuguese}, hyphenmins={2,3}, @@ -8,6 +9,11 @@ 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} @@ -17,11 +23,11 @@ \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}% @@ -31,8 +37,12 @@ }{\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{% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-romanian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-romanian.ldf index 32077a02e11..8ec2dc7f1f2 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-romanian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-romanian.ldf @@ -1,12 +1,16 @@ \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}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-romansh.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-romansh.ldf index 8557016adef..c0505706b40 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-romansh.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-romansh.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-romansh.ldf}[polyglossia: module for romansh] \makeatletter \PolyglossiaSetup{romansh}{% + bcp47=rm, hyphennames={romansh}, hyphenmins={2,2}, langtag=RMS, @@ -8,6 +9,8 @@ fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{romansh}{rm} \def\captionsromansh{% \def\prefacename{Prefaziun}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf index f638bdbf7d8..0088a6438df 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf @@ -3,6 +3,7 @@ \RequirePackage{xpg-cyrillicnumbers} \PolyglossiaSetup{russian}{ + bcp47=ru, script=Cyrillic, scripttag=cyrl, langtag=RUS, @@ -15,11 +16,16 @@ 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{% @@ -31,13 +37,29 @@ }% \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 @@ -45,9 +67,12 @@ \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} @@ -231,7 +256,11 @@ \def\russiannumber#1{% \ifcyrillic@numerals - \cyr@alph{#1}% + \ifcyrillic@asbuk@numerals + \russian@asbuk@alph{#1}% + \else + \cyr@alph{#1}% + \fi \else \number#1% \fi% @@ -239,7 +268,11 @@ \def\Russiannumber#1{% \ifcyrillic@numerals - \cyr@Alph{#1}% + \ifcyrillic@asbuk@numerals + \russian@asbuk@Alph{#1}% + \else + \cyr@Alph{#1}% + \fi \else \number#1% \fi% @@ -248,24 +281,30 @@ \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 @@ -273,8 +312,8 @@ \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 } diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-sami.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-sami.ldf index 991755d309d..2e30cd953ed 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-sami.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-sami.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-sami.ldf}[polyglossia: module for sami] \PolyglossiaSetup{sami}{ + bcp47=se, babelname=samin, hyphennames={samin}, hyphenmins={2,2}, @@ -9,6 +10,9 @@ fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{sami}{se} + % Babel and backwards compat. alias \setlanguagealias{sami}{samin} %\setlanguagealias[variant=northern]{sami}{samin} @@ -32,7 +36,7 @@ %\def\sami@language{% -% \polyglossia@setup@language@patterns{\sami@variant} +% \polyglossia@setup@language@patterns{\sami@variant}% %}% \def\captionssami@northern{% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf index 7d38e3b0b7d..daa34b398d2 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf @@ -9,6 +9,7 @@ and may look very wrong.} \RequirePackage{devanagaridigits} \PolyglossiaSetup{sanskrit}{ + bcp47=sa-Deva, langtag=SAN, hyphennames={sanskrit,prakrit}, hyphenmins={1,3}, @@ -17,6 +18,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}% @@ -27,29 +38,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 @@ -65,6 +74,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{% @@ -78,7 +91,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}} @@ -88,17 +102,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 } @@ -112,6 +129,7 @@ and may look very wrong.} \XeTeXcharclass `\⁇ \z@ \XeTeXcharclass `\⁈ \z@ \XeTeXcharclass `\⁉ \z@ + \XeTeXcharclass `\‽ \z@ \XeTeXcharclass `\: \z@ \XeTeXcharclass `\; \z@ \XeTeXcharclass `\। \z@ diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-serbian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-serbian.ldf index b06adb1f46d..11c774e5fe1 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-serbian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-serbian.ldf @@ -7,6 +7,7 @@ \RequirePackage{xpg-cyrillicnumbers} \PolyglossiaSetup{serbian}{ + bcp47=sr-Latn, langtag=SRB, hyphennames={serbian}, hyphenmins={2,2}, @@ -17,6 +18,11 @@ %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} @@ -25,12 +31,12 @@ \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??? @@ -40,17 +46,34 @@ \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 } @@ -135,19 +158,27 @@ \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 @@ -177,24 +208,29 @@ \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} - -%\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\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% +} \endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-slovak.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-slovak.ldf index 417e43ba52b..51ca090ff0d 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-slovak.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-slovak.ldf @@ -1,12 +1,16 @@ \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 @@ -17,7 +21,8 @@ \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} @@ -32,8 +37,12 @@ }{} \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{% @@ -220,13 +229,13 @@ \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% } \endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-slovenian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-slovenian.ldf index 16874a82c37..69be79667b4 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-slovenian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-slovenian.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-slovenian.ldf}[polyglossia: module for slovenian] \PolyglossiaSetup{slovenian}{ + bcp47=sl, hyphennames={slovenian,slovene}, babelname=slovene, hyphenmins={2,2}, @@ -8,18 +9,16 @@ 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{% @@ -45,14 +44,14 @@ \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 @@ -60,15 +59,20 @@ } \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} + \endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-sorbian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-sorbian.ldf index 0310cf77e32..be24daa2bbf 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-sorbian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-sorbian.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-sorbian.ldf}[polyglossia: module for sorbian] \PolyglossiaSetup{sorbian}{ + bcp47=hsb, language=Upper Sorbian, babelname=uppersorbian, hyphennames={usorbian,uppersorbian}, @@ -9,6 +10,9 @@ 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} @@ -22,7 +26,7 @@ \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 @@ -42,7 +46,7 @@ \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 @@ -66,7 +70,8 @@ \define@boolkey{sorbian}[sorbian@]{olddate}[true]{} -\setkeys{sorbian}{variant} +% Register default options +\xpg@initialize@gloss@options{sorbian}{variant=upper,olddate=false} \def\sorbian@language{% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-spanish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-spanish.ldf index 951ad3d7a31..d11286be63a 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-spanish.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-spanish.ldf @@ -1,8 +1,10 @@ \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, @@ -10,6 +12,11 @@ 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} @@ -19,11 +26,11 @@ \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'}} @@ -58,6 +65,10 @@ \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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-swedish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-swedish.ldf index f39e65fba81..9ae170904d3 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-swedish.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-swedish.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-swedish.ldf}[polyglossia: module for swedish] \PolyglossiaSetup{swedish}{ + bcp47=sv, hyphennames={swedish}, hyphenmins={2,2}, langtag=SVE, @@ -8,6 +9,9 @@ fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{swedish}{sv} + \def\captionsswedish{% \def\refname{Referenser}% \def\abstractname{Sammanfattning}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-syriac.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-syriac.ldf index a977c75f7c5..3347e8f55a0 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-syriac.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-syriac.ldf @@ -9,6 +9,7 @@ and may look very wrong.} \RequirePackage{arabicnumbers} \PolyglossiaSetup{syriac}{ + bcp47=syr, script=Syriac, scripttag=syrc, langtag=SYR, @@ -19,6 +20,9 @@ and may look very wrong.} %TODO localalph } +% BCP-47 compliant aliases +\setlanguagealias*{syriac}{syr} + \def\syriacnumber#1{\@syriacnumber{#1}}% \newif\if@eastern@numerals @@ -36,7 +40,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}} @@ -120,33 +125,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% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-tamil.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-tamil.ldf index 779d27f773a..5ddb42b0b72 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-tamil.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-tamil.ldf @@ -8,6 +8,7 @@ and may look very wrong.} % Translations provided by Kevin & Siji, 01-11-2009 \PolyglossiaSetup{tamil}{ + bcp47=ta, script=Tamil, scripttag=taml, langtag=TAM, @@ -16,6 +17,9 @@ and may look very wrong.} fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{tamil}{ta} + \def\captionstamil{% \def\abstractname{சாராம்சம்}% \def\appendixname{பிற்சேர்க்கை}%பின்னிணைப்பு diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-telugu.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-telugu.ldf index ec7975da48f..4f382fb3b17 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-telugu.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-telugu.ldf @@ -8,6 +8,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, @@ -16,6 +17,9 @@ and may look very wrong.} fontsetup=true, } +% BCP-47 compliant aliases +\setlanguagealias*{telugu}{te} + \def\captionstelugu{% \def\refname{ఆధారాలు}% \def\abstractname{సారాంశం}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-thai.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-thai.ldf index 73cbfc47e5b..b5657a20370 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-thai.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-thai.ldf @@ -15,6 +15,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, @@ -25,6 +26,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]{% @@ -33,7 +37,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{หนังสืออ้างอิง}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-tibetan.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-tibetan.ldf index 19d2bf486a1..a33c829ab3f 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-tibetan.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-tibetan.ldf @@ -6,6 +6,7 @@ %% \PolyglossiaSetup{tibetan}{ + bcp47=bo, script=Tibetan, scripttag=tibt, langtag=TIB, @@ -15,6 +16,9 @@ %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]{% @@ -48,7 +52,8 @@ \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" diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf index e937e7bf009..cb021c14fa0 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf @@ -1,6 +1,7 @@ \ProvidesFile{gloss-turkish.ldf}[polyglossia: module for turkish] \RequirePackage{hijrical} \PolyglossiaSetup{turkish}{ + bcp47=tr, hyphennames={turkish}, hyphenmins={2,2}, langtag=TRK, @@ -28,6 +29,9 @@ \fi } +% BCP-47 compliant aliases +\setlanguagealias*{turkish}{tr} + \def\noturkish@punctuation{% \ifxetex \XeTeXcharclass `\! \z@ diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-turkmen.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-turkmen.ldf index 19b257272aa..633c84e4cd7 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-turkmen.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-turkmen.ldf @@ -1,6 +1,7 @@ \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, @@ -8,6 +9,9 @@ fontsetup=true } +% BCP-47 compliant aliases +\setlanguagealias*{turkmen}{tk} + \def\captionsturkmen{% \def\prefacename{Sözbaşy}% \def\refname{Çeşmeler}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf index a0d1d3c3fc0..d63569b3021 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf @@ -2,32 +2,57 @@ % 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}{% @@ -37,45 +62,47 @@ }{} \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{% @@ -102,7 +129,8 @@ \def\headtoname{До}% \def\proofname{Доведення}% \def\glossaryname{Словник термінів}% - } +} + \def\dateukrainian{% \def\today{\number\day~\ifcase\month\or січня\or @@ -117,39 +145,82 @@ жовтня\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% @@ -162,19 +233,19 @@ } \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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-urdu.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-urdu.ldf index aa54226134a..9bb37148fc1 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-urdu.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-urdu.ldf @@ -11,6 +11,7 @@ and may look very wrong.} \RequirePackage{hijrical} \PolyglossiaSetup{urdu}{ + bcp47=ur, script=Arabic, direction=RL, scripttag=arab, @@ -21,6 +22,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]{% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-vietnamese.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-vietnamese.ldf index a0b6176fed2..d69fbc9f6fb 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-vietnamese.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-vietnamese.ldf @@ -2,6 +2,7 @@ %% Strings contributed by Daniel Owens < dhowens . pmbx . net > \PolyglossiaSetup{vietnamese}{ + bcp47=vi, hyphennames={nohyphenation}, hyphenmins={2,2}, langtag=VIT, @@ -9,6 +10,9 @@ 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}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-welsh.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-welsh.ldf index 686ea18e7ac..bb2c9e87cca 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-welsh.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-welsh.ldf @@ -1,20 +1,31 @@ \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}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/hebrewcal.sty b/Master/texmf-dist/tex/latex/polyglossia/hebrewcal.sty index c56480b3727..60f41491147 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/hebrewcal.sty +++ b/Master/texmf-dist/tex/latex/polyglossia/hebrewcal.sty @@ -1,5 +1,5 @@ \ProvidesPackage{hebrewcal} - [2015/04/17 v2.6 % + [2019/12/03 v2.7 % Hebrew calendar for polyglossia (adapted from hebcal.sty in Babel)] \RequirePackage{xkeyval} \ifluatex\RequirePackage{luabidi}\else\RequirePackage{bidi}\fi @@ -20,8 +20,8 @@ \@ifundefined{@Remainder}{\input{cal-util.def}}{} -\define@boolkey{hebrew}[@hebrew@]{fullyear}[false]{} -\setkeys{hebrew}{fullyear} +\define@boolkey{hebrew}[@hebrew@]{fullyear}[true]{} +\setkeys{hebrew}{fullyear=false} \newcount\hebrewday \newcount\hebrewmonth \newcount\hebrewyear \def\hebrewdate#1#2#3{% diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-french.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-french.lua index 42396073eee..f0235a0d69e 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-french.lua +++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-french.lua @@ -35,6 +35,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) diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-korean.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-korean.lua index c09ae6d5b74..056c8e41d8f 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-korean.lua +++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-korean.lua @@ -420,14 +420,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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-latin.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-latin.lua index 05c65ffe8bb..4d9b17fea08 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-latin.lua +++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-latin.lua @@ -6,21 +6,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() diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-punct.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-punct.lua index 6af13714f00..98367dd016c 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-punct.lua +++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-punct.lua @@ -61,12 +61,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) @@ -84,9 +126,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 @@ -96,9 +135,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 @@ -108,6 +144,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 @@ -193,13 +239,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 @@ -226,7 +272,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 diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-sanskrit.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-sanskrit.lua index b2546dcad2a..3d5a44774cf 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-sanskrit.lua +++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-sanskrit.lua @@ -7,19 +7,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() diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty b/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty index 9cdb503c1ab..118017d1f4f 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty +++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty @@ -1,6 +1,6 @@ \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{polyglossia}[2019/11/15 v1.46 - Alternative to Babel for XeLaTeX and LuaLaTeX] +\ProvidesPackage{polyglossia}[2020/01/29 v1.47 + Modern multilingual typesetting with XeLaTeX and LuaLaTeX] \RequirePackage{etoolbox} \RequirePackage{makecmds} \RequirePackage{xkeyval}[2008/08/13] @@ -46,6 +46,7 @@ \let\xpg@loaded\@empty% list of loaded languages (polyglossia name) \let\xpg@vloaded\@empty% list of loaded variants \let\xpg@bloaded\@empty% list of loaded languages (babel name) +\let\xpg@bcp@loaded\@empty% list of loaded languages (bcp-47 id) % counter in latin \def\latinalph#1{\expandafter\latin@alph\csname c@#1\endcsname} @@ -68,14 +69,20 @@ \xpg@initial@setup % apply \familydefault changes \xpg@set@familydefault +} + +\AtBeginDocument{ + \polyglossia@AtBeginDocument: +} + +% The following needs to go after any \AtBeginDocument (also of packages +% loaded after \set[main|other]language +\AfterEndPreamble{ % now we have the C locale definition: select the language \polyglossia@AtBeginDocument@selectlanguage: % If hyphenation disabling has been requested in preamble, do it now \polyglossia@AtBeginDocument@hyphenation: } -\AtBeginDocument{ - \polyglossia@AtBeginDocument: -} %% custom message macros \providecommand*{\xpg@error}[1]{% @@ -346,7 +353,7 @@ .code:n = { \prop_gput:Nnn{\polyglossia@langsetup}{#1/script}{##1} \prop_gput:Nnx{\polyglossia@langsetup}{#1/lcscript} - {\tl_if_empty:nF{##1}{\str_lower_case:n##1}} + {\tl_if_empty:nF{##1}{\str_lowercase:n##1}} }, #1 / script .value_required:n = true, @@ -373,6 +380,13 @@ .value_required:n = true, #1 / langtag .initial:n = {}, + % the BCP-47 tag + #1 / bcp47 + .code:n = {\prop_gput:Nnn{\polyglossia@langsetup}{#1/bcp47}{##1}}, + #1 / bcp47 + .value_required:n = true, + #1 / bcp47 + .initial:n = {}, % hyphennames #1 / hyphennames .code:n = { @@ -410,6 +424,17 @@ .value_required:n = true, #1 / hyphenmins .initial:n = {2,3}, + % minimal length for hyphenation (LuaTeX only) + #1 / totalhyphenmin + .code:n = { + % check syntax + \int_compare:nNnF { \clist_count:n {##1} } = {1} + {\xpg@error{totalhyphenhypenmin~should~be~a~single~entry,~got~"##1"}} + % set prop + \prop_gput:Nnn \polyglossia@langsetup {#1/totalhyphenmin} {##1} + }, + #1 / totalhyphenmin + .value_required:n = false, % frenchspacing #1 / frenchspacing .code:n = { @@ -828,7 +853,7 @@ {\addfontfeature{Script=#2}} {\xpg@error{ The~ current~ latin ~ font~ \l_fontspec_family_tl\space does~ not~ contain~ the~"#2"~ script!\MessageBreak - Please~ define~\csname\tl_if_empty:nF{#2}{\str_lower_case:n#2}font\endcsname~ + Please~ define~\csname\tl_if_empty:nF{#2}{\str_lowercase:n#2}font\endcsname~ with~ \string\newfontfamily\space command } } @@ -1013,6 +1038,10 @@ % load a master language from an alias file \newcommand*\xpg@load@master@language[1] { \xpg@input{gloss-#1.ldf} + \ifcsundef{#1@loaded}% + { + \exp_args:Nx\polyglossia@define@language@cmd:n{#1}% + }{} \csgdef{#1@loaded}{} \global\edef\xpg@loaded{#1\ifx\xpg@loaded\@empty\else,\xpg@loaded\fi}% } @@ -1040,40 +1069,36 @@ % \setlanguagealias[<options>]{<language>}{<alias>} \DeclareDocumentCommand \setlanguagealias {s O{} m m} { - \ifcsundef{#4@alias@lang}{% - \exp_args:Ne - \newenvironment {#4} - { - \begin{otherlanguage}[#2]{#3} - }% - { - \end{otherlanguage} - }% - % The starred version does not define \text<alias> - \IfBooleanF {#1} - { - \exp_args:Nc \newcommand {text#4} [2][] - {% - \xpg@textlanguage[#2,##1]{#3}{##2}% - }% - }% - }{% - \exp_args:Ne - \renewenvironment {#4} - { - \begin{otherlanguage}[#2]{#3} - }% + % The starred version does not define commands and environments + \IfBooleanF {#1} { - \end{otherlanguage} - }% - % The starred version does not (re)define \text<alias> - \IfBooleanF {#1} - { - \exp_args:Nc \renewcommand {text#4} [2][] - {% - \xpg@textlanguage[#2,##1]{#3}{##2}% - }% - }% + \ifcsundef{#4@alias@lang}{% + \exp_args:Ne + \newenvironment {#4} + { + \begin{otherlanguage}[#2]{#3} + }% + { + \end{otherlanguage} + }% + \exp_args:Nc \newcommand {text#4} [2][] + {% + \xpg@textlanguage[#2,##1]{#3}{##2}% + }% + }{% + \exp_args:Ne + \renewenvironment {#4} + { + \begin{otherlanguage}[#2]{#3} + }% + { + \end{otherlanguage} + }% + \exp_args:Nc \renewcommand {text#4} [2][] + {% + \xpg@textlanguage[#2,##1]{#3}{##2}% + }% + }% }% \csgdef{#4@alias@lang}{#3}% \tl_if_blank:nF {#2} {\csgdef{#4@alias@opts}{#2}}% @@ -1087,6 +1112,8 @@ \global\edef\xpg@loaded{#2\ifx\xpg@loaded\@empty\else,\xpg@loaded\fi}% \global\edef\xpg@bloaded{\prop_item:Nn{\polyglossia@langsetup}{#2/babelname}% \ifx\xpg@bloaded\@empty\else,\xpg@bloaded\fi}% + \global\edef\xpg@bcp@loaded{\prop_item:Nn{\polyglossia@langsetup}{#2/bcp47}% + \ifx\xpg@bcp@loaded\@empty\else,\xpg@bcp@loaded\fi}% }% \polyglossia_load_lang_definition:nn{#1}{#2} % define environment and command (except for internal latex language) @@ -1119,16 +1146,15 @@ \global\edef\xpg@loaded{#2\ifx\xpg@loaded\@empty\else,\xpg@loaded\fi}% \global\edef\xpg@bloaded{\prop_item:Nn{\polyglossia@langsetup}{#2/babelname}% \ifx\xpg@bloaded\@empty\else,\xpg@bloaded\fi}% + \global\edef\xpg@bcp@loaded{\prop_item:Nn{\polyglossia@langsetup}{#2/bcp47}% + \ifx\xpg@bcp@loaded\@empty\else,\xpg@bcp@loaded\fi}% }% \csgdef{#2@loaded}{}% }{} \gdef\xpg@main@language{#2}% \tl_if_blank:nTF {#1}{\gdef\mainlanguagevariant{}}{% - % If the optional argument sets a value for the key “variant”, - % store it in \xpg@main@langvariant - \clist_map_inline:nn { #1 } {% - \xpg@parsevariantkeyvalue##1=@xpg@main@langvariant\relax - }% + % Register the language options + \polyglossia@set@lang@options:nn {#2} {#1}% }% \csgdef{#2@gvar}{\mainlanguagevariant}% %% The following settings are for the default language and script @@ -1152,7 +1178,15 @@ % Store babelname of current language (for external packages such as biblatex) \prop_get:NxNT \polyglossia@langsetup {#2/babelname} \l_tmpa_tl { \edef\babelname{\l_tmpa_tl}% - \csgdef{#2@gbabelname}{\babelname}% + \cs_gset_eq:cc{#2@gbabelname}{babelname}% + } + % Store BCP-47 id of main language + \prop_get:NxNT \polyglossia@langsetup {#2/bcp47} \l_tmpa_tl + { \csedef{mainbcp47id}{\l_tmpa_tl} } + % Store BCP-47 id of current language + \prop_get:NxNT \polyglossia@langsetup {#2/bcp47} \l_tmpa_tl + { \csedef{bcp47id}{\l_tmpa_tl}% + \cs_gset_eq:cc{#2@gbcp47id}{bcp47id}% } \ifluatex % \directlua{polyglossia.set_default_language('\luatexluaescapestring{\string#2}')}% @@ -1161,6 +1195,36 @@ \let\setmainlanguage=\setdefaultlanguage +% Returns the language ID of the current language +% Currently supported: bcp-47 +\DeclareDocumentCommand \languageid {m} +{ + \str_case:nnTF {#1} + { + {bcp-47} { \csuse{bcp47id} } + {bcp47} { \csuse{bcp47id} } + } + {} + { + \xpg@error{Invalid~ \string\languageid\space argument:~ #1} + } +} + +% Returns the language ID of the main language +% Currently supported: bcp-47 +\DeclareDocumentCommand \mainlanguageid {m} +{ + \str_case:nnTF {#1} + { + {bcp-47} { \csuse{mainbcp47id} } + {bcp47} { \csuse{mainbcp47id} } + } + {} + { + \xpg@error{Invalid~ \string\mainlanguageid\space argument:~ #1} + } +} + \def\mainbabelname{}% \def\mainlanguagevariant{}% % Store main language variant for external packages @@ -1180,16 +1244,26 @@ \tl_if_blank:nTF {#1}{% \ifcsundef{#2@gvar}{\def\languagevariant{}}{\def\languagevariant{\csuse{#2@gvar}}} }{% - % If the argument sets a value for the key “variant”, - % store it in \xpg@set@langvariant - \clist_map_inline:nn { #1 } {% - \xpg@parsevariantkeyvalue##1=@xpg@set@langvariant\relax - }% + % Register the language options + \polyglossia@set@lang@options:nn {#2} {#1}% }% } -\newcommand{\resetdefaultlanguage}[2][]{% +\newcommand*{\resetdefaultlanguage}[2][]{% + \ifcsdef{#2@alias@lang}{% + \ifcsdef{#2@alias@opts}{% + \exp_args:Nxx \polyglossia@reset@default@language:nn {\csuse{#2@alias@opts},#1} {\csuse{#2@alias@lang}}% + }{% + polyglossia@reset@default@language:nn {#1} {\csuse{#2@alias@lang}}% + }% + }{% + polyglossia@reset@default@language:nn {#1} {#2}% + }% +} + +\cs_new:Nn \polyglossia@reset@default@language:nn +{ \polyglossia@error@iflangnotloaded:n{#2} % disable globalnumbers of previously defined default language \csuse{no\xpg@main@language @globalnumbers} @@ -1212,6 +1286,16 @@ }{% \edef\babelname{\prop_item:Nn{\polyglossia@langsetup}{#2/babelname}}% }% + % Store BCP-47 id of current language + \tl_if_blank:nTF {#1}{% + \ifcsundef{#2@gbcp47id}{% + \csedef{bcp47id}{\prop_item:Nn{\polyglossia@langsetup}{#2/bcp47}}% + }{% + \csedef{bcp47id}{\csuse{#2@gbcp47id}}% + }% + }{% + \csedef{bcp47id}{\prop_item:Nn{\polyglossia@langsetup}{#2/bcp47}}% + }% } % This saves the normalfont for the latin script since we may change normalfont in other scripts @@ -1235,6 +1319,14 @@ \selectfont% } +\def\xpg@patch@fontfamilies{% + % This robustifies the redefinitions of \<xx>family (suggestion by Enrico Gregorio) + % e.g. to prevent expansion of the \familytype redefinition in auxiliary files + \csgappto{rmfamily~}{\def\familytype{rm}} + \csgappto{sffamily~}{\def\familytype{sf}} + \csgappto{ttfamily~}{\def\familytype{tt}} +} + % These switches activate the default fonts % Note that a simple \let\rmfamilylatin=\rmfamily % does not work reliably (see #24) @@ -1254,11 +1346,7 @@ \ifcsequal{tempa}{tempb}% {\def\familytype{tt}} {\def\familytype{rm}}} - % This robustifies the redefinitions of \<xx>family (suggestion by Enrico Gregorio) - % e.g. to prevent expansion of the \familytype redefinition in auxiliary files - \csgappto{rmfamily~}{\def\familytype{rm}} - \csgappto{sffamily~}{\def\familytype{sf}} - \csgappto{ttfamily~}{\def\familytype{tt}} + \xpg@patch@fontfamilies% % This (re-)saves the normalfont for the latin script since we may % change normalfont in other scripts \let\normalfontlatin=\normalfont% @@ -1269,10 +1357,12 @@ } \def\resetfontlatin{% - \cs_gset_eq:cc{rmfamily}{xpg@defaultfont@rm}% - \cs_gset_eq:cc{sffamily}{xpg@defaultfont@sf}% - \cs_gset_eq:cc{ttfamily}{xpg@defaultfont@tt}% - \global\let\normalfont=\normalfontlatin} + \DeclareRobustCommand\rmfamily{\xpg@defaultfont@rm}% + \DeclareRobustCommand\sffamily{\xpg@defaultfont@sf}% + \DeclareRobustCommand\ttfamily{\xpg@defaultfont@tt}% + \xpg@patch@fontfamilies% + \global\let\normalfont=\normalfontlatin% +} \def\selectfontfamilylatin{% \def\tmp@tt{tt}\def\tmp@sf{sf}% @@ -1301,12 +1391,28 @@ } \let\@@fterindentfalse\@afterindentfalse -\def\french@indent{\let\@afterindentfalse\@afterindenttrue - \@afterindenttrue} -\def\nofrench@indent{\let\@afterindentfalse\@@fterindentfalse - \@afterindentfalse} -\newcommand{\selectbackgroundlanguage}[1]{% - \str_if_eq:eeTF{\prop_item:Nn{\polyglossia@langsetup}{#1/lcscript}}{latin}{}{\xpg@set@normalfont{#1}}% +\def\french@indent{% + \let\@afterindentfalse\@afterindenttrue + \@afterindenttrue% +} +\def\nofrench@indent{% + \let\@afterindentfalse\@@fterindentfalse + \@afterindentfalse% +} + +\newcommand*{\selectbackgroundlanguage}[1]{% + \ifcsdef{#1@alias@lang}{% + \polyglossia@select@background@language:n {\csuse{#1@alias@lang}}% + }{% + \polyglossia@select@background@language:n {#1}% + }% +} + +\cs_new:Nn \polyglossia@select@background@language:n +{ + \str_if_eq:eeTF{\prop_item:Nn{\polyglossia@langsetup}{#1/lcscript}}{latin} + {} + {\xpg@set@normalfont{#1}}% \csuse{#1@globalnumbers}% } @@ -1342,16 +1448,13 @@ % If a variant is set, store it. \gdef\otherlanguagevariant{} \tl_if_blank:nTF {#1}{}{% - % If the optional argument sets a value for the key “variant”, - % store it in \xpg@other@langvariant - \clist_map_inline:nn { #1 } {% - \xpg@parsevariantkeyvalue##1=@xpg@other@langvariant\relax - }% + % Register the language options + \polyglossia@set@lang@options:nn {#2} {#1}% }% \csgdef{#2@gvar}{\otherlanguagevariant}% \prop_get:NxNT \polyglossia@langsetup {#2/babelname} \l_tmpa_tl { \xdef\otherlanguagebabelname{\l_tmpa_tl} } - \csgdef{#2@gbabelname}{\otherlanguagebabelname}% + \cs_gset_eq:cc{#2@gbabelname}{otherlanguagebabelname}% } % Store main language variant for external packages @@ -1384,7 +1487,7 @@ \newcommand\textlang[3][]{% \ifcsdef{#2@alias@lang}{% \ifcsdef{#2@alias@opts}{% - \xpg@textlanguage[\csuse{#2@alias@opts},#1]{\csuse{#2@alias@lang}}{#3}% + \exp_args:Nxx \xpg@textlanguage[\csuse{#2@alias@opts},#1]{\csuse{#2@alias@lang}}{#3}% }{% \xpg@textlanguage[#1]{\csuse{#2@alias@lang}}{#3}% }% @@ -1393,6 +1496,16 @@ }% }% +% Alias to {<lang>}, but more suitable +% for specific (esp. tag-based) aliases +% where {<alias>} would cause clashes +% (e.g., \fi) +\newenvironment{lang}[2][]{% + \begin{otherlanguage}[#1]{#2}% +}{% + \end{otherlanguage} +}% + \providecommand{\foreignlanguage}{} % wrapper for foreignlanguage and otherlanguage* @@ -1408,6 +1521,16 @@ }{% \edef\babelname{\prop_item:Nn{\polyglossia@langsetup}{#2/babelname}}% }% + % Store BCP-47 id of current language + \tl_if_blank:nTF {#1}{% + \ifcsundef{#2@gbcp47id}{% + \csedef{bcp47id}{\prop_item:Nn{\polyglossia@langsetup}{#2/bcp47}}% + }{% + \csedef{bcp47id}{\csuse{#2@gbcp47id}}% + }% + }{% + \csedef{bcp47id}{\prop_item:Nn{\polyglossia@langsetup}{#2/bcp47}}% + }% } % joint code of \foreignlanguage, otherlanguage* @@ -1428,7 +1551,7 @@ {% \ifcsdef{#2@alias@lang}{% \ifcsdef{#2@alias@opts}{% - \polyglossia@foreignlanguage:nnn {\csuse{#2@alias@opts},#1} {\csuse{#2@alias@lang}} {#3}% + \exp_args:Nxx \polyglossia@foreignlanguage:nnn {\csuse{#2@alias@opts},#1} {\csuse{#2@alias@lang}} {#3}% }{% \polyglossia@foreignlanguage:nnn {#1} {\csuse{#2@alias@lang}} {#3}% }% @@ -1453,7 +1576,7 @@ {% \ifcsdef{#2@alias@lang}{% \ifcsdef{#2@alias@opts}{% - \polyglossia@otherlanguage:nn {\csuse{#2@alias@opts},#1} {\csuse{#2@alias@lang}}% + \exp_args:Nxx \polyglossia@otherlanguage:nn {\csuse{#2@alias@opts},#1} {\csuse{#2@alias@lang}}% }{% \polyglossia@otherlanguage:nn {#1} {\csuse{#2@alias@lang}}% }% @@ -1471,7 +1594,7 @@ % use by \text<lang> and \textlang. Equivalent to \foreignlanguage, % except that dates are localized. -\newcommand*\xpg@textlanguage[3][]{% +\newcommand\xpg@textlanguage[3][]{% \polyglossia@error@iflangnotloaded:n{#2} \bgroup \xpg@otherlanguage[#1]{#2}% @@ -1510,7 +1633,7 @@ {% \ifcsdef{#3@alias@lang}{% \ifcsdef{#3@alias@opts}{% - \polyglossia@select@language:nnn {#1} {\csuse{#3@alias@opts},#2} {\csuse{#3@alias@lang}}% + \exp_args:Nxx \polyglossia@select@language:nnn {#1} {\csuse{#3@alias@opts},#2} {\csuse{#3@alias@lang}}% }{% \polyglossia@select@language:nnn {#1} {#2} {\csuse{#3@alias@lang}}% }% @@ -1528,11 +1651,8 @@ \group_insert_after:N \xpg@pop@language } \tl_if_blank:nTF {#2}{}{% - % If the optional argument sets a value for the key “variant”, copy it to xpg@langvariant - \clist_map_inline:nn { #2 } {% - \xpg@parsevariantkeyvalue##1=@xpg@langvariant\relax - }% - \exp_args:Nne \setkeys{#3}{#2}% + % Register the language options + \polyglossia@set@lang@options:nn {#3} {#2}% }% % The starred variant does not write to the aux \IfBooleanTF#1{% @@ -1554,13 +1674,99 @@ }{} } -% Helper to get and register "variant" keyval -\def\xpg@parsevariantkeyvalue#1=#2@#3\relax{% + +\cs_new:Nn \polyglossia@set@lang@options:nn +{ + % If the optional argument sets a value for the key “variant”, copy it to xpg@langvariant + \clist_map_inline:nn { #2 } {% + \xpg@parsevariantkeyvalue##1=@xpg@langvariant:#1\relax + }% + \exp_args:Nne \setkeys{#1}{#2}% +} + +% Initialize default language options, so that +% \iflanguageoption has the info it needs also +% for default settings +\newcommand*\xpg@initialize@gloss@options[2]{% + \polyglossia@set@lang@options:nn {#1} {#2}% +} + +% Record synonymous keyvals such as variant=us and variant=american +% Syntax: \xpg@set@alias@values{<lang>}{<key>}{<val>}{<alias vals, comma-separated>} +\newcommand*\xpg@set@alias@values[4]{% + \prop_if_exist:cF { xpg@alias@keyvals@#1@#3 } + { \prop_new:c {xpg@alias@keyvals@#1@#3} } + \prop_put:cnn { xpg@alias@keyvals@#1@#3 } + {#2}{#4} + \prop_put:cnn { xpg@alias@keyvals@#1@#4 } + {#2}{#3} +} + +% Patch xkeyval to record default values of keys +\pretocmd{\XKV@define@default}{% + \csgdef{xpg@default@opt@\XKV@header #1}{#2}% +}{}{\xpg@warning{Patching xkeyval failed!}} + +% Helper to get and register option keyvals +\def\xpg@parsevariantkeyvalue#1=#2@#3:#4\relax{% \def\@tmpa{#1} \def\@tmpb{variant} + % variant values are stored in specific macros + % (\xpg@main@langvariant, \xpg@other@langvariant + % and \xpg@set@langvariant) \ifx\@tmpa\@tmpb\setkeys{#3}{#1=#2}\fi + \tl_if_empty:nTF{#2} + { + \ifcsdef{xpg@default@opt@KV@#4@#1}% + {\xpg@store@opt@keyval#1:\csuse{xpg@default@opt@KV@#4@#1}=:#4\relax}% + {}% + } + { \xpg@store@opt@keyval#1:#2:#4\relax } }% +% Store option keys and values +% This strips trailing '=' from values. +\def\xpg@store@opt@keyval#1:#2=:#3\relax{% + \prop_if_exist:cF { xpg@current@options@#3 } + { \prop_new:c {xpg@current@options@#3} } + \prop_put:cnn { xpg@current@options@#3 } + {#1}{#2} +} + + +\prg_set_conditional:Npnn \polyglossia@check@option@value:NNN #1#2#3 { p , T , F , TF } +{ + \prop_get:cnNTF {xpg@current@options@#1} {#2} \l_tmpa_tl + { + \exp_args:Nee \str_if_eq:NNTF{\l_tmpa_tl}{#3} + {\prg_return_true:} + { + \prop_get:cnNTF {xpg@alias@keyvals@#1@#3} {#2} \l_tmpb_tl + { + \exp_args:Nne \clist_set:Nn{\l_tmpa_clist}{\l_tmpb_tl} + \providetoggle{xpgvalfound} + \togglefalse{xpgvalfound} + \clist_map_inline:Nn \l_tmpa_clist { + \exp_args:Nee \str_if_eq:NNT{##1}{\l_tmpa_tl} + { \toggletrue{xpgvalfound} } + } + \iftoggle{xpgvalfound}{\prg_return_true:}{\prg_return_false:} + } + { + \prg_return_false: + } + } + } + { + \prg_return_false: + } +} + +% Test if option value is set +\newcommand*\iflanguageoption[5]{% + \polyglossia@check@option@value:NNNTF{#1}{#2}{#3}{#4}{#5}% +} + % Append any variant to csv list of variants \define@key{xpg@langvariant}{variant}{% @@ -1585,6 +1791,51 @@ \polyglossia@check@if@lang@loaded:NTF{#1@bbl@loaded}{#2}{#3}% } +% Same for languageid +\DeclareDocumentCommand \iflanguageidloaded {mmmm} +{ + \str_case:nnTF {#1} + { + {bcp-47} { \polyglossia@check@if@lang@loaded:NTF{#2@bcp@loaded}{#3}{#4} } + {bcp47} { \polyglossia@check@if@lang@loaded:NTF{#2@bcp@loaded}{#3}{#4} } + } + {} + { + \xpg@error{Invalid~ \string\iflanguageidloaded\space argument:~ #1} + } +} + +% Check if the current font has a given glyph +\prg_set_conditional:Npnn \polyglossia@check@if@char@available:N #1 { p , T , F , TF } +{ + \str_case_e:nnF{\c_sys_engine_str}{ + {luatex}{ + \int_compare:nNnTF { \directlua{polyglossia.check_char(0x#1)} } > { 0 } + {\prg_return_true:} + {\prg_return_false:} + } + {xetex}{ + \int_compare:nNnTF { \the\XeTeXcharglyph"#1 } > { 0 } + {\prg_return_true:} + {\prg_return_false:} + } + } + { + \xpg@warning{You’re running a TeX engine that is not LuaTeX or XeTeX.\MessageBreak + That is almost guaranteed to cause problems.} + } +} + +% Test if a char (by char code) is available in the current font +\newcommand*\xpg@if@char@available[3]{% + \polyglossia@check@if@char@available:NTF{#1}{#2}{#3}% +} + +\newcommand*\charifavailable[2]{% + \xpg@if@char@available{#1}{\char"#1}{#2}% +} + + \newcommand*{\xpg@set@language@nonaux}[2][]{% \@select@language[#1]{#2}% } @@ -1601,6 +1852,24 @@ }{% \edef\babelname{\prop_item:Nn{\polyglossia@langsetup}{#2/babelname}}% }% + % Store BCP-47 id of current language + \tl_if_blank:nTF {#1}{% + \ifcsundef{#2@gbcp47id}{% + \csedef{bcp47id}{\prop_item:Nn{\polyglossia@langsetup}{#2/bcp47}}% + }{% + \csedef{bcp47id}{\csuse{#2@gbcp47id}}% + }% + }{% + \csedef{bcp47id}{\prop_item:Nn{\polyglossia@langsetup}{#2/bcp47}}% + }% + % Store bcp47 in \xpg@bcp@loaded csv list + \def\xpg@tmp@bcpname{\csuse{bcp47id}}% + \ifcsundef{\csname xpg@tmp@bcpname\endcsname @bcp@loaded} + { + \global\edef\xpg@bcp@loaded{\xpg@tmp@bcpname% + \ifx\xpg@bcp@loaded\@empty\else,\xpg@bcp@loaded\fi}% + \csgdef{\csname xpg@tmp@bcpname\endcsname @bcp@loaded}{}% + }{} \@select@language[#1]{#2}% % Write to the aux \if@filesw% @@ -1618,24 +1887,57 @@ \fi } +% The bidi package swaps the output stream within RTL tables +% (to get the column order right). This also swaps group +% delimiters inserted to the aux files via otherlanguage (see #354). +% We therefore patch bidi and insert a bool that tells us +% whether we are in such a table. +\newbool{xpg@inbiditable} +\AtBeginDocument{% + \@ifpackageloaded{bidi}{% + \patchcmd{\@tabular}% + {\if@RTLtab}% + {\if@RTLtab\booltrue{xpg@inbiditable}}% + {}% success + {\xpg@warning{Patching bidi table failed!}}% + }{}% +} + % Open a group in the aux file. This is to keep -% nested language options local (see #320) +% nested language options local (see #320). +% In bidi tables, the opening/closing needs to be swapped (see #354) \newcommand*{\xpg@set@group@aux}{% \if@filesw% - \protected@write\@auxout{}{\bgroup}% - \addtocontents{toc}{\bgroup}% - \addtocontents{lof}{\bgroup}% - \addtocontents{lot}{\bgroup}% + \ifbool{xpg@inbiditable}{% + \protected@write\@auxout{}{\egroup}% + \addtocontents{toc}{\egroup}% + \addtocontents{lof}{\egroup}% + \addtocontents{lot}{\egroup}% + }{% + \protected@write\@auxout{}{\bgroup}% + \addtocontents{toc}{\bgroup}% + \addtocontents{lof}{\bgroup}% + \addtocontents{lot}{\bgroup}% + }% \fi } -% Close the group in the aux file +% Close the group in the aux file. +% In bidi RTL tables, the opening/closing needs +% to be swapped (see #354). \newcommand*{\xpg@unset@group@aux}{% \if@filesw% - \protected@write\@auxout{}{\egroup}% - \addtocontents{toc}{\egroup}% - \addtocontents{lof}{\egroup}% - \addtocontents{lot}{\egroup}% + \ifbool{xpg@inbiditable}{% + \protected@write\@auxout{}{\bgroup}% + \addtocontents{toc}{\bgroup}% + \addtocontents{lof}{\bgroup}% + \addtocontents{lot}{\bgroup}% + }{% + \protected@write\@auxout{}{\egroup}% + \addtocontents{toc}{\egroup}% + \addtocontents{lof}{\egroup}% + \addtocontents{lot}{\egroup}% + }% \fi } @@ -1745,7 +2047,7 @@ \noextrascurrent{\languagename}% \csuse{no\languagename @numbers}% \ifxetex - \str_if_eq:eeTF{\prop_item:Nn{\polyglossia@langsetup}{\languagename/direction}}{RL}% + \str_if_eq:eeTF{\exp_args:Nne\prop_item:Nn{\polyglossia@langsetup}{\languagename/direction}}{RL}% {% \str_if_eq:eeTF{\prop_item:Nn{\polyglossia@langsetup}{#2/direction}}{RL}% {}% RTL -> RTL @@ -1772,12 +2074,24 @@ \provideenvironment{otherlanguage}{}{} +\newbool{xpg@noset@groups} \renewenvironment{otherlanguage}[2][] {% - \xpg@set@group@aux% + % We usually embrace the switch in groups to keep the changes local. + % We cannot do this if an LTR environmet starts in an RTL paragraph, + % as bidi interferes here badly with its directionality smartness. + \ifxetex + \str_if_eq:eeT{\exp_args:Nne\prop_item:Nn{\polyglossia@langsetup}{\languagename/direction}}{RL}% + {% + \str_if_eq:eeTF{\prop_item:Nn{\polyglossia@langsetup}{#1/direction}}{RL}% + {}% RTL -> RTL + {\ifvmode\else\booltrue{xpg@noset@groups}\fi}% RTL -> LTR + }% + \fi% + \ifbool{xpg@noset@groups}{}{\xpg@set@group@aux}% \selectlanguage[#1]{#2}% } -{\xpg@unset@group@aux} +{\ifbool{xpg@noset@groups}{}{\xpg@unset@group@aux}} \newcommand{\setlocalhyphenmins}[3]{% \xpg@ifdefined{#1}{% @@ -1792,7 +2106,17 @@ \def\use@localhyphenmins#1{% \ifcsundef{#1hyphenmins}{}% - {\expandafter\expandafter\expandafter\set@hyphenmins\csname #1hyphenmins\endcsname\relax}} + {\expandafter\expandafter\expandafter\set@hyphenmins\csname #1hyphenmins\endcsname\relax} + \ifluatex + % Set \totalhyphenmin if specified + \prop_get:NxNTF \polyglossia@langsetup {#1/totalhyphenmin} \l_tmpa_tl + { + \xpg@warning{totalhyphenmin: '\l_tmpa_tl'} + \expandafter\hyphenationmin \l_tmpa_tl% + }% + {}% + \fi +} \AtEndPreamble{% \@ifpackageloaded{bidi}{% |