diff options
author | Norbert Preining <norbert@preining.info> | 2022-11-03 03:05:14 +0000 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2022-11-03 03:05:14 +0000 |
commit | c3c9975778ff2848e51f6debf733abe8ca930bd3 (patch) | |
tree | 034fcccacf40343842462b161df1764d3a7a41af /macros/latex-dev/base | |
parent | 2281af8ba8fd52341e706f3979712f3280fcfdad (diff) |
CTAN sync 202211030305
Diffstat (limited to 'macros/latex-dev/base')
100 files changed, 536 insertions, 118 deletions
diff --git a/macros/latex-dev/base/README.md b/macros/latex-dev/base/README.md index f3b01200a8..8fb5e8e894 100644 --- a/macros/latex-dev/base/README.md +++ b/macros/latex-dev/base/README.md @@ -1,7 +1,7 @@ The LaTeX kernel ================ -Release 2022-11-01 pre-release 2 +Release 2023-05-01 pre-release 0 Overview -------- diff --git a/macros/latex-dev/base/alltt.pdf b/macros/latex-dev/base/alltt.pdf Binary files differindex 637fe1ad6b..35b709a563 100644 --- a/macros/latex-dev/base/alltt.pdf +++ b/macros/latex-dev/base/alltt.pdf diff --git a/macros/latex-dev/base/cfgguide.pdf b/macros/latex-dev/base/cfgguide.pdf Binary files differindex e2b3128fa4..3a048a4bfc 100644 --- a/macros/latex-dev/base/cfgguide.pdf +++ b/macros/latex-dev/base/cfgguide.pdf diff --git a/macros/latex-dev/base/changes.txt b/macros/latex-dev/base/changes.txt index 874426197d..0ae9b55c03 100644 --- a/macros/latex-dev/base/changes.txt +++ b/macros/latex-dev/base/changes.txt @@ -6,6 +6,46 @@ completeness or accuracy and it contains some references to files that are not part of the distribution. ================================================================================ +================================================================================ +All changes above are only part of the development branch for the next release. +================================================================================ + +######################### +# 2022-11-01 Release +######################### + +2022-10-26 Joseph Wright <Joseph.Wright@latex-project.org> + + * ltfinal.dtx: + Introduce optional argument for case-changing commands + Make case changing commands language-aware + Auto-detect babel locale for case changing + +2022-10-22 David Carlisle <David.Carlisle@latex-project.org> + + * ltclass.dtx, ltdefns.dtx: Further \protect guards for gh/932 + + * utf8ienc.dtx: Correct the description of UTF-8 octets. + +2022-10-22 Joseph Wright <Joseph.Wright@latex-project.org> + + * ltkeys.dtx: Correct handling of unknown option list + +2022-10-20 Joseph Wright <Joseph.Wright@latex-project.org> + + * ltclass.dtx, ltkeys.dtx: + Correct an argument for a message + Define key option handler in ltkeys + +2022-10-10 David Carlisle <David.Carlisle@latex-project.org> + + * ltclass.dtx: use \protected@edef rather than \edef when expanding option lists + +2022-10-03 Marcel Krüger <marcel.krueger@latex-project.org> + + * ltluatex.dtx: + Add ordering rules for callback handlers + 2022-09-20 Frank Mittelbach <Frank.Mittelbach@latex-project.org> * ltfssdcl.dtx (section{Interface Commands}): @@ -92,10 +132,6 @@ are not part of the distribution. * cmfonts.fdd Add font definitions for slanted small caps (gh/782) -================================================================================ -All changes above are only part of the development branch for the next release. -================================================================================ - ######################### # 2022-06-01 PL5 Release ######################### diff --git a/macros/latex-dev/base/classes.pdf b/macros/latex-dev/base/classes.pdf Binary files differindex 7a69e40f0d..0f3e7a5cce 100644 --- a/macros/latex-dev/base/classes.pdf +++ b/macros/latex-dev/base/classes.pdf diff --git a/macros/latex-dev/base/clsguide.pdf b/macros/latex-dev/base/clsguide.pdf Binary files differindex 0385ff7c86..f164e9b482 100644 --- a/macros/latex-dev/base/clsguide.pdf +++ b/macros/latex-dev/base/clsguide.pdf diff --git a/macros/latex-dev/base/cmfonts.pdf b/macros/latex-dev/base/cmfonts.pdf Binary files differindex 928b09bd48..9293df614a 100644 --- a/macros/latex-dev/base/cmfonts.pdf +++ b/macros/latex-dev/base/cmfonts.pdf diff --git a/macros/latex-dev/base/cyrguide.pdf b/macros/latex-dev/base/cyrguide.pdf Binary files differindex 7157148a52..ad43e0b7f1 100644 --- a/macros/latex-dev/base/cyrguide.pdf +++ b/macros/latex-dev/base/cyrguide.pdf diff --git a/macros/latex-dev/base/doc-code.pdf b/macros/latex-dev/base/doc-code.pdf Binary files differindex 7fd9fd58aa..5da305cde9 100644 --- a/macros/latex-dev/base/doc-code.pdf +++ b/macros/latex-dev/base/doc-code.pdf diff --git a/macros/latex-dev/base/doc.pdf b/macros/latex-dev/base/doc.pdf Binary files differindex d6977bd556..ba56cfe561 100644 --- a/macros/latex-dev/base/doc.pdf +++ b/macros/latex-dev/base/doc.pdf diff --git a/macros/latex-dev/base/docstrip.pdf b/macros/latex-dev/base/docstrip.pdf Binary files differindex 9ec37ba5f9..f3ef8b3fc3 100644 --- a/macros/latex-dev/base/docstrip.pdf +++ b/macros/latex-dev/base/docstrip.pdf diff --git a/macros/latex-dev/base/encguide.pdf b/macros/latex-dev/base/encguide.pdf Binary files differindex 98832bbcfc..255563550b 100644 --- a/macros/latex-dev/base/encguide.pdf +++ b/macros/latex-dev/base/encguide.pdf diff --git a/macros/latex-dev/base/exscale.pdf b/macros/latex-dev/base/exscale.pdf Binary files differindex f4ce14e8d9..38a778e1b6 100644 --- a/macros/latex-dev/base/exscale.pdf +++ b/macros/latex-dev/base/exscale.pdf diff --git a/macros/latex-dev/base/fix-cm.pdf b/macros/latex-dev/base/fix-cm.pdf Binary files differindex 0337544f01..90892c6caa 100644 --- a/macros/latex-dev/base/fix-cm.pdf +++ b/macros/latex-dev/base/fix-cm.pdf diff --git a/macros/latex-dev/base/fntguide.pdf b/macros/latex-dev/base/fntguide.pdf Binary files differindex 784debd628..d0644e8279 100644 --- a/macros/latex-dev/base/fntguide.pdf +++ b/macros/latex-dev/base/fntguide.pdf diff --git a/macros/latex-dev/base/graphpap.pdf b/macros/latex-dev/base/graphpap.pdf Binary files differindex d737597a7f..bc70a0cf14 100644 --- a/macros/latex-dev/base/graphpap.pdf +++ b/macros/latex-dev/base/graphpap.pdf diff --git a/macros/latex-dev/base/ifthen.pdf b/macros/latex-dev/base/ifthen.pdf Binary files differindex d01f901ebd..35f52dca6e 100644 --- a/macros/latex-dev/base/ifthen.pdf +++ b/macros/latex-dev/base/ifthen.pdf diff --git a/macros/latex-dev/base/inputenc.pdf b/macros/latex-dev/base/inputenc.pdf Binary files differindex 2810415e32..90f5aac0cb 100644 --- a/macros/latex-dev/base/inputenc.pdf +++ b/macros/latex-dev/base/inputenc.pdf diff --git a/macros/latex-dev/base/lamport-manual.pdf b/macros/latex-dev/base/lamport-manual.pdf Binary files differindex 9d43e51ca6..f18b52c99e 100644 --- a/macros/latex-dev/base/lamport-manual.pdf +++ b/macros/latex-dev/base/lamport-manual.pdf diff --git a/macros/latex-dev/base/latexrelease.pdf b/macros/latex-dev/base/latexrelease.pdf Binary files differindex 48609a519f..35b2875861 100644 --- a/macros/latex-dev/base/latexrelease.pdf +++ b/macros/latex-dev/base/latexrelease.pdf diff --git a/macros/latex-dev/base/latexsym.pdf b/macros/latex-dev/base/latexsym.pdf Binary files differindex d224c50148..0abf36f12f 100644 --- a/macros/latex-dev/base/latexsym.pdf +++ b/macros/latex-dev/base/latexsym.pdf diff --git a/macros/latex-dev/base/lb2.pdf b/macros/latex-dev/base/lb2.pdf Binary files differindex fb1cdf8ab3..394252b206 100644 --- a/macros/latex-dev/base/lb2.pdf +++ b/macros/latex-dev/base/lb2.pdf diff --git a/macros/latex-dev/base/letter.pdf b/macros/latex-dev/base/letter.pdf Binary files differindex 91f4b7da0b..08b5b52d86 100644 --- a/macros/latex-dev/base/letter.pdf +++ b/macros/latex-dev/base/letter.pdf diff --git a/macros/latex-dev/base/lgc2.pdf b/macros/latex-dev/base/lgc2.pdf Binary files differindex 060cbdec9f..bc13c55acb 100644 --- a/macros/latex-dev/base/lgc2.pdf +++ b/macros/latex-dev/base/lgc2.pdf diff --git a/macros/latex-dev/base/lppl.pdf b/macros/latex-dev/base/lppl.pdf Binary files differindex 7e069bfc09..1240d11e78 100644 --- a/macros/latex-dev/base/lppl.pdf +++ b/macros/latex-dev/base/lppl.pdf diff --git a/macros/latex-dev/base/ltclass.dtx b/macros/latex-dev/base/ltclass.dtx index 35c4251fce..a525b6f573 100644 --- a/macros/latex-dev/base/ltclass.dtx +++ b/macros/latex-dev/base/ltclass.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltclass.dtx} - [2022/06/20 v1.5c LaTeX Kernel (Class & Package Interface)] + [2022/10/22 v1.5e LaTeX Kernel (Class & Package Interface)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltclass.dtx} @@ -1302,7 +1302,10 @@ {\@expl@@@filehook@resolve@file@subst@@w #3.#1\@nil}% \reserved@a\reserved@b \@expl@@@filehook@clear@replacement@flag@@ - \expandafter\xdef\csname opt@\reserved@a\endcsname{% +% \end{macrocode} +% \changes{v1.5d}{2022/10/10}{Use \cs{protected@xdef}.} +% \begin{macrocode} + \expandafter\protected@xdef\csname opt@\reserved@a\endcsname{% \@ifundefined{opt@\reserved@a}\@empty {\csname opt@\reserved@a\endcsname,}% \zap@space#2 \@empty}% @@ -1476,10 +1479,12 @@ % {Star form added.} % \changes{v0.2c}{1993/11/17} % {restoring \cs{@fileswith@pti@ns} added.} +% \changes{v1.5d}{2022/10/10} +% {Use \cs{protected@edef}.} % \begin{macrocode} \def\ProcessOptions{% \let\ds@\@empty - \edef\@curroptions{\@ptionlist{\@currname.\@currext}}% + \protected@edef\@curroptions{\@ptionlist{\@currname.\@currext}}% \@ifstar\@xprocess@ptions\@process@ptions} \@onlypreamble\ProcessOptions % \end{macrocode} @@ -1505,6 +1510,7 @@ % \changes{v0.2y}{1994/02/07} % {Add extra ,s so `two' is not matched with `twocolumn'} % \changes{v1.3z}{2021/03/05}{modify so braces to not give errors (gh/513)} +% \changes{v1.5e}{2022/10/22}{Use \cs{detokenize}} % \begin{macrocode} %</2ekernel> %<latexrelease>\IncludeInRelease{2021/06/01}% @@ -1515,7 +1521,7 @@ \ifx\@classoptionslist\relax\else \@for\CurrentOption:=\@classoptionslist\do{% \ifx\CurrentOption\@empty\else - \@ifundefined{ds@\CurrentOption}{}{% + \@ifundefined{ds@\detokenize\expandafter{\CurrentOption}}{}{% \@use@ption \expandafter\let\csname ds@\CurrentOption\endcsname\@empty }% @@ -1552,6 +1558,7 @@ % \end{macrocode} % % The common part of |\ProcessOptions| and |\ProcessOptions*|. +% \changes{v1.5e}{2022/10/22}{Use \cs{detokenize}} % \begin{macrocode} %</2ekernel> %<*2ekernel|latexrelease> @@ -1559,7 +1566,7 @@ %<latexrelease> {\@process@pti@ns}{Unused options issue}% \def\@process@pti@ns{% \@for\CurrentOption:=\@curroptions\do{% - \@ifundefined{ds@\CurrentOption}% + \@ifundefined{ds@\detokenize\expandafter{\CurrentOption}}% {\@use@ption \default@ds}% % \end{macrocode} @@ -1627,6 +1634,7 @@ % \changes{v1.0e}{1994/05/17} % {Execute option after removing from list, not before} % \changes{v1.3x}{2021/02/18}{filter out =value from unused option list (gh/85)} +% \changes{v1.5e}{2022/10/22}{Use \cs{detokenize}} % \begin{macrocode} %</2ekernel> %<latexrelease>\IncludeInRelease{2021/06/01}% @@ -1636,7 +1644,7 @@ \@expandtwoargs\@removeelement {\expandafter\@remove@eq@value\CurrentOption=\@nil}% \@unusedoptionlist\@unusedoptionlist - \csname ds@\CurrentOption\endcsname} + \csname ds@\detokenize\expandafter{\CurrentOption}\endcsname} %</2ekernel|latexrelease> %<latexrelease>\EndIncludeInRelease %<latexrelease>\IncludeInRelease{0000/00/00}% @@ -1988,6 +1996,7 @@ % \changes{v2.1b}{2016/11/09} % {Improve \cs{ifx} tests PR/4497} % \changes{v1.3x}{2021/02/18}{save raw class option list (gh/85)} +% \changes{v1.5e}{2022/10/22}{Use \cs{protected@xdef}.} % \begin{macrocode} %</2ekernel> %<latexrelease>\IncludeInRelease{2020/10/01}% @@ -1996,7 +2005,7 @@ \def\@fileswith@pti@ns#1[#2]#3[#4]{% \ifx#1\@clsextension \ifx\@classoptionslist\relax - \xdef\@classoptionslist{\zap@space#2 \@empty}% + \protected@xdef\@classoptionslist{\zap@space#2 \@empty}% % \end{macrocode} % Save raw class list. % \begin{macrocode} @@ -2177,21 +2186,24 @@ % \end{macrocode} % \changes{v1.5b}{2022/03/18}{Switch to \cs{ProcessKeyOptions}} % \changes{v1.5c}{2022/06/20}{Pass raw options to \cs{ProcessKeyOptions}} +% \changes{v1.5e}{2022/10/20} +% {Define key option handler in \pkg{ltkeys}} % In the current preferred approach, a key family name will exist for % processing using \pkg{ltkeys}. In that case, we replace the previous % package options with the new ones, then call the key handler. % Otherwise, we use the more classical clash handler. % \begin{macrocode} {% - \@ifundefined{opt@fam@\@currname.\@currext} + \@ifundefined{opt@handler@\@currname.\@currext} {\@onefilewithoptions@clashchk{#2}} {% - \expandafter\edef\csname opt@\@currname.\@currext\endcsname +% \end{macrocode} +% \changes{v1.5d}{2022/10/10}{Use \cs{protected@edef}.} +% \begin{macrocode} + \expandafter\protected@edef\csname opt@\@currname.\@currext\endcsname {\zap@space#2 \@empty}% \@namedef{@raw@opt@\@currname.\@currext}{#2}% - \expandafter\expandafter\expandafter\ProcessKeyOptions - \expandafter\expandafter\expandafter - [\csname opt@fam@\@currname.\@currext\endcsname]% + \@nameuse{opt@handler@\@currname.\@currext}% }% }% {\makeatletter @@ -2693,10 +2705,11 @@ % \changes{v0.2v}{1994/01/29} % {Macro added.} % \changes{v1.0t}{1995/11/14}{Allow empty option} +% \changes{v1.5d}{2022/10/10}{Use \cs{protected@edef}.} % \begin{macrocode} \def\@@unprocessedoptions{% \ifx\@currext\@pkgextension - \edef\@curroptions{\@ptionlist{\@currname.\@currext}}% + \protected@edef\@curroptions{\@ptionlist{\@currname.\@currext}}% \@for\CurrentOption:=\@curroptions\do{% \ifx\CurrentOption\@empty\else\@unknownoptionerror\fi}% \fi} diff --git a/macros/latex-dev/base/ltcmdhooks-code.pdf b/macros/latex-dev/base/ltcmdhooks-code.pdf Binary files differindex a01a26c272..654c4f6a2d 100644 --- a/macros/latex-dev/base/ltcmdhooks-code.pdf +++ b/macros/latex-dev/base/ltcmdhooks-code.pdf diff --git a/macros/latex-dev/base/ltcmdhooks-doc.pdf b/macros/latex-dev/base/ltcmdhooks-doc.pdf Binary files differindex 87d2d0245b..a036d2e748 100644 --- a/macros/latex-dev/base/ltcmdhooks-doc.pdf +++ b/macros/latex-dev/base/ltcmdhooks-doc.pdf diff --git a/macros/latex-dev/base/ltdefns.dtx b/macros/latex-dev/base/ltdefns.dtx index 9e1fa43fad..bd820e7cf2 100644 --- a/macros/latex-dev/base/ltdefns.dtx +++ b/macros/latex-dev/base/ltdefns.dtx @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltdefns.dtx} - [2022/05/13 v1.5q LaTeX Kernel (definition commands)] + [2022/05/22 v1.5r LaTeX Kernel (definition commands)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltdefns.dtx} @@ -966,9 +966,22 @@ % % \begin{macro}{\@expandtwoargs} % A macro to totally expand two arguments to another macro +% \changes{v1.5r}{2022/10/22}{Use \cs{protected@edef}.} % \begin{macrocode} +%</2ekernel> +%<latexrelease>\IncludeInRelease{2022/11/01}% +%<latexrelease> {\@expandtwoargs}{protected edef}% +%<*2ekernel|latexrelease> \def\@expandtwoargs#1#2#3{% -\edef\reserved@a{\noexpand#1{#2}{#3}}\reserved@a} +\protected@edef\reserved@a{\noexpand#1{#2}{#3}}\reserved@a} +%</2ekernel|latexrelease> +%<latexrelease>\EndIncludeInRelease +%<latexrelease>\IncludeInRelease{00/00/00}% +%<latexrelease> {\@expandtwoargs}{protected edef}% +%<latexrelease>\def\@expandtwoargs#1#2#3{% +%<latexrelease>\edef\reserved@a{\noexpand#1{#2}{#3}}\reserved@a} +%<latexrelease>\EndIncludeInRelease +%<*2ekernel> % \end{macrocode} % \end{macro} % diff --git a/macros/latex-dev/base/ltfilehook-code.pdf b/macros/latex-dev/base/ltfilehook-code.pdf Binary files differindex 2956089442..24cc0545ec 100644 --- a/macros/latex-dev/base/ltfilehook-code.pdf +++ b/macros/latex-dev/base/ltfilehook-code.pdf diff --git a/macros/latex-dev/base/ltfilehook-doc.pdf b/macros/latex-dev/base/ltfilehook-doc.pdf Binary files differindex 804b62bd6b..65e8fade02 100644 --- a/macros/latex-dev/base/ltfilehook-doc.pdf +++ b/macros/latex-dev/base/ltfilehook-doc.pdf diff --git a/macros/latex-dev/base/ltfinal.dtx b/macros/latex-dev/base/ltfinal.dtx index 69ea7bc942..7f4bef3bcc 100644 --- a/macros/latex-dev/base/ltfinal.dtx +++ b/macros/latex-dev/base/ltfinal.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltfinal.dtx} - [2022/08/29 v2.2w LaTeX Kernel (Final Settings)] + [2022/10/26 v2.2x LaTeX Kernel (Final Settings)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltfinal.dtx} @@ -1085,6 +1085,9 @@ % \changes{v2.2t}{2022/04/21}{Support \cs{noexpand} in argument of \cs{@expl@text@uppercase@@n}} % \changes{v2.2v}{2022/06/30}{Just use \cs{text_lowercase:n} without \cs{protectd@edf} gh/881x}% % \changes{v2.2w}{2022/07/04}{Introduced \cs{CaseSwitch}, \cs{DeclareCaseChangeEquivalent} and \cs{MakeTitlecase} to support hooking into case changing gh/889}% +% \changes{v2.2x}{2022/10/26}{Introduce optional argument for case-changing commands} +% \changes{v2.2x}{2022/10/26}{Make case changing commands language-aware} +% \changes{v2.2x}{2022/10/26}{Auto-detect \pkg{babel} locale} % Wrappers around the L3 case changing functions. % |\protected| to make them mostly safe as replacements for |uppercase| % and |\lowercase|. @@ -1109,12 +1112,55 @@ % functions. % \begin{macrocode} \ExplSyntaxOn -\cs_new_protected_nopar:cpn{MakeUppercase~}{\text_uppercase:n} -\cs_set_nopar:Npx\MakeUppercase#1{\use:c{MakeUppercase~}{#1}} -\cs_new_protected_nopar:cpn{MakeLowercase~}{\text_lowercase:n} -\cs_set_nopar:Npx\MakeLowercase#1{\use:c{MakeLowercase~}{#1}} -\cs_new_protected_nopar:cpn{MakeTitlecase~}{\text_titlecase:n} -\cs_set_nopar:Npx\MakeTitlecase#1{\use:c{MakeTitlecase~}{#1}} +\keys_define:nn { __kernel } + { + lang .str_set:N = \reserved@a , + locale .str_set:N = \reserved@a + } +\cs_new_protected:Npn \@@text@case@aux #1#2#3 + { + \cs_set_nopar:Npn \reserved@a { } + \tl_if_blank:nTF {#2} + { \@@text@case@aux@ } + { \keys_set:nn { __kernel } {#2} } + \use:c { text_ #1 case:Vn } \reserved@a {#3} + } +\cs_new_protected:Npn \@@text@case@aux@ { } +\tl_gput_right:Nn \@kernel@after@begindocument + { + \@ifpackageloaded { babel } + { + \@ifpackagelater { babel } { 2020-01-15 } + { + \cs_gset_protected:Npn \@@text@case@aux@ + { + \str_set:Nx \reserved@a + { \localeinfo* { tag.bcp47 } } + } + } + { } + } + { } + } +\exp_args_generate:n { cnx } +% \end{macrocode} +% The odd use of \emph{three} spaces here is needed as \pkg{ltcmd} uses the +% name with one and two spaces to give a `friendly' error message for a runaway +% argument: that means we can't use it here. +% \begin{macrocode} +\cs_set_protected:Npn \reserved@a #1 + { + \cs_generate_variant:cn { text_ \str_lowercase:n {#1} case:nn } { V } + \cs_new_protected:cpx { Make#1case \c_space_tl \c_space_tl \c_space_tl } [##1] ##2 + { \exp_not:N \@@text@case@aux { \str_lowercase:n {#1} } {##1} {##2} } + \ExpandArgs { cnx } \NewExpandableDocumentCommand + { Make#1case } + { O{} +m } + { \exp_not:c { Make#1case \c_space_tl \c_space_tl \c_space_tl } [####1] {####2} } + } +\reserved@a { Upper } +\reserved@a { Lower } +\reserved@a { Title } % \end{macrocode} % % \changes{v2.2u}{2022/06/02}{Add \cs{NoCaseChange}} diff --git a/macros/latex-dev/base/lthooks-code.pdf b/macros/latex-dev/base/lthooks-code.pdf Binary files differindex 88c2bc642e..9a8066d7e5 100644 --- a/macros/latex-dev/base/lthooks-code.pdf +++ b/macros/latex-dev/base/lthooks-code.pdf diff --git a/macros/latex-dev/base/lthooks-doc.pdf b/macros/latex-dev/base/lthooks-doc.pdf Binary files differindex 151c4c286b..0fd3ab67ac 100644 --- a/macros/latex-dev/base/lthooks-doc.pdf +++ b/macros/latex-dev/base/lthooks-doc.pdf diff --git a/macros/latex-dev/base/ltkeys.dtx b/macros/latex-dev/base/ltkeys.dtx index 88f9315f8a..edf12f7cb2 100644 --- a/macros/latex-dev/base/ltkeys.dtx +++ b/macros/latex-dev/base/ltkeys.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltkeys.dtx} - [2022/08/21 v1.0k LaTeX Kernel (Keyval options)] + [2022/10/22 v1.0l LaTeX Kernel (Keyval options)] % \iffalse \documentclass{l3doc} \GetFileInfo{ltkeys.dtx} @@ -209,6 +209,8 @@ % \begin{macro}{\@@_options_aux:n} % \changes{v1.0b}{2022/01/15} % {Clear option list in end-of-package hook} +% \changes{v1.0l}{2022/10/20} +% {Define key option handler in \pkg{ltkeys}} % \changes{v1.0i}{2022/07/05}{Support \cs{CurrentOption}} % \begin{macro}{\@@_options_end:} % The main function calls functions to collect up the global and local @@ -225,7 +227,8 @@ { \@@_options_expand_module:Nn \@@_options_aux:n {#1} } \cs_new_protected:Npn \@@_options_aux:n #1 { - \cs_gset_nopar:cpn { opt@fam@\@currname.\@currext } {#1} + \cs_gset_protected:cpn { opt@handler@\@currname.\@currext } + { \ProcessKeyOptions [ #1 ] } \cs_set_protected:Npn \@@_option_end: { } \clist_clear:N \l_@@_options_clist \@@_options_global:n {#1} @@ -294,6 +297,7 @@ % \begin{macro}{\@@_options_class:nnn} % \changes{v1.0h}{2022/06/20}{New function} % \changes{v1.0i}{2022/07/05}{Correct naming of raw class options storage} +% \changes{v1.0l}{2022/10/22}{Correct handling of unused option list} % For classes, each option (stripped of any content after |=|) % is checked for existence as a key. If found, the option is added to % the combined list for processing. On the other hand, unused options @@ -323,11 +327,12 @@ \cs_new_protected:Npn \@@_options_class:nnn #1#2#3 { \keys_if_exist:nnTF {#3} {#1} - { \clist_put_right:Nn \l_@@_options_clist {#2} } { - \str_if_eq:eeF - { \exp_not:v { @raw@opt@ \@currname . \@currext } } - { \exp_not:V \@raw@classoptionslist } + \clist_put_right:Nn \l_@@_options_clist {#2} + \clist_remove_all:Nn \@unusedoptionlist {#1} + } + { + \clist_if_in:NnF \@unusedoptionlist {#1} { \clist_put_right:Nn \@unusedoptionlist {#1} } } } @@ -475,6 +480,7 @@ % % \begin{macro}{\@@_options_loaded:n} % \begin{macro}{\@@_options_loaded:nn} +% \changes{v1.0l}{2022/10/20}{Correct an argument for a message} % Indicates that the load-time options for a package have been processed: % once this has happened, make them unavailable either with a warning or % an error. @@ -496,11 +502,9 @@ \cs_new_protected:Npn \@@_options_loaded:nn #1#2 { \bool_if:NTF \l_@@_options_loading_bool - { - \msg_warning:nnxx { keys } { load-option-ignored } - { \use:c { opt@fam@\@currname.\@currext } } {#2} - } - { \msg_error:nnnn { keys } { load-only } {#1} {#2} } + { \msg_warning:nnnn { keys } { load-option-ignored } } + { \msg_error:nnnn { keys } { load-only } } + {#1} {#2} } % \end{macrocode} % \changes{v1.0j}{2022/07/23} diff --git a/macros/latex-dev/base/ltluatex.dtx b/macros/latex-dev/base/ltluatex.dtx index ab81c3620a..6c66a96be0 100644 --- a/macros/latex-dev/base/ltluatex.dtx +++ b/macros/latex-dev/base/ltluatex.dtx @@ -28,7 +28,7 @@ \ProvidesFile{ltluatex.dtx} %</driver> %<*tex> -[2022/08/13 v1.1y +[2022/10/03 v1.2a %</tex> %<plain> LuaTeX support for plain TeX (core) %<*tex> @@ -380,7 +380,7 @@ % % \noindent % \DescribeMacro{create_callback} -% |luatexbase.create_callback(|\meta{name},meta{type},\meta{default}|)| +% |luatexbase.create_callback(|\meta{name},\meta{type},\meta{default}|)| % Defines a user defined callback. The last argument is a default % function or |false|. % @@ -389,6 +389,34 @@ % |luatexbase.call_callback(|\meta{name},\ldots|)| % Calls a user defined callback with the supplied arguments. % +% \noindent +% \DescribeMacro{declare_callback_rule} +% |luatexbase.declare_callback_rule(|\meta{name}, \meta{first}, \meta{relation}, \meta{second}|)| +% Adds an ordering constraint between two callback functions for callback \meta{name}. +% +% The kind of constraint added depends on \meta{relation}: +% \begin{description} +% \item[before] The callback function with description \meta{first} will be +% executed before the function with description \meta{second}. +% \item[after] The callback function with description \meta{first} will be +% executed after the function with description \meta{second}. +% \item[incompatible-warning] When both a callback function with description \meta{first} +% and with description \meta{second} is registered, then a warning is printed when +% the callback is executed. +% \item[incompatible-error] When both a callback function with description \meta{first} +% and with description \meta{second} is registered, then an error is printed when +% the callback is executed. +% \item[unrelated] Any previously declared callback rule between \meta{first} +% and \meta{second} gets disabled. +% \end{description} +% Every call to \texttt{declare_callback_rule} with a specific callback \meta{name} +% and descriptions \meta{first} and \meta{second} overwrites all previous calls with +% same callback and descriptions. +% +% The callback functions do not have to be registered yet when the functions is called. +% Ony the constraints for which both callback descriptions refer to callbacks +% registered at the time the callback is called will have an effect. +% % \endgroup % % \MaybeStop{} @@ -1288,8 +1316,120 @@ luatexbase.new_luafunction = new_luafunction % actual function as |func| and the identifying description as |description|. % Only callbacks with a non-empty list of functions have an entry in this % list. -% \begin{macrocode} -local callbacklist = callbacklist or { } +% +% Actually there are two tables: |realcallbacklist| directly contains the entries +% as described above while |callbacklist| only directly contains the already sorted +% entries. Other entries can be queried through |callbacklist| too which triggers a +% resort. +% +% Additionally |callbackrules| describes the ordering constraints: It contains two +% element tables with the descriptions of the constrained callback implementations. +% It can additionally contain a |type| entry indicating the kind of rule. A missing +% value indicates a normal ordering contraint. +% +% \changes{v1.2a}{2022/10/03}{Add rules for callback ordering} +% \begin{macrocode} +local realcallbacklist = {} +local callbackrules = {} +local callbacklist = setmetatable({}, { + __index = function(t, name) + local list = realcallbacklist[name] + local rules = callbackrules[name] + if list and rules then + local meta = {} + for i, entry in ipairs(list) do + local t = {value = entry, count = 0, pos = i} + meta[entry.description], list[i] = t, t + end + local count = #list + local pos = count + for i, rule in ipairs(rules) do + local rule = rules[i] + local pre, post = meta[rule[1]], meta[rule[2]] + if pre and post then + if rule.type then + if not rule.hidden then + assert(rule.type == 'incompatible-warning' and luatexbase_warning + or rule.type == 'incompatible-error' and luatexbase_error)( + "Incompatible functions \"" .. rule[1] .. "\" and \"" .. rule[2] + .. "\" specified for callback \"" .. name .. "\".") + rule.hidden = true + end + else + local post_count = post.count + post.count = post_count+1 + if post_count == 0 then + local post_pos = post.pos + if post_pos ~= pos then + local new_post_pos = list[pos] + new_post_pos.pos = post_pos + list[post_pos] = new_post_pos + end + list[pos] = nil + pos = pos - 1 + end + pre[#pre+1] = post + end + end + end + for i=1, count do -- The actual sort begins + local current = list[i] + if current then + meta[current.value.description] = nil + for j, cur in ipairs(current) do + local count = cur.count + if count == 1 then + pos = pos + 1 + list[pos] = cur + else + cur.count = count - 1 + end + end + list[i] = current.value + else + -- Cycle occured. TODO: Show cycle for debugging + -- list[i] = ... + local remaining = {} + for name, entry in next, meta do + local value = entry.value + list[#list + 1] = entry.value + remaining[#remaining + 1] = name + end + table.sort(remaining) + local first_name = remaining[1] + for j, name in ipairs(remaining) do + local entry = meta[name] + list[i + j - 1] = entry.value + for _, post_entry in ipairs(entry) do + local post_name = post_entry.value.description + if not remaining[post_name] then + remaining[post_name] = name + end + end + end + local cycle = {first_name} + local index = 1 + local last_name = first_name + repeat + cycle[last_name] = index + last_name = remaining[last_name] + index = index + 1 + cycle[index] = last_name + until cycle[last_name] + local length = index - cycle[last_name] + 1 + table.move(cycle, cycle[last_name], index, 1) + for i=2, length//2 do + cycle[i], cycle[length + 1 - i] = cycle[length + 1 - i], cycle[i] + end + error('Cycle occured at ' .. table.concat(cycle, ' -> ', 1, length)) + end + end + end + realcallbacklist[name] = list + t[name] = list + return list + end +}) % \end{macrocode} % % Numerical codes for callback types, and name-to-value association (the @@ -1731,6 +1871,7 @@ luatexbase.call_callback=call_callback % \changes{v1.0a}{2015/09/24}{Function added} % Add a function to a callback. First check arguments. % \changes{v1.0k}{2015/12/02}{Give more specific error messages (PHG)} +% \changes{v1.2a}{2022/10/03}{Add rules for callback ordering} % \begin{macrocode} local function add_to_callback(name, func, description) if not name or name == "" then @@ -1751,10 +1892,10 @@ local function add_to_callback(name, func, description) % Then test if this callback is already in use. If not, initialise its list % and register the proper handler. % \begin{macrocode} - local l = callbacklist[name] + local l = realcallbacklist[name] if l == nil then l = { } - callbacklist[name] = l + realcallbacklist[name] = l % \end{macrocode} % \changes{v1.1y}{2022/08/13}{Adapted code for shared\_callbacks} % Handle count for shared engine callbacks. @@ -1773,6 +1914,7 @@ local function add_to_callback(name, func, description) end end % \end{macrocode} +% \changes{v1.2a}{2022/10/03}{Add rules for callback ordering} % Actually register the function and give an error if more than one % |exclusive| one is registered. % \begin{macrocode} @@ -1780,7 +1922,6 @@ local function add_to_callback(name, func, description) func = func, description = description, } - local priority = #l + 1 if callbacktypes[name] == exclusive then if #l == 1 then luatexbase_error( @@ -1788,25 +1929,76 @@ local function add_to_callback(name, func, description) name .. "'") end end - table.insert(l, priority, f) + table.insert(l, f) + callbacklist[name] = nil % \end{macrocode} % Keep user informed. % \begin{macrocode} luatexbase_log( - "Inserting `" .. description .. "' at position " - .. priority .. " in `" .. name .. "'." + "Inserting `" .. description .. "' in `" .. name .. "'." ) end luatexbase.add_to_callback = add_to_callback % \end{macrocode} % \end{macro} % +% \begin{macro}{declare_callback_rule} +% \changes{v1.2a}{2022/10/03}{Add function} +% Add an ordering constraint between two callback implementations +% \begin{macrocode} +local function declare_callback_rule(name, desc1, relation, desc2) + if not callbacktypes[name] or + not desc1 or not desc2 or + desc1 == "" or desc2 == "" then + luatexbase_error( + "Unable to create ordering constraint. " + .. "Correct usage:\n" + .. "declare_callback_rule(<callback>, <description_a>, <description_b>)" + ) + end + if relation == 'before' then + relation = nil + elseif relation == 'after' then + desc2, desc1 = desc1, desc2 + relation = nil + elseif relation == 'incompatible-warning' or relation == 'incompatible-error' then + elseif relation == 'unrelated' then + else + luatexbase_error( + "Unknown relation type in declare_callback_rule" + ) + end + callbacklist[name] = nil + local rules = callbackrules[name] + if rules then + for i, rule in ipairs(rules) do + if rule[1] == desc1 and rule[2] == desc2 or rule[1] == desc2 and rule[2] == desc1 then + if relation == 'unrelated' then + table.remove(rules, i) + else + rule[1], rule[2], rule.type = desc1, desc2, relation + end + return + end + end + if relation ~= 'unrelated' then + rules[#rules + 1] = {desc1, desc2, type = relation} + end + elseif relation ~= 'unrelated' then + callbackrules[name] = {{desc1, desc2, type = relation}} + end +end +luatexbase.declare_callback_rule = declare_callback_rule +% \end{macrocode} +% \end{macro} +% % \begin{macro}{remove_from_callback} % \changes{v1.0a}{2015/09/24}{Function added} % \changes{v1.0k}{2015/12/02}{adjust initialization of cb local (PHG)} % \changes{v1.0k}{2015/12/02}{Give more specific error messages (PHG)} % \changes{v1.1m}{2020/03/07}{Do not call callback.register for user-defined callbacks} % \changes{v1.1y}{2022/08/13}{Adapted code for shared\_callbacks} +% \changes{v1.2a}{2022/10/03}{Add rules for callback ordering} % Remove a function from a callback. First check arguments. % \begin{macrocode} local function remove_from_callback(name, description) @@ -1823,7 +2015,7 @@ local function remove_from_callback(name, description) .. "remove_from_callback(<callback>, <description>)" ) end - local l = callbacklist[name] + local l = realcallbacklist[name] if not l then luatexbase_error( "No callback list for `" .. name .. "'\n") @@ -1851,6 +2043,7 @@ local function remove_from_callback(name, description) "Removing `" .. description .. "' from `" .. name .. "'." ) if #l == 0 then + realcallbacklist[name] = nil callbacklist[name] = nil local shared = shared_callbacks[name] if shared then @@ -1876,12 +2069,12 @@ luatexbase.remove_from_callback = remove_from_callback local function in_callback(name, description) if not name or name == "" - or not callbacklist[name] + or not realcallbacklist[name] or not callbacktypes[name] or not description then return false end - for _, i in pairs(callbacklist[name]) do + for _, i in pairs(realcallbacklist[name]) do if i.description == description then return true end @@ -1898,7 +2091,7 @@ luatexbase.in_callback = in_callback % this functionality. % \begin{macrocode} local function disable_callback(name) - if(callbacklist[name] == nil) then + if(realcallbacklist[name] == nil) then callback_register(name, false) else luatexbase_error("Callback list for " .. name .. " not empty") @@ -1912,12 +2105,13 @@ luatexbase.disable_callback = disable_callback % \changes{v1.0a}{2015/09/24}{Function added} % \changes{v1.0h}{2015/11/27}{Match test in in-callback latex/4445} % List the descriptions of functions registered for the given callback. +% This will sort the list if necessary. % \begin{macrocode} local function callback_descriptions (name) local d = {} if not name or name == "" - or not callbacklist[name] + or not realcallbacklist[name] or not callbacktypes[name] then return d diff --git a/macros/latex-dev/base/ltluatex.pdf b/macros/latex-dev/base/ltluatex.pdf Binary files differindex 6c5f3e375b..19a3267767 100644 --- a/macros/latex-dev/base/ltluatex.pdf +++ b/macros/latex-dev/base/ltluatex.pdf diff --git a/macros/latex-dev/base/ltmarks-code.pdf b/macros/latex-dev/base/ltmarks-code.pdf Binary files differindex 77dcb07b25..4e28cba0f7 100644 --- a/macros/latex-dev/base/ltmarks-code.pdf +++ b/macros/latex-dev/base/ltmarks-code.pdf diff --git a/macros/latex-dev/base/ltmarks-doc.pdf b/macros/latex-dev/base/ltmarks-doc.pdf Binary files differindex e57a5bbc75..9ee6c42916 100644 --- a/macros/latex-dev/base/ltmarks-doc.pdf +++ b/macros/latex-dev/base/ltmarks-doc.pdf diff --git a/macros/latex-dev/base/ltnews.pdf b/macros/latex-dev/base/ltnews.pdf Binary files differindex 2a94513721..7074281150 100644 --- a/macros/latex-dev/base/ltnews.pdf +++ b/macros/latex-dev/base/ltnews.pdf diff --git a/macros/latex-dev/base/ltnews01.pdf b/macros/latex-dev/base/ltnews01.pdf Binary files differindex 8dcc676577..8f5c23193e 100644 --- a/macros/latex-dev/base/ltnews01.pdf +++ b/macros/latex-dev/base/ltnews01.pdf diff --git a/macros/latex-dev/base/ltnews02.pdf b/macros/latex-dev/base/ltnews02.pdf Binary files differindex 06ec628848..332a568c99 100644 --- a/macros/latex-dev/base/ltnews02.pdf +++ b/macros/latex-dev/base/ltnews02.pdf diff --git a/macros/latex-dev/base/ltnews03.pdf b/macros/latex-dev/base/ltnews03.pdf Binary files differindex d79869c107..10dcd6dabb 100644 --- a/macros/latex-dev/base/ltnews03.pdf +++ b/macros/latex-dev/base/ltnews03.pdf diff --git a/macros/latex-dev/base/ltnews04.pdf b/macros/latex-dev/base/ltnews04.pdf Binary files differindex 408e9fe942..140ae9bfc0 100644 --- a/macros/latex-dev/base/ltnews04.pdf +++ b/macros/latex-dev/base/ltnews04.pdf diff --git a/macros/latex-dev/base/ltnews05.pdf b/macros/latex-dev/base/ltnews05.pdf Binary files differindex 85dd03bbe3..b533e823d3 100644 --- a/macros/latex-dev/base/ltnews05.pdf +++ b/macros/latex-dev/base/ltnews05.pdf diff --git a/macros/latex-dev/base/ltnews06.pdf b/macros/latex-dev/base/ltnews06.pdf Binary files differindex 56b64f624d..ab0e8e6b0a 100644 --- a/macros/latex-dev/base/ltnews06.pdf +++ b/macros/latex-dev/base/ltnews06.pdf diff --git a/macros/latex-dev/base/ltnews07.pdf b/macros/latex-dev/base/ltnews07.pdf Binary files differindex 4b964b32da..b572c2afbb 100644 --- a/macros/latex-dev/base/ltnews07.pdf +++ b/macros/latex-dev/base/ltnews07.pdf diff --git a/macros/latex-dev/base/ltnews08.pdf b/macros/latex-dev/base/ltnews08.pdf Binary files differindex 75c6b0f9ca..cfe3a2e383 100644 --- a/macros/latex-dev/base/ltnews08.pdf +++ b/macros/latex-dev/base/ltnews08.pdf diff --git a/macros/latex-dev/base/ltnews09.pdf b/macros/latex-dev/base/ltnews09.pdf Binary files differindex 4de2a8541e..e0d106d0f6 100644 --- a/macros/latex-dev/base/ltnews09.pdf +++ b/macros/latex-dev/base/ltnews09.pdf diff --git a/macros/latex-dev/base/ltnews10.pdf b/macros/latex-dev/base/ltnews10.pdf Binary files differindex 45d74b33a0..4c9e88504a 100644 --- a/macros/latex-dev/base/ltnews10.pdf +++ b/macros/latex-dev/base/ltnews10.pdf diff --git a/macros/latex-dev/base/ltnews11.pdf b/macros/latex-dev/base/ltnews11.pdf Binary files differindex 8a23382d32..8f61d02d4d 100644 --- a/macros/latex-dev/base/ltnews11.pdf +++ b/macros/latex-dev/base/ltnews11.pdf diff --git a/macros/latex-dev/base/ltnews12.pdf b/macros/latex-dev/base/ltnews12.pdf Binary files differindex dc2e7713df..10deb7706e 100644 --- a/macros/latex-dev/base/ltnews12.pdf +++ b/macros/latex-dev/base/ltnews12.pdf diff --git a/macros/latex-dev/base/ltnews13.pdf b/macros/latex-dev/base/ltnews13.pdf Binary files differindex 0601a775a7..098589bd93 100644 --- a/macros/latex-dev/base/ltnews13.pdf +++ b/macros/latex-dev/base/ltnews13.pdf diff --git a/macros/latex-dev/base/ltnews14.pdf b/macros/latex-dev/base/ltnews14.pdf Binary files differindex b5757c7fab..9c3dc54f14 100644 --- a/macros/latex-dev/base/ltnews14.pdf +++ b/macros/latex-dev/base/ltnews14.pdf diff --git a/macros/latex-dev/base/ltnews15.pdf b/macros/latex-dev/base/ltnews15.pdf Binary files differindex 72b9e5858a..7678526dbc 100644 --- a/macros/latex-dev/base/ltnews15.pdf +++ b/macros/latex-dev/base/ltnews15.pdf diff --git a/macros/latex-dev/base/ltnews16.pdf b/macros/latex-dev/base/ltnews16.pdf Binary files differindex 86df687d2f..e81dd332d6 100644 --- a/macros/latex-dev/base/ltnews16.pdf +++ b/macros/latex-dev/base/ltnews16.pdf diff --git a/macros/latex-dev/base/ltnews17.pdf b/macros/latex-dev/base/ltnews17.pdf Binary files differindex 71afff14a1..a3bf39bcf2 100644 --- a/macros/latex-dev/base/ltnews17.pdf +++ b/macros/latex-dev/base/ltnews17.pdf diff --git a/macros/latex-dev/base/ltnews18.pdf b/macros/latex-dev/base/ltnews18.pdf Binary files differindex 18036c2afc..e754202b75 100644 --- a/macros/latex-dev/base/ltnews18.pdf +++ b/macros/latex-dev/base/ltnews18.pdf diff --git a/macros/latex-dev/base/ltnews19.pdf b/macros/latex-dev/base/ltnews19.pdf Binary files differindex 46f8a55e17..3288407f59 100644 --- a/macros/latex-dev/base/ltnews19.pdf +++ b/macros/latex-dev/base/ltnews19.pdf diff --git a/macros/latex-dev/base/ltnews20.pdf b/macros/latex-dev/base/ltnews20.pdf Binary files differindex a6ad55fa8d..dd66d032cd 100644 --- a/macros/latex-dev/base/ltnews20.pdf +++ b/macros/latex-dev/base/ltnews20.pdf diff --git a/macros/latex-dev/base/ltnews21.pdf b/macros/latex-dev/base/ltnews21.pdf Binary files differindex b571a97560..18b01c53e1 100644 --- a/macros/latex-dev/base/ltnews21.pdf +++ b/macros/latex-dev/base/ltnews21.pdf diff --git a/macros/latex-dev/base/ltnews22.pdf b/macros/latex-dev/base/ltnews22.pdf Binary files differindex 17704aab46..fa05f6a59f 100644 --- a/macros/latex-dev/base/ltnews22.pdf +++ b/macros/latex-dev/base/ltnews22.pdf diff --git a/macros/latex-dev/base/ltnews23.pdf b/macros/latex-dev/base/ltnews23.pdf Binary files differindex 301b414a82..fa67d7822e 100644 --- a/macros/latex-dev/base/ltnews23.pdf +++ b/macros/latex-dev/base/ltnews23.pdf diff --git a/macros/latex-dev/base/ltnews24.pdf b/macros/latex-dev/base/ltnews24.pdf Binary files differindex 7f75b085a9..a991678ddd 100644 --- a/macros/latex-dev/base/ltnews24.pdf +++ b/macros/latex-dev/base/ltnews24.pdf diff --git a/macros/latex-dev/base/ltnews25.pdf b/macros/latex-dev/base/ltnews25.pdf Binary files differindex 105f319373..52aef54c0c 100644 --- a/macros/latex-dev/base/ltnews25.pdf +++ b/macros/latex-dev/base/ltnews25.pdf diff --git a/macros/latex-dev/base/ltnews26.pdf b/macros/latex-dev/base/ltnews26.pdf Binary files differindex 25924bd89e..09e49e79ae 100644 --- a/macros/latex-dev/base/ltnews26.pdf +++ b/macros/latex-dev/base/ltnews26.pdf diff --git a/macros/latex-dev/base/ltnews27.pdf b/macros/latex-dev/base/ltnews27.pdf Binary files differindex 3e55d0ca17..fa8a5fcf11 100644 --- a/macros/latex-dev/base/ltnews27.pdf +++ b/macros/latex-dev/base/ltnews27.pdf diff --git a/macros/latex-dev/base/ltnews28.pdf b/macros/latex-dev/base/ltnews28.pdf Binary files differindex 7c89f1b6d5..ac868bf0ed 100644 --- a/macros/latex-dev/base/ltnews28.pdf +++ b/macros/latex-dev/base/ltnews28.pdf diff --git a/macros/latex-dev/base/ltnews29.pdf b/macros/latex-dev/base/ltnews29.pdf Binary files differindex 86e5464566..80a19569bf 100644 --- a/macros/latex-dev/base/ltnews29.pdf +++ b/macros/latex-dev/base/ltnews29.pdf diff --git a/macros/latex-dev/base/ltnews30.pdf b/macros/latex-dev/base/ltnews30.pdf Binary files differindex cd2a1f7dd4..68d5d8afb1 100644 --- a/macros/latex-dev/base/ltnews30.pdf +++ b/macros/latex-dev/base/ltnews30.pdf diff --git a/macros/latex-dev/base/ltnews31.pdf b/macros/latex-dev/base/ltnews31.pdf Binary files differindex 40458d5948..54e5e2a830 100644 --- a/macros/latex-dev/base/ltnews31.pdf +++ b/macros/latex-dev/base/ltnews31.pdf diff --git a/macros/latex-dev/base/ltnews32.pdf b/macros/latex-dev/base/ltnews32.pdf Binary files differindex 8ad63d92ca..17264132fc 100644 --- a/macros/latex-dev/base/ltnews32.pdf +++ b/macros/latex-dev/base/ltnews32.pdf diff --git a/macros/latex-dev/base/ltnews33.pdf b/macros/latex-dev/base/ltnews33.pdf Binary files differindex ac27d49883..d91676a1c0 100644 --- a/macros/latex-dev/base/ltnews33.pdf +++ b/macros/latex-dev/base/ltnews33.pdf diff --git a/macros/latex-dev/base/ltnews34.pdf b/macros/latex-dev/base/ltnews34.pdf Binary files differindex ceef597c19..9074b39850 100644 --- a/macros/latex-dev/base/ltnews34.pdf +++ b/macros/latex-dev/base/ltnews34.pdf diff --git a/macros/latex-dev/base/ltnews35.pdf b/macros/latex-dev/base/ltnews35.pdf Binary files differindex 1226f431cb..bffff429ce 100644 --- a/macros/latex-dev/base/ltnews35.pdf +++ b/macros/latex-dev/base/ltnews35.pdf diff --git a/macros/latex-dev/base/ltnews36.pdf b/macros/latex-dev/base/ltnews36.pdf Binary files differindex 24a0b791fe..bd3fd8be10 100644 --- a/macros/latex-dev/base/ltnews36.pdf +++ b/macros/latex-dev/base/ltnews36.pdf diff --git a/macros/latex-dev/base/ltnews36.tex b/macros/latex-dev/base/ltnews36.tex index 55de98628c..d6df801db2 100644 --- a/macros/latex-dev/base/ltnews36.tex +++ b/macros/latex-dev/base/ltnews36.tex @@ -123,7 +123,7 @@ \tubcommand{\input{tubltmac}} \publicationmonth{November} -\publicationyear{2022 --- DRAFT version for upcoming release} +\publicationyear{2022} % --- DRAFT version for upcoming release} \publicationissue{36} @@ -143,16 +143,30 @@ \section{Introduction} -\emph{to be written} +The 2022-11 release of \LaTeX{} is largely a consolidation release +where we made a number of minor improvements to fix some bugs or +improve one or the other interface. +The only really important functionality that was added is described in +the next section: the ability to easily define document-level commands +and environments that accept a key/value list in one of its (usually +optional) arguments, including the ability to determine if the argument +does in fact contain such a key/value list or just a single +\enquote{classical} value. -\subsection{Auto-detecting key--value arguments} +For the \enquote{Tagged \LaTeX{} Project} this functionality is very +important because many document-level commands will need to accept +such key/value lists, for example, to specify alternative text or +overwrite default tagging if that becomes necessary in a document. + + +\section{Auto-detecting key/value arguments} To allow extension of the core \LaTeX{} syntax, \pkg{ltcmd} now supports -a \texttt{={...}} modifier when grabbing arguments. This modifier instructs +a \texttt{={...}}\ modifier when grabbing arguments. This modifier instructs \LaTeX{} that the argument should be passed to the underlying code as -a set of keyvals. If the argument does not \enquote{look like} a set -of keyvals, it will be converted into a single key--value pair, with +a set of key/values. If the argument does not \enquote{look like} a set +of key/values, it will be converted into a single key/value pair, with the argument to \texttt{=} specifying the name of that key. For example, the \cs{caption} command could be defined as \begin{verbatim} @@ -161,26 +175,29 @@ example, the \cs{caption} command could be defined as {...} \end{verbatim} which would mean that if the optional argument does \emph{not} -contain keyval data, it will be converted to a single keyval +contain key/value data, it will be converted to a single key/value pair with the key name \texttt{short-text}. Arguments which begin with \texttt{=,} are always interpreted as -keyvals even if they do not contain further \texttt{=} signs. +key/values even if they do not contain further \texttt{=} signs. Any \texttt{=} signs enclosed within \verb|$...$| or \verb|\(...\)|, i.e.~in inline math mode, are ignored, meaning that only \texttt{=} outside of math mode will generally cause -interpretation as keyval material. +interpretation as key/value material. In case the argument contains a \enquote{textual} \texttt{=} sign that -is mistaken as key/value indicator you can hide it using a brace +is mistaken as a key/value indicator you can hide it using a brace group as you would do in other places, e.g., \begin{verbatim} \caption[{Use of = signs}] {Use of = signs in optional arguments} \end{verbatim} -However, because a \texttt{=} sign in math mode are already ignored, this +However, because \texttt{=} signs in math mode are already ignored, this should seldom be necessary. + +\section{A note for font package developers} + \subsection{Encoding subsets for \texttt{TS1} encoded fonts} The text companion encoding \texttt{TS1} is unfortunately not very @@ -204,29 +221,51 @@ glyphs that are actually available in the font.\footnote{The \LaTeX{} % \githubissue{905} - - \section{New or improved commands} +\subsection{Better language handling for case-changing commands} + +The commands \cs{MakeUppercase}, \cs{MakeLowercase} and \cs{MakeTitlecase} now +automatically detect the locale currently in use when \pkg{babel} is loaded. +This allows automatic adjustment of letter mappings where appropriate. They +also accept a leading optional argument. This accepts a key--value list of +control settings. At present, there is one key available: \texttt{locale}, +which can also be accessed via the alias \texttt{lang}. This is intended to +allow local setting of the language, which can be done using a BCP-47 +descriptor. For example, this could be used to force Turkish case changing in +otherwise English input +\begin{verbatim} +\MakeUppercase[lang = tr]{Ragıp Hulûsi Özdem} +\end{verbatim} +yields + \MakeUppercase[lang = tr]{Ragıp Hulûsi Özdem}. +% RAGIP HULÛS\.I ÖZDEM. %TUB \section{Code improvements} -\subsection{Support for slanted small caps in the EC-fonts } -Since some time \LaTeX{} supports the combination of the shapes -small caps and italic/slanted. The EC-fonts contain slanted small caps fonts +\subsection{Support for slanted small caps in the EC fonts} +For some time \LaTeX{} has supported the combination of the shapes +small caps and italic/slanted. The EC fonts contain slanted small caps fonts but using them required the loading of an external package. Suitable font definitions have now been added to \pkg{t1cmd.fd} and so from now on \begin{verbatim} - \textsc{\textsl{slanted small}} - \textsc{\textit{italic small caps}} +\usepackage[T1]{fontenc} +... + \textsc{\textsl{Slanted Small Caps}}; + \textsc{\textit{Italic Small Caps}}; \bfseries - \textsc{\textsl{bold slanted small caps}} - \textsc{\textit{bold italic small caps}} + \textsc{\textsl{Bold Slanted Small Caps}}; + \textsc{\textit{Bold Italic Small Caps}}. \end{verbatim} will give the expected result: {\fontfamily{cmr} -\textsc{\textsl{slanted small}} \textsc{\textit{italic small caps}} +\textsc{\textsl{Slanted Small Caps}}; \textsc{\textit{Italic Small Caps}}; \bfseries -\textsc{\textsl{bold slanted small caps}} \textsc{\textit{bold italic small caps}}} +\textsc{\textsl{Bold Slanted Small Caps}}; \textsc{\textit{Bold Italic Small Caps}}}. + +Given that the Computer Modern fonts in \texttt{T1} do not have real italic small caps but only +slanted small caps, the latter is substituted for the former, which is +why above both work but you see no difference between the two (and in the log you get a +substitution warning for the \cs{textit}\cs{textsc} shape combination). % \githubissue{782} @@ -242,28 +281,56 @@ font instead. \githubissue{879} + +\subsection{Improve font series handling with incorrect \texttt{.fd} files} + +By convention, the font series value is supposed to contain no +\texttt{m}, unless you refer to the \enquote{medium} series (which is +represented by a single \texttt{m}). For example, one should write +\texttt{c} for \enquote{medium weight, condensed width} and not +\texttt{mc}. This was one of the many space-conserving methods +necessary in the early days of \LaTeXe. + +Some older \texttt{.fd} files +do not obey that convention but use \texttt{mc}, \texttt{bm}, etc., in +their declarations. As a result, some font selection scheme +functionality was not working when confronted with such \texttt{.fd} +files. We have therefore augmented \cs{DeclareSymbolFont} and +\cs{SetSymbolFont} to strip any surplus \texttt{m} from their series argument +so that they do not unnecessarily trigger font +substitutions. Regardless of this support such +\texttt{.fd} files should get fixed by their maintainers. +% +\githubissue{918} + + + + \subsection{Detect nested \texttt{minipage} environments} Nesting of \texttt{minipage} environments is only partially supported in \LaTeX{} and can lead to incorrect output, such as overfull boxes or footnotes appearing in the wrong place; see~\cite[p.~106]{36:Lamport}. However, until now there was no warning -if that happpened. This has been changed and the environment now +if that happened. This has been changed and the environment now warns if you nest it in another \texttt{minipage} environment that already contains footnotes. % \githubissue{168} - -\subsection{\LuaTeX\ callback efficiency improvement} - -The mechanism for providing the -\texttt{pre/post\_mlist\_to\_hlist\_filter} callbacks in \LuaTeX\ has -been improved to make it more reusable and to avoid overhead if these -callbacks are not used. +\subsection{Robust commands in package options} +With the standard key-based option handler added in the last release, +or with contributed packages offering similar features, users may +expect to be able to use a package option such as +\verb|[font=\bfseries]|. +Previously this failed with internal errors as the option list was +expanded via \verb|\edef|. This has now been changed to use the +existing command \verb|\protected@edef| so that any \LaTeX\ robust +command should be safe to pass to a key value option. % -\githubissue{830} +\githubissue{932} + @@ -282,35 +349,56 @@ approach. -\subsection{Improve font series handling with incorrect \texttt{.fd} files} - -By convention, the font series value is supposed to contain no -\texttt{m}, unless you refer to the \enquote{medium} series (which is -represented by a single \texttt{m}). For example, one should write -\texttt{c} for \enquote{medium weight, condensed width} and not -\texttt{mc}. This was one of the many space-conserving methods -necessary in the early days of \LaTeXe. +\subsection{\LuaTeX\ callback efficiency improvement} -Some older \texttt{.fd} files -do not obey that convention but use \texttt{mc}, \texttt{bm}, etc., in -their declarations. As a result, some font selection scheme -functionality was not working when confronted with such \texttt{.fd} -files. We have therefore augmented \cs{DeclareSymbolFont} and -\cs{SetSymbolFont} to strip their series argument from any surplus -\texttt{m} so that they do not unnecessarily trigger font -substitutions. Regardless of this support such -\texttt{.fd} files should get fixed by their maintainers. +The mechanism for providing the +\texttt{pre/post\_mlist\_to\_hlist\_filter} callbacks in \LuaTeX\ has +been improved to make it more reusable and to avoid overhead if these +callbacks are not used. % -\githubissue{918} +\githubissue{830} + + +\subsection{Rule-based ordering for \LuaTeX\ callback handlers} + +In \hologo{LuaLaTeX} the callback handlers used to be called in the order +in which they were registered in, but this was often rather fragile. +It depends a lot on the load order and any attempts to enforce a +different order required unregistering and reregistering the handlers to +be reordered. Additionally, even if some ordering constraints where +enforced that way, another package loaded later could accidentally +overwrite it. + +To improve this, we now order the callback handlers based on ordering +rules similar to the hook rules. + +When registering a callback which should run before or after another +callback, \verb+luatexbase.declare_callback_rule+ can now be used to +record this ordering constraint. +For example +\begin{verbatim} +luatexbase.add_to_callback + ('pre_shaping_filter', my_handler, 'my_name') +luatexbase.declare_callback_rule + ('pre_shaping_filter', + 'my_name', 'before', 'other_name') +\end{verbatim} +will ensure that \verb+my_handler+ will always be called before the +handler registered as \verb+other_name+. + +This also means that the order in which callbacks are registered no +longer implicitly defines an order. +Code which relied on this implicit order should now define the order +rules explicitly. \section{Bug fixes} -\subsection{Prevent \TeX{} from loosing a \cs{smash}} +\subsection{Prevent \TeX{} from losing a \cs{smash}} When \TeX{} is typesetting a fraction, it will rebox the material in -either numerator or the denumerator depending on which is wider. If +either the numerator or denominator, depending on which is wider. If the repackaged part consists of a single box, that box gets new dimensions and if it was built using a \cs{smash} that effect vanishes (because a smash is nothing other than zeroing some box dimension, @@ -321,28 +409,36 @@ which now got undone). For example, in the line \end{verbatim} the $2$ in the denominators was not always at the same vertical position, because the second \cs{smash} was ignored due to reboxing: +\vspace{-1.2\baselineskip} \[ \makeatletter \def\mathsm@sh#1#2{\setbox\z@\hbox{$\m@th#1{#2}$}\finsm@sh} % old definition \makeatother \newcommand*\drawbaseline{\rlap{\vrule width 60pt height 0.1pt depth 0pt }} +\qquad \frac{1}{\drawbaseline2} = \frac{1}{\smash{2^X}} \neq \frac{100}{\smash{2^X}} +\pagebreak % not TUB \] -The differences are subtle but noticeable. This is now corrected and the \cs{smash} is always +The differences are subtle but noticeable. +This is now corrected and the \cs{smash} is always honored. Thus now you get this output: +\vspace{-1.2\baselineskip} \[ \newcommand*\drawbaseline{\rlap{\vrule width 60pt height 0.1pt depth 0pt }} +\qquad \frac{1}{\drawbaseline2} = \frac{1}{\smash{2^X}} \neq \frac{100}{\smash{2^X}} \] +\par +\vspace{-1.5\baselineskip} % \githubissue{517} \subsection{Resolve an issue with \cs{mathchoice} and \texttt{localalphabets}} -The code for keeping a number of math alphabetcs local (introduced in +The code for keeping a number of math alphabets local (introduced in 2021; see~\cite{36:ltnews34}) used \cs{aftergroup} to do some cleanup actions after a formula had finished. Unfortunately, \cs{aftergroup} can't be used inside the arguments of the \cs{mathchoice} primitive and as a result one @@ -352,19 +448,28 @@ approach altogether. % \githubissue{921} +\subsection{Reporting of unused global options when using key/value processing} + +Using the new key/value option processor did not properly report any unused +global options when it was used in handling class options. This has now been +corrected. +% +\githubissue{938} -\section{Changes to packages in the \pkg{amsmath} category} +%\section{Changes to packages in the \pkg{amsmath} category} +%\newpage TUB? + \section{Changes to packages in the \pkg{graphics} category} \subsection{Fix a \cs{mathcolor} bug} -The \cs{mathcolor} command intorduced in \cite{36:ltnews35} needs to -scan for following sub and superscripts, but if it did so at the end +The \cs{mathcolor} command introduced in \cite{36:ltnews35} needs to +scan for following sub- and superscripts, but if it did so at the end of an alignment cell, e.g., in a \texttt{array} environment, the -\texttt{\&} was evaluated too early causing some internal errors. This +\texttt{\&} was evaluated too early, causing some internal errors. This is now properly guarded for. % \githubissue{901} @@ -375,7 +480,7 @@ is now properly guarded for. \subsection{\pkg{array}: Correctly identify single-line m-cells} -Cells in m-columns that only contain a single line are supposed to +Cells in m-columns that contain only a single line are supposed to behave like single-line p-cells and align at the same baseline. To test for the condition, \pkg{array} used to compare the height of the cell to the height of the strut used for the table rows. However, the height of that @@ -388,7 +493,7 @@ tall, in which case aligning is pointless anyway). \githubissue{766} -\medskip +%\medskip \begin{thebibliography}{9} diff --git a/macros/latex-dev/base/ltpara-code.pdf b/macros/latex-dev/base/ltpara-code.pdf Binary files differindex 4fa9f79b83..0fbaccad7a 100644 --- a/macros/latex-dev/base/ltpara-code.pdf +++ b/macros/latex-dev/base/ltpara-code.pdf diff --git a/macros/latex-dev/base/ltpara-doc.pdf b/macros/latex-dev/base/ltpara-doc.pdf Binary files differindex d55cb69019..847135c79c 100644 --- a/macros/latex-dev/base/ltpara-doc.pdf +++ b/macros/latex-dev/base/ltpara-doc.pdf diff --git a/macros/latex-dev/base/ltshipout-code.pdf b/macros/latex-dev/base/ltshipout-code.pdf Binary files differindex 1e7c996884..b05e3da93d 100644 --- a/macros/latex-dev/base/ltshipout-code.pdf +++ b/macros/latex-dev/base/ltshipout-code.pdf diff --git a/macros/latex-dev/base/ltshipout-doc.pdf b/macros/latex-dev/base/ltshipout-doc.pdf Binary files differindex b9cfbf5e67..61d3c87b9f 100644 --- a/macros/latex-dev/base/ltshipout-doc.pdf +++ b/macros/latex-dev/base/ltshipout-doc.pdf diff --git a/macros/latex-dev/base/ltvers.dtx b/macros/latex-dev/base/ltvers.dtx index 429ee4d8d1..a170ce98e1 100644 --- a/macros/latex-dev/base/ltvers.dtx +++ b/macros/latex-dev/base/ltvers.dtx @@ -112,10 +112,10 @@ %</2ekernel> %<latexrelease>\edef\latexreleaseversion %<*2ekernel|latexrelease> - {2022-11-01} + {2023-05-01} %</2ekernel|latexrelease> %<*2ekernel> -\def\patch@level{-2} +\def\patch@level{-0} % \end{macrocode} % % \begin{macro}{\development@branch@name} diff --git a/macros/latex-dev/base/ltx3info.pdf b/macros/latex-dev/base/ltx3info.pdf Binary files differindex b09d2b874e..fd0ac95b4c 100644 --- a/macros/latex-dev/base/ltx3info.pdf +++ b/macros/latex-dev/base/ltx3info.pdf diff --git a/macros/latex-dev/base/ltxdoc.pdf b/macros/latex-dev/base/ltxdoc.pdf Binary files differindex c094004aea..aff4835ebb 100644 --- a/macros/latex-dev/base/ltxdoc.pdf +++ b/macros/latex-dev/base/ltxdoc.pdf diff --git a/macros/latex-dev/base/makeindx.pdf b/macros/latex-dev/base/makeindx.pdf Binary files differindex 79d65d507b..07c7f3aa06 100644 --- a/macros/latex-dev/base/makeindx.pdf +++ b/macros/latex-dev/base/makeindx.pdf diff --git a/macros/latex-dev/base/modguide.pdf b/macros/latex-dev/base/modguide.pdf Binary files differindex ab7f6c6c68..f818b299ac 100644 --- a/macros/latex-dev/base/modguide.pdf +++ b/macros/latex-dev/base/modguide.pdf diff --git a/macros/latex-dev/base/nfssfont.pdf b/macros/latex-dev/base/nfssfont.pdf Binary files differindex 57f0853abe..fd2dcfb5cc 100644 --- a/macros/latex-dev/base/nfssfont.pdf +++ b/macros/latex-dev/base/nfssfont.pdf diff --git a/macros/latex-dev/base/proc.pdf b/macros/latex-dev/base/proc.pdf Binary files differindex e29b28e895..2005fa583b 100644 --- a/macros/latex-dev/base/proc.pdf +++ b/macros/latex-dev/base/proc.pdf diff --git a/macros/latex-dev/base/slides.pdf b/macros/latex-dev/base/slides.pdf Binary files differindex a3efc155d2..002f38d707 100644 --- a/macros/latex-dev/base/slides.pdf +++ b/macros/latex-dev/base/slides.pdf diff --git a/macros/latex-dev/base/slifonts.pdf b/macros/latex-dev/base/slifonts.pdf Binary files differindex c8992d4024..b73bb5a036 100644 --- a/macros/latex-dev/base/slifonts.pdf +++ b/macros/latex-dev/base/slifonts.pdf diff --git a/macros/latex-dev/base/source2e.pdf b/macros/latex-dev/base/source2e.pdf Binary files differindex 4006bc5fd9..42f74b42cd 100644 --- a/macros/latex-dev/base/source2e.pdf +++ b/macros/latex-dev/base/source2e.pdf diff --git a/macros/latex-dev/base/syntonly.pdf b/macros/latex-dev/base/syntonly.pdf Binary files differindex 140e61e512..fd876bf802 100644 --- a/macros/latex-dev/base/syntonly.pdf +++ b/macros/latex-dev/base/syntonly.pdf diff --git a/macros/latex-dev/base/tlc2.pdf b/macros/latex-dev/base/tlc2.pdf Binary files differindex acc7b86da5..2d3d123d1f 100644 --- a/macros/latex-dev/base/tlc2.pdf +++ b/macros/latex-dev/base/tlc2.pdf diff --git a/macros/latex-dev/base/tulm.pdf b/macros/latex-dev/base/tulm.pdf Binary files differindex 41383d94a5..d57694c1d0 100644 --- a/macros/latex-dev/base/tulm.pdf +++ b/macros/latex-dev/base/tulm.pdf diff --git a/macros/latex-dev/base/usrguide-historic.pdf b/macros/latex-dev/base/usrguide-historic.pdf Binary files differindex 9b2ee642c7..325eac0a87 100644 --- a/macros/latex-dev/base/usrguide-historic.pdf +++ b/macros/latex-dev/base/usrguide-historic.pdf diff --git a/macros/latex-dev/base/usrguide.pdf b/macros/latex-dev/base/usrguide.pdf Binary files differindex 2f2069018a..52c0370645 100644 --- a/macros/latex-dev/base/usrguide.pdf +++ b/macros/latex-dev/base/usrguide.pdf diff --git a/macros/latex-dev/base/usrguide.tex b/macros/latex-dev/base/usrguide.tex index 8069403665..32e12a1397 100644 --- a/macros/latex-dev/base/usrguide.tex +++ b/macros/latex-dev/base/usrguide.tex @@ -39,7 +39,7 @@ \footnote{This file may distributed and/or modified under the conditions of the \LaTeX{} Project Public License, either version 1.3c of this license or (at your option) any later version. See the source - \texttt{usrguide3.tex} for full details.}% + \texttt{usrguide.tex} for full details.}% } \date{2022-07-05} @@ -75,7 +75,7 @@ \section{Introduction} \LaTeXe{} was released in 1994 and added a number of then-new concepts to -\LaTeX{}. These are described in \texttt{usrguide-old}, which has largely remained +\LaTeX{}. These are described in \texttt{usrguide-historic}, which has largely remained unchanged. Since then, the \LaTeX{} team have worked on a number of ideas, firstly a programming language for \LaTeX{} (\pkg{expl3}) and then a range of tools for document authors which build on that language. Here, we describe @@ -1166,6 +1166,13 @@ engines match those available in standard input encodings (|T1|, |T2|, |LGR|). \end{tabular} \end{quotation} +The case-changing commands take an optional argument which can be used to +tailor the output. This optional argument accepts the key \texttt{locale}, +also available under the alias \texttt{lang}, +which can be used to give a language identifier in BCP-47 +format. This is then applied to select language-specific features during +case-changing. + The input given to these commands is `expanded' before case changing is applied. This means that any commands within the input that convert to pure text will be case changed. Mathematical content is automatically excluded, as diff --git a/macros/latex-dev/base/utf8ienc.dtx b/macros/latex-dev/base/utf8ienc.dtx index 363998a853..a2b25fd3ab 100644 --- a/macros/latex-dev/base/utf8ienc.dtx +++ b/macros/latex-dev/base/utf8ienc.dtx @@ -152,9 +152,9 @@ % from \texttt{"C2} to \texttt{"DF} are defined to parse for a % second octet following, the characters from \texttt{"E0} to % \texttt{"EF} are defined to parse for two more octets and finally -% the characters from \texttt{"F0} to \texttt{"F3} are defined to +% the characters from \texttt{"F0} to \texttt{"F4} are defined to % parse for three additional octets. These additional octets are -% always in the range \texttt{"80} to \texttt{"B9}. +% always in the range \texttt{"80} to \texttt{"BF}. % % Thus, when such a character is encountered in the document (so % long as expansion is not prohibited) a defined number of diff --git a/macros/latex-dev/base/utf8ienc.pdf b/macros/latex-dev/base/utf8ienc.pdf Binary files differindex 1633aff353..5bbc4da5f0 100644 --- a/macros/latex-dev/base/utf8ienc.pdf +++ b/macros/latex-dev/base/utf8ienc.pdf diff --git a/macros/latex-dev/base/webcomp.pdf b/macros/latex-dev/base/webcomp.pdf Binary files differindex db1a1e9eba..45d2350e67 100644 --- a/macros/latex-dev/base/webcomp.pdf +++ b/macros/latex-dev/base/webcomp.pdf |