From 9e5940c56dfe63fab26f34250ac55e37ece2c560 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 7 Apr 2018 20:58:18 +0000 Subject: polyglossia (7apr18) git-svn-id: svn://tug.org/texlive/trunk@47358 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/polyglossia/gloss-churchslavonic.ldf | 244 +++++++++++ .../tex/latex/polyglossia/gloss-classiclatin.ldf | 157 +++++++ .../tex/latex/polyglossia/gloss-croatian.ldf | 52 +-- .../tex/latex/polyglossia/gloss-english.ldf | 2 +- .../tex/latex/polyglossia/gloss-french.ldf | 54 ++- .../tex/latex/polyglossia/gloss-german.ldf | 2 + .../tex/latex/polyglossia/gloss-japanese.ldf | 216 +++++++++ .../tex/latex/polyglossia/gloss-korean.ldf | 484 +++++++++++++++------ .../tex/latex/polyglossia/gloss-latin.ldf | 371 ++++++++++------ .../tex/latex/polyglossia/gloss-lithuanian.ldf | 11 +- .../latex/polyglossia/gloss-liturgicallatin.ldf | 185 ++++++++ .../tex/latex/polyglossia/gloss-magyar.ldf | 10 + .../tex/latex/polyglossia/gloss-marathi.ldf | 2 +- .../tex/latex/polyglossia/gloss-russian.ldf | 26 +- .../tex/latex/polyglossia/gloss-sanskrit.ldf | 5 + .../tex/latex/polyglossia/gloss-ukrainian.ldf | 112 ++++- .../tex/latex/polyglossia/gloss-vietnamese.ldf | 4 +- .../tex/latex/polyglossia/polyglossia.lua | 26 +- .../tex/latex/polyglossia/polyglossia.sty | 24 +- 19 files changed, 1639 insertions(+), 348 deletions(-) create mode 100644 Master/texmf-dist/tex/latex/polyglossia/gloss-churchslavonic.ldf create mode 100644 Master/texmf-dist/tex/latex/polyglossia/gloss-classiclatin.ldf create mode 100644 Master/texmf-dist/tex/latex/polyglossia/gloss-japanese.ldf create mode 100644 Master/texmf-dist/tex/latex/polyglossia/gloss-liturgicallatin.ldf (limited to 'Master/texmf-dist/tex/latex') diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-churchslavonic.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-churchslavonic.ldf new file mode 100644 index 00000000000..1d19cadcc98 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-churchslavonic.ldf @@ -0,0 +1,244 @@ +\ProvidesFile{gloss-churchslavonic.ldf}[polyglossia: module for Church Slavonic] +\PolyglossiaSetup{churchslavonic}{ + script=Cyrillic, + scripttag=cyrl, + langtag=CHU, + hyphennames={churchslavonic}, + hyphenmins={1,2}, + frenchspacing=true, + fontsetup=true +} + +% if spelling is set to modern, Russian date and caption +% as well as ASCII digits are used. +\define@key{churchslavonic}{spelling}[modern]{% + \ifstrequal{#1}{traditional}% + {\def\captionschurchslavonic{\captionschurchslavonic@traditional}% + \def\datechurchslavonic{\datechurchslavonic@traditional}}% + {\def\captionschurchslavonic{\captionschurchslavonic@modern}% + \def\datechurchslavonic{\datechurchslavonic@modern}}% +} + +\newif\ifcyrillic@numerals +\define@key{churchslavonic}{numerals}[latin]{% + \ifstrequal{#1}{cyrillic}% + {\cyrillic@numeralstrue} + {\cyrillic@numeralsfalse}% +} + +\define@boolkey{churchslavonic}[churchslavonic@]{babelshorthands}[false]{} + +\setkeys{churchslavonic}{spelling,numerals} + +\ifsystem@babelshorthands + \setkeys{churchslavonic}{babelshorthands=true} +\else + \setkeys{churchslavonic}{babelshorthands=false} +\fi + +\ifcsundef{initiate@active@char}{% + \input{babelsh.def}% + \initiate@active@char{"}% +}{} + +\def\churchslavonic@shorthands{% + \bbl@activate{"}% + \def\language@group{churchslavonic}% +% \declare@shorthand{russian}{"`}{„}% +% \declare@shorthand{russian}{"'}{“}% +% \declare@shorthand{russian}{"<}{«}% +% \declare@shorthand{russian}{">}{»}% + \declare@shorthand{churchslavonic}{""}{\hskip\z@skip}% + \declare@shorthand{churchslavonic}{"~}{\textormath{\leavevmode\hbox{-}}{-}}% + \declare@shorthand{churchslavonic}{"=}{\nobreak-\hskip\z@skip}% + \declare@shorthand{churchslavonic}{"|}{\textormath{\nobreak\discretionary{-}{}{\kern.03em}\allowhyphens}{}}% + \declare@shorthand{churchslavonic}{"-}{% + \def\churchslavonic@sh@tmp{% + \if\churchslavonic@sh@next-\expandafter\churchslavonic@sh@emdash + \else\expandafter\churchslavonic@sh@hyphen\fi + }% + \futurelet\churchslavonic@sh@next\churchslavonic@sh@tmp}% + \def\churchslavonic@sh@hyphen{% + \nobreak\-\bbl@allowhyphens}% + \def\churchslavonic@sh@emdash##1##2{\cdash-##1##2}% + \def\cdash##1##2##3{\def\tempx@{##3}% + \def\tempa@{-}\def\tempb@{~}\def\tempc@{*}% + \ifx\tempx@\tempa@\@Acdash\else + \ifx\tempx@\tempb@\@Bcdash\else + \ifx\tempx@\tempc@\@Ccdash\else + \errmessage{Wrong usage of cdash}\fi\fi\fi}% + \def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi + \cyrdash\hskip.2em\ignorespaces}% + \def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi + \nobreak\cyrdash\penalty\exhyphenpenalty\hskip\z@skip\ignorespaces}% + \def\@Ccdash{\leavevmode + \nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}% + \ifx\cyrdash\undefined + \def\cyrdash{\hbox to.8em{--\hss--}} + \fi + \declare@shorthand{churchslavonic}{",}{\nobreak\hskip.2em\ignorespaces}% +} + +\def\nochurchslavonic@shorthands{% + \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}% +} + + +\def\captionschurchslavonic@modern{% + \def\prefacename{Предисловие}% + \def\refname{Список литературы}% + \def\abstractname{Аннотация}% + \def\bibname{Литература}% +\def\chaptername{Глава}% + \def\appendixname{Приложение}% + \ifcsundef{thechapter}% + {\def\contentsname{Содержание}}% + {\def\contentsname{Оглавление}}% + \def\listfigurename{Список иллюстраций}% + \def\listtablename{Список таблиц}% + \def\indexname{Предметный указатель}% + \def\authorname{Именной указатель}% + \def\figurename{Рис.}% + \def\tablename{Таблица}% + \def\partname{Часть}% + \def\enclname{вкл.}% + \def\ccname{исх.}% + \def\headtoname{вх.}% + \def\pagename{с.}% + \def\seename{см.}% + \def\alsoname{см.~также}% + \def\proofname{Доказательство}% +} +\def\datechurchslavonic@modern{% + \def\today{\number\day% + \space\ifcase\month\or% + января\or + февраля\or + марта\or + апреля\or + мая\or + июня\or + июля\or + августа\or + сентября\or + октября\or + ноября\or + декабря\fi% + \space \number\year\space г.}} + +\def\captionschurchslavonic@traditional{% + \def\prefacename{Предисло́вїе}% + \def\refname{Примѣча̑нїѧ}% + \def\abstractname{А҆ннота́цїѧ}% + \def\bibname{Вивлїогра́фїѧ}% + \def\chaptername{Глава̀}% + \def\appendixname{Приложе́нїе}% + \ifcsundef{thechapter}% + {\def\contentsname{Содержа́нїе}}% + {\def\contentsname{Ѡ҆главле́нїе}}% + \def\listfigurename{Надписа́нїе и҆з̾ѡбраже́нїй}% + \def\listtablename{Надписа́нїе табли́цъ}% + \def\indexname{Предмѣ́тный ᲂу҆каза́тель}% + \def\authorname{И҆менно́й ᲂу҆каза́тель}% + \def\figurename{И҆з̾ѡбраже́нїе}% + \def\tablename{Табли́ца}% + \def\partname{Ча́сть}% + \def\enclname{вкл.}% + \def\ccname{исх.}% + \def\headtoname{вх.}% + \def\pagename{с.}% + \def\seename{зрѝ}% + \def\alsoname{зрѝ~та́кожде}% + \def\proofname{Доказа́тельство}% +} +\def\datechurchslavonic@traditional{% + \def\today{\number\day% + \space\ifcase\month\or% + і҆аннꙋа́рїа\or + феврꙋа́рїа\or + ма́рта\or + а҆прі́ллїа\or + ма́їа\or + і҆ꙋ́нїа\or + і҆ꙋ́лїа\or + а҆́ѵгꙋста\or + септе́мврїа\or + ѻ҆ктѡ́врїа\or + ное́мврїа\or + деке́мврїа\fi% + \space л.\space\number\year\space}} + +% The following is based on some ideas from ruscor.sty +\def\churchslavonic@capsformat{% + \def\@seccntformat##1{\csname pre##1\endcsname% + \csname the##1\endcsname% + \csname post##1\endcsname}% + \def\@aftersepkern{\hspace{0.5em}}% + \def\postchapter{.\@aftersepkern}% + \def\postsection{.\@aftersepkern}% + \def\postsubsection{.\@aftersepkern}% + \def\postsubsubsection{.\@aftersepkern}% + \def\postparagraph{.\@aftersepkern}% + \def\postsubparagraph{.\@aftersepkern}% + \def\prechapter{}% + \def\presection{}% + \def\presubsection{}% + \def\presubsubsection{}% + \def\preparagraph{}% + \def\presubparagraph{}} + +\def\Azbuk#1{\expandafter\churchslavonic@Alph\csname c@#1\endcsname} +\def\churchslavonic@Alph#1{\ifcase#1\or + А\or Б\or В\or Г\or Д\or Є\or Ж\or Ѕ\or + З\or И\or І\or К\or Л\or М\or Н\or О\or + П\or Р\or С\or Т\or Ꙋ\or Ф\or Х\or Ѿ\or + Ц\or Ч\or Ш\or Щ\or Ъ\or Ы\or Ь\or Ѣ\or + Ю\or Ѫ\or Ѧ\or Ѯ\or Ѱ\or Ѳ\or Ѵ\else\xpg@ill@value{#1}{churchslavonic@Alph}\fi} + +\def\azbuk#1{\expandafter\churchslavonic@alph\csname c@#1\endcsname} +\def\churchslavonic@alph#1{\ifcase#1\or + а\or б\or в\or г\or д\or е\or ж\or ѕ\or + з\or и\or ї\or к\or л\or м\or н\or о\or + п\or р\or с\or т\or ꙋ\or ф\or х\or ѿ\or + ц\or ч\or ш\or щ\or ъ\or ы\or ь\or ѣ\or + ю\or ѫ\or ѧ\or ѯ\or ѱ\or ѳ\or ѵ\else\xpg@ill@value{#1}{churchslavonic@alph}\fi} + +%% Deleting stuff for Cyrillic numerals +%% TODO: link with cu-num package +\def\noextras@churchslavonic{% + \def\@seccntformat##1{\csname the##1\endcsname\quad}% = LaTeX kernel + \ifcyrillic@numerals\nochurchslavonic@numbers\fi + \nochurchslavonic@shorthands% +} + +\def\blockextras@churchslavonic{% + \churchslavonic@capsformat% + \ifcyrillic@numerals\churchslavonic@numbers\fi + \ifchurchslavonic@babelshorthands\churchslavonic@shorthands\fi +} + +\def\inlineextras@churchslavonic{% + \ifchurchslavonic@babelshorthands\churchslavonic@shorthands\fi% +} + +%%% These lines taken from russianb.ldf, part of babel package. +% make it optional? +\def\sh {\mathop{\operator@font sh}\nolimits} +\def\ch {\mathop{\operator@font ch}\nolimits} +\def\tg {\mathop{\operator@font tg}\nolimits} +\def\arctg {\mathop{\operator@font arctg}\nolimits} +\def\arcctg{\mathop{\operator@font arcctg}\nolimits} +\def\th {\mathop{\operator@font th}\nolimits} +\def\ctg {\mathop{\operator@font ctg}\nolimits} +\def\cth {\mathop{\operator@font cth}\nolimits} +\def\cosec {\mathop{\operator@font cosec}\nolimits} +\def\Prob {\mathop{\kern\z@\mathsf{P}}\nolimits} +\def\Variance{\mathop{\kern\z@\mathsf{D}}\nolimits} +\def\nod {\mathop{\mathrm{н.о.д.}}\nolimits} +\def\nok {\mathop{\mathrm{н.о.к.}}\nolimits} +\def\NOD {\mathop{\mathrm{НОД}}\nolimits} +\def\NOK {\mathop{\mathrm{НОК}}\nolimits} +\def\Proj {\mathop{\mathrm{Пр}}\nolimits} +%\DeclareRobustCommand{\No}{№} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-classiclatin.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-classiclatin.ldf new file mode 100644 index 00000000000..016646a3db2 --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-classiclatin.ldf @@ -0,0 +1,157 @@ +%% +%% This is file `gloss-classiclatin.ldf', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gloss-latin.dtx (with options: `laclassic') +%% ------------------------------------------------------------------ +%% Latin module for polyglossia +%% Copyright (C) Claudio Beccari 2013-2016 +%% Copyright (C) Élie Roux 2016 +%% This work is distributed under the MIT License. +%% +%% See the postamble. +%% ------------------------------------------------------------------ +\ProvidesFile{gloss-classiclatin.ldf} + [2016/09/10 v.1.03 Latin support from polyglossia] +%% + + +\PolyglossiaSetup{classiclatin}{% + hyphennames={classiclatin}, + hyphenmins={2,2}, + frenchspacing=true, + fontsetup=true, +} +\def\classicuclccodes{\lccode`\V=`\u \uccode`\u=`\V} +\def\noclassicuclccodes{\lccode`\V=`\v \uccode`\u=`\U} +\def\classiclatincaptions{% + \def\prefacename{Praefatio}% + \def\refname{Conspectus librorum}% + \def\abstractname{Summarium}% + \def\bibname{Conspectus librorum}% + \def\chaptername{Caput}% + \def\appendixname{Additamentum}% + \def\contentsname{Index}% + \def\listfigurename{Conspectus descriptionum}% + \def\listtablename{Conspectus tabularum}% + \def\indexname{Index rerum notabilium}% + \def\figurename{Descriptio}% + \def\tablename{Tabula}% + \def\partname{Pars}% + \def\enclname{Additur}% + \def\ccname{Exemplar}% + \def\headtoname{\ignorespaces}% + \def\pagename{charta}% + \def\seename{cfr.}% + \def\alsoname{cfr.}% + \def\proofname{Demonstratio}% + \def\glossaryname{Glossarium}% + } + +\def\classiclatindate{% + \def\today{\uppercase\expandafter{\romannumeral\day}% + \space \ifcase\month + \or Januarii\or Februarii\or Martii\or Aprilis\or Maii\or Junii\or + Julii\or Augusti\or Septembris\or Octobris\or Nouembris\or + Decembris\fi + \space \uppercase\expandafter{\romannumeral\year}}} + +\define@boolkey{classiclatin}[classiclatin@]{babelshorthands}[true]{} + +\ifsystem@babelshorthands + \setkeys{classiclatin}{babelshorthands=true} +\else + \setkeys{classiclatin}{babelshorthands=false} +\fi + +\ifcsundef{initiate@active@char}{% + \input{babelsh.def}\initiate@active@char{"}}{} + +\def\classiclatin@shorthands{% + \def\language@group{classiclatin}% + \bbl@activate{"}% + \declare@shorthand{classiclatin}{"}{\relax + \ifmmode + \def\xpgcla@next{''}% + \else + \def\xpgcla@nextdq{\futurelet\xpgla@temp\xpgla@cwm}% + \fi + \xpgcla@nextdq}% +} + +\def\xpgcla@allowhyphens{\bbl@allowhyphens\discretionary{-}{}{}\bbl@allowhyphens} +\newcommand*{\xpgcla@cwm}{\let\xpgcla@@nextdq\relax + \ifcat\noexpand\xpgcla@temp a% + \let\xpgcla@@nextdq\xpgcla@allowhyphens + \else + \ifx\xpgcla@temp\ae + \let\xpgcla@@nextdq\xpgcla@allowhyphens + \else + \ifx\xpgcla@temp\oe + \let\xpgcla@@nextdq\xpgcla@allowhyphens + \else + \if\noexpand\xpgla@temp\string|% + \def\xpgcla@@nextdq{\xpgcla@allowhyphens\@gobble}% + \fi + \fi + \fi + \fi + \xpgla@@nextdq}% +\def\noclassiclatin@shorthands{% + \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}% +} + +\let\xpgcla@savedvalues\empty +\AtEndPreamble{% + \edef\xpgcla@savedvalues{% + \clubpenalty=\the\clubpenalty\space + \@clubpenalty=\the\@clubpenalty\space + \widowpenalty=\the\widowpenalty\space + \finalhyphendemerits=\the\finalhyphendemerits}% +} + +\def\noextras@classiclatin{% + \lccode\string"2019=\z@ + \noclassiclatin@shorthands + \noclassicuclccodes + \xpgcla@savedvalues +} + +\def\blockextras@classiclatin{% + \lccode\string"2019=\string"2019 + \clubpenalty=3000 \@clubpenalty=3000 \widowpenalty=3000 + \finalhyphendemerits=50000000 + \classicuclccodes + \ifclassiclatin@babelshorthands\classiclatin@shorthands\fi +} + +\def\inlineextras@classiclatin{% + \lccode\string"2019=\string"2019 + \classicuclccodes + \ifclassiclatin@babelshorthands\classiclatin@shorthands\fi +} +%% Copyright (C) Claudio Beccari 2013-2016 +%% Copyright (C) Élie Roux 2016 +%% +%% Permission is hereby granted, free of charge, to any person obtaining +%% a copy of this software and associated documentation files +%% (the "Software"), to deal in the Software without restriction, including +%% without limitation the rights to use, copy, modify, merge, publish, +%% distribute, sublicense, and/or sell copies of the Software, and to permit +%% persons to whom the Software is furnished to do so, subject to the following +%% conditions: +%% +%% The above copyright notice and this permission notice shall be included in +%% all copies or substantial portions of the Software. +%% +%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +%% THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +%% IN THE SOFTWARE. +%% +%% End of file `gloss-classiclatin.ldf'. diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf index c76ae47160c..923fc2bb22a 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf @@ -1,36 +1,36 @@ \ProvidesFile{gloss-croatian.ldf}[polyglossia: module for croatian] \PolyglossiaSetup{croatian}{ hyphennames={croatian}, - hyphenmins={2,2}, - indentfirst=true, - fontsetup=true, + hyphenmins={2,2}, % aligned with https://ctan.org/pkg/hrhyph patterns and http://lebesgue.math.hr/~nenad/Diplomski/Maja_Ribaric_2011.pdf + indentfirst=false, % recommendation from Damir Bralić + fontsetup=true } \def\captionscroatian{% - \def\refname{Literatura}% - \def\abstractname{Sažetak}% - \def\bibname{Bibliografija}% - \def\prefacename{Predgovor}% - \def\chaptername{Poglavlje}% - \def\appendixname{Dodatak}% - \def\contentsname{Sadržaj}% - \def\listfigurename{Popis slika}% - \def\listtablename{Popis tablica}% - \def\indexname{Kazalo}% - \def\figurename{Slika}% - \def\tablename{Tablica}% - \def\partname{Dio}% - \def\pagename{Stranica}% - \def\seename{Vidjeti}% - \def\alsoname{Također vidjeti}% - \def\enclname{Prilozi}% - \def\ccname{Kopija}% - \def\headtoname{Prima}% - \def\proofname{Dokaz}% - \def\glossaryname{Pojmovnik}% - } + \def\prefacename{Predgovor}% + \def\refname{Literatura}% + \def\abstractname{Sažetak}% + \def\bibname{Bibliografija}% + \def\chaptername{Poglavlje}% + \def\appendixname{Dodatak}% + \def\contentsname{Sadržaj}% + \def\listfigurename{Popis slika}% + \def\listtablename{Popis tablica}% + \def\indexname{Kazalo}% + \def\figurename{Slika}% + \def\tablename{Tablica}% + \def\partname{Dio}% + \def\enclname{Prilozi}% + \def\ccname{Kopija}% + \def\headtoname{Prima}% + \def\pagename{Stranica}% + \def\seename{Vidjeti}% + \def\alsoname{Također vidjeti}% + \def\proofname{Dokaz}% + \def\glossaryname{Pojmovnik}% +} \def\datecroatian{% - \def\today{\number\day.~\ifcase\month\or + \def\today{\number\day.~\ifcase\month\or siječnja\or veljače\or ožujka\or travnja\or svibnja\or lipnja\or srpnja\or kolovoza\or rujna\or listopada\or studenoga\or prosinca\fi \space \number\year.}} diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf index 291afeb01cf..b0699f716d1 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-english.ldf @@ -104,7 +104,7 @@ \if@british@locale \english@day\space\english@month\space\number\year \else - \english@month\space\english@day, \number\year + \english@month\space\english@day,\space\number\year \fi}% } diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf index 3dbdd18414c..fdffd36cf9d 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-french.ldf @@ -13,6 +13,8 @@ \newluatexattribute\xpg@frpt % \directlua{polyglossia.load_frpt()}% \else + \newXeTeXintercharclass\french@openbrackets % ( ] { + \newXeTeXintercharclass\french@closebrackets % ( ] { \newXeTeXintercharclass\french@punctthin % ! ? ; et autres \newXeTeXintercharclass\french@punctthick % : \newXeTeXintercharclass\french@punctguillstart % « ‹ @@ -22,6 +24,30 @@ \def\xpg@unskip{\ifhmode\ifdim\lastskip>\z@\unskip\fi\fi} \def\xpg@nospace#1{#1} +\ifx\@makefntext\undefined\else + \let\nofrench@makefntext\@makefntext + \long\def\french@makefntext#1{\parindent1em \noindent\quad\ifx\@thefnmark\empty\else\@thefnmark.\space\fi #1} + \let\@makefntext\french@makefntext + \define@boolkey{french}[french@]{frenchfootnote}[true]{% + \def\@tmpa{#1} + \def\@tmptrue{true} + \ifx\@tmpa\@tmptrue + \let\@makefntext\french@makefntext + \else + \let\@makefntext\nofrench@makefntext + \fi + } +\fi + + +\newif\iffrench@automaticspacesaroundguillemets +\define@boolkey{french}[french@]{automaticspacesaroundguillemets}[true]{% + %\def\tmp@true{true}% + %\def\@tmpa{#1}% + %\ifx\@tmpa\tmp@true +} +\french@automaticspacesaroundguillemetstrue + \def\french@punctuation{% \lccode"2019="2019 \ifluatex @@ -41,19 +67,31 @@ \XeTeXcharclass `\» \french@punctguillend \XeTeXcharclass `\‹ \french@punctguillstart \XeTeXcharclass `\› \french@punctguillend + \XeTeXcharclass `\( \french@openbrackets + \XeTeXcharclass `\) \french@closebrackets + \XeTeXcharclass `\] \french@openbrackets + \XeTeXcharclass `\[ \french@closebrackets + \XeTeXcharclass `\{ \french@openbrackets + \XeTeXcharclass `\} \french@closebrackets \XeTeXinterchartoks \z@ \french@punctthin = {\nobreak\thinspace}% \XeTeXinterchartoks \z@ \french@punctthick = {\nobreakspace}% - \XeTeXinterchartoks 255 \french@punctthin = {\xpg@unskip\nobreak\thinspace}% - \XeTeXinterchartoks 255 \french@punctthick = {\xpg@unskip\nobreakspace}% + \XeTeXinterchartoks \xpg@boundaryclass \french@punctthin = {\xpg@unskip\nobreak\thinspace}% + \XeTeXinterchartoks \xpg@boundaryclass \french@punctthick = {\xpg@unskip\nobreakspace}% \XeTeXinterchartoks \french@punctguillstart \z@ = {\nobreakspace}% "«a" -> "« a" % \XeTeXinterchartoks \z@ \french@punctguillstart = {\nobreakspace}% "a«" unchanged? % \XeTeXinterchartoks \french@punctguillend \z@ = {\nobreakspace}% "»a" unchanged? \XeTeXinterchartoks \z@ \french@punctguillend = {\nobreakspace}% "a»" -> "a »" - % \XeTeXinterchartoks \french@punctguillstart 255 = {\nobreakspace\xpg@nospace}% "« " -> "«~" - % \XeTeXinterchartoks 255 \french@punctguillend = {\xpg@unskip\nobreakspace}% " »" -> "~»" + \iffrench@automaticspacesaroundguillemets + \XeTeXinterchartoks \french@punctguillstart \xpg@boundaryclass = {\nobreakspace\xpg@nospace\relax}% "« " -> "«~" + \XeTeXinterchartoks \xpg@boundaryclass \french@punctguillend = {\xpg@unskip\nobreakspace}% " »" -> "~»" + \fi \XeTeXinterchartoks \french@punctguillend \french@punctthin = {\nobreak\thinspace}% "»;" -> "» ;" \XeTeXinterchartoks \french@punctguillend \french@punctthick = {\nobreakspace}% "»:" -> "» :" \XeTeXinterchartoks \french@punctthin \french@punctguillend = {\nobreakspace}% "?»" -> "? »" + \XeTeXinterchartoks \french@openbrackets \french@punctthin = {\xpg@unskip}% "(?" -> "(?" and not "( ?" + \XeTeXinterchartoks \french@punctthin \french@closebrackets = {\xpg@unskip}% "?)" -> "?)" (code not need, just for symetry with previous one) + \XeTeXinterchartoks \french@closebrackets \french@punctthin = {\nobreak\thinspace}% ")?" -> ") ?" + \XeTeXinterchartoks \french@closebrackets \french@punctthick = {\nobreakspace}% "):" -> ") :" \fi } @@ -104,8 +142,8 @@ 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{}% - \def\partname{\protect\@Fpt partie}% + \def\thepart{\@Fpt partie}% + \def\partname{}% \def\pagename{page}% \def\seename{\emph{voir}}% \def\alsoname{\emph{voir aussi}}% @@ -154,8 +192,4 @@ \def\mr{M.\space} \def\mrs{MM.\space} -\ifx\@makefntext\undefined\else -\renewcommand\@makefntext[1]{\quad\ifx\@thefnmark\empty\else\@thefnmark.\space\fi #1} -\fi - \endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf index edc3cb21cf6..8cbdeac2157 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf @@ -113,6 +113,8 @@ \declare@shorthand{german}{""}{\hskip\z@skip}% \declare@shorthand{german}{"~}{\textormath{\leavevmode\hbox{-}}{-}}% \declare@shorthand{german}{"=}{\penalty\@M-\hskip\z@skip}% + \declare@shorthand{german}{"/}{\textormath + {\bbl@allowhyphens\discretionary{/}{}{/}\bbl@allowhyphens}{}}% \def\ck{\allowhyphens\discretionary{k-}{k}{ck}\allowhyphens}% } diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-japanese.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-japanese.ldf new file mode 100644 index 00000000000..6c36af9f15e --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-japanese.ldf @@ -0,0 +1,216 @@ +\ProvidesFile{gloss-japanese.ldf}[polyglossia: module for japanese] +\PolyglossiaSetup{japanese}{ + script=CJK, + language=Japanese, + langtag=JAN, + hyphennames={nohyphenation}, + frenchspacing=false, + fontsetup=true +} + +\def\japanese@capsformat{% + \def\@seccntformat##1{% + \csname pre##1\endcsname% + \csname the##1\endcsname% + \csname post##1\endcsname% + } + \def\postsection{節\space}% + \def\postsubsection{節\space}% + \def\postsubsubsection{節\space}% + \def\presection{第}% + \def\presubsection{第}% + \def\presubsubsection{第}% +} + +\def\captionsjapanese{% + \def\refname{参考文献}% + \def\abstractname{概要}% + \def\bibname{文献目録}% + \def\prefacename{端書き}% + \def\chaptername##1##2{第##1##2 章}% + \def\appendixname{付録}% + \def\contentsname{目次}% + \def\listfigurename{図目次}% + \def\listtablename{表目次}% + \def\indexname{索引}% + \def\figurename{図}% + \def\tablename{表}% + \def\partname##1##2{第##1##2 部}% + \def\pagename##1##2{第##1##2 頁}% + \def\seename{参照}% + \def\alsoname{参照}% + \def\enclname{添付}% + \def\ccname{同報}% + \def\headtoname{宛先}% + \def\proofname{証明}% + \def\glossaryname{用語集}% + } + +\newif\if@WameiReki \@WameiRekifalse% +\newif\if@WameiTosi \@WameiTosifalse% +\newif\if@WameiTuki \@WameiTukifalse% +\newif\if@WameiHi \@WameiHifalse% +\newif\if@IzumoTuki \@IzumoTukifalse% +\newcount\c@TempJNum% + +\def\@JapaneseDigit#1{ + \ifcase#1\or 一\or 二\or 三\or 四\or 五\or + 六\or 七\or 八\or 九\or 十\or + 十一\or 十二\or 十三\or 十四\or 十五\or + 十六\or 十七\or 十八\or 十九\or 廿\or + 廿一\or 廿二\or 廿三\or 廿四\or 廿五\or + 廿六\or 廿七\or 廿八\or 廿九\or 丗\or + 丗一\or 丗二\or 丗三\or 丗四\or 丗五\or + 丗六\or 丗七\or 丗八\or 丗九\or 四十\or + 四十一\or 四十二\or 四十三\or 四十四\or 四十五\or + 四十六\or 四十七\or 四十八\or 四十九\or 五十\or + 五十一\or 五十二\or 五十三\or 五十四\or 五十五\or + 五十六\or 五十七\or 五十八\or 五十九\or 六十\or + 六十一\or 六十二\or 六十三\or 六十四\or 六十五\or + 六十六\or 六十七\or 六十八\or 六十九\or 七十\or + 七十一\or 七十二\or 七十三\or 七十四\or 七十五\or + 七十六\or 七十七\or 七十八\or 七十九\or 八十\or + 八十一\or 八十二\or 八十三\or 八十四\or 八十五\or + 八十六\or 八十七\or 八十八\or 八十九\or 九十\or + 九十一\or 九十二\or 九十三\or 九十四\or 九十五\or + 九十六\or 九十七\or 九十八\or 九十九 + \else + \@ctrerr + \fi\relax +} + +\def\@JapaneseNum#1{ + \c@TempJNum=#1\divide\c@TempJNum by 1000\relax% + \ifnum\c@TempJNum=\z@\c@TempJNum=#1% + \divide\c@TempJNum by 100\relax% + \ifnum\c@TempJNum=\z@\@JapaneseDigit{#1}\relax% + \else + \ifcase\c@TempJNum\or 百\or 二百\or 三百\or 四百\or 五百\or + 六百\or 七百\or 八百\or 九百% + \fi + \c@TempJNum=#1\divide\c@TempJNum by 100\multiply\c@TempJNum by -100\advance\c@TempJNum#1\@JapaneseDigit\c@TempJNum\relax% + \fi + \else + \ifcase\c@TempJNum\or 千\or 二千\or 三千\or 四千\or 五千\or + 六千\or 七千\or 八千\or 九千% + \fi + \c@TempJNum=#1\divide\c@TempJNum by 1000\multiply\c@TempJNum by -1000\advance\c@TempJNum#1\divide\c@TempJNum by 100\relax% + \ifnum\c@TempJNum=\z@\c@TempJNum=#1% + \divide\c@TempJNum by 100\multiply\c@TempJNum by -100\advance\c@TempJNum#1\@JapaneseDigit\c@TempJNum\relax% + \else + \ifcase\c@TempJNum\or 百\or 二百\or 三百\or 四百\or 五百\or + 六百\or 七百\or 八百\or 九百% + \fi + \c@TempJNum=#1\divide\c@TempJNum by 100\multiply\c@TempJNum by -100\advance\c@TempJNum#1\@JapaneseDigit\c@TempJNum\relax% + \fi + \fi +} + +\def\@japanesenumber#1{ + \@tempcnta=#1% + \ifnum\@tempcnta=\z@{〇}% + \else + \ifnum\@tempcnta<\z@{負}% + \multiply\@tempcnta by -1% + \fi + \@tempcntb=\@tempcnta\divide\@tempcntb by 10000\relax% + \ifnum\@tempcntb=\z@\@JapaneseNum% + \@tempcnta% + \else + \@tempcntb=\@tempcnta\divide\@tempcntb by 100000000\relax% + \ifnum\@tempcntb=\z@\@tempcntb=\@tempcnta% + \divide\@tempcntb by 10000% + \@JapaneseNum\@tempcntb{万}\@tempcntb=\@tempcnta% + \divide\@tempcntb by 10000\multiply\@tempcntb by -10000% + \advance\@tempcntb\@tempcnta\relax\@JapaneseNum\@tempcntb% + \else + \@JapaneseNum\@tempcntb{億}\@tempcntb=\@tempcnta% + \divide\@tempcntb by 100000000\multiply\@tempcntb by -100000000% + \advance\@tempcntb\@tempcnta\divide\@tempcntb by 10000\relax% + \ifnum\@tempcntb=\z@% + \else + \@JapaneseNum\@tempcntb{万}% + \fi + \@tempcntb=\@tempcnta\divide\@tempcntb by 10000% + \multiply\@tempcntb by -10000\advance\@tempcntb\@tempcnta% + \@JapaneseNum\@tempcntb% + \fi + \fi + \fi +} + +\def\japanesenumber#1{ + \expandafter\@japanesenumber\csname c@#1\endcsname% +} + +\def\datejapanese{ + { + \ifnum\year<1868% + \xdef\the@WarekiCur{}% + \else + \ifnum\year<1912% + \xdef\the@WarekiCur{明治}\advance\year-1867\relax% + \else + \ifnum\year<1926% + \xdef\the@WarekiCur{大正}\advance\year-1911\relax% + \else + \ifnum\year<1989% + \xdef\the@WarekiCur{昭和}\advance\year-1925\relax% + \else + \xdef\the@WarekiCur{平成}\advance\year-1988\relax% + \fi + \fi + \fi + \fi + \xdef\the@WameiTosi{\the\year}% + } + \def\西暦{\@WameiRekifalse \@WameiTukifalse \@WameiHifalse}% + \def\和暦{\@WameiRekitrue \@WameiTosifalse \@WameiTukifalse \@WameiHifalse}% + \def\和名暦{\@WameiTositrue \@WameiTukitrue \@WameiHitrue}% + \def\数字暦{\@WameiTosifalse \@WameiTukifalse \@WameiHifalse}% + \def\出雲月{\@IzumoTukitrue}% + \def\大和月{\@IzumoTukifalse}% + \def\today{ + \if@WameiReki% + \the@WarekiCur% + \if@WameiTosi% + \@JapaneseNum\the@WameiTosi% + \else + \,\the@WameiTosi% + \fi + \else + \number\year\,% + \fi + {年}% + \if@WameiTuki% + \ifcase\month\or 睦月\or 如月\or 弥生\or 卯月\or 皐月\or + 水無月\or 文月\or 葉月\or 長月\or + \if@IzumoTuki 神在月\else 神無月\fi + \or 霜月\or 師走% + \fi + \else + \,\number\month\,% + {月}% + \fi + \if@WameiHi% + \@JapaneseNum\day% + \else + \,\number\day\,% + \fi + {日} + } +} + +\def\noextras@japanese{% + \japanese@capsformat% +} + +\def\blockextras@japanese{% + \japanese@capsformat% +} + +\def\inlineextras@japanese{% + \japanese@capsformat% +} +% Based on contributions of Toru Inagaki, Norio Iwase, François Charette + diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf index 6efc21a154c..13a4807c5d4 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-korean.ldf @@ -123,7 +123,7 @@ \XeTeXinterchartokenstate\@ne \XeTeXlinebreakpenalty 50 \fi - \XeTeXlinebreakskip 0pt plus.1em minus .01em + \XeTeXlinebreakskip 0pt plus.05em minus .01em \XeTeXlinebreaklocale "ko" } \def\noextras@korean{% @@ -186,9 +186,16 @@ \protected\def\으{\xpg@make@josa \empty 으} \protected\def\로{\으 로} \protected\def\라{\xpg@make@josa 라{이라}} +\def\xpg@make@josa@II{\xpg@make@josa\relax 이} \def\xpg@make@josa@I{% - \ifx\@let@token 라% - \expandafter\xpg@make@josa\expandafter\relax\expandafter 이% + \ifcat\@let@token\xpg@catcode@letter + \expandafter\expandafter\expandafter\count@\expandafter + \xpg@letter@to@num\meaning\@let@token\relax + \ifnum 0\ifnum\count@>"ABFF \ifnum\count@<"D7A4 1\fi\fi>\z@ + \expandafter\expandafter\expandafter\xpg@make@josa@II + \else + \expandafter\expandafter\expandafter\가 + \fi \else \expandafter\가 \fi @@ -277,8 +284,13 @@ % user macro to force zero skip \let\inhibitglue\relax % initialize interchartoks and classes -\let\XeTeXcharclassIgnore \@cclvi -\let\XeTeXcharclassBoundary\@cclv +\ifdim\the\XeTeXversion\XeTeXrevision pt<0.99994pt + \let\XeTeXcharclassIgnore \@cclvi + \let\XeTeXcharclassBoundary\@cclv +\else + \chardef\XeTeXcharclassIgnore =4096 + \chardef\XeTeXcharclassBoundary=4095 +\fi \ifdefined\XeTeXcharclassID\else \ifdefined\xtxHanGlue \let\XeTeXcharclassID\@ne @@ -288,6 +300,7 @@ \newXeTeXintercharclass\XeTeXcharclassID \newXeTeXintercharclass\XeTeXcharclassOP \newXeTeXintercharclass\XeTeXcharclassCL + \global\let\XeTeXcharclassCJ\XeTeXcharclassID \global\let\XeTeXcharclassEX\XeTeXcharclassCL \global\let\XeTeXcharclassIS\XeTeXcharclassCL \global\let\XeTeXcharclassNS\XeTeXcharclassCL @@ -364,10 +377,10 @@ \advance\count@\@ne \repeat % - \XeTeXinterchartoks\XPGKOcharclassAA\XeTeXcharclassID{\XPGKOstartID}% - \XeTeXinterchartoks\XPGKOcharclassAA\XeTeXcharclassOP{\XPGKOstopAA\XPGKOstartOP}% + \XeTeXinterchartoks\XPGKOcharclassAA\XeTeXcharclassID{\XPGKOstopAA\XPGKOlatincjk\XPGKOstartID}% + \XeTeXinterchartoks\XPGKOcharclassAA\XeTeXcharclassOP{\XPGKOstopAA\XPGKOhalfhalf\XPGKOstartOP}% \XeTeXinterchartoks\XPGKOcharclassAA\XeTeXcharclassCL{\XPGKOstopAA\XPGKOstartCL}% - \XeTeXinterchartoks\XPGKOcharclassAA\XPGKOcharclassMD{\XPGKOstopAA\XPGKOstartMD}% + \XeTeXinterchartoks\XPGKOcharclassAA\XPGKOcharclassMD{\XPGKOstopAA\XPGKOnobreak\XPGKOquarterquarter\XPGKOstartMD}% \XeTeXinterchartoks\XPGKOcharclassAA\XPGKOcharclassFS{\XPGKOstopAA\XPGKOstartFS}% \XeTeXinterchartoks\XPGKOcharclassAA\XPGKOcharclassAA{\XPGKOstartAA}% % @@ -377,7 +390,7 @@ \XeTeXinterchartoks\XeTeXcharclassID\XPGKOcharclassMD{\XPGKOstopID\XPGKOnobreak\XPGKOquarterquarter\XPGKOstartMD}% \XeTeXinterchartoks\XeTeXcharclassID\XPGKOcharclassFS{\XPGKOstopID\XPGKOstartFS}% \XeTeXinterchartoks\XeTeXcharclassID\XPGKOcharclassAO{\XPGKOstopID\XPGKOlatincjk}% - \XeTeXinterchartoks\XeTeXcharclassID\XPGKOcharclassAA{\XPGKOstartAA}% + \XeTeXinterchartoks\XeTeXcharclassID\XPGKOcharclassAA{\XPGKOstopID\XPGKOlatincjk\XPGKOstartAA}% % \XeTeXinterchartoks\XeTeXcharclassOP\XeTeXcharclassID{\XPGKOstopOP\XPGKOstartID}% \XeTeXinterchartoks\XeTeXcharclassOP\XeTeXcharclassOP{\XPGKOstopOP\XPGKOstartOP}% @@ -395,7 +408,7 @@ \XeTeXinterchartoks\XeTeXcharclassCL\XPGKOcharclassEX{\XPGKOstopCL\XPGKOnobreak\XPGKOhalfhalf}% \XeTeXinterchartoks\XeTeXcharclassCL\XPGKOcharclassAO{\XPGKOstopCL\XPGKOhalfhalf}% \XeTeXinterchartoks\XeTeXcharclassCL\XPGKOcharclassAC{\XPGKOstopCL\XPGKOnobreak\XPGKOhalfhalf}% - \XeTeXinterchartoks\XeTeXcharclassCL\XPGKOcharclassAA{\XPGKOstopCL\XPGKOstartAA}% + \XeTeXinterchartoks\XeTeXcharclassCL\XPGKOcharclassAA{\XPGKOstopCL\XPGKOhalfhalf\XPGKOstartAA}% % \XeTeXinterchartoks\XPGKOcharclassMD\XeTeXcharclassID{\XPGKOstopMD\XPGKOquarterquarter\XPGKOstartID}% \XeTeXinterchartoks\XPGKOcharclassMD\XeTeXcharclassOP{\XPGKOstopMD\XPGKOquarterquarter\XPGKOstartOP}% @@ -406,7 +419,7 @@ \XeTeXinterchartoks\XPGKOcharclassMD\XPGKOcharclassEX{\XPGKOstopMD\XPGKOnobreak\XPGKOquarterquarter}% \XeTeXinterchartoks\XPGKOcharclassMD\XPGKOcharclassAO{\XPGKOstopMD\XPGKOquarterquarter}% \XeTeXinterchartoks\XPGKOcharclassMD\XPGKOcharclassAC{\XPGKOstopMD\XPGKOnobreak\XPGKOquarterquarter}% - \XeTeXinterchartoks\XPGKOcharclassMD\XPGKOcharclassAA{\XPGKOstopMD\XPGKOstartAA}% + \XeTeXinterchartoks\XPGKOcharclassMD\XPGKOcharclassAA{\XPGKOstopMD\XPGKOquarterquarter\XPGKOstartAA}% % \XeTeXinterchartoks\XPGKOcharclassFS\XeTeXcharclassID{\XPGKOstopFS\XPGKOhalfzero\XPGKOstartID}% \XeTeXinterchartoks\XPGKOcharclassFS\XeTeXcharclassOP{\XPGKOstopFS\XPGKOhalfzero\XPGKOstartOP}% @@ -417,7 +430,7 @@ \XeTeXinterchartoks\XPGKOcharclassFS\XPGKOcharclassEX{\XPGKOstopFS\XPGKOnobreak\XPGKOhalfzero}% \XeTeXinterchartoks\XPGKOcharclassFS\XPGKOcharclassAO{\XPGKOstopFS\XPGKOhalfzero}% \XeTeXinterchartoks\XPGKOcharclassFS\XPGKOcharclassAC{\XPGKOstopFS\XPGKOnobreak\XPGKOhalfzero}% - \XeTeXinterchartoks\XPGKOcharclassFS\XPGKOcharclassAA{\XPGKOstopFS\XPGKOstartAA}% + \XeTeXinterchartoks\XPGKOcharclassFS\XPGKOcharclassAA{\XPGKOstopFS\XPGKOhalfzero\XPGKOstartAA}% % \XeTeXinterchartoks\XPGKOcharclassLD\XeTeXcharclassOP{\XPGKOhalfhalf\XPGKOstartOP}% \XeTeXinterchartoks\XPGKOcharclassLD\XPGKOcharclassMD{\XPGKOnobreak\XPGKOquarterquarter\XPGKOstartMD}% @@ -427,6 +440,7 @@ \XeTeXinterchartoks\XPGKOcharclassEX\XPGKOcharclassMD{\XPGKOnobreak\XPGKOquarterquarter\XPGKOstartMD}% \XeTeXinterchartoks\XPGKOcharclassEX\XPGKOcharclassAO{\XPGKOhalfhalf}% \XeTeXinterchartoks\XPGKOcharclassEX\XPGKOcharclassAC{\XPGKOnobreak\XPGKOhalfhalf}% + \XeTeXinterchartoks\XPGKOcharclassEX\XPGKOcharclassAA{\XPGKOhalfhalf\XPGKOstartAA}% % \XeTeXinterchartoks\XPGKOcharclassAO\XeTeXcharclassOP{\XPGKOnobreak\XPGKOhalfhalf\XPGKOstartOP}% \XeTeXinterchartoks\XPGKOcharclassAO\XPGKOcharclassMD{\XPGKOnobreak\XPGKOquarterquarter\XPGKOstartMD}% @@ -480,63 +494,66 @@ \@tmpa "FE13=\XeTeXcharclassID % ︓ PRESENTATION FORM FOR VERTICAL COLON \@tmpa "FE14=\XeTeXcharclassID % ︔ PRESENTATION FORM FOR VERTICAL SEMICOLON % CJ -\@tmpa "3041=\XeTeXcharclassID -\@tmpa "3043=\XeTeXcharclassID -\@tmpa "3045=\XeTeXcharclassID -\@tmpa "3047=\XeTeXcharclassID -\@tmpa "3049=\XeTeXcharclassID -\@tmpa "3063=\XeTeXcharclassID -\@tmpa "3083=\XeTeXcharclassID -\@tmpa "3085=\XeTeXcharclassID -\@tmpa "3087=\XeTeXcharclassID -\@tmpa "308E=\XeTeXcharclassID -\@tmpa "3095=\XeTeXcharclassID -\@tmpa "3096=\XeTeXcharclassID -\@tmpa "30A1=\XeTeXcharclassID -\@tmpa "30A3=\XeTeXcharclassID -\@tmpa "30A5=\XeTeXcharclassID -\@tmpa "30A7=\XeTeXcharclassID -\@tmpa "30A9=\XeTeXcharclassID -\@tmpa "30C3=\XeTeXcharclassID -\@tmpa "30E3=\XeTeXcharclassID -\@tmpa "30E5=\XeTeXcharclassID -\@tmpa "30E7=\XeTeXcharclassID -\@tmpa "30EE=\XeTeXcharclassID -\@tmpa "30F5=\XeTeXcharclassID -\@tmpa "30F6=\XeTeXcharclassID -\@tmpa "30FC=\XeTeXcharclassID -\count@"31F0 \loop - \expandafter\@tmpa\the\count@=\XeTeXcharclassID - \ifnum\count@<"31FF - \advance\count@\@ne - \repeat -\count@"FF67 \loop - \expandafter\@tmpa\the\count@=\XeTeXcharclassID - \ifnum\count@<"FF70 - \advance\count@\@ne - \repeat +\ifnum\the\XeTeXcharclass"3041=\XeTeXcharclassID \else + \@tmpa "3041=\XeTeXcharclassID % ぁ HIRAGANA LETTER SMALL A + \@tmpa "3043=\XeTeXcharclassID % ぃ HIRAGANA LETTER SMALL I + \@tmpa "3045=\XeTeXcharclassID % ぅ HIRAGANA LETTER SMALL U + \@tmpa "3047=\XeTeXcharclassID % ぇ HIRAGANA LETTER SMALL E + \@tmpa "3049=\XeTeXcharclassID % ぉ HIRAGANA LETTER SMALL O + \@tmpa "3063=\XeTeXcharclassID % っ HIRAGANA LETTER SMALL TU + \@tmpa "3083=\XeTeXcharclassID % ゃ HIRAGANA LETTER SMALL YA + \@tmpa "3085=\XeTeXcharclassID % ゅ HIRAGANA LETTER SMALL YU + \@tmpa "3087=\XeTeXcharclassID % ょ HIRAGANA LETTER SMALL YO + \@tmpa "308E=\XeTeXcharclassID % ゎ HIRAGANA LETTER SMALL WA + \@tmpa "3095=\XeTeXcharclassID % ゕ HIRAGANA LETTER SMALL KA + \@tmpa "3096=\XeTeXcharclassID % ゖ HIRAGANA LETTER SMALL KE + \@tmpa "30A1=\XeTeXcharclassID % ァ KATAKANA LETTER SMALL A + \@tmpa "30A3=\XeTeXcharclassID % ィ KATAKANA LETTER SMALL I + \@tmpa "30A5=\XeTeXcharclassID % ゥ KATAKANA LETTER SMALL U + \@tmpa "30A7=\XeTeXcharclassID % ェ KATAKANA LETTER SMALL E + \@tmpa "30A9=\XeTeXcharclassID % ォ KATAKANA LETTER SMALL O + \@tmpa "30C3=\XeTeXcharclassID % ッ KATAKANA LETTER SMALL TU + \@tmpa "30E3=\XeTeXcharclassID % ャ KATAKANA LETTER SMALL YA + \@tmpa "30E5=\XeTeXcharclassID % ュ KATAKANA LETTER SMALL YU + \@tmpa "30E7=\XeTeXcharclassID % ョ KATAKANA LETTER SMALL YO + \@tmpa "30EE=\XeTeXcharclassID % ヮ KATAKANA LETTER SMALL WA + \@tmpa "30F5=\XeTeXcharclassID % ヵ KATAKANA LETTER SMALL KA + \@tmpa "30F6=\XeTeXcharclassID % ヶ KATAKANA LETTER SMALL KE + \@tmpa "30FC=\XeTeXcharclassID % ー KATAKANA-HIRAGANA PROLONGED SOUND MARK + \count@"31F0 \loop + \expandafter\@tmpa\the\count@=\XeTeXcharclassID + \ifnum\count@<"31FF + \advance\count@\@ne + \repeat + \count@"FF67 \loop + \expandafter\@tmpa\the\count@=\XeTeXcharclassID + \ifnum\count@<"FF70 + \advance\count@\@ne + \repeat +\fi % -\@tmpa "28=\XPGKOcharclassAO % ( -\@tmpa "5B=\XPGKOcharclassAO % [ -\@tmpa "60=\XPGKOcharclassAO % ` -\@tmpa "7B=\XPGKOcharclassAO % { +\@tmpa "28=\XPGKOcharclassAO % ( LEFT PARENTHESIS +\@tmpa "5B=\XPGKOcharclassAO % [ LEFT SQUARE BRACKET +\@tmpa "60=\XPGKOcharclassAO % ` GRAVE ACCENT +\@tmpa "7B=\XPGKOcharclassAO % { LEFT CURLY BRACKET +\@tmpa "AB=\XPGKOcharclassAO % « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK % -\@tmpa "21=\XPGKOcharclassAC % ! -\@tmpa "27=\XPGKOcharclassAC % ' -\@tmpa "29=\XPGKOcharclassAC % ) -\@tmpa "2C=\XPGKOcharclassAC % , -\@tmpa "2E=\XPGKOcharclassAC % . -\@tmpa "3B=\XPGKOcharclassAC % ; -\@tmpa "3F=\XPGKOcharclassAC % ? -\@tmpa "5D=\XPGKOcharclassAC % ] -\@tmpa "7D=\XPGKOcharclassAC % } +\@tmpa "21=\XPGKOcharclassAC % ! EXCLAMATION MARK +\@tmpa "27=\XPGKOcharclassAC % ' APOSTROPHE +\@tmpa "29=\XPGKOcharclassAC % ) RIGHT PARENTHESIS +\@tmpa "2C=\XPGKOcharclassAC % , COMMA +\@tmpa "2E=\XPGKOcharclassAC % . FULL STOP +\@tmpa "3B=\XPGKOcharclassAC % ; SEMICOLON +\@tmpa "3F=\XPGKOcharclassAC % ? QUESTION MARK +\@tmpa "5D=\XPGKOcharclassAC % ] RIGHT SQUARE BRACKET +\@tmpa "7D=\XPGKOcharclassAC % } RIGHT CURLY BRACKET +\@tmpa "BB=\XPGKOcharclassAC % » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK % \@tmpa "2018=\XeTeXcharclassOP % ‘ LEFT SINGLE QUOTATION MARK \@tmpa "201C=\XeTeXcharclassOP % “ LEFT DOUBLE QUOTATION MARK % \@tmpa "2019=\XeTeXcharclassCL % ’ RIGHT SINGLE QUOTATION MARK \@tmpa "201D=\XeTeXcharclassCL % ” RIGHT DOUBLE QUOTATION MARK -\@tmpa "FE10=\XeTeXcharclassCL % ︐ PRESENTATION FORM FOR VERTICAL COMMA % NS \@tmpa "00B7=\XPGKOcharclassMD % · MIDDLE DOT \@tmpa "30FB=\XPGKOcharclassMD % ・ KATAKANA MIDDLE DOT @@ -593,76 +610,208 @@ local glyph_id = node.id("glyph") local hbox_id = node.id("hlist") local vbox_id = node.id("vlist") +local glue_id = node.id("glue") +local penalty_id = node.id("penalty") +local disc_id = node.id("disc") local attr_korean = luatexbase.attributes["xpg@attr@korean"] local attr_josa = luatexbase.attributes["xpg@attr@autojosa"] local nobr_after = { - [0x28] = 1, [0x2D] = 1, [0x2F] = 1, [0x3C] = 1, [0x5B] = 1, - [0x5C] = 1, [0x60] = 1, [0x7B] = 1, [0x7E] = 1, [0x2013] = 1, - [0x2018] = 1, [0x201C] = 1, [0x2329] = 1, [0x3008] = 1, - [0x300A] = 1, [0x300C] = 1, [0x300E] = 1, [0x3010] = 1, - [0x3014] = 1, [0x3016] = 1, [0x3018] = 1, [0x301A] = 1, - [0x301D] = 1, [0xFF08] = 1, [0xFF1C] = 1, [0xFF3B] = 1, - [0xFF5B] = 1, [0xFF5F] = 1, [0xFF62] = 1, + [0x28] = 1, % ( LEFT PARENTHESIS + [0x3C] = 1, % < LESS-THAN SIGN + [0x5B] = 1, % [ LEFT SQUARE BRACKET + [0x60] = 1, % ` GRAVE ACCENT + [0x7B] = 1, % { LEFT CURLY BRACKET + [0xAB] = 1, % « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK + [0x2018] = 1, % ‘ LEFT SINGLE QUOTATION MARK + [0x201C] = 1, % “ LEFT DOUBLE QUOTATION MARK + [0x2329] = 1, % 〈 LEFT-POINTING ANGLE BRACKET + [0x3008] = 1, % 〈 LEFT ANGLE BRACKET + [0x300A] = 1, % 《 LEFT DOUBLE ANGLE BRACKET + [0x300C] = 1, % 「 LEFT CORNER BRACKET + [0x300E] = 1, % 『 LEFT WHITE CORNER BRACKET + [0x3010] = 1, % 【 LEFT BLACK LENTICULAR BRACKET + [0x3014] = 1, % 〔 LEFT TORTOISE SHELL BRACKET + [0x3016] = 1, % 〖 LEFT WHITE LENTICULAR BRACKET + [0x3018] = 1, % 〘 LEFT WHITE TORTOISE SHELL BRACKET + [0x301A] = 1, % 〚 LEFT WHITE SQUARE BRACKET + [0x301D] = 1, % 〝 REVERSED DOUBLE PRIME QUOTATION MARK + [0xFE17] = 1, % ︗ PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET + [0xFE35] = 1, % ︵ PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS + [0xFE37] = 1, % ︷ PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET + [0xFE39] = 1, % ︹ PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET + [0xFE3B] = 1, % ︻ PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET + [0xFE3D] = 1, % ︽ PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET + [0xFE3F] = 1, % ︿ PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET + [0xFE41] = 1, % ﹁ PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET + [0xFE43] = 1, % ﹃ PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET + [0xFE47] = 1, % ﹇ PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET + [0xFE59] = 1, % ﹙ SMALL LEFT PARENTHESIS + [0xFE5B] = 1, % ﹛ SMALL LEFT CURLY BRACKET + [0xFE5D] = 1, % ﹝ SMALL LEFT TORTOISE SHELL BRACKET + [0xFF08] = 1, % ( FULLWIDTH LEFT PARENTHESIS + [0xFF3B] = 1, % [ FULLWIDTH LEFT SQUARE BRACKET + [0xFF5B] = 1, % { FULLWIDTH LEFT CURLY BRACKET + [0xFF5F] = 1, % ⦅ FULLWIDTH LEFT WHITE PARENTHESIS + [0xFF62] = 1, % 「 HALFWIDTH LEFT CORNER BRACKET } -local nobr_before = { - [0x21] = 1, [0x22] = 1, [0x27] = 1, [0x29] = 1, [0x2C] = 1, - [0x2D] = 1, [0x2E] = 1, [0x2F] = 1, [0x3A] = 1, [0x3B] = 1, - [0x3E] = 1, [0x3F] = 1, [0x5C] = 1, [0x5D] = 1, [0x7D] = 1, - [0x7E] = 1, [0xB7] = 1, [0x2013] = 1, [0x2014] = 1, [0x2015] = 1, - [0x2019] = 1, [0x201D] = 1, [0x2025] = 1, [0x2026] = 1, - [0x232A] = 1, [0x3001] = 1, [0x3002] = 1, [0x3005] = 1, - [0x3009] = 1, [0x300B] = 1, [0x300D] = 1, [0x300F] = 1, - [0x3011] = 1, [0x3015] = 1, [0x3017] = 1, [0x3019] = 1, - [0x301B] = 1, [0x301C] = 1, [0x301E] = 1, [0x301F] = 1, - [0x3035] = 1, [0x303B] = 1, [0x303C] = 1, [0x3041] = 2, - [0x3043] = 2, [0x3045] = 2, [0x3047] = 2, [0x3049] = 2, - [0x3063] = 2, [0x3083] = 2, [0x3085] = 2, [0x3087] = 2, - [0x308E] = 2, [0x3095] = 2, [0x3096] = 2, [0x3099] = 1, - [0x309A] = 1, [0x309B] = 1, [0x309C] = 1, [0x309D] = 1, - [0x309E] = 1, [0x30A0] = 1, [0x30A1] = 2, [0x30A3] = 2, - [0x30A5] = 2, [0x30A7] = 2, [0x30A9] = 2, [0x30C3] = 2, - [0x30E3] = 2, [0x30E5] = 2, [0x30E7] = 2, [0x30EE] = 2, - [0x30F5] = 2, [0x30F6] = 2, [0x30FB] = 1, [0x30FC] = 1, - [0x30FD] = 1, [0x30FE] = 1, [0x31F0] = 2, [0x31F1] = 2, - [0x31F2] = 2, [0x31F3] = 2, [0x31F4] = 2, [0x31F5] = 2, - [0x31F6] = 2, [0x31F7] = 2, [0x31F8] = 2, [0x31F9] = 2, - [0x31FA] = 2, [0x31FB] = 1, [0x31FC] = 1, [0x31FD] = 1, - [0x31FE] = 1, [0x31FF] = 1, [0xFF01] = 1, [0xFF09] = 1, - [0xFF0C] = 1, [0xFF0E] = 1, [0xFF1A] = 1, [0xFF1B] = 1, - [0xFF1F] = 1, [0xFF3D] = 1, [0xFF5D] = 1, [0xFF60] = 1, - [0xFF61] = 1, [0xFF63] = 1, [0xFF64] = 1, [0xFF65] = 1, - [0xFF9E] = 1, [0xFF9F] = 1, -} -for i=0x1160, 0x11FF do nobr_before[i] = 2 end -for i=0xD7B0, 0xD7FB do nobr_before[i] = 2 end -for i=0x302A, 0x302F do nobr_before[i] = 1 end +local nobr_before = setmetatable({ + [0x21] = 1, % ! EXCLAMATION MARK + [0x22] = 1, % " QUOTATION MARK + [0x27] = 1, % ' APOSTROPHE + [0x29] = 1, % ) RIGHT PARENTHESIS + [0x2C] = 1, % , COMMA + [0x2D] = 0, % - HYPHEN-MINUS + [0x2E] = 1, % . FULL STOP + [0x2F] = 0, % / SOLIDUS + [0x3A] = 0, % : COLON + [0x3B] = 1, % ; SEMICOLON + [0x3E] = 1, % > GREATER-THAN SIGN + [0x3F] = 1, % ? QUESTION MARK + [0x5C] = 0, % \ REVERSE SOLIDUS + [0x5D] = 1, % ] RIGHT SQUARE BRACKET + [0x7D] = 1, % } RIGHT CURLY BRACKET + [0x7E] = 0, % ~ TILDE + [0xB7] = 1, % · MIDDLE DOT + [0xBB] = 1, % » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK + [0x2013] = 0, % – EN DASH + [0x2014] = 0, % — EM DASH + [0x2015] = 1, % ― HORIZONTAL BAR + [0x2019] = 1, % ’ RIGHT SINGLE QUOTATION MARK + [0x201D] = 1, % ” RIGHT DOUBLE QUOTATION MARK + [0x2025] = 1, % ‥ TWO DOT LEADER + [0x2026] = 1, % … HORIZONTAL ELLIPSIS + [0x232A] = 1, % 〉 RIGHT-POINTING ANGLE BRACKET + [0x3001] = 1, % 、 IDEOGRAPHIC COMMA + [0x3002] = 1, % 。 IDEOGRAPHIC FULL STOP + [0x3005] = 1, % 々 IDEOGRAPHIC ITERATION MARK + [0x3009] = 1, % 〉 RIGHT ANGLE BRACKET + [0x300B] = 1, % 》 RIGHT DOUBLE ANGLE BRACKET + [0x300D] = 1, % 」 RIGHT CORNER BRACKET + [0x300F] = 1, % 』 RIGHT WHITE CORNER BRACKET + [0x3011] = 1, % 】 RIGHT BLACK LENTICULAR BRACKET + [0x3015] = 1, % 〕 RIGHT TORTOISE SHELL BRACKET + [0x3017] = 1, % 〗 RIGHT WHITE LENTICULAR BRACKET + [0x3019] = 1, % 〙 RIGHT WHITE TORTOISE SHELL BRACKET + [0x301B] = 1, % 〛 RIGHT WHITE SQUARE BRACKET + [0x301C] = 1, % 〜 WAVE DASH + [0x301E] = 1, % 〞 DOUBLE PRIME QUOTATION MARK + [0x301F] = 1, % 〟 LOW DOUBLE PRIME QUOTATION MARK + [0x3035] = 1, % 〵 VERTICAL KANA REPEAT MARK LOWER HALF + [0x303B] = 1, % 〻 VERTICAL IDEOGRAPHIC ITERATION MARK + [0x303C] = 1, % 〼 MASU MARK + [0x3041] = 3, % ぁ HIRAGANA LETTER SMALL A + [0x3043] = 3, % ぃ HIRAGANA LETTER SMALL I + [0x3045] = 3, % ぅ HIRAGANA LETTER SMALL U + [0x3047] = 3, % ぇ HIRAGANA LETTER SMALL E + [0x3049] = 3, % ぉ HIRAGANA LETTER SMALL O + [0x3063] = 3, % っ HIRAGANA LETTER SMALL TU + [0x3083] = 3, % ゃ HIRAGANA LETTER SMALL YA + [0x3085] = 3, % ゅ HIRAGANA LETTER SMALL YU + [0x3087] = 3, % ょ HIRAGANA LETTER SMALL YO + [0x308E] = 3, % ゎ HIRAGANA LETTER SMALL WA + [0x3095] = 3, % ゕ HIRAGANA LETTER SMALL KA + [0x3096] = 3, % ゖ HIRAGANA LETTER SMALL KE + [0x3099] = 1, % COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK + [0x309A] = 1, % COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK + [0x309B] = 1, % ゛ KATAKANA-HIRAGANA VOICED SOUND MARK + [0x309C] = 1, % ゜ KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK + [0x309D] = 1, % ゝ HIRAGANA ITERATION MARK + [0x309E] = 1, % ゞ HIRAGANA VOICED ITERATION MARK + [0x30A0] = 1, % ゠ KATAKANA-HIRAGANA DOUBLE HYPHEN + [0x30A1] = 3, % ァ KATAKANA LETTER SMALL A + [0x30A3] = 3, % ィ KATAKANA LETTER SMALL I + [0x30A5] = 3, % ゥ KATAKANA LETTER SMALL U + [0x30A7] = 3, % ェ KATAKANA LETTER SMALL E + [0x30A9] = 3, % ォ KATAKANA LETTER SMALL O + [0x30C3] = 3, % ッ KATAKANA LETTER SMALL TU + [0x30E3] = 3, % ャ KATAKANA LETTER SMALL YA + [0x30E5] = 3, % ュ KATAKANA LETTER SMALL YU + [0x30E7] = 3, % ョ KATAKANA LETTER SMALL YO + [0x30EE] = 3, % ヮ KATAKANA LETTER SMALL WA + [0x30F5] = 3, % ヵ KATAKANA LETTER SMALL KA + [0x30F6] = 3, % ヶ KATAKANA LETTER SMALL KE + [0x30FB] = 1, % ・ KATAKANA MIDDLE DOT + [0x30FC] = 1, % ー KATAKANA-HIRAGANA PROLONGED SOUND MARK + [0x30FD] = 1, % ヽ KATAKANA ITERATION MARK + [0x30FE] = 1, % ヾ KATAKANA VOICED ITERATION MARK + [0xFE30] = 1, % ︰ PRESENTATION FORM FOR VERTICAL TWO DOT LEADER + [0xFE31] = 1, % ︱ PRESENTATION FORM FOR VERTICAL EM DASH + [0xFE32] = 1, % ︲ PRESENTATION FORM FOR VERTICAL EN DASH + [0xFE36] = 1, % ︶ PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS + [0xFE38] = 1, % ︸ PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET + [0xFE3A] = 1, % ︺ PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET + [0xFE3C] = 1, % ︼ PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET + [0xFE3E] = 1, % ︾ PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET + [0xFE40] = 1, % ﹀ PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET + [0xFE42] = 1, % ﹂ PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET + [0xFE44] = 1, % ﹄ PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET + [0xFE48] = 1, % ﹈ PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET + [0xFE5A] = 1, % ﹚ SMALL RIGHT PARENTHESIS + [0xFE5C] = 1, % ﹜ SMALL RIGHT CURLY BRACKET + [0xFE5E] = 1, % ﹞ SMALL RIGHT TORTOISE SHELL BRACKET + [0xFF01] = 1, % ! FULLWIDTH EXCLAMATION MARK + [0xFF09] = 1, % ) FULLWIDTH RIGHT PARENTHESIS + [0xFF0C] = 1, % , FULLWIDTH COMMA + [0xFF0E] = 1, % . FULLWIDTH FULL STOP + [0xFF1A] = 1, % : FULLWIDTH COLON + [0xFF1B] = 1, % ; FULLWIDTH SEMICOLON + [0xFF1F] = 1, % ? FULLWIDTH QUESTION MARK + [0xFF3D] = 1, % ] FULLWIDTH RIGHT SQUARE BRACKET + [0xFF5D] = 1, % } FULLWIDTH RIGHT CURLY BRACKET + [0xFF60] = 1, % ⦆ FULLWIDTH RIGHT WHITE PARENTHESIS + [0xFF61] = 1, % 。 HALFWIDTH IDEOGRAPHIC FULL STOP + [0xFF63] = 1, % 」 HALFWIDTH RIGHT CORNER BRACKET + [0xFF64] = 1, % 、 HALFWIDTH IDEOGRAPHIC COMMA + [0xFF65] = 1, % ・ HALFWIDTH KATAKANA MIDDLE DOT + [0xFF9E] = 1, % ゙ HALFWIDTH KATAKANA VOICED SOUND MARK + [0xFF9F] = 1, % ゚ HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK +}, { __index = function(_,c) + if c >= 0x1160 and c <= 0x11FF then return 2 end + if c >= 0xD7B0 and c <= 0xD7FF then return 2 end + if c >= 0x302A and c <= 0x302F then return 1 end + if c >= 0x31F0 and c <= 0x31FF then return 3 end + if c >= 0xFF67 and c <= 0xFF70 then return 3 end + if c >= 0xFE00 and c <= 0xFE0F then return 1 end + if c >= 0xFE10 and c <= 0xFE19 and not (c == 0xFE17) then return 1 end + if c >= 0xFE50 and c <= 0xFE58 then return 1 end + if c >= 0xE0100 and c <= 0xE01EF then return 1 end + end +}) local function is_cjk (c) - return (c >= 0xAC00 and c <= 0xD7A3) - or (c >= 0x1100 and c <= 0x115F) - or (c >= 0xA960 and c <= 0xA97C) - or (c >= 0x3400 and c <= 0x9FFF) + return (c >= 0xAC00 and c <= 0xD7FF) + or (c >= 0x1100 and c <= 0x11FF) + or (c >= 0xA960 and c <= 0xA97F) + or (c >= 0x2E80 and c <= 0x9FFF) or (c >= 0xF900 and c <= 0xFAFF) - or (c >= 0x2E80 and c <= 0x2FFF) - or (c >= 0x3040 and c <= 0x30FF) - or (c >= 0x20000 and c <= 0x2CEAF) - or (c >= 0x2F800 and c <= 0x2FA1F) - or (nobr_after[c] and c > 0xFF) - or (nobr_before[c] and c > 0xFF) + or (c >= 0xFE10 and c <= 0xFE1F) + or (c >= 0xFE30 and c <= 0xFE6F) + or (c >= 0xFF00 and c <= 0xFFEF) + or (c >= 0x1F100 and c <= 0x1F2FF) + or (c >= 0x20000 and c <= 0x2FA1F) + or (nobr_after[c] and c > 0x2014) + or (nobr_before[c] and c > 0x2014) end local charclass = setmetatable({ [0x2018] = 1, [0x201C] = 1, [0x2329] = 1, [0x3008] = 1, [0x300A] = 1, [0x300C] = 1, [0x300E] = 1, [0x3010] = 1, [0x3014] = 1, [0x3016] = 1, [0x3018] = 1, [0x301A] = 1, - [0x301D] = 1, [0xFF08] = 1, [0xFF3B] = 1, [0xFF5B] = 1, - [0xFF5F] = 1, [0xFF62] = 1, [0x2019] = 2, [0x201D] = 2, - [0x232A] = 2, [0x3001] = 2, [0x3009] = 2, [0x300B] = 2, - [0x300D] = 2, [0x300F] = 2, [0x3011] = 2, [0x3015] = 2, - [0x3017] = 2, [0x3019] = 2, [0x301B] = 2, [0x301E] = 2, - [0x301F] = 2, [0xFF09] = 2, [0xFF0C] = 2, [0xFF3D] = 2, - [0xFF5D] = 2, [0xFF60] = 2, [0xFF63] = 2, [0xFF64] = 2, - [0x00B7] = 3, [0x30FB] = 3, [0xFF1A] = 3, [0xFF1B] = 3, - [0xFF65] = 3, [0x3002] = 4, [0xFF0E] = 4, [0xFF61] = 4, - [0x2015] = 5, [0x2025] = 5, [0x2026] = 5, [0xFF01] = 6, + [0x301D] = 1, [0xFE17] = 1, [0xFE35] = 1, [0xFE37] = 1, + [0xFE39] = 1, [0xFE3B] = 1, [0xFE3D] = 1, [0xFE3F] = 1, + [0xFE41] = 1, [0xFE43] = 1, [0xFE47] = 1, [0xFF08] = 1, + [0xFF3B] = 1, [0xFF5B] = 1, [0xFF5F] = 1, [0xFF62] = 1, + [0x2019] = 2, [0x201D] = 2, [0x232A] = 2, [0x3001] = 2, + [0x3009] = 2, [0x300B] = 2, [0x300D] = 2, [0x300F] = 2, + [0x3011] = 2, [0x3015] = 2, [0x3017] = 2, [0x3019] = 2, + [0x301B] = 2, [0x301E] = 2, [0x301F] = 2, [0xFE10] = 2, + [0xFE11] = 2, [0xFE18] = 2, [0xFE36] = 2, [0xFE38] = 2, + [0xFE3A] = 2, [0xFE3C] = 2, [0xFE3E] = 2, [0xFE40] = 2, + [0xFE42] = 2, [0xFE44] = 2, [0xFE48] = 2, [0xFF09] = 2, + [0xFF0C] = 2, [0xFF3D] = 2, [0xFF5D] = 2, [0xFF60] = 2, + [0xFF63] = 2, [0xFF64] = 2, [0x00B7] = 3, [0x30FB] = 3, + [0xFF1A] = 3, [0xFF1B] = 3, [0xFF65] = 3, [0x3002] = 4, + [0xFE12] = 4, [0xFF0E] = 4, [0xFF61] = 4, [0x2015] = 5, + [0x2025] = 5, [0x2026] = 5, [0xFE19] = 5, [0xFE30] = 5, + [0xFE31] = 5, [0xFE15] = 6, [0xFE16] = 6, [0xFF01] = 6, [0xFF1F] = 6, }, { __index = function() return 0 end }) local intercharclass = { [0] = @@ -679,13 +828,13 @@ local function get_new_penalty (p) penalty.penalty = p return penalty end -local function get_new_glue (wd, st, sh) +local function get_new_glue (wd, st, sh, sto, sho) local glue = node.new("glue") - local spec = node.new("glue_spec") - spec.width = wd - spec.stretch = st - spec.shrink = sh - glue.spec = spec + glue.width = wd or 0 + glue.stretch = st or 0 + glue.shrink = sh or 0 + glue.stretch_order = sto or 0 + glue.shrink_order = sho or 0 return glue end local function get_font_size (fid, space) @@ -703,9 +852,7 @@ local function glyph_to_box (head, curr, class) local size = get_font_size(g.font) head, curr = node.remove(head, curr) g.next, g.prev = nil, nil - local hss = get_new_glue(0, 65536, 65536) - hss.spec.stretch_order = 2 - hss.spec.shrink_order = 2 + local hss = get_new_glue(0, 65536, 65536, 2, 2) if class == 1 then h, hss.next, g.prev = hss, g, hss elseif class == 2 or class == 4 then @@ -714,6 +861,7 @@ local function glyph_to_box (head, curr, class) local hss2 = node.copy(hss) h, hss.next, g.prev, g.next, hss2.prev = hss, g, hss, hss2, g end + h = nodes.simple_font_handler(h) local box = node.hpack(h, size, "exactly") head, curr = node.insert_before(head, curr, box) return head, curr @@ -739,35 +887,64 @@ local function insert_penalty_glue (head, curr, f, var, x) if x then glue = get_new_glue(size/2, size/4, size/8) else - glue = get_new_glue(0, size/5, size/50) + glue = get_new_glue(0, size/10, size/50) end head, curr = node.insert_after(head, curr, glue) return head, curr end +local function avoid_widow_char (head) + local curr = node.tail(head) + while curr do + if curr.id == glyph_id then + local c = curr.char or 0 + if not nobr_before[c] or nobr_before[c] == 3 then + local var = node.has_attribute(curr, attr_korean) + if var and is_cjk(c) then + curr = curr.prev + if curr and curr.id == glue_id then + curr = curr.prev + if curr then + local pv = var == 1 and 500 or 1000 + if curr.id == penalty_id then + if curr.penalty < pv then curr.penalty = pv end + else + node.insert_after(head, curr, get_new_penalty(pv)) + end + end + end + end + break + end + end + curr = curr.prev + end +end local function korean_break (head, lb) local curr = head while curr do if curr.id == glyph_id then local var = node.has_attribute(curr, attr_korean) if var then - local c, f = curr.char, curr.font - local cc = charclass[c] + local c, f = curr.char or 0, curr.font or 0 + local cc, cjkc = charclass[c], is_cjk(c) if var > 0 and cc > 0 and cc < 5 then head, curr = glyph_to_box(head, curr, cc) end local next = curr.next if next and next.id == glyph_id then - local n = next.char + local n = next.char or 0 local nc = charclass[n] local nobr = nobr_before[n] or nobr_after[c] if var > 0 and intercharclass[cc][nc] then head, curr = insert_cjk_penalty_glue(head, curr, f, var, cc, nc, nobr) elseif not nobr then - local cjkc, cjkn = is_cjk(c), is_cjk(n) - if var > 0 and (cjkc or cjkn) and not (cjkc and cjkn) then - head, curr = insert_penalty_glue(head, curr, f, var, true) - elseif lb and (cjkc or cjkn) then - head, curr = insert_penalty_glue(head, curr, f, var) + local cjkn = is_cjk(n) + if cjkc or cjkn then + if var > 0 and not (cjkc and cjkn) and not (nobr_before[c] == 0) then + head, curr = insert_penalty_glue(head, curr, f, var, true) + elseif lb then + head, curr = insert_penalty_glue(head, curr, f, var) + end end end end @@ -775,6 +952,7 @@ local function korean_break (head, lb) end curr = curr.next end + if lb then avoid_widow_char(head) end return head end local josa_table = { @@ -834,9 +1012,9 @@ local josa_code = setmetatable({ local function get_prev_char (p) while p do if p.id == glyph_id then - local pc = p.char + local pc = p.char or 0 if not nobr_after[pc] then - if not nobr_before[pc] or nobr_before[pc] == 2 then + if not nobr_before[pc] or nobr_before[pc] >= 2 then return pc end end @@ -853,13 +1031,13 @@ local function auto_josa (head) if curr.id == glyph_id then local josa = node.has_attribute(curr, attr_josa) if josa then - local cc = curr.char + local cc = curr.char or 0 if josa == 0 then josa = josa_code[get_prev_char(curr.prev) or 0x30] end if cc == 0xC774 then local n = curr.next - if n and n.id == glyph_id and n.char == 0xB77C then + if n and n.char and n.char >= 0xAC00 and n.char <= 0xD7A3 then else cc = 0xAC00 end @@ -886,8 +1064,8 @@ local function reorder_tm (head) local curr, tone = node.tail(head) while curr do if curr.id == glyph_id and node.has_attribute(curr, attr_korean) then - local c, wd = curr.char, curr.width - if (c == 0x302E or c == 0x302F) and wd and wd > 0 then + local c, wd = curr.char or 0, curr.width or 0 + if (c == 0x302E or c == 0x302F) and wd > 0 then tone = curr elseif tone and not nobr_before[c] then head = node.remove(head, tone) @@ -916,6 +1094,24 @@ else luatexbase.add_to_callback(name, func, desc, 1) end end +prepend_to_callback ("hyphenate", + function(head) + local in_callback = luatexbase.in_callback or luatexbase.priority_in_callback + if in_callback("hyphenate", "polyglossia.disable_hyphenation") then + return false + end + local curr = head + while curr do + if curr.id == glyph_id and node.has_attribute(curr, attr_korean) and is_cjk(curr.char or 0) then + if curr.subtype == 1 then + curr.subtype = 0 + end + end + curr = curr.next + end + lang.hyphenate(head) + end, + "polyglossia.lang_korean") prepend_to_callback ("pre_linebreak_filter", function(head) head = auto_josa(head) diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf index e1160c6782e..435c43d3f77 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-latin.ldf @@ -1,138 +1,150 @@ -% !TEX encoding = UTF-8 Unicode -\ProvidesFile{gloss-latin.ldf}[polyglossia: module for latin] -\PolyglossiaSetup{latin}{ -hyphennames={latin}, -% hyphenmins={2,2}, - frenchspacing=true, - fontsetup=true, -} - - -\define@boolkey{latin}[latin@]{babelshorthands}[true]{} - - -\ifsystem@babelshorthands - \setkeys{latin}{babelshorthands=true} -\else - \setkeys{latin}{babelshorthands=false} -\fi - - -\ifcsundef{initiate@active@char}{% -\input{babelsh.def}% -}{}\initiate@active@char{"}% +%% +%% This is file `gloss-latin.ldf', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gloss-latin.dtx (with options: `lamodern') +%% ------------------------------------------------------------------ +%% Latin module for polyglossia +%% Copyright (C) Claudio Beccari 2013-2016 +%% Copyright (C) Élie Roux 2016 +%% This work is distributed under the MIT License. +%% +%% See the postamble. +%% ------------------------------------------------------------------ +\ProvidesFile{gloss-latin.ldf} + [2016/09/10 v.1.03 Latin support from polyglossia] +%% - -\def\latin@shorthands{% - \bbl@activate{"}% - \def\language@group{latin}% - \declare@shorthand{latin}{"}{% - \relax\ifmmode - \def\xpgla@next{''}% - \else - \def\xpgla@next{\futurelet\xpgla@temp\xpgla@cwm}% - \fi - \xpgla@next}% -} - - -\def\xpgla@allowhyphens{\bbl@allowhyphens\discretionary{-}{}{}\bbl@allowhyphens} -\newcommand*{\xpgla@cwm}{\let\xpgla@@next\relax - \ifcat\noexpand\xpgla@temp a% - \let\xpgla@@next\xpgla@allowhyphens - \else - \ifx\xpgla@temp\ae - \let\xpgla@@next\xpgla@allowhyphens - \else - \ifx\xpgla@temp\oe - \let\xpgla@@next\xpgla@allowhyphens - \else - \if\noexpand\xpgla@temp\string|% - \def\xpgla@@next{\xpgla@allowhyphens\@gobble}% - \fi - \fi - \fi - \fi - \xpgla@@next}% - -\def\nolatin@shorthands{% - \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}% +\PolyglossiaSetup{latin}{% + hyphennames={latin}, + hyphenmins={2,2}, + frenchspacing=true, + fontsetup=true, } - - -% set modern as default -\def\latin@variant{\l@latin}% -\ifluatex\xpg@set@language@luatex@iv{latin}\fi -\def\captionslatin{\modernlatincaptions}% -\def\datelatin{\modernlatindate}% \def\classicuclccodes{\lccode`\V=`\u \uccode`\u=`\V} - +\def\noclassicuclccodes{\lccode`\V=`\v \uccode`\u=`\U} \def\tmp@modern{modern} \def\tmp@medieval{medieval} -\def\tmp@classic{classic} +\unless\ifluatex + \def\tmp@classic{classic} + \def\tmp@liturgical{liturgical} +\fi +\newif\ifmedieval\medievalfalse +\newif\ifclassic\classicfalse +\define@boolkey{latin}[latin@]{ecclesiastic}[true]{} +\let\latin@variant\l@latin +\ifluatex + \ifcsname l@latin\endcsname\xpg@set@language@luatex@ii{latin}\fi +\fi +\def\captionslatin{\latincaptions}% +\def\datelatin{\latindate}% \define@key{latin}{variant}[modern]{% \def\@tempa{#1}% \ifx\@tempa\tmp@medieval - \def\latin@variant{\l@latin}% - \xpg@set@language@luatex@iv{latin} - \def\captionslatin{\medievallatincaptions}% - \def\datelatin{\classiclatindate}% + \ifluatex + \ifcsname l@latin\endcsname\xpg@set@language@luatex@ii{latin}\fi + \fi + \let\latin@variant\l@latin + \xpg@set@language@luatex@ii{latin} + \medievaltrue \classictrue \classicuclccodes \xpg@info{Option: Medieval Latin}% \else \ifx\@tempa\tmp@classic - \xpg@ifdefined{classiclatin}{% - \def\latin@variant{\l@classiclatin}% - \xpg@set@language@luatex@iv{classiclatin}% - }{% - \xpg@nopatterns{Classic Latin}% - \adddialect\l@classiclatin\l@latin - \def\latin@variant{\l@latin}% - }% - \def\captionslatin{\modernlatincaptions}% - \def\datelatin{\classiclatindate}% - \classicuclccodes + \unless\ifluatex + \unless\ifcsname l@classiclatin\endcsname + \xpg@nopatterns{Classic Latin}% + \adddialect\l@classiclatin\l@latin + \let\latin@variant\l@latin + \else + \let\latin@variant\l@classiclatin + \fi + \fi + \medievalfalse\classictrue\classicuclccodes \xpg@info{Option: Classic Latin}% \else - \def\latin@variant{\l@latin}% - \xpg@set@language@luatex@iv{latin} - \def\captionslatin{\modernlatincaptions}% - \def\datelatin{\modernlatindate}% - \xpg@info{Option: Modern Latin}% + \ifx\@tempa\tmp@liturgical\unless\ifluatex + \unless\ifcsname l@liturgicallatin\endcsname + \xpg@nopatterns{Liturgical Latin}% + \adddialect\l@liturgicallatin\l@latin + \def\latin@variant{\l@latin}% + \else + \let\latin@variant\l@liturgicallatin + \fi + \medievaltrue\classicfalse + \xpg@info{Option: Liturgical Latin}\fi + \else + \ifx\@tempa\tmp@modern + \let\latin@variant\l@latin + \ifluatex\xpg@set@language@luatex@ii{latin}\fi + \xpg@info{Option: Modern Latin}% + \else + \def\latin@variant{\l@nohyphenation}% + \PackageWarning{polyglossia}{% + *******************\MessageBreak + No hyphenation set for \@tempa + *******************\MessageBreak + }{}% + \fi + \fi \fi \fi } \def\latin@language{\language=\latin@variant}% +\ifluatex + \PackageWarning{polyglossia}{\MessageBreak\MessageBreak + *****************\MessageBreak + The ecclesiastic option is not active\MessageBreak + when typesetting with LuaLaTeX\MessageBreak + *****************\MessageBreak + \MessageBreak}{} + \else + \def\ecclesiasticlatin@punctuation{% + \def\xpg@unskip{\ifhmode\ifdim\lastskip>\z@\unskip\fi\fi} + \lccode\string"2019=\string"2019 + \newXeTeXintercharclass\ecclesiasticlatin@punctthin + \newXeTeXintercharclass\ecclesiasticlatin@punctguillstart + \newXeTeXintercharclass\ecclesiasticlatin@punctguillend + \XeTeXinterchartokenstate=1 + \XeTeXcharclass `\! \ecclesiasticlatin@punctthin + \XeTeXcharclass `\? \ecclesiasticlatin@punctthin + \XeTeXcharclass `\; \ecclesiasticlatin@punctthin + \XeTeXcharclass `\: \ecclesiasticlatin@punctthin + \XeTeXcharclass `\« \ecclesiasticlatin@punctguillstart + \XeTeXcharclass `\» \ecclesiasticlatin@punctguillend + \XeTeXinterchartoks \z@ \ecclesiasticlatin@punctthin = {\penalty\@M + \hskip.2\fontdimen2\font \@plus\z@\@minus\z@}% + \XeTeXinterchartoks 255 \ecclesiasticlatin@punctthin = {\xpg@unskip} + \XeTeXinterchartoks \ecclesiasticlatin@punctguillstart \z@ = {\penalty\@M + \hskip.2\fontdimen2\font \@plus\z@\@minus\z@\ignorespaces} + \XeTeXinterchartoks \z@ \ecclesiasticlatin@punctguillend = {\xpg@unskip + \penalty\@M\hskip.2\fontdimen2\font \@plus\z@\@minus\z@} + } -\def\modernlatincaptions{% - \def\prefacename{Praefatio}% - \def\refname{Conspectus librorum}% - \def\abstractname{Summarium}% - \def\bibname{Conspectus librorum}% - \def\chaptername{Caput}% - \def\appendixname{Additamentum}% - \def\contentsname{Index}% - \def\listfigurename{Conspectus descriptionum}% - \def\listtablename{Conspectus tabularum}% - \def\indexname{Index rerum notabilium}% - \def\figurename{Descriptio}% - \def\tablename{Tabula}% - \def\partname{Pars}% - \def\enclname{Additur}% - \def\ccname{Exemplar}% - \def\headtoname{\ignorespaces}% - \def\pagename{charta}% - \def\seename{cfr.}% - \def\alsoname{cfr.}% - \def\proofname{Demonstratio}% - \def\glossaryname{Glossarium}% - } - -\def\medievallatincaptions{% - \def\prefacename{Præfatio}% + \def\noecclesiasticlatin@punctuation{% + \lccode\string"2019=\z@ + \XeTeXcharclass `\! \z@ + \XeTeXcharclass `\? \z@ + \XeTeXcharclass `\; \z@ + \XeTeXcharclass `\: \z@ + \XeTeXcharclass `\« \z@ + \XeTeXcharclass `\» \z@ + \XeTeXinterchartokenstate=0 + } + \let\latin@original@makefntext\@makefntext + \newcommand\latin@ecclesiastic@makefntext[1]{% + \parindent 1em \noindent + \latin@Makefnmark{\enspace #1}} + \newcommand\latin@Makefnmark{\hbox{\normalfont\@thefnmark.}} +\fi +\setkeys{latin}{variant,ecclesiastic=false} +\def\latincaptions{% + \def\prefacename{\ifmedieval Præfatio\else Praefatio\fi}% \def\refname{Conspectus librorum}% \def\abstractname{Summarium}% \def\bibname{Conspectus librorum}% @@ -155,36 +167,107 @@ hyphennames={latin}, \def\glossaryname{Glossarium}% } -\def\modernlatindate{% +\def\latindate{% \def\today{\uppercase\expandafter{\romannumeral\day}% \space \ifcase\month% - \or Januarii\or Februarii\or Martii\or Aprilis\or Maji\or Junii\or% - Julii\or Augusti\or Septembris\or Octobris\or Novembris\or% - Decembris\fi% + \or Januarii\or Februarii\or Martii\or Aprilis\or Maji\or + Junii\or Julii\or Augusti\or Septembris\or Octobris\or + \ifclassic Nouembris\else Novembris\fi + \or Decembris\fi% \space \uppercase\expandafter{\romannumeral\year}}} +%%%%%%%%% Latin shorthands + +\define@boolkey{latin}[latin@]{babelshorthands}[true]{} + +\ifsystem@babelshorthands + \setkeys{latin}{babelshorthands=true} +\else + \setkeys{latin}{babelshorthands=false} +\fi +\ifcsundef{initiate@active@char}{% +\input{babelsh.def}% +\initiate@active@char{"}% +\initiate@active@char{'}% +}{} +\def\latin@shorthands{% + \def\language@group{latin}% + \bbl@activate{"}% + \declare@shorthand{latin}{"}{\relax + \ifmmode + \def\xpgla@nextdq{''}% + \else + \def\xpgla@nextdq{\futurelet\xpgla@temp\xpgla@cwm}% + \fi + \xpgla@nextdq}% + \bbl@activate{'}% + \declare@shorthand{latin}{'}{\relax + \ifmmode + \def\xpgla@nextsq{'}% + \else + \def\xpgla@nextsq{\futurelet\xpgla@temp@A\xpgla@putacute}% + \fi + \xpgla@nextsq}% +} +\def\xpgla@allowhyphens{\bbl@allowhyphens + \discretionary{-}{}{}\bbl@allowhyphens} +\newcommand*{\xpgla@cwm}{\let\xpgla@@nextdq\relax + \ifcat\noexpand\xpgla@temp a% + \let\xpgla@@nextdq\xpgla@allowhyphens + \else + \ifx\xpgla@temp\ae + \let\xpgla@@nextdq\xpgla@allowhyphens + \else + \ifx\xpgla@temp\oe + \let\xpgla@@nextdq\xpgla@allowhyphens + \else + \if\noexpand\xpgla@temp\string|% + \def\xpgla@@nextdq{\xpgla@allowhyphens\@gobble}% + \fi + \fi + \fi + \fi + \xpgla@@nextdq}% +\def\xpgla@putacute#1{\let\xpgla@nextsq\relax% +\if a\xpgla@temp@A + æ\kern-0.175em^^^^0301\kern0.175em\xpgla@allowhyphens +\else +\if o\xpgla@temp@A + œ\kern-0.175em^^^^0301\kern0.175em\xpgla@allowhyphens +\else + \if æ\xpgla@temp@A + æ^^^^0301% + \else + \if œ\xpgla@temp@A + œ^^^^0301% + \else + \string'% + \fi + \fi +\fi +\fi}% + +\def\nolatin@shorthands{% + \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}% + \@ifundefined{initiate@active@char}{}{\bbl@deactivate{'}}% +} -\def\classiclatindate{% - \def\today{\uppercase\expandafter{\romannumeral\day}% - \space \ifcase\month - \or Januarii\or Februarii\or Martii\or Aprilis\or Maii\or Junii\or - Julii\or Augusti\or Septembris\or Octobris\or Nouembris\or - Decembris\fi - \space \uppercase\expandafter{\romannumeral\year}}} - \let\xpgla@savedvalues\empty -\AtEndPreamble{% the user or the class might define different values +\AtEndPreamble{% \edef\xpgla@savedvalues{% \clubpenalty=\the\clubpenalty\space \@clubpenalty=\the\@clubpenalty\space \widowpenalty=\the\widowpenalty\space \finalhyphendemerits=\the\finalhyphendemerits} } - - \def\noextras@latin{% \lccode\string"2019=\z@ \nolatin@shorthands \xpgla@savedvalues + \noclassicuclccodes + \iflatin@ecclesiastic + \unless\ifluatex\noecclesiasticlatin@punctuation + \let\@makefntext\latin@original@makefntext\fi + \fi } \def\blockextras@latin{% @@ -192,11 +275,39 @@ hyphennames={latin}, \clubpenalty=3000 \@clubpenalty=3000 \widowpenalty=3000 \finalhyphendemerits=50000000 \iflatin@babelshorthands\latin@shorthands\fi + \iflatin@ecclesiastic\unless\ifluatex\ecclesiasticlatin@punctuation + \let\@makefntext\latin@ecclesiastic@makefntext\fi + \fi } \def\inlineextras@latin{% \lccode\string"2019=\string"2019 \iflatin@babelshorthands\latin@shorthands\fi + \iflatin@ecclesiastic + \unless\ifluatex\ecclesiasticlatin@punctuation + \let\@makefntext\latin@ecclesiastic@makefntext\fi + \fi } - -\endinput +%% Copyright (C) Claudio Beccari 2013-2016 +%% Copyright (C) Élie Roux 2016 +%% +%% Permission is hereby granted, free of charge, to any person obtaining +%% a copy of this software and associated documentation files +%% (the "Software"), to deal in the Software without restriction, including +%% without limitation the rights to use, copy, modify, merge, publish, +%% distribute, sublicense, and/or sell copies of the Software, and to permit +%% persons to whom the Software is furnished to do so, subject to the following +%% conditions: +%% +%% The above copyright notice and this permission notice shall be included in +%% all copies or substantial portions of the Software. +%% +%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +%% THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +%% IN THE SOFTWARE. +%% +%% End of file `gloss-latin.ldf'. diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf index d7f37afdf86..db4c564ce6f 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf @@ -1,11 +1,10 @@ % Translated by Paulius Sladkevičius -% See also http://github.com/fc7/polyglossia/issues#issue/6 \ProvidesFile{gloss-lithuanian.ldf}[polyglossia: module for lithuanian] \PolyglossiaSetup{lithuanian}{ hyphennames={lithuanian}, hyphenmins={2,2}, - fontsetup=true, + fontsetup=true } \def\captionslithuanian{% @@ -21,7 +20,6 @@ \def\indexname{Rodyklė}% \def\figurename{pav.}% \def\tablename{lentelė}% - %\def\thepart{}% Roman numerals are fine \def\partname{Dalis}% \def\pagename{puslapis}% \def\seename{žiūrėk}% @@ -32,6 +30,7 @@ \def\proofname{Įrodymas}% \def\glossaryname{Terminų žodynas}% } + \def\datelithuanian{% \def\lithuanianmonth{\ifcase\month\or sausio\or @@ -45,18 +44,18 @@ rugsėjo\or spalio\or lapkričio\or - gruodžio\fi} + gruodžio\fi}% \def\today{\number\year~m.~\lithuanianmonth~\number\day~d.}% } \def\blockextras@lithuanian{% \let\fnum@figure@orig\fnum@figure - \let\fnum@table@orig\fnum@table \def\fnum@figure{\thefigure\nobreakspace\figurename}% + \let\fnum@table@orig\fnum@table \def\fnum@table{\thetable\nobreakspace\tablename}% } -\def\noblockextras@lithuanian{% +\def\noextras@lithuanian{% \let\fnum@figure\fnum@figure@orig \let\fnum@table\fnum@table@orig } diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-liturgicallatin.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-liturgicallatin.ldf new file mode 100644 index 00000000000..b38f23635dc --- /dev/null +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-liturgicallatin.ldf @@ -0,0 +1,185 @@ +%% +%% This is file `gloss-liturgicallatin.ldf', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% gloss-latin.dtx (with options: `laliturgic') +%% ------------------------------------------------------------------ +%% Latin module for polyglossia +%% Copyright (C) Claudio Beccari 2013-2016 +%% Copyright (C) Élie Roux 2016 +%% This work is distributed under the MIT License. +%% +%% See the postamble. +%% ------------------------------------------------------------------ +\ProvidesFile{gloss-liturgiclatin.ldf} + [2016/09/10 v.1.03 Latin support from polyglossia] +%% + + +\PolyglossiaSetup{liturgicallatin}{% + hyphennames={liturgicallatin}, + hyphenmins={2,2}, + frenchspacing=true, + fontsetup=true, +} +\def\liturgicallatincaptions{% + \def\prefacename{Præfatio}% + \def\refname{Conspectus librorum}% + \def\abstractname{Summarium}% + \def\bibname{Conspectus librorum}% + \def\chaptername{Caput}% + \def\appendixname{Additamentum}% + \def\contentsname{Index}% + \def\listfigurename{Conspectus descriptionum}% + \def\listtablename{Conspectus tabularum}% + \def\indexname{Index rerum notabilium}% + \def\figurename{Descriptio}% + \def\tablename{Tabula}% + \def\partname{Pars}% + \def\enclname{Additur}% + \def\ccname{Exemplar}% + \def\headtoname{\ignorespaces}% + \def\pagename{charta}% + \def\seename{cfr.}% + \def\alsoname{cfr.}% + \def\proofname{Demonstratio}% + \def\glossaryname{Glossarium}% + } + +\def\liturgicallatindate{% + \def\today{\uppercase\expandafter{\romannumeral\day}% + \space \ifcase\month% + \or Januarii\or Februarii\or Martii\or Aprilis\or Maji\or Junii\or% + Julii\or Augusti\or Septembris\or Octobris\or Novembris\or% + Decembris\fi% + \space \uppercase\expandafter{\romannumeral\year}}} + +\define@boolkey{liturgicallatin}[liturgicallatin@]{babelshorthands}[true]{} + +\ifsystem@babelshorthands + \setkeys{liturgicallatin}{babelshorthands=true} +\else + \setkeys{liturgicallatin}{babelshorthands=false} +\fi + +\ifcsundef{initiate@active@char}{% + \input{babelsh.def}% + \initiate@active@char{"}% + \initiate@active@char{'}% +}{} + +\def\liturgicallatin@shorthands{% + \def\language@group{liturgicallatin}% + \bbl@activate{"}% + \declare@shorthand{liturgicallatin}{"}{\relax + \ifmmode + \def\xpglla@next{''}% + \else + \def\xpglla@nextdq{\futurelet\xpglla@temp\xpglla@cwm}% + \fi + \xpglla@nextdq}% + \bbl@activate{'}% + \declare@shorthand{liturgicallatin}{'}{\relax + \ifmmode + \def\xpglla@nextsq{'}% + \else + \def\xpglla@nextsq{\futurelet\temp@A\xpglla@putacute}% + \fi + \xpgla@nextsq}% +} + +\def\xpglla@allowhyphens{\bbl@allowhyphens + \discretionary{-}{}{}\bbl@allowhyphens} + +\newcommand*{\xpglla@cwm}{\let\xpglla@@nextdq\relax + \ifcat\noexpand\xpglla@temp a% + \let\xpglla@@nextdq\xpglla@allowhyphens + \else + \ifx\xpglla@temp\ae + \let\xpglla@@nextdq\xpglla@allowhyphens + \else + \ifx\xpglla@temp\oe + \let\xpglla@@nextdq\xpglla@allowhyphens + \else + \if\noexpand\xpglla@temp\string|% + \def\xpglla@@nextdq{\xpglla@allowhyphens\@gobble}% + \fi + \fi + \fi + \fi + \xpglla@@nextdq}% + +\def\xpglla@putacute#1{\let\xpglla@nextsq\relax% +\if a\xpglla@temp@A + æ\kern-0.175em^^^^0301\kern0.175em\xpglla@allowhyphens +\else +\if o\xpglla@temp@A + œ\kern-0.175em^^^^0301\kern0.175em\xpglla@allowhyphens +\else + \if æ\xpglla@temp@A + æ^^^^0301% + \else + \if œ\xpglla@temp@A + œ^^^^0301% + \else + \string'% + \fi + \fi +\fi +\fi}% +\def\noliturgicallatin@shorthands{% + \@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}% + \@ifundefined{initiate@active@char}{}{\bbl@deactivate{'}}% +} + +\let\xpglla@savedvalues\empty +\AtEndPreamble{% + \edef\xpglla@savedvalues{% + \clubpenalty=\the\clubpenalty\space + \@clubpenalty=\the\@clubpenalty\space + \widowpenalty=\the\widowpenalty\space + \finalhyphendemerits=\the\finalhyphendemerits}% +} + +\def\noextras@liturgicallatin{% + \lccode\string"2019=\z@ + \noliturgicallatin@shorthands + \xpglla@savedvalues +} + +\def\blockextras@liturgicallatin{% + \lccode\string"2019=\string"2019 + \clubpenalty=3000 \@clubpenalty=3000 \widowpenalty=3000 + \finalhyphendemerits=50000000 + \ifliturgicallatin@babelshorthands\liturgicallatin@shorthands\fi +} + +\def\inlineextras@liturgicallatin{% + \lccode\string"2019=\string"2019 + \ifliturgicallatin@babelshorthands\liturgicallatin@shorthands\fi +} +%% Copyright (C) Claudio Beccari 2013-2016 +%% Copyright (C) Élie Roux 2016 +%% +%% Permission is hereby granted, free of charge, to any person obtaining +%% a copy of this software and associated documentation files +%% (the "Software"), to deal in the Software without restriction, including +%% without limitation the rights to use, copy, modify, merge, publish, +%% distribute, sublicense, and/or sell copies of the Software, and to permit +%% persons to whom the Software is furnished to do so, subject to the following +%% conditions: +%% +%% The above copyright notice and this permission notice shall be included in +%% all copies or substantial portions of the Software. +%% +%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +%% THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +%% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +%% IN THE SOFTWARE. +%% +%% End of file `gloss-liturgicallatin.ldf'. diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-magyar.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-magyar.ldf index 3f6839a932f..ea5f534e7a8 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-magyar.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-magyar.ldf @@ -5,6 +5,16 @@ fontsetup=true, } +\frenchspacing + +% change 'táblázat x.x' to 'x.x. táblázat' +\newcommand{\@magyar@fnum@table}{\thetable.~\tablename} +\let\fnum@table\@magyar@fnum@table + +% change 'ábra x.x' to 'x.x. ábra' +\newcommand{\@magyar@fnum@figure}{\thefigure.~\figurename} +\let\fnum@figure\@magyar@fnum@figure + \def\captionsmagyar{% \def\refname{Hivatkozások}% \def\abstractname{Kivonat}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf index 59c94fd8296..dc1a429be09 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-marathi.ldf @@ -11,7 +11,7 @@ and may look very wrong.} \RequirePackage{devanagaridigits} \PolyglossiaSetup{marathi}{ - script=Devaganari, + script=Devanagari, scripttag=deva, langtag=MAR, hyphennames={marathi}, diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf index 45563f50fc8..d2c86a33406 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf @@ -169,9 +169,18 @@ % The following is based on some ideas from ruscor.sty \def\russian@capsformat{% - \def\@seccntformat##1{\csname pre##1\endcsname% - \csname the##1\endcsname% - \csname post##1\endcsname}% + \ifdef{\KOMAScript}{% + \renewcommand{\chapterformat}{\prechapter\thechapter\postchapter}% + \renewcommand{\sectionformat}{\presection\thesection\postsection}% + \renewcommand{\subsectionformat}{\presubsection\thesubsection\postsubsection}% + \renewcommand{\subsubsectionformat}{\presubsubsection\thesubsubsection\postsubsubsection}% + \renewcommand{\paragraphformat}{\preparagraph\theparagraph\postparagraph}% + \renewcommand{\subparagraphformat}{\presubparagraph\thesubparagraph\postsubparagraph}% + }{% + \def\@seccntformat##1{\csname pre##1\endcsname% + \csname the##1\endcsname% + \csname post##1\endcsname}% + }% \def\@aftersepkern{\hspace{0.5em}}% \def\postchapter{.\@aftersepkern}% \def\postsection{.\@aftersepkern}% @@ -214,7 +223,16 @@ } \def\noextras@russian{% - \def\@seccntformat##1{\csname the##1\endcsname\quad}% = LaTeX kernel + \ifdef{\KOMAScript}{% + \renewcommand{\chapterformat}{\thechapter\autodot\enskip}% + \renewcommand{\sectionformat}{\thesection\autodot\enskip}% + \renewcommand{\subsectionformat}{\thesubsection\autodot\enskip}% + \renewcommand{\subsubsectionformat}{\thesubsubsection\autodot\enskip}% + \renewcommand{\paragraphformat}{\theparagraph\autodot\enskip}% + \renewcommand{\subparagraphformat}{\thesubparagraph\autodot\enskip}% + }{% + \def\@seccntformat##1{\csname the##1\endcsname\quad}% = LaTeX kernel + }% \ifcyrillic@numerals\norussian@numbers\fi \norussian@shorthands% } diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf index 287620615c4..3b102d09854 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-sanskrit.ldf @@ -36,6 +36,11 @@ \def\fontsetup@sanskrit@Telugu{% \def\xpg@scripttag@sanskrit{telu}% \xpg@fontsetup@nonlatin{sanskrit}} +%% DW +\def\fontsetup@sanskrit@Latin{% + \def\xpg@scripttag@sanskrit{latn}% + \xpg@fontsetup@latin{sanskrit}} +%% DW \setkeys{sanskrit}{Script} %sets the default for Devanagari diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf index 45100d23e89..726225cad5c 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-ukrainian.ldf @@ -13,6 +13,70 @@ %TODO localalph } +\newif\ifcyrillic@numerals +\define@key{ukrainian}{numerals}[latin]{% +\ifstrequal{#1}{cyrillic}% +{\cyrillic@numeralstrue} +{\cyrillic@numeralsfalse}% +} + +\define@boolkey{ukrainian}[ukrainian@]{babelshorthands}[false]{} + +\setkeys{ukrainian}{numerals} + +\ifsystem@babelshorthands +\setkeys{ukrainian}{babelshorthands=true} +\else +\setkeys{ukrainian}{babelshorthands=false} +\fi + +\ifcsundef{initiate@active@char}{% +\input{babelsh.def}% +\initiate@active@char{"}% +}{} + +\def\ukrainian@shorthands{% +\bbl@activate{"}% +\def\language@group{ukrainian}% +% \declare@shorthand{ukrainian}{"`}{„}% +% \declare@shorthand{ukrainian}{"'}{“}% +% \declare@shorthand{ukrainian}{"<}{«}% +% \declare@shorthand{ukrainian}{">}{»}% +\declare@shorthand{ukrainian}{""}{\hskip\z@skip}% +\declare@shorthand{ukrainian}{"~}{\textormath{\leavevmode\hbox{-}}{-}}% +\declare@shorthand{ukrainian}{"=}{\nobreak-\hskip\z@skip}% +\declare@shorthand{ukrainian}{"|}{\textormath{\nobreak\discretionary{-}{}{\kern.03em}\allowhyphens}{}}% +\declare@shorthand{ukrainian}{"-}{% +\def\ukrainian@sh@tmp{% +\if\ukrainian@sh@next-\expandafter\ukrainian@sh@emdash +\else\expandafter\ukrainian@sh@hyphen\fi +}% +\futurelet\ukrainian@sh@next\ukrainian@sh@tmp}% +\def\ukrainian@sh@hyphen{% +\nobreak\-\bbl@allowhyphens}% +\def\ukrainian@sh@emdash##1##2{\cdash-##1##2}% +\def\cdash##1##2##3{\def\tempx@{##3}% +\def\tempa@{-}\def\tempb@{~}\def\tempc@{*}% +\ifx\tempx@\tempa@\@Acdash\else +\ifx\tempx@\tempb@\@Bcdash\else +\ifx\tempx@\tempc@\@Ccdash\else +\errmessage{Wrong usage of cdash}\fi\fi\fi}% +\def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi +\cyrdash\hskip.2em\ignorespaces}% +\def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi +\nobreak\cyrdash\penalty\exhyphenpenalty\hskip\z@skip\ignorespaces}% +\def\@Ccdash{\leavevmode +\nobreak\cyrdash\nobreak\hskip.35em\ignorespaces}% +\ifx\cyrdash\undefined +\def\cyrdash{\hbox to.8em{--\hss--}} +\fi +\declare@shorthand{ukrainian}{",}{\nobreak\hskip.2em\ignorespaces}% +} + +\def\noukrainian@shorthands{% +\@ifundefined{initiate@active@char}{}{\bbl@deactivate{"}}% +} + \def\captionsukrainian{% \def\refname{Література}% \def\abstractname{Анотація}% @@ -54,6 +118,25 @@ грудня\fi% \space\number\year~р.}} +% The following is based on some ideas from ruscor.sty +\def\ukrainian@capsformat{% +\def\@seccntformat##1{\csname pre##1\endcsname% +\csname the##1\endcsname% +\csname post##1\endcsname}% +\def\@aftersepkern{\hspace{0.5em}}% +\def\postchapter{.\@aftersepkern}% +\def\postsection{.\@aftersepkern}% +\def\postsubsection{.\@aftersepkern}% +\def\postsubsubsection{.\@aftersepkern}% +\def\postparagraph{.\@aftersepkern}% +\def\postsubparagraph{.\@aftersepkern}% +\def\prechapter{}% +\def\presection{}% +\def\presubsection{}% +\def\presubsubsection{}% +\def\preparagraph{}% +\def\presubparagraph{}} + \def\Asbuk#1{\expandafter\ukrainian@Alph\csname c@#1\endcsname} \def\ukrainian@Alph#1{\ifcase#1\or А\or Б\or В\or Г\or Д\or Е\or Є\or Ж\or @@ -79,9 +162,24 @@ \let\@alph\latin@alph% } -\endinput +\def\noextras@ukrainian{% +\def\@seccntformat##1{\csname the##1\endcsname\quad}% = LaTeX kernel +\ifcyrillic@numerals\noukrainian@numbers\fi +\noukrainian@shorthands% +} + +\def\blockextras@ukrainian{% +\ukrainian@capsformat% +\ifcyrillic@numerals\ukrainian@numbers\fi +\ifukrainian@babelshorthands\ukrainian@shorthands\fi +} -%TODO? stuff from Babel +\def\inlineextras@ukrainian{% +\ifukrainian@babelshorthands\ukrainian@shorthands\fi% +} + +%%% stuff from Babel +% make it optional? \def\sh{\mathop{\operator@font sh}\nolimits} \def\ch{\mathop{\operator@font ch}\nolimits} \def\tg{\mathop{\operator@font tg}\nolimits} @@ -96,8 +194,10 @@ \def\nsk{\mathop{\mathrm{н.с.к.}}\nolimits} \def\NSD{\mathop{\mathrm{НСД}}\nolimits} \def\NSK{\mathop{\mathrm{НСК}}\nolimits} -\def\nod{\mathop{\mathrm{н.о.д.}}\nolimits} % ?????? -\def\nok{\mathop{\mathrm{н.о.к.}}\nolimits} % ?????? -\def\NOD{\mathop{\mathrm{НОД}}\nolimits} % ?????? -\def\NOK{\mathop{\mathrm{НОК}}\nolimits} % ?????? +\def\nod{\mathop{\mathrm{н.о.д.}}\nolimits} +\def\nok{\mathop{\mathrm{н.о.к.}}\nolimits} +\def\NOD{\mathop{\mathrm{НОД}}\nolimits} +\def\NOK{\mathop{\mathrm{НОК}}\nolimits} \def\Proj{\mathop{\mathrm{пр}}\nolimits} + +\endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-vietnamese.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-vietnamese.ldf index 96969508254..a0b6176fed2 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-vietnamese.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-vietnamese.ldf @@ -18,10 +18,10 @@ \def\appendixname{Phụ lục}% \def\contentsname{Mục lục}% \def\listfigurename{Danh sách hình vẽ}% - \def\listtablename{Danh sách bẳng}% + \def\listtablename{Danh sách bảng}% \def\indexname{Chỉ mục}% \def\figurename{Hình}% - \def\tablename{Bẳng}% + \def\tablename{Bảng}% \def\partname{Phần}% \def\pagename{Trang}% \def\seename{Xem}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia.lua index bd1afa5e912..463b3d2fe3b 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia.lua +++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia.lua @@ -3,8 +3,9 @@ require('luatex-hyphen') local luatexhyphen = luatexhyphen local byte = unicode.utf8.byte +local module_name = "polyglossia" local polyglossia_module = { - name = "polyglossia", + name = module_name, version = 1.3, date = "2013/05/11", description = "Polyglossia", @@ -13,8 +14,14 @@ local polyglossia_module = { license = "CC0" } -local error, warning, info, log = - luatexbase.provides_module(polyglossia_module) +luatexbase.provides_module(polyglossia_module) + +local log_info = function(message) + luatexbase.module_info(module_name, message) +end +local log_warning = function(message) + luatexbase.module_warning(module_name, message) +end polyglossia = polyglossia or {} local polyglossia = polyglossia @@ -103,7 +110,7 @@ end local function newloader(langentry) loaded_language = polyglossia.newloader_loaded_languages[langentry] if loaded_language then - texio.write_nl('term and log', 'Language ' .. langentry .. ' already loaded; id is ' .. lang.id(loaded_language)) + log_info('Language ' .. langentry .. ' already loaded; id is ' .. lang.id(loaded_language)) -- texio.write_nl('term and log', 'Language ' .. langentry .. ' already loaded with patterns ' .. tostring(loaded_language) .. '; id is ' .. lang.id(loaded_language)) -- texio.write_nl('term and log', 'Language ' .. langentry .. ' already loaded with patterns ' .. loaded_language['patterns'] .. '; id is ' .. lang.id(loaded_language)) return lang.id(loaded_language) @@ -112,15 +119,16 @@ local function newloader(langentry) if langdata and langdata['special'] == 'language0' then return 0 end if langdata then - print("Language data for " .. langentry) + local s = "Language data for " .. langentry for k, v in pairs(langdata) do - print(k, tostring(v)) + s = s .. "\n" .. k .. "\t" .. tostring(v) end polyglossia.newloader_max_langid = polyglossia.newloader_max_langid + 1 -- langobject = lang.new(newloader_max_langid) lang.new(); lang.new(); lang.new() langobject = lang.new() - texio.write_nl('term and log', langdata.patterns) + s = s .. "\npatterns: " .. langdata.patterns + log_info(s) if langdata.patterns and langdata.patterns ~= '' then pattfilepath = kpse.find_file(langdata.patterns) if pattfilepath then @@ -139,10 +147,10 @@ local function newloader(langentry) end polyglossia.newloader_loaded_languages[langentry] = langobject - texio.write_nl('term and log', 'Language ' .. langentry .. ' was not yet loaded; created with id ' .. lang.id(langobject)) + log_info('Language ' .. langentry .. ' was not yet loaded; created with id ' .. lang.id(langobject)) return lang.id(langobject) else - texio.write_nl('term and log', 'Language ' .. langentry .. ' not found in language.dat.lua') + log_warning('Language ' .. langentry .. ' not found in language.dat.lua') return 255 end end diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty b/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty index ceece27c094..4fd15fd17ae 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}[2015/03/25 v1.42.4 +\ProvidesPackage{polyglossia}[2018/04/07 v1.43 Alternative to Babel for XeLaTeX and LuaLaTeX] \RequirePackage{etoolbox} \RequirePackage{makecmds} @@ -26,6 +26,11 @@ \RequireLuaModule{polyglossia} \fi +% 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} + % Useful for getting list of loaded languages and variants. Like babel's bbl@loaded \let\xpg@loaded\@empty \let\xpg@vloaded\@empty @@ -70,14 +75,15 @@ %% Used by the language definitions files for right-to-left languages \def\RequireBidi{% - \ifxetex - \RequirePackage{bidi} - \else\ifluatex - \RequirePackage{luabidi} - \else - \xpg@warning{You’re running a TeX engine that is not LuaTeX or XeTeX.\MessageBreak -That is almost guaranteed to cause problems.} - \fi\fi} + \AtBeginDocument{% + \ifxetex + \RequirePackage{bidi} + \else\ifluatex + \RequirePackage{luabidi} + \else + \xpg@warning{You’re running a TeX engine that is not LuaTeX or XeTeX.\MessageBreak + That is almost guaranteed to cause problems.} + \fi\fi}} %% compatibility with babel \let\addto\gappto% gappto is defined in etoolbox -- cgit v1.2.3