diff options
author | Karl Berry <karl@freefriends.org> | 2020-12-08 22:04:48 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-12-08 22:04:48 +0000 |
commit | 50911a5d21723effb8f23757a309ee5993ccfd11 (patch) | |
tree | 1b98e4db5a2aceb1acf93531c8e41605ddcdad42 | |
parent | aed1181dbd8c3dbcc38758e26eecea1bf39b1a22 (diff) |
polyglossia (7dec20)
git-svn-id: svn://tug.org/texlive/trunk@57098 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r-- | Master/texmf-dist/doc/latex/polyglossia/README.md | 2 | ||||
-rw-r--r-- | Master/texmf-dist/doc/latex/polyglossia/example-arabic.pdf | bin | 64187 -> 63841 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/polyglossia/example-korean.pdf | bin | 20139 -> 20190 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/polyglossia/example-thai.pdf | bin | 23149 -> 13544 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/polyglossia/examples.pdf | bin | 150857 -> 147677 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/polyglossia/polyglossia.pdf | bin | 279219 -> 280545 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/latex/polyglossia/polyglossia.tex | 17 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx | 219 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf | 2 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf | 50 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf | 95 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf | 2 | ||||
-rw-r--r-- | Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty | 32 |
13 files changed, 373 insertions, 46 deletions
diff --git a/Master/texmf-dist/doc/latex/polyglossia/README.md b/Master/texmf-dist/doc/latex/polyglossia/README.md index 3510cd2d616..4f4afbf5d7a 100644 --- a/Master/texmf-dist/doc/latex/polyglossia/README.md +++ b/Master/texmf-dist/doc/latex/polyglossia/README.md @@ -1,4 +1,4 @@ -# 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. diff --git a/Master/texmf-dist/doc/latex/polyglossia/example-arabic.pdf b/Master/texmf-dist/doc/latex/polyglossia/example-arabic.pdf Binary files differindex 660c974f2b7..e81288b9011 100644 --- a/Master/texmf-dist/doc/latex/polyglossia/example-arabic.pdf +++ b/Master/texmf-dist/doc/latex/polyglossia/example-arabic.pdf diff --git a/Master/texmf-dist/doc/latex/polyglossia/example-korean.pdf b/Master/texmf-dist/doc/latex/polyglossia/example-korean.pdf Binary files differindex 0cdb3821bca..26e551f9d20 100644 --- a/Master/texmf-dist/doc/latex/polyglossia/example-korean.pdf +++ b/Master/texmf-dist/doc/latex/polyglossia/example-korean.pdf diff --git a/Master/texmf-dist/doc/latex/polyglossia/example-thai.pdf b/Master/texmf-dist/doc/latex/polyglossia/example-thai.pdf Binary files differindex 23e8521f547..319363c7142 100644 --- a/Master/texmf-dist/doc/latex/polyglossia/example-thai.pdf +++ b/Master/texmf-dist/doc/latex/polyglossia/example-thai.pdf diff --git a/Master/texmf-dist/doc/latex/polyglossia/examples.pdf b/Master/texmf-dist/doc/latex/polyglossia/examples.pdf Binary files differindex cbba0c53a52..f649f016c17 100644 --- a/Master/texmf-dist/doc/latex/polyglossia/examples.pdf +++ b/Master/texmf-dist/doc/latex/polyglossia/examples.pdf diff --git a/Master/texmf-dist/doc/latex/polyglossia/polyglossia.pdf b/Master/texmf-dist/doc/latex/polyglossia/polyglossia.pdf Binary files differindex 9477b7f13d5..c7ef99de2e4 100644 --- a/Master/texmf-dist/doc/latex/polyglossia/polyglossia.pdf +++ b/Master/texmf-dist/doc/latex/polyglossia/polyglossia.pdf diff --git a/Master/texmf-dist/doc/latex/polyglossia/polyglossia.tex b/Master/texmf-dist/doc/latex/polyglossia/polyglossia.tex index e4b07d98b69..76224049abb 100644 --- a/Master/texmf-dist/doc/latex/polyglossia/polyglossia.tex +++ b/Master/texmf-dist/doc/latex/polyglossia/polyglossia.tex @@ -968,6 +968,13 @@ and that passing \xpgvalue{babelshorthands} (without value) is equivalent to pas \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} @@ -1085,7 +1092,7 @@ and that passing \xpgvalue{babelshorthands} (without value) is equivalent to pas 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 @@ -1097,6 +1104,14 @@ and that passing \xpgvalue{babelshorthands} (without value) is equivalent to pas 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. diff --git a/Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx b/Master/texmf-dist/source/latex/polyglossia/polyglossia.dtx index bcc694b3bc7..12ab0b4ce0e 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.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: diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf index fdc720bc001..3d08e2207f3 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-albanian.ldf @@ -19,7 +19,7 @@ \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}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf index 4a698be9fa7..aae310ca027 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf @@ -12,12 +12,18 @@ % 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} @@ -31,6 +37,19 @@ \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}% @@ -60,6 +79,32 @@ \@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% @@ -164,14 +209,17 @@ \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% } \endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf index 40b1a3a2442..8048c93ae83 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf @@ -104,6 +104,9 @@ \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 @@ -203,7 +206,7 @@ \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 @@ -326,14 +329,11 @@ \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}}% @@ -353,9 +353,83 @@ 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{% @@ -363,6 +437,9 @@ \french@punctuation% \fi \french@fontsetup% + \iffrench@frenchpart + \french@capsformat% + \fi% } \def\inlineextras@french{% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf index 2c69288d635..6c9f5bbe11a 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-hebrew.ldf @@ -115,7 +115,7 @@ % 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% } diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty b/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty index 03b2db77e92..7aee393a353 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty +++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty @@ -1,5 +1,5 @@ \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} @@ -10,19 +10,23 @@ \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 @@ -168,7 +172,7 @@ {}% {\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}{% @@ -188,7 +192,7 @@ }% \ExplSyntaxOff% } -\AtEndOfPackageFile*{luabidi}{% +\xpg@at@package{luabidi}{package/after/luabidi}{% \ExplSyntaxOn% \cs_gset_nopar:Nn{\polyglossia@setpardirection:n}{% \str_case_e:nnTF{#1}{% @@ -1153,6 +1157,16 @@ \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} |