texlive[54549] Master/texmf-dist: polyglossia (25mar20)

commits+karl at tug.org commits+karl at tug.org
Wed Mar 25 22:12:39 CET 2020


Revision: 54549
          http://tug.org/svn/texlive?view=revision&revision=54549
Author:   karl
Date:     2020-03-25 22:12:39 +0100 (Wed, 25 Mar 2020)
Log Message:
-----------
polyglossia (25mar20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/polyglossia/README
    trunk/Master/texmf-dist/doc/latex/polyglossia/example-arabic.pdf
    trunk/Master/texmf-dist/doc/latex/polyglossia/example-korean.pdf
    trunk/Master/texmf-dist/doc/latex/polyglossia/example-thai.pdf
    trunk/Master/texmf-dist/doc/latex/polyglossia/examples.pdf
    trunk/Master/texmf-dist/doc/latex/polyglossia/polyglossia.pdf
    trunk/Master/texmf-dist/doc/latex/polyglossia/polyglossia.tex
    trunk/Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx
    trunk/Master/texmf-dist/tex/latex/polyglossia/babelsh.def
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-armenian.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-belarusian.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-bengali.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-gaelic.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-hungarian.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-kurdish.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-malay.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-mongolian.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-norwegian.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-portuguese.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-sami.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-serbian.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-sorbian.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-spanish.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-welsh.ldf
    trunk/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty

Modified: trunk/Master/texmf-dist/doc/latex/polyglossia/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/polyglossia/README	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/doc/latex/polyglossia/README	2020-03-25 21:12:39 UTC (rev 54549)
@@ -1,7 +1,7 @@
 
    ¦----------------------------------------------¦
    ¦                                              ¦
-   ¦       THE POLYGLOSSIA PACKAGE v1.47          ¦
+   ¦       THE POLYGLOSSIA PACKAGE v1.48          ¦
    ¦                                              ¦
    ¦     Modern multilingual typesetting          ¦
    ¦        with XeLaTeX and LuaLaTeX             ¦
@@ -10,7 +10,7 @@
 
 This package provides an alternative to Babel for users of XeLaTeX and LuaLaTeX
 (with a few languages incompletely supported for the latter). This version
-includes support for 79 different languages, some of which in different
+includes support for over 70 different languages, some of which in different
 regional or national varieties, or using a different writing system.
 
 Polyglossia makes it possible to automate the following tasks:

Modified: trunk/Master/texmf-dist/doc/latex/polyglossia/example-arabic.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/polyglossia/example-korean.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/polyglossia/example-thai.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/polyglossia/examples.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/polyglossia/polyglossia.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/polyglossia/polyglossia.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/polyglossia/polyglossia.tex	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/doc/latex/polyglossia/polyglossia.tex	2020-03-25 21:12:39 UTC (rev 54549)
@@ -529,18 +529,22 @@
 		Russian, Slovak, and Ukrainian. Please refer to the respective language descriptions
 		(sec.~\ref{specific}) for details.
 
-	\item \xpgoption{localmarks} redefines the internal \LaTeX\ macros \cmd\markboth\ and
-		\cmd\markright. In earlier versions of \pkg{polyglossia},\new{1.2.0} this
-		option was set by default, but we now realize that it causes more problems
-		than it helps, so it is now off by default.  For backwards-compatibility, the
+	\item \xpgboolkeyfalse{localmarks} redefines the internal \LaTeX\ macros \cmd\markboth\ and
+		\cmd\markright\ to the effect that the header text is explicitly set in the currently
+		active language (\ie wrapped into \cmd\foreignlanguage\{\meta{lang}\}\{\meta{\ldots}\}).
+		
+		In earlier versions of \pkg{polyglossia},\new{1.2.0} this
+		option was enabled by default, but we now realize that it causes more problems
+		than it helps (since it breaks if a package or class redefines \cmd\markboth\ or
+		\cmd\markright), so it is now disabled by default. For backwards compatibility, the
 		option \xpgoption{nolocalmarks} which used to switch off the previous default, and
-		now does nothing, is still available.
+		now equals the default, is still available.
 
 	\item \xpgoption{quiet} turns off most info messages and some of the warnings issued
 		by \LaTeX, \pkg{fontspec} and \pkg{polyglossia}.
 \end{itemize}
 
-\condbreak{5\baselineskip}
+\pagebreak
 \section{Language-switching commands}\label{languageswitching}
 
 \subsection{Recommended commands}\label{sec:langcmds}

Modified: trunk/Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx	2020-03-25 21:12:39 UTC (rev 54549)
@@ -11,7 +11,7 @@
 
    ¦----------------------------------------------¦
    ¦                                              ¦
-   ¦       THE POLYGLOSSIA PACKAGE v1.47          ¦
+   ¦       THE POLYGLOSSIA PACKAGE v1.48          ¦
    ¦                                              ¦
    ¦     Modern multilingual typesetting          ¦
    ¦        with XeLaTeX and LuaLaTeX             ¦
@@ -20,7 +20,7 @@
 
 This package provides an alternative to Babel for users of XeLaTeX and LuaLaTeX
 (with a few languages incompletely supported for the latter). This version
-includes support for 79 different languages, some of which in different
+includes support for over 70 different languages, some of which in different
 regional or national varieties, or using a different writing system.
 
 Polyglossia makes it possible to automate the following tasks:
@@ -902,18 +902,22 @@
 % 		Russian, Slovak, and Ukrainian. Please refer to the respective language descriptions
 % 		(sec.~\ref{specific}) for details.
 % 
-% 	\item \xpgoption{localmarks} redefines the internal \LaTeX\ macros \cmd\markboth\ and
-% 		\cmd\markright. In earlier versions of \pkg{polyglossia},\new{1.2.0} this
-% 		option was set by default, but we now realize that it causes more problems
-% 		than it helps, so it is now off by default.  For backwards-compatibility, the
+% 	\item \xpgboolkeyfalse{localmarks} redefines the internal \LaTeX\ macros \cmd\markboth\ and
+% 		\cmd\markright\ to the effect that the header text is explicitly set in the currently
+% 		active language (\ie wrapped into \cmd\foreignlanguage\{\meta{lang}\}\{\meta{\ldots}\}).
+% 		
+% 		In earlier versions of \pkg{polyglossia},\new{1.2.0} this
+% 		option was enabled by default, but we now realize that it causes more problems
+% 		than it helps (since it breaks if a package or class redefines \cmd\markboth\ or
+% 		\cmd\markright), so it is now disabled by default. For backwards compatibility, the
 % 		option \xpgoption{nolocalmarks} which used to switch off the previous default, and
-% 		now does nothing, is still available.
+% 		now equals the default, is still available.
 % 
 % 	\item \xpgoption{quiet} turns off most info messages and some of the warnings issued
 % 		by \LaTeX, \pkg{fontspec} and \pkg{polyglossia}.
 % \end{itemize}
 % 
-% \condbreak{5\baselineskip}
+% \pagebreak
 % \section{Language-switching commands}\label{languageswitching}
 % 
 % \subsection{Recommended commands}\label{sec:langcmds}
@@ -3412,8 +3416,8 @@
 
 \newif\if at eastern@armenian
 \@eastern at armenianfalse
-\define at choicekey*+{armenian}{variant}[\val\nr]{western,eastern}[western]{%
-   \ifcase\nr\relax
+\define at choicekey*+{armenian}{variant}[\xpg at val\xpg at nr]{western,eastern}[western]{%
+   \ifcase\xpg at nr\relax
       % western:
       \@eastern at armenianfalse%
    \or
@@ -3420,7 +3424,7 @@
       % eastern:
       \@eastern at armeniantrue%
    \fi
-   \xpg at info{Option: Armenian, variant=\val}%
+   \xpg at info{Option: Armenian, variant=\xpg at val}%
 }{\xpg at warning{Unknown Armenian variant `#1'}}
 
 \newif\if at armenian@numerals
@@ -3892,8 +3896,8 @@
 \setlanguagealias*{belarusian}{be}
 
 \def\belarusian at spelling{modern}
-\define at choicekey*+{belarusian}{spelling}[\val\nr]{modern,classic,tarask}[modern]{%
-   \ifcase\nr\relax
+\define at choicekey*+{belarusian}{spelling}[\xpg at val\xpg at nr]{modern,classic,tarask}[modern]{%
+   \ifcase\xpg at nr\relax
       % modern:
       \def\belarusian at spelling{modern}%
       \SetLanguageKeys{belarusian}{bcp47=be}%
@@ -3910,8 +3914,8 @@
 
 \newif\ifcyrillic at numerals
 \newif\ifcyrillic at asbuk@numerals
-\define at choicekey*+{belarusian}{numerals}[\val\nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
-   \ifcase\nr\relax
+\define at choicekey*+{belarusian}{numerals}[\xpg at val\xpg at nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
+   \ifcase\xpg at nr\relax
       % arabic:
       \cyrillic at numeralsfalse%
       \cyrillic at asbuk@numeralsfalse%
@@ -3928,7 +3932,7 @@
       \cyrillic at numeralstrue%
       \cyrillic at asbuk@numeralstrue%
    \fi
-   \xpg at info{Option: Belarusian, numerals=\val}%
+   \xpg at info{Option: Belarusian, numerals=\xpg at val}%
 }{\xpg at warning{Unknown Belarusian numerals value `#1'}}
 
 \define at boolkey{belarusian}[belarusian@]{babelshorthands}[true]{}
@@ -4222,8 +4226,8 @@
 
 \newif\ifbengali at devanagari@numerals
 \newif\ifbengali at bengali@numerals
-\define at choicekey*+{bengali}{numerals}[\val\nr]{Devanagari,Bengali,Western}[Devanagari]{%
-   \ifcase\nr\relax
+\define at choicekey*+{bengali}{numerals}[\xpg at val\xpg at nr]{Devanagari,Bengali,Western}[Devanagari]{%
+   \ifcase\xpg at nr\relax
       % Devanagari:
       \bengali at bengali@numeralsfalse%
       \bengali at devanagari@numeralstrue%
@@ -4236,7 +4240,7 @@
       \bengali at bengali@numeralsfalse%
       \bengali at devanagari@numeralsfalse%
    \fi
-   \xpg at info{Option: Bengali, numerals=\val}%
+   \xpg at info{Option: Bengali, numerals=\xpg at val}%
 }{\xpg at warning{Unknown Bengali numeral `#1'}}
 
 \def\extras at bengali{}
@@ -6205,8 +6209,8 @@
 % Option ordinalmonthday
 \define at boolkey{english}[english@]{ordinalmonthday}[true]{}
 
-\define at choicekey*+{english}{variant}[\val\nr]{uk,british,us,american,usmax,australian,newzealand,canadian}[us]{%
-   \ifcase\nr\relax
+\define at choicekey*+{english}{variant}[\xpg at val\xpg at nr]{uk,british,us,american,usmax,australian,newzealand,canadian}[us]{%
+   \ifcase\xpg at nr\relax
       % uk:
       \british at hyphentrue
       \british at dateformattrue
@@ -6815,8 +6819,8 @@
 \setlanguagealias[variant=canadian]{french}{canadien}
 
 \def\french at variant{french}
-\define at choicekey*+{french}{variant}[\val\nr]{french,canadian,acadian,swiss}[french]{%
-   \ifcase\nr\relax
+\define at choicekey*+{french}{variant}[\xpg at val\xpg at nr]{french,canadian,acadian,swiss}[french]{%
+   \ifcase\xpg at nr\relax
       % french:
       \def\french at variant{french}%
       \SetLanguageKeys{french}{babelname=french,bcp47=fr-FR}%
@@ -6846,7 +6850,7 @@
       \adddialect\l at swissfrench\l at french\relax%
       \french at thincolonspacetrue
    \fi
-   \xpg at info{Option: French, variant=\val}%
+   \xpg at info{Option: French, variant=\xpg at val}%
 }{\xpg at warning{Unknown French variant `#1'}}
 
 
@@ -6869,7 +6873,11 @@
 \def\xpg at unskip{\ifhmode\ifdim\lastskip>\z@\unskip\fi\fi}
 
 % Save original footnote definition
-\let\xpg at orig@makefntext\@makefntext
+% Do this at the end of the preamble to catch other
+% packages' footnote changes (#391)
+\AtEndPreamble{%
+  \let\xpg at orig@makefntext\@makefntext
+}
 
 \define at boolkey{french}[french@]{frenchfootnote}[true]{%
   \AfterPreamble{%
@@ -7343,8 +7351,8 @@
 \setlanguagealias[variant=scottish]{gaelic}{scottish}
 
 \def\gaelic at variant{irish}
-\define at choicekey*+{gaelic}{variant}[\val\nr]{irish,scottish}[irish]{%
-   \ifcase\nr\relax
+\define at choicekey*+{gaelic}{variant}[\xpg at val\xpg at nr]{irish,scottish}[irish]{%
+   \ifcase\xpg at nr\relax
       % irish:
       \gdef\gaelic at variant{irish}%
       \SetLanguageKeys{gaelic}{language=Irish,langtag=IRI,babelname=irish,bcp47=ga}%
@@ -7355,7 +7363,7 @@
       \SetLanguageKeys{gaelic}{language=Gaelic,langtag=GAE,babelname=scottish,bcp47=gd}%
       \xpg at fontsetup@latin{gaelic}%
    \fi
-   \xpg at info{Option: gaelic, variant=\val}%
+   \xpg at info{Option: gaelic, variant=\xpg at val}%
 }{\xpg at warning{Unknown gaelic variant `#1'}}
 
 % Register default options
@@ -7799,8 +7807,8 @@
 
 \newif\if at german@oldspelling
 \@german at oldspellingfalse
-\define at choicekey*+{german}{spelling}[\val\nr]{new,old,1901,1996}[new]{%
-   \ifcase\nr\relax
+\define at choicekey*+{german}{spelling}[\xpg at val\xpg at nr]{new,old,1901,1996}[new]{%
+   \ifcase\xpg at nr\relax
       % new:
       \@german at oldspellingfalse
    \or
@@ -7814,7 +7822,7 @@
       \@german at oldspellingfalse
    \fi
    \german at set@babelname%
-   \xpg at info{Option: German, spelling=\val}%
+   \xpg at info{Option: German, spelling=\xpg at val}%
 }{\xpg at warning{Unknown German spelling `#1'}}
 
 \newif\if at austrian@locale
@@ -7821,8 +7829,8 @@
 \@austrian at localefalse
 \newif\if at swiss@locale
 \@swiss at localefalse
-\define at choicekey*+{german}{variant}[\val\nr]{german,austrian,swiss}[german]{%
-   \ifcase\nr\relax
+\define at choicekey*+{german}{variant}[\xpg at val\xpg at nr]{german,austrian,swiss}[german]{%
+   \ifcase\xpg at nr\relax
       % german:
       \@swiss at localefalse%
       \@austrian at localefalse%
@@ -7842,7 +7850,7 @@
          }%
    \fi
    \german at set@babelname%
-   \xpg at info{Option: German, variant=\val}%
+   \xpg at info{Option: German, variant=\xpg at val}%
 }{\xpg at warning{Unknown German variant `#1'}}
 
 \def\german at set@babelname{%
@@ -7892,8 +7900,8 @@
 }
 
 \newif\if at german@blackletter
-\define at choicekey*+{german}{script}[\val\nr]{latin,blackletter,fraktur}[latin]{%
-   \ifcase\nr\relax
+\define at choicekey*+{german}{script}[\xpg at val\xpg at nr]{latin,blackletter,fraktur}[latin]{%
+   \ifcase\xpg at nr\relax
       % latin:
       \@german at blackletterfalse%
    \or
@@ -7904,7 +7912,7 @@
       \@german at blacklettertrue%
    \fi
    \german at set@babelname%
-   \xpg at info{Option: German, script=\val}%
+   \xpg at info{Option: German, script=\xpg at val}%
 }{\xpg at warning{Unknown German script `#1'}}
 
 % Option defunc'ed, as bot XeTeX and LuaTeX meanwhile
@@ -8681,12 +8689,12 @@
 % RTL. Hebrew uses LTR numbers, though. So we insert an LTR mark to revert
 % the directionality
 \ifxetex
-  \newcommand\xpg at hebrew@DigitsDotDashInterCharToks{\if at nonlatin\char"200E \fi}
+  \newcommand\xpg at hebrew@DigitsDotDashInterCharToks{\ifbool{@nonlatin}{\char"200E }{}}
 \fi
 
 \def\hebrew at ltr@numbers{%
     \ifxetex
-      \XeTeXinterchartoks \bidi at sepmark@charclass  \bidi at digits@charclass = {\xpg at hebrew@DigitsDotDashInterCharToks}
+      \XeTeXinterchartoks \bidi at sepmark@charclass  \bidi at digits@charclass = {\xpg at hebrew@DigitsDotDashInterCharToks}%
     \fi%
 }
 
@@ -8693,7 +8701,7 @@
 \def\nohebrew at ltr@numbers{%
     \ifxetex
       % This is bidi's original intervention
-      \XeTeXinterchartoks \bidi at sepmark@charclass  \bidi at digits@charclass = {\DigitsDotDashInterCharToks}
+      \XeTeXinterchartoks \bidi at sepmark@charclass  \bidi at digits@charclass = {\DigitsDotDashInterCharToks}%
     \fi%
 }
 
@@ -8951,8 +8959,8 @@
 \newif\if at hungarian@swapcaptions
 \newif\if at hungarian@swapheadings
 \newif\if at hungarian@swapheaders
-\define at choicekey*+{hungarian}{swapstrings}[\val\nr]{all,captions,headings,headers,hheaders,none}[all]{%
-   \ifcase\nr\relax
+\define at choicekey*+{hungarian}{swapstrings}[\xpg at val\xpg at nr]{all,captions,headings,headers,hheaders,none}[all]{%
+   \ifcase\xpg at nr\relax
       % all:
       \@hungarian at swapcaptionstrue%
       \@hungarian at swapheadingstrue%
@@ -8983,7 +8991,7 @@
       \@hungarian at swapheadingsfalse%
       \@hungarian at swapheadersfalse%
    \fi
-   \xpg at info{Option: Hungarian, swapstrings=\val}%
+   \xpg at info{Option: Hungarian, swapstrings=\xpg at val}%
 }{\xpg at warning{Unknown Hungarian swapstrings value `#1'}}
 
 % Register default options
@@ -9971,164 +9979,164 @@
 % 
 % \subsection{gloss-khmer.ldf}
 %    \begin{macrocode}
-\ProvidesFile{gloss-khmer.ldf}[polyglossia: module for Khmer]
-\PolyglossiaSetup{khmer}{
+\ProvidesFile{gloss-khmer.ldf}[polyglossia: module for Khmer]
+\PolyglossiaSetup{khmer}{
   bcp47=km,
-	script=Khmer,%
-	scripttag=khmr,%
-	langtag=KHM,%
-	hyphennames={nohyphenation},%
-	fontsetup=true,%
-	localnumeral=khmernumerals%
-}
-\newif\if at khmer@numerals
-\def\tmp at khmer{khmer}
-\define at key{khmer}{numerals}[arabic]{%
-	\def\@tmpa{#1}%
-	\ifx\@tmpa\tmp at khmer\@khmer at numeralstrue%
-	\else\@khmer at numeralsfalse\fi%
-}
-\setkeys{khmer}{numerals}
-\def\captionskhmer{%
-	\def\prefacename{អារម្ភកថា}%
-	\def\refname{ឯកសារយោង}%
-	\def\abstractname{សង្ខេប}%
-	\def\bibname{គន្ថនិទ្ទេស}%
-	\def\chaptername{ជំពូក}%
-	\def\appendixname{សេចក្ដីបន្ថែម}%
-	\def\contentsname{មាតិការ}%
-	\def\listfigurename{បញ្ជីរូបភាព}%
-	\def\listtablename{បញ្ជីតារាង}%
-	\def\indexname{សន្ទស្សន៍}%
-	\def\figurename{រូប}%
-	\def\tablename{តារាង}%
-	\def\partname{ផ្នែក}%
-	\def\pagename{ទំព័រ}%
-	\def\seename{មើល}%
-	\def\alsoname{មើលបន្ថែម}%
-	\def\enclname{ឯកសារភ្ជាប់}%
-	\def\ccname{ចម្លងជួន}%
-	\def\headtoname{ផ្ញើរទៅ}%
-	\def\proofname{សម្រាយ}%
-	\def\glossaryname{សទានុក្រម}%
-}
-\def\datekhmer{%
-	\def\khmer at month{%
-		\ifcase\month\or%
-		មករា\or%
-		កុម្ភៈ\or%
-		មិនា\or%
-		មេសា\or%
-		ឧសភា\or%
-		មិថុនា\or%
-		កក្កដា\or%
-		សីហា\or%
-		កញ្ញា\or%
-		តុលា\or%
-		វិច្ឆិកា\or%
-		ធ្នូ\fi}%
-	\def\today{\khmernumber\day\space\khmer at month\space\khmernumber\year}%
-}
-\def\khmerdigits#1{\expandafter\@khmer at digits #1@}
-\def\@khmer at digits#1{%
-	\ifx @#1% then terminate
-	\else\ifx0#1០%
-	\else\ifx1#1១%
-	\else\ifx2#1២%
-	\else\ifx3#1៣%
-	\else\ifx4#1៤%
-	\else\ifx5#1៥%
-	\else\ifx6#1៦%
-	\else\ifx7#1៧%
-	\else\ifx8#1៨%
-	\else\ifx9#1៩%
-	\else#1\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
-    \expandafter\@khmer at digits%
-    \fi
-}
-
-\newcommand{\khmernumerals}[2]{\khmernumber{#2}}
-
-\def\khmernumber#1{%
-	\if at khmer@numerals%
-		\khmerdigits{\number#1}%
-	\else%
-		\number#1%
-	\fi}
-\def\khmer at globalnumbers{%
-	\let\orig at arabic\@arabic%
-	\let\@arabic\khmernumber%
-	\renewcommand{\thefootnote}{\localnumeral*{footnote}}%
-}
-\def\nokhmer at globalnumbers{%
-	\let\@arabic\orig at arabic%
-}
-\def\thepart{\arabic{part}}
-\def\@khmeralph#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 អ%
-\else\xpg at ill@value{#1}{@khmeralph}\fi}
-\def\khmerAlph#1{\expandafter\@khmerAlph\csname c@#1\endcsname}
-\def\@khmerAlph#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 អ%
-\else\xpg at ill@value{#1}{@khmeralph}\fi}
-\def\khmer at numbers{%
-	\if at khmer@numerals
-		\let\@alph\@khmeralph%
-		\let\@Alph\@khmerAlph%
-	\fi%
-}
-\def\nokhmer at numbers{%
-	\let\@alph\latin at alph%
-	\let\@Alph\latin at Alph%
-}
-\def\blockextras at khmer{%
-	\XeTeXlinebreaklocale "kh" % 
-	\XeTeXlinebreakskip = 0pt plus 1pt minus 1pt
-%	\let\orig at baselinestretch\baselinestretch%
-%	\renewcommand{\baselinestretch}{1.2}% not work
-}
-\def\noblockextras at khmer{% 
-	\XeTeXlinebreaklocale "en"%
-%	\let\baselinestretch\orig at baselinestretch%
-}
-\@ifclassloaded{beamer}{%
-	\usefonttheme{professionalfonts}%
-	\def\factname{ស្វ័យសត្យ}%
-	\def\lemmaname{បទគន្លិះ}%
-	\def\theoremname{ទ្រឹស្ដីបទ}%
-	\def\corollaryname{អនុសាធ្យ}%
-	\def\problemname{ចំណោទ}%
-	\def\solutionname{ដំណោះស្រាយ}%
-	\def\definitionname{និយមន័យ}%
-	\def\examplename{ឧទាហរណ៏}%
-	\uselanguage{khmer}%
-	\languagepath{khmer}%
-	\deftranslation[to=khmer]{Fact}{\factname}%
-	\deftranslation[to=khmer]{Lemma}{\lemmaname}%
-	\deftranslation[to=khmer]{Theorem}{\theoremname}%
-	\deftranslation[to=khmer]{Corollary}{\corollaryname}%
-	\deftranslation[to=khmer]{Problem}{\problemname}%
-	\deftranslation[to=khmer]{Solution}{\solutionname}%
-	\deftranslation[to=khmer]{Definition}{\definitionname}%
-	\deftranslation[to=khmer]{Definitions}{\definitionname}%
-	\deftranslation[to=khmer]{Example}{\examplename}%
-	\deftranslation[to=khmer]{Examples}{\examplename}%
-	\AtEndDocument{\immediate\write\@auxout{\string\@writefile{nav}%
-		{\noexpand\headcommand{\noexpand\def\noexpand%
-		\inserttotalframenumber{\localnumeral*{framenumber}}}}}}%
-}{}
+	script=Khmer,%
+	scripttag=khmr,%
+	langtag=KHM,%
+	hyphennames={nohyphenation},%
+	fontsetup=true,%
+	localnumeral=khmernumerals%
+}
+\newif\if at khmer@numerals
+\def\tmp at khmer{khmer}
+\define at key{khmer}{numerals}[arabic]{%
+	\def\@tmpa{#1}%
+	\ifx\@tmpa\tmp at khmer\@khmer at numeralstrue%
+	\else\@khmer at numeralsfalse\fi%
+}
+\setkeys{khmer}{numerals}
+\def\captionskhmer{%
+	\def\prefacename{អារម្ភកថា}%
+	\def\refname{ឯកសារយោង}%
+	\def\abstractname{សង្ខេប}%
+	\def\bibname{គន្ថនិទ្ទេស}%
+	\def\chaptername{ជំពូក}%
+	\def\appendixname{សេចក្ដីបន្ថែម}%
+	\def\contentsname{មាតិការ}%
+	\def\listfigurename{បញ្ជីរូបភាព}%
+	\def\listtablename{បញ្ជីតារាង}%
+	\def\indexname{សន្ទស្សន៍}%
+	\def\figurename{រូប}%
+	\def\tablename{តារាង}%
+	\def\partname{ផ្នែក}%
+	\def\pagename{ទំព័រ}%
+	\def\seename{មើល}%
+	\def\alsoname{មើលបន្ថែម}%
+	\def\enclname{ឯកសារភ្ជាប់}%
+	\def\ccname{ចម្លងជួន}%
+	\def\headtoname{ផ្ញើរទៅ}%
+	\def\proofname{សម្រាយ}%
+	\def\glossaryname{សទានុក្រម}%
+}
+\def\datekhmer{%
+	\def\khmer at month{%
+		\ifcase\month\or%
+		មករា\or%
+		កុម្ភៈ\or%
+		មិនា\or%
+		មេសា\or%
+		ឧសភា\or%
+		មិថុនា\or%
+		កក្កដា\or%
+		សីហា\or%
+		កញ្ញា\or%
+		តុលា\or%
+		វិច្ឆិកា\or%
+		ធ្នូ\fi}%
+	\def\today{\khmernumber\day\space\khmer at month\space\khmernumber\year}%
+}
+\def\khmerdigits#1{\expandafter\@khmer at digits #1@}
+\def\@khmer at digits#1{%
+	\ifx @#1% then terminate
+	\else\ifx0#1០%
+	\else\ifx1#1១%
+	\else\ifx2#1២%
+	\else\ifx3#1៣%
+	\else\ifx4#1៤%
+	\else\ifx5#1៥%
+	\else\ifx6#1៦%
+	\else\ifx7#1៧%
+	\else\ifx8#1៨%
+	\else\ifx9#1៩%
+	\else#1\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
+    \expandafter\@khmer at digits%
+    \fi
+}
+
+\newcommand{\khmernumerals}[2]{\khmernumber{#2}}
+
+\def\khmernumber#1{%
+	\if at khmer@numerals%
+		\khmerdigits{\number#1}%
+	\else%
+		\number#1%
+	\fi}
+\def\khmer at globalnumbers{%
+	\let\orig at arabic\@arabic%
+	\let\@arabic\khmernumber%
+	\renewcommand{\thefootnote}{\localnumeral*{footnote}}%
+}
+\def\nokhmer at globalnumbers{%
+	\let\@arabic\orig at arabic%
+}
+\def\thepart{\arabic{part}}
+\def\@khmeralph#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 អ%
+\else\xpg at ill@value{#1}{@khmeralph}\fi}
+\def\khmerAlph#1{\expandafter\@khmerAlph\csname c@#1\endcsname}
+\def\@khmerAlph#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 អ%
+\else\xpg at ill@value{#1}{@khmeralph}\fi}
+\def\khmer at numbers{%
+	\if at khmer@numerals
+		\let\@alph\@khmeralph%
+		\let\@Alph\@khmerAlph%
+	\fi%
+}
+\def\nokhmer at numbers{%
+	\let\@alph\latin at alph%
+	\let\@Alph\latin at Alph%
+}
+\def\blockextras at khmer{%
+	\XeTeXlinebreaklocale "kh" % 
+	\XeTeXlinebreakskip = 0pt plus 1pt minus 1pt
+%	\let\orig at baselinestretch\baselinestretch%
+%	\renewcommand{\baselinestretch}{1.2}% not work
+}
+\def\noblockextras at khmer{% 
+	\XeTeXlinebreaklocale "en"%
+%	\let\baselinestretch\orig at baselinestretch%
+}
+\@ifclassloaded{beamer}{%
+	\usefonttheme{professionalfonts}%
+	\def\factname{ស្វ័យសត្យ}%
+	\def\lemmaname{បទគន្លិះ}%
+	\def\theoremname{ទ្រឹស្ដីបទ}%
+	\def\corollaryname{អនុសាធ្យ}%
+	\def\problemname{ចំណោទ}%
+	\def\solutionname{ដំណោះស្រាយ}%
+	\def\definitionname{និយមន័យ}%
+	\def\examplename{ឧទាហរណ៏}%
+	\uselanguage{khmer}%
+	\languagepath{khmer}%
+	\deftranslation[to=khmer]{Fact}{\factname}%
+	\deftranslation[to=khmer]{Lemma}{\lemmaname}%
+	\deftranslation[to=khmer]{Theorem}{\theoremname}%
+	\deftranslation[to=khmer]{Corollary}{\corollaryname}%
+	\deftranslation[to=khmer]{Problem}{\problemname}%
+	\deftranslation[to=khmer]{Solution}{\solutionname}%
+	\deftranslation[to=khmer]{Definition}{\definitionname}%
+	\deftranslation[to=khmer]{Definitions}{\definitionname}%
+	\deftranslation[to=khmer]{Example}{\examplename}%
+	\deftranslation[to=khmer]{Examples}{\examplename}%
+	\AtEndDocument{\immediate\write\@auxout{\string\@writefile{nav}%
+		{\noexpand\headcommand{\noexpand\def\noexpand%
+		\inserttotalframenumber{\localnumeral*{framenumber}}}}}}%
+}{}
 %    \end{macrocode}
 % \iffalse
 %</gloss-khmer.ldf>
@@ -10245,18 +10253,18 @@
 \setlanguagealias*{korean}{ko}
 
 % variant : plain (0), classic (1), or modern (2)
-\define at choicekey{korean}{variant}[\val\nr]{plain,classic,modern}[plain]{%
-    \let\xpg at korean@variant\nr
+\define at choicekey{korean}{variant}[\xpg at val\xpg at nr]{plain,classic,modern}[plain]{%
+    \let\xpg at korean@variant\xpg at nr
 }
 % captions : hangul (0) or hanja (1)
-\define at choicekey{korean}{captions}[\val\nr]{hangul,hanja}[hangul]{%
-    \let\xpg at korean@captions\nr
+\define at choicekey{korean}{captions}[\xpg at val\xpg at nr]{hangul,hanja}[hangul]{%
+    \let\xpg at korean@captions\xpg at nr
 }
 % swapstrings: all (0), headings (1), headers (2), or none (3)
 \newif\if at korean@swapheadings
 \newif\if at korean@swapheaders
-\define at choicekey*+{korean}{swapstrings}[\val\nr]{all,headings,headers,none}[all]{%
-   \ifcase\nr\relax
+\define at choicekey*+{korean}{swapstrings}[\xpg at val\xpg at nr]{all,headings,headers,none}[all]{%
+   \ifcase\xpg at nr\relax
       % all:
       \@korean at swapheadingstrue%
       \@korean at swapheaderstrue%
@@ -10273,7 +10281,7 @@
       \@korean at swapheadingsfalse%
       \@korean at swapheadersfalse%
    \fi
-   \xpg at info{Option: Korean, swapstrings=\val}%
+   \xpg at info{Option: Korean, swapstrings=\xpg at val}%
 }{\xpg at warning{Unknown Korean swapstrings value `#1'}}
 
 % Register default options
@@ -10741,8 +10749,8 @@
 
 \newif\if at kurdish@kurmanji
 \def\kurdish at variant{sorani}
-\define at choicekey*+{kurdish}{variant}[\val\nr]{sorani,kurmanji}[sorani]{%
-   \ifcase\nr\relax
+\define at choicekey*+{kurdish}{variant}[\xpg at val\xpg at nr]{sorani,kurmanji}[sorani]{%
+   \ifcase\xpg at nr\relax
       % sorani:
       \def\kurdish at variant{sorani}%
       \@kurdish at kurmanjifalse%
@@ -10752,13 +10760,13 @@
       \@kurdish at kurmanjitrue%
    \fi
    \kurdish at set@variety%
-   \xpg at info{Option: kurdish, variant=\val}%
+   \xpg at info{Option: kurdish, variant=\xpg at val}%
 }{\xpg at warning{Unknown Kurdish variant `#1'}}
 
 \newif\if at kurdish@latin
 \newif\if at kurdish@arabic
-\define at choicekey*+{kurdish}{script}[\val\nr]{Arabic,Latin}{%
-   \ifcase\nr\relax
+\define at choicekey*+{kurdish}{script}[\xpg at val\xpg at nr]{Arabic,Latin}{%
+   \ifcase\xpg at nr\relax
       % Arabic:
       \@kurdish at latinfalse%
       \@kurdish at arabictrue%
@@ -10768,7 +10776,7 @@
       \@kurdish at arabicfalse%
    \fi
    \kurdish at set@variety%
-   \xpg at info{Option: kurdish, script=\val}%
+   \xpg at info{Option: kurdish, script=\xpg at val}%
 }{\xpg at warning{Unknown Kurdish script `#1'}}
 
 
@@ -11331,7 +11339,7 @@
 % 
 % \subsection{gloss-latin.ldf}
 %    \begin{macrocode}
-\ProvidesFile{gloss-latin.ldf}[polyglossia: module for Latin v.2.2 2020-01-03]
+\ProvidesFile{gloss-latin.ldf}[polyglossia: module for Latin v.2.3 2020-03-08]
 
 \ExplSyntaxOn
 
@@ -11433,9 +11441,10 @@
             \str_case:Vn \l_polyglossia_latin_variant_str
               {
                 {classic}      {
-                                 \str_if_eq:nnTF{#1}{liturgicallatin}
-                                     { \adddialect \l at classiclatin { \use:c {l@#1} } }
-                                     {}
+                                 \str_if_eq:nnF {#1} {classiclatin}
+                                   {
+                                     \adddialect \l at classiclatin  { \use:c {l@#1} }
+                                   }
                                }
                 {medieval}     { \adddialect \l at medievallatin { \use:c {l@#1} } }
                 {modern}       { \adddialect \l at latin { \use:c {l@#1} } }
@@ -11641,10 +11650,15 @@
 
 %%%%% Messages and commands concerning footnotes
 
-\cs_if_exist:NT \@makefntext
-  {
-    \cs_set_eq:NN \polyglossia_latin_original_footnote:n \@makefntext
-  }
+% Save original footnote definition
+% Do this at the end of the preamble to catch other
+% packages' footnote changes (#391)
+\AtEndPreamble{%
+  \cs_if_exist:NT \@makefntext
+    {
+      \cs_set_eq:NN \polyglossia_latin_original_footnote:n \@makefntext
+    }
+}
 
 % This is the footnote style as defined by the "ecclesiastic" package.
 \cs_new:Npn \polyglossia_latin_variant_footnote:n #1
@@ -11947,9 +11961,12 @@
 \shorthandoff {^}
 \shorthandoff {=}
 
-% The active '=' character may cause problems with key=value interfaces.
+% The active = character may cause problems with key=value interfaces.
 % We have to make sure here that no problems can occur outside a Latin
 % prosodic shorthand environment.
+% The active ' character may cause problems with the unicode-math package
+% (in case Latin is used as a secondary language, see #394). We have to
+% turn it of if Latin is not the main language.
 
 \protected at write \@auxout { } { \shorthandoff {=} } % for the aux file
 
@@ -11964,9 +11981,13 @@
       }
       {
         % The following command should not be called if the main language
-        % defines a '=' shorthand. However, there are no languages besides
+        % defines a = shorthand. However, there are no languages besides
         % Latin defining such a shorthand in polyglossia.
         \shorthandoff {=}
+        % The following command should not be called if the main language
+        % defines a ' shorthand. However, there are no languages besides
+        % Latin defining such a shorthand in polyglossia.
+        \shorthandoff {'}
       }
   }
 
@@ -11984,6 +12005,9 @@
             \polyglossia_latin_apply_quotemark:N
           }
       }
+    % The ' shorthand is normally turned off to avoid problems with the unicode-math
+    % package. We have to turn it on here.
+    \shorthandon {'}
     \bbl at activate {'}
     \declare at shorthand {latin} {'}
       {
@@ -11990,6 +12014,9 @@
         \mode_if_math:TF
           {
             \active at math@prime % defined in "latex.ltx"
+            % This definition is differing from the primes of the unicode-math package.
+            % TO DO: Make sure that the appearance of primes is the same as with the
+            % unicode-math package if this package is loaded.
           }
           {
             \polyglossia_latin_put_acute:N
@@ -12260,7 +12287,9 @@
 
 \def \noextras at latin
   {
-    \polyglossia_latin_no_shorthands:
+    \iflatin at babelshorthands
+      \polyglossia_latin_no_shorthands:
+    \fi
     \xpgla at savedvalues
     \polyglossia_latin_no_punctuation_spacing:
     \polyglossia_latin_modern_character_codes:
@@ -12728,8 +12757,8 @@
 \providebool{malay at melayu}
 \malay at melayufalse
 \def\malay at variant{malay}
-\define at choicekey*+{malay}{variant}[\val\nr]{indonesian,malaysian}[malaysian]{%
-   \ifcase\nr\relax
+\define at choicekey*+{malay}{variant}[\xpg at val\xpg at nr]{indonesian,malaysian}[malaysian]{%
+   \ifcase\xpg at nr\relax
       % indonesian:
       \def\malay at variant{indonesian}%
       \malay at melayufalse
@@ -12775,7 +12804,7 @@
         }%
       }%
    \fi
-   \xpg at info{Option: malay, variant=\val}%
+   \xpg at info{Option: malay, variant=\xpg at val}%
 }{\xpg at warning{Unknown malay variant `#1'}}
 
 % Register default options
@@ -12998,8 +13027,8 @@
 \newif\ifmarathi at devanagari@numerals
 \marathi at devanagari@numeralstrue
 
-\define at choicekey*+{marathi}{numerals}[\val\nr]{Western,Devanagari}[Devanagari]{%
-   \ifcase\nr\relax
+\define at choicekey*+{marathi}{numerals}[\xpg at val\xpg at nr]{Western,Devanagari}[Devanagari]{%
+   \ifcase\xpg at nr\relax
       % Western:
       \marathi at devanagari@numeralsfalse%
    \or
@@ -13006,7 +13035,7 @@
       % Devanagari:
       \marathi at devanagari@numeralstrue%
    \fi
-   \xpg at info{Option: Marathi, numerals=\val}%
+   \xpg at info{Option: Marathi, numerals=\xpg at val}%
 }{\xpg at warning{Unknown Marathi numerals value `#1'}}
 
 % Register default options
@@ -13202,8 +13231,8 @@
 
 \newif\ifcyrillic at numerals
 \newif\ifcyrillic at asbuk@numerals
-\define at choicekey*+{mongolian}{numerals}[\val\nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
-   \ifcase\nr\relax
+\define at choicekey*+{mongolian}{numerals}[\xpg at val\xpg at nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
+   \ifcase\xpg at nr\relax
       % arabic:
       \cyrillic at numeralsfalse%
       \cyrillic at asbuk@numeralsfalse%
@@ -13220,7 +13249,7 @@
       \cyrillic at numeralstrue%
       \cyrillic at asbuk@numeralstrue%
    \fi
-   \xpg at info{Option: Mongolian, numerals=\val}%
+   \xpg at info{Option: Mongolian, numerals=\xpg at val}%
 }{\xpg at warning{Unknown Mongolian numerals value `#1'}}
 
 \define at boolkey{mongolian}[mongolian@]{babelshorthands}[true]{}
@@ -13612,8 +13641,8 @@
 \setlanguagealias[variant=nynorsk]{norwegian}{nynorsk}
 
 \def\norwegian at variant{nynorsk}
-\define at choicekey*+{norwegian}{variant}[\val\nr]{nynorsk,bokmal}[nynorsk]{%
-   \ifcase\nr\relax
+\define at choicekey*+{norwegian}{variant}[\xpg at val\xpg at nr]{nynorsk,bokmal}[nynorsk]{%
+   \ifcase\xpg at nr\relax
       % nynorsk:
       \def\norwegian at variant{nynorsk}%
       \SetLanguageKeys{norwegian}{langtag=NYN,babelname=nynorsk,bcp47=nn}%
@@ -13624,7 +13653,7 @@
       \SetLanguageKeys{norwegian}{langtag=NOR,babelname=norsk,bcp47=nb}%
       \xpg at fontsetup@latin{norwegian}%
    \fi
-   \xpg at info{Option: norwegian, variant=\val}%
+   \xpg at info{Option: norwegian, variant=\xpg at val}%
 }{\xpg at warning{Unknown norwegian variant `#1'}}
 
 
@@ -14310,8 +14339,8 @@
 \setlanguagealias[variant=brazilian]{portuguese}{brazil}
 
 \def\portuguese at variant{portuges}
-\define at choicekey*+{portuguese}{variant}[\val\nr]{portuguese,brazilian}[portuguese]{%
-   \ifcase\nr\relax
+\define at choicekey*+{portuguese}{variant}[\xpg at val\xpg at nr]{portuguese,brazilian}[portuguese]{%
+   \ifcase\xpg at nr\relax
       % portuguese:
       \def\portuguese at variant{portuges}%
       \SetLanguageKeys{portuguese}{babelname=portuges,bcp47=pt-PT}%
@@ -14324,7 +14353,7 @@
 	      I will use the standard patterns for Portuguese instead}%
 	    \adddialect\l at brazil\l at portuges\relax}%
    \fi
-   \xpg at info{Option: portuguese, variant=\val}%
+   \xpg at info{Option: portuguese, variant=\xpg at val}%
 }{\xpg at warning{Unknown portuguese variant `#1'}}
 
 
@@ -14565,8 +14594,8 @@
 
 \newif\ifcyrillic at numerals
 \newif\ifcyrillic at asbuk@numerals
-\define at choicekey*+{russian}{numerals}[\val\nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
-   \ifcase\nr\relax
+\define at choicekey*+{russian}{numerals}[\xpg at val\xpg at nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
+   \ifcase\xpg at nr\relax
       % arabic:
       \cyrillic at numeralsfalse%
       \cyrillic at asbuk@numeralsfalse%
@@ -14583,7 +14612,7 @@
       \cyrillic at numeralstrue%
       \cyrillic at asbuk@numeralstrue%
    \fi
-   \xpg at info{Option: Russian, numerals=\val}%
+   \xpg at info{Option: Russian, numerals=\xpg at val}%
 }{\xpg at warning{Unknown Russian numerals value `#1'}}
 
 \define at boolkey{russian}[russian@]{indentfirst}[true]{
@@ -14930,8 +14959,8 @@
 
 % TODO: Add other Sami varieties
 \def\sami at variant{northern}
-%\define at choicekey*+{sami}{variant}[\val\nr]{northern}[nothern]{%
-%   \ifcase\nr\relax
+%\define at choicekey*+{sami}{variant}[\xpg at val\xpg at nr]{northern}[nothern]{%
+%   \ifcase\xpg at nr\relax
 %      % northern:
 %      \def\sami at variant{samin}%
 %      \SetLanguageKeys{sami}{language=Northern Sami,langtag=NSM}%
@@ -14942,7 +14971,7 @@
 %      \SetLanguageKeys{sami}{language= Sami,langtag=}%
 %      \xpg at fontsetup@latin{sami}%
 %   \fi
-%   \xpg at info{Option: sami, variant=\val}%
+%   \xpg at info{Option: sami, variant=\xpg at val}%
 %}{\xpg at warning{Unknown sami variant `#1'}}
 
 
@@ -15089,8 +15118,8 @@
 
 \newif\ifsanskrit at devanagari@numerals
 \sanskrit at devanagari@numeralstrue
-\define at choicekey*+{sanskrit}{numerals}[\val\nr]{Devanagari,Western}[Devanagari]{%
-   \ifcase\nr\relax
+\define at choicekey*+{sanskrit}{numerals}[\xpg at val\xpg at nr]{Devanagari,Western}[Devanagari]{%
+   \ifcase\xpg at nr\relax
       % Devanagari:
       \sanskrit at devanagari@numeralstrue%
    \or
@@ -15097,7 +15126,7 @@
       % Western:
       \sanskrit at devanagari@numeralsfalse%
    \fi
-   \xpg at info{Option: Sanskrit, numerals=\val}%
+   \xpg at info{Option: Sanskrit, numerals=\xpg at val}%
 }{\xpg at warning{Unknown Sanskrit numeral `#1'}}
 
 
@@ -15227,8 +15256,8 @@
 \setlanguagealias[script=Cyrillic]{serbian}{serbianc}
 
 \newif\if at serbian@cyr
-\define at choicekey*+{serbian}{Script}[\val\nr]{cyrillic,latin}[cyrillic]{%
-   \ifcase\nr\relax
+\define at choicekey*+{serbian}{Script}[\xpg at val\xpg at nr]{cyrillic,latin}[cyrillic]{%
+   \ifcase\xpg at nr\relax
       % cyrillic:
       \@serbian at cyrtrue
       \SetLanguageKeys{serbian}{scripttag=cyrl,script=Cyrillic,babelname=serbianc,bcp47=sr-Cyrl}
@@ -15241,7 +15270,7 @@
       %TODO \def\serbian at language{\language=\l at serbianlat}%
       % or should we use Croatian patterns as a fallback for the time being???
    \fi
-   \xpg at info{Option: Serbian, script=\val}%
+   \xpg at info{Option: Serbian, script=\xpg at val}%
 }{\xpg at warning{Unknown Serbian script `#1'}}
 
 \define at key{serbian}{script}[Cyrillic]{\setkeys{serbian}{Script=#1}}
@@ -15248,8 +15277,8 @@
 
 \newif\ifcyrillic at numerals
 \newif\ifcyrillic at asbuk@numerals
-\define at choicekey*+{serbian}{numerals}[\val\nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
-   \ifcase\nr\relax
+\define at choicekey*+{serbian}{numerals}[\xpg at val\xpg at nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
+   \ifcase\xpg at nr\relax
       % arabic:
       \cyrillic at numeralsfalse%
       \cyrillic at asbuk@numeralsfalse%
@@ -15266,7 +15295,7 @@
       \cyrillic at numeralstrue%
       \cyrillic at asbuk@numeralstrue%
    \fi
-   \xpg at info{Option: Serbian, numerals=\val}%
+   \xpg at info{Option: Serbian, numerals=\xpg at val}%
 }{\xpg at warning{Unknown Serbian numerals value `#1'}}
 
 \setkeys{serbian}{Script,numerals}
@@ -15387,7 +15416,7 @@
 \def\serbian at numbers{%
    \let\latin at alph\@alph
    \let\latin at Alph\@Alph
-   \ifserbian at numerals
+   \ifcyrillic at numerals
      \def\serbian at alph##1{\expandafter\serbiannumeral\expandafter{\the##1}}%
      \def\serbian at Alph##1{\expandafter\Serbiannumeral\expandafter{\the##1}}%
       \let\@alph\serbian at alph%
@@ -15401,11 +15430,11 @@
 }
 
 \def\blockextras at serbian{%
-   \ifserbian at numerals\serbian at numbers\fi
+   \ifcyrillic at numerals\serbian at numbers\fi
 }
  
 \def\noextras at serbian{%
-   \ifserbian at numerals\noserbian at numbers\fi
+   \ifcyrillic at numerals\noserbian at numbers\fi
 }
 
 \def\Asbuk#1{\expandafter\serbian at asbuk@Alph\csname c@#1\endcsname}
@@ -15831,8 +15860,8 @@
 \setlanguagealias[variant=upper]{sorbian}{uppersorbian}
 
 \def\sorbian at variant{usorbian}
-\define at choicekey*+{sorbian}{variant}[\val\nr]{upper,lower}[upper]{%
-   \ifcase\nr\relax
+\define at choicekey*+{sorbian}{variant}[\xpg at val\xpg at nr]{upper,lower}[upper]{%
+   \ifcase\xpg at nr\relax
       % upper:
       \def\sorbian at variant{usorbian}%
       \SetLanguageKeys{sorbian}{language=Upper Sorbian,langtag=USB,babelname=uppersorbian,bcp47=hsb}%
@@ -15873,7 +15902,7 @@
         }
      }%
    \fi
-   \xpg at info{Option: sorbian, variant=\val}%
+   \xpg at info{Option: sorbian, variant=\xpg at val}%
 }{\xpg at warning{Unknown sorbian variant `#1'}}
 
 
@@ -16018,8 +16047,8 @@
 
 \newif\if at spanish@mexico
 \@spanish at mexicofalse
-\define at choicekey*+{spanish}{variant}[\val\nr]{spanish,mexican}[spanish]{%
-   \ifcase\nr\relax
+\define at choicekey*+{spanish}{variant}[\xpg at val\xpg at nr]{spanish,mexican}[spanish]{%
+   \ifcase\xpg at nr\relax
       % spanish:
       \@spanish at mexicofalse%
       \SetLanguageKeys{spanish}{babelname=spanish,bcp47=es-ES}%
@@ -16028,7 +16057,7 @@
       \@spanish at mexicotrue%
       \SetLanguageKeys{spanish}{babelname=spanishmx,bcp47=es-MX}%
    \fi
-   \xpg at info{Option: spanish, variant=\val}%
+   \xpg at info{Option: spanish, variant=\xpg at val}%
 }{\xpg at warning{Unknown spanish variant `#1'}}
 
 % Localized math operators à la babel
@@ -16036,8 +16065,8 @@
 \newif\ifspanish at spacedoperators
 \newif\ifspanish at locoperators
 
-\define at choicekey*+{spanish}{spanishoperators}[\val\nr]{all,accented,spaced,none}[all]{%
-   \ifcase\nr\relax
+\define at choicekey*+{spanish}{spanishoperators}[\xpg at val\xpg at nr]{all,accented,spaced,none}[all]{%
+   \ifcase\xpg at nr\relax
       % all:
       \spanish at locoperatorstrue%
       \spanish at accentedoperatorstrue%
@@ -16058,7 +16087,7 @@
       \spanish at accentedoperatorsfalse%
       \spanish at spacedoperatorsfalse%
    \fi
-   \xpg at info{Option: Spanish, spanishoperators=\val}%
+   \xpg at info{Option: Spanish, spanishoperators=\xpg at val}%
 }{\xpg at warning{Unknown spanishoperators value `#1'}}
 
 
@@ -17183,8 +17212,8 @@
 
 \newif\ifcyrillic at numerals
 \newif\ifcyrillic at asbuk@numerals
-\define at choicekey*+{ukrainian}{numerals}[\val\nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
-   \ifcase\nr\relax
+\define at choicekey*+{ukrainian}{numerals}[\xpg at val\xpg at nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
+   \ifcase\xpg at nr\relax
       % arabic:
       \cyrillic at numeralsfalse%
       \cyrillic at asbuk@numeralsfalse%
@@ -17201,7 +17230,7 @@
       \cyrillic at numeralstrue%
       \cyrillic at asbuk@numeralstrue%
    \fi
-   \xpg at info{Option: Ukrainian, numerals=\val}%
+   \xpg at info{Option: Ukrainian, numerals=\xpg at val}%
 }{\xpg at warning{Unknown Ukrainian numerals value `#1'}}
 
 
@@ -17700,8 +17729,8 @@
 
 \providebool{welsh at formaldate}
 
-\define at choicekey*+{welsh}{date}[\val\nr]{long,short}[short]{%
-   \ifcase\nr\relax
+\define at choicekey*+{welsh}{date}[\xpg at val\xpg at nr]{long,short}[short]{%
+   \ifcase\xpg at nr\relax
       % long:
       \welsh at formaldatetrue
    \or
@@ -17708,7 +17737,7 @@
       % accented:
       \welsh at formaldatefalse
    \fi
-   \xpg at info{Option: Welsh, date=\val}%
+   \xpg at info{Option: Welsh, date=\xpg at val}%
 }{\xpg at warning{Unknown date value `#1'}}
 
 % Register default options
@@ -19337,7 +19366,7 @@
 
    ¦----------------------------------------------¦
    ¦                                              ¦
-   ¦       THE POLYGLOSSIA PACKAGE v1.47          ¦
+   ¦       THE POLYGLOSSIA PACKAGE v1.48          ¦
    ¦                                              ¦
    ¦     Modern multilingual typesetting          ¦
    ¦        with XeLaTeX and LuaLaTeX             ¦
@@ -19346,7 +19375,7 @@
 
 This package provides an alternative to Babel for users of XeLaTeX and LuaLaTeX
 (with a few languages incompletely supported for the latter). This version
-includes support for 79 different languages, some of which in different
+includes support for over 70 different languages, some of which in different
 regional or national varieties, or using a different writing system.
 
 Polyglossia makes it possible to automate the following tasks:
@@ -19385,6 +19414,26 @@
 to track the issues and follow progress.
 %</../README>
 %<*Changelog>
+1.48 (25-03-2020)
+
+No new features
+
+Bug fixes:
+  * Fix use of Hebrew with LuaLaTeX (#389).
+  * Do not overwrite footnote redefinitions of other packages
+    with Latin and French (#391)
+  * Fix Serbian cyrillic numerals code (#392).
+  * Fix [no]localmarks option, whose logic was swapped (part of #395).
+  * Protect localmarks function against uppercased language names (part of #395).
+  * Fix buggy redefinition of \@markright with option localmarks (#396).
+  * Fix incompatibility between Latin and unicode-math (#394).
+  * Make (undocumented) \defineshorthand command (imported from babel) work.
+  * Fix usage of localmarks option without value.
+  * Emergency fixes for bugs caused by updates in Babel’s switch.def (#399 and #400).
+
+Interface and defaults changes:
+  * Use private macros in keyval choice keys (#390).
+
 1.47 (29-01-2020)
 
 New features:

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/babelsh.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/babelsh.def	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/babelsh.def	2020-03-25 21:12:39 UTC (rev 54549)
@@ -139,14 +139,30 @@
 %
 % ------------------------------------------------------------------------------
 %
-% line 108 from babel.def
+% lines 108 and 109 from babel.def
 %
 % ------------------------------------------------------------------------------
 %
 \def\bbl at csarg#1#2{\expandafter#1\csname bbl@#2\endcsname}%
+\def\bbl at cs#1{\csname bbl@#1\endcsname}%
+
+% ------------------------------------------------------------------------------
 %
+% lines 110 to 116 from babel.def
+%
 % ------------------------------------------------------------------------------
 %
+
+\def\bbl at loop#1#2#3{\bbl@@loop#1{#3}#2,\@nnil,}
+\def\bbl at loopx#1#2{\expandafter\bbl at loop\expandafter#1\expandafter{#2}}
+\def\bbl@@loop#1#2#3,{%
+  \ifx\@nnil#3\relax\else
+    \def#1{#3}#2\bbl at afterfi\bbl@@loop#1{#2}%
+  \fi}
+\def\bbl at for#1#2#3{\bbl at loopx#1{#2}{\ifx#1\@empty\else#3\fi}}
+
+% ------------------------------------------------------------------------------
+%
 % lines 125 to 130 from babel.def
 %
 % ------------------------------------------------------------------------------

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-armenian.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-armenian.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-armenian.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -16,8 +16,8 @@
 
 \newif\if at eastern@armenian
 \@eastern at armenianfalse
-\define at choicekey*+{armenian}{variant}[\val\nr]{western,eastern}[western]{%
-   \ifcase\nr\relax
+\define at choicekey*+{armenian}{variant}[\xpg at val\xpg at nr]{western,eastern}[western]{%
+   \ifcase\xpg at nr\relax
       % western:
       \@eastern at armenianfalse%
    \or
@@ -24,7 +24,7 @@
       % eastern:
       \@eastern at armeniantrue%
    \fi
-   \xpg at info{Option: Armenian, variant=\val}%
+   \xpg at info{Option: Armenian, variant=\xpg at val}%
 }{\xpg at warning{Unknown Armenian variant `#1'}}
 
 \newif\if at armenian@numerals

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-belarusian.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-belarusian.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-belarusian.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -20,8 +20,8 @@
 \setlanguagealias*{belarusian}{be}
 
 \def\belarusian at spelling{modern}
-\define at choicekey*+{belarusian}{spelling}[\val\nr]{modern,classic,tarask}[modern]{%
-   \ifcase\nr\relax
+\define at choicekey*+{belarusian}{spelling}[\xpg at val\xpg at nr]{modern,classic,tarask}[modern]{%
+   \ifcase\xpg at nr\relax
       % modern:
       \def\belarusian at spelling{modern}%
       \SetLanguageKeys{belarusian}{bcp47=be}%
@@ -38,8 +38,8 @@
 
 \newif\ifcyrillic at numerals
 \newif\ifcyrillic at asbuk@numerals
-\define at choicekey*+{belarusian}{numerals}[\val\nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
-   \ifcase\nr\relax
+\define at choicekey*+{belarusian}{numerals}[\xpg at val\xpg at nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
+   \ifcase\xpg at nr\relax
       % arabic:
       \cyrillic at numeralsfalse%
       \cyrillic at asbuk@numeralsfalse%
@@ -56,7 +56,7 @@
       \cyrillic at numeralstrue%
       \cyrillic at asbuk@numeralstrue%
    \fi
-   \xpg at info{Option: Belarusian, numerals=\val}%
+   \xpg at info{Option: Belarusian, numerals=\xpg at val}%
 }{\xpg at warning{Unknown Belarusian numerals value `#1'}}
 
 \define at boolkey{belarusian}[belarusian@]{babelshorthands}[true]{}

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-bengali.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-bengali.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-bengali.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -30,8 +30,8 @@
 
 \newif\ifbengali at devanagari@numerals
 \newif\ifbengali at bengali@numerals
-\define at choicekey*+{bengali}{numerals}[\val\nr]{Devanagari,Bengali,Western}[Devanagari]{%
-   \ifcase\nr\relax
+\define at choicekey*+{bengali}{numerals}[\xpg at val\xpg at nr]{Devanagari,Bengali,Western}[Devanagari]{%
+   \ifcase\xpg at nr\relax
       % Devanagari:
       \bengali at bengali@numeralsfalse%
       \bengali at devanagari@numeralstrue%
@@ -44,7 +44,7 @@
       \bengali at bengali@numeralsfalse%
       \bengali at devanagari@numeralsfalse%
    \fi
-   \xpg at info{Option: Bengali, numerals=\val}%
+   \xpg at info{Option: Bengali, numerals=\xpg at val}%
 }{\xpg at warning{Unknown Bengali numeral `#1'}}
 
 \def\extras at bengali{}

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -37,8 +37,8 @@
 % Option ordinalmonthday
 \define at boolkey{english}[english@]{ordinalmonthday}[true]{}
 
-\define at choicekey*+{english}{variant}[\val\nr]{uk,british,us,american,usmax,australian,newzealand,canadian}[us]{%
-   \ifcase\nr\relax
+\define at choicekey*+{english}{variant}[\xpg at val\xpg at nr]{uk,british,us,american,usmax,australian,newzealand,canadian}[us]{%
+   \ifcase\xpg at nr\relax
       % uk:
       \british at hyphentrue
       \british at dateformattrue

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -22,8 +22,8 @@
 \setlanguagealias[variant=canadian]{french}{canadien}
 
 \def\french at variant{french}
-\define at choicekey*+{french}{variant}[\val\nr]{french,canadian,acadian,swiss}[french]{%
-   \ifcase\nr\relax
+\define at choicekey*+{french}{variant}[\xpg at val\xpg at nr]{french,canadian,acadian,swiss}[french]{%
+   \ifcase\xpg at nr\relax
       % french:
       \def\french at variant{french}%
       \SetLanguageKeys{french}{babelname=french,bcp47=fr-FR}%
@@ -53,7 +53,7 @@
       \adddialect\l at swissfrench\l at french\relax%
       \french at thincolonspacetrue
    \fi
-   \xpg at info{Option: French, variant=\val}%
+   \xpg at info{Option: French, variant=\xpg at val}%
 }{\xpg at warning{Unknown French variant `#1'}}
 
 
@@ -76,7 +76,11 @@
 \def\xpg at unskip{\ifhmode\ifdim\lastskip>\z@\unskip\fi\fi}
 
 % Save original footnote definition
-\let\xpg at orig@makefntext\@makefntext
+% Do this at the end of the preamble to catch other
+% packages' footnote changes (#391)
+\AtEndPreamble{%
+  \let\xpg at orig@makefntext\@makefntext
+}
 
 \define at boolkey{french}[french@]{frenchfootnote}[true]{%
   \AfterPreamble{%

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-gaelic.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-gaelic.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-gaelic.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -18,8 +18,8 @@
 \setlanguagealias[variant=scottish]{gaelic}{scottish}
 
 \def\gaelic at variant{irish}
-\define at choicekey*+{gaelic}{variant}[\val\nr]{irish,scottish}[irish]{%
-   \ifcase\nr\relax
+\define at choicekey*+{gaelic}{variant}[\xpg at val\xpg at nr]{irish,scottish}[irish]{%
+   \ifcase\xpg at nr\relax
       % irish:
       \gdef\gaelic at variant{irish}%
       \SetLanguageKeys{gaelic}{language=Irish,langtag=IRI,babelname=irish,bcp47=ga}%
@@ -30,7 +30,7 @@
       \SetLanguageKeys{gaelic}{language=Gaelic,langtag=GAE,babelname=scottish,bcp47=gd}%
       \xpg at fontsetup@latin{gaelic}%
    \fi
-   \xpg at info{Option: gaelic, variant=\val}%
+   \xpg at info{Option: gaelic, variant=\xpg at val}%
 }{\xpg at warning{Unknown gaelic variant `#1'}}
 
 % Register default options

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -41,8 +41,8 @@
 
 \newif\if at german@oldspelling
 \@german at oldspellingfalse
-\define at choicekey*+{german}{spelling}[\val\nr]{new,old,1901,1996}[new]{%
-   \ifcase\nr\relax
+\define at choicekey*+{german}{spelling}[\xpg at val\xpg at nr]{new,old,1901,1996}[new]{%
+   \ifcase\xpg at nr\relax
       % new:
       \@german at oldspellingfalse
    \or
@@ -56,7 +56,7 @@
       \@german at oldspellingfalse
    \fi
    \german at set@babelname%
-   \xpg at info{Option: German, spelling=\val}%
+   \xpg at info{Option: German, spelling=\xpg at val}%
 }{\xpg at warning{Unknown German spelling `#1'}}
 
 \newif\if at austrian@locale
@@ -63,8 +63,8 @@
 \@austrian at localefalse
 \newif\if at swiss@locale
 \@swiss at localefalse
-\define at choicekey*+{german}{variant}[\val\nr]{german,austrian,swiss}[german]{%
-   \ifcase\nr\relax
+\define at choicekey*+{german}{variant}[\xpg at val\xpg at nr]{german,austrian,swiss}[german]{%
+   \ifcase\xpg at nr\relax
       % german:
       \@swiss at localefalse%
       \@austrian at localefalse%
@@ -84,7 +84,7 @@
          }%
    \fi
    \german at set@babelname%
-   \xpg at info{Option: German, variant=\val}%
+   \xpg at info{Option: German, variant=\xpg at val}%
 }{\xpg at warning{Unknown German variant `#1'}}
 
 \def\german at set@babelname{%
@@ -134,8 +134,8 @@
 }
 
 \newif\if at german@blackletter
-\define at choicekey*+{german}{script}[\val\nr]{latin,blackletter,fraktur}[latin]{%
-   \ifcase\nr\relax
+\define at choicekey*+{german}{script}[\xpg at val\xpg at nr]{latin,blackletter,fraktur}[latin]{%
+   \ifcase\xpg at nr\relax
       % latin:
       \@german at blackletterfalse%
    \or
@@ -146,7 +146,7 @@
       \@german at blacklettertrue%
    \fi
    \german at set@babelname%
-   \xpg at info{Option: German, script=\val}%
+   \xpg at info{Option: German, script=\xpg at val}%
 }{\xpg at warning{Unknown German script `#1'}}
 
 % Option defunc'ed, as bot XeTeX and LuaTeX meanwhile

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -115,12 +115,12 @@
 % RTL. Hebrew uses LTR numbers, though. So we insert an LTR mark to revert
 % the directionality
 \ifxetex
-  \newcommand\xpg at hebrew@DigitsDotDashInterCharToks{\if at nonlatin\char"200E \fi}
+  \newcommand\xpg at hebrew@DigitsDotDashInterCharToks{\ifbool{@nonlatin}{\char"200E }{}}
 \fi
 
 \def\hebrew at ltr@numbers{%
     \ifxetex
-      \XeTeXinterchartoks \bidi at sepmark@charclass  \bidi at digits@charclass = {\xpg at hebrew@DigitsDotDashInterCharToks}
+      \XeTeXinterchartoks \bidi at sepmark@charclass  \bidi at digits@charclass = {\xpg at hebrew@DigitsDotDashInterCharToks}%
     \fi%
 }
 
@@ -127,7 +127,7 @@
 \def\nohebrew at ltr@numbers{%
     \ifxetex
       % This is bidi's original intervention
-      \XeTeXinterchartoks \bidi at sepmark@charclass  \bidi at digits@charclass = {\DigitsDotDashInterCharToks}
+      \XeTeXinterchartoks \bidi at sepmark@charclass  \bidi at digits@charclass = {\DigitsDotDashInterCharToks}%
     \fi%
 }
 

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-hungarian.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-hungarian.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-hungarian.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -20,8 +20,8 @@
 \newif\if at hungarian@swapcaptions
 \newif\if at hungarian@swapheadings
 \newif\if at hungarian@swapheaders
-\define at choicekey*+{hungarian}{swapstrings}[\val\nr]{all,captions,headings,headers,hheaders,none}[all]{%
-   \ifcase\nr\relax
+\define at choicekey*+{hungarian}{swapstrings}[\xpg at val\xpg at nr]{all,captions,headings,headers,hheaders,none}[all]{%
+   \ifcase\xpg at nr\relax
       % all:
       \@hungarian at swapcaptionstrue%
       \@hungarian at swapheadingstrue%
@@ -52,7 +52,7 @@
       \@hungarian at swapheadingsfalse%
       \@hungarian at swapheadersfalse%
    \fi
-   \xpg at info{Option: Hungarian, swapstrings=\val}%
+   \xpg at info{Option: Hungarian, swapstrings=\xpg at val}%
 }{\xpg at warning{Unknown Hungarian swapstrings value `#1'}}
 
 % Register default options

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -15,18 +15,18 @@
 \setlanguagealias*{korean}{ko}
 
 % variant : plain (0), classic (1), or modern (2)
-\define at choicekey{korean}{variant}[\val\nr]{plain,classic,modern}[plain]{%
-    \let\xpg at korean@variant\nr
+\define at choicekey{korean}{variant}[\xpg at val\xpg at nr]{plain,classic,modern}[plain]{%
+    \let\xpg at korean@variant\xpg at nr
 }
 % captions : hangul (0) or hanja (1)
-\define at choicekey{korean}{captions}[\val\nr]{hangul,hanja}[hangul]{%
-    \let\xpg at korean@captions\nr
+\define at choicekey{korean}{captions}[\xpg at val\xpg at nr]{hangul,hanja}[hangul]{%
+    \let\xpg at korean@captions\xpg at nr
 }
 % swapstrings: all (0), headings (1), headers (2), or none (3)
 \newif\if at korean@swapheadings
 \newif\if at korean@swapheaders
-\define at choicekey*+{korean}{swapstrings}[\val\nr]{all,headings,headers,none}[all]{%
-   \ifcase\nr\relax
+\define at choicekey*+{korean}{swapstrings}[\xpg at val\xpg at nr]{all,headings,headers,none}[all]{%
+   \ifcase\xpg at nr\relax
       % all:
       \@korean at swapheadingstrue%
       \@korean at swapheaderstrue%
@@ -43,7 +43,7 @@
       \@korean at swapheadingsfalse%
       \@korean at swapheadersfalse%
    \fi
-   \xpg at info{Option: Korean, swapstrings=\val}%
+   \xpg at info{Option: Korean, swapstrings=\xpg at val}%
 }{\xpg at warning{Unknown Korean swapstrings value `#1'}}
 
 % Register default options

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-kurdish.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-kurdish.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-kurdish.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -34,8 +34,8 @@
 
 \newif\if at kurdish@kurmanji
 \def\kurdish at variant{sorani}
-\define at choicekey*+{kurdish}{variant}[\val\nr]{sorani,kurmanji}[sorani]{%
-   \ifcase\nr\relax
+\define at choicekey*+{kurdish}{variant}[\xpg at val\xpg at nr]{sorani,kurmanji}[sorani]{%
+   \ifcase\xpg at nr\relax
       % sorani:
       \def\kurdish at variant{sorani}%
       \@kurdish at kurmanjifalse%
@@ -45,13 +45,13 @@
       \@kurdish at kurmanjitrue%
    \fi
    \kurdish at set@variety%
-   \xpg at info{Option: kurdish, variant=\val}%
+   \xpg at info{Option: kurdish, variant=\xpg at val}%
 }{\xpg at warning{Unknown Kurdish variant `#1'}}
 
 \newif\if at kurdish@latin
 \newif\if at kurdish@arabic
-\define at choicekey*+{kurdish}{script}[\val\nr]{Arabic,Latin}{%
-   \ifcase\nr\relax
+\define at choicekey*+{kurdish}{script}[\xpg at val\xpg at nr]{Arabic,Latin}{%
+   \ifcase\xpg at nr\relax
       % Arabic:
       \@kurdish at latinfalse%
       \@kurdish at arabictrue%
@@ -61,7 +61,7 @@
       \@kurdish at arabicfalse%
    \fi
    \kurdish at set@variety%
-   \xpg at info{Option: kurdish, script=\val}%
+   \xpg at info{Option: kurdish, script=\xpg at val}%
 }{\xpg at warning{Unknown Kurdish script `#1'}}
 
 

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -1,4 +1,4 @@
-\ProvidesFile{gloss-latin.ldf}[polyglossia: module for Latin v.2.2 2020-01-03]
+\ProvidesFile{gloss-latin.ldf}[polyglossia: module for Latin v.2.3 2020-03-08]
 
 \ExplSyntaxOn
 
@@ -100,9 +100,10 @@
             \str_case:Vn \l_polyglossia_latin_variant_str
               {
                 {classic}      {
-                                 \str_if_eq:nnTF{#1}{liturgicallatin}
-                                     { \adddialect \l at classiclatin { \use:c {l@#1} } }
-                                     {}
+                                 \str_if_eq:nnF {#1} {classiclatin}
+                                   {
+                                     \adddialect \l at classiclatin  { \use:c {l@#1} }
+                                   }
                                }
                 {medieval}     { \adddialect \l at medievallatin { \use:c {l@#1} } }
                 {modern}       { \adddialect \l at latin { \use:c {l@#1} } }
@@ -308,10 +309,15 @@
 
 %%%%% Messages and commands concerning footnotes
 
-\cs_if_exist:NT \@makefntext
-  {
-    \cs_set_eq:NN \polyglossia_latin_original_footnote:n \@makefntext
-  }
+% Save original footnote definition
+% Do this at the end of the preamble to catch other
+% packages' footnote changes (#391)
+\AtEndPreamble{%
+  \cs_if_exist:NT \@makefntext
+    {
+      \cs_set_eq:NN \polyglossia_latin_original_footnote:n \@makefntext
+    }
+}
 
 % This is the footnote style as defined by the "ecclesiastic" package.
 \cs_new:Npn \polyglossia_latin_variant_footnote:n #1
@@ -614,9 +620,12 @@
 \shorthandoff {^}
 \shorthandoff {=}
 
-% The active '=' character may cause problems with key=value interfaces.
+% The active = character may cause problems with key=value interfaces.
 % We have to make sure here that no problems can occur outside a Latin
 % prosodic shorthand environment.
+% The active ' character may cause problems with the unicode-math package
+% (in case Latin is used as a secondary language, see #394). We have to
+% turn it of if Latin is not the main language.
 
 \protected at write \@auxout { } { \shorthandoff {=} } % for the aux file
 
@@ -631,9 +640,13 @@
       }
       {
         % The following command should not be called if the main language
-        % defines a '=' shorthand. However, there are no languages besides
+        % defines a = shorthand. However, there are no languages besides
         % Latin defining such a shorthand in polyglossia.
         \shorthandoff {=}
+        % The following command should not be called if the main language
+        % defines a ' shorthand. However, there are no languages besides
+        % Latin defining such a shorthand in polyglossia.
+        \shorthandoff {'}
       }
   }
 
@@ -651,6 +664,9 @@
             \polyglossia_latin_apply_quotemark:N
           }
       }
+    % The ' shorthand is normally turned off to avoid problems with the unicode-math
+    % package. We have to turn it on here.
+    \shorthandon {'}
     \bbl at activate {'}
     \declare at shorthand {latin} {'}
       {
@@ -657,6 +673,9 @@
         \mode_if_math:TF
           {
             \active at math@prime % defined in "latex.ltx"
+            % This definition is differing from the primes of the unicode-math package.
+            % TO DO: Make sure that the appearance of primes is the same as with the
+            % unicode-math package if this package is loaded.
           }
           {
             \polyglossia_latin_put_acute:N
@@ -927,7 +946,9 @@
 
 \def \noextras at latin
   {
-    \polyglossia_latin_no_shorthands:
+    \iflatin at babelshorthands
+      \polyglossia_latin_no_shorthands:
+    \fi
     \xpgla at savedvalues
     \polyglossia_latin_no_punctuation_spacing:
     \polyglossia_latin_modern_character_codes:

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-malay.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-malay.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-malay.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -25,8 +25,8 @@
 \providebool{malay at melayu}
 \malay at melayufalse
 \def\malay at variant{malay}
-\define at choicekey*+{malay}{variant}[\val\nr]{indonesian,malaysian}[malaysian]{%
-   \ifcase\nr\relax
+\define at choicekey*+{malay}{variant}[\xpg at val\xpg at nr]{indonesian,malaysian}[malaysian]{%
+   \ifcase\xpg at nr\relax
       % indonesian:
       \def\malay at variant{indonesian}%
       \malay at melayufalse
@@ -72,7 +72,7 @@
         }%
       }%
    \fi
-   \xpg at info{Option: malay, variant=\val}%
+   \xpg at info{Option: malay, variant=\xpg at val}%
 }{\xpg at warning{Unknown malay variant `#1'}}
 
 % Register default options

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -29,8 +29,8 @@
 \newif\ifmarathi at devanagari@numerals
 \marathi at devanagari@numeralstrue
 
-\define at choicekey*+{marathi}{numerals}[\val\nr]{Western,Devanagari}[Devanagari]{%
-   \ifcase\nr\relax
+\define at choicekey*+{marathi}{numerals}[\xpg at val\xpg at nr]{Western,Devanagari}[Devanagari]{%
+   \ifcase\xpg at nr\relax
       % Western:
       \marathi at devanagari@numeralsfalse%
    \or
@@ -37,7 +37,7 @@
       % Devanagari:
       \marathi at devanagari@numeralstrue%
    \fi
-   \xpg at info{Option: Marathi, numerals=\val}%
+   \xpg at info{Option: Marathi, numerals=\xpg at val}%
 }{\xpg at warning{Unknown Marathi numerals value `#1'}}
 
 % Register default options

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-mongolian.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-mongolian.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-mongolian.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -26,8 +26,8 @@
 
 \newif\ifcyrillic at numerals
 \newif\ifcyrillic at asbuk@numerals
-\define at choicekey*+{mongolian}{numerals}[\val\nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
-   \ifcase\nr\relax
+\define at choicekey*+{mongolian}{numerals}[\xpg at val\xpg at nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
+   \ifcase\xpg at nr\relax
       % arabic:
       \cyrillic at numeralsfalse%
       \cyrillic at asbuk@numeralsfalse%
@@ -44,7 +44,7 @@
       \cyrillic at numeralstrue%
       \cyrillic at asbuk@numeralstrue%
    \fi
-   \xpg at info{Option: Mongolian, numerals=\val}%
+   \xpg at info{Option: Mongolian, numerals=\xpg at val}%
 }{\xpg at warning{Unknown Mongolian numerals value `#1'}}
 
 \define at boolkey{mongolian}[mongolian@]{babelshorthands}[true]{}

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-norwegian.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-norwegian.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-norwegian.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -16,8 +16,8 @@
 \setlanguagealias[variant=nynorsk]{norwegian}{nynorsk}
 
 \def\norwegian at variant{nynorsk}
-\define at choicekey*+{norwegian}{variant}[\val\nr]{nynorsk,bokmal}[nynorsk]{%
-   \ifcase\nr\relax
+\define at choicekey*+{norwegian}{variant}[\xpg at val\xpg at nr]{nynorsk,bokmal}[nynorsk]{%
+   \ifcase\xpg at nr\relax
       % nynorsk:
       \def\norwegian at variant{nynorsk}%
       \SetLanguageKeys{norwegian}{langtag=NYN,babelname=nynorsk,bcp47=nn}%
@@ -28,7 +28,7 @@
       \SetLanguageKeys{norwegian}{langtag=NOR,babelname=norsk,bcp47=nb}%
       \xpg at fontsetup@latin{norwegian}%
    \fi
-   \xpg at info{Option: norwegian, variant=\val}%
+   \xpg at info{Option: norwegian, variant=\xpg at val}%
 }{\xpg at warning{Unknown norwegian variant `#1'}}
 
 

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-portuguese.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-portuguese.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-portuguese.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -19,8 +19,8 @@
 \setlanguagealias[variant=brazilian]{portuguese}{brazil}
 
 \def\portuguese at variant{portuges}
-\define at choicekey*+{portuguese}{variant}[\val\nr]{portuguese,brazilian}[portuguese]{%
-   \ifcase\nr\relax
+\define at choicekey*+{portuguese}{variant}[\xpg at val\xpg at nr]{portuguese,brazilian}[portuguese]{%
+   \ifcase\xpg at nr\relax
       % portuguese:
       \def\portuguese at variant{portuges}%
       \SetLanguageKeys{portuguese}{babelname=portuges,bcp47=pt-PT}%
@@ -33,7 +33,7 @@
 	      I will use the standard patterns for Portuguese instead}%
 	    \adddialect\l at brazil\l at portuges\relax}%
    \fi
-   \xpg at info{Option: portuguese, variant=\val}%
+   \xpg at info{Option: portuguese, variant=\xpg at val}%
 }{\xpg at warning{Unknown portuguese variant `#1'}}
 
 

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -38,8 +38,8 @@
 
 \newif\ifcyrillic at numerals
 \newif\ifcyrillic at asbuk@numerals
-\define at choicekey*+{russian}{numerals}[\val\nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
-   \ifcase\nr\relax
+\define at choicekey*+{russian}{numerals}[\xpg at val\xpg at nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
+   \ifcase\xpg at nr\relax
       % arabic:
       \cyrillic at numeralsfalse%
       \cyrillic at asbuk@numeralsfalse%
@@ -56,7 +56,7 @@
       \cyrillic at numeralstrue%
       \cyrillic at asbuk@numeralstrue%
    \fi
-   \xpg at info{Option: Russian, numerals=\val}%
+   \xpg at info{Option: Russian, numerals=\xpg at val}%
 }{\xpg at warning{Unknown Russian numerals value `#1'}}
 
 \define at boolkey{russian}[russian@]{indentfirst}[true]{

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-sami.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-sami.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-sami.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -19,8 +19,8 @@
 
 % TODO: Add other Sami varieties
 \def\sami at variant{northern}
-%\define at choicekey*+{sami}{variant}[\val\nr]{northern}[nothern]{%
-%   \ifcase\nr\relax
+%\define at choicekey*+{sami}{variant}[\xpg at val\xpg at nr]{northern}[nothern]{%
+%   \ifcase\xpg at nr\relax
 %      % northern:
 %      \def\sami at variant{samin}%
 %      \SetLanguageKeys{sami}{language=Northern Sami,langtag=NSM}%
@@ -31,7 +31,7 @@
 %      \SetLanguageKeys{sami}{language= Sami,langtag=}%
 %      \xpg at fontsetup@latin{sami}%
 %   \fi
-%   \xpg at info{Option: sami, variant=\val}%
+%   \xpg at info{Option: sami, variant=\xpg at val}%
 %}{\xpg at warning{Unknown sami variant `#1'}}
 
 

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -62,8 +62,8 @@
 
 \newif\ifsanskrit at devanagari@numerals
 \sanskrit at devanagari@numeralstrue
-\define at choicekey*+{sanskrit}{numerals}[\val\nr]{Devanagari,Western}[Devanagari]{%
-   \ifcase\nr\relax
+\define at choicekey*+{sanskrit}{numerals}[\xpg at val\xpg at nr]{Devanagari,Western}[Devanagari]{%
+   \ifcase\xpg at nr\relax
       % Devanagari:
       \sanskrit at devanagari@numeralstrue%
    \or
@@ -70,7 +70,7 @@
       % Western:
       \sanskrit at devanagari@numeralsfalse%
    \fi
-   \xpg at info{Option: Sanskrit, numerals=\val}%
+   \xpg at info{Option: Sanskrit, numerals=\xpg at val}%
 }{\xpg at warning{Unknown Sanskrit numeral `#1'}}
 
 

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-serbian.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-serbian.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-serbian.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -27,8 +27,8 @@
 \setlanguagealias[script=Cyrillic]{serbian}{serbianc}
 
 \newif\if at serbian@cyr
-\define at choicekey*+{serbian}{Script}[\val\nr]{cyrillic,latin}[cyrillic]{%
-   \ifcase\nr\relax
+\define at choicekey*+{serbian}{Script}[\xpg at val\xpg at nr]{cyrillic,latin}[cyrillic]{%
+   \ifcase\xpg at nr\relax
       % cyrillic:
       \@serbian at cyrtrue
       \SetLanguageKeys{serbian}{scripttag=cyrl,script=Cyrillic,babelname=serbianc,bcp47=sr-Cyrl}
@@ -41,7 +41,7 @@
       %TODO \def\serbian at language{\language=\l at serbianlat}%
       % or should we use Croatian patterns as a fallback for the time being???
    \fi
-   \xpg at info{Option: Serbian, script=\val}%
+   \xpg at info{Option: Serbian, script=\xpg at val}%
 }{\xpg at warning{Unknown Serbian script `#1'}}
 
 \define at key{serbian}{script}[Cyrillic]{\setkeys{serbian}{Script=#1}}
@@ -48,8 +48,8 @@
 
 \newif\ifcyrillic at numerals
 \newif\ifcyrillic at asbuk@numerals
-\define at choicekey*+{serbian}{numerals}[\val\nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
-   \ifcase\nr\relax
+\define at choicekey*+{serbian}{numerals}[\xpg at val\xpg at nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
+   \ifcase\xpg at nr\relax
       % arabic:
       \cyrillic at numeralsfalse%
       \cyrillic at asbuk@numeralsfalse%
@@ -66,7 +66,7 @@
       \cyrillic at numeralstrue%
       \cyrillic at asbuk@numeralstrue%
    \fi
-   \xpg at info{Option: Serbian, numerals=\val}%
+   \xpg at info{Option: Serbian, numerals=\xpg at val}%
 }{\xpg at warning{Unknown Serbian numerals value `#1'}}
 
 \setkeys{serbian}{Script,numerals}
@@ -187,7 +187,7 @@
 \def\serbian at numbers{%
    \let\latin at alph\@alph
    \let\latin at Alph\@Alph
-   \ifserbian at numerals
+   \ifcyrillic at numerals
      \def\serbian at alph##1{\expandafter\serbiannumeral\expandafter{\the##1}}%
      \def\serbian at Alph##1{\expandafter\Serbiannumeral\expandafter{\the##1}}%
       \let\@alph\serbian at alph%
@@ -201,11 +201,11 @@
 }
 
 \def\blockextras at serbian{%
-   \ifserbian at numerals\serbian at numbers\fi
+   \ifcyrillic at numerals\serbian at numbers\fi
 }
  
 \def\noextras at serbian{%
-   \ifserbian at numerals\noserbian at numbers\fi
+   \ifcyrillic at numerals\noserbian at numbers\fi
 }
 
 \def\Asbuk#1{\expandafter\serbian at asbuk@Alph\csname c@#1\endcsname}

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-sorbian.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-sorbian.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-sorbian.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -22,8 +22,8 @@
 \setlanguagealias[variant=upper]{sorbian}{uppersorbian}
 
 \def\sorbian at variant{usorbian}
-\define at choicekey*+{sorbian}{variant}[\val\nr]{upper,lower}[upper]{%
-   \ifcase\nr\relax
+\define at choicekey*+{sorbian}{variant}[\xpg at val\xpg at nr]{upper,lower}[upper]{%
+   \ifcase\xpg at nr\relax
       % upper:
       \def\sorbian at variant{usorbian}%
       \SetLanguageKeys{sorbian}{language=Upper Sorbian,langtag=USB,babelname=uppersorbian,bcp47=hsb}%
@@ -64,7 +64,7 @@
         }
      }%
    \fi
-   \xpg at info{Option: sorbian, variant=\val}%
+   \xpg at info{Option: sorbian, variant=\xpg at val}%
 }{\xpg at warning{Unknown sorbian variant `#1'}}
 
 

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-spanish.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-spanish.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-spanish.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -22,8 +22,8 @@
 
 \newif\if at spanish@mexico
 \@spanish at mexicofalse
-\define at choicekey*+{spanish}{variant}[\val\nr]{spanish,mexican}[spanish]{%
-   \ifcase\nr\relax
+\define at choicekey*+{spanish}{variant}[\xpg at val\xpg at nr]{spanish,mexican}[spanish]{%
+   \ifcase\xpg at nr\relax
       % spanish:
       \@spanish at mexicofalse%
       \SetLanguageKeys{spanish}{babelname=spanish,bcp47=es-ES}%
@@ -32,7 +32,7 @@
       \@spanish at mexicotrue%
       \SetLanguageKeys{spanish}{babelname=spanishmx,bcp47=es-MX}%
    \fi
-   \xpg at info{Option: spanish, variant=\val}%
+   \xpg at info{Option: spanish, variant=\xpg at val}%
 }{\xpg at warning{Unknown spanish variant `#1'}}
 
 % Localized math operators à la babel
@@ -40,8 +40,8 @@
 \newif\ifspanish at spacedoperators
 \newif\ifspanish at locoperators
 
-\define at choicekey*+{spanish}{spanishoperators}[\val\nr]{all,accented,spaced,none}[all]{%
-   \ifcase\nr\relax
+\define at choicekey*+{spanish}{spanishoperators}[\xpg at val\xpg at nr]{all,accented,spaced,none}[all]{%
+   \ifcase\xpg at nr\relax
       % all:
       \spanish at locoperatorstrue%
       \spanish at accentedoperatorstrue%
@@ -62,7 +62,7 @@
       \spanish at accentedoperatorsfalse%
       \spanish at spacedoperatorsfalse%
    \fi
-   \xpg at info{Option: Spanish, spanishoperators=\val}%
+   \xpg at info{Option: Spanish, spanishoperators=\xpg at val}%
 }{\xpg at warning{Unknown spanishoperators value `#1'}}
 
 

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -22,8 +22,8 @@
 
 \newif\ifcyrillic at numerals
 \newif\ifcyrillic at asbuk@numerals
-\define at choicekey*+{ukrainian}{numerals}[\val\nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
-   \ifcase\nr\relax
+\define at choicekey*+{ukrainian}{numerals}[\xpg at val\xpg at nr]{arabic,cyrillic,cyrillic-trad,cyrillic-alph}[arabic]{%
+   \ifcase\xpg at nr\relax
       % arabic:
       \cyrillic at numeralsfalse%
       \cyrillic at asbuk@numeralsfalse%
@@ -40,7 +40,7 @@
       \cyrillic at numeralstrue%
       \cyrillic at asbuk@numeralstrue%
    \fi
-   \xpg at info{Option: Ukrainian, numerals=\val}%
+   \xpg at info{Option: Ukrainian, numerals=\xpg at val}%
 }{\xpg at warning{Unknown Ukrainian numerals value `#1'}}
 
 

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-welsh.ldf
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-welsh.ldf	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/gloss-welsh.ldf	2020-03-25 21:12:39 UTC (rev 54549)
@@ -13,8 +13,8 @@
 
 \providebool{welsh at formaldate}
 
-\define at choicekey*+{welsh}{date}[\val\nr]{long,short}[short]{%
-   \ifcase\nr\relax
+\define at choicekey*+{welsh}{date}[\xpg at val\xpg at nr]{long,short}[short]{%
+   \ifcase\xpg at nr\relax
       % long:
       \welsh at formaldatetrue
    \or
@@ -21,7 +21,7 @@
       % accented:
       \welsh at formaldatefalse
    \fi
-   \xpg at info{Option: Welsh, date=\val}%
+   \xpg at info{Option: Welsh, date=\xpg at val}%
 }{\xpg at warning{Unknown date value `#1'}}
 
 % Register default options

Modified: trunk/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty	2020-03-25 21:12:10 UTC (rev 54548)
+++ trunk/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty	2020-03-25 21:12:39 UTC (rev 54549)
@@ -1,5 +1,5 @@
 \NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{polyglossia}[2020/01/29 v1.47
+\ProvidesPackage{polyglossia}[2020/03/25 v1.48
   Modern multilingual typesetting with XeLaTeX and LuaLaTeX]
 \RequirePackage{etoolbox}
 \RequirePackage{makecmds}
@@ -301,7 +301,7 @@
   \csdef{#1 at language}{%
     \polyglossia at setup@language at patterns{#1}%
   }%
-  % setup hypenmins
+  % setup hyphenmins
   \exp_args:NNe \clist_set:Nn \l_tmpa_clist
     { \prop_item:Nn \polyglossia at langsetup {#1 / hyphenmins} }
   \cs_if_eq:cNF {l@#1} \l at nohyphenation
@@ -959,34 +959,45 @@
 
 %% ensure localization of \markright and \markboth commands
 %%% THIS IS NOW DISABLED BY DEFAULT
-\newcommand{\local at marks}[1]{}
-\def\enable at local@marks{
+\cs_new_nopar:Nn {\polyglossia at local@marks:n} {}
+\cs_new_nopar:Nn {\polyglossia at enable@local at marks:}
+{
       \xpg at info{Option:~ localmarks}%
-      \def\local at marks##1{%
-         \def\markboth####1####2{%
+      \cs_gset_nopar:Nn \polyglossia at local@marks:n
+      {%
+         \def\xpg at tmp@lang{##1}%
+         \DeclareRobustCommand\markboth[2]{%
             \begingroup
                \let\label\relax \let\index\relax \let\glossary\relax
                \unrestored at protected@xdef\@themark
-         {{\foreignlanguage{##1}{%
-            \protect\@@ensure at maindir{####1}}}%
-          {\foreignlanguage{##1}{%
-      \protect\@@ensure at maindir{####2}}}}%
+               {%
+                {\lowercase{\foreignlanguage{\xpg at tmp@lang}}{\protect\@@ensure at maindir{####1}}}%
+                {\lowercase{\foreignlanguage{\xpg at tmp@lang}}{\protect\@@ensure at maindir{####2}}}%
+               }%
                \@temptokena \expandafter{\@themark}%
                \mark{\the\@temptokena}%
             \endgroup
-            \if at nobreak\ifvmode\nobreak\fi\fi}%
-            \def\markright####1{%
-               \begingroup
-                  \let\label\relax \let\index\relax \let\glossary\relax
-                  \expandafter\@markright\@themark
-      {\foreignlanguage{##1}{\protect\@@ensure at maindir{####1}}}%
-                  \@temptokena \expandafter{\@themark}%
-                  \mark{\the\@temptokena}%
-               \endgroup
-               \if at nobreak\ifvmode\nobreak\fi\fi}%
-            \def\@markright####1####2####3{\@temptokena{\protect\@@ensure at maindir{####1}}%
-               \unrestored at protected@xdef\@themark{{\the\@temptokena}%
-               {\protect\@@ensure at maindir{####3}}}}}%
+            \if at nobreak\ifvmode\nobreak\fi\fi%
+         }%
+         \DeclareRobustCommand\markright[1]{%
+            \begingroup
+               \let\label\relax \let\index\relax \let\glossary\relax
+               \expandafter\@markright\@themark
+               {\lowercase{\foreignlanguage{\xpg at tmp@lang}}{\protect\@@ensure at maindir{####1}}}%
+               \@temptokena \expandafter{\@themark}%
+               \mark{\the\@temptokena}%
+            \endgroup
+            \if at nobreak\ifvmode\nobreak\fi\fi%
+         }%
+% This part seems wrong (see #396 for explanation). Remove after a while.
+%         \def\@markright####1####2####3{%
+%            \@temptokena{\protect\@@ensure at maindir{####1}}%
+%            \unrestored at protected@xdef\@themark{%
+%               {\the\@temptokena}%
+%               {\protect\@@ensure at maindir{####3}}%
+%            }%
+%         }%
+      }%
 }
 
 
@@ -2021,7 +2032,7 @@
    % via babelname (such as biblatex)
    \cs_if_exist_use:c{captions at bbl@\babelname}%
    \cs_if_exist_use:c{date at bbl@\babelname}%
-   \local at marks{#2}%
+   \polyglossia at local@marks:n{#2}%
    \csuse{init at extras@#2}%
    \polyglossia at lang@indentfirst:n{#2}
    \csuse{blockextras@#2}%
@@ -2141,7 +2152,7 @@
   localmarks
      .bool_set:N = \l_polyglossia_localmarks_bool,
   localmarks
-     .default:n = false,
+     .default:n = true,
   % compatibility
   nolocalmarks
      .meta:n = { localmarks = false },
@@ -2171,8 +2182,8 @@
    \gdef\xpg at info#1{\relax}% no polyglossia info
 }
 
-\bool_if:nTF \l_polyglossia_localmarks_bool {} {
-  \enable at local@marks{}
+\bool_if:nTF \l_polyglossia_localmarks_bool {
+  \polyglossia at enable@local at marks:
 }{}
 
 % compatibility



More information about the tex-live-commits mailing list.