summaryrefslogtreecommitdiff
path: root/macros/unicodetex/latex/polyglossia/polyglossia.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/unicodetex/latex/polyglossia/polyglossia.dtx')
-rw-r--r--macros/unicodetex/latex/polyglossia/polyglossia.dtx219
1 files changed, 196 insertions, 23 deletions
diff --git a/macros/unicodetex/latex/polyglossia/polyglossia.dtx b/macros/unicodetex/latex/polyglossia/polyglossia.dtx
index bcc694b3bc..12ab0b4ce0 100644
--- a/macros/unicodetex/latex/polyglossia/polyglossia.dtx
+++ b/macros/unicodetex/latex/polyglossia/polyglossia.dtx
@@ -8,7 +8,7 @@
\iffalse
%</internal>
%<*README>
-# THE POLYGLOSSIA PACKAGE v1.50a
+# THE POLYGLOSSIA PACKAGE v1.51
## Multilingual typesetting with XeLaTeX and LuaLaTeX
This package provides an alternative to Babel for users of XeLaTeX and LuaLaTeX.
@@ -1350,6 +1350,13 @@ to track the issues and follow progress.
% \charifavailable{01C6}{dž}) will be replaced by single characters. This can
% be useful if the ligatures on your font are broken (if the font does not
% have them, they are automatically replaced).
+% \item \xpgboolkeytrue[1.51]{splithyphens}
+% According to Croatian typesetting conventions, if a word with a hard hyphen (such as \emph{je-li})
+% is hyphenated at this hyphen, a second hyphenation character is to be inserted at the beginning
+% of the line that follows the hyphenation (\emph{je-/-li}).
+% By default, this is done automatically (if you are using \LuaTeX, the \pkg{luavlna} package is
+% loaded to achieve this).
+% Set this option to ¦false¦ to disable the feature.
% \end{itemize}
%
% \subsection{czech}\label{czech}
@@ -1467,7 +1474,7 @@ to track the issues and follow progress.
% enabled, spacing in typewriter context is the same as with roman and sans
% serif font, depending on the \xpgvalue{autospacing} and
% \xpgvalue{autospaceguillemets} settings (note that this was the default up
-% to v.~1.44).
+% to v.~1.44).
% \item \xpgboolkeyfalse{frenchfootnote}
% If \xpgvalue{true}, footnotes start with a non-superscripted number
% followed by a dot, as common in French typography. Note that this might
@@ -1479,6 +1486,14 @@ to track the issues and follow progress.
% in French typography. Note that this option is only functional (by
% design) if French is the main language. Also, it might interfere with
% list packages such as \pkg{enumitem}.
+% \item \xpgboolkeytrue[1.51]{frenchpart}
+% By default, \pkg{polyglossia} modifies part headings to match French conventions
+% (\emph{Première partie} rather than \emph{Partie I}). Next to the standard classes,
+% specifics of \pkg{KOMA-script}, \pkg{memoir} and the \pkg{titlesec} package are
+% taken into account. With other classes or packages, redefinition might fail if these
+% have particular part settings.
+% In such case, or if you don't want the redefinition, you can switch off the feature
+% by passing \textit{false} to this option.
% \item \xpgcodekey[1.46]{itemlabels}¦\textemdash¦
% If \emph{frenchitemlabels} is true, you can customize here the used item
% label of all levels.
@@ -2686,7 +2701,7 @@ to track the issues and follow progress.
% \subsection{polyglossia.sty}
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{polyglossia}[2020/10/15 v1.50a
+\ProvidesPackage{polyglossia}[2020/12/08 v1.51
Modern multilingual typesetting with XeLaTeX and LuaLaTeX]
\RequirePackage{etoolbox}
\RequirePackage{makecmds}
@@ -2697,19 +2712,23 @@ to track the issues and follow progress.
\RequirePackage{expl3}
\RequirePackage{l3keys2e}
\RequirePackage{xparse}
-\RequirePackage{filehook}
+
+% fontspec now uses LaTeX3 packages such as expl3, so we need this:
+\ExplSyntaxOn
+
+% Execute code #3 if package #1 has been loaded already, else
+% add to package hook #2
+\newcommand\xpg@at@package[3]{%
+ \@ifpackageloaded{#1}{#3}{\AddToHook{#2}{#3}}%
+}
% correct a bug in tracklang
-\AtBeginOfPackageFile*{tracklang}{
+\xpg@at@package{tracklang}{file/after/tracklang.sty}{%
\@ifpackagelater{tracklang}{2019/08/30}{}{\global\def\AddTrackedLangage{\AddTrackedLanguage}}
}
-% fontspec now uses LaTeX3 packages such as expl3, so we need this:
-\ExplSyntaxOn
-
%% This is for compatibility with Babel-aware package:
-\cslet{ver@babel.sty}{\@empty} % this "fakes" babel
\def\languageshorthands#1{\relax} %this is for scrlttr2 class
\def\bbl@cs#1{\csname bbl@#1\endcsname}%
\AtEndPreamble{\let\bbl@set@language\xpg@set@language@aux} %for biblatex
@@ -2855,7 +2874,7 @@ to track the issues and follow progress.
{}%
{\xpg@error{Unknown~ language~ direction~ #1 ~(base~ wrapper)}}%
}
-\AtEndOfPackageFile*{bidi}{%
+\xpg@at@package{bidi}{package/after/bidi}{%
\ExplSyntaxOn%
\cs_gset_nopar:Nn{\polyglossia@setpardirection:n}{%
\str_case_e:nnTF{#1}{%
@@ -2875,7 +2894,7 @@ to track the issues and follow progress.
}%
\ExplSyntaxOff%
}
-\AtEndOfPackageFile*{luabidi}{%
+\xpg@at@package{luabidi}{package/after/luabidi}{%
\ExplSyntaxOn%
\cs_gset_nopar:Nn{\polyglossia@setpardirection:n}{%
\str_case_e:nnTF{#1}{%
@@ -3840,6 +3859,16 @@ to track the issues and follow progress.
\newcommand{\setdefaultlanguage}[2][]{%
+ % latex is an internal language, so do not record
+ \ifstrequal{#2}{latex}{}{%
+ % register polyglossia language name
+ \ifcsundef{#2@registered}{%
+ \global\edef\xpg@loaded{%
+ \ifx\xpg@loaded\@empty\else\xpg@loaded,\fi #2%
+ }%
+ }{}%
+ \csgdef{#2@registered}{}%
+ }%
\ifcsundef{#2@loaded}%
{
\polyglossia_load_lang_definition:nn{#1}{#2}
@@ -8408,7 +8437,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
\def\prefacename{Parathenia}%
\def\chaptername{Kapitulli}%
\def\appendixname{Shtesa}%
- \def\contentsname{Përmbajta}%
+ \def\contentsname{Përmbajtja}%
\def\listfigurename{Figurat}%
\def\listtablename{Tabelat}%
\def\indexname{Indeksi}%
@@ -10720,12 +10749,18 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
% BCP-47 compliant aliases
\setlanguagealias*{croatian}{hr}
+\ifluatex
+ \RequirePackage{luavlna}
+\fi
+
\define@boolkey{croatian}[croatian@]{babelshorthands}[true]{}
\define@boolkey{croatian}[croatian@]{disableligatures}[true]{}
+\define@boolkey{croatian}[croatian@]{splithyphens}[true]{}
+
% Register default options
-\xpg@initialize@gloss@options{croatian}{babelshorthands=false,disableligatures=false}
+\xpg@initialize@gloss@options{croatian}{babelshorthands=false,disableligatures=false,splithyphens=true}
\ifsystem@babelshorthands
\setkeys{croatian}{babelshorthands=true}
@@ -10739,6 +10774,19 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
\shorthandoff{"}%
}{}
+\def\croatian@@splhyphen#1{%
+ \ifnum\hyphenchar \font>0%
+ \kern\z@\discretionary{-}{\char\hyphenchar\the\font}{#1}%
+ \nobreak\hskip\z@%
+ \else%
+ #1%
+ \fi%
+}
+
+\def\croatian@splhyphen{%
+ \croatian@@splhyphen{-}%
+}
+
\def\croatian@shorthands{%
\bbl@activate{"}%
\def\language@group{croatian}%
@@ -10768,6 +10816,32 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
\@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}%
}
+\ifxetex
+ % splithyphens
+ \newXeTeXintercharclass\croatian@hyphen % -
+ \newXeTeXintercharclass\croatian@nonsyllabicpreposition%
+\fi
+
+\def\croatian@hyphens{%
+ \ifluatex
+ \AfterPreamble{\enablesplithyphens{croatian}}%
+ \else
+ \XeTeXinterchartokenstate=1
+ \XeTeXcharclass `\- \croatian@hyphen
+ \XeTeXinterchartoks \z@ \croatian@hyphen = {\croatian@@splhyphen}% "-" -> "\croatian@@splhyphen-"
+ % necessary if used together with vlna:
+ \XeTeXinterchartoks \croatian@nonsyllabicpreposition \croatian@hyphen = {\croatian@@splhyphen}% "-" -> "\croatian@@splhyphen-"
+ \fi%
+}
+
+\def\nocroatian@hyphens{%
+ \ifluatex
+ \AfterPreamble{\disablesplithyphens{croatian}}%
+ \else
+ \XeTeXcharclass `\- \z@
+ \fi%
+}
+
\newcommand*\hr@charifavailable[2]{%
\ifcroatian@disableligatures
\bgroup#2\egroup%
@@ -10872,14 +10946,17 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
\def\noextras@croatian{%
\ifcroatian@babelshorthands\nocroatian@shorthands\fi%
+ \nocroatian@hyphens%
}
\def\blockextras@croatian{%
\ifcroatian@babelshorthands\croatian@shorthands\fi%
+ \ifcroatian@splithyphens\croatian@hyphens\else\nocroatian@hyphens\fi%
}
\def\inlineextras@croatian{%
\ifcroatian@babelshorthands\croatian@shorthands\fi%
+ \ifcroatian@splithyphens\croatian@hyphens\else\nocroatian@hyphens\fi%
}
% \end{macrocode}
@@ -12595,6 +12672,9 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
\define@boolkey{french}[french@]{autospacing}[true]{}
\french@autospacingtrue
+\define@boolkey{french}[french@]{frenchpart}[true]{}
+\french@frenchparttrue
+
\newif\iffrench@autospaceguillemets
\define@boolkey{french}[french@]{autospaceguillemets}[true]{}
\french@autospaceguillemetstrue
@@ -12694,7 +12774,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
\let\ttfamily\french@ttfamilyORI
}
-\def\xpg@french@thinsp{\kern 0.5\fontdimen2\font}
+\def\xpg@french@thinsp{\kern 0.5\fontdimen2\font\nobreak\hskip\z@skip}
\def\french@punctuation{%
\lccode"2019="2019
@@ -12817,14 +12897,11 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
\def\indexname{Index}%
\def\figurename{\textsc{Fig.}}%
\def\tablename{\textsc{Tab.}}%
- \def\@Fpt{\ifcase\value{part}\or Première\or Deuxième\or
- Troisième\or Quatrième\or Cinquième\or Sixième\or
- Septième\or Huitième\or Neuvième\or Dixième\or Onzième\or
- Douzième\or Treizième\or Quatorzième\or Quinzième\or
- Seizième\or Dix-septième\or Dix-huitième\or Dix-neuvième\or
- Vingtième\fi\space}%
- \def\thepart{\@Fpt partie}%
- \def\partname{}%
+ \iffrench@frenchpart
+ \def\partname{partie}%
+ \else
+ \def\partname{Partie}%
+ \fi%
\def\pagename{page}%
\def\seename{\emph{voir}}%
\def\alsoname{\emph{voir aussi}}%
@@ -12844,9 +12921,83 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
décembre\fi
\space \number\year}}
+\def\xpg@french@part{\ifcase\value{part}\or Première\or Deuxième\or%
+ Troisième\or Quatrième\or Cinquième\or Sixième\or%
+ Septième\or Huitième\or Neuvième\or Dixième\or Onzième\or%
+ Douzième\or Treizième\or Quatorzième\or Quinzième\or%
+ Seizième\or Dix-septième\or Dix-huitième\or Dix-neuvième\or%
+ Vingtième\fi}%
+
+\def\french@capsformat{%
+ % Change part heading
+ % With titlesec
+ \ifcsdef{titleformat}{%
+ \ifcsdef{@part}{%
+ \let\xpg@save@part@format\@part%
+ \patchcmd{\@part}%
+ {\partname\nobreakspace\thepart}%
+ {\xpg@french@part\nobreakspace\partname}%
+ {}%
+ {\xpg@warning{Failed to patch part for French}}%
+ }{}%
+ }{% (not \ifdefined\titleformat)
+ % With KOMA
+ \ifcsdef{sectionformat}{%
+ \ifcsdef{partformat}{%
+ \let\xpg@save@part@format\partformat%
+ \renewcommand{\partformat}{\xpg@french@part~\partname}%
+ }{}%
+ }{% (not \ifdefined\sectionformat)
+ % With memoir
+ \ifcsdef{@memptsize}{%
+ \ifcsdef{@part}{%
+ \let\xpg@save@part@format\@part%
+ \patchcmd{\@part}{\printpartname \partnamenum \printpartnum}%
+ {\partnamefont\xpg@french@part\partnamenum\printpartname}%
+ {}%
+ {\xpg@warning{Failed to patch part for French}}%
+ }{}%
+ }{% (not \ifdefined\@memptsize)
+ % With standard classes
+ \ifcsdef{@part}{%
+ \let\xpg@save@part@format\@part%
+ \patchcmd{\@part}%
+ {\partname\nobreakspace\thepart}%
+ {\xpg@french@part\nobreakspace\partname}%
+ {}%
+ {\xpg@warning{Failed to patch part for French}}%
+ }{}% (end \ifdefined\@part)
+ }% (end \ifdefined\@memptsize)
+ }% (end \ifdefined\sectionformat)
+ }% (end \ifdefined\titleformat)
+}
+
+\def\nofrench@capsformat{%
+ % Reset chapter and part heading
+ \ifcsdef{titleformat}{%
+ % With titlesec
+ \ifcsdef{xpg@save@part@format}{%
+ \let\@part\xpg@save@part@format
+ }{}%
+ }{% (not \ifdefined\titleformat)
+ \ifcsdef{sectionformat}{%
+ % With KOMA
+ \ifcsdef{xpg@save@part@format}{%
+ \let\partformat\xpg@save@part@format
+ }{}%
+ }{%
+ % With memoir and standard classes
+ \ifcsdef{xpg@save@part@format}{%
+ \let\@part\xpg@save@part@format
+ }{}%
+ }% (end \ifdefined\sectionformat)
+ }% (end \ifdefined\titleformat)
+}
+
\def\noextras@french{%
\nofrench@punctuation%
\nofrench@fontsetup%
+ \nofrench@capsformat%
}
\def\blockextras@french{%
@@ -12854,6 +13005,9 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
\french@punctuation%
\fi
\french@fontsetup%
+ \iffrench@frenchpart
+ \french@capsformat%
+ \fi%
}
\def\inlineextras@french{%
@@ -14383,7 +14537,7 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
% Bidi inserts an RTL mark (0x200f) between number and number separator (- .),
% forcing numbers to RTL. This is wrong for Hebrew.
% So we defunc the respective command.
- \renewcommand*{\DigitsDotDashInterCharToks}{}
+ \renewcommand*{\DigitsDotDashInterCharToks}{}%
\fi%
}
@@ -24997,6 +25151,25 @@ polyglossia.newloader_loaded_languages = newloader_loaded_languages
%
% \iffalse
%<*Changelog>
+1.51 (08-12-2020)
+
+New features:
+ * New option "frenchpart" for French (#458).
+ * New option "splithyphens" for Croatian (#454).
+
+Bug fixes:
+
+ * Use new LaTeX core hooks rather than filehook package. This fixes
+ a recent breakage of filehook with other external packages (#453).
+ * Remove very old code that pretends polyglossia is babel (#455).
+ * Fix spelling of Albanian contentsname (#456).
+ * Fix part heading modification in French (#458).
+ * Fix extra space in Hebrew (#459).
+ * Register main polyglossia language earlier (#461).
+ * Allow for hyphenations in words following opening guillemet in French
+ with XeTeX (#462).
+
+
1.50a (15-10-2020)
Bug fixes: