From 933416e3a978851a263168f5daad76eea18de483 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 20 Jul 2021 03:00:52 +0000 Subject: CTAN sync 202107200300 --- .../themes/beamertheme-focus/README.md | 2 +- .../beamertheme-focus/beamercolorthemefocus.sty | 2 +- .../beamertheme-focus/beamerfontthemefocus.sty | 2 +- .../beamertheme-focus/beamerinnerthemefocus.sty | 2 +- .../beamertheme-focus/beamerouterthemefocus.sty | 4 +- .../themes/beamertheme-focus/beamerthemefocus.sty | 4 +- macros/latex/contrib/easybook/easybook.dtx | 17 +- macros/latex/contrib/easybook/easybook.pdf | Bin 591338 -> 591310 bytes macros/latex/contrib/fithesis/VERSION.tex | 2 +- macros/latex/contrib/fithesis/fithesis.dtx | 2 +- macros/latex/contrib/fithesis/fithesis.pdf | Bin 762456 -> 766017 bytes .../fithesis/logo/mu/fithesis-base-color.pdf | Bin 15158 -> 15062 bytes .../fithesis/logo/mu/fithesis-base-czech-color.pdf | Bin 3936 -> 3841 bytes .../fithesis/logo/mu/fithesis-base-czech.pdf | Bin 3931 -> 3837 bytes .../logo/mu/fithesis-base-english-color.pdf | Bin 3865 -> 3771 bytes .../fithesis/logo/mu/fithesis-base-english.pdf | Bin 3861 -> 3767 bytes .../contrib/fithesis/logo/mu/fithesis-base.pdf | Bin 15988 -> 15892 bytes .../fithesis/logo/mu/fithesis-econ-color.pdf | Bin 12402 -> 12305 bytes .../fithesis/logo/mu/fithesis-econ-czech-color.pdf | Bin 4699 -> 4605 bytes .../fithesis/logo/mu/fithesis-econ-czech.pdf | Bin 4694 -> 4600 bytes .../logo/mu/fithesis-econ-english-color.pdf | Bin 3126 -> 3033 bytes .../fithesis/logo/mu/fithesis-econ-english.pdf | Bin 3122 -> 3027 bytes .../contrib/fithesis/logo/mu/fithesis-econ.pdf | Bin 12932 -> 12838 bytes .../contrib/fithesis/logo/mu/fithesis-fi-color.pdf | Bin 11804 -> 11709 bytes .../fithesis/logo/mu/fithesis-fi-czech-color.pdf | Bin 3797 -> 3702 bytes .../contrib/fithesis/logo/mu/fithesis-fi-czech.pdf | Bin 3792 -> 3697 bytes .../fithesis/logo/mu/fithesis-fi-english-color.pdf | 59 +- .../fithesis/logo/mu/fithesis-fi-english.pdf | Bin 2821 -> 2727 bytes .../latex/contrib/fithesis/logo/mu/fithesis-fi.pdf | Bin 11626 -> 11529 bytes .../fithesis/logo/mu/fithesis-fsps-color.pdf | Bin 11296 -> 11199 bytes .../fithesis/logo/mu/fithesis-fsps-czech-color.pdf | Bin 4752 -> 4657 bytes .../fithesis/logo/mu/fithesis-fsps-czech.pdf | Bin 4747 -> 4652 bytes .../logo/mu/fithesis-fsps-english-color.pdf | Bin 3404 -> 3307 bytes .../fithesis/logo/mu/fithesis-fsps-english.pdf | Bin 3399 -> 3303 bytes .../contrib/fithesis/logo/mu/fithesis-fsps.pdf | Bin 11730 -> 11634 bytes .../fithesis/logo/mu/fithesis-fss-color.pdf | Bin 10854 -> 10758 bytes .../fithesis/logo/mu/fithesis-fss-czech-color.pdf | Bin 4602 -> 4507 bytes .../fithesis/logo/mu/fithesis-fss-czech.pdf | Bin 4597 -> 4502 bytes .../logo/mu/fithesis-fss-english-color.pdf | Bin 3191 -> 3097 bytes .../fithesis/logo/mu/fithesis-fss-english.pdf | Bin 3185 -> 3091 bytes .../contrib/fithesis/logo/mu/fithesis-fss.pdf | Bin 11590 -> 11492 bytes .../fithesis/logo/mu/fithesis-law-color.pdf | Bin 17676 -> 17579 bytes .../fithesis/logo/mu/fithesis-law-czech-color.pdf | Bin 3881 -> 3786 bytes .../fithesis/logo/mu/fithesis-law-czech.pdf | Bin 3875 -> 3780 bytes .../logo/mu/fithesis-law-english-color.pdf | 65 +- .../fithesis/logo/mu/fithesis-law-english.pdf | 67 +- .../contrib/fithesis/logo/mu/fithesis-law.pdf | Bin 18433 -> 18339 bytes .../fithesis/logo/mu/fithesis-med-color.pdf | Bin 10052 -> 9955 bytes .../fithesis/logo/mu/fithesis-med-czech-color.pdf | Bin 3876 -> 3782 bytes .../fithesis/logo/mu/fithesis-med-czech.pdf | Bin 3871 -> 3776 bytes .../logo/mu/fithesis-med-english-color.pdf | Bin 2945 -> 2852 bytes .../fithesis/logo/mu/fithesis-med-english.pdf | Bin 2943 -> 2849 bytes .../contrib/fithesis/logo/mu/fithesis-med.pdf | Bin 10590 -> 10494 bytes .../fithesis/logo/mu/fithesis-ped-color.pdf | Bin 9997 -> 9901 bytes .../fithesis/logo/mu/fithesis-ped-czech-color.pdf | Bin 4214 -> 4119 bytes .../fithesis/logo/mu/fithesis-ped-czech.pdf | Bin 4208 -> 4113 bytes .../logo/mu/fithesis-ped-english-color.pdf | 62 +- .../fithesis/logo/mu/fithesis-ped-english.pdf | Bin 2987 -> 2894 bytes .../contrib/fithesis/logo/mu/fithesis-ped.pdf | Bin 10492 -> 10396 bytes .../fithesis/logo/mu/fithesis-pharm-color.pdf | Bin 41212 -> 41114 bytes .../logo/mu/fithesis-pharm-czech-color.pdf | Bin 4103 -> 4008 bytes .../fithesis/logo/mu/fithesis-pharm-czech.pdf | Bin 4098 -> 4002 bytes .../logo/mu/fithesis-pharm-english-color.pdf | Bin 3168 -> 3073 bytes .../fithesis/logo/mu/fithesis-pharm-english.pdf | Bin 3163 -> 3069 bytes .../contrib/fithesis/logo/mu/fithesis-pharm.pdf | Bin 41192 -> 41093 bytes .../fithesis/logo/mu/fithesis-phil-color.pdf | Bin 11692 -> 11596 bytes .../fithesis/logo/mu/fithesis-phil-czech-color.pdf | Bin 3897 -> 3802 bytes .../fithesis/logo/mu/fithesis-phil-czech.pdf | Bin 3892 -> 3797 bytes .../logo/mu/fithesis-phil-english-color.pdf | Bin 3224 -> 3128 bytes .../fithesis/logo/mu/fithesis-phil-english.pdf | Bin 3219 -> 3123 bytes .../contrib/fithesis/logo/mu/fithesis-phil.pdf | Bin 12180 -> 12083 bytes .../fithesis/logo/mu/fithesis-sci-color.pdf | Bin 24425 -> 24328 bytes .../fithesis/logo/mu/fithesis-sci-czech-color.pdf | Bin 4492 -> 4398 bytes .../fithesis/logo/mu/fithesis-sci-czech.pdf | Bin 4487 -> 4393 bytes .../logo/mu/fithesis-sci-english-color.pdf | Bin 3162 -> 3068 bytes .../fithesis/logo/mu/fithesis-sci-english.pdf | Bin 3157 -> 3063 bytes .../contrib/fithesis/logo/mu/fithesis-sci.pdf | Bin 25494 -> 25396 bytes macros/latex/contrib/fithesis/style/mu/base.dtx | 2 +- macros/latex/contrib/fithesis/style/mu/econ.dtx | 2 +- macros/latex/contrib/fithesis/style/mu/fsps.dtx | 27 +- macros/latex/contrib/fithesis/style/mu/law.dtx | 20 +- macros/latex/contrib/fithesis/style/mu/med.dtx | 23 +- macros/latex/contrib/fithesis/style/mu/sci.dtx | 39 +- macros/latex/contrib/letterswitharrows/README.txt | 6 +- .../letterswitharrows/letterswitharrows.dtx | 23 +- .../letterswitharrows/letterswitharrows.pdf | Bin 455408 -> 494439 bytes macros/latex/required/babel/base/README.md | 21 +- macros/latex/required/babel/base/babel.dtx | 1667 ++++++++++---------- macros/latex/required/babel/base/babel.ins | 3 +- macros/latex/required/babel/base/babel.pdf | Bin 846875 -> 852005 bytes macros/latex/required/babel/base/bbcompat.dtx | 2 +- 91 files changed, 1119 insertions(+), 1006 deletions(-) (limited to 'macros/latex') diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/README.md b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/README.md index 16e4bad77c..6851759db6 100644 --- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/README.md +++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/README.md @@ -1,4 +1,4 @@ -# Focus v2.8.1 +# Focus v2.9.0 A presentation theme for LaTeX Beamer that aims at a clean and minimalist design, so to minimize distractions and put the focus directly on the content. diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamercolorthemefocus.sty b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamercolorthemefocus.sty index 80dd314b67..3f4455c795 100644 --- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamercolorthemefocus.sty +++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamercolorthemefocus.sty @@ -1,4 +1,4 @@ -% Copyright (C) 2018-2020 Pasquale Claudio Africa and the LaTeX community. +% Copyright (C) 2018-2021 Pasquale Claudio Africa and the LaTeX community. % A full list of contributors can be found at % % https://github.com/elauksap/focus-beamertheme diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerfontthemefocus.sty b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerfontthemefocus.sty index 380af92254..2319885a1a 100644 --- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerfontthemefocus.sty +++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerfontthemefocus.sty @@ -1,4 +1,4 @@ -% Copyright (C) 2018-2020 Pasquale Claudio Africa and the LaTeX community. +% Copyright (C) 2018-2021 Pasquale Claudio Africa and the LaTeX community. % A full list of contributors can be found at % % https://github.com/elauksap/focus-beamertheme diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerinnerthemefocus.sty b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerinnerthemefocus.sty index 637c95cd7d..557893c43a 100644 --- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerinnerthemefocus.sty +++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerinnerthemefocus.sty @@ -1,4 +1,4 @@ -% Copyright (C) 2018-2020 Pasquale Claudio Africa and the LaTeX community. +% Copyright (C) 2018-2021 Pasquale Claudio Africa and the LaTeX community. % A full list of contributors can be found at % % https://github.com/elauksap/focus-beamertheme diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerouterthemefocus.sty b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerouterthemefocus.sty index 437ec26857..9031ac0ca3 100644 --- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerouterthemefocus.sty +++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerouterthemefocus.sty @@ -1,4 +1,4 @@ -% Copyright (C) 2018-2020 Pasquale Claudio Africa and the LaTeX community. +% Copyright (C) 2018-2021 Pasquale Claudio Africa and the LaTeX community. % A full list of contributors can be found at % % https://github.com/elauksap/focus-beamertheme @@ -188,6 +188,8 @@ \else% \ifx\beamer@focus@numbering\beamer@focus@numberingfullbar% \setbeamertemplate{footline}[fullbar]% + \else% + \setbeamertemplate{footline}[none]% \fi% \fi% % diff --git a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerthemefocus.sty b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerthemefocus.sty index 2e6b57d4ca..37509b17d9 100644 --- a/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerthemefocus.sty +++ b/macros/latex/contrib/beamer-contrib/themes/beamertheme-focus/beamerthemefocus.sty @@ -1,4 +1,4 @@ -% Copyright (C) 2018-2020 Pasquale Claudio Africa and the LaTeX community. +% Copyright (C) 2018-2021 Pasquale Claudio Africa and the LaTeX community. % A full list of contributors can be found at % % https://github.com/elauksap/focus-beamertheme @@ -19,7 +19,7 @@ % along with beamerthemefocus. If not, see . \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{beamerthemefocus}[2020/11/18 v2.8.1 Focus Beamer theme] +\ProvidesPackage{beamerthemefocus}[2021/07/19 v2.9.0 Focus Beamer theme] \mode diff --git a/macros/latex/contrib/easybook/easybook.dtx b/macros/latex/contrib/easybook/easybook.dtx index 90a255b903..8d62a25c7d 100644 --- a/macros/latex/contrib/easybook/easybook.dtx +++ b/macros/latex/contrib/easybook/easybook.dtx @@ -28,7 +28,7 @@ % % \title{\sffamily easybook 文档类手册} % \author{瞿毅} -% \date{2021/07/18\hskip\ccwd\relax v1.27j\thanks{\url{https://gitee.com/texl3/easybook}}} +% \date{2021/07/19\hskip\ccwd\relax v1.27K\thanks{\url{https://gitee.com/texl3/easybook}}} % % \maketitle % \begin{abstract} @@ -148,7 +148,7 @@ % cjkfont = % \end{syntax} % 中文字体采用 \CTeX 宏集包含的字库并与其一致,具体配置方案可以查看 \CTeX 使用手册。它与 \opt{fontset} 选项是等效的,如果没有指定 \opt{cjkfont} 的值,将会自动检测用户的操作系统并选择相应的字体。 -% \changes{v1.27j}{2021/07/12}{新增 \opt{cjkfont} 选项设置中文字体,原 \opt{font} 选项设置英文字体,中文字体使用 \CTeX 的字库。} +% \changes{v1.27K}{2021/07/12}{新增 \opt{cjkfont} 选项设置中文字体,原 \opt{font} 选项设置英文字体,中文字体使用 \CTeX 的字库。} % \end{function} % % 如果需要使用其它中文字体,可以在启用选项 \opt{cjkfont = none} 后,再使用 \pkg{xeCJK} 宏包的相关命令设置字体以及声明字体族: @@ -717,7 +717,7 @@ % \end{syntax} % \ding{229} 以上选项路径为 \opt{hdrset/...} \\ % \changes{v1.25}{2021/05/12}{增加脚注样式设置选项。} -% \changes{v1.27j}{2021/07/14}{增加脚注内容格式选项 \opt{fntext-form} 和脚注类型选项 \opt{footnotetype}。} +% \changes{v1.27K}{2021/07/14}{增加脚注内容格式选项 \opt{fntext-form} 和脚注类型选项 \opt{footnotetype}。} % \end{function} % % \begin{optdesc} @@ -905,7 +905,7 @@ % \tn{end}\{hangparas\} % \end{syntax} % \tn{hangpara} 命令使其后的一个段落保持悬挂缩进,\env{hangparas} 环境使其中的段落均保持悬挂缩进。缩进将以 \meta{缩进长度} 从每个段落的 \meta{缩进开始行数} 开始。 -% \changes{v1.27j}{2021/07/11}{增加悬挂缩进段落命令 \tn{hangpara} 和环境 \env{hangparas}。} +% \changes{v1.27K}{2021/07/11}{增加悬挂缩进段落命令 \tn{hangpara} 和环境 \env{hangparas}。} % \end{function} % % \subsection{代码} @@ -1290,7 +1290,7 @@ %<*class> \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e} -\ProvidesExplClass{easybook}{2021/07/18}{1.27j} +\ProvidesExplClass{easybook}{2021/07/19}{1.27K} {Typeset Chinese theses or books} \bool_set_false:N \l__eb_compile_draft_bool @@ -1584,7 +1584,7 @@ %<*package> \NeedsTeXFormat{LaTeX2e}[2020/10/01] \RequirePackage{l3keys2e,etoolbox} -\ProvidesExplPackage{easybase}{2021/07/18}{1.27j} +\ProvidesExplPackage{easybase}{2021/07/19}{1.27K} {Typeset Chinese theses or books} \cs_generate_variant:Nn \int_to_arabic:n { v } @@ -2127,8 +2127,7 @@ { \hbox_overlap_left:n { - \hbox_to_wd:nn - { -\footnoteindent } + \hbox_to_wd:nn { -\footnoteindent } { \eb@makefnmark\hss } } } @@ -3457,7 +3456,7 @@ } % %<*tcolorbox> -\ProvidesExplFile{eb-tcolorbox.cfg}{2021/07/18}{1.27j} +\ProvidesExplFile{eb-tcolorbox.cfg}{2021/07/19}{1.27K} {Customization of tcolorbox for easybook} \cs_new_protected:Npn \eb_tcb_theorem_set:n #1 diff --git a/macros/latex/contrib/easybook/easybook.pdf b/macros/latex/contrib/easybook/easybook.pdf index df728b8a93..46474da34d 100644 Binary files a/macros/latex/contrib/easybook/easybook.pdf and b/macros/latex/contrib/easybook/easybook.pdf differ diff --git a/macros/latex/contrib/fithesis/VERSION.tex b/macros/latex/contrib/fithesis/VERSION.tex index a73c6a0baa..5c64eb1e87 100644 --- a/macros/latex/contrib/fithesis/VERSION.tex +++ b/macros/latex/contrib/fithesis/VERSION.tex @@ -1 +1 @@ -2021/05/24 v1.0.0 fithesis4 MU thesis class +2021/07/18 v1.0.1 fithesis4 MU thesis class diff --git a/macros/latex/contrib/fithesis/fithesis.dtx b/macros/latex/contrib/fithesis/fithesis.dtx index 842b36127e..b4f24e63da 100644 --- a/macros/latex/contrib/fithesis/fithesis.dtx +++ b/macros/latex/contrib/fithesis/fithesis.dtx @@ -57,7 +57,7 @@ \gdef\thesis@version@number{#1} \gdef\thesis@version@date{#2} \gdef\thesis@version{#2 #1 fithesis4 MU thesis class}} -\thesis@versiondef{v1.0.0}{2021/05/24}} +\thesis@versiondef{v1.0.1}{2021/07/18}} % {\newwrite\f\openout\f=VERSION\write\f{\thesis@version}\closeout\f} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/macros/latex/contrib/fithesis/fithesis.pdf b/macros/latex/contrib/fithesis/fithesis.pdf index ebe6487986..d36fce38e6 100644 Binary files a/macros/latex/contrib/fithesis/fithesis.pdf and b/macros/latex/contrib/fithesis/fithesis.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-base-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-base-color.pdf index 20c7bfd158..e161090def 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-base-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-base-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-base-czech-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-base-czech-color.pdf index 04d6d8669e..e8741a78bf 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-base-czech-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-base-czech-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-base-czech.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-base-czech.pdf index 9379d822ae..c61c0e83e9 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-base-czech.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-base-czech.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-base-english-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-base-english-color.pdf index d277158c40..d0f5880cc2 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-base-english-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-base-english-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-base-english.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-base-english.pdf index 496d386008..f8a0806875 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-base-english.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-base-english.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-base.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-base.pdf index 7d44a399cd..ea965eef67 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-base.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-base.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-color.pdf index 18dddfbe28..8e8887ec54 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-czech-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-czech-color.pdf index e428038e82..0bde682c1f 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-czech-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-czech-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-czech.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-czech.pdf index 41eebf5866..f2a72c38de 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-czech.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-czech.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-english-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-english-color.pdf index 94bb716565..63f761a9b0 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-english-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-english-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-english.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-english.pdf index 9a3ee1aeb8..b90e3faf4e 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-english.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-econ-english.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-econ.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-econ.pdf index 32ae4c9e96..11537c4700 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-econ.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-econ.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-color.pdf index 9f7446e12f..3bebc977df 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-czech-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-czech-color.pdf index 5d318c6fd0..b3c03dd838 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-czech-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-czech-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-czech.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-czech.pdf index 295fefea28..d958a4fd27 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-czech.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-czech.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-english-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-english-color.pdf index 199f108ca8..0eb456f74f 100644 --- a/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-english-color.pdf +++ b/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-english-color.pdf @@ -1,18 +1,22 @@ %PDF-1.5 %쏢 +%%Invocation: gs -q -dSAFER -dNOPAUSE -dBATCH -dCompatibilityLevel=1.5 -sDEVICE=pdfwrite -sOutputFile=? -dPDFSETTINGS#/prepress -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -dAutoRotatePages#/None - 5 0 obj <> stream -xmSIn0 @Y. AC,vbymDD??/Y/ FTA[̄Q$_dA`!BQhqJT݃(!{dT24 y$M'ΤIRHYٺJd#l,-Ckh ؙؓ1fH_{qI'(-fTgZv,*`YΙ`ţ81xr5O_,}tS-ꢌ|'=|VdӚ>!ӼԅqP$Jj́eKؗmJl 3KnQ'XQq[H[ϋv_}f^zt@ZTh+ u1eǰE^nvKԗYf~1LF#d þìgSş0^uu`pWo)'S\G[0 endstream +xmS9r0 +~(7F}> /Contents 5 0 R >> @@ -25,29 +29,22 @@ endobj endobj 1 0 obj <> endobj 7 0 obj -<>endobj -8 0 obj -<> -endobj -9 0 obj <>stream +/Subtype/XML/Length 1194>>stream - -2021-05-25T14:31:44+02:00 -2021-05-25T14:31:44+02:00 + +2021-07-18T20:55:03Z +2021-07-18T20:55:03Z cairo 1.16.0 (https://cairographics.org) - -Untitled + +Untitled @@ -56,26 +53,24 @@ endobj endstream endobj 2 0 obj -<>endobj xref -0 10 +0 8 0000000000 65535 f +0000000909 00000 n +0000002243 00000 n +0000000850 00000 n +0000000738 00000 n +0000000228 00000 n 0000000719 00000 n -0000002295 00000 n -0000000660 00000 n -0000000531 00000 n -0000000015 00000 n -0000000512 00000 n -0000000783 00000 n -0000000824 00000 n -0000000853 00000 n +0000000973 00000 n trailer -<< /Size 10 /Root 1 0 R /Info 2 0 R -/ID [] +<< /Size 8 /Root 1 0 R /Info 2 0 R +/ID [<9940A6F61BA705D5DF4C62C35870625A><9940A6F61BA705D5DF4C62C35870625A>] >> startxref -2471 +2421 %%EOF diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-english.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-english.pdf index f05dd62149..ab59ee1674 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-english.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fi-english.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fi.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fi.pdf index 18315dc632..52639a4df6 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fi.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fi.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-color.pdf index 0ce9c62918..3f84f51b84 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-czech-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-czech-color.pdf index 861d66d86c..76070f1040 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-czech-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-czech-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-czech.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-czech.pdf index 21937d8c3a..43c76a513b 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-czech.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-czech.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-english-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-english-color.pdf index 1655c82bbf..e854f08d11 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-english-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-english-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-english.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-english.pdf index 226db0636d..f93287cde0 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-english.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps-english.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps.pdf index e850081ed2..2480a44f75 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fsps.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-color.pdf index 198128cddb..ad6045c868 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-czech-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-czech-color.pdf index 050cd56b1f..b70dc82c35 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-czech-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-czech-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-czech.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-czech.pdf index 7aa54a92b8..aa123c69e2 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-czech.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-czech.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-english-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-english-color.pdf index a5c30908df..6381148acf 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-english-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-english-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-english.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-english.pdf index 40a56535a6..0b5d3d57ba 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-english.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fss-english.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-fss.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-fss.pdf index 244ce6bebc..e165326897 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-fss.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-fss.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-law-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-law-color.pdf index c3c4f2b894..52af6886e7 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-law-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-law-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-law-czech-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-law-czech-color.pdf index a6ed229536..3b3063b99d 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-law-czech-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-law-czech-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-law-czech.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-law-czech.pdf index 7020a5f5f3..d784092278 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-law-czech.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-law-czech.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-law-english-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-law-english-color.pdf index 75b134b465..e27356789d 100644 --- a/macros/latex/contrib/fithesis/logo/mu/fithesis-law-english-color.pdf +++ b/macros/latex/contrib/fithesis/logo/mu/fithesis-law-english-color.pdf @@ -1,23 +1,21 @@ %PDF-1.5 %쏢 +%%Invocation: gs -q -dSAFER -dNOPAUSE -dBATCH -dCompatibilityLevel=1.5 -sDEVICE=pdfwrite -sOutputFile=? -dPDFSETTINGS#/prepress -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -dAutoRotatePages#/None - 5 0 obj <> stream -xmTKv#1@!c\!o/Ƌd uێTը2ex~?USLf =+ao?Weo:`7Ռ -&0Bf U1iZVMUnCX+PۢI1(Ĕٻ*37Q#qWP[qShN!Ya I00N=AGf ]ީ{>Xs 8J8#"+wi꛿p -hy -O8kZ:K-/RKhFK%f@y(ŶuUqX#Vp:B/"zYK ->#sK{.D 8T=?s8m\;x6WW˷ pCG"Wcy:C(`!poϣ[lwPilۂ:>;W4*%}4k@!12q^y&s kHlc,)_B oa\`BkA_? -endstream +xmTK s +.z @ǘ3OE#@I:/ S$3ex~ӂ +w?bJEow{m%}֠qvZ"@$F, ;M˪IM`-һ+@LB1sSe?w7l5^ɇydZ3e>3"ZrOS?]U@$S_|^)_l9_F+5T9$FUaͯ@[/Jn +Md-* $ ::]q2{xpY׽B4h-wlo6.!DvcupsDQ#B2ƟG]cܪضu|vJi4UKWiրBbd⼄L8fXK({ٓ¸<ЅrCp?? endstream endobj 6 0 obj -505 +497 endobj 4 0 obj <> /Contents 5 0 R >> @@ -30,29 +28,22 @@ endobj endobj 1 0 obj <> endobj 7 0 obj -<>endobj -8 0 obj -<> -endobj -9 0 obj <>stream +/Subtype/XML/Length 1194>>stream - -2021-05-25T14:31:45+02:00 -2021-05-25T14:31:45+02:00 + +2021-07-18T20:55:05Z +2021-07-18T20:55:05Z cairo 1.16.0 (https://cairographics.org) - -Untitled + +Untitled @@ -61,26 +52,24 @@ endobj endstream endobj 2 0 obj -<>endobj xref -0 10 +0 8 0000000000 65535 f -0000000797 00000 n -0000002373 00000 n -0000000738 00000 n -0000000609 00000 n -0000000015 00000 n -0000000590 00000 n -0000000861 00000 n -0000000902 00000 n -0000000931 00000 n +0000000985 00000 n +0000002319 00000 n +0000000926 00000 n +0000000814 00000 n +0000000228 00000 n +0000000795 00000 n +0000001049 00000 n trailer -<< /Size 10 /Root 1 0 R /Info 2 0 R -/ID [] +<< /Size 8 /Root 1 0 R /Info 2 0 R +/ID [<6FDBBDA31FD9B31FECF88C02E37CC2E1><6FDBBDA31FD9B31FECF88C02E37CC2E1>] >> startxref -2549 +2497 %%EOF diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-law-english.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-law-english.pdf index 70360aed42..2ee9b9e0e0 100644 --- a/macros/latex/contrib/fithesis/logo/mu/fithesis-law-english.pdf +++ b/macros/latex/contrib/fithesis/logo/mu/fithesis-law-english.pdf @@ -1,21 +1,25 @@ %PDF-1.5 %쏢 +%%Invocation: gs -q -dSAFER -dNOPAUSE -dBATCH -dCompatibilityLevel=1.5 -sDEVICE=pdfwrite -sOutputFile=? -dPDFSETTINGS#/prepress -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -dAutoRotatePages#/None - 5 0 obj <> stream -xmTKrc! s -.E3WHxFxv\^@}e8~q~?iߟ g%"z]v[NSkP8;QPjk#` RUeE$\y $0D.-һ+@L=B1sS/e^?we7lUpwdOHJv; {l籡;z·<#3²R>u]%O}62XZpRlypkZtȗ*[Ro\%j3 DbuUq!ƭ't:7b -'e -.Ituvv R'nסʴѱG-6siZ5-m,!DvcFupsDQ-B+2ʟW]SLgPiLۂ:>W4*Kg>iրBbx\y'uϵY~1/`n0'n s.WP Uendstream +xmTKv#! s +.=}cNjx1Dy%Jq Ͽdسf~M.|O-T3sT+TD9ETpiYQ7 W|^; #VE7bPzw")gU!fng⮠:]Cԝò +I`az2ao<6tyVt`8qpFXV +UgS?-U@ '杧h| +ǻO|!Ai?F5T9$F0ۭ5 1nX˹{WeXo,kWgp~p$iбHݟ>^*ړ;GǞ| +̥Akgs||/zl< ;͵E[k|(^uN9UA1m 8l_ +hw/9_Y +s p$> /Contents 5 0 R >> @@ -28,29 +32,22 @@ endobj endobj 1 0 obj <> endobj 7 0 obj -<>endobj -8 0 obj -<> -endobj -9 0 obj <>stream +/Subtype/XML/Length 1194>>stream - -2021-05-25T14:31:46+02:00 -2021-05-25T14:31:46+02:00 + +2021-07-18T20:55:11Z +2021-07-18T20:55:11Z cairo 1.16.0 (https://cairographics.org) - -Untitled + +Untitled @@ -59,26 +56,24 @@ endobj endstream endobj 2 0 obj -<>endobj xref -0 10 +0 8 0000000000 65535 f -0000000793 00000 n -0000002369 00000 n -0000000734 00000 n -0000000605 00000 n -0000000015 00000 n -0000000586 00000 n -0000000857 00000 n -0000000898 00000 n -0000000927 00000 n +0000000981 00000 n +0000002315 00000 n +0000000922 00000 n +0000000810 00000 n +0000000228 00000 n +0000000791 00000 n +0000001045 00000 n trailer -<< /Size 10 /Root 1 0 R /Info 2 0 R -/ID [<0F379EB62D2EF398BD7100DAC37B9F74><0F379EB62D2EF398BD7100DAC37B9F74>] +<< /Size 8 /Root 1 0 R /Info 2 0 R +/ID [] >> startxref -2545 +2493 %%EOF diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-law.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-law.pdf index 19f2275612..030b05dde2 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-law.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-law.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-med-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-med-color.pdf index b4f012cfb2..055c89a047 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-med-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-med-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-med-czech-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-med-czech-color.pdf index 22ef730123..b4fbb9c34a 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-med-czech-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-med-czech-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-med-czech.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-med-czech.pdf index a7e9b7a2da..5f8dcb4caa 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-med-czech.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-med-czech.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-med-english-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-med-english-color.pdf index 0b5c13dfa0..7934ab9d54 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-med-english-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-med-english-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-med-english.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-med-english.pdf index f4fd15e7cd..9f1df5a076 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-med-english.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-med-english.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-med.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-med.pdf index a7b73f5f02..4d7b1d3e46 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-med.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-med.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-color.pdf index 8a62183dd5..5f42f831f3 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-czech-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-czech-color.pdf index f1c9d2ed21..6d15ec8a51 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-czech-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-czech-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-czech.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-czech.pdf index 20aa3938ec..5b32fc42fe 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-czech.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-czech.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-english-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-english-color.pdf index b907a45f36..658fe24a95 100644 --- a/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-english-color.pdf +++ b/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-english-color.pdf @@ -1,21 +1,20 @@ %PDF-1.5 %쏢 +%%Invocation: gs -q -dSAFER -dNOPAUSE -dBATCH -dCompatibilityLevel=1.5 -sDEVICE=pdfwrite -sOutputFile=? -dPDFSETTINGS#/prepress -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -dAutoRotatePages#/None - 5 0 obj <> stream -xmTYn[1 )tVJ$GJ^a͘ˈD}?~/,Vz{L)>J VOgj3*q$9 J52',BӔd،|BVv>;Gzf3)TҷD'.ve?2IJ2'w%;zRӹ( Wuri2Dw/n!![' 炰~fkG]͔%w É;lOy? -4j:W3b+(=)$f{42zZO}4kYE}\V}+< )i^4u_J"*5p`sxV$|1 vCaEYcEt4F9".' BJ ,SJWq?lzTd -3psc o[(ts }{7fmdSJ>|ftʜLbG -Uy ŗdžδ3g%s/Wu,W+* h*cn ,C7;,ٕmOǁ'[Ѳy/D, \ݖH^U[rEendstream +xmTK[! s +NB|c LfHH o;?gzf3)TҷD'nvm?2IJ2'w%;zRӹ( Wuri2Dwo!4 [ 炰~fkG]͔%wÉ;l/< + 4j:W3b+(=)$f{42zZO}4kYEnFՎA˅j H//%O8W9|(V[οߡU_Wm4kXQXxQ_NcI1PmTӕEd:J]{CnunṿmnB;ufЬlj^QG Y R5C*/aC֙v>Q앢d{媽ٞb_߳45zb6-{Ze{ mefۘ%utxU-[FT>^mm8 _?PCendstream endobj 6 0 obj -599 +591 endobj 4 0 obj <> /Contents 5 0 R >> @@ -28,29 +27,22 @@ endobj endobj 1 0 obj <> endobj 7 0 obj -<>endobj -8 0 obj -<> -endobj -9 0 obj <>stream +/Subtype/XML/Length 1194>>stream - -2021-05-25T14:31:45+02:00 -2021-05-25T14:31:45+02:00 + +2021-07-18T20:55:06Z +2021-07-18T20:55:06Z cairo 1.16.0 (https://cairographics.org) - -Untitled + +Untitled @@ -59,26 +51,24 @@ endobj endstream endobj 2 0 obj -<>endobj xref -0 10 +0 8 0000000000 65535 f -0000000891 00000 n -0000002467 00000 n -0000000832 00000 n -0000000703 00000 n -0000000015 00000 n -0000000684 00000 n -0000000955 00000 n -0000000996 00000 n -0000001025 00000 n +0000001079 00000 n +0000002413 00000 n +0000001020 00000 n +0000000908 00000 n +0000000228 00000 n +0000000889 00000 n +0000001143 00000 n trailer -<< /Size 10 /Root 1 0 R /Info 2 0 R -/ID [<3E31EE51A297FD1A52BE45509BC9023B><3E31EE51A297FD1A52BE45509BC9023B>] +<< /Size 8 /Root 1 0 R /Info 2 0 R +/ID [] >> startxref -2643 +2591 %%EOF diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-english.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-english.pdf index f4580cb142..70fcabfe10 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-english.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-ped-english.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-ped.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-ped.pdf index 4d96f923a2..48c07f90a7 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-ped.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-ped.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-color.pdf index 5bc8ef33ac..82e3f5ad11 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-czech-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-czech-color.pdf index ab283de288..9559ac56d2 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-czech-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-czech-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-czech.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-czech.pdf index d1335beb0b..7b89a317dc 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-czech.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-czech.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-english-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-english-color.pdf index 6180ef97fb..88c51b74cb 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-english-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-english-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-english.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-english.pdf index fabb9554be..2718e6dc20 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-english.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm-english.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm.pdf index 529dbb7282..f0dc05b65e 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-pharm.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-color.pdf index 21c923d74d..334888892c 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-czech-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-czech-color.pdf index 6804d470c6..818b7f1dd8 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-czech-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-czech-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-czech.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-czech.pdf index 10cf6dea8e..57fb501f0c 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-czech.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-czech.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-english-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-english-color.pdf index 13ef2a2692..4000ca595e 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-english-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-english-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-english.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-english.pdf index decfacdeec..f5776d0147 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-english.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-phil-english.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-phil.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-phil.pdf index 9c3bf69d3e..4b0d5f1587 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-phil.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-phil.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-color.pdf index 23fbfcf75c..2fe356e734 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-czech-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-czech-color.pdf index 2e85baed94..e290678dd6 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-czech-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-czech-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-czech.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-czech.pdf index 375830daa9..b6b11e08d4 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-czech.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-czech.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-english-color.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-english-color.pdf index 30eec95307..8059d8872b 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-english-color.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-english-color.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-english.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-english.pdf index bcb6d39d40..55a99a2ec4 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-english.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-sci-english.pdf differ diff --git a/macros/latex/contrib/fithesis/logo/mu/fithesis-sci.pdf b/macros/latex/contrib/fithesis/logo/mu/fithesis-sci.pdf index 16fb5fce9d..dae2270795 100644 Binary files a/macros/latex/contrib/fithesis/logo/mu/fithesis-sci.pdf and b/macros/latex/contrib/fithesis/logo/mu/fithesis-sci.pdf differ diff --git a/macros/latex/contrib/fithesis/style/mu/base.dtx b/macros/latex/contrib/fithesis/style/mu/base.dtx index f5cf38721c..6a17ea26fa 100644 --- a/macros/latex/contrib/fithesis/style/mu/base.dtx +++ b/macros/latex/contrib/fithesis/style/mu/base.dtx @@ -1303,7 +1303,7 @@ % breaking changes in package loading after PR 438 in \LaTeXe. [VN]} % \begin{macrocode} % Load the `fithesis-mu-1*.clo` size option. -\input\thesis@stylepath mu/fithesis-1\thesis@ptsize.clo\relax +\input\thesis@stylepath mu/fithesis-mu-1\thesis@ptsize.clo\relax % Define the running heading style. \def\ps@thesisheadings{% diff --git a/macros/latex/contrib/fithesis/style/mu/econ.dtx b/macros/latex/contrib/fithesis/style/mu/econ.dtx index ae3b199a77..a05cacf39c 100644 --- a/macros/latex/contrib/fithesis/style/mu/econ.dtx +++ b/macros/latex/contrib/fithesis/style/mu/econ.dtx @@ -123,7 +123,7 @@ % \end{macro}\begin{macro}{\thesis@blocks@mainMatter} % The |\thesis@blocks@mainMatter| macro sets up the style % of the main matter of the thesis. The page numbering doesn't -% reset at the beginning of the main thesis as per the formal +% reset at the beginning of the main matter as per the formal % requirements. % \begin{macrocode} \def\thesis@blocks@mainMatter{% diff --git a/macros/latex/contrib/fithesis/style/mu/fsps.dtx b/macros/latex/contrib/fithesis/style/mu/fsps.dtx index 7082d5220b..30437fc417 100644 --- a/macros/latex/contrib/fithesis/style/mu/fsps.dtx +++ b/macros/latex/contrib/fithesis/style/mu/fsps.dtx @@ -12,7 +12,7 @@ % y_vypracovani_ZP_bc-mgr-rig.pdf}}. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{fithesis/style/mu/fithesis-mu-fsps}[2021/04/24] +\ProvidesPackage{fithesis/style/mu/fithesis-mu-fsps}[2021/07/18] % \end{macrocode} % The file defines the color scheme of the respective faculty. Note % the the color definitions are in RGB, which makes the resulting @@ -62,24 +62,30 @@ % The |\thesis@blocks@frontMatter| macro sets up the style of the % front matter of the thesis. The leading is adjusted in % accordance with the requirements of the faculty. +% \changes{v1.0.1}{2021/07/18}{^^A +% Display page numbers for the Faculty of Sports Studies starting +% with the table of contents. [VN]} % \begin{macrocode} \def\thesis@blocks@frontMatter{% \thesis@blocks@clear - \pagestyle{plain} + \pagestyle{empty} \parindent 1.5em \setcounter{page}{1} - \pagenumbering{roman} + \pagenumbering{arabic} \onehalfspacing} % \end{macrocode} % \end{macro}\begin{macro}{\thesis@blocks@mainMatter} % The |\thesis@blocks@mainMatter| macro sets up the style % of the main matter of the thesis. The leading is adjusted in -% accordance with the requirements of the faculty. +% accordance with the requirements of the faculty. The page +% numbering doesn't reset at the beginning of the main thesis in +% accordance with the formal requirements of the faculty. +% \changes{v1.0.1}{2021/07/18}{^^A +% Display page numbers for the Faculty of Sports Studies starting +% with the table of contents. [VN]} % \begin{macrocode} \def\thesis@blocks@mainMatter{% \thesis@blocks@clear - \setcounter{page}{1} - \pagenumbering{arabic} \pagestyle{thesisheadings} \parindent 1.5em \onehalfspacing} @@ -160,7 +166,14 @@ \thesis@blocks@bibEntryEn \thesis@blocks@abstractEn \thesis@blocks@thanks - \thesis@blocks@tables} +% \end{macrocode} +% \changes{v1.0.1}{2021/07/18}{^^A +% Display page numbers for the Faculty of Sports Studies starting +% with the table of contents. [VN]} +% \begin{macrocode} + \thesis@blocks@clear + \pagestyle{plain} + \thesis@blocks@tables} \def\thesis@blocks@postamble{% \thesis@blocks@bibliography} % \end{macrocode} diff --git a/macros/latex/contrib/fithesis/style/mu/law.dtx b/macros/latex/contrib/fithesis/style/mu/law.dtx index 38aa08c95c..e7355d3634 100644 --- a/macros/latex/contrib/fithesis/style/mu/law.dtx +++ b/macros/latex/contrib/fithesis/style/mu/law.dtx @@ -13,7 +13,7 @@ % h_dokumentu.pdf}}. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{fithesis/style/mu/fithesis-mu-law}[2021/04/24] +\ProvidesPackage{fithesis/style/mu/fithesis-mu-law}[2021/07/18] % \end{macrocode} % The file defines the color scheme of the respective faculty. Note % the the color definitions are in RGB, which makes the resulting @@ -91,11 +91,15 @@ % \begin{macro}{\thesis@blocks@frontMatter} % The |\thesis@blocks@frontMatter| macro sets up the style % of the front matter of the thesis. The page numbering is arabic -% in accordance with the formal requirements of the faculty. +% in accordance with the formal requirements of the faculty and +% it is hidden. +% \changes{v1.0.1}{2021/07/18}{^^A +% Display page numbers for the Faculty of Law starting with +% the declaration. [VN]} % \begin{macrocode} \def\thesis@blocks@frontMatter{% \thesis@blocks@clear - \pagestyle{plain} + \pagestyle{empty} \parindent 1.5em \setcounter{page}{1} \pagenumbering{arabic}} @@ -135,7 +139,15 @@ \thesis@blocks@frontMatter \thesis@blocks@titlePage \thesis@blocks@seal - \thesis@blocks@declaration +% \end{macrocode} +% \changes{v1.0.1}{2021/07/18}{^^A +% Display page numbers for the Faculty of Law starting with +% the declaration. [VN]} +% \begin{macrocode} + \thesis@blocks@clear + \pagestyle{plain} + \setcounter{page}{1} + \thesis@blocks@declaration \thesis@blocks@clear \thesis@blocks@abstract \thesis@blocks@keywords diff --git a/macros/latex/contrib/fithesis/style/mu/med.dtx b/macros/latex/contrib/fithesis/style/mu/med.dtx index aa514412e5..e3503425f8 100644 --- a/macros/latex/contrib/fithesis/style/mu/med.dtx +++ b/macros/latex/contrib/fithesis/style/mu/med.dtx @@ -15,7 +15,7 @@ % akulte_MU.pdf}}. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{fithesis/style/mu/fithesis-mu-med}[2021/04/24] +\ProvidesPackage{fithesis/style/mu/fithesis-mu-med}[2021/07/18] % \end{macrocode} % The file defines the color scheme of the respective faculty. Note % the the color definitions are in RGB, which makes the resulting @@ -159,19 +159,22 @@ \pagestyle{empty} \parindent 1.5em \setcounter{page}{1} - \pagenumbering{roman}} + \pagenumbering{arabic}} % \end{macrocode} % \end{macro}\begin{macro}{\thesis@blocks@mainMatter} % The |\thesis@blocks@mainMatter| macro sets up the style % of the main matter of the thesis. The leading is adjusted in -% accordance with the requirements of the faculty. +% accordance with the requirements of the faculty. The page +% numbering doesn't reset at the beginning of the main thesis in +% accordance with the formal requirements of the faculty. +% \changes{v1.0.1}{2021/07/18}{^^A +% Display page numbers for the Faculty of Medicine starting with +% the declaration. [VN]} % \begin{macrocode} \def\thesis@blocks@mainMatter{% \thesis@blocks@clear \newgeometry{top=25mm,bottom=20mm,left=35mm, right=15mm, includeheadfoot} - \setcounter{page}{1} - \pagenumbering{arabic} \pagestyle{thesisheadings} \parindent 1.5em \onehalfspacing} @@ -200,7 +203,15 @@ \thesis@blocks@frontMatter \thesis@blocks@titlePage \thesis@blocks@seal - \thesis@blocks@declaration +% \end{macrocode} +% \changes{v1.0.1}{2021/07/18}{^^A +% Display page numbers for the Faculty of Medicine starting with +% the declaration. [VN]} +% \begin{macrocode} + \thesis@blocks@clear + \pagestyle{plain} + \setcounter{page}{1} + \thesis@blocks@declaration \thesis@blocks@clear \thesis@blocks@abstract \thesis@blocks@keywords diff --git a/macros/latex/contrib/fithesis/style/mu/sci.dtx b/macros/latex/contrib/fithesis/style/mu/sci.dtx index 106fec5197..b66d576af3 100644 --- a/macros/latex/contrib/fithesis/style/mu/sci.dtx +++ b/macros/latex/contrib/fithesis/style/mu/sci.dtx @@ -12,7 +12,7 @@ % _-_Pokyny_pro_vypracovani_bc._dipl._a_rigor.praci.pdf}}. % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{fithesis/style/mu/fithesis-mu-sci}[2021/04/24] +\ProvidesPackage{fithesis/style/mu/fithesis-mu-sci}[2021/07/18] % \end{macrocode} % The file defines the color scheme of the respective faculty. Note % the the color definitions are in RGB, which makes the resulting @@ -80,13 +80,29 @@ % of the front matter front matter of the thesis. The front matter % is typeset without any visible numbering, as mandated by the % formal requirements of the faculty. +% \changes{v1.0.1}{2021/07/18}{^^A +% Display page numbers for the Faculty of Science starting with +% the table of contents. [VN]} % \begin{macrocode} \def\thesis@blocks@frontMatter{% \thesis@blocks@clear \pagestyle{empty} \parindent 1.5em \setcounter{page}{1} - \pagenumbering{roman}} + \pagenumbering{arabic}} +% \end{macrocode} +% The |\thesis@blocks@mainMatter| macro sets up the style +% of the main matter of the thesis. The page numbering doesn't +% reset at the beginning of the main thesis in accordance with the +% formal requirements of the faculty. +% \changes{v1.0.1}{2021/07/18}{^^A +% Display page numbers for the Faculty of Science starting with +% the table of contents. [VN]} +% \begin{macrocode} +\def\thesis@blocks@mainMatter{% + \thesis@blocks@clear + \pagestyle{thesisheadings} + \parindent 1.5em\relax} % \end{macrocode} % \end{macro} % \changes{v1.0.0}{2018/11/18}{^^A @@ -117,9 +133,15 @@ \thesis@blocks@titlePage \thesis@blocks@seal \ifx\thesis@type\thesis@proposal - \thesis@blocks@toc +% \end{macrocode} +% \changes{v1.0.1}{2021/07/18}{^^A +% Display page numbers for the Faculty of Science starting with +% the table of contents. [VN]} +% \begin{macrocode} + \thesis@blocks@clear + \pagestyle{plain} + \thesis@blocks@toc \else - \thesis@blocks@seal \thesis@blocks@bibEntry \thesis@blocks@bibEntryEn \thesis@blocks@clear @@ -129,7 +151,14 @@ \thesis@blocks@assignment \thesis@blocks@thanks \thesis@blocks@declaration - \thesis@blocks@tables +% \end{macrocode} +% \changes{v1.0.1}{2021/07/18}{^^A +% Display page numbers for the Faculty of Science starting with +% the table of contents. [VN]} +% \begin{macrocode} + \thesis@blocks@clear + \pagestyle{plain} + \thesis@blocks@tables \fi} \def\thesis@blocks@postamble{% \thesis@blocks@bibliography} diff --git a/macros/latex/contrib/letterswitharrows/README.txt b/macros/latex/contrib/letterswitharrows/README.txt index 41ebce705d..1a4d4d98fc 100644 --- a/macros/latex/contrib/letterswitharrows/README.txt +++ b/macros/latex/contrib/letterswitharrows/README.txt @@ -1,7 +1,7 @@ The letterswitharrows package -Copyright 2019-2020 J. M. Teegen +Copyright 2019-2021 J. M. Teegen -The letterswitharrows package does provides LaTeX math-mode commands for setting left and right arrows over mathematical symbols, so that the arrows dynamically scale with the symbols. +The letterswitharrows package provides LaTeX math-mode commands for setting left and right arrows over mathematical symbols, so that the arrows dynamically scale with the symbols. While it is possible to set arrows over longer strings of symbols, the focus lies on single characters. -For more information please consult the package documentation in letterswitharrows.pdf +For more information, please consult the package documentation in letterswitharrows.pdf diff --git a/macros/latex/contrib/letterswitharrows/letterswitharrows.dtx b/macros/latex/contrib/letterswitharrows/letterswitharrows.dtx index 8d54dd6294..1b2820bd82 100644 --- a/macros/latex/contrib/letterswitharrows/letterswitharrows.dtx +++ b/macros/latex/contrib/letterswitharrows/letterswitharrows.dtx @@ -54,7 +54,7 @@ % \title{The \pkg{letterswitharrows} package} % \author{Max Teegen\\ \href{mailto:tex@jmteegen.eu}{tex@jmteegen.eu}} -% \date{Released 2020-02-04} +% \date{Released 2021-07-19} % \maketitle @@ -140,6 +140,11 @@ % If \verb|#3| is \verb|-| if the arrow should point rightwards and empty otherwise. % \end{texnote} +% \DescribeOption{linewidth} +% Specifying \verb|linewidth=| as a package option allows you to adjust the line width of the arrows to adjust for the weigth of the maths font you are using. +% The default value is \verb|linewidth=0.3|. + + % \DescribeOption{tweaks} % Specifying the \verb|tweaks| option applies per-letter scaling adjustments to some of the single-letter shorthands. This is enabled by default. % These are specific to Latin Modern Math and subject to be changed on a whim. If you wish a more stable behaviour specify \verb|tweaks=false|. @@ -153,7 +158,7 @@ % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \RequirePackage{expl3} -\ProvidesExplPackage {letterswitharrows} {2020-02-04} {} {Draw arrows over math letters.} +\ProvidesExplPackage {letterswitharrows} {2021/07/19} {} {Draw arrows over math letters.} \RequirePackage{xparse,l3keys2e,mathtools} % TODO: I just use mathtools for mathrlap; replace. @@ -166,6 +171,7 @@ } % \end{macrocode} % The drawing code. +% \changes{2021/07/10}{2021/07/19}{Implement adjustable linewidth.} % \begin{macro}{\__@@_arrow_draw_special:nnn,\__@@_arrow_draw_pgf:nnn,\__@@_arrow_left:nn,\__@@_arrow_right:nn} % \begin{macrocode} \cs_new:Nn \__@@_arrow_draw_special:nnn % length, font size, sign @@ -175,7 +181,7 @@ q~ 1~J~1~j~ 1~0~0~\dim_to_decimal:n{#3#2pt/10}~0~0~cm~ - .3~w~ + \fp_use:c{g_@@_line_width}~w~ q~ \dim_to_decimal:n{#3#2pt/10}~0~0~1~0~0~cm~ 1~0~0~1~-1~0~cm~ @@ -184,8 +190,11 @@ 1~0~.25~0~0~-1~c~ S~ Q~ + Q~ + q~ 0~0~m~ -1~0~0~1~0~0~cm~ + \fp_use:c{g_@@_line_width}~w~ \dim_to_decimal:n{#3#1}~0~l~S~ Q } @@ -193,7 +202,7 @@ \tex_special:D {"~ 1~setlinecap~1~setlinejoin~ 1~0~0~\dim_to_decimal:n{#3#2pt/10}~0~0~6~array~astore~concat~ - .3~setlinewidth~ + \fp_use:c{g_@@_line_width}~setlinewidth~ gsave~ \dim_to_decimal:n{#3#2pt/10}~0~0~1~0~0~6~array~astore~concat~ 1~0~0~1~-1~0~6~array~astore~concat~ @@ -216,7 +225,7 @@ \cs_new:Nn \__@@_arrow_draw_pgf:nnn { \begin{pgfpicture} - \pgfsetlinewidth{#2pt/30} + \pgfsetlinewidth{#2pt*\fp_use:c{g_@@_line_width}/10} \pgfsetarrowsstart {Computer~Modern~Rightarrow[width=#2pt*2/10,length=#2pt/10,sharp]} % \pgfsetarrowsstart{\tl_use:N \g_@@_pgf_arrow_style_tl} @@ -244,6 +253,7 @@ % \end{macro} % The core functions. +% \changes{2020/05/08}{2020/05/08}{Reset tabskip. Fixes spacing in aligned environments} % \begin{macro}{\__@@_arrow_overset_style:Nnncnnn,\__@@_arrow_overset:nnnnn} % \begin{macrocode} \cs_new:Npn \__@@_arrow_overset_style:Nnncnnn #1#2#3#4#5#6#7 { @@ -252,6 +262,7 @@ \vbox:n { \tex_lineskiplimit:D = \maxdimen \tex_baselineskip:D = 0pt + \tex_tabskip:D = 0pt \tex_lineskip:D = \dim_eval:n {\l_tmpa_dim * 3/2 + #7} \tex_halign:D { ## \tex_cr:D \skip_horizontal:n {\l_tmpa_dim / 2} @@ -370,6 +381,8 @@ presets .initial:n = {abc, ABC, cAcBcC}, tweaks .bool_set:N = \g_@@_tweak_shortcuts_bool, tweaks .initial:n = {true}, + linewidth .fp_set:N = \g_@@_line_width, + linewidth .initial:n = {.3}, } \ProcessKeysPackageOptions{letterswitharrows} % \end{macrocode} diff --git a/macros/latex/contrib/letterswitharrows/letterswitharrows.pdf b/macros/latex/contrib/letterswitharrows/letterswitharrows.pdf index 89edac5862..ae959a886f 100644 Binary files a/macros/latex/contrib/letterswitharrows/letterswitharrows.pdf and b/macros/latex/contrib/letterswitharrows/letterswitharrows.pdf differ diff --git a/macros/latex/required/babel/base/README.md b/macros/latex/required/babel/base/README.md index 0d63b0df47..777d19bd2b 100644 --- a/macros/latex/required/babel/base/README.md +++ b/macros/latex/required/babel/base/README.md @@ -1,4 +1,4 @@ -## Babel 3.61 +## Babel 3.62 This package manages culturally-determined typographical (and other) rules, and hyphenation patterns for a wide range of languages. Many @@ -8,9 +8,9 @@ is a set of ini files for about 250 languages. The latest stable version is available on . -Changes in version 3.61 are described in: +Changes in version 3.62 are described in: -https://latex3.github.io/babel/news/whats-new-in-babel-3.61.html +https://latex3.github.io/babel/news/whats-new-in-babel-3.62.html Apart from the manual, you can find information on some aspects of babel at: @@ -46,16 +46,13 @@ respective authors. ### Summary of Latest changes ``` -3.61 2021-06-28 - * Improved justification=kashida/elongated: hboxes (lua). - * Transform danda.nobreak for several Indic scripts (lua): - Assamese, Bengali, Gujarati, Hindi, Kannada, Malayalam, - Marathi, Oriya, Tamil, Telugu. - * Improved \babelprovide when used to reconfigure a language. +3.62 2021-07-19 + * No more errors with unknown languages in aux file. + * Preliminary support for \AddToHook. + * Tentative extension for provide=. * Fixes: - - Partial fix for #114 (bad breaks and spacing with - \selectlanguage). - - \shorthandoff*{^} caused error for \section command (#129). + - Locale dependent quotes with CJK (#131). + - Babel and hyperref prevent changes to the \LaTeX logo (#138). ``` ### Previous changes diff --git a/macros/latex/required/babel/base/babel.dtx b/macros/latex/required/babel/base/babel.dtx index b6aea49d74..e88326ebe2 100644 --- a/macros/latex/required/babel/base/babel.dtx +++ b/macros/latex/required/babel/base/babel.dtx @@ -32,7 +32,7 @@ % % \iffalse %<*filedriver> -\ProvidesFile{babel.dtx}[2021/06/28 v3.61 The Babel package] +\ProvidesFile{babel.dtx}[2021/07/19 v3.62 The Babel package] \documentclass{ltxdoc} \GetFileInfo{babel.dtx} \usepackage{fontspec} @@ -697,6 +697,14 @@ This command can be used as environment, too. code with an additional grouping level. \end{warning} +\begin{warning} + |\selectlanguage| should not be used inside some boxed environments + (like floats or |minipage|) to switch the language if you need the + information written to the |aux| be correctly synchronized. This + rarely happens, but if it were the case, you must use |otherlanguage| + instead. +\end{warning} + \Describe{\foreignlanguage}{\oarg{option-list}\marg{language}\marg{text}} The command |\foreignlanguage| takes two arguments; the second argument @@ -936,6 +944,12 @@ If you do not need shorthands, or prefer an alternative approach of your own, you may want to switch them off with the package option |shorthands=off|, as described below. +\begin{warning} + It is worth emphasizing these macros are meant for temporary changes. + Whenever possible and if there are not conflicts with other packages, + shorthands must be always enabled (or disabled). +\end{warning} + \Describe{\useshorthands}{% \colorbox{thegrey}{\ttfamily\hskip-.2em*\hskip-.2em}% \marg{char}} @@ -1264,7 +1278,6 @@ option (by its name in |language.dat|). There are two main uses: classes and packages, and as a last resort in case there are, for some reason, incompatible languages. It can be used if you just want to select the hyphenation patterns of a single language, too. -% TODO: example \Describe\AfterBabelLanguage{\marg{option-name}\marg{code}} @@ -1292,6 +1305,13 @@ be the same as the option name as set in |\usepackage|!). \end{verbatim} \end{example} +\begin{note} + With a recent version of \LaTeX, an alternative method to execute + some code just after an |ldf| file is loaded is with |\AddToHook| and + the hook |file/after/.ldf|. \Babel{} does not predeclare + it, and you have to do it yourself with |\NewHook| or |\ProvideHook|. +\end{note} + \begin{warning} Currently this option is not compatible with languages loaded on the fly. @@ -3120,12 +3140,12 @@ standard system devised by Ljudevit Gaj.} \Describe{\babelposthyphenation}{\marg{hyphenrules-name}% \marg{lua-pattern}\marg{replacement}} -\New{3.37-3.39} \textit{With \luatex{}} it is now possible to define +\New{3.37-3.39} \textit{With \luatex{}} it is possible to define non-standard hyphenation rules, like |f-f| $\to$ |ff-f|, repeated hyphens, ranked ruled (or more precisely, ‘penalized’ hyphenation -points), and so on. Only a few rules are currently provided (see -below), but they can be defined as shown in the following example, -where |{1}| is the first captured char (between |()| in the pattern): +points), and so on. A few rules are currently provided (see above), but +they can be defined as shown in the following example, where |{1}| is +the first captured char (between |()| in the pattern): \begin{verbatim} \babelposthyphenation{german}{([fmtrp]) | {1}} { @@ -3690,15 +3710,24 @@ options are also used (eg, |\ProsodicMarksOn| in \textsf{latin}). events. Some hooks are predefined when \luatex{} and \xetex{} are used. +\New{3.62} This is not the only way to inject code at those points. The +events listed below can be used as a hook name in |\AddToHook| in the +form |babel/|\marg{name}, but there is a limitation, because the +parameters passed with the \babel{} mechanism are not allowed. The +|\AddToHook| mechanism does \textit{not} replace the current one in +`babel`. Its main advantage is you can reconfigure `babel` even before +loading it. See the example below. + \Describe{\AddBabelHook}{\oarg{lang}\marg{name}\marg{event}\marg{code}} -The same name can be applied to several events. Hooks may be enabled -and disabled for all defined events with |\EnableBabelHook|\marg{name}, -|\DisableBabelHook|\marg{name}. Names containing the string |babel| are -reserved (they are used, for example, by |\useshortands*| to add a hook -for the event |afterextras|). \New{3.33} They may be also applied to a -specific language with the optional argument; language-specific -settings are executed after global ones. +The same name can be applied to several events. Hooks with a certain +\marg{name} may be enabled and disabled for all defined events with +|\EnableBabelHook|\marg{name}, |\DisableBabelHook|\marg{name}. Names +containing the string |babel| are reserved (they are used, for example, +by |\useshortands*| to add a hook for the event |afterextras|). +\New{3.33} They may be also applied to a specific language with the +optional argument; language-specific settings are executed after global +ones. Current events are the following; in some of them you can use one to three \TeX{} parameters (|#1|, |#2|, |#3|), with the meaning given: @@ -3771,6 +3800,27 @@ ones, they only have a single hook and replace a default definition. file. Used by \file{luababel.def}. \end{description} +\begin{example} +The generic unlocalized \LaTeX{} hooks are predefined, so that you can +write: +\begin{verbatim} +\AddToHook{babel/afterextras}{\frenchspacing} +\end{verbatim} +which is executed always after the extras for the language being +selected (and just before the non-localized hooks defined with +|\AddBabelHook|). + +In addition, locale-specific hooks in the form +|babel/|\marg{hook-name}|/|\marg{language-name} are \textit{recognized} +(executed just before the localized \babel{} hooks), but they are \textit{not +predefined}. You have to do it yourself. For example, to set +|\frenchspacing| only in |bengali|: +\begin{verbatim} +\ProvideHook{babel/afterextras/bengali} +\AddToHook{babel/afterextras/bengali}{\frenchspacing} +\end{verbatim} +\end{example} + \Describe{\BabelContentsFiles}{} \New{3.9a} This macro contains a list of ``toc'' types requiring a command to switch the language. Its default value is @@ -3951,7 +4001,8 @@ direction with |bidi.text|). \item \verb|\bibitem| is out of sync with \verb|\selectlanguage| in the \file{.aux} file. The reason is \verb|\bibitem| uses \verb|\immediate| (and others, in fact), while - \verb|\selectlanguage| doesn't. There is no known workaround. + \verb|\selectlanguage| doesn't. There is a similar issue with floats, + too. There is no known workaround. \item Babel does not take into account |\normalsfcodes| and (non-)French spacing is not always properly (un)set by languages. However, problems are unlikely to happen and therefore @@ -4973,8 +5024,8 @@ help from Bernd Raichle, for which I am grateful. % \section{Tools} % % \begin{macrocode} -%<> -%<> +%<> +%<> % \end{macrocode} % % \textbf{Do not use the following macros in \texttt{ldf} files. They @@ -5174,6 +5225,8 @@ help from Bernd Raichle, for which I am grateful. % % \begin{macro}{\bbl@replace} % +% Returns implicitly |\toks@| with the modified string. +% % \begin{macrocode} \def\bbl@replace#1#2#3{% in #1 -> repl #2 by #3 \toks@{}% @@ -5293,6 +5346,16 @@ help from Bernd Raichle, for which I am grateful. \fi} % \end{macrocode} % +% An alternative to |\IfFormatAtLeastTF| for old versions. Temporary. +% +% \begin{macrocode} +\ifx\IfFormatAtLeastTF\@undefined + \def\bbl@ifformatlater{\@ifl@t@r\fmtversion} +\else + \let\bbl@ifformatlater\IfFormatAtLeastTF +\fi +% \end{macrocode} +% % The following adds some code to |\extras...| both before and after, % while avoiding doing it twice. It's somewhat convoluted, to deal with % |#|'s. @@ -5348,8 +5411,8 @@ help from Bernd Raichle, for which I am grateful. % % \begin{macro}{\last@language} % -% Another counter is used to store the last language defined. For -% pre-3.0 formats an extra counter has to be allocated. +% Another counter is used to keep track of the allocated languages. +% \TeX{} and \LaTeX{} reserves for this purpose the count 19. % % \begin{macro}{\addlanguage} % @@ -5358,8 +5421,7 @@ help from Bernd Raichle, for which I am grateful. % % \begin{macrocode} %<<*Define core switching macros>> -%<<*Define core switching macros>> -\countdef\last@language=19 % TODO. why? remove? +\countdef\last@language=19 \def\addlanguage{\csname newlanguage\endcsname} %<> % \end{macrocode} @@ -5369,7 +5431,7 @@ help from Bernd Raichle, for which I am grateful. % % Now we make sure all required files are loaded. When the command % |\AtBeginDocument| doesn't exist we assume that we are dealing -% with a plain-based format or \LaTeX2.09. In that case the file +% with a plain-based format. In that case the file % \file{plain.def} is needed (which also defines % |\AtBeginDocument|, and therefore it is not loaded twice). We % need the first part when the format is created, and |\orig@dump| @@ -5405,6 +5467,7 @@ help from Bernd Raichle, for which I am grateful. \ifx\directlua\@undefined\else \directlua{ Babel = Babel or {} Babel.debug = true }% + \input{babel-debug.tex}% \fi} {\providecommand\bbl@trace[1]{}% \let\bbl@debug\@gobble @@ -5665,9 +5728,6 @@ help from Bernd Raichle, for which I am grateful. % \begin{macrocode} \ifx\bbl@opt@provide\@nnil\else % Tests. Ignore. \chardef\bbl@iniflag\@ne - \bbl@replace\bbl@opt@provide{;}{,} - \bbl@add\bbl@opt@provide{,import} - \show\bbl@opt@provide \fi % % \end{macrocode} @@ -6295,10 +6355,10 @@ help from Bernd Raichle, for which I am grateful. % % \begin{macro}{\substitutefontfamily} % +% This command is deprecated. Use the tools provides by \LaTeX. % The command |\substitutefontfamily| creates an % \file{.fd} file on the fly. The first argument is an encoding % mnemonic, the second and third arguments are font family names. -% This command is deprecated. Use the tools provides by \LaTeX. % % \begin{macrocode} \def\substitutefontfamily#1#2#3{% @@ -6328,52 +6388,48 @@ help from Bernd Raichle, for which I am grateful. % % Because documents may use non-ASCII font encodings, we make sure % that the logos of \TeX\ and \LaTeX\ always come out in the right -% encoding. There is a list of non-ASCII encodings. Unfortunately, -% \textsf{fontenc} deletes its package options, so we must guess which -% encodings has been loaded by traversing |\@filelist| to search for -% \m{enc}|enc.def|. If a non-ASCII has been loaded, we define versions -% of |\TeX| and |\LaTeX| for them using |\ensureascii|. The default -% ASCII encoding is set, too (in reverse order): the ``main'' encoding -% (when the document begins), the last loaded, or |OT1|. +% encoding. There is a list of non-ASCII encodings. Requested +% encodings are currently stored in |\@fontenc@load@list|. If a +% non-ASCII has been loaded, we define versions of |\TeX| and |\LaTeX| +% for them using |\ensureascii|. The default ASCII encoding is set, +% too (in reverse order): the ``main'' encoding (when the document +% begins), the last loaded, or |OT1|. % % \begin{macro}{\ensureascii} % % \begin{macrocode} \bbl@trace{Encoding and fonts} -\newcommand\BabelNonASCII{LGR,X2,OT2,OT3,OT6,LHE,LWN,LMA,LMC,LMS,LMU,PU,PD1} +\newcommand\BabelNonASCII{LGR,X2,OT2,OT3,OT6,LHE,LWN,LMA,LMC,LMS,LMU} \newcommand\BabelNonText{TS1,T3,TS3} \let\org@TeX\TeX \let\org@LaTeX\LaTeX \let\ensureascii\@firstofone \AtBeginDocument{% - \in@false - \bbl@foreach\BabelNonASCII{% is there a text non-ascii enc? - \ifin@\else - \lowercase{\bbl@xin@{,#1enc.def,}{,\@filelist,}}% + \def\@elt#1{,#1,}% + \edef\bbl@tempa{\expandafter\@gobbletwo\@fontenc@load@list}% + \let\@elt\relax + \let\bbl@tempb\@empty + \def\bbl@tempc{OT1}% + \bbl@foreach\BabelNonASCII{% LGR loaded in a non-standard way + \bbl@ifunset{T@#1}{}{\def\bbl@tempb{#1}}}% + \bbl@foreach\bbl@tempa{% + \bbl@xin@{#1}{\BabelNonASCII}% + \ifin@ + \def\bbl@tempb{#1}% Store last non-ascii + \else\bbl@xin@{#1}{\BabelNonText}% Pass + \ifin@\else + \def\bbl@tempc{#1}% Store last ascii + \fi \fi}% - \ifin@ % if a text non-ascii has been loaded - \def\ensureascii#1{{\fontencoding{OT1}\selectfont#1}}% - \DeclareTextCommandDefault{\TeX}{\org@TeX}% - \DeclareTextCommandDefault{\LaTeX}{\org@LaTeX}% - \def\bbl@tempb#1\@@{\uppercase{\bbl@tempc#1}ENC.DEF\@empty\@@}% - \def\bbl@tempc#1ENC.DEF#2\@@{% - \ifx\@empty#2\else - \bbl@ifunset{T@#1}% - {}% - {\bbl@xin@{,#1,}{,\BabelNonASCII,\BabelNonText,}% - \ifin@ - \DeclareTextCommand{\TeX}{#1}{\ensureascii{\org@TeX}}% - \DeclareTextCommand{\LaTeX}{#1}{\ensureascii{\org@LaTeX}}% - \else - \def\ensureascii##1{{\fontencoding{#1}\selectfont##1}}% - \fi}% - \fi}% - \bbl@foreach\@filelist{\bbl@tempb#1\@@}% TODO - \@@ de mas?? + \ifx\bbl@tempb\@empty\else \bbl@xin@{,\cf@encoding,}{,\BabelNonASCII,\BabelNonText,}% \ifin@\else - \edef\ensureascii#1{{% - \noexpand\fontencoding{\cf@encoding}\noexpand\selectfont#1}}% + \edef\bbl@tempc{\cf@encoding}% The default if ascii wins \fi + \edef\ensureascii#1{% + {\noexpand\fontencoding{\bbl@tempc}\noexpand\selectfont#1}}% + \DeclareTextCommandDefault{\TeX}{\ensureascii{\org@TeX}}% + \DeclareTextCommandDefault{\LaTeX}{\ensureascii{\org@LaTeX}}% \fi} % \end{macrocode} % @@ -6415,16 +6471,12 @@ help from Bernd Raichle, for which I am grateful. \ifx\cf@encoding\bbl@t@one \xdef\latinencoding{\bbl@t@one}% \else - \ifx\@fontenc@load@list\@undefined - \@ifl@aded{def}{t1enc}{\xdef\latinencoding{\bbl@t@one}}{}% - \else - \def\@elt#1{,#1,}% - \edef\bbl@tempa{\expandafter\@gobbletwo\@fontenc@load@list}% - \let\@elt\relax - \bbl@xin@{,T1,}\bbl@tempa - \ifin@ - \xdef\latinencoding{\bbl@t@one}% - \fi + \def\@elt#1{,#1,}% + \edef\bbl@tempa{\expandafter\@gobbletwo\@fontenc@load@list}% + \let\@elt\relax + \bbl@xin@{,T1,}\bbl@tempa + \ifin@ + \xdef\latinencoding{\bbl@t@one}% \fi \fi}} % \end{macrocode} @@ -6457,6 +6509,19 @@ help from Bernd Raichle, for which I am grateful. \fi % \end{macrocode} % +% For several functions, we need to execute some code with +% |\selectfont|. With \LaTeX\ 2021-06-01, there is a hook for this +% purpose, but in older versions the \LaTeX{} command is patched (the +% latter solution will be eventually removed). +% +% \begin{macrocode} +\bbl@ifformatlater{2021-06-01}% + {\def\bbl@patchfont#1{\AddToHook{selectfont}{#1}}} + {\def\bbl@patchfont#1{% + \expandafter\bbl@add\csname selectfont \endcsname{#1}% + \expandafter\bbl@toglobal\csname selectfont \endcsname}} +% \end{macrocode} +% % \end{macro} % % \subsection{Basic bidi support} @@ -6494,78 +6559,10 @@ help from Bernd Raichle, for which I am grateful. % shows, vertical typesetting is possible, too. % \end{itemize} % -% As a frist step, add a handler for bidi and digits (and potentially -% other processes) just before \textsf{luaoftload} is applied, which is -% loaded by default by \LaTeX. Just in case, consider the possibility -% it has not been loaded. -% -% \begin{macrocode} -\ifodd\bbl@engine - \def\bbl@activate@preotf{% - \let\bbl@activate@preotf\relax % only once - \directlua{ - Babel = Babel or {} - % - function Babel.pre_otfload_v(head) - if Babel.numbers and Babel.digits_mapped then - head = Babel.numbers(head) - end - if Babel.bidi_enabled then - head = Babel.bidi(head, false, dir) - end - return head - end - % - function Babel.pre_otfload_h(head, gc, sz, pt, dir) - if Babel.numbers and Babel.digits_mapped then - head = Babel.numbers(head) - end - if Babel.bidi_enabled then - head = Babel.bidi(head, false, dir) - end - return head - end - % - luatexbase.add_to_callback('pre_linebreak_filter', - Babel.pre_otfload_v, - 'Babel.pre_otfload_v', - luatexbase.priority_in_callback('pre_linebreak_filter', - 'luaotfload.node_processor') or nil) - % - luatexbase.add_to_callback('hpack_filter', - Babel.pre_otfload_h, - 'Babel.pre_otfload_h', - luatexbase.priority_in_callback('hpack_filter', - 'luaotfload.node_processor') or nil) - }} -\fi -% \end{macrocode} -% -% The basic setup. In luatex, the output is modified at a very low -% level to set the |\bodydir| to the |\pagedir|. -% % \begin{macrocode} \bbl@trace{Loading basic (internal) bidi support} \ifodd\bbl@engine - \ifnum\bbl@bidimode>100 \ifnum\bbl@bidimode<200 - \let\bbl@beforeforeign\leavevmode - \AtEndOfPackage{\EnableBabelHook{babel-bidi}} - \RequirePackage{luatexbase} - \bbl@activate@preotf - \directlua{ - require('babel-data-bidi.lua') - \ifcase\expandafter\@gobbletwo\the\bbl@bidimode\or - require('babel-bidi-basic.lua') - \or - require('babel-bidi-basic-r.lua') - \fi} - % TODO - to locale_props, not as separate attribute - \newattribute\bbl@attr@dir - % TODO. I don't like it, hackish: - \bbl@exp{\output{\bodydir\pagedir\the\output}} - \AtEndOfPackage{\EnableBabelHook{babel-bidi}} - \fi\fi -\else +\else % TODO. Move to txtbabel \ifnum\bbl@bidimode>100 \ifnum\bbl@bidimode<200 \bbl@error {The bidi method 'basic' is available only in\\% @@ -6597,11 +6594,13 @@ help from Bernd Raichle, for which I am grateful. \fi \fi \fi +% TODO? Separate: \ifnum\bbl@bidimode=\@ne \let\bbl@beforeforeign\leavevmode \ifodd\bbl@engine \newattribute\bbl@attr@dir - \bbl@exp{\output{\bodydir\pagedir\the\output}}% + \directlua{ Babel.attr_dir = luatexbase.registernumber'bbl@attr@dir' } + \bbl@exp{\output{\bodydir\pagedir\the\output}} \fi \AtEndOfPackage{% \EnableBabelHook{babel-bidi}% @@ -6660,55 +6659,10 @@ help from Bernd Raichle, for which I am grateful. % \end{macrocode} % % Now the engine-dependent macros. TODO. Must be moved to the engine -% files? +% files. % % \begin{macrocode} \ifodd\bbl@engine % luatex=1 - \chardef\bbl@thetextdir\z@ - \chardef\bbl@thepardir\z@ - \def\bbl@getluadir#1{% - \directlua{ - if tex.#1dir == 'TLT' then - tex.sprint('0') - elseif tex.#1dir == 'TRT' then - tex.sprint('1') - end}} - \def\bbl@setluadir#1#2#3{% 1=text/par.. 2=\textdir.. 3=0 lr/1 rl - \ifcase#3\relax - \ifcase\bbl@getluadir{#1}\relax\else - #2 TLT\relax - \fi - \else - \ifcase\bbl@getluadir{#1}\relax - #2 TRT\relax - \fi - \fi} - \def\bbl@textdir#1{% - \bbl@setluadir{text}\textdir{#1}% - \chardef\bbl@thetextdir#1\relax - \setattribute\bbl@attr@dir{\numexpr\bbl@thepardir*3+#1}} - \def\bbl@pardir#1{% - \bbl@setluadir{par}\pardir{#1}% - \chardef\bbl@thepardir#1\relax} - \def\bbl@bodydir{\bbl@setluadir{body}\bodydir} - \def\bbl@pagedir{\bbl@setluadir{page}\pagedir} - \def\bbl@dirparastext{\pardir\the\textdir\relax}% %%%% - % Sadly, we have to deal with boxes in math with basic. - % Activated every math with the package option bidi=: - \ifnum\bbl@bidimode>\z@ - \def\bbl@mathboxdir{% - \ifcase\bbl@thetextdir\relax - \everyhbox{\bbl@mathboxdir@aux L}% - \else - \everyhbox{\bbl@mathboxdir@aux R}% - \fi} - \def\bbl@mathboxdir@aux#1{% - \@ifnextchar\egroup{}{\textdir T#1T\relax}} - \frozen@everymath\expandafter{% - \expandafter\bbl@mathboxdir\the\frozen@everymath} - \frozen@everydisplay\expandafter{% - \expandafter\bbl@mathboxdir\the\frozen@everydisplay} - \fi \else % pdftex=0, xetex=2 \newcount\bbl@dirlevel \chardef\bbl@thetextdir\z@ @@ -7053,9 +7007,16 @@ help from Bernd Raichle, for which I am grateful. \bbl@ldfinit \let\CurrentOption\bbl@opt@main \ifx\bbl@opt@provide\@nnil - \bbl@exp{\\\babelprovide[import,main]{\bbl@opt@main}} + \bbl@exp{\\\babelprovide[import,main]{\bbl@opt@main}}% \else - \bbl@exp{\\\babelprovide[\bbl@opt@provide,main]{\bbl@opt@main}}% + \bbl@exp{\\\bbl@forkv{\@nameuse{@raw@opt@babel.sty}}}{% + \bbl@xin@{,provide,}{,#1,}% + \ifin@ + \def\bbl@opt@provide{#2}% + \bbl@replace\bbl@opt@provide{;}{,}% + \fi}% + \bbl@exp{% + \\\babelprovide[\bbl@opt@provide,import,main]{\bbl@opt@main}}% \fi \bbl@afterldf{}% \else % case 0,2 @@ -7118,7 +7079,7 @@ help from Bernd Raichle, for which I am grateful. % \end{macrocode} % % The file |babel.def| expects some definitions made in the \LaTeXe{} -% style file. So, In \LaTeX2.09 and Plain{} we must provide at least +% style file. So, in Plain{} we must provide at least % some predefined values as well some tools to set them (even if not % all options are available). There are no package options, and % therefore and alternative mechanism is provided. For the moment, @@ -7154,16 +7115,6 @@ help from Bernd Raichle, for which I am grateful. \fi % \end{macrocode} % -% Exit immediately with 2.09. An error is raised by the sty file, but -% also try to minimize the number of errors. -% -% \begin{macrocode} -\ifx\bbl@trace\@undefined - \let\LdfInit\endinput - \def\ProvidesLanguage#1{\endinput} -\endinput\fi % Same line! -% \end{macrocode} -% % And continue. % % \section{Multiple languages} @@ -7210,7 +7161,7 @@ help from Bernd Raichle, for which I am grateful. % exists. Otherwise raises and error. % % The argument of |\bbl@fixname| has to be a macro name, as it may get -% ``fixed'' if casing (lc/uc) is wrong. It's intented to fix a +% ``fixed'' if casing (lc/uc) is wrong. It's an attempt to fix a % long-standing bug when |\foreignlanguage| and the like appear in % a |\MakeXXXcase|. However, a lowercase form is not imposed to % improve backward compatibility (perhaps you defined a language @@ -7371,8 +7322,9 @@ help from Bernd Raichle, for which I am grateful. \ifx\@undefined\protect\let\protect\relax\fi % \end{macrocode} % -% The following definition is preserved for backwards compatibility. It -% is related to a trick for 2.09. +% The following definition is preserved for backwards compatibility +% (eg, \textsf{arabi}, \textsf{koma}). It is related to a trick for +% 2.09, now discarded. % % \begin{macrocode} \let\xstring\string @@ -7417,7 +7369,15 @@ help from Bernd Raichle, for which I am grateful. % \begin{macrocode} \def\bbl@push@language{% \ifx\languagename\@undefined\else - \xdef\bbl@language@stack{\languagename+\bbl@language@stack}% + \ifx\currentgrouplevel\@undefined + \xdef\bbl@language@stack{\languagename+\bbl@language@stack}% + \else + \ifnum\currentgrouplevel=\z@ + \xdef\bbl@language@stack{\languagename+}% + \else + \xdef\bbl@language@stack{\languagename+\bbl@language@stack}% + \fi + \fi \fi} % \end{macrocode} % @@ -7603,10 +7563,10 @@ help from Bernd Raichle, for which I am grateful. \let\bbl@select@type\z@ \expandafter\bbl@switch\expandafter{\languagename}% \fi}} -\def\babel@aux#1#2{% TODO. See how to avoid undefined nil's +\def\babel@aux#1#2{% \select@language{#1}% - \bbl@foreach\BabelContentsFiles{% - \@writefile{##1}{\babel@toc{#1}{#2}}}}% %% TODO - ok in plain? + \bbl@foreach\BabelContentsFiles{% \relax -> don't assume vertical mode + \@writefile{##1}{\babel@toc{#1}{#2}\relax}}}% TODO - plain? \def\babel@toc#1#2{% \select@language{#1}} % \end{macrocode} @@ -8288,10 +8248,12 @@ help from Bernd Raichle, for which I am grateful. \newcommand\EnableBabelHook[1]{\bbl@csarg\let{hk@#1}\@firstofone} \newcommand\DisableBabelHook[1]{\bbl@csarg\let{hk@#1}\@gobble} \def\bbl@usehooks#1#2{% + \ifx\UseHook\@undefined\else\UseHook{babel/#1}\fi \def\bbl@elth##1{% \bbl@cs{hk@##1}{\bbl@cs{ev@##1@#1@}#2}}% \bbl@cs{ev@#1@}% \ifx\languagename\@undefined\else % Test required for Plain (?) + \ifx\UseHook\@undefined\else\UseHook{babel/#1/\languagename}\fi \def\bbl@elth##1{% \bbl@cs{hk@##1}{\bbl@cl{ev@##1@#1}#2}}% \bbl@cl{ev@#1}% @@ -8311,6 +8273,10 @@ help from Bernd Raichle, for which I am grateful. beforeextras=0,afterextras=0,stopcommands=0,stringprocess=0,% hyphenation=2,initiateactive=3,afterreset=0,foreign=0,foreign*=0,% beforestart=0,languagename=2} +\ifx\NewHook\@undefined\else + \def\bbl@tempa#1=#2\@@{\NewHook{babel/#1}} + \bbl@foreach\bbl@evargs{\bbl@tempa#1\@@} +\fi % \end{macrocode} % % \begin{macro}{\babelensure} @@ -8499,9 +8465,7 @@ help from Bernd Raichle, for which I am grateful. \let\BabelModifiers\relax \let\bbl@screset\relax}% \def\ldf@finish#1{% - \ifx\loadlocalcfg\@undefined\else % For LaTeX 209 - \loadlocalcfg{#1}% - \fi + \loadlocalcfg{#1}% \bbl@afterldf{#1}% \expandafter\main@language\expandafter{#1}% \catcode`\@=\atcatcode \let\atcatcode\relax @@ -8543,10 +8507,12 @@ help from Bernd Raichle, for which I am grateful. % % \begin{macrocode} \def\bbl@beforestart{% + \def\@nolanerr##1{% + \bbl@warning{Undefined language '##1' in aux.\\Reported}}% \bbl@usehooks{beforestart}{}% \global\let\bbl@beforestart\relax} \AtBeginDocument{% - \@nameuse{bbl@beforestart}% + {\@nameuse{bbl@beforestart}}% Group! \if@filesw \providecommand\babel@aux[2]{}% \immediate\write\@mainaux{% @@ -10920,11 +10886,11 @@ help from Bernd Raichle, for which I am grateful. \ifx\bbl@KVP@captions\@nil \let\bbl@KVP@captions\bbl@KVP@import \fi - % == + % == \ifx\bbl@KVP@transforms\@nil\else \bbl@replace\bbl@KVP@transforms{ }{,}% \fi - % Load ini + % == Load ini == \ifcase\bbl@howloaded \bbl@provide@new{#2}% \else @@ -11007,7 +10973,7 @@ help from Bernd Raichle, for which I am grateful. end}% \ifx\bbl@mapselect\@undefined % TODO. almost the same as mapfont \AtBeginDocument{% - \expandafter\bbl@add\csname selectfont \endcsname{{\bbl@mapselect}}% + \bbl@patchfont{{\bbl@mapselect}}% {\selectfont}}% \def\bbl@mapselect{% \let\bbl@mapselect\relax @@ -11033,9 +10999,9 @@ help from Bernd Raichle, for which I am grateful. {See the manual for details.}}}% \bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}% \bbl@ifunset{bbl@wdir@\languagename}{\bbl@provide@dirs{\languagename}}{}% - \ifx\bbl@mapselect\@undefined % TODO. See onchar + \ifx\bbl@mapselect\@undefined % TODO. See onchar. \AtBeginDocument{% - \expandafter\bbl@add\csname selectfont \endcsname{{\bbl@mapselect}}% + \bbl@patchfont{{\bbl@mapselect}}% {\selectfont}}% \def\bbl@mapselect{% \let\bbl@mapselect\relax @@ -11056,6 +11022,24 @@ help from Bernd Raichle, for which I am grateful. \bbl@csarg\edef{intsp@#2}{\bbl@KVP@intraspace}% \fi \bbl@provide@intraspace + % == Line breaking: CJK quotes == + \ifcase\bbl@engine\or + \bbl@xin@{/c}{/\bbl@cl{lnbrk}}% + \ifin@ + \bbl@ifunset{bbl@quote@\languagename}{}% + {\directlua{ + Babel.locale_props[\the\localeid].cjk_quotes = {} + local cs = 'op' + for c in string.utfvalues(% + [[\csname bbl@quote@\languagename\endcsname]]) do + if Babel.cjk_characters[c].c == 'qu' then + Babel.locale_props[\the\localeid].cjk_quotes[c] = cs + end + cs = ( cs == 'op') and 'cl' or 'op' + end + }}% + \fi + \fi % == Line breaking: justification == \ifx\bbl@KVP@justification\@nil\else \let\bbl@KVP@linebreaking\bbl@KVP@justification @@ -11128,7 +11112,7 @@ help from Bernd Raichle, for which I am grateful. table.pack(string.utfvalue('\bbl@cl{dgnat}')) if not Babel.numbers then function Babel.numbers(head) - local LOCALE = luatexbase.registernumber'bbl@attr@locale' + local LOCALE = Babel.attr_locale local GLYPH = node.id'glyph' local inmath = false for item in node.traverse(head) do @@ -11255,12 +11239,12 @@ help from Bernd Raichle, for which I am grateful. \StartBabelCommands*{#1}{captions}% \bbl@read@ini{\bbl@KVP@captions}2% % Here all letters cat = 11 \EndBabelCommands - \fi - \ifx\bbl@KVP@import\@nil\else - \StartBabelCommands*{#1}{date}% - \bbl@savetoday - \bbl@savedate - \EndBabelCommands + \fi + \ifx\bbl@KVP@import\@nil\else + \StartBabelCommands*{#1}{date}% + \bbl@savetoday + \bbl@savedate + \EndBabelCommands \fi % == hyphenrules (also in new) == \ifx\bbl@lbkflag\@empty @@ -11598,6 +11582,7 @@ help from Bernd Raichle, for which I am grateful. \bbl@exportkey{intsp}{typography.intraspace}{}% \bbl@exportkey{frspc}{typography.frenchspacing}{u}% \bbl@exportkey{chrng}{characters.ranges}{}% + \bbl@exportkey{quote}{characters.delimiters.quotes}{}% \bbl@exportkey{dgnat}{numbers.digits.native}{}% \ifnum#1=\tw@ % only (re)new \bbl@exportkey{rqtex}{identification.require.babel}{}% @@ -11895,7 +11880,10 @@ help from Bernd Raichle, for which I am grateful. % \textbf{Dates} will require some macros for the basic formatting. % They may be redefined by language, so ``semi-public'' names (camel % case) are used. Oddly enough, the CLDR places particles like “de” -% inconsistently in either in the date or in the month name. +% inconsistently in either in the date or in the month name. Note after +% |\bbl@replace| |\toks@| contains the resulting string, which is used +% by |\bbl@replace@finish@iii| (this implicit behavior doesn't seem a +% good idea, but it’s efficient). % % \begin{macrocode} \let\bbl@calendar\@empty @@ -11919,7 +11907,7 @@ help from Bernd Raichle, for which I am grateful. range 0-9999.}% {There is little you can do. Sorry.}% \fi\fi\fi\fi}} -\newcommand\BabelDateyyyy[1]{{\number#1}} % FIXME - add leading 0 +\newcommand\BabelDateyyyy[1]{{\number#1}} % TODO - add leading 0 \def\bbl@replace@finish@iii#1{% \bbl@exp{\def\\#1####1####2####3{\the\toks@}}} \def\bbl@TG@@date{% @@ -11936,8 +11924,6 @@ help from Bernd Raichle, for which I am grateful. \bbl@replace\bbl@toreplace{[y|}{\bbl@datecntr[####1|}% \bbl@replace\bbl@toreplace{[m|}{\bbl@datecntr[####2|}% \bbl@replace\bbl@toreplace{[d|}{\bbl@datecntr[####3|}% -% Note after \bbl@replace \toks@ contains the resulting string. -% TODO - Using this implicit behavior doesn't seem a good idea. \bbl@replace@finish@iii\bbl@toreplace} \def\bbl@datecntr{\expandafter\bbl@xdatecntr\expandafter} \def\bbl@xdatecntr[#1|#2]{\localenumeral{#2}{#1}} @@ -12000,10 +11986,8 @@ help from Bernd Raichle, for which I am grateful. \expandafter\@secondoftwo % to execute right now \fi \AtBeginDocument{% - \expandafter\bbl@add - \csname selectfont \endcsname{\bbl@xenohyph}% - \expandafter\selectlanguage\expandafter{\languagename}% - \expandafter\bbl@toglobal\csname selectfont \endcsname}% + \bbl@patchfont{\bbl@xenohyph}% + \expandafter\selectlanguage\expandafter{\languagename}}% \fi}}% \fi \bbl@csarg\bbl@toglobal{lsys@#1}} @@ -12297,10 +12281,11 @@ help from Bernd Raichle, for which I am grateful. \directlua{ Babel.ignore_pre_char = function(node) return false end }} -% TODO: use babel name, override +% \end{macrocode} % -% As the final task, load the code for lua. +% As the final task, load the code for lua. TODO: use babel name, override % +% \begin{macrocode} \ifx\directlua\@undefined\else \ifx\bbl@luapatterns\@undefined \input luababel.def @@ -12328,23 +12313,10 @@ help from Bernd Raichle, for which I am grateful. % % The following code is meant to be read by ini\TeX\ because it % should instruct \TeX\ to read hyphenation patterns. To this end the -% \texttt{docstrip} option \texttt{patterns} can be used to include +% \texttt{docstrip} option \texttt{patterns} is used to include % this code in the file \file{hyphen.cfg}. Code is written with lower % level macros. % -% To make sure that \LaTeX$\:$2.09 executes the |\@begindocumenthook| -% we would want to alter |\begin{document}|, but as this done too often -% already, we add the new code at the front of |\@preamblecmds|. But we -% can only do that after it has been defined, so we add this piece of -% code to |\dump|. -% -% This new definition starts by adding an instruction to write a -% message on the terminal and in the transcript file to inform the -% user of the preloaded hyphenation patterns. -% -% Then everything is restored to the old situation and the format -% is dumped. -% % \begin{macrocode} <@Make sure ProvidesFile is defined@> \ProvidesFile{hyphen.cfg}[<@date@> <@version@> Babel hyphens] @@ -12353,15 +12325,6 @@ help from Bernd Raichle, for which I am grateful. \def\bbl@date{<@date@>} \ifx\AtBeginDocument\@undefined \def\@empty{} - \let\orig@dump\dump - \def\dump{% - \ifx\@ztryfc\@undefined - \else - \toks0=\expandafter{\@preamblecmds}% - \edef\@preamblecmds{\noexpand\@begindocumenthook\the\toks0}% - \def\@begindocumenthook{}% - \fi - \let\dump\orig@dump\let\orig@dump\@undefined\dump} \fi <@Define core switching macros@> % \end{macrocode} @@ -12744,7 +12707,7 @@ help from Bernd Raichle, for which I am grateful. \ExplSyntaxOn \catcode`\ =10 \def\bbl@loadfontspec{% - \usepackage{fontspec}% + \usepackage{fontspec}% TODO. Apply patch always \expandafter \def\csname msg~text~>~fontspec/language-not-exist\endcsname##1##2##3##4{% Font '\l_fontspec_fontname_tl' is using the\\% @@ -12778,9 +12741,7 @@ help from Bernd Raichle, for which I am grateful. \newcommand\bbl@bblfont[2][]{% 1=features 2=fontname, @font=rm|sf|tt \bbl@ifunset{\bbl@tempb family}% {\bbl@providefam{\bbl@tempb}}% - {\bbl@exp{% - \\\bbl@sreplace\<\bbl@tempb family >% - {\@nameuse{\bbl@tempb default}}{\<\bbl@tempb default>}}}% + {}% % For the default font, just in case: \bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}% \expandafter\bbl@ifblank\expandafter{\bbl@tempa}% @@ -12794,7 +12755,7 @@ help from Bernd Raichle, for which I am grateful. % \end{macrocode} % % If the family in the previous command does not exist, it must be -% defined. Here is how: +% defined. Here is how: % % \begin{macrocode} \def\bbl@providefam#1{% @@ -12803,12 +12764,15 @@ help from Bernd Raichle, for which I am grateful. \\\bbl@add@list\\\bbl@font@fams{#1}% \\\DeclareRobustCommand\<#1family>{% \\\not@math@alphabet\<#1family>\relax - \\\fontfamily\<#1default>\\\selectfont}% + % \\\prepare@family@series@update{#1}\<#1default>% TODO. Fails + \\\fontfamily\<#1default>% + \\\\UseHooks\\\@undefined\\\\UseHook{#1family}\% + \\\selectfont}% \\\DeclareTextFontCommand{\}{\<#1family>}}} % \end{macrocode} % % The following macro is activated when the hook |babel-fontspec| is -% enabled. But before we define a macro for a warning, which sets a +% enabled. But before, we define a macro for a warning, which sets a % flag to avoid duplicate them. % % \begin{macrocode} @@ -13117,10 +13081,7 @@ help from Bernd Raichle, for which I am grateful. \ifx\AtBeginDocument\@notprerr \expandafter\@secondoftwo % to execute right now \fi - \AtBeginDocument{% - \expandafter\bbl@add - \csname selectfont \endcsname{\bbl@ispacesize}% - \expandafter\bbl@toglobal\csname selectfont \endcsname}% + \AtBeginDocument{\bbl@patchfont{\bbl@xenohyph}}% \fi}% \fi} \ifx\DisableBabelHook\@undefined\endinput\fi @@ -13511,7 +13472,7 @@ help from Bernd Raichle, for which I am grateful. \endgroup \ifx\newattribute\@undefined\else \newattribute\bbl@attr@locale - \directlua{ Babel.attr_locale = luatexbase.registernumber'bbl@attr@locale'} + \directlua{ Babel.attr_locale = luatexbase.registernumber'bbl@attr@locale' } \AddBabelHook{luatex}{beforeextras}{% \setattribute\bbl@attr@locale\localeid} \fi @@ -13733,11 +13694,15 @@ help from Bernd Raichle, for which I am grateful. local lang = item.lang local LOCALE = node.get_attribute(item, - luatexbase.registernumber'bbl@attr@locale') + Babel.attr_locale) local props = Babel.locale_props[LOCALE] local class = Babel.cjk_class[item.char].c + if props.cjk_quotes and props.cjk_quotes[item.char] then + class = props.cjk_quotes[item.char] + end + if class == 'cp' then class = 'cl' end % )] as CL if class == 'id' then class = 'I' end @@ -13856,8 +13821,9 @@ help from Bernd Raichle, for which I am grateful. \gdef\bbl@arabicjust{% \let\bbl@arabicjust\relax \newattribute\bblar@kashida + \directlua{ Babel.attr_kashida = luatexbase.registernumber'bblar@kashida' }% \bblar@kashida=\z@ - \expandafter\bbl@add\csname selectfont \endcsname{{\bbl@parsejalt}}% + \bbl@patchfont{{\bbl@parsejalt}}% \directlua{ Babel.arabic.elong_map = Babel.arabic.elong_map or {} Babel.arabic.elong_map[\the\localeid] = {} @@ -13962,9 +13928,9 @@ function Babel.arabic.justify_hlist(head, line, gc, size, pack) local elong_map = Babel.arabic.elong_map local last_line local GLYPH = node.id'glyph' - local KASHIDA = luatexbase.registernumber'bblar@kashida' - local LOCALE = luatexbase.registernumber'bbl@attr@locale' - + local KASHIDA = Babel.attr_kashida + local LOCALE = Babel.attr_locale + if line == nil then line = {} line.glue_sign = 1 @@ -14157,7 +14123,7 @@ Babel.script_blocks.Kana = Babel.script_blocks.Jpan function Babel.locale_map(head) if not Babel.locale_mapped then return head end - local LOCALE = luatexbase.registernumber'bbl@attr@locale' + local LOCALE = Babel.attr_locale local GLYPH = node.id('glyph') local inmath = false local toloc_save @@ -14263,534 +14229,11 @@ end % % Post-handling hyphenation patterns for non-standard rules, like |ff| % to |ff-f|. There are still some issues with speed (not very slow, but -% still slow). -% -% After declaring the table containing the patterns with their -% replacements, we define some auxiliary functions: |str_to_nodes| -% converts the string returned by a function to a node list, taking the -% node at |base| as a model (font, language, etc.); |fetch_word| -% fetches a series of glyphs and discretionaries, which |pattern| is -% matched against (if there is a match, it is called again before -% trying other patterns, and this is very likely the main bottleneck). -% -% |post_hyphenate_replace| is the callback applied after -% |lang.hyphenate|. This means the automatic hyphenation points are -% known. As empty captures return a byte position (as explained in the -% \luatex{} manual), we must convert it to a utf8 position. With -% |first|, the last byte can be the leading byte in a utf8 sequence, so -% we just remove it and add 1 to the resulting length. With |last| we -% must take into account the capture position points to the next -% character. Here |word_head| points to the starting node of the text -% to be matched. +% still slow). The Lua code is below. % % \begin{macrocode} -\begingroup % TODO - to a lua file -\catcode`\~=12 -\catcode`\#=12 -\catcode`\%=12 -\catcode`\&=14 \directlua{ - Babel.linebreaking.replacements = {} - Babel.linebreaking.replacements[0] = {} &% pre - Babel.linebreaking.replacements[1] = {} &% post - - &% Discretionaries contain strings as nodes - function Babel.str_to_nodes(fn, matches, base) - local n, head, last - if fn == nil then return nil end - for s in string.utfvalues(fn(matches)) do - if base.id == 7 then - base = base.replace - end - n = node.copy(base) - n.char = s - if not head then - head = n - else - last.next = n - end - last = n - end - return head - end - - Babel.fetch_subtext = {} - - Babel.ignore_pre_char = function(node) - return (node.lang == \the\l@nohyphenation) - end - - &% Merging both functions doesn't seen feasible, because there are too - &% many differences. - Babel.fetch_subtext[0] = function(head) - local word_string = '' - local word_nodes = {} - local lang - local item = head - local inmath = false - - while item do - - if item.id == 11 then - inmath = (item.subtype == 0) - end - - if inmath then - &% pass - - elseif item.id == 29 then - local locale = node.get_attribute(item, Babel.attr_locale) - - if lang == locale or lang == nil then - lang = lang or locale - if Babel.ignore_pre_char(item) then - word_string = word_string .. Babel.us_char - else - word_string = word_string .. unicode.utf8.char(item.char) - end - word_nodes[#word_nodes+1] = item - else - break - end - - elseif item.id == 12 and item.subtype == 13 then - word_string = word_string .. ' ' - word_nodes[#word_nodes+1] = item - - &% Ignore leading unrecognized nodes, too. - elseif word_string ~= '' then - word_string = word_string .. Babel.us_char - word_nodes[#word_nodes+1] = item &% Will be ignored - end - - item = item.next - end - - &% Here and above we remove some trailing chars but not the - &% corresponding nodes. But they aren't accessed. - if word_string:sub(-1) == ' ' then - word_string = word_string:sub(1,-2) - end - word_string = unicode.utf8.gsub(word_string, Babel.us_char .. '+$', '') - return word_string, word_nodes, item, lang - end - - Babel.fetch_subtext[1] = function(head) - local word_string = '' - local word_nodes = {} - local lang - local item = head - local inmath = false - - while item do - - if item.id == 11 then - inmath = (item.subtype == 0) - end - - if inmath then - &% pass - - elseif item.id == 29 then - if item.lang == lang or lang == nil then - if (item.char ~= 124) and (item.char ~= 61) then &% not =, not | - lang = lang or item.lang - word_string = word_string .. unicode.utf8.char(item.char) - word_nodes[#word_nodes+1] = item - end - else - break - end - - elseif item.id == 7 and item.subtype == 2 then - word_string = word_string .. '=' - word_nodes[#word_nodes+1] = item - - elseif item.id == 7 and item.subtype == 3 then - word_string = word_string .. '|' - word_nodes[#word_nodes+1] = item - - &% (1) Go to next word if nothing was found, and (2) implictly - &% remove leading USs. - elseif word_string == '' then - &% pass - - &% This is the responsible for splitting by words. - elseif (item.id == 12 and item.subtype == 13) then - break - - else - word_string = word_string .. Babel.us_char - word_nodes[#word_nodes+1] = item &% Will be ignored - end - - item = item.next - end - - word_string = unicode.utf8.gsub(word_string, Babel.us_char .. '+$', '') - return word_string, word_nodes, item, lang - end - - function Babel.pre_hyphenate_replace(head) - Babel.hyphenate_replace(head, 0) - end - - function Babel.post_hyphenate_replace(head) - Babel.hyphenate_replace(head, 1) - end - - function Babel.debug_hyph(w, wn, sc, first, last, last_match) - local ss = '' - for pp = 1, 40 do - if wn[pp] then - if wn[pp].id == 29 then - ss = ss .. unicode.utf8.char(wn[pp].char) - else - ss = ss .. '{' .. wn[pp].id .. '}' - end - end - end - print('nod', ss) - print('lst_m', - string.rep(' ', unicode.utf8.len( - string.sub(w, 1, last_match))-1) .. '>') - print('str', w) - print('sc', string.rep(' ', sc-1) .. '^') - if first == last then - print('f=l', string.rep(' ', first-1) .. '!') - else - print('f/l', string.rep(' ', first-1) .. '[' .. - string.rep(' ', last-first-1) .. ']') - end - end - - Babel.us_char = string.char(31) - - function Babel.hyphenate_replace(head, mode) - local u = unicode.utf8 - local lbkr = Babel.linebreaking.replacements[mode] - - local word_head = head - - while true do &% for each subtext block - - local w, w_nodes, nw, lang = Babel.fetch_subtext[mode](word_head) - - if Babel.debug then - print() - print((mode == 0) and '@@@@<' or '@@@@>', w) - end - - if nw == nil and w == '' then break end - - if not lang then goto next end - if not lbkr[lang] then goto next end - - &% For each saved (pre|post)hyphenation. TODO. Reconsider how - &% loops are nested. - for k=1, #lbkr[lang] do - local p = lbkr[lang][k].pattern - local r = lbkr[lang][k].replace - - if Babel.debug then - print('*****', p, mode) - end - - &% This variable is set in some cases below to the first *byte* - &% after the match, either as found by u.match (faster) or the - &% computed position based on sc if w has changed. - local last_match = 0 - local step = 0 - - &% For every match. - while true do - if Babel.debug then - print('=====') - end - local new &% used when inserting and removing nodes - - local matches = { u.match(w, p, last_match) } - - if #matches < 2 then break end - - &% Get and remove empty captures (with ()'s, which return a - &% number with the position), and keep actual captures - &% (from (...)), if any, in matches. - local first = table.remove(matches, 1) - local last = table.remove(matches, #matches) - &% Non re-fetched substrings may contain \31, which separates - &% subsubstrings. - if string.find(w:sub(first, last-1), Babel.us_char) then break end - - local save_last = last &% with A()BC()D, points to D - - &% Fix offsets, from bytes to unicode. Explained above. - first = u.len(w:sub(1, first-1)) + 1 - last = u.len(w:sub(1, last-1)) &% now last points to C - - &% This loop stores in n small table the nodes - &% corresponding to the pattern. Used by 'data' to provide a - &% predictable behavior with 'insert' (now w_nodes is modified on - &% the fly), and also access to 'remove'd nodes. - local sc = first-1 &% Used below, too - local data_nodes = {} - - for q = 1, last-first+1 do - data_nodes[q] = w_nodes[sc+q] - end - - &% This loop traverses the matched substring and takes the - &% corresponding action stored in the replacement list. - &% sc = the position in substr nodes / string - &% rc = the replacement table index - local rc = 0 - - while rc < last-first+1 do &% for each replacement - if Babel.debug then - print('.....', rc + 1) - end - sc = sc + 1 - rc = rc + 1 - - if Babel.debug then - Babel.debug_hyph(w, w_nodes, sc, first, last, last_match) - local ss = '' - for itt in node.traverse(head) do - if itt.id == 29 then - ss = ss .. unicode.utf8.char(itt.char) - else - ss = ss .. '{' .. itt.id .. '}' - end - end - print('*****************', ss) - - end - - local crep = r[rc] - local item = w_nodes[sc] - local item_base = item - local placeholder = Babel.us_char - local d - - if crep and crep.data then - item_base = data_nodes[crep.data] - end - - if crep then - step = crep.step or 0 - end - - if crep and next(crep) == nil then &% = {} - last_match = save_last &% Optimization - goto next - - elseif crep == nil or crep.remove then - node.remove(head, item) - table.remove(w_nodes, sc) - w = u.sub(w, 1, sc-1) .. u.sub(w, sc+1) - sc = sc - 1 &% Nothing has been inserted. - last_match = utf8.offset(w, sc+1+step) - goto next - - elseif crep and crep.kashida then &% Experimental - node.set_attribute(item, - luatexbase.registernumber'bblar@kashida', - crep.kashida) - last_match = utf8.offset(w, sc+1+step) - goto next - - elseif crep and crep.string then - local str = crep.string(matches) - if str == '' then &% Gather with nil - node.remove(head, item) - table.remove(w_nodes, sc) - w = u.sub(w, 1, sc-1) .. u.sub(w, sc+1) - sc = sc - 1 &% Nothing has been inserted. - else - local loop_first = true - for s in string.utfvalues(str) do - d = node.copy(item_base) - d.char = s - if loop_first then - loop_first = false - head, new = node.insert_before(head, item, d) - if sc == 1 then - word_head = head - end - w_nodes[sc] = d - w = u.sub(w, 1, sc-1) .. u.char(s) .. u.sub(w, sc+1) - else - sc = sc + 1 - head, new = node.insert_before(head, item, d) - table.insert(w_nodes, sc, new) - w = u.sub(w, 1, sc-1) .. u.char(s) .. u.sub(w, sc) - end - if Babel.debug then - print('.....', 'str') - Babel.debug_hyph(w, w_nodes, sc, first, last, last_match) - end - end &% for - node.remove(head, item) - end &% if '' - last_match = utf8.offset(w, sc+1+step) - goto next - - elseif mode == 1 and crep and (crep.pre or crep.no or crep.post) then - d = node.new(7, 0) &% (disc, discretionary) - d.pre = Babel.str_to_nodes(crep.pre, matches, item_base) - d.post = Babel.str_to_nodes(crep.post, matches, item_base) - d.replace = Babel.str_to_nodes(crep.no, matches, item_base) - d.attr = item_base.attr - if crep.pre == nil then &% TeXbook p96 - d.penalty = crep.penalty or tex.hyphenpenalty - else - d.penalty = crep.penalty or tex.exhyphenpenalty - end - placeholder = '|' - head, new = node.insert_before(head, item, d) - - elseif mode == 0 and crep and (crep.pre or crep.no or crep.post) then - &% ERROR - - elseif crep and crep.penalty then - d = node.new(14, 0) &% (penalty, userpenalty) - d.attr = item_base.attr - d.penalty = crep.penalty - head, new = node.insert_before(head, item, d) - - elseif crep and crep.space then - &% 655360 = 10 pt = 10 * 65536 sp - d = node.new(12, 13) &% (glue, spaceskip) - local quad = font.getfont(item_base.font).size or 655360 - node.setglue(d, crep.space[1] * quad, - crep.space[2] * quad, - crep.space[3] * quad) - if mode == 0 then - placeholder = ' ' - end - head, new = node.insert_before(head, item, d) - - elseif crep and crep.spacefactor then - d = node.new(12, 13) &% (glue, spaceskip) - local base_font = font.getfont(item_base.font) - node.setglue(d, - crep.spacefactor[1] * base_font.parameters['space'], - crep.spacefactor[2] * base_font.parameters['space_stretch'], - crep.spacefactor[3] * base_font.parameters['space_shrink']) - if mode == 0 then - placeholder = ' ' - end - head, new = node.insert_before(head, item, d) - - elseif mode == 0 and crep and crep.space then - &% ERROR - - end &% ie replacement cases - - &% Shared by disc, space and penalty. - if sc == 1 then - word_head = head - end - if crep.insert then - w = u.sub(w, 1, sc-1) .. placeholder .. u.sub(w, sc) - table.insert(w_nodes, sc, new) - last = last + 1 - else - w_nodes[sc] = d - node.remove(head, item) - w = u.sub(w, 1, sc-1) .. placeholder .. u.sub(w, sc+1) - end - - last_match = utf8.offset(w, sc+1+step) - - ::next:: - - end &% for each replacement - - if Babel.debug then - print('.....', '/') - Babel.debug_hyph(w, w_nodes, sc, first, last, last_match) - end - - end &% for match - - end &% for patterns - - ::next:: - word_head = nw - end &% for substring - return head - end - - &% This table stores capture maps, numbered consecutively - Babel.capture_maps = {} - - &% The following functions belong to the next macro - function Babel.capture_func(key, cap) - local ret = "[[" .. cap:gsub('{([0-9])}', "]]..m[%1]..[[") .. "]]" - local cnt - local u = unicode.utf8 - ret, cnt = ret:gsub('{([0-9])|([^|]+)|(.-)}', Babel.capture_func_map) - if cnt == 0 then - ret = u.gsub(ret, '{(%x%x%x%x+)}', - function (n) - return u.char(tonumber(n, 16)) - end) - end - ret = ret:gsub("%[%[%]%]%.%.", '') - ret = ret:gsub("%.%.%[%[%]%]", '') - return key .. [[=function(m) return ]] .. ret .. [[ end]] - end - - function Babel.capt_map(from, mapno) - return Babel.capture_maps[mapno][from] or from - end - - &% Handle the {n|abc|ABC} syntax in captures - function Babel.capture_func_map(capno, from, to) - local u = unicode.utf8 - from = u.gsub(from, '{(%x%x%x%x+)}', - function (n) - return u.char(tonumber(n, 16)) - end) - to = u.gsub(to, '{(%x%x%x%x+)}', - function (n) - return u.char(tonumber(n, 16)) - end) - local froms = {} - for s in string.utfcharacters(from) do - table.insert(froms, s) - end - local cnt = 1 - table.insert(Babel.capture_maps, {}) - local mlen = table.getn(Babel.capture_maps) - for s in string.utfcharacters(to) do - Babel.capture_maps[mlen][froms[cnt]] = s - cnt = cnt + 1 - end - return "]]..Babel.capt_map(m[" .. capno .. "]," .. - (mlen) .. ").." .. "[[" - end - - &% Create/Extend reversed sorted list of kashida weights: - function Babel.capture_kashida(key, wt) - wt = tonumber(wt) - if Babel.kashida_wts then - for p, q in ipairs(Babel.kashida_wts) do - if wt == q then - break - elseif wt > q then - table.insert(Babel.kashida_wts, p, wt) - break - elseif table.getn(Babel.kashida_wts) == p then - table.insert(Babel.kashida_wts, wt) - end - end - else - Babel.kashida_wts = { wt } - end - return 'kashida = ' .. wt - end + Babel.nohyphenation = \the\l@nohyphenation } % \end{macrocode} % @@ -14809,7 +14252,10 @@ end % in macro names (which explains the internal group, too). % % \begin{macrocode} -\catcode`\#=6 +\begingroup +\catcode`\~=12 +\catcode`\%=12 +\catcode`\&=14 \gdef\babelposthyphenation#1#2#3{&% \bbl@activateposthyphen \begingroup @@ -14904,15 +14350,135 @@ end \def\bbl@activateposthyphen{% \let\bbl@activateposthyphen\relax \directlua{ + require('babel-transforms.lua') Babel.linebreaking.add_after(Babel.post_hyphenate_replace) }} \def\bbl@activateprehyphen{% \let\bbl@activateprehyphen\relax \directlua{ + require('babel-transforms.lua') Babel.linebreaking.add_before(Babel.pre_hyphenate_replace) }} % \end{macrocode} % +% \subsection{Bidi} +% +% As a first step, add a handler for bidi and digits (and potentially +% other processes) just before \textsf{luaoftload} is applied, which is +% loaded by default by \LaTeX. Just in case, consider the possibility +% it has not been loaded. +% +% \begin{macrocode} +\def\bbl@activate@preotf{% + \let\bbl@activate@preotf\relax % only once + \directlua{ + Babel = Babel or {} + % + function Babel.pre_otfload_v(head) + if Babel.numbers and Babel.digits_mapped then + head = Babel.numbers(head) + end + if Babel.bidi_enabled then + head = Babel.bidi(head, false, dir) + end + return head + end + % + function Babel.pre_otfload_h(head, gc, sz, pt, dir) + if Babel.numbers and Babel.digits_mapped then + head = Babel.numbers(head) + end + if Babel.bidi_enabled then + head = Babel.bidi(head, false, dir) + end + return head + end + % + luatexbase.add_to_callback('pre_linebreak_filter', + Babel.pre_otfload_v, + 'Babel.pre_otfload_v', + luatexbase.priority_in_callback('pre_linebreak_filter', + 'luaotfload.node_processor') or nil) + % + luatexbase.add_to_callback('hpack_filter', + Babel.pre_otfload_h, + 'Babel.pre_otfload_h', + luatexbase.priority_in_callback('hpack_filter', + 'luaotfload.node_processor') or nil) + }} +% \end{macrocode} +% +% The basic setup. The output is modified at a very low level to set +% the |\bodydir| to the |\pagedir|. Sadly, we have to deal with boxes +% in math with basic, so the |\bbl@mathboxdir| hack is activated every +% math with the package option bidi=. +% +% \begin{macrocode} +\ifnum\bbl@bidimode>100 \ifnum\bbl@bidimode<200 + \let\bbl@beforeforeign\leavevmode + \AtEndOfPackage{\EnableBabelHook{babel-bidi}} + \RequirePackage{luatexbase} + \bbl@activate@preotf + \directlua{ + require('babel-data-bidi.lua') + \ifcase\expandafter\@gobbletwo\the\bbl@bidimode\or + require('babel-bidi-basic.lua') + \or + require('babel-bidi-basic-r.lua') + \fi} + % TODO - to locale_props, not as separate attribute + \newattribute\bbl@attr@dir + \directlua{ Babel.attr_dir = luatexbase.registernumber'bbl@attr@dir' } + % TODO. I don't like it, hackish: + \bbl@exp{\output{\bodydir\pagedir\the\output}} + \AtEndOfPackage{\EnableBabelHook{babel-bidi}} +\fi\fi +\chardef\bbl@thetextdir\z@ +\chardef\bbl@thepardir\z@ +\def\bbl@getluadir#1{% + \directlua{ + if tex.#1dir == 'TLT' then + tex.sprint('0') + elseif tex.#1dir == 'TRT' then + tex.sprint('1') + end}} +\def\bbl@setluadir#1#2#3{% 1=text/par.. 2=\textdir.. 3=0 lr/1 rl + \ifcase#3\relax + \ifcase\bbl@getluadir{#1}\relax\else + #2 TLT\relax + \fi + \else + \ifcase\bbl@getluadir{#1}\relax + #2 TRT\relax + \fi + \fi} +\def\bbl@textdir#1{% + \bbl@setluadir{text}\textdir{#1}% + \chardef\bbl@thetextdir#1\relax + \setattribute\bbl@attr@dir{\numexpr\bbl@thepardir*3+#1}} +\def\bbl@pardir#1{% + \bbl@setluadir{par}\pardir{#1}% + \chardef\bbl@thepardir#1\relax} +\def\bbl@bodydir{\bbl@setluadir{body}\bodydir} +\def\bbl@pagedir{\bbl@setluadir{page}\pagedir} +\def\bbl@dirparastext{\pardir\the\textdir\relax}% %%%% +% +\ifnum\bbl@bidimode>\z@ + \def\bbl@mathboxdir{% + \ifcase\bbl@thetextdir\relax + \everyhbox{\bbl@mathboxdir@aux L}% + \else + \everyhbox{\bbl@mathboxdir@aux R}% + \fi} + \def\bbl@mathboxdir@aux#1{% + \@ifnextchar\egroup{}{\textdir T#1T\relax}} + \frozen@everymath\expandafter{% + \expandafter\bbl@mathboxdir\the\frozen@everymath} + \frozen@everydisplay\expandafter{% + \expandafter\bbl@mathboxdir\the\frozen@everydisplay} +\fi +% \end{macrocode} +% % \subsection{Layout} % % Unlike \xetex{}, \luatex{} requires only minimal changes for @@ -15135,7 +14701,508 @@ end % % \end{macrocode} % -% \subsection{Auto bidi with \texttt{basic} and \texttt{basic-r}} +% \subsection{Lua: transforms} +% +% After declaring the table containing the patterns with their +% replacements, we define some auxiliary functions: |str_to_nodes| +% converts the string returned by a function to a node list, taking the +% node at |base| as a model (font, language, etc.); |fetch_word| +% fetches a series of glyphs and discretionaries, which |pattern| is +% matched against (if there is a match, it is called again before +% trying other patterns, and this is very likely the main bottleneck). +% +% |post_hyphenate_replace| is the callback applied after +% |lang.hyphenate|. This means the automatic hyphenation points are +% known. As empty captures return a byte position (as explained in the +% \luatex{} manual), we must convert it to a utf8 position. With +% |first|, the last byte can be the leading byte in a utf8 sequence, so +% we just remove it and add 1 to the resulting length. With |last| we +% must take into account the capture position points to the next +% character. Here |word_head| points to the starting node of the text +% to be matched. +% +% \begin{macrocode} +%<*transforms> +Babel.linebreaking.replacements = {} +Babel.linebreaking.replacements[0] = {} -- pre +Babel.linebreaking.replacements[1] = {} -- post + +-- Discretionaries contain strings as nodes +function Babel.str_to_nodes(fn, matches, base) + local n, head, last + if fn == nil then return nil end + for s in string.utfvalues(fn(matches)) do + if base.id == 7 then + base = base.replace + end + n = node.copy(base) + n.char = s + if not head then + head = n + else + last.next = n + end + last = n + end + return head +end + +Babel.fetch_subtext = {} + +Babel.ignore_pre_char = function(node) + return (node.lang == Babel.nohyphenation) +end + +-- Merging both functions doesn't seen feasible, because there are too +-- many differences. +Babel.fetch_subtext[0] = function(head) + local word_string = '' + local word_nodes = {} + local lang + local item = head + local inmath = false + + while item do + + if item.id == 11 then + inmath = (item.subtype == 0) + end + + if inmath then + -- pass + + elseif item.id == 29 then + local locale = node.get_attribute(item, Babel.attr_locale) + + if lang == locale or lang == nil then + lang = lang or locale + if Babel.ignore_pre_char(item) then + word_string = word_string .. Babel.us_char + else + word_string = word_string .. unicode.utf8.char(item.char) + end + word_nodes[#word_nodes+1] = item + else + break + end + + elseif item.id == 12 and item.subtype == 13 then + word_string = word_string .. ' ' + word_nodes[#word_nodes+1] = item + + -- Ignore leading unrecognized nodes, too. + elseif word_string ~= '' then + word_string = word_string .. Babel.us_char + word_nodes[#word_nodes+1] = item -- Will be ignored + end + + item = item.next + end + + -- Here and above we remove some trailing chars but not the + -- corresponding nodes. But they aren't accessed. + if word_string:sub(-1) == ' ' then + word_string = word_string:sub(1,-2) + end + word_string = unicode.utf8.gsub(word_string, Babel.us_char .. '+$', '') + return word_string, word_nodes, item, lang +end + +Babel.fetch_subtext[1] = function(head) + local word_string = '' + local word_nodes = {} + local lang + local item = head + local inmath = false + + while item do + + if item.id == 11 then + inmath = (item.subtype == 0) + end + + if inmath then + -- pass + + elseif item.id == 29 then + if item.lang == lang or lang == nil then + if (item.char ~= 124) and (item.char ~= 61) then -- not =, not | + lang = lang or item.lang + word_string = word_string .. unicode.utf8.char(item.char) + word_nodes[#word_nodes+1] = item + end + else + break + end + + elseif item.id == 7 and item.subtype == 2 then + word_string = word_string .. '=' + word_nodes[#word_nodes+1] = item + + elseif item.id == 7 and item.subtype == 3 then + word_string = word_string .. '|' + word_nodes[#word_nodes+1] = item + + -- (1) Go to next word if nothing was found, and (2) implicitly + -- remove leading USs. + elseif word_string == '' then + -- pass + + -- This is the responsible for splitting by words. + elseif (item.id == 12 and item.subtype == 13) then + break + + else + word_string = word_string .. Babel.us_char + word_nodes[#word_nodes+1] = item -- Will be ignored + end + + item = item.next + end + + word_string = unicode.utf8.gsub(word_string, Babel.us_char .. '+$', '') + return word_string, word_nodes, item, lang +end + +function Babel.pre_hyphenate_replace(head) + Babel.hyphenate_replace(head, 0) +end + +function Babel.post_hyphenate_replace(head) + Babel.hyphenate_replace(head, 1) +end + +Babel.us_char = string.char(31) + +function Babel.hyphenate_replace(head, mode) + local u = unicode.utf8 + local lbkr = Babel.linebreaking.replacements[mode] + + local word_head = head + + while true do -- for each subtext block + + local w, w_nodes, nw, lang = Babel.fetch_subtext[mode](word_head) + + if Babel.debug then + print() + print((mode == 0) and '@@@@<' or '@@@@>', w) + end + + if nw == nil and w == '' then break end + + if not lang then goto next end + if not lbkr[lang] then goto next end + + -- For each saved (pre|post)hyphenation. TODO. Reconsider how + -- loops are nested. + for k=1, #lbkr[lang] do + local p = lbkr[lang][k].pattern + local r = lbkr[lang][k].replace + + if Babel.debug then + print('*****', p, mode) + end + + -- This variable is set in some cases below to the first *byte* + -- after the match, either as found by u.match (faster) or the + -- computed position based on sc if w has changed. + local last_match = 0 + local step = 0 + + -- For every match. + while true do + if Babel.debug then + print('=====') + end + local new -- used when inserting and removing nodes + + local matches = { u.match(w, p, last_match) } + + if #matches < 2 then break end + + -- Get and remove empty captures (with ()'s, which return a + -- number with the position), and keep actual captures + -- (from (...)), if any, in matches. + local first = table.remove(matches, 1) + local last = table.remove(matches, #matches) + -- Non re-fetched substrings may contain \31, which separates + -- subsubstrings. + if string.find(w:sub(first, last-1), Babel.us_char) then break end + + local save_last = last -- with A()BC()D, points to D + + -- Fix offsets, from bytes to unicode. Explained above. + first = u.len(w:sub(1, first-1)) + 1 + last = u.len(w:sub(1, last-1)) -- now last points to C + + -- This loop stores in n small table the nodes + -- corresponding to the pattern. Used by 'data' to provide a + -- predictable behavior with 'insert' (now w_nodes is modified on + -- the fly), and also access to 'remove'd nodes. + local sc = first-1 -- Used below, too + local data_nodes = {} + + for q = 1, last-first+1 do + data_nodes[q] = w_nodes[sc+q] + end + + -- This loop traverses the matched substring and takes the + -- corresponding action stored in the replacement list. + -- sc = the position in substr nodes / string + -- rc = the replacement table index + local rc = 0 + + while rc < last-first+1 do -- for each replacement + if Babel.debug then + print('.....', rc + 1) + end + sc = sc + 1 + rc = rc + 1 + + if Babel.debug then + Babel.debug_hyph(w, w_nodes, sc, first, last, last_match) + local ss = '' + for itt in node.traverse(head) do + if itt.id == 29 then + ss = ss .. unicode.utf8.char(itt.char) + else + ss = ss .. '{' .. itt.id .. '}' + end + end + print('*****************', ss) + + end + + local crep = r[rc] + local item = w_nodes[sc] + local item_base = item + local placeholder = Babel.us_char + local d + + if crep and crep.data then + item_base = data_nodes[crep.data] + end + + if crep then + step = crep.step or 0 + end + + if crep and next(crep) == nil then -- = {} + last_match = save_last -- Optimization + goto next + + elseif crep == nil or crep.remove then + node.remove(head, item) + table.remove(w_nodes, sc) + w = u.sub(w, 1, sc-1) .. u.sub(w, sc+1) + sc = sc - 1 -- Nothing has been inserted. + last_match = utf8.offset(w, sc+1+step) + goto next + + elseif crep and crep.kashida then -- Experimental + node.set_attribute(item, + Babel.attr_kashida, + crep.kashida) + last_match = utf8.offset(w, sc+1+step) + goto next + + elseif crep and crep.string then + local str = crep.string(matches) + if str == '' then -- Gather with nil + node.remove(head, item) + table.remove(w_nodes, sc) + w = u.sub(w, 1, sc-1) .. u.sub(w, sc+1) + sc = sc - 1 -- Nothing has been inserted. + else + local loop_first = true + for s in string.utfvalues(str) do + d = node.copy(item_base) + d.char = s + if loop_first then + loop_first = false + head, new = node.insert_before(head, item, d) + if sc == 1 then + word_head = head + end + w_nodes[sc] = d + w = u.sub(w, 1, sc-1) .. u.char(s) .. u.sub(w, sc+1) + else + sc = sc + 1 + head, new = node.insert_before(head, item, d) + table.insert(w_nodes, sc, new) + w = u.sub(w, 1, sc-1) .. u.char(s) .. u.sub(w, sc) + end + if Babel.debug then + print('.....', 'str') + Babel.debug_hyph(w, w_nodes, sc, first, last, last_match) + end + end -- for + node.remove(head, item) + end -- if '' + last_match = utf8.offset(w, sc+1+step) + goto next + + elseif mode == 1 and crep and (crep.pre or crep.no or crep.post) then + d = node.new(7, 0) -- (disc, discretionary) + d.pre = Babel.str_to_nodes(crep.pre, matches, item_base) + d.post = Babel.str_to_nodes(crep.post, matches, item_base) + d.replace = Babel.str_to_nodes(crep.no, matches, item_base) + d.attr = item_base.attr + if crep.pre == nil then -- TeXbook p96 + d.penalty = crep.penalty or tex.hyphenpenalty + else + d.penalty = crep.penalty or tex.exhyphenpenalty + end + placeholder = '|' + head, new = node.insert_before(head, item, d) + + elseif mode == 0 and crep and (crep.pre or crep.no or crep.post) then + -- ERROR + + elseif crep and crep.penalty then + d = node.new(14, 0) -- (penalty, userpenalty) + d.attr = item_base.attr + d.penalty = crep.penalty + head, new = node.insert_before(head, item, d) + + elseif crep and crep.space then + -- 655360 = 10 pt = 10 * 65536 sp + d = node.new(12, 13) -- (glue, spaceskip) + local quad = font.getfont(item_base.font).size or 655360 + node.setglue(d, crep.space[1] * quad, + crep.space[2] * quad, + crep.space[3] * quad) + if mode == 0 then + placeholder = ' ' + end + head, new = node.insert_before(head, item, d) + + elseif crep and crep.spacefactor then + d = node.new(12, 13) -- (glue, spaceskip) + local base_font = font.getfont(item_base.font) + node.setglue(d, + crep.spacefactor[1] * base_font.parameters['space'], + crep.spacefactor[2] * base_font.parameters['space_stretch'], + crep.spacefactor[3] * base_font.parameters['space_shrink']) + if mode == 0 then + placeholder = ' ' + end + head, new = node.insert_before(head, item, d) + + elseif mode == 0 and crep and crep.space then + -- ERROR + + end -- ie replacement cases + + -- Shared by disc, space and penalty. + if sc == 1 then + word_head = head + end + if crep.insert then + w = u.sub(w, 1, sc-1) .. placeholder .. u.sub(w, sc) + table.insert(w_nodes, sc, new) + last = last + 1 + else + w_nodes[sc] = d + node.remove(head, item) + w = u.sub(w, 1, sc-1) .. placeholder .. u.sub(w, sc+1) + end + + last_match = utf8.offset(w, sc+1+step) + + ::next:: + + end -- for each replacement + + if Babel.debug then + print('.....', '/') + Babel.debug_hyph(w, w_nodes, sc, first, last, last_match) + end + + end -- for match + + end -- for patterns + + ::next:: + word_head = nw + end -- for substring + return head +end + +-- This table stores capture maps, numbered consecutively +Babel.capture_maps = {} + +-- The following functions belong to the next macro +function Babel.capture_func(key, cap) + local ret = "[[" .. cap:gsub('{([0-9])}', "]]..m[%1]..[[") .. "]]" + local cnt + local u = unicode.utf8 + ret, cnt = ret:gsub('{([0-9])|([^|]+)|(.-)}', Babel.capture_func_map) + if cnt == 0 then + ret = u.gsub(ret, '{(%x%x%x%x+)}', + function (n) + return u.char(tonumber(n, 16)) + end) + end + ret = ret:gsub("%[%[%]%]%.%.", '') + ret = ret:gsub("%.%.%[%[%]%]", '') + return key .. [[=function(m) return ]] .. ret .. [[ end]] +end + +function Babel.capt_map(from, mapno) + return Babel.capture_maps[mapno][from] or from +end + +-- Handle the {n|abc|ABC} syntax in captures +function Babel.capture_func_map(capno, from, to) + local u = unicode.utf8 + from = u.gsub(from, '{(%x%x%x%x+)}', + function (n) + return u.char(tonumber(n, 16)) + end) + to = u.gsub(to, '{(%x%x%x%x+)}', + function (n) + return u.char(tonumber(n, 16)) + end) + local froms = {} + for s in string.utfcharacters(from) do + table.insert(froms, s) + end + local cnt = 1 + table.insert(Babel.capture_maps, {}) + local mlen = table.getn(Babel.capture_maps) + for s in string.utfcharacters(to) do + Babel.capture_maps[mlen][froms[cnt]] = s + cnt = cnt + 1 + end + return "]]..Babel.capt_map(m[" .. capno .. "]," .. + (mlen) .. ").." .. "[[" +end + +-- Create/Extend reversed sorted list of kashida weights: +function Babel.capture_kashida(key, wt) + wt = tonumber(wt) + if Babel.kashida_wts then + for p, q in ipairs(Babel.kashida_wts) do + if wt == q then + break + elseif wt > q then + table.insert(Babel.kashida_wts, p, wt) + break + elseif table.getn(Babel.kashida_wts) == p then + table.insert(Babel.kashida_wts, wt) + end + end + else + Babel.kashida_wts = { wt } + end + return 'kashida = ' .. wt +end +% +% \end{macrocode} +% +% \subsection{Lua: Auto bidi with \texttt{basic} and \texttt{basic-r}} % % The file \textsf{babel-data-bidi.lua} currently only contains data. It is % a large and boring file and it is not shown here (see the generated file), @@ -21371,7 +21438,7 @@ function Babel.bidi(head, ispar) if new_dir then attr_dir = 0 for at in node.traverse(item.attr) do - if at.number == luatexbase.registernumber'bbl@attr@dir' then + if at.number == Babel.attr_dir then attr_dir = at.value % 3 end end @@ -21625,7 +21692,7 @@ function Babel.bidi(head, ispar, hdir) local has_en = false local first_et = nil - local ATDIR = luatexbase.registernumber'bbl@attr@dir' + local ATDIR = Babel.attr_dir local save_outer local temp = node.get_attribute(head, ATDIR) @@ -22645,7 +22712,7 @@ Babel.cjk_breaks = { \fi % \end{macrocode} % -% To prevent wasting two counters in \LaTeX$\:$2.09 (because +% To prevent wasting two counters in \LaTeX\ (because % counters with the same name are allocated later by it) we reset % the counter that holds the next free counter (|\count10|). % diff --git a/macros/latex/required/babel/base/babel.ins b/macros/latex/required/babel/base/babel.ins index feea6e0da7..de98307cae 100644 --- a/macros/latex/required/babel/base/babel.ins +++ b/macros/latex/required/babel/base/babel.ins @@ -26,7 +26,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. %% -\def\filedate{2021/06/28} +\def\filedate{2021/07/19} \def\batchfile{babel.ins} \input docstrip.tex @@ -221,6 +221,7 @@ \def\MetaPrefix{--} \usepreamble\luapreamble \nopostamble +\generate{\file{babel-transforms.lua}{\from{babel.dtx}{transforms}}} \generate{\file{babel-data-bidi.lua}{\from{babel.dtx}{bididata}}} \generate{\file{babel-data-cjk.lua}{\from{babel.dtx}{cjkdata}}} \generate{\file{babel-bidi-basic-r.lua}{\from{babel.dtx}{basic-r}}} diff --git a/macros/latex/required/babel/base/babel.pdf b/macros/latex/required/babel/base/babel.pdf index 8e3aefc944..4ae4792afd 100644 Binary files a/macros/latex/required/babel/base/babel.pdf and b/macros/latex/required/babel/base/babel.pdf differ diff --git a/macros/latex/required/babel/base/bbcompat.dtx b/macros/latex/required/babel/base/bbcompat.dtx index 7500615da1..ef63539302 100644 --- a/macros/latex/required/babel/base/bbcompat.dtx +++ b/macros/latex/required/babel/base/bbcompat.dtx @@ -30,7 +30,7 @@ % % \iffalse %<*dtx> -\ProvidesFile{bbcompat.dtx}[2021/06/28 v3.61] +\ProvidesFile{bbcompat.dtx}[2021/07/19 v3.62] % % %% File 'bbcompat.dtx' -- cgit v1.2.3