diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx | 2054 |
1 files changed, 1068 insertions, 986 deletions
diff --git a/Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx b/Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx index 2adeb09db92..32ca151bc28 100644 --- a/Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx +++ b/Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx @@ -8,7 +8,7 @@ \iffalse %</internal> %<*README> -# THE POLYGLOSSIA PACKAGE v1.66 +# THE POLYGLOSSIA PACKAGE v2.0 ## Multilingual typesetting with XeLaTeX and LuaLaTeX This package provides an alternative to Babel for users of XeLaTeX and LuaLaTeX. @@ -36,8 +36,8 @@ Polyglossia makes it possible to automate the following tasks: # LICENCE -Copyright (c) 2008-2010 François Charette, 2013 Élie Roux, 2011-2023 Arthur Reutenauer, -Copyright (c) 2019-2023 Bastien Roucariès, 2019-2023 Jürgen Spitzmüller, 2023 Udi Fogiel +Copyright (c) 2008-2010 François Charette, 2013 Élie Roux, 2011-2024 Arthur Reutenauer, +Copyright (c) 2019-2023 Bastien Roucariès, 2019-2024 Jürgen Spitzmüller, 2023-2024 Udi Fogiel Except where otherwise noted, Polyglossia is placed under the terms of the MIT licence (https://opensource.org/licenses/MIT). @@ -66,17 +66,17 @@ to track the issues and follow progress. The polyglossia package (C) 2008–2010 François Charette - (C) 2011–2023 Arthur Reutenauer + (C) 2011–2024 Arthur Reutenauer (C) 2013 Elie Roux (C) 2019 Bastien Roucariès - (C) 2019–2023 Jürgen Spitzmüller + (C) 2019–2024 Jürgen Spitzmüller License information appended \endpreamble \postamble - Copyright (C) 2023 by Arthur Reutenauer <arthur 'dot' reutenauer 'at' normalesup 'dot' org> + Copyright (C) 2024 by Arthur Reutenauer <arthur 'dot' reutenauer 'at' normalesup 'dot' org> This work may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 @@ -109,7 +109,6 @@ to track the issues and follow progress. \generate{\file{babelsh.def}{\from{polyglossia.dtx}{babelsh.def}}} \generate{\file{cal-util.def}{\from{polyglossia.dtx}{cal-util.def}}} \generate{\file{xgreek-fixes.def}{\from{polyglossia.dtx}{xgreek-fixes.def}}} -\generate{\file{gloss-latex.lde}{\from{polyglossia.dtx}{gloss-latex.lde}}} \generate{\file{gloss-acadien.ldf}{\from{polyglossia.dtx}{gloss-acadien.ldf}}} \generate{\file{gloss-aeb.ldf}{\from{polyglossia.dtx}{gloss-aeb.ldf}}} \generate{\file{gloss-af.ldf}{\from{polyglossia.dtx}{gloss-af.ldf}}} @@ -276,6 +275,7 @@ to track the issues and follow progress. \generate{\file{gloss-la-x-medieval.ldf}{\from{polyglossia.dtx}{gloss-la-x-medieval.ldf}}} \generate{\file{gloss-la.ldf}{\from{polyglossia.dtx}{gloss-la.ldf}}} \generate{\file{gloss-lao.ldf}{\from{polyglossia.dtx}{gloss-lao.ldf}}} +\generate{\file{gloss-latex.ldf}{\from{polyglossia.dtx}{gloss-latex.ldf}}} \generate{\file{gloss-latin.ldf}{\from{polyglossia.dtx}{gloss-latin.ldf}}} \generate{\file{gloss-latinclassic.ldf}{\from{polyglossia.dtx}{gloss-latinclassic.ldf}}} \generate{\file{gloss-latinecclesiastic.ldf}{\from{polyglossia.dtx}{gloss-latinecclesiastic.ldf}}} @@ -963,11 +963,8 @@ to track the issues and follow progress. % % \begin{itemize} % \item \xpgboolkeyfalse[1.1.1]{babelshorthands} -% Globally activates \pkg{babel} shorthands whenever available. Such shorthands are -% implemented currently for Afrikaans, Belarusian, Catalan, Croatian, -% Czech, Dutch, Finnish, Georgian, German, Italian, Latin, Mongolian, -% Russian, Slovak, and Ukrainian. Please refer to the respective language descriptions -% (sec.~\ref{specific}) for details. +% Globally activates \pkg{babel} shorthands whenever available. +% Please refer to sec.~\ref{shorthands} for details. % % \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 @@ -993,6 +990,43 @@ to track the issues and follow progress. % by \LaTeX, \pkg{fontspec} and \pkg{polyglossia} are output. % \end{itemize} % +% \subsection{Shorthands}\label{shorthands} +% +% \pkg{Babel} has introduced the nifty feature of \enquote{shorthands} for some of the languages +% it supports. +% Shorthands make use of active characters to provide quick access to glyphs and formatting +% peculiarities that are common in a respective language (\eg ¦"a¦ for German umlaut ⟨ä⟩ in case +% this is not available on your keyboard). +% \pkg{Polyglossia} has adopted this feature, we call it \emph{babelshorthands}. +% +% Shorthands need to be activated for the respective language, or can be activated globally, via +% the boolean option \xpgoption{babelshorthands} (either passed globally when loading \pkg{polyglossia} +% or to a specific language when loading it). +% +% Shorthands are implemented currently for Afrikaans, Belarusian, Catalan, Croatian, +% Czech, Dutch, Finnish, Georgian, German, Italian, Latin, Mongolian, Occitan, +% Piedmontese, Polish, Portuguese, Russian, Slovak, and Ukrainian, and their number and function +% differs between these languages. Please refer to the respective language descriptions (sec.~\ref{specific}) +% for detailed elaborations. +% +% If you want to re-use the shorthands defined for a specific language in a different language, +% you can do so by using in preamble:\new{2.0} +% \displaycmd{\inheritbabelshorthands\marg{source language}\marg{target language}}{\inheritbabelshorthands} +% in order to input and activate the shorthands defined for the \meta{source language} in +% the \meta{target language}. Both languages will be loaded as \enquote{other} languages if they have not +% been loaded yet. If one of the languages does not exist, or if the \meta{source language} does not provide any +% shorthands, you will get an error message. +% +% Note, also, that you can only use \cmd{\inheritbabelshorthands} once per language. Subsequent +% calls will overwrite previous ones (and also the shorthand that might be defined for a +% \meta{target language} in the first place). +% +% If you want to enable the shorthands of a specific language inline, also when the language itself +% is not active (but loaded in the preamble), you can do so by means of\new{2.0} +% \displaycmd{\usebabelshorthands\marg{language}}{\usebabelshorthands} +% The effect of this is local to groups. If you want to disable any active shorthands, you can use +% ¦\usebabelshorthands{none}¦. +% % \section{Language-switching commands}\label{languageswitching} % % \subsection{Recommended commands}\label{sec:langcmds} @@ -1090,9 +1124,11 @@ to track the issues and follow progress. % In a similar vein, it is possible to use \Cmd\rmfamilylatin, \Cmd\sffamilylatin, % and \Cmd\ttfamilylatin. % -% \item \Cmd\latinalph: Representation of counter as a lower-case letter: 1 = a, 2 = b, etc. +% \item \DescribeMacro{\latinalph}\cmd{\latinalph\marg{counter}}: Representation of counter as a lower-case letter: +% 1 = a, 2 = b, etc. % -% \item \Cmd\latinAlph: Representation of counter as a upper-case letter: 1 = A, 2 = B, etc. +% \item \DescribeMacro{\latinAlph}\cmd{\latinAlph\marg{counter}}: Representation of counter as a upper-case letter: +% 1 = A, 2 = B, etc. % \end{itemize} % % @@ -1532,23 +1568,37 @@ to track the issues and follow progress. % If this is turned on, the following shorthands for fine-tuning hyphenation % and micro-typography of Finnish words are activated: % \begin{shorthands} -% \item[¦"-¦] adds a hyphenation point that does still allow for hyphenation at the points preset -% in the hyphenation patterns (as opposed to \cmd\-). -% \item[\texttt{"\textasciitilde}] for a hyphen sign without a breakpoint. Useful for -% cases where the hyphen should stick at the following syllable. +% \item[¦"-¦] adds an explicit hyphen without a breakpoint, allowing for hyphenation at the +% other points preset in the hyphenation patterns. Useful for +% cases where the hyphen should stick at the following syllable +% (\eg ¦pakastekaapit ja "-arkut¦). +% \item[\texttt{"=}] for a hyphen sign without a breakpoint that does also remove all other +% breakpoints in the word (as opposed to ¦"-¦). +% \item[\texttt{"\textasciitilde}] functionally equivalent to ¦"-¦ (provided for backwards +% compatibility reasons). % \item[¦"|¦] disables a ligature at this position. % \item[¦""¦] allows for a line break at this position (without hyphenation sign). % \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to \cmd\slash, % hyphenation at the breakpoints preset in the hyphenation patterns is still allowed. % \end{shorthands} -% \item \xpgboolkeyfalse[1.54]{schoolhyphens} -% If this is set to true, alternative (experimental) hyphenation patterns are used rather than the -% default Finnish patterns. These (so-called `School') patterns allow hyphenation at +% \item \xpgchoicekey[2.0]{hyphens}{\xpgpresetvalue{default}, \xpgvalue{babel}, \xpgvalue{school}} +% Hyphenation in Finnish is peculiar since there are many rather long words. In order to select a suitable +% hyphenation pattern, three different options are provided: +% \begin{itemize} +% \item The \xpgvalue{default} patterns as used by \LaTeX\ are rather strict and try to prevent hyphenation +% at points which are valid but considered sub-optimal from an ortho-typographic point of view +% (\eg hyphenation between two vowels), with the drawback that simple words are sometimes not being +% hyphenated at points where this would be valid, and lines might become unevenly spaced. +% \item The \pkg{babel} support for Finnish by default tweaks some hyphenation-related values +% (such as \cmd\hyphenpenalty) for Finnish. If you want to replicate this with \pkg{polyglossia}, +% select \xpgvalue{babel} (this still uses the default patterns). +% \item The \xpgvalue{school} setting, finally, employs alternative (experimental) hyphenation patterns +% rather than the default Finnish patterns. These (so-called `School') patterns allow hyphenation at % all valid points, including hyphenation points that are considered sub-optimal from an -% ortho-typographic point of view (e.\,g., hyphenation between two vowels). -% The default patterns try to prevent such hyphenation, with the drawback that simple words -% are sometimes not being hyphenated at points where this would be valid. +% ortho-typographic point of view.\footnote{This equals the previous boolean option \xpgoption{schoolhyphens}, +% which is still supported for backwards compatibility.} % See \url{https://github.com/hyphenation/basic-finnish} for details. +% \end{itemize} % \end{itemize} % % \subsection{french}\label{french} @@ -1706,6 +1756,11 @@ to track the issues and follow progress. % \eg ¦(pseudo"~)""wissenschaftlich¦. % \item[¦"/¦] a slash that allows for a subsequent line break. As opposed to \cmd\slash, hyphenation at the breakpoints % preset in the hyphenation patterns is still allowed. +% \item[¦"*¦]\new{2.0} An asterisk which assures the word can still be hyphenated at its defined breakpoints. +% Useful if you want to employ gender-sensitive writing (,gender star`). +% Similar shorthands are available for the alternative gender-sensitive spellings, ¦":¦ and ¦"_¦. +% \item[¦"x¦]\new{2.0} Inserts a gender mark which assures the word can still be hyphenated at its defined breakpoints. +% This is predefined to ¦*¦ but can be globally redefined by redefining the macro \cmd\mkgender\ (see below). % \end{shorthands} % % There are also four shorthands for quotation signs: @@ -1716,6 +1771,11 @@ to track the issues and follow progress. % \item[¦">¦] for French-style right double quotes (»). % \end{shorthands} % \end{itemize} +% \paragraph*{Commands:} +% \begin{itemize} +% \item \Cmd\mkgender\new{2.0} Defines which gender mark is output by the babelshorthand ¦"x¦. +% Predefined to ¦\def\mkgender{*}¦. +% \end{itemize} % % \subsection{greek}\label{greek} % \paragraph*{Options:} @@ -3030,7 +3090,45 @@ to track the issues and follow progress. % \section{Revision history} % % \bgroup\footnotesize -% \subsection*{1.66 (2023/12/02)} +% +% \subsection*{2.0 (2024/02/17)} +% +% \subsubsection*{Bug fixes} +% \begin{itemize} +% \item Fix error with undefined property list that unhides with +% \pkg{l3kernel} version 2024-02-13 (\TXI{626}). +% \item Fix \xpgoption{frenchfootnote} option (\TXI{620}). +% \item The error message on improper font setting is now +% correct if the main script is non-Latin, for +% non-Roman fonts (\TXI{571}), and specifically for +% the CJK case (\TXI{621}). +% \item Fix expansion of localnumeral (\TXI{622}). +% \end{itemize} +% +% \subsubsection*{New Features} +% \begin{itemize} +% \item Add \cmd{\inheritbabelshorthands} (\TXI{604}). +% \item Add \cmd{\usebabelshorthands}. +% \item Add shorthands for German gender-sensitive writing. +% \item Implement \pkg{babel}-style hyphenation for Finnish. +% \end{itemize} +% +% \subsubsection*{Documentation improvements} +% \begin{itemize} +% \item Fix documentation of Finnish shorthands (\TXI{623}). +% \end{itemize} +% +% \subsubsection*{Internal work} +% \begin{itemize} +% \item The package code has been subjected to a major rewrite. +% Code has been cleaned up, and in general, \pkg{polyglossia} +% more consistently employs \pkg{latex3} now. Note that this is +% an ongoing and yet unfinished project that will continue over +% the next releases. +% \end{itemize} +% +% +% \subsection*{1.66 (2023/12/11)} % % \subsubsection*{Bug fixes} % \begin{itemize} @@ -4102,44 +4200,52 @@ to track the issues and follow progress. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesExplPackage - {polyglossia} {2023/12/11} {v1.66} + {polyglossia} {2024/02/17} {v2.0} {Modern multilingual typesetting with XeLaTeX and LuaLaTeX} + \RequirePackage{etoolbox} \RequirePackage{xkeyval}[2008/08/13] % Will raise error if used with anything else than XeTeX or LuaTeX \RequirePackage{fontspec}[2010/06/08]% v2.0 \RequirePackage{iftex} -% Execute code #3 if package #1 has been loaded already, else -% add to package hook #2 -\cs_new_nopar:Nn \__xpg_at_package_hook:nnn{ - \@ifpackageloaded{#1}{#3}{\AddToHook{#2}{#3}}% -} - \prg_generate_conditional_variant:Nnn \clist_if_in:Nn {Ne} {TF, T, F} % check if needed + % correct a bug in tracklang -\__xpg_at_package_hook:nnn{tracklang}{file/tracklang.sty/after}{% - \@ifpackagelater{tracklang}{2019/08/30}{}{\global\def\AddTrackedLangage{\AddTrackedLanguage}} +\AddToHook{package/tracklang/after}{% + \IfPackageAtLeastTF{tracklang}{2019/08/30} + {} + {\cs_gset_eq:NN \AddTrackedLangage \AddTrackedLanguage} } -%% This is for compatibility with Babel-aware package: -\def\languageshorthands#1{\relax} % this is for scrlttr2 class -\def\bbl@cs#1{\csname bbl@#1\endcsname} +%% The following is for compatibility with Babel-aware package: +% \languageshorthands is provided by babelsh.def, which is +% only loaded by some glosses, but some classes presuppose +% it is there generally. So let's provide a stub: +\ProvideDocumentCommand \languageshorthands { m } {} +% These have to be provided at the end of the preamble \AddToHook{begindocument/before}{ - \let\bbl@set@language\xpg@set@language@aux % for biblatex - \let\bbl@main@language\xpg@main@language % for biblatex - \providecommand\texorpdfstring[2]{#1} % dummy command if hyperref is not loaded + \cs_gset_eq:NN \bbl@set@language \xpg@set@language@aux % for biblatex + \cs_gset_eq:NN \bbl@main@language \xpg@main@language % for biblatex + \ProvideDocumentCommand \texorpdfstring { m m } { #1 } % dummy command if hyperref is not loaded } -\sys_if_engine_luatex:T{ - \RequirePackage{luatexbase} % already included by fontspec, but needed here - \RequireLuaModule{polyglossia} -} +%% when no patterns are available, we use \l@nohyphenation, assigned to 255 +%% (suggestion by Enrico Gregorio) +%% \l@nohyphenation is defined in polyglossia.lua +\sys_if_engine_luatex:TF + { + \RequirePackage{luatexbase} % already included by fontspec, but needed here + \RequireLuaModule{polyglossia} + }{ + \cs_if_free:cT { l@nohyphenation } + { \chardef\l@nohyphenation=255 } + } % Which version of XeTeX do we use? What is the boudary class? 4095 or 255 -\@ifundefined{e@alloc@intercharclass@top} - {\chardef\xpg@boundaryclass=\@cclv} - {\let\xpg@boundaryclass=\e@alloc@intercharclass@top} +\cs_if_exist:cTF { e@alloc@intercharclass@top } + { \let\xpg@boundaryclass=\e@alloc@intercharclass@top } + { \chardef\xpg@boundaryclass=\@cclv } % Useful for getting list of loaded languages and variants. Like babel's bbl@loaded % all language loaded @@ -4153,17 +4259,26 @@ to track the issues and follow progress. % list of loaded languages (bcp-47 id) \clist_new:N \xpg@bcp@loaded -% counter in latin -\def\latinalph#1{\expandafter\latin@alph\csname c@#1\endcsname} -\def\latinAlph#1{\expandafter\latin@Alph\csname c@#1\endcsname} +% output counter as lower-case latin letter +\DeclareExpandableDocumentCommand \latinalph { m } +{ + \exp_args:Nc \latin@alph {c@#1} +} +% output counter as upper-case latin letter +\DeclareExpandableDocumentCommand \latinAlph { m } +{ + \exp_args:Nc \latin@Alph {c@#1} +} +%% Internal hooks % select language hook -\cs_new_nopar:Nn \polyglossia@AtBeginDocument@selectlanguage: {} +\cs_new_nopar:Nn \__xpg_at_begin_document_selectlanguage: {} % \disablehyphenation hook -\cs_new_nopar:Nn \polyglossia@AtBeginDocument@hyphenation: {} +\cs_new_nopar:Nn \__xpg_at_begin_document_hyphenation: {} % hook to be executed at begin of document -\cs_new_nopar:Nn \polyglossia@AtBeginDocument: { +\cs_new_nopar:Nn \__xpg_at_begin_document: +{ % save various command \let\latin@alph\@alph % TODO rename when we have the C locale \let\latin@Alph\@Alph % TODO rename when we have the C locale @@ -4171,22 +4286,25 @@ to track the issues and follow progress. \let\polyglossia@Clang@@arabic\@arabic \let\polyglossia@Clang@arabic\arabic - \xpg@initial@setup + \xpg_initial_setup: % apply \familydefault changes \xpg@set@familydefault } -\AtBeginDocument{ - \polyglossia@AtBeginDocument: +\AddToHook{begindocument}{ + \__xpg_at_begin_document: } % The following needs to go after any \AtBeginDocument (also of packages % loaded after \set[main|other]language -\AfterEndPreamble{ +% Track whether the main language has been set +\bool_new:N \g_xpg_main_lang_set_bool +\AddToHook{begindocument/end}{ % now we have the C locale definition: select the language - \polyglossia@AtBeginDocument@selectlanguage: + \__xpg_at_begin_document_selectlanguage: + \bool_gset_true:N \g_xpg_main_lang_set_bool % If hyphenation disabling has been requested in preamble, do it now - \polyglossia@AtBeginDocument@hyphenation: + \__xpg_at_begin_document_hyphenation: } %% custom message macros @@ -4219,7 +4337,7 @@ to track the issues and follow progress. \xpg@warning{Illegal~ value~ (#1)~ for~ #2}} % error out if lang is not loaded -\cs_new_nopar:Nn \polyglossia@error@iflangnotloaded:n +\cs_new_nopar:Nn \xpg_error_if_lang_not_loaded:n { \seq_if_in:NeF \__xpg_langs_loaded {#1} { @@ -4239,7 +4357,16 @@ to track the issues and follow progress. } \msg_redirect_name:nnn { polyglossia } { languagenolongerloaded } { warning } -% +\msg_new:nnn { polyglossia } { unknownlocalnumeral } +{ + Unknown~ key~ "#1"~ in~ \string\localnumeral. +} + +\msg_new:nnn { polyglossia } { localnumeralemptyvalue } +{ + Keys~ of~ \string\localnumeral~ must~ have~ value. +} + %% use macro if defined, else warn that it is not \cs_new_nopar:Nn \__xpg_use_or_warn:N @@ -4257,12 +4384,12 @@ to track the issues and follow progress. \def\@@ensure@maindir#1{\ifcsundef{@ensure@maindir}{#1}{\@ensure@maindir{#1}}} %% Used by the language definitions files for right-to-left languages -\def\RequireBidi - { +\NewDocumentCommand \RequireBidi {} +{ \sys_if_engine_luatex:TF {\ifx\@onlypreamble\@notprerr\else\RequirePackage{luabidi}\fi} {\ifx\@onlypreamble\@notprerr\else\RequirePackage{bidi}\fi} - } +} % if #1 is LR run #2 else #3 \prg_set_conditional:Nnn \__xpg_if_LR_str:n {p, T, F, TF} @@ -4281,20 +4408,23 @@ to track the issues and follow progress. % (lua)bidi commands to change directionality for paragraphs % and inline text. % overwritten with correct package -\cs_new_nopar:Nn{\polyglossia@setpardirection:n}{ +\cs_new_nopar:Nn \__xpg_set_par_direction:n +{ \__xpg_if_LR_str:nF {#1} { \xpg@error{right-to-left,~ but~ (lua)bidi~ package~ was~ not~ loaded!} } } -\cs_new_nopar:Nn{\polyglossia@settextdirection:n}{ +\cs_new_nopar:Nn \__xpg_set_text_direction:n +{ \__xpg_if_LR_str:nF {#1} { \xpg@error{right-to-left,~ but~ (lua)bidi~ package~ was~ not~ loaded!} } } -\__xpg_at_package_hook:nnn{bidi}{package/bidi/after}{ - \cs_gset_nopar:Nn{\polyglossia@setpardirection:n}{ +\AddToHook{package/bidi/after}{ + \cs_gset_nopar:Nn \__xpg_set_par_direction:n + { \__xpg_if_LR_str:nTF{#1} { \setLR @@ -4303,7 +4433,8 @@ to track the issues and follow progress. \setRL } } - \cs_gset_nopar:Nn{\polyglossia@settextdirection:n}{ + \cs_gset_nopar:Nn \__xpg_set_text_direction:n + { \__xpg_if_LR_str:nTF{#1} { \LRE @@ -4313,8 +4444,9 @@ to track the issues and follow progress. } } } -\__xpg_at_package_hook:nnn{luabidi}{package/luabidi/after}{ - \cs_gset_nopar:Nn{\polyglossia@setpardirection:n}{ +\AddToHook{package/luabidi/after}{ + \cs_gset_nopar:Nn \__xpg_set_par_direction:n + { \__xpg_if_LR_str:nTF{#1} { \setLR @@ -4323,7 +4455,8 @@ to track the issues and follow progress. \setRL } } - \cs_gset_nopar:Nn{\polyglossia@settextdirection:n}{ + \cs_gset_nopar:Nn \__xpg_set_text_direction:n + { \__xpg_if_LR_str:nTF{#1} { \LRE @@ -4358,18 +4491,17 @@ to track the issues and follow progress. %% TODO: localalph = {<alph_csname>,<Alph_csname>} %% TODO: localnumeral = <csname> %% or even better localdigits = {0123456789} for fully automatic setup -\newif\if@xpg@language@really@defined@ \newcommand*\PolyglossiaSetup[2]{ - \polyglossia@keys_define_lang:n{#1} + \__xpg_keys_define_lang:n{#1} \keys_set:nn { polyglossia / #1 } { #2 } - \polyglossia_setup_hyphen:n {#1} + \__xpg_setup_hyphen:n {#1} %define booleans etoolbox style and set defaults %% TODO ? \providetoggle{#1@setup@done}% % we initialize these so that we can use \gappto below \csgdef{init@extras@#1}{} \csgdef{init@noextras@#1}{} % we don't use this yet: remove? % here we do the fontsetup: - \xpg__auto_setupfont:n { #1 } + \__xpg_auto_setupfont:n { #1 } %% TODO? \toggletrue{#1@setup@done} % register base alias \xpg_language_alias { #1 } { #1 } @@ -4388,15 +4520,16 @@ to track the issues and follow progress. % setup hyphennames from a str list of hyphen -\cs_new:Nn \polyglossia_setup_hyphen:n { - \clist_set:Ne{\l_tmpa_clist}{\prop_item:Nn \polyglossia@langsetup {#1 / hyphennames}} +\cs_new:Nn \__xpg_setup_hyphen:n +{ + \clist_set:Ne{\l_tmpa_clist}{\prop_item:Nn \g_xpg_langsetup_prop {#1 / hyphennames}} \providebool{havehyphen} \boolfalse{havehyphen} % for each hyphen in the set until we find one that works \clist_map_inline:Nn \l_tmpa_clist { \ifbool{havehyphen}{}{ % check if language hyphenname is defined - \__xpg_check_if_exist_l@:NF{#1}{ + \__xpg_check_if_exist_l@:nF{#1}{ % if not, first consider nohyphenation \str_if_eq:nnTF{##1}{nohyphenation} { @@ -4433,7 +4566,7 @@ to track the issues and follow progress. } % setup hyphenmins \clist_set:Ne \l_tmpa_clist - { \prop_item:Nn \polyglossia@langsetup {#1 / hyphenmins} } + { \prop_item:Nn \g_xpg_langsetup_prop {#1 / hyphenmins} } \cs_if_eq:cNF {l@#1} \l@nohyphenation { \use:x @@ -4446,8 +4579,9 @@ to track the issues and follow progress. } \newcommand*\polyglossia@setup@language@patterns[1]{ - \ifbool{xpg@hyphenation@disabled}{ - \xdef\xpg@lastlanguage{\the\csname l@#1\endcsname} + \bool_if:NTF \g__xpg_hyphenation_disabled_bool + { + \tl_gset:Ne \g__xpg_lastlanguage_tl {\the\csname l@#1\endcsname} }{ % first, test if \l@#1 exists % without that, \csname l@#1\endcsname will be defined as \relax @@ -4474,15 +4608,16 @@ to track the issues and follow progress. } } -\prop_new:N \polyglossia@langsetup +\prop_new:N \g_xpg_langsetup_prop -\cs_new_protected:Npn \polyglossia@keys_define_lang:n #1 { +\cs_new_protected:Npn \__xpg_keys_define_lang:n #1 +{ \keys_define:nn {polyglossia}{ % the script font #1 / script .code:n = { - \prop_gput:Nnn{\polyglossia@langsetup}{#1/script}{##1} - \prop_gput:Nne{\polyglossia@langsetup}{#1/lcscript} + \prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/script}{##1} + \prop_gput:Nne{\g_xpg_langsetup_prop}{#1/lcscript} {\tl_if_empty:nF{##1}{\str_lowercase:n{##1}}} }, #1 / script @@ -4491,84 +4626,84 @@ to track the issues and follow progress. .initial:n = latin, % the opentype script tag #1 / scripttag - .code:n = {\prop_gput:Nnn{\polyglossia@langsetup}{#1/scripttag}{##1}}, + .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/scripttag}{##1}}, #1 / scripttag .default:n = {}, #1 / scripttag .initial:n = {}, % the language full name #1 / language - .code:n = {\prop_gput:Nnn{\polyglossia@langsetup}{#1/language}{##1}}, + .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/language}{##1}}, #1 / language .value_required:n = true, #1 / language .initial:x = {\str_uppercase:n#1}, % the language tag #1 / langtag - .code:n = {\prop_gput:Nnn{\polyglossia@langsetup}{#1/langtag}{##1}}, + .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/langtag}{##1}}, #1 / langtag .value_required:n = true, #1 / langtag .initial:n = {}, % the BCP-47 tag #1 / bcp47 - .code:n = {\prop_gput:Nnn{\polyglossia@langsetup}{#1/bcp47}{##1}}, + .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47}{##1}}, #1 / bcp47 .value_required:n = true, #1 / bcp47 .initial:n = {}, % the BCP-47 language tag #1 / bcp47-language - .code:n = {\prop_gput:Nnn{\polyglossia@langsetup}{#1/bcp47-language}{##1}}, + .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47-language}{##1}}, #1 / bcp47-language .value_required:n = true, #1 / bcp47-language .initial:n = {}, % the BCP-47 region tag #1 / bcp47-region - .code:n = {\prop_gput:Nnn{\polyglossia@langsetup}{#1/bcp47-region}{##1}}, + .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47-region}{##1}}, #1 / bcp47-region .value_required:n = false, #1 / bcp47-region .initial:n = {}, % the BCP-47 script tag #1 / bcp47-script - .code:n = {\prop_gput:Nnn{\polyglossia@langsetup}{#1/bcp47-script}{##1}}, + .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47-script}{##1}}, #1 / bcp47-script .value_required:n = true, #1 / bcp47-script .initial:n = {}, % the BCP-47 variant tag #1 / bcp47-variant - .code:n = {\prop_gput:Nnn{\polyglossia@langsetup}{#1/bcp47-variant}{##1}}, + .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47-variant}{##1}}, #1 / bcp47-variant .value_required:n = false, #1 / bcp47-variant .initial:n = {}, % the BCP-47 extension-t tag #1 / bcp47-extension-t - .code:n = {\prop_gput:Nnn{\polyglossia@langsetup}{#1/bcp47-extension-t}{##1}}, + .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47-extension-t}{##1}}, #1 / bcp47-extension-t .value_required:n = false, #1 / bcp47-extension-t .initial:n = {}, % the BCP-47 extension-u tag #1 / bcp47-extension-u - .code:n = {\prop_gput:Nnn{\polyglossia@langsetup}{#1/bcp47-extension-u}{##1}}, + .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47-extension-u}{##1}}, #1 / bcp47-extension-u .value_required:n = false, #1 / bcp47-extension-u .initial:n = {}, % the BCP-47 extension-x tag #1 / bcp47-extension-x - .code:n = {\prop_gput:Nnn{\polyglossia@langsetup}{#1/bcp47-extension-x}{##1}}, + .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47-extension-x}{##1}}, #1 / bcp47-extension-x .value_required:n = false, #1 / bcp47-extension-x .initial:n = {}, % the BCP-47 casing alias #1 / bcp47-casing - .code:n = {\prop_gput:Nnn{\polyglossia@langsetup}{#1/bcp47-casing}{##1}}, + .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/bcp47-casing}{##1}}, #1 / bcp47-casing .value_required:n = false, #1 / bcp47-casing @@ -4577,7 +4712,7 @@ to track the issues and follow progress. #1 / hyphennames .code:n = { \clist_set:Nn{\l_tmpa_clist}{##1} - \prop_gput:Nne{\polyglossia@langsetup}{#1/hyphennames}{\clist_use:Nn \l_tmpa_clist {,}} + \prop_gput:Nne{\g_xpg_langsetup_prop}{#1/hyphennames}{\clist_use:Nn \l_tmpa_clist {,}} }, #1 / hyphennames .value_required:n = true, @@ -4590,7 +4725,7 @@ to track the issues and follow progress. {LR}{} {RL}{\RequireBidi} } - {\prop_gput:Nnn{\polyglossia@langsetup}{#1/direction}{##1}} + {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/direction}{##1}} {\xpg@error{Unknown~ direction~ "##1"~ for~ language~ "#1"}} }, #1 / direction @@ -4604,7 +4739,7 @@ to track the issues and follow progress. \int_compare:nNnF { \clist_count:n {##1} } = {2} {\xpg@error{hypenmins~should~be~a~list~of~two~entries,~got~"##1"}} % set prop - \prop_gput:Nnn \polyglossia@langsetup {#1/hyphenmins} {##1} + \prop_gput:Nnn \g_xpg_langsetup_prop {#1/hyphenmins} {##1} }, #1 / hyphenmins .value_required:n = true, @@ -4617,7 +4752,7 @@ to track the issues and follow progress. \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} + \prop_gput:Nnn \g_xpg_langsetup_prop {#1/totalhyphenmin} {##1} }, #1 / totalhyphenmin .value_required:n = false, @@ -4636,35 +4771,35 @@ to track the issues and follow progress. % environment name #1 / envname .code:n = { - \prop_gput:Nnn{\polyglossia@langsetup}{#1/envname}{##1} + \prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/envname}{##1} }, #1/ envname.value_required:n = true, #1/ envname.initial:n = {#1}, % babel name #1 / babelname .code:n = { - \prop_gput:Nnn{\polyglossia@langsetup}{#1/babelname}{##1} + \prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/babelname}{##1} }, #1/ babelname.value_required:n = true, #1/ babelname.initial:n = {#1}, % default numerals #1 / localnumeral . code:n = { - \prop_gput:Nnn{\polyglossia@langsetup}{#1/localnumeral}{##1} - \prop_gput:Nnn{\polyglossia@langsetup}{#1/Localnumeral}{##1} + \prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/localnumeral}{##1} + \prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/Localnumeral}{##1} }, #1 / localnumeral.value_required:n = true, #1 / localnumeral.initial:n = {polyglossia@C@localnumeral}, % uppercased #1 / Localnumeral . code:n = { - \prop_gput:Nnn{\polyglossia@langsetup}{#1/Localnumeral}{##1} + \prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/Localnumeral}{##1} }, #1 / Localnumeral.value_required:n = true, #1 / Localnumeral.initial:n = {polyglossia@C@localnumeral}, % environment define command (by default create the environment) #1 / DefineCommandsCmd - .code:n = {\prop_gput:Nnn{\polyglossia@langsetup}{#1/DefineCommandsCmd}{##1}}, + .code:n = {\prop_gput:Nnn{\g_xpg_langsetup_prop}{#1/DefineCommandsCmd}{##1}}, #1 / DefineCommandsCmd .value_required:n = true, #1 / DefineCommandsCmd @@ -4677,29 +4812,32 @@ to track the issues and follow progress. \polyglossia@Clang@@arabic{#2} } -\tl_new:N \l__xpg_localnumeral_tl -\bool_new:N \l__xpg_localnumeral_bool - -\keys_define:nn { polyglossia / localnumeral } +\cs_new:Npn \__xpg_localnumeral_parse:nn #1 #2 { - lang .choice:, - lang / main .code:n = \tl_set:Nn \l__xpg_localnumeral_tl { \mainlanguagename } , - lang / local .code:n = \tl_set:Nn \l__xpg_localnumeral_tl { \languagename } - \bool_set_true:N \l__xpg_localnumeral_bool , - lang / unknown .code:n = \tl_set:Nn \l__xpg_localnumeral_tl { #1 } , + \str_if_eq:eeF { #1 } { lang } { \msg_error:nnn { polyglossia } { unknownlocalnumeral } { #1 } } + \exp_args:Ne \str_case:nnF { #2 } + { + { local } { } + { main } { \foreignlanguage { \mainlanguagename } } + } + { \foreignlanguage { #2 } } } \cs_new:Npn \__xpg_localnumeral:nnn #1 #2 #3 { - \group_begin: - \keys_set:ne { polyglossia / localnumeral } { #2 } - \bool_if:NF \l__xpg_localnumeral_bool { \foreignlanguage { \l__xpg_localnumeral_tl } } - { \use:c { \prop_item:Ne \polyglossia@langsetup - { \l__xpg_localnumeral_tl / #3 } } { } { #1 } } - \group_end: + \use:e + { + \keyval_parse:nnn + { \msg_error:nnn { polyglossia } { localnumeralemptyvalue } } + { + \__xpg_localnumeral_parse:nn + } { #2 } + } + { \use:c { \prop_item:Ne \g_xpg_langsetup_prop + { \languagename / #3 } } { } { #1 } } } - -\NewDocumentCommand \localnumeral { s ={ lang } O{ local } m } + +\NewExpandableDocumentCommand \localnumeral { s O{ lang=local } m } { \IfBooleanTF { #1 } { @@ -4710,7 +4848,7 @@ to track the issues and follow progress. } } -\NewDocumentCommand \Localnumeral { s ={ lang } O{ local } m } +\NewExpandableDocumentCommand \Localnumeral { s O{ lang=local } m } { \IfBooleanTF { #1 } { @@ -4721,86 +4859,90 @@ to track the issues and follow progress. } } -\cs_new_nopar:Npn \xpg__french_spacing:n #1 +\cs_new_nopar:Npn \__xpg_french_spacing:n #1 { \bool_if:cTF { g__xpg_#1_fs_bool } { \frenchspacing } { \nonfrenchspacing } } -\cs_new_nopar:Npn \xpg__indent_first:n #1 +\cs_new_nopar:Npn \__xpg_indent_first:n #1 { \bool_if:cTF { g__xpg_#1_if_bool } { \french@indent } { \nofrench@indent } } -\cs_new:Nn{\polyglossia@lang@setpardirection:n}{ - \prop_get:NeNTF \polyglossia@langsetup {#1/direction} \l_tmpa_tl +\cs_new:Nn \__xpg_lang_set_par_direction:n +{ + \prop_get:NeNTF \g_xpg_langsetup_prop {#1/direction} \l_tmpa_tl { - \polyglossia@setpardirection:n{\l_tmpa_tl} + \__xpg_set_par_direction:n{\l_tmpa_tl} } { \xpg@error{Could~ not~ retrieve~ key~ direction~ for~ language~ "#1"} - \prop_show:N{\polyglossia@langsetup} + \prop_show:N{\g_xpg_langsetup_prop} } } -\cs_new:Nn{\polyglossia@lang@settextdirection:nn}{ - \prop_get:NeNTF \polyglossia@langsetup {#1/direction} \l_tmpa_tl +\cs_new:Nn \__xpg_lang_set_text_direction:nn +{ + \prop_get:NeNTF \g_xpg_langsetup_prop {#1/direction} \l_tmpa_tl { - \polyglossia@settextdirection:n{\l_tmpa_tl}{#2} + \__xpg_set_text_direction:n{\l_tmpa_tl}{#2} } { \xpg@error{Could~ not~ retrieve~ key~ direction~ for~ language~ "#1"} - \prop_show:N{\polyglossia@langsetup} + \prop_show:N{\g_xpg_langsetup_prop} } } -\def\xpg@lastlanguage{0} +\tl_new:N \g__xpg_lastlanguage_tl +\tl_set:Nn \g__xpg_lastlanguage_tl { 0 } -\providebool{xpg@hyphenation@disabled} -\boolfalse{xpg@hyphenation@disabled} +% Track whether hyphenation is disabled +\bool_new:N \g__xpg_hyphenation_disabled_bool -\def\xpg@disablehyphenation{ - \ifx\@onlypreamble\@notprerr - \xpg@@disablehyphenation - \else - % if this is used in the preamble, we have to postpone - % the execution until the main language has been set (#125). - \cs_gset_nopar:Nn \polyglossia@AtBeginDocument@hyphenation: { - \xpg@@disablehyphenation +\DeclareDocumentCommand \disablehyphenation {} +{ + \bool_if:NTF \g_xpg_main_lang_set_bool + { + \__xpg_disable_hyphenation: + } + { + % we have to postpone the execution until the main language + % has been set (#125). + \cs_gset_nopar:Nn \__xpg_at_begin_document_hyphenation: { + \__xpg_disable_hyphenation: } - \fi + } } -\def\xpg@@disablehyphenation{ - \ifbool{xpg@hyphenation@disabled}{}{ - \booltrue{xpg@hyphenation@disabled} - \xdef\xpg@lastlanguage{\the\language} +\cs_new:Nn \__xpg_disable_hyphenation: +{ + \bool_if:NF \g__xpg_hyphenation_disabled_bool + { + \bool_gset_true:N \g__xpg_hyphenation_disabled_bool + \tl_gset:Ne \g__xpg_lastlanguage_tl { \the\language } % We do not call \xpg@set@hyphenation@patterns here to avoid a warning message. % "nohyphenation" is not listed in language.dat.lua. \language=\l@nohyphenation } } -\def\xpg@enablehyphenation{ - \ifbool{xpg@hyphenation@disabled}{ - \boolfalse{xpg@hyphenation@disabled} - \language=\csname xpg@lastlanguage\endcsname - }{}% +\DeclareDocumentCommand \enablehyphenation {} +{ + \bool_if:NT \g__xpg_hyphenation_disabled_bool + { + \bool_gset_false:N \g__xpg_hyphenation_disabled_bool + \language=\tl_use:N{\g__xpg_lastlanguage_tl} + }% } -\let\disablehyphenation\xpg@disablehyphenation -\let\enablehyphenation\xpg@enablehyphenation - -%\def\xpg@fontsetup#1{\xpg@csifdef@warn{xpg@fontsetup@#1}} -%\def\xpg@fontsetup@none#1{\csgdef{#1@font}{\ifcsdef{#1font}{\csname #1font\endcsname}{}}} %<-- simplistic -%\def\xpg@fontsetup@custom#1{\csuse{#1@font}} - -\cs_new:Npn \xpg__auto_setupfont:n #1 { +\cs_new:Npn \__xpg_auto_setupfont:n #1 +{ \bool_if:cTF { g__xpg_#1_fontsetup_bool } { - \str_if_eq:eeTF{\prop_item:Nn{\polyglossia@langsetup}{#1/lcscript}}{latin} + \str_if_eq:eeTF{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/lcscript}}{latin} {\xpg@fontsetup@latin{#1}} {\xpg@fontsetup@nonlatin{#1}} } @@ -4812,11 +4954,12 @@ to track the issues and follow progress. % add fontfeature Language=#2 to langtag #1 % do nothing if #1 or #2 is empty -\cs_new:Nn \polyglossia@addfontfeature@language:nn { +\cs_new:Nn \__xpg_add_font_feature_language:nn +{ \bool_if:nTF{\tl_if_empty_p:n{#1} || \tl_if_empty_p:n{#2}} { % maybe an error ? - \xpg@warning{Asking~ to~ add~ empty~ feature~to~ latin~ font~ + \xpg@warning{Asking~ to~ add~ empty~ feature~to~ main~ font~ (Language="#2"~ to~ langtag~ "#1")} } { @@ -4840,67 +4983,82 @@ to track the issues and follow progress. } } } -\cs_generate_variant:Nn \polyglossia@addfontfeature@language:nn { on , no, oo , Vn, nV, VV , xn, nx, xx} +\cs_generate_variant:Nn \__xpg_add_font_feature_language:nn { on , no, oo , Vn, nV, VV , xn, nx, xx} % add fontfeature Script=#2 to scripttag #1 % do nothing if #1 or #2 is empty -\cs_new:Nn \polyglossia@addfontfeature@script:nnn { +\cs_new:Nn \__xpg_add_font_feature_script:nnn +{ \bool_if:nTF{\tl_if_empty_p:n{#2} || \tl_if_empty_p:n{#3}} { % maybe an error ? - \xpg@warning{Asking~ to~ add~ empty~ feature~to~ latin~ font + \xpg@warning{Asking~ to~ add~ empty~ feature~to~ main~ font (Script="#3"~ to~ scripttag~ "#2")} } { \fontspec_if_script:nTF{#2} {\addfontfeature{Script=#3}} { - \tl_set:Nn \l_ffamily_tl {} - \tl_set:Nn \l_ffamilysh_tl { #1 } + \tl_set:Nn \xpg_ffamily_tl {} + \tl_set:Nn \xpg_ffamilysh_tl { #1 } \str_if_eq:nnT { #1 } { rm } { - \tl_set:Nn \l_ffamily_tl { roman } - \tl_set:Nn \l_ffamilysh_tl {} + \tl_set:Nn \xpg_ffamily_tl { roman } + \tl_set:Nn \xpg_ffamilysh_tl {} } \str_if_eq:nnT { #1 } { sf } { - \tl_set:Nn \l_ffamily_tl { sans~ serif } + \tl_set:Nn \xpg_ffamily_tl { sans~ serif } } \str_if_eq:nnT { #1 } { tt } { - \tl_set:Nn \l_ffamily_tl { monospace } + \tl_set:Nn \xpg_ffamily_tl { monospace } } + % Strip font family name for error message + % Courtesy of egreg, https://tex.stackexchange.com/a/613996 + \str_set:Nx \xpg_fname_str { \fontname\font } + % Remove all after : + \regex_replace_once:nnN { \:.* } { } \xpg_fname_str + % ... and all after / + \regex_replace_once:nnN { /.* } { } \xpg_fname_str + % ... and brackets + \regex_replace_once:nnN { \[ } { } \xpg_fname_str + \regex_replace_once:nnN { \] } { } \xpg_fname_str + % ... and extensions + \regex_replace_once:nnN { \.[^\.]* \Z } { } \xpg_fname_str + % ... and, finally, quotation marks + \regex_replace_once:nnN { " } { } \xpg_fname_str \xpg@error{ - The~ current~ latin ~ \l_ffamily_tl\space font~ does~ not~ contain~ the~"#3"~ script!\MessageBreak - Please~ define~\csname\tl_if_empty:nF{#3}{\str_lowercase:n#3}font\l_ffamilysh_tl\endcsname~ + The~ current~ main ~ \xpg_ffamily_tl\space font,~ \xpg_fname_str,~ does~ not~ contain~ the~"#3"~ script!\MessageBreak + Please~ define~\csname\tl_if_empty:nF{#3}{\str_lowercase:n{#3}}font\xpg_ffamilysh_tl\endcsname~ with~ \string\newfontfamily\space command } } } } -\cs_generate_variant:Nn \polyglossia@addfontfeature@script:nnn { non , nno, noo , nVn, nnV, nVV , nxn, nnx, nxx} +\cs_generate_variant:Nn \__xpg_add_font_feature_script:nnn { non , nno, noo , nVn, nnV, nVV , nxn, nnx, nxx} \def\xpg@fontsetup@latin#1{ \begingroup \csgdef{#1@font@rm}{ \cs_if_exist_use:cF{#1font}{ \rmfamilylatin - \polyglossia@addfontfeature@language:xx{\prop_item:Nn{\polyglossia@langsetup}{#1/langtag}} - {\prop_item:Nn{\polyglossia@langsetup}{#1/language}} + \__xpg_add_font_feature_language:xx{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/langtag}} + {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}} } } \csgdef{#1@font@sf}{ \cs_if_exist_use:cF{#1fontsf}{ \sffamilylatin - \polyglossia@addfontfeature@language:xx{\prop_item:Nn{\polyglossia@langsetup}{#1/langtag}} - {\prop_item:Nn{\polyglossia@langsetup}{#1/language}} + \__xpg_add_font_feature_language:xx{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/langtag}} + {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}} } } \csgdef{#1@font@tt}{ \cs_if_exist_use:cF{#1fonttt}{ \ttfamilylatin - \polyglossia@addfontfeature@language:xx{\prop_item:Nn{\polyglossia@langsetup}{#1/langtag}} - {\prop_item:Nn{\polyglossia@langsetup}{#1/language}} + \__xpg_add_font_feature_language:xx{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/langtag}} + {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}} } } \endgroup @@ -4912,9 +5070,9 @@ to track the issues and follow progress. \cs_if_exist_use:cF{#1font} { \providetoggle{#1@use@script@font} - \str_if_eq:nnTF{\prop_item:Nn{\polyglossia@langsetup}{#1/script}}{\prop_item:Nn{\polyglossia@langsetup}{#1/language}} + \str_if_eq:nnTF{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/script}}{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}} {\rmfamilylatin} - {\cs_if_exist_use:cTF{\prop_item:Nn{\polyglossia@langsetup}{#1/lcscript} font} + {\cs_if_exist_use:cTF{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/lcscript} font} { \toggletrue{#1@use@script@font} } @@ -4923,12 +5081,12 @@ to track the issues and follow progress. } } \iftoggle{#1@use@script@font}{}{ - \polyglossia@addfontfeature@script:nxx{rm} - {\prop_item:Nn{\polyglossia@langsetup}{#1/scripttag}} - {\prop_item:Nn{\polyglossia@langsetup}{#1/script}} + \__xpg_add_font_feature_script:nxx{rm} + {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/scripttag}} + {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/script}} }% - \polyglossia@addfontfeature@language:xx{\prop_item:Nn{\polyglossia@langsetup}{#1/langtag}} - {\prop_item:Nn{\polyglossia@langsetup}{#1/language}} + \__xpg_add_font_feature_language:xx{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/langtag}} + {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}} }% \def\familytype{rm} }% @@ -4936,9 +5094,9 @@ to track the issues and follow progress. \cs_if_exist_use:cF{#1fontsf} { \providetoggle{#1@use@script@fontsf} - \str_if_eq:nnTF{\prop_item:Nn{\polyglossia@langsetup}{#1/script}}{\prop_item:Nn{\polyglossia@langsetup}{#1/language}} + \str_if_eq:nnTF{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/script}}{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}} {\sffamilylatin} - {\cs_if_exist_use:cTF{\prop_item:Nn{\polyglossia@langsetup}{#1/lcscript} fontsf} + {\cs_if_exist_use:cTF{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/lcscript} fontsf} { \toggletrue{#1@use@script@fontsf} } @@ -4947,12 +5105,12 @@ to track the issues and follow progress. } } \iftoggle{#1@use@script@fontsf}{}{ - \polyglossia@addfontfeature@script:nxx{sf} - {\prop_item:Nn{\polyglossia@langsetup}{#1/scripttag}} - {\prop_item:Nn{\polyglossia@langsetup}{#1/script}} + \__xpg_add_font_feature_script:nxx{sf} + {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/scripttag}} + {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/script}} }% - \polyglossia@addfontfeature@language:xx{\prop_item:Nn{\polyglossia@langsetup}{#1/langtag}} - {\prop_item:Nn{\polyglossia@langsetup}{#1/language}} + \__xpg_add_font_feature_language:xx{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/langtag}} + {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}} }% \def\familytype{sf} }% @@ -4960,9 +5118,9 @@ to track the issues and follow progress. \cs_if_exist_use:cF{#1fonttt} { \providetoggle{#1@use@script@fonttt} - \str_if_eq:nnTF{\prop_item:Nn{\polyglossia@langsetup}{#1/script}}{\prop_item:Nn{\polyglossia@langsetup}{#1/language}} + \str_if_eq:nnTF{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/script}}{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}} {\ttfamilylatin} - {\cs_if_exist_use:cTF{\prop_item:Nn{\polyglossia@langsetup}{#1/lcscript} fonttt} + {\cs_if_exist_use:cTF{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/lcscript} fonttt} { \toggletrue{#1@use@script@fonttt} } @@ -4971,12 +5129,12 @@ to track the issues and follow progress. } } \iftoggle{#1@use@script@fonttt}{}{ - \polyglossia@addfontfeature@script:nxx{tt} - {\prop_item:Nn{\polyglossia@langsetup}{#1/scripttag}} - {\prop_item:Nn{\polyglossia@langsetup}{#1/script}} + \__xpg_add_font_feature_script:nxx{tt} + {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/scripttag}} + {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/script}} } - \polyglossia@addfontfeature@language:xx{\prop_item:Nn{\polyglossia@langsetup}{#1/langtag}} - {\prop_item:Nn{\polyglossia@langsetup}{#1/language}} + \__xpg_add_font_feature_language:xx{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/langtag}} + {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/language}} } \def\familytype{tt} } @@ -4987,71 +5145,42 @@ to track the issues and follow progress. %% ensure localization of \markright and \markboth commands %%% THIS IS NOW DISABLED BY DEFAULT -\cs_new_nopar:Nn {\polyglossia@local@marks:n} {} -\cs_new_nopar:Nn {\polyglossia@enable@local@marks:} +\cs_new_nopar:Nn \__xpg_local_marks:n { } +\cs_new_nopar:Nn \__xpg_enable_local_marks: { - \xpg@info{Option:~ localmarks} - \cs_gset_nopar:Nn \polyglossia@local@marks:n - {% - \def\xpg@tmp@lang{##1} - \DeclareRobustCommand\markboth[2]{ - \begingroup - \let\label\relax \let\index\relax \let\glossary\relax - \unrestored@protected@xdef\@themark - {% - {\lowercase{\foreignlanguage{\xpg@tmp@lang}}{\protect\@@ensure@maindir{####1}}} - {\lowercase{\foreignlanguage{\xpg@tmp@lang}}{\protect\@@ensure@maindir{####2}}} - }% - \@temptokena \expandafter{\@themark} - \mark{\the\@temptokena} - \endgroup - \if@nobreak\ifvmode\nobreak\fi\fi - }% - \DeclareRobustCommand\markright[1]{ - \begingroup - \let\label\relax \let\index\relax \let\glossary\relax - \expandafter\@markright\@themark - {\lowercase{\foreignlanguage{\xpg@tmp@lang}}{\protect\@@ensure@maindir{####1}}} - \@temptokena \expandafter{\@themark} - \mark{\the\@temptokena} - \endgroup - \if@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@maindir{####1}}% -% \unrestored@protected@xdef\@themark{% -% {\the\@temptokena}% -% {\protect\@@ensure@maindir{####3}}% -% }% -% }% - }% + \xpg@info{Option:~ localmarks} + \cs_gset_nopar:Nn \__xpg_local_marks:n + { + \def\xpg@tmp@lang{##1} + \DeclareRobustCommand\markboth[2]{ + \begingroup + \let\label\relax \let\index\relax \let\glossary\relax + \unrestored@protected@xdef\@themark + { + {\lowercase{\foreignlanguage{\xpg@tmp@lang}}{\protect\@@ensure@maindir{####1}}} + {\lowercase{\foreignlanguage{\xpg@tmp@lang}}{\protect\@@ensure@maindir{####2}}} + } + \@temptokena \expandafter{\@themark} + \mark{\the\@temptokena} + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi + } + \DeclareRobustCommand\markright[1]{ + \begingroup + \let\label\relax \let\index\relax \let\glossary\relax + \expandafter\@markright\@themark + {\lowercase{\foreignlanguage{\xpg@tmp@lang}}{\protect\@@ensure@maindir{####1}}} + \@temptokena \expandafter{\@themark} + \mark{\the\@temptokena} + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi + } + } } - -% Easy way out – Arthur, 2012-08-01 -\ifcsdef{newXeTeXintercharclass}{ -% to reset the intercharclass of a character to "normal" -\newXeTeXintercharclass\xpg@normalclass %TODO -}{} - -%% when no patterns are available, we use \l@nohyphenation, assigned to 255 -%% (suggestion by Enrico Gregorio) -\sys_if_engine_luatex:TF - { - \@ifundefined{l@nohyphenation} - {\chardef\l@nohyphenation=\directlua{ - tex.sprint(polyglossia.newloader_loaded_languages.nohyphenation)}\relax - } - {} - } - { - \@ifundefined{l@nohyphenation}{\chardef\l@nohyphenation=255 }{} - } - %we call this macro when a gloss file is not found for a given language \def\xpg@nogloss#1{ - \xpg@warning{Neither~ file~ gloss-#1.ldf~ nor file~ gloss-#1.lde~ exists!\MessageBreak + \xpg@warning{File~ gloss-#1.ldf~ do~ not~ exists!\MessageBreak I~ will~ nevertheless~ try~ to~ use~ hyphenation~ patterns~ for~ #1.} \PolyglossiaSetup{#1}{hyphenmins={2,3},hyphennames={#1},fontsetup=true} % the above amounts to: @@ -5070,96 +5199,39 @@ to track the issues and follow progress. \catcode`\@=\xpg@saved@at@catcode } -%% Load a lde file -\cs_new_nopar:Nn \__xpg_gloss_ext: {lde} -\cs_new_nopar:Ne \__xpg_saved_@pkgextension: {\@pkgextension} - -\msg_new:nnn { polyglossia } { directloadgloss } -{ - You~ should~ not~ load~ directly~ the~ gloss~ file. ~ - You~ must~ use~ `\string\setotherlanguage\{#1\}' or `\string\setmainlanguage\{#1\}'. -} -\msg_redirect_name:nnn { polyglossia } { directloadgloss } { critical } -\NewDocumentCommand{\__xpg_ProvidesLanguageDefinitionExtension_error}{m m m m} -{ - \msg_critical:nn { polyglossia } { directloadgloss } -} -% ProvideExplPackage but for language file -\cs_new_eq:NN \ProvidesLanguageDefinitionExtension \__xpg_ProvidesLanguageDefinitionExtension_error -\cs_new_eq:NN \__xpg_saved_ProvidesExplPackage \ProvidesExplPackage -\NewDocumentCommand{\__xpg_ProvidesLanguageDefinitionExtension}{m m m m} -{ - \__xpg_saved_ProvidesExplPackage{#1}{#2}{#3}{#4} - \cs_gset_eq:NN \@pkgextension \__xpg_saved_@pkgextension: - \cs_gset_eq:NN \ProvidesLanguageDefinitionExtension \__xpg_ProvidesLanguageDefinitionExtension_error -} - - -% wrapper for loading a gle file -\NewDocumentCommand{\RequireLanguageDefinitionExtension}{O{} m} -{ - \cs_gset_eq:NN \__xpg_saved_@pkgextension: \@pkgextension - \cs_gset_eq:NN \__xpg_saved_ProvidesExplPackage \ProvidesExplPackage - \cs_gset_eq:NN \@pkgextension \__xpg_gloss_ext: - \cs_gset_eq:NN \ProvidesLanguageDefinitionExtension \__xpg_ProvidesLanguageDefinitionExtension - \RequirePackage[#1]{gloss-#2} - % be paranoiac restore - \cs_gset_eq:NN \@pkgextension \__xpg_saved_@pkgextension: - \cs_gset_eq:NN \__xpg_ProvidesLanguageDefinitionExtension_error \ProvideLanguageDefinitionExtension -} - % try to load a language file -\cs_new:Nn \polyglossia_load_lang_definition:nn { - \file_if_exist:nTF{gloss-#2.lde} - { - \RequireLanguageDefinitionExtension[#1]{#2} - \setkeys{#2}{#1} - } - { - \file_if_exist:nTF{gloss-#2.ldf} - { - % Temporarily force catcode of ~ to 13 since babelsh.def - % requires it. This is needed particularly with LaTeX3 - % packages which force \ExplSyntaxOn (#425) - \protected\edef\xpg@restore@tilde@catcode{\catcode 126 = \the\catcode 126\relax} - \catcode 126 = 13 - \xpg@input{gloss-#2.ldf} - \setkeys{#2}{#1} - % restore former ~ catcode - \xpg@restore@tilde@catcode - } - { - \xpg@nogloss{#2} - } - } -} -\cs_generate_variant:Nn \polyglossia_load_lang_definition:nn { - ee, ef, en, eo, ex, - fe, ff, fn, fo, fx, - ne, nf, no, nx, - oe, of, on, oo, ox, - xe, xf, xn, xo, xx -} +\cs_new:Nn \__xpg_load_lang_definition:nn { + \file_if_exist:nTF{gloss-#2.ldf} + { + % Temporarily force catcode of ~ to 13 since babelsh.def + % requires it. This is needed particularly with LaTeX3 + % packages which force \ExplSyntaxOn (#425) + \protected\edef\xpg@restore@tilde@catcode{\catcode 126 = \the\catcode 126\relax} + \catcode 126 = 13 + \xpg@input{gloss-#2.ldf} + \setkeys{#2}{#1} + % restore former ~ catcode + \xpg@restore@tilde@catcode + } + { + \xpg@nogloss{#2} + } +} +\cs_generate_variant:Nn \__xpg_load_lang_definition:nn { ee } % load a master language from an alias file \newcommand*\xpg@load@master@language[1] { - \file_if_exist:nTF{gloss-#1.lde} - { - \RequireLanguageDefinitionExtension{#1} - } - { - \xpg@input{gloss-#1.ldf} - } + \xpg@input{gloss-#1.ldf} \seq_if_in:NeF \__xpg_langs_loaded {#1} { % define environment and command if not alias \str_if_eq:eeT {\prop_item:Ne \__xpg_alias {#1/target}} {#1} { - \use:c{\prop_item:Nn{\polyglossia@langsetup} + \use:c{\prop_item:Nn{\g_xpg_langsetup_prop} {#1/DefineCommandsCmd}} {#1} } } - \polyglossia@register@language:nn{}{#1} + \__xpg_register_language:nn{}{#1} \seq_gput_right:Nn \__xpg_langs_loaded {#1} } @@ -5170,14 +5242,14 @@ to track the issues and follow progress. \str_if_eq:eeT {\prop_item:Ne \__xpg_alias {#1/target}} {#1} { \exp_args:Ne - \newenvironment {\prop_item:Nn{\polyglossia@langsetup}{#1/envname}} [1] [] + \NewDocumentEnvironment {\prop_item:Nn{\g_xpg_langsetup_prop}{#1/envname}} { O{} } { - \begin{otherlanguage}[##1]{#1} + \otherlanguage [ ##1 ] { #1 } } { - \end{otherlanguage} + \endotherlanguage } - \exp_args:Nc \newcommand {text#1} [2][] + \exp_args:Nc \NewDocumentCommand {text#1} { O{} m } { \__xpg_textlanguage:een{##1}{#1}{##2} } @@ -5198,7 +5270,7 @@ to track the issues and follow progress. % target to self fall back to language table \str_if_eq:eeTF { \prop_item:Ne \__xpg_alias {#1/target} } { #1 } { - \prop_item:Nn{\polyglossia@langsetup} {#1/#2} + \prop_item:Nn{\g_xpg_langsetup_prop} {#1/#2} } % load alias by recursion { @@ -5232,15 +5304,10 @@ to track the issues and follow progress. % get base language -\cs_new:Nn \xpg_alias_base_lang:n { - \str_if_eq:eeTF { \prop_item:Ne \__xpg_alias {#1/target} } { #1 } - { - #1 - } +\cs_new:Nn \xpg_alias_base_lang:n { - \xpg_alias_base_lang:n { \prop_item:Ne \__xpg_alias {#1/target} } + \prop_item:Ne \__xpg_alias {#1/target} } -} \cs_generate_variant:Nn \xpg_alias_base_lang:n {e} \keys_define:nn { polyglossia/alias } @@ -5302,10 +5369,10 @@ to track the issues and follow progress. } \DeclareDocumentEnvironment { #4 } { } { - \begin{otherlanguage}{#4} + \otherlanguage { #4 } } { - \end{otherlanguage} + \endotherlanguage } } \tl_clear_new:N \__xpg_alias_option_tl @@ -5321,19 +5388,20 @@ to track the issues and follow progress. {#4} } -\cs_new:Nn \polyglossia@register@language:nn { +\cs_new:Nn \__xpg_register_language:nn +{ \clist_if_in:NeF \xpg@loaded {#2}{ \clist_gput_right:Ne \xpg@loaded {#2} } % Register the language options - \polyglossia@set@lang@options:nnn {#2} {#1} {@xpg@set@langvariant} + \__xpg_set_language_options:nnn {#2} {#1} {@xpg@set@langvariant} % register babelname - \prop_get:NeN \polyglossia@langsetup {#2/babelname} \l_tmpa_tl + \prop_get:NeN \g_xpg_langsetup_prop {#2/babelname} \l_tmpa_tl \clist_if_in:NeF \xpg@bloaded {\l_tmpa_tl}{ \clist_gput_right:Ne \xpg@bloaded {\l_tmpa_tl} } % register BCP-47 ID - \prop_get:NeN \polyglossia@langsetup {#2/bcp47} \l_tmpa_tl + \prop_get:NeN \g_xpg_langsetup_prop {#2/bcp47} \l_tmpa_tl \clist_if_in:NeF \xpg@bcp@loaded {\l_tmpa_tl}{ \clist_gput_right:Ne \xpg@bcp@loaded {\l_tmpa_tl} } @@ -5350,21 +5418,21 @@ to track the issues and follow progress. } \seq_if_in:NeF \__xpg_langs_loaded {#2} { - \polyglossia_load_lang_definition:nn{#1}{#2} + \__xpg_load_lang_definition:nn{#1}{#2} % define environment and command if not alias \str_if_eq:eeT {\prop_item:Ne \__xpg_alias {#2/target}} {#2} { - \use:c{\prop_item:Ne{\polyglossia@langsetup} + \use:c{\prop_item:Ne{\g_xpg_langsetup_prop} {#2/DefineCommandsCmd}} {#2} } \seq_gput_right:Ne \__xpg_langs_loaded {#2} } - \exp_args:Nee \polyglossia@set@default@language:nn {\xpg_alias_add_to_option_i:nn{#2}{#1}} + \exp_args:Nee \__xpg_set_default_language:nn {\xpg_alias_add_to_option_i:nn{#2}{#1}} {\xpg_alias_base_lang:n{#2}} } -\cs_new:Nn \polyglossia@set@default@language:nn +\cs_new:Nn \__xpg_set_default_language:nn { \gdef\xpg@main@language{#2} \tl_if_blank:nTF {#1} @@ -5373,16 +5441,16 @@ to track the issues and follow progress. } { % Register the language options - \polyglossia@set@lang@options:nnn {#2} {#1} {@xpg@main@langvariant} + \__xpg_set_language_options:nnn {#2} {#1} {@xpg@main@langvariant} } \csgdef{#2@gvar}{\mainlanguagevariant} %% The following settings are for the default language and script % this tells bidi.sty or luabidi.sty that the document is RTL - \__xpg_if_LR_str:eF{\prop_item:Nn{\polyglossia@langsetup}{#2/direction}} + \__xpg_if_LR_str:eF{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/direction}} { \__xpg_setRTLmain: } - \cs_gset_nopar:Nn \polyglossia@AtBeginDocument@selectlanguage: { + \cs_gset_nopar:Nn \__xpg_at_begin_document_selectlanguage: { \selectbackgroundlanguage{#2} \selectlanguage[#1]{#2}% } @@ -5391,24 +5459,24 @@ to track the issues and follow progress. \cs_gset_nopar:Npn \mainlanguagename {#2} % Store babelname of main language (for external packages such as biblatex) - \cs_gset_nopar:Npe \mainbabelname { \prop_item:Nn \polyglossia@langsetup {#2/babelname} } + \cs_gset_nopar:Npe \mainbabelname { \prop_item:Nn \g_xpg_langsetup_prop {#2/babelname} } % Store babelname of current language (for external packages such as biblatex) \cs_gset_eq:NN \babelname \mainbabelname \cs_gset_eq:cc{#2@gbabelname}{babelname}% % Store BCP-47 ID and subtags of main language: % 1. store main.* (sub)tags - \cs_gset_nopar:cpe {bcp47.main.tag} { \prop_item:Nn \polyglossia@langsetup { #2 / bcp47 } } - \cs_gset_nopar:cpe {bcp47.main.language} { \prop_item:Nn \polyglossia@langsetup { #2 / bcp47-language } } - \cs_gset_nopar:cpe {bcp47.main.region} { \prop_item:Nn \polyglossia@langsetup { #2 / bcp47-region } } - \cs_gset_nopar:cpe {bcp47.main.script} { \prop_item:Nn \polyglossia@langsetup { #2 / bcp47-script } } - \cs_gset_nopar:cpe {bcp47.main.variant} { \prop_item:Nn \polyglossia@langsetup { #2 / bcp47-variant } } - \cs_gset_nopar:cpe {bcp47.main.extension.t} { \prop_item:Nn \polyglossia@langsetup { #2 / bcp47extension-t } } - \cs_gset_nopar:cpe {bcp47.main.extension.u} { \prop_item:Nn \polyglossia@langsetup { #2 / bcp47-extension-u } } - \cs_gset_nopar:cpe {bcp47.main.extension.x} { \prop_item:Nn \polyglossia@langsetup { #2 / bcp47-extension-x } } + \cs_gset_nopar:cpe {bcp47.main.tag} { \prop_item:Nn \g_xpg_langsetup_prop { #2 / bcp47 } } + \cs_gset_nopar:cpe {bcp47.main.language} { \prop_item:Nn \g_xpg_langsetup_prop { #2 / bcp47-language } } + \cs_gset_nopar:cpe {bcp47.main.region} { \prop_item:Nn \g_xpg_langsetup_prop { #2 / bcp47-region } } + \cs_gset_nopar:cpe {bcp47.main.script} { \prop_item:Nn \g_xpg_langsetup_prop { #2 / bcp47-script } } + \cs_gset_nopar:cpe {bcp47.main.variant} { \prop_item:Nn \g_xpg_langsetup_prop { #2 / bcp47-variant } } + \cs_gset_nopar:cpe {bcp47.main.extension.t} { \prop_item:Nn \g_xpg_langsetup_prop { #2 / bcp47extension-t } } + \cs_gset_nopar:cpe {bcp47.main.extension.u} { \prop_item:Nn \g_xpg_langsetup_prop { #2 / bcp47-extension-u } } + \cs_gset_nopar:cpe {bcp47.main.extension.x} { \prop_item:Nn \g_xpg_langsetup_prop { #2 / bcp47-extension-x } } % For casing, we fall back to language if bcp47-casing is not explicitly set - \cs_set_nopar:cpx {tmpcasing} { \prop_item:Ne \polyglossia@langsetup { #2 / bcp47-casing } } + \cs_set_nopar:cpx {tmpcasing} { \prop_item:Ne \g_xpg_langsetup_prop { #2 / bcp47-casing } } \str_if_empty:NTF \tmpcasing - { \cs_gset_nopar:cpe {bcp47.main.casing} { \prop_item:Nn \polyglossia@langsetup {#2 / bcp47-language} } } + { \cs_gset_nopar:cpe {bcp47.main.casing} { \prop_item:Nn \g_xpg_langsetup_prop {#2 / bcp47-language} } } { \cs_gset_nopar:cpe {bcp47.main.casing} { \tmpcasing } } % 2. Store lang (sub)tags \cs_gset_eq:cc {bcp47.tag} {bcp47.main.tag} @@ -5430,11 +5498,6 @@ to track the issues and follow progress. \cs_gset_eq:cc{#2@g.bcp47.extension.u}{bcp47.extension.u} \cs_gset_eq:cc{#2@g.bcp47.extension.x}{bcp47.extension.x} \cs_gset_eq:cc{#2@g.bcp47.casing}{bcp47.casing} - % Set luatex main language - \sys_if_engine_luatex:T - { - \directlua{polyglossia.set_default_language('\luaescapestring{\string#2}')}% - } } \DeclareCommandCopy \setmainlanguage \setdefaultlanguage @@ -5519,14 +5582,14 @@ to track the issues and follow progress. \ifcsundef{#2@gvar}{\def\languagevariant{}}{\def\languagevariant{\csuse{#2@gvar}}} }{ % Register the language options - \polyglossia@set@lang@options:nnn {#2} {#1} {@xpg@set@langvariant} - \cs_set_eq:cc{#2@gvar}{languagevariant} + \__xpg_set_language_options:nnn {#2} {#1} {@xpg@set@langvariant} + \cs_set_eq:cc{#2@var}{languagevariant} }% } \newcommand*{\resetdefaultlanguage}[2][]{ - \polyglossia@reset@default@language:nn + \__xpg_reset_default_language:nn {\xpg_alias_add_to_option_i:nn{#2}{#1}} {\xpg_alias_base_lang:n{#2}} } @@ -5537,56 +5600,56 @@ to track the issues and follow progress. \tl_if_blank:nTF {#1}{ % tag (e.g., en-US) \ifcsundef{#2@g.bcp47.tag}{ - \csedef{bcp47.tag}{ \prop_item:Nn{ \polyglossia@langsetup}{ #2 / bcp47 } } + \csedef{bcp47.tag}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47 } } }{ \csedef{bcp47.tag}{\csuse{#2@g.bcp47.tag}} } % language (e.g., en) \ifcsundef{#2@g.bcp47.language}{ - \csedef{bcp47.language}{ \prop_item:Nn{ \polyglossia@langsetup}{ #2 / bcp47-language } } + \csedef{bcp47.language}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-language } } }{ \csedef{bcp47.language}{\csuse{#2@g.bcp47.language}} } % region (e.g., US) \ifcsundef{#2@g.bcp47.region}{% - \csedef{bcp47.region}{ \prop_item:Nn{ \polyglossia@langsetup}{ #2 / bcp47-region } } + \csedef{bcp47.region}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-region } } }{ \csedef{bcp47.region}{\csuse{#2@g.bcp47.region}}% } % script (e.g., Latn) \ifcsundef{#2@g.bcp47.script}{ - \csedef{bcp47.script}{ \prop_item:Nn{ \polyglossia@langsetup}{ #2 / bcp47-script } } + \csedef{bcp47.script}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-script } } }{ \csedef{bcp47.script}{\csuse{#2@g.bcp47.script}} } % variant (e.g., 1996) \ifcsundef{#2@g.bcp47.variant}{ - \csedef{bcp47.variant}{ \prop_item:Nn{ \polyglossia@langsetup}{ #2 / bcp47-variant } } + \csedef{bcp47.variant}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-variant } } }{ \csedef{bcp47.variant}{\csuse{#2@g.bcp47.variant}} } % extension.t (tranformation) \ifcsundef{#2@g.bcp47.extension.t}{% - \csedef{bcp47.extension.t}{ \prop_item:Nn{ \polyglossia@langsetup}{ #2 / bcp47-extension-t } } + \csedef{bcp47.extension.t}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-extension-t } } }{ \csedef{bcp47.extension.t}{\csuse{#2@g.bcp47.extension.t}} } % extension.u (additional locale information) \ifcsundef{#2@g.bcp47.extension.u}{% - \csedef{bcp47.extension.u}{ \prop_item:Nn{ \polyglossia@langsetup}{ #2 / bcp47-extension-u } } + \csedef{bcp47.extension.u}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-extension-u } } }{ \csedef{bcp47.extension.u}{\csuse{#2@g.bcp47.extension.u}} } % extension.x (private use area) \ifcsundef{#2@g.bcp47.extension.x}{ - \csedef{bcp47.extension.x}{ \prop_item:Nn{ \polyglossia@langsetup}{ #2 / bcp47-extension-x } } + \csedef{bcp47.extension.x}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-extension-x } } }{ \csedef{bcp47.extension.x}{\csuse{#2@g.bcp47.extension.x}} } % casing \ifcsundef{#2@g.bcp47.casing}{ % For casing, we fall back to language if bcp47-casing is not explicitly set - \cs_set_nopar:cpx {tmpcasing} { \prop_item:Ne \polyglossia@langsetup { #2 / bcp47-casing } } + \cs_set_nopar:cpx {tmpcasing} { \prop_item:Ne \g_xpg_langsetup_prop { #2 / bcp47-casing } } \str_if_empty:NTF \tmpcasing { \cs_gset_eq:cc {bcp47.casing} {bcp47.language} } { \csedef{bcp47.casing}{ \tmpcasing } } @@ -5594,25 +5657,25 @@ to track the issues and follow progress. \csedef{bcp47.casing}{\csuse{#2@g.bcp47.casing}} } }{ - \csedef{bcp47.tag}{ \prop_item:Nn{ \polyglossia@langsetup}{ #2 / bcp47 } } - \csedef{bcp47.language}{ \prop_item:Nn{ \polyglossia@langsetup}{ #2 / bcp47-language } } - \csedef{bcp47.region}{ \prop_item:Nn{ \polyglossia@langsetup}{ #2 / bcp47-region } } - \csedef{bcp47.script}{ \prop_item:Nn{ \polyglossia@langsetup}{ #2 / bcp47-script } } - \csedef{bcp47.variant}{ \prop_item:Nn{ \polyglossia@langsetup}{ #2 / bcp47-variant } } - \csedef{bcp47.extension.t}{ \prop_item:Nn{ \polyglossia@langsetup}{ #2 / bcp47-extension-t } } - \csedef{bcp47.extension.u}{ \prop_item:Nn{ \polyglossia@langsetup}{ #2 / bcp47-extension-u } } - \csedef{bcp47.extension.x}{ \prop_item:Nn{ \polyglossia@langsetup}{ #2 / bcp47-extension-x } } + \csedef{bcp47.tag}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47 } } + \csedef{bcp47.language}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-language } } + \csedef{bcp47.region}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-region } } + \csedef{bcp47.script}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-script } } + \csedef{bcp47.variant}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-variant } } + \csedef{bcp47.extension.t}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-extension-t } } + \csedef{bcp47.extension.u}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-extension-u } } + \csedef{bcp47.extension.x}{ \prop_item:Nn{ \g_xpg_langsetup_prop}{ #2 / bcp47-extension-x } } % For casing, we fall back to language if bcp47-casing is not explicitly set - \cs_set_nopar:cpx {tmpcasing} { \prop_item:Ne \polyglossia@langsetup { #2 / bcp47-casing } } + \cs_set_nopar:cpx {tmpcasing} { \prop_item:Ne \g_xpg_langsetup_prop { #2 / bcp47-casing } } \str_if_empty:NTF \tmpcasing { \cs_gset_eq:cc {bcp47.casing} {bcp47.language} } { \csedef{bcp47.casing}{ \tmpcasing } } } } -\cs_new:Nn \polyglossia@reset@default@language:nn +\cs_new:Nn \__xpg_reset_default_language:nn { - \polyglossia@error@iflangnotloaded:n{#2} + \xpg_error_if_lang_not_loaded:n{#2} % disable globalnumbers of previously defined default language \csuse{no\xpg@main@language @globalnumbers} \csuse{noextras@\xpg@main@language}% @@ -5621,7 +5684,7 @@ to track the issues and follow progress. \cs_if_exist_use:c{noextras@bbl@\mainbabelname}% \csuse{init@noextras@\xpg@main@language}% \polyglossia@set@language@name[#1]{#2}% - \__xpg_if_LR_str:eF{\prop_item:Ne{\polyglossia@langsetup}{#2/direction}} + \__xpg_if_LR_str:eF{\prop_item:Ne{\g_xpg_langsetup_prop}{#2/direction}} { \@rlmaintrue\@rl@footnotetrue } @@ -5630,23 +5693,26 @@ to track the issues and follow progress. % Store babelname of current language (for external packages such as biblatex) \tl_if_blank:nTF {#1}{% \ifcsundef{#2@gbabelname}{ - \edef\babelname{\prop_item:Nn{\polyglossia@langsetup}{#2/babelname}} + \edef\babelname{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/babelname}} }{ \edef\babelname{\csuse{#2@gbabelname}} } }{ - \edef\babelname{\prop_item:Nn{\polyglossia@langsetup}{#2/babelname}} + \edef\babelname{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/babelname}} + } + % Store variant + \tl_if_blank:nTF {#1} + { + \cs_gset_nopar:Npn \mainlanguagevariant {} } + { + % Register the language options + \__xpg_set_language_options:nnn {#2} {#1} {@xpg@main@langvariant} + } + \csgdef{#2@gvar}{\mainlanguagevariant} % Store BCP-47 id of current language \__xpg_store_bcp_info:nn {#1}{#2} } -\cs_generate_variant:Nn \polyglossia@reset@default@language:nn { - ee, ef, en, eo, ex, - fe, ff, fn, fo, fx, - ne, nf, no, nx, - oe, of, on, oo, ox, - xe, xf, xn, xo, xx -} % This saves the normalfont for the latin script since we may change normalfont in other scripts \let\normalfontlatin=\normalfont @@ -5758,56 +5824,51 @@ to track the issues and follow progress. \@afterindentfalse } -\cs_new_nopar:Npn \selectbackgroundlanguage #1 -{% - \polyglossia@select@background@language:n {\xpg_alias_base_lang:n{#1}} +\DeclareDocumentCommand \selectbackgroundlanguage { m } +{ + \__xpg_select_background_language:n {\xpg_alias_base_lang:n{#1}} } -\cs_new:Nn \polyglossia@select@background@language:n + +\cs_new:Nn \__xpg_select_background_language:n { - \str_if_eq:eeTF{\prop_item:Nn{\polyglossia@langsetup}{#1/lcscript}}{latin} + \str_if_eq:eeTF{\prop_item:Nn{\g_xpg_langsetup_prop}{#1/lcscript}}{latin} {} {\xpg@set@normalfont{#1}} \csuse{#1@globalnumbers} } -\cs_generate_variant:Nn \polyglossia@select@background@language:n {e} +\cs_generate_variant:Nn \__xpg_select_background_language:n {e} % Declare secondary language #2 with language options #1 \DeclareDocumentCommand \setotherlanguage { O{} m } { \seq_if_in:NeF \__xpg_langs_loaded {#2} { - \polyglossia_load_lang_definition:ee {#1} {#2} + \__xpg_load_lang_definition:ee {#1} {#2} % define environment and command if not alias \str_if_eq:eeT {\prop_item:Ne \__xpg_alias {#2/target}} {#2} { - \use:c{\prop_item:Ne{\polyglossia@langsetup} + \use:c{\prop_item:Ne{\g_xpg_langsetup_prop} {#2/DefineCommandsCmd}} {#2} } - \polyglossia@set@other@language:ee {\xpg_alias_add_to_option_i:nn{#2}{#1}} + \__xpg_set_otherlanguage:ee {\xpg_alias_add_to_option_i:nn{#2}{#1}} {\xpg_alias_base_lang:n{#2}} \seq_gput_right:Ne \__xpg_langs_loaded {#2} } } -\cs_new:Nn \polyglossia@set@other@language:nn +\cs_new:Nn \__xpg_set_otherlanguage:nn { - \polyglossia@register@language:nn{#1}{#2} + \__xpg_register_language:nn{#1}{#2} % If a variant is set, store it. \gdef\otherlanguagevariant{} % Register the language options - \polyglossia@set@lang@options:nnn {#2} {#1} {@xpg@other@langvariant} + \__xpg_set_language_options:nnn {#2} {#1} {@xpg@other@langvariant} \csgdef{#2@gvar}{\otherlanguagevariant} - \prop_get:NeNT \polyglossia@langsetup {#2/babelname} \l_tmpa_tl + \prop_get:NeNT \g_xpg_langsetup_prop {#2/babelname} \l_tmpa_tl { \xdef\otherlanguagebabelname{\l_tmpa_tl} } \cs_gset_eq:cc{#2@gbabelname}{otherlanguagebabelname} } -\cs_generate_variant:Nn \polyglossia@set@other@language:nn { - ee, ef, en, eo, ex, - fe, ff, fn, fo, fx, - ne, nf, no, nx, - oe, of, on, oo, ox, - xe, xf, xn, xo, xx -} +\cs_generate_variant:Nn \__xpg_set_otherlanguage:nn { ee } % Store main language variant for external packages @@ -5820,17 +5881,20 @@ to track the issues and follow progress. \clist_map_function:eN { #1 } \setotherlanguage } -\def\common@language{% FIXME is this really needed??? - \ifbool{xpg@hyphenation@disabled}{ - \xdef\xpg@lastlanguage{\z@} +\cs_set:Nn \xpg_common_language: +{% FIXME is this really needed??? + \bool_if:NTF \g__xpg_hyphenation_disabled_bool + { + \tl_gset:Ne \g__xpg_lastlanguage_tl {\z@} }{ \language=\z@ } \lefthyphenmin=\tw@ \righthyphenmin=\thr@@} -\def\xpg@initial@setup{ - \common@language +\cs_set:Nn \xpg_initial_setup: +{ + \xpg_common_language: } @@ -5851,27 +5915,21 @@ to track the issues and follow progress. % 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}{} +\DeclareEnvironmentCopy { lang } { otherlanguage } % wrapper for foreignlanguage and otherlanguage* \newcommand*\polyglossia@setforeignlanguage[2][]{ \select@@language[#1]{#2} - \polyglossia@register@language:nn{#1}{#2} + \__xpg_register_language:nn{#1}{#2} % Store babelname of current language (for external packages such as biblatex) \tl_if_blank:nTF {#1}{ \ifcsundef{#2@gbabelname}{ - \edef\babelname{\prop_item:Nn{\polyglossia@langsetup}{#2/babelname}} + \edef\babelname{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/babelname}} }{ \edef\babelname{\csuse{#2@gbabelname}} } }{ - \edef\babelname{\prop_item:Nn{\polyglossia@langsetup}{#2/babelname}} + \edef\babelname{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/babelname}} } % Store BCP-47 id of current language \__xpg_store_bcp_info:nn {#1}{#2} @@ -5888,7 +5946,7 @@ to track the issues and follow progress. } % lowercase options before passing to setkeys -\cs_new:Nn \polyglossia@set@keys:nn +\cs_new:Nn \__xpg_set_keys:nn { \xpg@str@lowercase{\xpg@tmp@opts}{#2} \exp_args:Nne \setkeys{#1}{\xpg@tmp@opts} @@ -5898,10 +5956,10 @@ to track the issues and follow progress. % and \text<lang> % #1 option % #2 language -\newcommand{\xpg@otherlanguage}[2][] +\cs_new:Nn \xpg_otherlanguage:nn { - \polyglossia@error@iflangnotloaded:n{#2} - \polyglossia@set@keys:nn{#2}{#1} + \xpg_error_if_lang_not_loaded:n{#2} + \__xpg_set_keys:nn{#2}{#1} \polyglossia@setforeignlanguage[#1]{#2} % Hook for external packages such as biblatex \polyglossia@language@switched @@ -5912,10 +5970,13 @@ to track the issues and follow progress. \cs_if_exist_use:c{inlineextras@bbl@\babelname} } -\renewcommand{\foreignlanguage}[3][] -{ - \__xpg_foreignlanguage:eeen {#1} {#2} {\xpg_alias_base_lang:n{#2}} {#3} -} +\DeclareDocumentCommand { \foreignlanguage } { O{} m m } + { + \__xpg_foreignlanguage:eeen {#1} {#2} {\xpg_alias_base_lang:n{#2}} {#3} + } + +% prevent case changing of language name in \foreignlanguage +\tl_put_right:Nn \l_text_case_exclude_arg_tl { \foreignlanguage } % Direct access to polyglossia@setforeignlanguage % used in captions @@ -5942,7 +6003,7 @@ to track the issues and follow progress. { \cs_set_eq:NN \__xpg_current_matrixlang \l_tmpa_tl } { \cs_set_eq:NN \__xpg_current_matrixlang \mainlanguagename } % Reset the language's/script's font families if the embedding script is latin - \str_if_eq:eeT{\prop_item:Ne{\polyglossia@langsetup}{\__xpg_current_matrixlang/lcscript}}{latin} + \str_if_eq:eeT{\prop_item:Ne{\g_xpg_langsetup_prop}{\__xpg_current_matrixlang/lcscript}}{latin} {\resetfontlatin} % In case a \<lang>font is defined, re-activate that \exp_args:Ne \xpg@set@normalfont{\__xpg_current_matrixlang} @@ -5961,8 +6022,8 @@ to track the issues and follow progress. }{ \__xpg_store_matrixlang: \group_begin: - \xpg@otherlanguage[\xpg_alias_add_to_option_i:nn{#2}{#1}]{#3} - \polyglossia@lang@settextdirection:nn{#3}{#4} + \xpg_otherlanguage:nn{ \xpg_alias_add_to_option_i:nn{#2}{#1} }{ #3 } + \__xpg_lang_set_text_direction:nn{#3}{#4} \group_end: \__xpg_reset_to_matrixlang: } @@ -5971,17 +6032,14 @@ to track the issues and follow progress. % otherlanguage* is the environment equivalent of \foreignlanguage -\expandafter\providecommand\csname otherlanguage*\endcsname{} - -\renewenvironment{otherlanguage*}[2][] -{% - \__xpg_store_matrixlang: - \__xpg_otherlanguage:eee {#1} {#2} {\xpg_alias_base_lang:n{#2}} -} -{ - \egroup - \__xpg_reset_to_matrixlang: -} +\DeclareDocumentEnvironment { otherlanguage* } { O{} m } + { + \__xpg_store_matrixlang: + \__xpg_otherlanguage:eee { #1 } { #2 } { \xpg_alias_base_lang:n { #2 } } + }{ + \group_end: + \__xpg_reset_to_matrixlang: + } % internal wrapper % #1 option @@ -5993,14 +6051,12 @@ to track the issues and follow progress. { \msg_show:nnn { polyglossia } { languagenotloaded } {#2} }{ - \xpg@otherlanguage[\xpg_alias_add_to_option_i:nn{#2}{#1}]{#3} - \polyglossia@lang@settextdirection:nn{#3}% + \xpg_otherlanguage:nn{ \xpg_alias_add_to_option_i:nn{#2}{#1} }{ #3 } + \__xpg_lang_set_text_direction:nn{#3}% \bgroup } } -\cs_generate_variant:Nn \__xpg_otherlanguage:nnn { - eee -} +\cs_generate_variant:Nn \__xpg_otherlanguage:nnn { eee } % use by \text<lang> and \textlang. Equivalent to \foreignlanguage, % except that dates are localized. @@ -6014,7 +6070,7 @@ to track the issues and follow progress. \cs_generate_variant:Nn \__xpg_textlanguage:nnn {een} % Track whether we are in an inline lang (\text...) switch -\bool_new:N \__xpg_inline_lang +\bool_new:N \l__xpg_inline_lang_bool % use by \text<lang> and \textlang. Equivalent to \foreignlanguage, % except that dates are localized. @@ -6031,13 +6087,13 @@ to track the issues and follow progress. { \__xpg_store_matrixlang: \group_begin: - \bool_set_true:N \__xpg_inline_lang - \xpg@otherlanguage[#1]{#3} + \bool_set_true:N \l__xpg_inline_lang_bool + \xpg_otherlanguage:nn{#1}{#3} \csuse{date#3} % This is a hook for external packages which want to access variants % via babelname (such as biblatex) \cs_if_exist_use:c{date@bbl@\babelname} - \polyglossia@lang@settextdirection:nn{#3}{#4} + \__xpg_lang_set_text_direction:nn{#3}{#4} \group_end: \__xpg_reset_to_matrixlang: } @@ -6047,7 +6103,7 @@ to track the issues and follow progress. % Define language-specific hyphenation exceptions \newcommand\pghyphenation[3][]{ \bgroup - \polyglossia@error@iflangnotloaded:n{#2} + \xpg_error_if_lang_not_loaded:n{#2} \setkeys{#2}{#1} \select@@language[#1]{#2} \hyphenation{#3} @@ -6057,6 +6113,7 @@ to track the issues and follow progress. % Hook that other package authors can use % (for instance biblatex): +% Do not rename! \newcommand*{\xpg@hook@setlanguage}{} \def\xpg@pop@language@i#1#2{ @@ -6064,55 +6121,39 @@ to track the issues and follow progress. \xpg@hook@setlanguage \let\emp@langname\@undefined} -\newif\ifxpginauxfile\xpginauxfilefalse - \DeclareDocumentCommand \selectlanguage {s O{} m} -{ - \tl_if_blank:eTF {\xpg_alias_base_lang:n{#3}} { - \ifxpginauxfile - \msg_show:nnn { polyglossia } { languagenolongerloaded } {#3} - \else - \msg_show:nnn { polyglossia } { languagenotloaded } {#3} - \fi - } - { - \polyglossia@select@language:nee {#1} - {\xpg_alias_add_to_option_i:nn{#3}{#2}} - {\xpg_alias_base_lang:n{#3}} + \tl_if_blank:eTF {\xpg_alias_base_lang:n{#3}} + { + \IfBooleanTF { #1 } + { \msg_show:nnn { polyglossia } { languagenolongerloaded } {#3} } + { \msg_show:nnn { polyglossia } { languagenotloaded } {#3} } + }{ + \__xpg_select_language:nee {#1} + { \xpg_alias_add_to_option_i:nn{#3}{#2} } + { \xpg_alias_base_lang:n{#3} } + } } -} -\cs_new:Nn \polyglossia@select@language:nnn +\cs_new:Nn \__xpg_select_language:nnn { - \IfBooleanF {#1} - { - \cs_set_nopar:Npx \xpg@pop@language { \exp_not:N \xpg@pop@language@i {#2} {#3} } - \group_insert_after:N \xpg@pop@language - } % Register the language options - \polyglossia@set@lang@options:nnn {#3} {#2} {@xpg@set@langvariant} - % The starred variant does not write to the aux - \IfBooleanTF#1{% - \xpg@set@language@nonaux[#2]{#3} - } - { - \xpg@set@language@aux[#2]{#3} - } - \sys_if_engine_luatex:T - { - \directlua{polyglossia.select_language('\luaescapestring{\string#3}', - \the\csname l@#3\endcsname)} - } - \polyglossia@register@language:nn{#2}{#3} -} -\cs_generate_variant:Nn \polyglossia@select@language:nnn { - nee, nne + \__xpg_set_language_options:nnn {#3} {#2} {@xpg@set@langvariant} + \IfBooleanTF { #1 } % The starred variant does not write to the aux + { + \xpg@set@language@nonaux[#2]{#3} + }{ + \cs_set_nopar:Npe \xpg@pop@language { \exp_not:N \xpg@pop@language@i {#2} {#3} } + \group_insert_after:N \xpg@pop@language + \xpg@set@language@aux[#2]{#3} + } + \__xpg_register_language:nn{#2}{#3} } +\cs_generate_variant:Nn \__xpg_select_language:nnn { nee, nne } % set lang option #2 for lang #1 -\cs_new:Nn \polyglossia@set@lang@options:nnn +\cs_new:Nn \__xpg_set_language_options:nnn { \tl_if_blank:nF {#2} { @@ -6120,7 +6161,7 @@ to track the issues and follow progress. \clist_map_inline:nn { #2 } { \xpg@parsevariantkeyvalue##1=#3:#1\relax }% - \polyglossia@set@keys:nn{#1}{#2} + \__xpg_set_keys:nn{#1}{#2} } } @@ -6128,7 +6169,7 @@ to track the issues and follow progress. % \iflanguageoption has the info it needs also % for default settings \newcommand*\xpg@initialize@gloss@options[2]{ - \polyglossia@set@lang@options:nnn {#1} {#2} {@xpg@set@langvariant} + \__xpg_set_language_options:nnn {#1} {#2} {@xpg@set@langvariant} } % Record synonymous keyvals such as variant=us and variant=american @@ -6138,6 +6179,8 @@ to track the issues and follow progress. { \prop_new:c {xpg@alias@keyvals@#1@#3} } \prop_put:cnn { xpg@alias@keyvals@#1@#3 } {#2}{#4} + \prop_if_exist:cF { xpg@alias@keyvals@#1@#4 } + { \prop_new:c {xpg@alias@keyvals@#1@#4} } \prop_put:cnn { xpg@alias@keyvals@#1@#4 } {#2}{#3} } @@ -6174,7 +6217,7 @@ to track the issues and follow progress. } -\prg_set_conditional:Npnn \polyglossia@check@option@value:NNN #1#2#3 { p , T , F , TF } +\prg_set_conditional:Npnn \__xpg_check_option_value:NNN #1#2#3 { p , T , F , TF } { \prop_get:cnNTF {xpg@current@options@#1} {#2} \l_tmpa_tl { @@ -6203,8 +6246,9 @@ to track the issues and follow progress. } % Test if option value is set -\newcommand*\iflanguageoption[5]{ - \polyglossia@check@option@value:NNNTF{#1}{#2}{#3}{#4}{#5} +\DeclareDocumentCommand \iflanguageoption { m m m m m } +{ + \__xpg_check_option_value:NNNTF{#1}{#2}{#3}{#4}{#5} } @@ -6216,21 +6260,23 @@ to track the issues and follow progress. } % Test if language is loaded -\newcommand*\iflanguageloaded[3]{ +\DeclareDocumentCommand \iflanguageloaded { m m m } +{ \AddToHook{begindocument/end}{ \clist_if_in:NeTF \xpg@loaded{#1}{#2}{#3} } } % Same for babellanguage is loaded -\newcommand*\ifbabellanguageloaded[3]{ +\DeclareDocumentCommand \ifbabellanguageloaded { m m m } +{ \AddToHook{begindocument/end}{ \clist_if_in:NeTF \xpg@bloaded{#1}{#2}{#3} } } % Same for languageid -\DeclareDocumentCommand \iflanguageidloaded {mmmm} +\DeclareDocumentCommand \iflanguageidloaded { m m m m } { \AddToHook{begindocument/end}{ \str_case:nnTF {#1} @@ -6246,7 +6292,7 @@ to track the issues and follow progress. } % Check if the current font has a given glyph -\prg_new_conditional:Npnn \__polyglossia_if_char:N #1 { TF } +\prg_new_conditional:Npnn \__xpg_if_char:N #1 { TF } { \iffontchar\font\int_from_hex:n { #1 }~ \prg_return_true: @@ -6259,14 +6305,14 @@ to track the issues and follow progress. % and print it, if so, otherwise print the replacement #2 \NewExpandableDocumentCommand \charifavailable { m m } { - \exp_args:Nno \__polyglossia_if_char:NTF { #1 } { \Uchar"#1 } { #2 } + \exp_args:Nno \__xpg_if_char:NTF { #1 } { \Uchar"#1 } { #2 } } % Test if a char (by char code) is available in the current font % if so, do #2, else do #3 -\NewDocumentCommand \IfCharIsAvailableTF { m m m } +\NewExpandableDocumentCommand \IfCharIsAvailableTF { m m m } { - \__polyglossia_if_char:NTF{#1}{#2}{#3} + \__xpg_if_char:NTF { #1 } { #2 } { #3 } } @@ -6279,12 +6325,12 @@ to track the issues and follow progress. % Store babelname of current language (for external packages such as biblatex) \tl_if_blank:nTF {#1}{ \ifcsundef{#2@gbabelname}{ - \edef\babelname{\prop_item:Nn{\polyglossia@langsetup}{#2/babelname}} + \edef\babelname{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/babelname}} }{ \edef\babelname{\csuse{#2@gbabelname}} } }{ - \edef\babelname{\prop_item:Nn{\polyglossia@langsetup}{#2/babelname}} + \edef\babelname{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/babelname}} } % Store BCP-47 id of current language \__xpg_store_bcp_info:nn {#1}{#2} @@ -6296,29 +6342,14 @@ to track the issues and follow progress. \newcommand*{\xpg@set@language@only@aux}[2][]{ % Write to the aux (toc files) \if@filesw - \ifx#1\\\\ - \addtocontents{toc}{\protect\selectlanguage*{#2}} - \else - \addtocontents{toc}{\protect\selectlanguage*[#1]{#2}} - \fi + \addtocontents{toc}{\selectlanguage*[#1]{#2}} \fi } \AtBeginDocument{ - % Tell polyglossia that we are in an aux file - \if@filesw - \addtocontents{toc}{\protect\xpginauxfiletrue} - \addtocontents{lof}{\protect\xpginauxfiletrue} - \addtocontents{lot}{\protect\xpginauxfiletrue} - \fi -} - -\AtEndDocument{ - % Tell polyglossia that we are no longer in an aux file \if@filesw - \addtocontents{toc}{\protect\xpginauxfilefalse} - \addtocontents{lof}{\protect\xpginauxfilefalse} - \addtocontents{lot}{\protect\xpginauxfilefalse} + \immediate\write\@mainaux + {\ProvideDocumentCommand\selectlanguage{sO{}m}{}} \fi } @@ -6330,49 +6361,22 @@ to track the issues and follow progress. \addtocontents{lot}{\protect\setforeignlanguage{\languagename}} } -% 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!}} - }{} -} - % check if language is defined -\prg_set_conditional:Npnn \__xpg_check_if_exist_l@:N #1 { p , T , F , TF }{ - \cs_if_exist:cTF {l@#1} - { - \cs_if_eq:cNTF {l@#1} \l@nohyphenation - { - \prg_return_false: - } - { - % it's possible that sometimes \csname l@#1\endcsname becomes \relax - \cs_if_eq:cNTF {l@#1} \relax - { \prg_return_false: } - { \prg_return_true: } - } - } - { - \prg_return_false: - } -} +\prg_set_conditional:Npnn \__xpg_check_if_exist_l@:n #1 { F, TF } + { + \bool_lazy_and:nnTF + { \cs_if_exist_p:c { l@#1 } } + { ! (\cs_if_eq_p:cc { l@#1 } { l@nohyphenation }) } + { \prg_return_true: } + { \prg_return_false: } + } \def\polyglossia@luatex@load@lang#1{ % if \l@#1 is not properly defined, call lua function newloader(#1), % and assign the returned number to \l@#1 - \__xpg_check_if_exist_l@:NF {#1} + \__xpg_check_if_exist_l@:nF {#1} { - \expandafter\chardef\csname l@#1\endcsname= - \directlua{ tex.sprint(polyglossia.newloader'#1') }\relax + \directlua { token.set_char('l@#1', polyglossia.newloader'#1') } } } @@ -6384,7 +6388,7 @@ to track the issues and follow progress. { \polyglossia@luatex@load@lang{#1} } - \__xpg_check_if_exist_l@:NTF{#1}{#2}{#3} + \__xpg_check_if_exist_l@:nTF{#1}{#2}{#3} } % Set \bbl@hyphendata@\the\language, which is (lua)babel's @@ -6410,20 +6414,20 @@ to track the issues and follow progress. % hook for compatibility with biblatex \select@language{#2} \xpg@set@bbl@hyphendata{\the\language} - \xpg@initial@setup% + \xpg_initial_setup: \select@@language[#1]{#2}% % Hook for external packages such as biblatex \polyglossia@language@switched% - \polyglossia@lang@setpardirection:n{#2} + \__xpg_lang_set_par_direction:n{#2} \csuse{captions#2}% \csuse{date#2}% % These are hooks for external packages which want to access variants % via babelname (such as biblatex) \cs_if_exist_use:c{captions@bbl@\babelname} \cs_if_exist_use:c{date@bbl@\babelname} - \polyglossia@local@marks:n{#2} + \__xpg_local_marks:n{#2} \csuse{init@extras@#2}% - \xpg__indent_first:n { #2 } + \__xpg_indent_first:n { #2 } \csuse{blockextras@#2}% % This is a hook for external packages which want to access variants % via babelname (such as biblatex) @@ -6437,6 +6441,7 @@ to track the issues and follow progress. \def\select@language#1{} % Hook for external packages such as biblatex +% do not rename! \def\polyglossia@language@switched{} % remove all custumization for language #1 @@ -6456,24 +6461,24 @@ to track the issues and follow progress. \noextrascurrent{\languagename} \cs_if_exist_use:c{no\languagename @numbers} \sys_if_engine_xetex:T{ - \__xpg_if_LR_str:eTF{\prop_item:Ne{\polyglossia@langsetup}{\languagename/direction}} + \__xpg_if_LR_str:eTF{\prop_item:Ne{\g_xpg_langsetup_prop}{\languagename/direction}} { - \__xpg_if_LR_str:eF{\prop_item:Nn{\polyglossia@langsetup}{#2/direction}} + \__xpg_if_LR_str:eF{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/direction}} {\setnonlatin} % LTR -> RTL } { - \__xpg_if_LR_str:eT{\prop_item:Nn{\polyglossia@langsetup}{#2/direction}} + \__xpg_if_LR_str:eT{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/direction}} {\setlatin} % RTL -> LTR } } } \polyglossia@set@language@name[#1]{#2} % Set the language's/script's font families - \str_if_eq:eeT{\prop_item:Nn{\polyglossia@langsetup}{#2/lcscript}} {latin} + \str_if_eq:eeT{\prop_item:Nn{\g_xpg_langsetup_prop}{#2/lcscript}} {latin} { \resetfontlatin } - \bool_if:NF \__xpg_inline_lang + \bool_if:NF \l__xpg_inline_lang_bool { % This for non-inline font switches % in case a \<lang>font is defined \xpg@set@normalfont{#2} @@ -6482,7 +6487,7 @@ to track the issues and follow progress. \__xpg_use_or_warn:c{#2@language} \cs_if_exist_use:c{#2@numbers} \use@localhyphenmins[#1]{#2} - \xpg__french_spacing:n { #2 } + \__xpg_french_spacing:n { #2 } } @@ -6493,14 +6498,14 @@ to track the issues and follow progress. % \clist_new:N \l_xpg_lang_stack -\cs_new:Nn \polyglossia@stack@language:nn +\cs_new:Nn \__xpg_stack_language:nn { \clist_gpush:Nn \l_xpg_lang_stack {#1:#2} } -\cs_generate_variant:Nn \polyglossia@stack@language:nn {nx} +\cs_generate_variant:Nn \__xpg_stack_language:nn {nx} -\cs_new:Nn \polyglossia@unstack@language:n +\cs_new:Nn \__xpg_unstack_language:n { \clist_gpop:NNTF \l_xpg_lang_stack \l_tmpa_tl { % Stored format = options:language => split: @@ -6510,7 +6515,7 @@ to track the issues and follow progress. % Execute passed command with language and maybe options % and re-set stored language's keys \tl_if_empty:NTF \l_tmpb_tl {\cs_if_exist_use:c{#1}{\l_tmpc_tl}} - {\polyglossia@set@keys:nn{\l_tmpc_tl}{\l_tmpb_tl} + {\__xpg_set_keys:nn{\l_tmpc_tl}{\l_tmpb_tl} \cs_if_exist_use:c{#1}[\l_tmpb_tl]{\l_tmpc_tl} } } @@ -6521,17 +6526,19 @@ to track the issues and follow progress. { % Get real current (pre-switch) options (incl. defaults) \clist_clear_new:N \l_xpg_current_options + \prop_if_exist:cF { xpg@current@options@\languagename } + { \prop_new:c {xpg@current@options@\languagename} } \prop_map_inline:cn {xpg@current@options@\languagename} { \clist_put_right:Nn \l_xpg_current_options {##1=##2} } % Store current (pre-switch) options and language on stack - \polyglossia@stack@language:nx{\clist_use:Nn \l_xpg_current_options {,}}{\languagename} + \__xpg_stack_language:nx{\clist_use:Nn \l_xpg_current_options {,}}{\languagename} \selectlanguage[#1]{#2} } { % restore previous language in aux file and remove closed one from stack - \polyglossia@unstack@language:n{xpg@set@language@only@aux} + \__xpg_unstack_language:n{xpg@set@language@only@aux} } \newcommand{\setlocalhyphenmins}[3]{ @@ -6552,17 +6559,17 @@ to track the issues and follow progress. \edef\xpg@tmp@opts{\xpg_alias_add_to_option_i:nn{#2}{#1}} \edef\xpg@tmp@lang{\xpg_alias_base_lang:n{#2}} \bgroup - \polyglossia@error@iflangnotloaded:n{\xpg@tmp@lang} - \polyglossia@set@keys:nn{\xpg@tmp@lang}{\xpg@tmp@opts} + \xpg_error_if_lang_not_loaded:n{\xpg@tmp@lang} + \__xpg_set_keys:nn{\xpg@tmp@lang}{\xpg@tmp@opts} % Store bcp47.tag@hypenmins \tl_if_blank:nTF {\xpg@tmp@opts}{% \ifcsundef{\csname xpg@tmp@lang\endcsname @g.bcp47.tag}{ - \csedef{tmp@bcp47.tag}{\prop_item:Ne{\polyglossia@langsetup}{ \xpg@tmp@lang / bcp47 }} + \csedef{tmp@bcp47.tag}{\prop_item:Ne{\g_xpg_langsetup_prop}{ \xpg@tmp@lang / bcp47 }} }{ \csedef{tmp@bcp47.tag}{\csuse{#2@g.bcp47.tag}} } }{ - \csedef{tmp@bcp47.tag}{\prop_item:Ne{\polyglossia@langsetup}{ \xpg@tmp@lang / bcp47 }} + \csedef{tmp@bcp47.tag}{\prop_item:Ne{\g_xpg_langsetup_prop}{ \xpg@tmp@lang / bcp47 }} } \csgdef{\csname tmp@bcp47.tag\endcsname @hyphenmins}{{#3}{#4}} \egroup @@ -6571,17 +6578,17 @@ to track the issues and follow progress. % \use@localhypenmins[options]{lang} \newcommand*\use@localhyphenmins[2][]{ \bgroup - \polyglossia@error@iflangnotloaded:n{#2} - \polyglossia@set@keys:nn{#2}{#1} + \xpg_error_if_lang_not_loaded:n{#2} + \__xpg_set_keys:nn{#2}{#1} % Use bcp47.tag@hypenmins \tl_if_blank:nTF {#1}{ \ifcsundef{#2@g.bcp47.tag}{ - \csxdef{tmp@bcp47.tag}{\prop_item:Nn{\polyglossia@langsetup}{ #2 / bcp47 }} + \csxdef{tmp@bcp47.tag}{\prop_item:Nn{\g_xpg_langsetup_prop}{ #2 / bcp47 }} }{ \csxdef{tmp@bcp47.tag}{\csuse{#2@g.bcp47.tag}} } }{ - \csxdef{tmp@bcp47.tag}{\prop_item:Nn{\polyglossia@langsetup}{ #2 / bcp47 }} + \csxdef{tmp@bcp47.tag}{\prop_item:Nn{\g_xpg_langsetup_prop}{ #2 / bcp47 }} } \egroup \ifcsundef{\csname tmp@bcp47.tag\endcsname @hyphenmins}{ @@ -6595,7 +6602,7 @@ to track the issues and follow progress. } \sys_if_engine_luatex:T{ % Set \totalhyphenmin if specified - \prop_get:NeNTF \polyglossia@langsetup {#2/totalhyphenmin} \l_tmpa_tl + \prop_get:NeNTF \g_xpg_langsetup_prop {#2/totalhyphenmin} \l_tmpa_tl { \xpg@info{totalhyphenmin: '\l_tmpa_tl'} \expandafter\hyphenationmin \l_tmpa_tl @@ -6615,7 +6622,7 @@ to track the issues and follow progress. \edef\xpg@tmp@opts{\xpg_alias_add_to_option_i:nn{#2}{#1}} \edef\xpg@tmp@lang{\xpg_alias_base_lang:n{#2}} % Register the language options - \polyglossia@set@lang@options:nnn {\xpg@tmp@lang} {\xpg@tmp@opts} {@xpg@set@langvariant} + \__xpg_set_language_options:nnn {\xpg@tmp@lang} {\xpg@tmp@opts} {@xpg@set@langvariant} % Now switch patterns \__xpg_use_or_warn:c{\use:c{xpg@tmp@lang}@language} % And activate hyphenmins @@ -6624,10 +6631,10 @@ to track the issues and follow progress. { } \AddToHook{begindocument/before}{ - \@ifpackageloaded{bidi}{ + \IfPackageLoadedTF{bidi}{ \providecommand*{\aemph}[1]{$\overline{\hboxR{#1}}$} }{} - \@ifpackageloaded{luabidi}{ + \IfPackageLoadedTF{luabidi}{ \providecommand*{\aemph}[1]{$\overline{\hbox{\RL{#1}}}$} }{} } @@ -6636,7 +6643,7 @@ to track the issues and follow progress. % keys for main package \keys_define:nn { polyglossia } { verbose - .bool_set:N = \l_polyglossia_verbose_bool, + .bool_set:N = \g_xpg_verbose_bool, verbose .default:n = true, % compatibility @@ -6644,7 +6651,7 @@ to track the issues and follow progress. .meta:n = { verbose = false }, localmarks - .bool_set:N = \l_polyglossia_localmarks_bool, + .bool_set:N = \g_xpg_localmarks_bool, localmarks .default:n = true, % compatibility @@ -6652,12 +6659,12 @@ to track the issues and follow progress. .meta:n = { localmarks = false }, babelshorthands - .bool_set:N = \l_polyglossia_babelshorthands_bool, + .legacy_if_set:n = system@babelshorthands, % compatibility babelshorthands .default:n = true, luatexrenderer - .cs_set:Np = \l_polyglossia_luatex_renderer, + .str_set:N = \g_xpg_luatex_renderer_str, luatexrenderer .value_required:n = true, } @@ -6677,14 +6684,14 @@ to track the issues and follow progress. % Set the LuaTeX renderer. As opposed to fontspec, we use Harfbuzz by default. % This can be changed via the luatexrenderer package option. \sys_if_engine_luatex:T{ - \str_if_eq:eeF{\l_polyglossia_luatex_renderer}{none} + \str_if_eq:eeF{\g_xpg_luatex_renderer_str}{none} { - \xpg@info{Setting~ LuaTeX~ font~ renderer~ to~ \l_polyglossia_luatex_renderer} - \exp_args:Ne \defaultfontfeatures{Renderer=\l_polyglossia_luatex_renderer} + \xpg@info{Setting~ LuaTeX~ font~ renderer~ to~ \g_xpg_luatex_renderer_str} + \exp_args:Ne \defaultfontfeatures{Renderer=\g_xpg_luatex_renderer_str} } } -\bool_if:nF \l_polyglossia_verbose_bool { +\bool_if:nF \g_xpg_verbose_bool { \gdef\@latex@info#1{\relax} % no latex info \gdef\@font@info#1{\relax} % no latex font info \gdef\@font@warning#1{\relax} % no latex font warnings @@ -6692,47 +6699,93 @@ to track the issues and follow progress. \gdef\xpg@info#1{\relax} % no polyglossia info } -\bool_if:nT \l_polyglossia_localmarks_bool { - \polyglossia@enable@local@marks: +\bool_if:nT \g_xpg_localmarks_bool { + \__xpg_enable_local_marks: } % Control shorthand (de-)activation % This checks that the shorthand char is only deactivated % if we have activated it ourselves and hence keeps % activation of other packages if no shorthands are used. -\seq_new:N \__xpg_active_shorthands +\seq_new:N \g__xpg_active_shorthands_seq \DeclareDocumentCommand \xpg@activate@shorthands { O{"} } { - \seq_if_in:NnF \__xpg_active_shorthands { #1 } + \seq_if_in:NnF \g__xpg_active_shorthands_seq { #1 } { \bbl@activate{#1} - \seq_gpush:Nn \__xpg_active_shorthands { #1 } + \seq_gpush:Nn \g__xpg_active_shorthands_seq { #1 } } } \DeclareDocumentCommand \xpg@deactivate@shorthands { O{"} } { - \seq_if_in:NnT \__xpg_active_shorthands { #1 } + \seq_if_in:NnT \g__xpg_active_shorthands_seq { #1 } { \cs_if_exist:cT{initiate@active@char}{\bbl@deactivate{#1}} - \seq_remove_all:Nn \__xpg_active_shorthands {#1} + \seq_remove_all:Nn \g__xpg_active_shorthands_seq {#1} } } -% compatibility -\newif\ifsystem@babelshorthands -\bool_if:nTF \l_polyglossia_babelshorthands_bool { - \system@babelshorthandstrue -}{ - \system@babelshorthandsfalse +% Inherit shorthands in other languages +\NewDocumentCommand \inheritbabelshorthands { m m } +{ + \AddToHook{begindocument/before}{ + % Load the involved languages if necessary + % Error if they do not exist + \tl_set:Nn \l__xpg_tmpa_lang_tl { \xpg_alias_base_lang:n{#1} } + \clist_if_in:NeF \xpg@loaded {\l__xpg_tmpa_lang_tl}{ + \file_if_exist:nTF{gloss-\l__xpg_tmpa_lang_tl .ldf} + { \setotherlanguage{#1} } + { \xpg@error{ Source~ language~ #1,~ used~ in~ + \string\inheritbabelshorthands,~ does~ not~ exist } } + } + \tl_set:Nn \l__xpg_tmpb_lang_tl { \xpg_alias_base_lang:n{#2} } + \clist_if_in:NeF \xpg@loaded {\l__xpg_tmpb_lang_tl}{ + \file_if_exist:nTF{gloss-\l__xpg_tmpb_lang_tl .ldf} + { \setotherlanguage{#2} } + { \xpg@error{ Target~ language~ #2,~ used~ in~ + \string\inheritbabelshorthands,~ does~ not~ exist } } + } + % Test whether the requested shorthands exist + \bool_if_exist:NF \l__xpg_no_shorthands_bool + { \bool_new:N \l__xpg_no_shorthands_bool } + \cs_if_exist:cF { \l__xpg_tmpa_lang_tl @shorthands } + { \bool_set_true:N \l__xpg_no_shorthands_bool } + \cs_if_exist:cF { no\l__xpg_tmpa_lang_tl @shorthands } + { \bool_set_true:N \l__xpg_no_shorthands_bool } + \bool_if:nT { \l__xpg_no_shorthands_bool } + { + \xpg@error{ No~ babel~ shorthands~ exist~ for~ language~ #1 } + } + % If so, apply: + \bool_if:nF { \l__xpg_no_shorthands_bool } + { + \exp_args:Ncc \addto { blockextras@\l__xpg_tmpb_lang_tl } { \l__xpg_tmpa_lang_tl @shorthands } + \exp_args:Ncc \addto { inlineextras@\l__xpg_tmpb_lang_tl } { \l__xpg_tmpa_lang_tl @shorthands } + \exp_args:Ncc \addto { noextras@\l__xpg_tmpb_lang_tl } { no\l__xpg_tmpa_lang_tl @shorthands } + } + } } -% -% FIXME these should also be loaded \AtEndOfPackage !!! -\def\xpg@option#1#2{ - \ifcsundef{xpg@main@language}{\setdefaultlanguage}{\setotherlanguage} - [#1]{#2}} +% Activate shorthands of a (loaded) language inline +\NewDocumentCommand \usebabelshorthands { m } +{ + \str_if_eq:nnTF { #1 } { none } + { + % "none" deactivates any shorthands + \languageshorthands{none} + } + { + \tl_set:Nn \l__xpg_tmpa_lang_tl { \xpg_alias_base_lang:n{#1} } + \iflanguageloaded{\l__xpg_tmpa_lang_tl}{ + \use:c{\l__xpg_tmpa_lang_tl @shorthands} + }{ + \xpg@error{ Language~ #1,~ requested~ in~ + \string\startbabelshorthands,~ is~ not~ loaded } + } + } +} % \end{macrocode} % \iffalse @@ -7441,7 +7494,7 @@ Shawwāl\or Dhū ’l-Qaʿda\or Dhū ’l-Ḥijja\fi} % \begin{macrocode} -- -- polyglossia-punct.lua --- part of polyglossia v1.66 -- 2023/12/11 +-- part of polyglossia v2.0 -- 2024/02/17 -- require('polyglossia-punct') @@ -7508,7 +7561,7 @@ polyglossia.deactivate_french_punct = deactivate_french_punct % \begin{macrocode} -- -- polyglossia-korean.lua --- part of polyglossia v1.66 -- 2023/12/11 +-- part of polyglossia v2.0 -- 2024/02/17 -- local glyph_id = node.id"glyph" @@ -8126,7 +8179,7 @@ prepend_to_callback ("hpack_filter", % \begin{macrocode} -- -- polyglossia-latin.lua --- part of polyglossia v1.66 -- 2023/12/11 +-- part of polyglossia v2.0 -- 2024/02/17 -- require('polyglossia-punct') @@ -8181,7 +8234,7 @@ polyglossia.deactivate_latin_punct = deactivate_latin_punct % \begin{macrocode} -- -- polyglossia-punct.lua --- part of polyglossia v1.66 -- 2023/12/11 +-- part of polyglossia v2.0 -- 2024/02/17 -- require('polyglossia') -- just in case... @@ -8549,7 +8602,7 @@ polyglossia.clear_spaced_characters = clear_spaced_characters % \begin{macrocode} -- -- polyglossia-sanskrit.lua --- part of polyglossia v1.66 -- 2023/12/11 +-- part of polyglossia v2.0 -- 2024/02/17 -- require('polyglossia-punct') @@ -8599,7 +8652,7 @@ polyglossia.deactivate_sanskrit_punct = deactivate_sanskrit_punct % \begin{macrocode} -- -- polyglossia-tibt.lua --- part of polyglossia v1.66 -- 2023/12/11 +-- part of polyglossia v2.0 -- 2024/02/17 -- require('polyglossia') -- just in case... @@ -8702,7 +8755,7 @@ polyglossia.desactivate_tibt_eol = desactivate % \begin{macrocode} -- -- polyglossia.lua --- part of polyglossia v1.66 -- 2023/12/11 +-- part of polyglossia v2.0 -- 2024/02/17 -- local module_name = "polyglossia" @@ -8728,20 +8781,13 @@ end polyglossia = polyglossia or {} local polyglossia = polyglossia -local function select_language(lang, id) - polyglossia.current_language = lang -end - -local function set_default_language(lang, id) - polyglossia.default_language = lang -end - local function load_tibt_eol() require('polyglossia-tibt') end -- predefined l@nohyphenation or LuaTeX's maximum value for \language local nohyphid = luatexbase.registernumber'l@nohyphenation' or 16383 +token.set_char('l@nohyphenation', nohyphid) -- key `nohyphenation` is for .sty file when possibly undefined l@nohyphenation local newloader_loaded_languages = { nohyphenation = nohyphid } @@ -8853,14 +8899,9 @@ local function newloader(langentry) end end -polyglossia.select_language = select_language -polyglossia.set_default_language = set_default_language polyglossia.load_tibt_eol = load_tibt_eol polyglossia.newloader = newloader polyglossia.newloader_loaded_languages = newloader_loaded_languages --- global variables: --- polyglossia.default_language --- polyglossia.current_language % \end{macrocode} % \iffalse %</polyglossia.lua> @@ -10020,63 +10061,13 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % \end{macrocode} % \iffalse %</xgreek-fixes.def> -%<*gloss-latex.lde> -% \fi -% \clearpage -% -% \subsection{gloss-latex.lde} -% \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) -% -\ProvidesLanguageDefinitionExtension{gloss-latex}{2023/12/11}{v1.66}{polyglossia: module for default language} - -\PolyglossiaSetup{latex}{ - bcp47=en-US, - bcp47-language=en, - bcp47-region=US, - bcp47-script=Latn, - hyphennames={english}, - hyphenmins={2,3}, - langtag=ENG, - fontsetup=true, - % ignore command - DefineCommandsCmd={use_none:n} -} - -\def\captionslatex{% - \def\prefacename{Preface}% - \def\refname{References}% - \def\abstractname{Abstract}% - \def\bibname{Bibliography}% - \def\chaptername{Chapter}% - \def\appendixname{Appendix}% - \def\contentsname{Contents}% - \def\listfigurename{List of Figures}% - \def\listtablename{List of Tables}% - \def\indexname{Index}% - \def\figurename{Figure}% - \def\tablename{Table}% - \def\partname{Part}% - \def\enclname{encl}% - \def\ccname{cc}% - \def\headtoname{To}% - \def\pagename{Page}% - \def\seename{see}% - \def\alsoname{see also}% - \def\proofname{Proof}% -} - - -% \end{macrocode} -% \iffalse -%</gloss-latex.lde> %<*gloss-acadien.ldf> % \fi % \clearpage % % \subsection{gloss-acadien.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-acadien.ldf}[polyglossia: module for Canadian (Acadian) French] @@ -10093,7 +10084,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-aeb.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-aeb.ldf}[polyglossia: module for aeb (Arabic)] @@ -10110,7 +10101,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-af.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-af.ldf}[polyglossia: module for af (Afrikaans)] @@ -10127,7 +10118,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-afb.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-afb.ldf}[polyglossia: module for afb (Arabic)] @@ -10144,7 +10135,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-afrikaans.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-afrikaans.ldf}[polyglossia: module for Afrikaans] @@ -10249,7 +10240,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-albanian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-albanian.ldf}[polyglossia: module for Albanian] @@ -10306,7 +10297,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-am.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-am.ldf}[polyglossia: module for am (Amharic)] @@ -10323,7 +10314,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-american.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-american.ldf}[polyglossia: module for American English] @@ -10340,7 +10331,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-amharic.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-amharic.ldf}[polyglossia: module for Amharic] \PolyglossiaSetup{amharic}{ @@ -10560,7 +10551,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-apd.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-apd.ldf}[polyglossia: module for apd (Arabic)] @@ -10577,7 +10568,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ar-IQ.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ar-IQ.ldf}[polyglossia: module for ar-IQ (Arabic)] @@ -10596,7 +10587,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ar-JO.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ar-JO.ldf}[polyglossia: module for ar-JO (Arabic)] @@ -10615,7 +10606,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ar-LB.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ar-LB.ldf}[polyglossia: module for ar-LB (Arabic)] @@ -10634,7 +10625,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ar-MR.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ar-MR.ldf}[polyglossia: module for ar-MR (Arabic)] @@ -10653,7 +10644,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ar-PS.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ar-PS.ldf}[polyglossia: module for ar-PS (Arabic)] @@ -10672,7 +10663,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ar-SY.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ar-SY.ldf}[polyglossia: module for ar-SY (Arabic)] @@ -10691,7 +10682,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ar-YE.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ar-YE.ldf}[polyglossia: module for ar-YE (Arabic)] @@ -10710,7 +10701,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ar.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ar.ldf}[polyglossia: module for ar (Arabic)] @@ -10727,7 +10718,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-arabic.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-arabic.ldf}[polyglossia: module for Arabic] \RequireBidi @@ -11117,7 +11108,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-armenian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-armenian.ldf}[polyglossia: module for Armenian] @@ -11325,7 +11316,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-arq.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-arq.ldf}[polyglossia: module for arq (Arabic)] @@ -11342,7 +11333,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ary.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ary.ldf}[polyglossia: module for ary (Arabic)] @@ -11359,7 +11350,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-arz.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-arz.ldf}[polyglossia: module for arz (Arabic)] @@ -11376,7 +11367,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ast.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ast.ldf}[polyglossia: module for ast (Asturian)] @@ -11393,7 +11384,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-asturian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % % Translated by Xuacu <xuacusk8 at gmail dot com> % Contributed by Kevin Godby <godbyk at gmail dot com> @@ -11453,7 +11444,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-australian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-australian.ldf}[polyglossia: module for Australian English] @@ -11470,7 +11461,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-austrian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-austrian.ldf}[polyglossia: module for Austrian German (old spelling)] @@ -11487,7 +11478,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ayl.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ayl.ldf}[polyglossia: module for ayl (Arabic)] @@ -11504,7 +11495,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-bahasa.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-bahasa.ldf}[polyglossia: module for Bahasa Indonesia] @@ -11521,7 +11512,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-bahasai.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-bahasai.ldf}[polyglossia: module for Bahasa Indonesia] @@ -11539,7 +11530,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-bahasam.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-bahasam.ldf}[polyglossia: module for Bahasa Melayu] @@ -11557,7 +11548,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-basque.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-basque.ldf}[polyglossia: module for Basque] \PolyglossiaSetup{basque}{ @@ -11615,7 +11606,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-be-tarask.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-be-tarask.ldf}[polyglossia: module for be-tarask (Belarusian)] @@ -11632,7 +11623,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-be.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-be.ldf}[polyglossia: module for be (Belarusian)] @@ -11649,7 +11640,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-belarusian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-belarusian.ldf}[polyglossia: module for Belarusian] @@ -11977,7 +11968,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-bengali.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % % Translations provided by সাজেদুর রহিম জোয়ারদার <toshazed@gmail.com> % TODO implement Bengali calendar @@ -12118,7 +12109,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-bg.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-bg.ldf}[polyglossia: module for bg (Bulgarian)] @@ -12135,7 +12126,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-bn.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-bn.ldf}[polyglossia: module for bn (Bengali)] @@ -12152,7 +12143,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-bo.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-bo.ldf}[polyglossia: module for bo (Tibetan)] @@ -12169,7 +12160,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-bosnian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-bosnian.ldf}[polyglossia: module for Bosnian] @@ -12233,7 +12224,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-br.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-br.ldf}[polyglossia: module for br (Breton)] @@ -12250,7 +12241,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-brazil.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-brazil.ldf}[polyglossia: module for Brazilian Portuguese] @@ -12269,7 +12260,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-breton.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-breton.ldf}[polyglossia: module for Breton] \PolyglossiaSetup{breton}{ @@ -12377,7 +12368,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-british.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-british.ldf}[polyglossia: module for British English] @@ -12394,7 +12385,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-bs.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-bs.ldf}[polyglossia: module for bs (Bosnian)] @@ -12411,7 +12402,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-bulgarian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-bulgarian.ldf}[polyglossia: module for Bulgarian] \PolyglossiaSetup{bulgarian}{ @@ -12513,7 +12504,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ca.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ca.ldf}[polyglossia: module for ca (Catalan)] @@ -12530,7 +12521,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-canadian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-canadian.ldf}[polyglossia: module for Canadian English] @@ -12547,7 +12538,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-canadien.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-canadien.ldf}[polyglossia: module for Canadian French] @@ -12564,7 +12555,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-catalan.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-catalan.ldf}[polyglossia: module for Catalan] \PolyglossiaSetup{catalan}{ @@ -12733,7 +12724,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-chinese.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-chinese.ldf}[polyglossia: module for Chinese] @@ -13024,7 +13015,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ckb-Arab.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ckb-Arab.ldf}[polyglossia: module for ckb-Arab (Kurdish)] @@ -13041,7 +13032,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ckb-Latn.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ckb-Latn.ldf}[polyglossia: module for ckb-Latn (Kurdish)] @@ -13058,7 +13049,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ckb.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ckb.ldf}[polyglossia: module for ckb (Kurdish)] @@ -13075,7 +13066,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-cop.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-cop.ldf}[polyglossia: module for cop (Coptic)] @@ -13092,7 +13083,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-coptic.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-coptic.ldf}[polyglossia: module for Coptic] \PolyglossiaSetup{coptic}{ @@ -13148,7 +13139,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-croatian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-croatian.ldf}[polyglossia: module for Croatian] \PolyglossiaSetup{croatian}{ @@ -13424,7 +13415,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-cy.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-cy.ldf}[polyglossia: module for cy (Welsh)] @@ -13441,7 +13432,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-cz.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-cz.ldf}[polyglossia: module for cz (Czech)] @@ -13458,7 +13449,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-czech.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-czech.ldf}[polyglossia: module for Czech] @@ -13717,7 +13708,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-da.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-da.ldf}[polyglossia: module for da (Danish)] @@ -13734,7 +13725,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-danish.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-danish.ldf}[polyglossia: module for Danish] \PolyglossiaSetup{danish}{ @@ -13791,7 +13782,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-AT-1901.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-AT-1901.ldf}[polyglossia: module for de-AT-1901 (Austrian German, old spelling)] @@ -13808,7 +13799,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-AT-1996.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-AT-1996.ldf}[polyglossia: module for de-AT-1996 (Austrian German)] @@ -13825,7 +13816,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-AT.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-AT.ldf}[polyglossia: module for de-AT (Austrian German)] @@ -13842,7 +13833,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-CH-1901.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-CH-1901.ldf}[polyglossia: module for de-CH-1901 (Swiss German, old spelling)] @@ -13859,7 +13850,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-CH-1996.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-CH-1996.ldf}[polyglossia: module for de-CH-1996 (Swiss German)] @@ -13876,7 +13867,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-CH.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-CH.ldf}[polyglossia: module for de-CH (Swiss German)] @@ -13893,7 +13884,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-DE-1901.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-DE-1901.ldf}[polyglossia: module for de-DE-1901 (Germany's German, old spelling)] @@ -13910,7 +13901,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-DE-1996.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-DE-1996.ldf}[polyglossia: module for de-DE-1996 (Germany's German)] @@ -13927,7 +13918,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-DE.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-DE.ldf}[polyglossia: module for de-DE (Germany's German)] @@ -13944,7 +13935,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-Latf-AT-1901.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-AT-1901-Latf.ldf}[polyglossia: module for de-AT-1901-Latf (Austrian German, old spelling)] @@ -13961,7 +13952,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-Latf-AT-1996.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-AT-1996-Latf.ldf}[polyglossia: module for de-AT-1996-Latf (Austrian German)] @@ -13978,7 +13969,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-Latf-AT.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-AT-Latf.ldf}[polyglossia: module for de-AT-Latf (Austrian German)] @@ -13995,7 +13986,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-Latf-CH-1901.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-CH-1901-Latf.ldf}[polyglossia: module for de-CH-1901-Latf (Swiss German, old spelling)] @@ -14012,7 +14003,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-Latf-CH-1996.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-CH-1996-Latf.ldf}[polyglossia: module for de-CH-1996-Latf (Swiss German)] @@ -14029,7 +14020,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-Latf-CH.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-CH-Latf.ldf}[polyglossia: module for de-CH-Latf (Swiss German)] @@ -14046,7 +14037,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-Latf-DE-1901.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-DE-1901-Latf.ldf}[polyglossia: module for de-DE-1901-Latf (Germany's German, old spelling)] @@ -14063,7 +14054,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-Latf-DE-1996.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-DE-1996-Latf.ldf}[polyglossia: module for de-DE-1996-Latf (Germany's German)] @@ -14080,7 +14071,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-Latf-DE.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-DE-Latf.ldf}[polyglossia: module for de-DE-Latf (Germany's German)] @@ -14097,7 +14088,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de-Latf.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de-Latf.ldf}[polyglossia: module for de-Latf (German)] @@ -14114,7 +14105,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-de.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-de.ldf}[polyglossia: module for de (German)] @@ -14131,7 +14122,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-divehi.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-divehi.ldf}[polyglossia: module for Divehi] @@ -14186,7 +14177,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-dsb.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-dsb.ldf}[polyglossia: module for dsb (Sorbian)] @@ -14203,7 +14194,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-dutch.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-dutch.ldf}[polyglossia: module for Dutch] \PolyglossiaSetup{dutch}{ @@ -14413,7 +14404,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-dv.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-dv.ldf}[polyglossia: module for dv (Divehi)] @@ -14430,7 +14421,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-el-monoton.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-el-monoton.ldf}[polyglossia: module for el-monoton (Greek)] @@ -14447,7 +14438,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-el-polyton.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-el-polyton.ldf}[polyglossia: module for el-polyton (Greek)] @@ -14464,7 +14455,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-el.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-el.ldf}[polyglossia: module for el (Greek)] @@ -14481,7 +14472,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-en-AU.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-en-AU.ldf}[polyglossia: module for en-AU (Australian English)] @@ -14498,7 +14489,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-en-CA.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-en-CA.ldf}[polyglossia: module for en-CA (Canadan English)] @@ -14515,7 +14506,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-en-GB.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-en-GB.ldf}[polyglossia: module for en-GB (British English)] @@ -14532,7 +14523,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-en-NZ.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-en-NZ.ldf}[polyglossia: module for en-NZ (Newzealand English)] @@ -14549,7 +14540,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-en-US.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-en-US.ldf}[polyglossia: module for en-US (American English)] @@ -14566,7 +14557,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-en.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-en.ldf}[polyglossia: module for en (English)] @@ -14583,7 +14574,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-english.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-english.ldf}[polyglossia: module for English] @@ -14794,7 +14785,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-eo.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-eo.ldf}[polyglossia: module for eo (Esperanto)] @@ -14811,7 +14802,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-es-ES.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-es-ES.ldf}[polyglossia: module for es-ES (Spain's Spanish)] @@ -14828,7 +14819,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-es-MX.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-es-MX.ldf}[polyglossia: module for es-MX (Mexican Spanish)] @@ -14845,7 +14836,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-es.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-es.ldf}[polyglossia: module for es (Spanish)] @@ -14862,7 +14853,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-esperanto.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-esperanto.ldf}[polyglossia: module for Esperanto] \PolyglossiaSetup{esperanto}{ @@ -14942,7 +14933,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-estonian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-estonian.ldf}[polyglossia: module for Estonian] \PolyglossiaSetup{estonian}{ @@ -14999,7 +14990,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-et.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-et.ldf}[polyglossia: module for et (Estonian)] @@ -15016,7 +15007,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-eu.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-eu.ldf}[polyglossia: module for eu (Basque)] @@ -15033,7 +15024,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-fa.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-fa.ldf}[polyglossia: module for fa (Persian)] @@ -15050,7 +15041,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-farsi.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-farsi.ldf}[polyglossia: module for Farsi] @@ -15068,7 +15059,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-fi.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-fi.ldf}[polyglossia: module for fi (Finnish)] @@ -15085,7 +15076,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-finnish.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-finnish.ldf}[polyglossia: module for Finnish] \PolyglossiaSetup{finnish}{ @@ -15105,10 +15096,37 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages \define@boolkey{finnish}[finnish@]{babelshorthands}[true]{} -\define@boolkey{finnish}[finnish@]{schoolhyphens}[true]{} +\newif\if@finnish@schoolhyphens +\newif\if@finnish@babelhyphens +\define@choicekey*+{finnish}{hyphens}[\xpg@val\xpg@nr]{default,school,babel}[default]{% + \ifcase\xpg@nr\relax + % default: + \@finnish@schoolhyphensfalse + \@finnish@babelhyphensfalse + \or + % school: + \@finnish@schoolhyphenstrue + \@finnish@babelhyphensfalse + \or + % babel: + \@finnish@schoolhyphensfalse + \@finnish@babelhyphenstrue + \fi + \xpg@info{Option: Finnish, hyphens=\xpg@val}% +}{\xpg@warning{Unknown Finnish hyphens `#1'}} + +% backwards compatibility +\define@boolkey{finnish}[finnish@]{schoolhyphens}[true]{% + \iffinnish@schoolhyphens + \@finnish@schoolhyphenstrue + \@finnish@babelhyphensfalse + \else + \@finnish@schoolhyphensfalse + \fi +} % Register default options -\xpg@initialize@gloss@options{finnish}{babelshorthands=false,schoolhyphens=false} +\xpg@initialize@gloss@options{finnish}{babelshorthands=false,hyphens=default} \ifsystem@babelshorthands \setkeys{finnish}{babelshorthands=true} @@ -15129,7 +15147,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages \declare@shorthand{finnish}{"|}{\textormath{\penalty\@M\discretionary{-}{}{\kern.03em}}{}}% \declare@shorthand{finnish}{""}{\hskip\z@skip}% \declare@shorthand{finnish}{"~}{\textormath{\leavevmode\hbox{-}}{-}}% - \declare@shorthand{finnish}{"=}{\penalty\@M-\hskip\z@skip}% + \declare@shorthand{finnish}{"=}{\hbox{-}\bbl@allowhyphens}% \declare@shorthand{finnish}{"/}{\textormath {\bbl@allowhyphens\discretionary{/}{}{/}\bbl@allowhyphens}{}}% } @@ -15164,7 +15182,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages } \def\finnish@language{% - \iffinnish@schoolhyphens + \if@finnish@schoolhyphens \xpg@ifdefined{schoolfinnish}{% \polyglossia@setup@language@patterns{schoolfinnish}% }{% @@ -15177,6 +15195,28 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages \fi } +% activate babel-style hyphen settings if requested +\AtBeginDocument{% + \if@finnish@babelhyphens + \let\xpg@save@hyphenpenalty\hyphenpenalty% + \let\xpg@save@exhyphenpenalty\exhyphenpenalty% + \let\xpg@save@doublehyphendemerits\doublehyphendemerits% + \let\xpg@save@finalhyphendemerits\finalhyphendemerits% + \addto\blockextras@finnish{% + \hyphenpenalty=30% + \exhyphenpenalty=30% + \doublehyphendemerits=5000% + \finalhyphendemerits=5000% + }% + \addto\noextras@finnish{% + \let\hyphenpenalty\xpg@save@hyphenpenalty% + \let\exhyphenpenalty\xpg@save@exhyphenpenalty% + \let\doublehyphendemerits\xpg@save@doublehyphendemerits% + \let\finalhyphendemerits\xpg@save@finalhyphendemerits% + }% + \fi +} + \def\datefinnish{% \def\today{\number\day.~\ifcase\month\or tammikuuta\or helmikuuta\or maaliskuuta\or huhtikuuta\or @@ -15205,7 +15245,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-fr-CA-u-sd-canb.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-fr-CA-u-sd-canb.ldf}[polyglossia: module for fr-CA-u-sd-canb (Canadian French, Acadian subvariety)] @@ -15222,7 +15262,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-fr-CA.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-fr-CA.ldf}[polyglossia: module for fr-CA (Canadian French)] @@ -15239,7 +15279,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-fr-CH.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-fr-CH.ldf}[polyglossia: module for fr-CH (Swiss French)] @@ -15256,7 +15296,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-fr-FR.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-fr-FR.ldf}[polyglossia: module for fr-FR (France's French)] @@ -15273,7 +15313,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-fr.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-fr.ldf}[polyglossia: module for fr (French)] @@ -15290,7 +15330,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-french.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-french.ldf}[polyglossia: module for French] @@ -15765,8 +15805,6 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages \renewcommand{\labelitemiii}{\french@itemiii}% \renewcommand{\labelitemiv}{\french@itemiv}% }{\xpg@warning{Option 'frenchitemlabels' only supported if French is main language!}}% - \else - \let\@makefntext\xpg@orig@makefntext \fi \@xpg@french@itemlabels@settrue% \fi% @@ -15836,7 +15874,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-friulan.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-friulan.ldf}[polyglossia: module for Friulian] @@ -15853,7 +15891,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-friulian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-friulian.ldf}[polyglossia: module for Friulian] @@ -15939,7 +15977,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-fur.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-fur.ldf}[polyglossia: module for fur (Friulian)] @@ -15956,7 +15994,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ga.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ga.ldf}[polyglossia: module for ga (Gaelic)] @@ -15973,7 +16011,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-gaelic.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-gaelic.ldf}[polyglossia: module for Gaelic] @@ -16103,7 +16141,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-galician.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-galician.ldf}[polyglossia: module for Galician] \PolyglossiaSetup{galician}{ @@ -16160,7 +16198,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-gd.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-gd.ldf}[polyglossia: module for gd (Gaelic)] @@ -16177,7 +16215,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-georgian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-georgian.ldf}[polyglossia: module for Georgian] @@ -16425,7 +16463,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-german.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-german.ldf}[polyglossia: module for German] @@ -16658,6 +16696,11 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages \declare@shorthand{german}{"/}{\textormath {\bbl@allowhyphens\discretionary{/}{}{/}\bbl@allowhyphens}{}}% \def\ck{\allowhyphens\discretionary{k-}{k}{ck}\allowhyphens}% + \def\mkgender{*}% + \declare@shorthand{german}{":}{\nobreak:\bbl@allowhyphens}% + \declare@shorthand{german}{"*}{\nobreak*\bbl@allowhyphens}% + \declare@shorthand{german}{"_}{\nobreak\_\bbl@allowhyphens}% + \declare@shorthand{german}{"x}{\nobreak\mkgender\bbl@allowhyphens}% } \def\nogerman@shorthands{% @@ -16774,7 +16817,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-germanb.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-germanb.ldf}[polyglossia: module for German (old spelling)] @@ -16791,7 +16834,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-gl.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-gl.ldf}[polyglossia: module for gl (Galician)] @@ -16808,7 +16851,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-grc.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-grc.ldf}[polyglossia: module for grc (Greek)] @@ -16825,7 +16868,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-greek.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-greek.ldf}[polyglossia: module for Greek] @@ -17293,7 +17336,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-he.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-he.ldf}[polyglossia: module for he (Hebrew)] @@ -17310,7 +17353,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-hebrew.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-hebrew.ldf}[polyglossia: module for Hebrew] @@ -17484,7 +17527,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-hi.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-hi.ldf}[polyglossia: module for hi (Hindi)] @@ -17501,7 +17544,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-hindi.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % % UTF-8 strings kindly provided by Zdenĕk Wagner, 10-03-2008 % with corrections and additional contributions by Anshuman Pandey @@ -17620,7 +17663,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-hr.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-hr.ldf}[polyglossia: module for hr (Croatian)] @@ -17637,7 +17680,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-hsb.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-hsb.ldf}[polyglossia: module for hsb (Higher Sorbian)] @@ -17654,7 +17697,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-hu.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-hu.ldf}[polyglossia: module for hu (Hungarian)] @@ -17671,7 +17714,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-hungarian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-hungarian.ldf}[polyglossia: module for Hungarian] @@ -18070,7 +18113,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-hy.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-hy.ldf}[polyglossia: module for hy (Armenian)] @@ -18087,7 +18130,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ia.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ia.ldf}[polyglossia: module for ia (Interlingua)] @@ -18104,7 +18147,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-icelandic.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-icelandic.ldf}[polyglossia: module for Icelandic] \PolyglossiaSetup{icelandic}{ @@ -18162,7 +18205,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-id.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-id.ldf}[polyglossia: module for id (Malay)] @@ -18179,7 +18222,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-interlingua.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-interlingua.ldf}[polyglossia: module for Interlingua] \PolyglossiaSetup{interlingua}{ @@ -18237,7 +18280,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-irish.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-irish.ldf}[polyglossia: module for Irish] @@ -18255,7 +18298,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-is.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-is.ldf}[polyglossia: module for is (Icelandic)] @@ -18272,7 +18315,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-it.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-it.ldf}[polyglossia: module for it (Italian)] @@ -18290,7 +18333,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % \subsection{gloss-italian.ldf} % \begin{macrocode} % !TEX encoding = UTF-8 Unicode -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-italian.ldf}[polyglossia: module for Italian] \PolyglossiaSetup{italian}{ @@ -18442,7 +18485,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ja.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ja.ldf}[polyglossia: module for ja (Japanese)] @@ -18459,7 +18502,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-japanese.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-japanese.ldf}[polyglossia: module for Japanese] @@ -18469,6 +18512,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages bcp47-region=JP, bcp47-script=Hrkt, script=CJK, + scripttag=kana, language=Japanese, langtag=JAN, hyphennames={nohyphenation}, @@ -18697,7 +18741,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ka.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ka.ldf}[polyglossia: module for ka (Georgian)] @@ -18715,7 +18759,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % \subsection{gloss-kannada.ldf} % \begin{macrocode} %% gloss-kannada.ldf -%% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +%% Language definition file (part of polyglossia v2.0 -- 2024/02/17) %% %% Copyright 2011 Aravinda VK <hallimanearavind AT gmail.com>, %% Shankar Prasad <prasad.mvs AT gmail.com>, @@ -18838,7 +18882,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-khmer.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-khmer.ldf}[polyglossia: module for Khmer] \PolyglossiaSetup{khmer}{ @@ -19021,7 +19065,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-km.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-km.ldf}[polyglossia: module for km (Khmer)] @@ -19038,7 +19082,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-kmr-Arab.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-kmr-Arab.ldf}[polyglossia: module for kmr-Arab (Kurdish)] @@ -19055,7 +19099,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-kmr-Latn.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-kmr-Latn.ldf}[polyglossia: module for kmr-Latn (Kurdish)] @@ -19072,7 +19116,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-kmr.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-kmr.ldf}[polyglossia: module for kmr (Kurdish)] @@ -19089,7 +19133,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-kn.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-kn.ldf}[polyglossia: module for kn (Kannada)] @@ -19106,7 +19150,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ko.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ko.ldf}[polyglossia: module for ko (Korean)] @@ -19123,7 +19167,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-korean.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-korean.ldf}[polyglossia: module for Korean] @@ -19603,7 +19647,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ku-Arab.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ku-Arab.ldf}[polyglossia: module for ku-Arab (Kurdish)] @@ -19620,7 +19664,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ku-Latn.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ku-Latn.ldf}[polyglossia: module for ku-Latn (Kurdish)] @@ -19637,7 +19681,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ku.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ku.ldf}[polyglossia: module for ku (Kurdish)] @@ -19654,7 +19698,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-kurdish.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % % Created on September 1, 2019 % Last updated on May 17, 2020 @@ -20151,7 +20195,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-kurmanji.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-kurmanji.ldf}[polyglossia: module for Kurmanji Kurdish] @@ -20168,7 +20212,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-la-x-classic.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-la-xclassic.ldf}[polyglossia: module for la-xclassic (Latin)] @@ -20185,7 +20229,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-la-x-ecclesia.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-la-xecclesiastic.ldf}[polyglossia: module for la-xecclesiastic (Latin)] @@ -20202,7 +20246,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-la-x-medieval.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-la-xmedieval.ldf}[polyglossia: module for la-xmedieval (Latin)] @@ -20219,7 +20263,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-la.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-la.ldf}[polyglossia: module for la (Latin)] @@ -20236,7 +20280,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-lao.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-lao.ldf}[polyglossia: module for Lao] @@ -20341,13 +20385,63 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % \end{macrocode} % \iffalse %</gloss-lao.ldf> +%<*gloss-latex.ldf> +% \fi +% \clearpage +% +% \subsection{gloss-latex.ldf} +% \begin{macrocode} +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) +% +\ProvidesFile{gloss-latex.ldf}[polyglossia: module for default language] + +\PolyglossiaSetup{latex}{ + bcp47=en-US, + bcp47-language=en, + bcp47-region=US, + bcp47-script=Latn, + hyphennames={english}, + hyphenmins={2,3}, + langtag=ENG, + fontsetup=true, + % ignore command + DefineCommandsCmd={use_none:n} +} + +\def\captionslatex{% + \def\prefacename{Preface}% + \def\refname{References}% + \def\abstractname{Abstract}% + \def\bibname{Bibliography}% + \def\chaptername{Chapter}% + \def\appendixname{Appendix}% + \def\contentsname{Contents}% + \def\listfigurename{List of Figures}% + \def\listtablename{List of Tables}% + \def\indexname{Index}% + \def\figurename{Figure}% + \def\tablename{Table}% + \def\partname{Part}% + \def\enclname{encl}% + \def\ccname{cc}% + \def\headtoname{To}% + \def\pagename{Page}% + \def\seename{see}% + \def\alsoname{see also}% + \def\proofname{Proof}% +} + + +% \end{macrocode} +% \iffalse +%</gloss-latex.ldf> %<*gloss-latin.ldf> % \fi % \clearpage % % \subsection{gloss-latin.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-latin.ldf}[polyglossia: module for Latin] @@ -21462,7 +21556,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-latinclassic.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-latinclassic.ldf}[polyglossia: module for classic Latin] @@ -21479,7 +21573,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-latinecclesiastic.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-latinecclesiastic.ldf}[polyglossia: module for ecclesiastic Latin] @@ -21496,7 +21590,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-latinmedieval.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-latinmedieval.ldf}[polyglossia: module for medieval Latin] @@ -21513,7 +21607,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-latvian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-latvian.ldf}[polyglossia: module for Latvian] \PolyglossiaSetup{latvian}{ @@ -21571,7 +21665,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-lithuanian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % % Translated by Paulius Sladkevičius <komsas@gmail.com> @@ -21653,7 +21747,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-lo.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-lo.ldf}[polyglossia: module for lo (Lao)] @@ -21670,7 +21764,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-lowersorbian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-lowersorbian.ldf}[polyglossia: module for Lower Sorbian] @@ -21687,7 +21781,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-lsorbian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-lsorbian.ldf}[polyglossia: module for Lower Sorbian] @@ -21705,7 +21799,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-lt.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-lt.ldf}[polyglossia: module for lt (Lithuanian)] @@ -21722,7 +21816,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-lv.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-lv.ldf}[polyglossia: module for lv (Latvian)] @@ -21739,7 +21833,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-macedonian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-macedonian.ldf}[polyglossia: module for Macedonian] \PolyglossiaSetup{macedonian}{ @@ -21838,7 +21932,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-magyar.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-magyar.ldf}[polyglossia: module for Hungarian (Magyar)] @@ -21855,7 +21949,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-malay.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-malay.ldf}[polyglossia: module for Malay] @@ -22054,7 +22148,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-malayalam.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-malayalam.ldf}[polyglossia: module for Malayalam] @@ -22124,7 +22218,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-marathi.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % % Translations provided by Abhijit Navale <abhi_navale@live.in> % Ordinals (1-100) added by Niranjan Tambe <niranjanvikastambe@gmail.com> on 14th December, 2019 @@ -22274,7 +22368,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-mk.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-mk.ldf}[polyglossia: module for mk (Macedonian)] @@ -22291,7 +22385,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ml.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ml.ldf}[polyglossia: module for ml (Malayalam)] @@ -22308,7 +22402,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-mn.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-mn.ldf}[polyglossia: module for mn (Mongolian)] @@ -22325,7 +22419,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-mongolian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-mongolian.ldf}[polyglossia: module for Mongolian] @@ -22564,7 +22658,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-mr.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-mr.ldf}[polyglossia: module for mr (Marathi)] @@ -22581,7 +22675,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-naustrian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-naustrian.ldf}[polyglossia: module for Austrian German (current spelling)] @@ -22598,7 +22692,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-nb.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-nb.ldf}[polyglossia: module for nb (Norwegian)] @@ -22615,7 +22709,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-newzealand.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-newzealand.ldf}[polyglossia: module for Newzealand English] @@ -22632,7 +22726,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ngerman.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ngerman.ldf}[polyglossia: module for German (current spelling)] @@ -22649,7 +22743,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-nko.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-nko.ldf}[Polyglossia: module for N’Ko] \PolyglossiaSetup{nko}{% @@ -22747,7 +22841,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-norsk.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-norsk.ldf}[polyglossia: module for Norwegian (Bokmal)] @@ -22765,7 +22859,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-norwegian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-norwegian.ldf}[polyglossia: module for Norwegian] \PolyglossiaSetup{norwegian}{ @@ -22892,7 +22986,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-nswissgerman.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-nswissgerman.ldf}[polyglossia: module for Swiss German (current spelling)] @@ -22909,7 +23003,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-nynorsk.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-nynorsk.ldf}[polyglossia: module for Norwegian (Nynorsk)] @@ -22927,7 +23021,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-occitan.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % %% %% This is file `gloss-occitan.ldf', @@ -23108,7 +23202,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-odia.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % % Translations provided by ଅଶୋକ ଦାସ୍ <das@pas.rochester.edu> and ଅଭିଷେକ ଜେନା <avisekjena@gmail.com> % TODO implement Odia calendar @@ -23268,7 +23362,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-or.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-odia.ldf}[polyglossia: module for or (Odia)] @@ -23285,7 +23379,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-pa.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-pa.ldf}[polyglossia: module for pa (Punjabi)] @@ -23302,7 +23396,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-persian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-persian.ldf}[polyglossia: module for Persian] @@ -23543,7 +23637,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % \subsection{gloss-piedmontese.ldf} % \begin{macrocode} % !TEX encoding = UTF-8 Unicode -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-piedmontese.ldf}[2013/02/12 v1.0 polyglossia: module for Piedmontese] \makeatletter @@ -23673,7 +23767,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-polish.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-polish.ldf}[polyglossia: module for Polish] @@ -23932,7 +24026,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-polutonikogreek.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-polutonikogreek.ldf}[polyglossia: module for polytonic Greek] @@ -23949,7 +24043,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-portuges.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-portuges.ldf}[polyglossia: module for Portuguese] @@ -23969,7 +24063,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-portuguese.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-portuguese.ldf}[polyglossia: module for Portuguese] @@ -24200,7 +24294,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-punjabi.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % % UTF-8 strings kindly provided by % Arvinder Singh Kang, <17-11-2022> @@ -24308,7 +24402,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-romanian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-romanian.ldf}[polyglossia: module for Romanian] @@ -24367,7 +24461,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-romansh.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-romansh.ldf}[polyglossia: module for Romansh] \makeatletter @@ -24425,7 +24519,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-russian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-russian.ldf}[polyglossia: module for Russian] @@ -24824,7 +24918,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-sami.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-sami.ldf}[polyglossia: module for Sami] @@ -24928,7 +25022,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-samin.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-samin.ldf}[polyglossia: module for Northern Sami] @@ -24946,7 +25040,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-sanskrit.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-sanskrit.ldf}[polyglossia: module for Sanskrit] @@ -25105,7 +25199,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-scottish.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-scottish.ldf}[polyglossia: module for Scottish Gaelic] @@ -25123,7 +25217,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-serbian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-serbian.ldf}[polyglossia: module for Serbian] %TODO split into gloss-serbiancyr.ldf and gloss-serbianlat.ldf @@ -25546,7 +25640,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-serbianc.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-serbianc.ldf}[polyglossia: module for Serbian (cyrillic)] @@ -25563,7 +25657,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-slovak.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-slovak.ldf}[polyglossia: module for Slovak] @@ -25830,7 +25924,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-slovene.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-slovene.ldf}[polyglossia: module for Slovenian] @@ -25847,7 +25941,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-slovenian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-slovenian.ldf}[polyglossia: module for Slovenian] @@ -25939,7 +26033,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-sorbian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-sorbian.ldf}[polyglossia: module for Sorbian] @@ -26130,7 +26224,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-spanish.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-spanish.ldf}[polyglossia: module for Spanish] @@ -26370,7 +26464,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-spanishmx.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-spanishmx.ldf}[polyglossia: module for Mexican Spanish] @@ -26387,7 +26481,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-swedish.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-swedish.ldf}[polyglossia: module for Swedish] @@ -26452,7 +26546,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-swissgerman.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-swissgerman.ldf}[polyglossia: module for Swiss German (old spelling)] @@ -26469,7 +26563,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-syriac.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-syriac.ldf}[polyglossia: module for Syriac] @@ -26742,7 +26836,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-tamil.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-tamil.ldf}[polyglossia: module for Tamil] @@ -26812,7 +26906,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-telugu.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-telugu.ldf}[polyglossia: module for Telugu] @@ -26885,7 +26979,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-thai.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-thai.ldf}[polyglossia: module for Thai] %% This is partly based on thai-latex for Babel: @@ -27043,7 +27137,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-tibetan.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-tibetan.ldf}[polyglossia: module for Tibetan] %% Copyright 2013 Elie Roux @@ -27269,7 +27363,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-turkish.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-turkish.ldf}[polyglossia: module for Turkish] \RequirePackage{hijrical} @@ -27387,7 +27481,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-turkmen.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-turkmen.ldf}[polyglossia: module for Turkmen] %% Translations provided by Nazar Annagurban <nazartm at gmail dot com> @@ -27445,7 +27539,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ug.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ug.ldf}[polyglossia: module for ug (Uyghur)] % BCP 47 tag for Uyghur @@ -27461,7 +27555,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-ukrainian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-ukrainian.ldf}[polyglossia: module for Ukrainian] % Strings taken from Babel @@ -27760,7 +27854,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-uppersorbian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-uppersorbian.ldf}[polyglossia: module for Upper Sorbian] @@ -27777,7 +27871,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-urdu.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % %%% Adapted from a file contributed by Kamal Abdali \ProvidesFile{gloss-urdu.ldf}[polyglossia: module for Urdu] @@ -28027,7 +28121,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-usorbian.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-usorbian.ldf}[polyglossia: module for Upper Sorbian] @@ -28045,7 +28139,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-uyghur.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-uyghur.ldf}[polyglossia: module for Uyghur] %% Translations provided by Osman Tursun (Github Account: neouyghur) @@ -28486,7 +28580,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-vietnamese.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-vietnamese.ldf}[polyglossia: module for Vietnamese] %% Strings contributed by Daniel Owens < dhowens . pmbx . net > @@ -28545,7 +28639,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-welsh.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-welsh.ldf}[polyglossia: module for Welsh] @@ -28645,7 +28739,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-zh-CN.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-zh-CN.ldf}[polyglossia: module for zh-CN (Chinese)] @@ -28662,7 +28756,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages % % \subsection{gloss-zh-TW.ldf} % \begin{macrocode} -% Language definition file (part of polyglossia v1.66 -- 2023/12/11) +% Language definition file (part of polyglossia v2.0 -- 2024/02/17) % \ProvidesFile{gloss-zh-TW.ldf}[polyglossia: module for zh-TW (Chinese)] @@ -28856,7 +28950,7 @@ U+0039 <> U+0E59 ; % \begin{macrocode} -- -- polyglossia-punct.lua --- part of polyglossia v1.66 -- 2023/12/11 +-- part of polyglossia v2.0 -- 2024/02/17 -- require('polyglossia-punct') @@ -28923,7 +29017,7 @@ polyglossia.deactivate_french_punct = deactivate_french_punct % \begin{macrocode} -- -- polyglossia-korean.lua --- part of polyglossia v1.66 -- 2023/12/11 +-- part of polyglossia v2.0 -- 2024/02/17 -- local glyph_id = node.id"glyph" @@ -29541,7 +29635,7 @@ prepend_to_callback ("hpack_filter", % \begin{macrocode} -- -- polyglossia-latin.lua --- part of polyglossia v1.66 -- 2023/12/11 +-- part of polyglossia v2.0 -- 2024/02/17 -- require('polyglossia-punct') @@ -29596,7 +29690,7 @@ polyglossia.deactivate_latin_punct = deactivate_latin_punct % \begin{macrocode} -- -- polyglossia-punct.lua --- part of polyglossia v1.66 -- 2023/12/11 +-- part of polyglossia v2.0 -- 2024/02/17 -- require('polyglossia') -- just in case... @@ -29964,7 +30058,7 @@ polyglossia.clear_spaced_characters = clear_spaced_characters % \begin{macrocode} -- -- polyglossia-sanskrit.lua --- part of polyglossia v1.66 -- 2023/12/11 +-- part of polyglossia v2.0 -- 2024/02/17 -- require('polyglossia-punct') @@ -30014,7 +30108,7 @@ polyglossia.deactivate_sanskrit_punct = deactivate_sanskrit_punct % \begin{macrocode} -- -- polyglossia-tibt.lua --- part of polyglossia v1.66 -- 2023/12/11 +-- part of polyglossia v2.0 -- 2024/02/17 -- require('polyglossia') -- just in case... @@ -30117,7 +30211,7 @@ polyglossia.desactivate_tibt_eol = desactivate % \begin{macrocode} -- -- polyglossia.lua --- part of polyglossia v1.66 -- 2023/12/11 +-- part of polyglossia v2.0 -- 2024/02/17 -- local module_name = "polyglossia" @@ -30143,20 +30237,13 @@ end polyglossia = polyglossia or {} local polyglossia = polyglossia -local function select_language(lang, id) - polyglossia.current_language = lang -end - -local function set_default_language(lang, id) - polyglossia.default_language = lang -end - local function load_tibt_eol() require('polyglossia-tibt') end -- predefined l@nohyphenation or LuaTeX's maximum value for \language local nohyphid = luatexbase.registernumber'l@nohyphenation' or 16383 +token.set_char('l@nohyphenation', nohyphid) -- key `nohyphenation` is for .sty file when possibly undefined l@nohyphenation local newloader_loaded_languages = { nohyphenation = nohyphid } @@ -30268,14 +30355,9 @@ local function newloader(langentry) end end -polyglossia.select_language = select_language -polyglossia.set_default_language = set_default_language polyglossia.load_tibt_eol = load_tibt_eol polyglossia.newloader = newloader polyglossia.newloader_loaded_languages = newloader_loaded_languages --- global variables: --- polyglossia.default_language --- polyglossia.current_language % \end{macrocode} % \iffalse %</polyglossia.lua> |