diff options
author | Karl Berry <karl@freefriends.org> | 2022-11-01 19:57:17 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2022-11-01 19:57:17 +0000 |
commit | cfd5d22753b4fdca36d85f59b8ba0e5d1e8a9ad0 (patch) | |
tree | 06d78cd6aa3bc8723a05ec9c682510ff774b3cef /Master/texmf-dist/tex | |
parent | 820f14d57cd6b67d5793e43d5d1e4866a51ffaa7 (diff) |
latex2e 2022-11 (1nov22)
git-svn-id: svn://tug.org/texlive/trunk@64892 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
50 files changed, 1115 insertions, 412 deletions
diff --git a/Master/texmf-dist/tex/latex/base/article.cls b/Master/texmf-dist/tex/latex/base/article.cls index d3c6498a07b..1488c02e760 100644 --- a/Master/texmf-dist/tex/latex/base/article.cls +++ b/Master/texmf-dist/tex/latex/base/article.cls @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesClass{article} - [2021/10/04 v1.4n + [2022/07/02 v1.4n Standard LaTeX document class] \newcommand\@ptsize{} \newif\if@restonecol diff --git a/Master/texmf-dist/tex/latex/base/atbegshi-ltx.sty b/Master/texmf-dist/tex/latex/base/atbegshi-ltx.sty index 1a3a472062a..e9fee034661 100644 --- a/Master/texmf-dist/tex/latex/base/atbegshi-ltx.sty +++ b/Master/texmf-dist/tex/latex/base/atbegshi-ltx.sty @@ -47,8 +47,7 @@ %% %%% From File: ltshipout.dtx \providecommand\ltshipoutversion{v1.0m} -\providecommand\ltshipoutdate{2022/05/08} - % \cs{AtBeginDvi} is the existing \LaTeXe{} interface to fill the +\providecommand\ltshipoutdate{2022/08/26} \ProvidesPackage{atbegshi-ltx} [2021/01/10 v1.0c Emulation of the original atbegshi^^Jpackage with kernel methods] diff --git a/Master/texmf-dist/tex/latex/base/atveryend-ltx.sty b/Master/texmf-dist/tex/latex/base/atveryend-ltx.sty index f541bfe9527..2a6db6d67d4 100644 --- a/Master/texmf-dist/tex/latex/base/atveryend-ltx.sty +++ b/Master/texmf-dist/tex/latex/base/atveryend-ltx.sty @@ -42,8 +42,8 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. %%% From File: ltfilehook.dtx -\providecommand\ltfilehookversion{v1.0m} -\providecommand\ltfilehookdate{2022/04/01} +\providecommand\ltfilehookversion{v1.0n} +\providecommand\ltfilehookdate{2022/08/18} \ProvidesPackage{atveryend-ltx} [2020/08/19 v1.0a Emulation of the original atveryend package^^Jwith kernel methods] diff --git a/Master/texmf-dist/tex/latex/base/bk10.clo b/Master/texmf-dist/tex/latex/base/bk10.clo index 728e33406a5..3befcaa3945 100644 --- a/Master/texmf-dist/tex/latex/base/bk10.clo +++ b/Master/texmf-dist/tex/latex/base/bk10.clo @@ -42,7 +42,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. \ProvidesFile{bk10.clo} - [2021/10/04 v1.4n + [2022/07/02 v1.4n Standard LaTeX file (size option)] \renewcommand\normalsize{% \@setfontsize\normalsize\@xpt\@xiipt diff --git a/Master/texmf-dist/tex/latex/base/bk11.clo b/Master/texmf-dist/tex/latex/base/bk11.clo index 4206d873481..5bec4cf1184 100644 --- a/Master/texmf-dist/tex/latex/base/bk11.clo +++ b/Master/texmf-dist/tex/latex/base/bk11.clo @@ -42,7 +42,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. \ProvidesFile{bk11.clo} - [2021/10/04 v1.4n + [2022/07/02 v1.4n Standard LaTeX file (size option)] \renewcommand\normalsize{% \@setfontsize\normalsize\@xipt{13.6}% diff --git a/Master/texmf-dist/tex/latex/base/bk12.clo b/Master/texmf-dist/tex/latex/base/bk12.clo index e33fefc2e81..b38d1c7c590 100644 --- a/Master/texmf-dist/tex/latex/base/bk12.clo +++ b/Master/texmf-dist/tex/latex/base/bk12.clo @@ -42,7 +42,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. \ProvidesFile{bk12.clo} - [2021/10/04 v1.4n + [2022/07/02 v1.4n Standard LaTeX file (size option)] \renewcommand\normalsize{% \@setfontsize\normalsize\@xiipt{14.5}% diff --git a/Master/texmf-dist/tex/latex/base/book.cls b/Master/texmf-dist/tex/latex/base/book.cls index d4f775775ac..28a99524e79 100644 --- a/Master/texmf-dist/tex/latex/base/book.cls +++ b/Master/texmf-dist/tex/latex/base/book.cls @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesClass{book} - [2021/10/04 v1.4n + [2022/07/02 v1.4n Standard LaTeX document class] \newcommand\@ptsize{} \newif\if@restonecol diff --git a/Master/texmf-dist/tex/latex/base/doc.sty b/Master/texmf-dist/tex/latex/base/doc.sty index 586b35af069..bbaa9a9937e 100644 --- a/Master/texmf-dist/tex/latex/base/doc.sty +++ b/Master/texmf-dist/tex/latex/base/doc.sty @@ -53,7 +53,7 @@ \DeclareCurrentRelease{v3}{2022-06-01} \ProvidesPackage{doc} - [2022/06/08 v3.0j + [2022/07/03 v3.0k Standard LaTeX documentation package V3 (FMi)] %% %% Package `doc' to use with LaTeX 2e @@ -67,88 +67,28 @@ \catcode`\^^A=14 \catcode`\^^X=14 \AtBeginDocument{\catcode`\^^A=14\relax\catcode`\^^X=14\relax} -\ExplSyntaxOn -\newif \ifdoc@noprint -\newif \ifdoc@noindex -\newif \ifdoc@hyperref \doc@hyperreftrue -\newif \ifdoc@multicol \doc@multicoltrue -\newif \ifdoc@debugshow -\newif \ifdoc@reportchangedates -\keys_define:nn {doc} - { - noprint .choice:, - noprint / true .code:n = { \legacy_if_set_true:n { doc@noprint } }, - noprint / false .code:n = { \legacy_if_set_false:n { doc@noprint } }, - noprint .default:n = { true }, - noindex .choice:, - noindex / true .code:n = { \legacy_if_set_true:n { doc@noindex } }, - noindex / false .code:n = { \legacy_if_set_false:n { doc@noindex } }, - noindex .default:n = { true }, - hyperref .choice:, - hyperref / true .code:n = { \legacy_if_set_true:n { doc@hyperref } }, - hyperref / false .code:n = { \legacy_if_set_false:n { doc@hyperref } }, - hyperref .default:n = { true }, - nohyperref .choice:, - nohyperref / true .code:n = { \legacy_if_set_false:n { doc@hyperref } }, - nohyperref / false .code:n = { \legacy_if_set_true:n { doc@hyperref } }, - nohyperref .default:n = { true }, - multicol .choice:, - multicol / true .code:n = { \legacy_if_set_true:n { doc@multicol } }, - multicol / false .code:n = { \legacy_if_set_false:n { doc@multicol } }, - multicol .default:n = { true }, - nomulticol .choice:, - nomulticol / true .code:n = { \legacy_if_set_false:n { doc@multicol } }, - nomulticol / false .code:n = { \legacy_if_set_true:n { doc@multicol } }, - nomulticol .default:n = { true }, - debugshow .choice:, - debugshow / true .code:n = { \legacy_if_set_true:n { doc@debugshow } }, - debugshow / false .code:n = { \legacy_if_set_false:n { doc@debugshow } }, - debugshow .default:n = { true }, - reportchangedates .choice:, - reportchangedates / true .code:n = { \legacy_if_set_true:n { doc@reportchangedates } }, - reportchangedates / false .code:n = { \legacy_if_set_false:n { doc@reportchangedates } }, - reportchangedates .default:n = { true }, - } -\newif \ifdoc@toplevel \doc@topleveltrue -\keys_define:nn {doc} +\DeclareKeys { - toplevel .choice:, - toplevel / true .code:n = { \legacy_if_set_true:n { doc@toplevel } }, - toplevel / false .code:n = { \legacy_if_set_false:n { doc@toplevel } }, - toplevel .default:n = { true }, - notoplevel .choice:, - notoplevel / true .code:n = { \legacy_if_set_false:n { doc@toplevel } }, - notoplevel / false .code:n = { \legacy_if_set_true:n { doc@toplevel } }, - notoplevel .default:n = { true } + noprint .if = {doc@noprint}, + noindex .if = {doc@noindex}, + hyperref .if = {doc@hyperref}, + nohyperref .ifnot = {doc@hyperref}, + multicol .if = {doc@multicol}, + nomulticol .ifnot = {doc@multicol}, + debugshow .if = {doc@debugshow}, + reportchangedates .if = {doc@reportchangedates}, + toplevel .if = {doc@toplevel}, + notoplevel .ifnot = {doc@toplevel}, + macrolike .if = {doc@macrolike}, + envlike .ifnot = {doc@macrolike}, + idxtype .store = \doc@idxtype, + idxgroup .store = \doc@idxgroup, + printtype .store = \doc@printtype, + outer .if = {doc@outer}, } -\newif \ifdoc@macrolike -\keys_define:nn {doc} - { - macrolike .choice:, - macrolike / true .code:n = { \legacy_if_set_true:n { doc@macrolike } }, - macrolike / false .code:n = { \legacy_if_set_false:n { doc@macrolike } }, - macrolike .default:n = { true }, - envlike .choice:, - envlike / true .code:n = { \legacy_if_set_false:n { doc@macrolike } }, - envlike / false .code:n = { \legacy_if_set_true:n { doc@macrolike } }, - envlike .default:n = { true } - } - -\keys_define:nn { doc } - { - idxtype .tl_set:N = \doc@idxtype, - idxgroup .tl_set:N = \doc@idxgroup, - printtype .tl_set:N = \doc@printtype - } -\newif\ifdoc@outer -\keys_define:nn {doc} - { - outer .choice:, - outer / true .code:n = { \legacy_if_set_true:n { doc@outer } }, - outer / false .code:n = { \legacy_if_set_false:n { doc@outer } }, - outer .default:n = { true }, - } -\ExplSyntaxOff +\doc@hyperreftrue +\doc@multicoltrue +\doc@topleveltrue \ProcessKeyOptions \newif\ifscan@allowed \scan@allowedtrue \def\SetupDoc#1{% diff --git a/Master/texmf-dist/tex/latex/base/docstrip.tex b/Master/texmf-dist/tex/latex/base/docstrip.tex index 71df73c3508..a04954ae4a8 100644 --- a/Master/texmf-dist/tex/latex/base/docstrip.tex +++ b/Master/texmf-dist/tex/latex/base/docstrip.tex @@ -44,9 +44,9 @@ \catcode`\{=1 \catcode`\}=2 \def\filename{docstrip.dtx} -\def\fileversion{v2.6a} -\def\filedate{2020-11-23} -\def\docdate {2020-11-23} +\def\fileversion{v2.6b} +\def\filedate{2022-09-03} +\def\docdate {2022-09-03} %% %% The docstrip program for use with TeX. %% Copyright (C) 1989-1991 Frank Mittelbach @@ -54,7 +54,7 @@ %% Frank Mittelbach %% Copyright (C) 1995 Marcin Woli\'nski %% Copyright (C) 1996-1997 Mark Wooding, Marcin Woli\'nski -%% Copyright (C) 1998-2021 LaTeX Project and the above authors. +%% Copyright (C) 1998-2022 LaTeX Project and the above authors. %% All rights are reserved. %% \catcode`\Z=\catcode`\% @@ -422,7 +422,9 @@ Z \maybeMsg{<+#1 . >}% \Evaluate{#1}% \def\do##1##2##3{% - \if1\Expr{##2}\StreamPut##1{#2}\fi + \if1\Expr{##2}% + \def\inLine{#2}\replaceModuleInLine + \StreamPut##1{\inLine}\fi }% \activefiles } @@ -430,7 +432,9 @@ Z \maybeMsg{<-#1 . >}% \Evaluate{#1}% \def\do##1##2##3{% - \if1\Expr{##2}\else \StreamPut##1{#2}\fi + \if1\Expr{##2}\else + \def\inLine{#2}\replaceModuleInLine + \StreamPut##1{\inLine}\fi }% \activefiles } diff --git a/Master/texmf-dist/tex/latex/base/latex.ltx b/Master/texmf-dist/tex/latex/base/latex.ltx index f5fedd82076..f9373b9d8e3 100644 --- a/Master/texmf-dist/tex/latex/base/latex.ltx +++ b/Master/texmf-dist/tex/latex/base/latex.ltx @@ -705,8 +705,8 @@ %%% From File: ltvers.dtx \def\fmtname{LaTeX2e} \edef\fmtversion - {2022-06-01} -\def\patch@level{5} + {2022-11-01} +\def\patch@level{0} \edef\development@branch@name{} \iffalse \def\reserved@a#1/#2/#3\@nil{% @@ -1367,7 +1367,7 @@ \let\@iden\@firstofone \long\def\@thirdofthree#1#2#3{#3} \def\@expandtwoargs#1#2#3{% -\edef\reserved@a{\noexpand#1{#2}{#3}}\reserved@a} +\protected@edef\reserved@a{\noexpand#1{#2}{#3}}\reserved@a} \edef\@backslashchar{\expandafter\@gobble\string\\} \def\@unexpandable@protect{\noexpand\protect\noexpand} \def\DeclareRobustCommand{\@star@or@long\declare@robustcommand} @@ -1731,8 +1731,8 @@ \xdef#1{\the\toks@}% \endgroup} %%% From File: ltcmd.dtx -\def\ltcmdversion{v1.0l} -\def\ltcmddate{2022-03-18} +\def\ltcmdversion{v1.1a} +\def\ltcmddate{2022-08-16} \message{document commands,} \ExplSyntaxOn \tl_new:N \l__cmd_arg_spec_tl @@ -1759,6 +1759,7 @@ \bool_new:N \l__cmd_obey_spaces_bool \tl_new:N \l__cmd_last_delimiters_tl \bool_new:N \l__cmd_long_bool +\bool_new:N \l__cmd_suppress_strip_bool \int_new:N \l__cmd_m_args_int \bool_new:N \l__cmd_prefixed_bool \tl_new:N \l__cmd_process_all_tl @@ -1769,6 +1770,9 @@ \bool_new:N \l__cmd_some_obey_spaces_bool \bool_new:N \l__cmd_some_long_bool \bool_new:N \l__cmd_some_short_bool +\quark_new:N \q__cmd_recursion_tail +\quark_new:N \q__cmd_recursion_stop +\__kernel_quark_new_test:N \__cmd_if_recursion_tail_stop_do:Nn \prop_new:N \l__cmd_tmp_prop \tl_new:N \l__cmd_tmpa_tl \tl_new:N \l__cmd_tmpb_tl @@ -2107,6 +2111,7 @@ \bool_set_true:N \l__cmd_grab_expandably_bool \bool_set_false:N \l__cmd_obey_spaces_bool \bool_set_false:N \l__cmd_long_bool + \bool_set_false:N \l__cmd_suppress_strip_bool \bool_set_false:N \l__cmd_some_obey_spaces_bool \bool_set_false:N \l__cmd_some_long_bool \bool_set_false:N \l__cmd_some_short_bool @@ -2197,30 +2202,48 @@ } \cs_new_protected:cpn { __cmd_normalize_type_+:w } #1 { - \quark_if_recursion_tail_stop_do:nn {#1} { \__cmd_bad_arg_spec:wn } - \bool_if:NT \l__cmd_long_bool + \__cmd_normalize_type_aux:NnNn + {#1} + \l__cmd_long_bool + { \bool_set_true:N \l__cmd_long_bool } + } +\cs_new_protected:cpn { __cmd_normalize_type_!:w } #1 + { + \__cmd_normalize_type_aux:NnNn ! {#1} + \l__cmd_obey_spaces_bool { - \msg_error:nnxx { cmd } { two-markers } - { \__cmd_environment_or_command: } { + } - \__cmd_bad_def:wn + \bool_set_true:N \l__cmd_obey_spaces_bool + \bool_set_true:N \l__cmd_some_obey_spaces_bool } - \bool_set_true:N \l__cmd_long_bool - \int_decr:N \l__cmd_current_arg_int - \__cmd_normalize_arg_spec_loop:n {#1} } -\cs_new_protected:cpn { __cmd_normalize_type_!:w } #1 +\cs_new_protected:cpn { __cmd_normalize_type_=:w } #1#2 + { + \__cmd_normalize_type_aux:NnNn = {#2} + \l__cmd_suppress_strip_bool + { + \bool_if:NT \l__cmd_expandable_bool + { + \msg_error:nnxx { cmd } { keyval-in-expandable } + { \iow_char:N \\ \l__cmd_function_tl } { \tl_to_str:n {#1} } + \__cmd_bad_def:wn + } + \bool_set_true:N \l__cmd_suppress_strip_bool + \bool_set_false:N \l__cmd_grab_expandably_bool + \tl_put_right:Nx \l__cmd_arg_spec_tl + { = { \tl_trim_spaces:n {#1} } } + } + } +\cs_new_protected:Npn \__cmd_normalize_type_aux:NnNn #1#2#3#4 { - \quark_if_recursion_tail_stop_do:nn {#1} { \__cmd_bad_arg_spec:wn } - \bool_if:NT \l__cmd_obey_spaces_bool + \quark_if_recursion_tail_stop_do:nn {#2} { \__cmd_bad_arg_spec:wn } + \bool_if:NT #3 { \msg_error:nnxx { cmd } { two-markers } - { \__cmd_environment_or_command: } { ! } + { \__cmd_environment_or_command: } { #1 } \__cmd_bad_def:wn } - \bool_set_true:N \l__cmd_obey_spaces_bool - \bool_set_true:N \l__cmd_some_obey_spaces_bool + #4 \int_decr:N \l__cmd_current_arg_int - \__cmd_normalize_arg_spec_loop:n {#1} + \__cmd_normalize_arg_spec_loop:n {#2} } \cs_new_protected:Npn \__cmd_normalize_type_D:w #1#2#3 { @@ -2417,6 +2440,7 @@ \int_zero:N \l__cmd_current_arg_int \bool_set_false:N \l__cmd_long_bool \bool_set_false:N \l__cmd_obey_spaces_bool + \bool_set_false:N \l__cmd_suppress_strip_bool \int_zero:N \l__cmd_m_args_int \bool_set_false:N \l__cmd_defaults_bool \tl_clear:N \l__cmd_defaults_tl @@ -2464,6 +2488,16 @@ \tl_put_left:Nn \l__cmd_process_one_tl { {#1} } \__cmd_prepare_signature_bypass:N } +\cs_new_protected:cpn { __cmd_add_type_=:w } #1 + { + \__cmd_flush_m_args: + \bool_set_true:N \l__cmd_prefixed_bool + \bool_set_true:N \l__cmd_suppress_strip_bool + \bool_set_true:N \l__cmd_process_some_bool + \tl_put_left:Nn \l__cmd_process_one_tl + { { \__cmd_arg_to_keyvalue:nn {#1} } } + \__cmd_prepare_signature_bypass:N + } \cs_new_protected:Npn \__cmd_add_type_b:w { \__cmd_flush_m_args: @@ -2554,11 +2588,16 @@ __cmd_grab_ #1 \bool_if:NT \l__cmd_long_bool { _long } \bool_if:NT \l__cmd_obey_spaces_bool { _obey_spaces } + \bool_lazy_and:nnT + { \l__cmd_suppress_strip_bool } + { \str_if_eq_p:nn {#1} { D } } + { _no_strip } :w } } \bool_set_false:N \l__cmd_long_bool \bool_set_false:N \l__cmd_obey_spaces_bool + \bool_set_false:N \l__cmd_suppress_strip_bool \tl_put_right:Nx \l__cmd_process_all_tl { { @@ -2969,7 +3008,7 @@ \quark_if_nil:nF {#1} { \tl_const:cn { c__cmd_show_type_#1_tl } {#2} \__cmd_tmp:w } } -\__cmd_tmp:w t0 r1 d1 R2 D2 O3 e4 E5 +6 !6 >7 \q_nil \q_nil +\__cmd_tmp:w t0 r1 d1 R2 D2 O3 e4 E5 +6 !6 >7 =7 \q_nil \q_nil \cs_new_protected:Npn \__cmd_show_delim:Nw #1 #2 { \__cmd_split_end_item:n { #1 #2 } \__cmd_split_signature_loop:Nw } \cs_new_protected:Npn \__cmd_show_delims:Nw #1 #2 #3 @@ -3030,7 +3069,7 @@ { \__cmd_grab_b_aux:NNw \cs_set_protected:Npn \exp_not:n } \cs_new_protected:Npn \__cmd_grab_b_aux:NNw #1#2#3 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnN \begin \end {#3} #1 + \__cmd_grab_D_aux:NNnNN \begin \end {#3} #1 \use_ii:nn \tl_put_left:Nn \l__cmd_signature_tl { \__cmd_grab_b_end:Nw #2 } \tl_set_eq:NN \l__cmd_saved_args_tl \l__cmd_args_tl \tl_clear:N \l__cmd_args_tl @@ -3049,32 +3088,56 @@ } \cs_new_protected:Npn \__cmd_grab_D:w #1#2#3 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected_nopar:Npn - \__cmd_peek_nonspace_remove:NTF + \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn + \__cmd_peek_nonspace_remove:NTF \use_ii:nn } \cs_new_protected:Npn \__cmd_grab_D_long:w #1#2#3 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected:Npn - \__cmd_peek_nonspace_remove:NTF + \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn + \__cmd_peek_nonspace_remove:NTF \use_ii:nn } \cs_new_protected:Npn \__cmd_grab_D_obey_spaces:w #1#2#3 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected_nopar:Npn - \__cmd_peek_meaning_remove:NTF + \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn + \__cmd_peek_meaning_remove:NTF \use_ii:nn } \cs_new_protected:Npn \__cmd_grab_D_long_obey_spaces:w #1#2#3 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected:Npn - \__cmd_peek_meaning_remove:NTF + \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn + \__cmd_peek_meaning_remove:NTF \use_ii:nn } -\cs_new_protected:Npn \__cmd_grab_D_aux:NNnNN #1#2#3#4#5 +\cs_new_protected:Npn \__cmd_grab_D_no_strip:w + #1#2#3 \__cmd_run_code: + { + \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn + \__cmd_peek_nonspace_remove:NTF \use_none:n + } +\cs_new_protected:Npn \__cmd_grab_D_long_no_strip:w + #1#2#3 \__cmd_run_code: + { + \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn + \__cmd_peek_nonspace_remove:NTF \use_none:n + } +\cs_new_protected:Npn \__cmd_grab_D_obey_spaces_no_strip:w + #1#2#3 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnN #1#2 {#3} #4 + \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn + \__cmd_peek_meaning_remove:NTF \use_none:n + } +\cs_new_protected:Npn \__cmd_grab_D_long_obey_spaces_no_strip:w + #1#2#3 \__cmd_run_code: + { + \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn + \__cmd_peek_meaning_remove:NTF \use_none:n + } +\cs_new_protected:Npn \__cmd_grab_D_aux:NNnNNN #1#2#3#4#5#6 + { + \__cmd_grab_D_aux:NNnNN #1#2 {#3} #4 #6 #5 #1 { \__cmd_grab_D_call:Nw #1 } { \__cmd_add_arg:o \c_novalue_tl } } -\cs_new_protected:Npn \__cmd_grab_D_aux:NNnN #1#2#3#4 +\cs_new_protected:Npn \__cmd_grab_D_aux:NNnNN #1#2#3#4#5 { \tl_set:Nn \l__cmd_signature_tl {#3} \exp_after:wN #4 \l__cmd_fn_tl ##1 #2 @@ -3088,7 +3151,7 @@ \str_if_eq:eeTF { \exp_not:o { \use_none:n ##1 } } { { \exp_not:o { \use_ii:nnn ##1 \q_nil } } } - { \__cmd_add_arg:o { \use_ii:nn ##1 } } + { \__cmd_add_arg:o { #5 ##1 } } { \__cmd_add_arg:o { \use_none:n ##1 } } } } @@ -3286,7 +3349,7 @@ { \__cmd_grab_R_aux:NNnN #1 #2 {#3} \cs_set_protected:Npn } \cs_new_protected:Npn \__cmd_grab_R_aux:NNnN #1#2#3#4 { - \__cmd_grab_D_aux:NNnN #1 #2 {#3} #4 + \__cmd_grab_D_aux:NNnNN #1 #2 {#3} #4 \use_ii:nn \__cmd_peek_nonspace_remove:NTF #1 { \__cmd_grab_D_call:Nw #1 } { @@ -3742,6 +3805,121 @@ } \cs_new_protected:Npn \__cmd_trim_spaces:n #1 { \tl_set:Nx \ProcessedArgument { \tl_trim_spaces:n {#1} } } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue:nn #1#2 + { + \tl_trim_spaces_apply:nN {#2} \__cmd_arg_to_keyvalue_braces:nnn + {#1} {#2} + } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_braces:nnn #1#2#3 + { + \tl_if_head_is_group:nT {#1} + { + \tl_if_blank:oT { \use_none:n #1 } + { + \tl_set:Nx \ProcessedArgument { #2 = { \exp_not:n #1 } } + \use_none:nnnn + } + } + \__cmd_arg_to_keyvalue_auxi:nnn {#1} {#2} {#3} + } +\cs_new:Npn \__cmd_arg_to_keyvalue_auxi:nnn #1 + { + \tl_if_head_is_N_type:nTF {#1} + { \__cmd_split_N_head_apply:Nn \__cmd_arg_to_keyvalue_auxii:Nnnn {#1} } + { \__cmd_arg_to_keyvalue_auxv:nn } + } +\cs_new:Npn \__cmd_arg_to_keyvalue_auxii:Nnnn #1#2 + { + \str_if_eq:eeTF { \exp_not:n {#1} } { = } + { \tl_trim_spaces_apply:nN {#2} \__cmd_arg_to_keyvalue_auxiii:nnn } + { \__cmd_arg_to_keyvalue_auxv:nn } + } +\cs_new:Npn \__cmd_arg_to_keyvalue_auxiii:nnn #1 + { + \tl_if_head_is_N_type:nTF {#1} + { \__cmd_split_N_head_apply:Nn \__cmd_arg_to_keyvalue_auxiv:Nnnn {#1} } + { \__cmd_arg_to_keyvalue_auxv:nn } + } +\cs_new:Npn \__cmd_arg_to_keyvalue_auxiv:Nnnn #1#2 + { + \str_if_eq:eeTF { \exp_not:n {#1} } { , } + { \tl_set:Nn \ProcessedArgument {#2} \use_none:nn } + { \__cmd_arg_to_keyvalue_auxv:nn } + } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_auxv:nn #1#2 + { + \__cmd_arg_to_keyvalue_loop:w #2 + \q__cmd_recursion_tail \q__cmd_recursion_stop {#1} {#2} + } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_loop:w #1 \q__cmd_recursion_stop + { + \tl_if_head_is_N_type:nTF {#1} + { \__cmd_arg_to_keyvalue_loop_N_type:N } + { + \tl_if_head_is_group:nTF {#1} + { \__cmd_arg_to_keyvalue_loop_group:n } + { \__cmd_arg_to_keyvalue_loop_space:w } + } + #1 \q__cmd_recursion_stop + } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_loop_group:n #1 + { \__cmd_arg_to_keyvalue_loop:w } +\use:n { \cs_new_protected:Npn \__cmd_arg_to_keyvalue_loop_space:w } ~ + { \__cmd_arg_to_keyvalue_loop:w } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_loop_N_type:N #1 + { + \__cmd_if_recursion_tail_stop_do:Nn #1 + { \__cmd_arg_to_keyvalue_set_default:nn } + \str_if_eq:nnTF {#1} { = } + { + \__cmd_use_i_delimit_by_q_recursion_stop:nw + { \__cmd_arg_to_keyvalue_set_keyvalue:nn } + } + { + \bool_lazy_or:nnTF + { \token_if_math_toggle_p:N #1 } + { \str_if_eq_p:nn {#1} { \( } } + { \__cmd_arg_to_keyvalue_math:w } + { \__cmd_arg_to_keyvalue_loop:w } + } + } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_math:w #1 \q__cmd_recursion_stop + { + \tl_if_head_is_N_type:nTF {#1} + { \__cmd_arg_to_keyvalue_math_N_type:N } + { + \tl_if_head_is_group:nTF {#1} + { \__cmd_arg_to_keyvalue_math_group:n } + { \__cmd_arg_to_keyvalue_math_space:w } + } + #1 \q__cmd_recursion_stop + } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_math_N_type:N #1 + { + \__cmd_if_recursion_tail_stop_do:Nn #1 + { \__cmd_arg_to_keyvalue_set_default:nn } + \bool_lazy_or:nnTF + { \token_if_math_toggle_p:N #1 } + { \str_if_eq_p:nn {#1} { \) } } + { \__cmd_arg_to_keyvalue_loop:w } + { \__cmd_arg_to_keyvalue_math:w } + } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_math_group:n #1 + { \__cmd_arg_to_keyvalue_math:w } +\use:n { \cs_new_protected:Npn \__cmd_arg_to_keyvalue_math_space:w } ~ + { \__cmd_arg_to_keyvalue_math:w } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_set_default:nn #1#2 + { \tl_set:Nn \ProcessedArgument { #1 = {#2} } } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_set_keyvalue:nn #1#2 + { \tl_set:Nn \ProcessedArgument {#2} } +\cs_new:Npn \__cmd_split_N_head_apply:Nn #1#2 + { \exp:w \if_false: { \fi: \__cmd_split_N_head_apply_aux:NNw #1#2 } } +\cs_new:Npn \__cmd_split_N_head_apply_aux:NNw #1#2 + { + \exp_after:wN \exp_end: + \exp_after:wN #1 \exp_after:wN #2 \exp_after:wN { \if_false: } \fi: + } + \cs_new_protected:Npn \__cmd_get_arg_spec_error:N #1 { \bool_set_false:N \l__cmd_environment_bool @@ -4085,6 +4263,13 @@ This~is~only~supported~for~robust~commands,~but~not~for~expandable~ones. \c__cmd_ignore_def_tl } +\msg_new:nnnn { cmd } { keyval-in-expandable } + { Invalid~argument~prefix~'='~in~command~'#1'. } + { + The~argument~specification~for~'#1'~contains~a~key--value~marker~'={#2}'.~ + This~is~only~supported~for~robust~commands,~but~not~for~expandable~ones. + \c__cmd_ignore_def_tl + } \msg_new:nnnn { cmd } { too-many-args } { Too~many~arguments~for~#1. } { @@ -9072,12 +9257,6 @@ Type H <return> for immediate help.}% (local:~ \int_use:N\c@localmathalphabets) } \cs_gset_eq:cc { mv@#1@frozen }{ mv@#1 } \tl_gset:cx { g__nfss_frozen_mv_ #1 _tl }{ \int_use:c { c@mv@#1 } } - \group_insert_after:N \__nfss_init_mv_freeze:N - \exp_after:wN \group_insert_after:N \cs:w mv@#1@reset \cs_end: - \tl_gput_right:No \check@mathfonts - { - \exp_after:wN \group_insert_after:N \cs:w mv@#1@reset \cs_end: - } \cs_gset:cpn{mv@#1@reset} { \int_compare:nNnTF { \int_use:c{c@mv@#1} } > @@ -9097,10 +9276,6 @@ Type H <return> for immediate help.}% \if@ignore \ignorespaces \fi } } -\cs_new_protected:Npn \__nfss_init_mv_freeze:N #1 {% - \mode_if_math:T { \group_insert_after:N \__nfss_init_mv_freeze:N - \group_insert_after:N } #1 -} \ExplSyntaxOff \def\process@table{% \def\cdp@elt##1##2##3##4{% @@ -9148,6 +9323,11 @@ Type H <return> for immediate help.}% \@onlypreamble\process@table \def\DeclareMathVersion#1{% \@namedef{g__nfss_frozen_mv_#1_tl}{}% + \expandafter\ifx\csname mv@#1\endcsname \relax + \expandafter \g@addto@macro \expandafter \check@mathfonts + \expandafter {\expandafter \aftergroup \csname mv@#1@reset\endcsname}% + \@namedef{mv@#1@reset}{}% + \fi \expandafter\new@mathversion\csname mv@#1\endcsname} \@onlypreamble\DeclareMathVersion \def\new@mathversion#1{% @@ -9182,7 +9362,13 @@ Type H <return> for immediate help.}% \xdef#1{\the\toks@}% } \@onlypreamble\new@mathversion -\def\DeclareSymbolFont#1#2#3#4#5{% +\def\DeclareSymbolFont #1#2#3#4#5{% + \def\reserved@a{\DeclareSymbolFont@m@dropped{#1}{#2}{#3}}% + \edef\reserved@b{#4}% + \series@maybe@drop@one@m\reserved@b\reserved@b + \expandafter\reserved@a\expandafter{\reserved@b}{#5}% +} +\def\DeclareSymbolFont@m@dropped #1#2#3#4#5{% \@tempswafalse \edef\reserved@b{#2}% \def\cdp@elt##1##2##3##4{\def\reserved@c{##1}% @@ -9237,7 +9423,13 @@ Type H <return> for immediate help.}% \version@list } \@onlypreamble\new@symbolfont -\def\SetSymbolFont#1#2#3#4#5#6{% +\def\SetSymbolFont #1#2#3#4#5#6{% + \def\reserved@a{\SetSymbolFont@m@dropped{#1}{#2}{#3}{#4}}% + \edef\reserved@b{#5}% + \series@maybe@drop@one@m\reserved@b\reserved@b + \expandafter\reserved@a\expandafter{\reserved@b}{#6}% +} +\def\SetSymbolFont@m@dropped#1#2#3#4#5#6{% \@tempswafalse \edef\reserved@b{#3}% \def\cdp@elt##1##2##3##4{\def\reserved@c{##1}% @@ -10407,7 +10599,7 @@ Type H <return> for immediate help.}% \@ifundefined{#1:#2}% {\@font@info{Setting #2 sub-encoding to #1/#3}}% {\@font@info{Changing #2 sub-encoding to #1/#3}}% - \@namedef{#1:#2}{#3}} + \global\@namedef{#1:#2}{#3}} \@onlypreamble\DeclareEncodingSubset \@onlypreamble\DeclareEncodingSubset@aux \@onlypreamble\@DeclareEncodingSubset @@ -11380,7 +11572,8 @@ Type H <return> for immediate help.}% \def\makesm@sh#1{% \setbox\z@\hbox{\color@begingroup#1\color@endgroup}\finsm@sh} \def\mathsm@sh#1#2{% - \setbox\z@\hbox{$\m@th#1{#2}$}\finsm@sh} + \setbox\z@\hbox{$\m@th#1{#2}$}% + {}\finsm@sh} \def\finsm@sh{\ht\z@\z@ \dp\z@\z@ \leavevmode@ifvmode\box\z@} \def\buildrel#1\over#2{\mathrel{\mathop{\kern\z@#2}\limits^{#1}}} \DeclareRobustCommand*\cases[1]{\left\{\,\vcenter{\normalbaselines\m@th @@ -11998,6 +12191,7 @@ Type H <return> for immediate help.}% \def\@minipagefalse{\global\let\if@minipage\iffalse} \def\@minipagetrue {\global\let\if@minipage\iftrue} \@minipagefalse +\newif\if@in@minipage@env \def\minipage{% \@ifnextchar[%] \@iminipage @@ -12019,6 +12213,14 @@ Type H <return> for immediate help.}% \color@begingroup \hsize\@tempdima \textwidth\hsize \columnwidth\hsize + \if@in@minipage@env + \ifvoid\@mpfootins\else + \@latex@warning{Nested minipage: + footnotes may be misplaced}% + \fi + \else + \@in@minipage@envtrue + \fi \@parboxrestore \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@ \let\@footnotetext\@mpfootnotetext @@ -14055,7 +14257,7 @@ Type H <return> for immediate help.}% {\@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{% + \expandafter\protected@xdef\csname opt@\reserved@a\endcsname{% \@ifundefined{opt@\reserved@a}\@empty {\csname opt@\reserved@a\endcsname,}% \zap@space#2 \@empty}% @@ -14096,7 +14298,7 @@ Type H <return> for immediate help.}% \@onlypreamble\OptionNotUsed \def\ProcessOptions{% \let\ds@\@empty - \edef\@curroptions{\@ptionlist{\@currname.\@currext}}% + \protected@edef\@curroptions{\@ptionlist{\@currname.\@currext}}% \@ifstar\@xprocess@ptions\@process@ptions} \@onlypreamble\ProcessOptions \def\@process@ptions{% @@ -14117,7 +14319,7 @@ Type H <return> for immediate help.}% \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 }% @@ -14128,7 +14330,7 @@ Type H <return> for immediate help.}% \@onlypreamble\@xprocess@ptions \def\@process@pti@ns{% \@for\CurrentOption:=\@curroptions\do{% - \@ifundefined{ds@\CurrentOption}% + \@ifundefined{ds@\detokenize\expandafter{\CurrentOption}}% {\@use@ption \default@ds}% \@use@ption}% @@ -14146,7 +14348,7 @@ Type H <return> for immediate help.}% \@expandtwoargs\@removeelement {\expandafter\@remove@eq@value\CurrentOption=\@nil}% \@unusedoptionlist\@unusedoptionlist - \csname ds@\CurrentOption\endcsname} + \csname ds@\detokenize\expandafter{\CurrentOption}\endcsname} \@onlypreamble\@use@ption \def\ExecuteOptions#1{% \edef\@fortmp{\zap@space#1 \@empty}% @@ -14243,7 +14445,7 @@ Type H <return> for immediate help.}% \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}% \gdef\@raw@classoptionslist{#2}% \def\reserved@a{% \@onefilewithoptions#3[{#2}][{#4}]#1% @@ -14278,15 +14480,13 @@ Type H <return> for immediate help.}% \global\let\@currext#4% \@ifl@aded\@currext\@currname {% - \@ifundefined{opt@fam@\@currname.\@currext} + \@ifundefined{opt@handler@\@currname.\@currext} {\@onefilewithoptions@clashchk{#2}} {% - \expandafter\edef\csname opt@\@currname.\@currext\endcsname + \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 @@ -14447,7 +14647,7 @@ Type H <return> for immediate help.}% \@onlypreamble\@unknownoptionerror \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} @@ -14816,6 +15016,7 @@ Type H <return> for immediate help.}% \__keys_tmp:nn { code:n } { code } { legacy_if_set:n } { if } + { legacy_if_set_inverse:n } { ifnot } { tl_set:N } { store } { usage:n } { usage } { \q_recursion_tail } { } @@ -14828,7 +15029,8 @@ Type H <return> for immediate help.}% { \__keys_options_expand_module:Nn \__keys_options_aux:n {#1} } \cs_new_protected:Npn \__keys_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 \__keys_option_end: { } \clist_clear:N \l__keys_options_clist \__keys_options_global:n {#1} @@ -14858,7 +15060,7 @@ Type H <return> for immediate help.}% { Unknown~option~'#1'~for~package~#2. } { LaTeX~has~been~asked~to~set~an~option~called~'#1'~ - but~the~#2~package~has~not~created~an~option~with~this~name. + but~the~package~"\msg_module_name:n {#2}"~has~not~created~an~option~with~this~name. } \cs_new_protected:Npn \__keys_options_global:n #1 { @@ -14891,11 +15093,12 @@ Type H <return> for immediate help.}% \cs_new_protected:Npn \__keys_options_class:nnn #1#2#3 { \keys_if_exist:nnTF {#3} {#1} - { \clist_put_right:Nn \l__keys_options_clist {#2} } { - \str_if_eq:eeF - { \exp_not:v { @raw@opt@ \@currname . \@currext } } - { \exp_not:V \@raw@classoptionslist } + \clist_put_right:Nn \l__keys_options_clist {#2} + \clist_remove_all:Nn \@unusedoptionlist {#1} + } + { + \clist_if_in:NnF \@unusedoptionlist {#1} { \clist_put_right:Nn \@unusedoptionlist {#1} } } } @@ -14970,19 +15173,23 @@ Type H <return> for immediate help.}% \cs_new_protected:Npn \__keys_options_loaded:nn #1#2 { \bool_if:NTF \l__keys_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} } \msg_new:nnn { keys } { load-option-ignored } - { Package~"#1"~has~already~been~loaded:~ignoring~load-time~option~"#2". } + { + Package~"\msg_module_name:n {#1}"~has~already~been~loaded:~ + ignoring~load-time~option~"#2". + } \msg_new:nnnn { keys } { load-only } - { Key~"#2"~may~only~be~used~in~the~during~loading~of~package~"#1". } + { + Key~"#2"~may~only~be~used~during~loading~of~package~ + "\msg_module_name:n {#1}". + } { LaTeX~was~asked~to~set~a~key~called~"#2",~but~this~is~only~allowed~ - in~the~optional~argument~when~loading~package~"#1". + in~the~optional~argument~when~loading~package~"\msg_module_name:n{#1}". } \tl_gput_left:Nn \@kernel@after@begindocument { @@ -15008,8 +15215,8 @@ Type H <return> for immediate help.}% { \__keys_options_expand_module:Nn \keys_set:nn {#1} {#2} } \ExplSyntaxOff %%% From File: ltfilehook.dtx -\providecommand\ltfilehookversion{v1.0m} -\providecommand\ltfilehookdate{2022/04/01} +\providecommand\ltfilehookversion{v1.0n} +\providecommand\ltfilehookdate{2022/08/18} \ExplSyntaxOn \tl_new:N \CurrentFile \tl_new:N \CurrentFilePath @@ -15262,8 +15469,12 @@ Type H <return> for immediate help.}% \def\disable@package@load#1#2{% \global\@namedef{@pkg-disable@#1.\@pkgextension}{#2}} \def\@disable@packageload@do#1#2{% - \@ifundefined{@pkg-disable@#1}{#2}% - {\@nameuse{@pkg-disable@#1}}} + \@ifundefined{@pkg-disable@#1}% + {#2}% + {\@nameuse{@pkg-disable@#1}% + \@latex@info{Package '#1' has been disabled.% + \MessageBreak Load request ignored}% + \expandafter\@gobbletwo}} \def\reenable@package@load#1{% \global\expandafter\let \csname @pkg-disable@#1.\@pkgextension \endcsname \@undefined} @@ -15297,8 +15508,7 @@ Type H <return> for immediate help.}% %% %%% From File: ltshipout.dtx \providecommand\ltshipoutversion{v1.0m} -\providecommand\ltshipoutdate{2022/05/08} - % \cs{AtBeginDvi} is the existing \LaTeXe{} interface to fill the +\providecommand\ltshipoutdate{2022/08/26} \ExplSyntaxOn \bool_new:N \g__shipout_debug_bool \cs_new_eq:NN \__shipout_debug:n \use_none:n @@ -15798,6 +16008,8 @@ Type H <return> for immediate help.}% \@maxdepth = \maxdepth \newdimen\paperheight \newdimen\paperwidth +\newdimen\stockheight +\newdimen\stockwidth \newif \if@insert \newif \if@fcolmade \newif \if@specialpage \@specialpagefalse @@ -17137,12 +17349,50 @@ Type H <return> for immediate help.}% \lccode`\^^[=`\^^[ % oe in OT1 \fi % End of reset block for 8-bit engines \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 } +\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 } \cs_new_protected_nopar:Npn\AddToNoCaseChangeList {\tl_put_right:Nn \l_text_case_exclude_arg_tl} \AddToNoCaseChangeList{ \NoCaseChange } diff --git a/Master/texmf-dist/tex/latex/base/latexrelease.sty b/Master/texmf-dist/tex/latex/base/latexrelease.sty index 33493b9bef5..142e0103d19 100644 --- a/Master/texmf-dist/tex/latex/base/latexrelease.sty +++ b/Master/texmf-dist/tex/latex/base/latexrelease.sty @@ -290,7 +290,7 @@ } %%% From File: ltvers.dtx \edef\latexreleaseversion - {2022-06-01} + {2022-11-01} \newif\if@includeinrelease \@includeinreleasefalse \def\IncludeInRelease#1{% @@ -1430,6 +1430,16 @@ of this package available from CTAN} \IncludeInRelease{0000/00/00}{\@carcube}{Undo: Make \@carcube long}% \def\@carcube#1#2#3#4\@nil{#1#2#3} \EndIncludeInRelease +\IncludeInRelease{2022/11/01}% + {\@expandtwoargs}{protected edef}% +\def\@expandtwoargs#1#2#3{% +\protected@edef\reserved@a{\noexpand#1{#2}{#3}}\reserved@a} +\EndIncludeInRelease +\IncludeInRelease{00/00/00}% + {\@expandtwoargs}{protected edef}% +\def\@expandtwoargs#1#2#3{% +\edef\reserved@a{\noexpand#1{#2}{#3}}\reserved@a} +\EndIncludeInRelease \IncludeInRelease{2020/10/01}{\MakeRobust}{\MakeRobust}% \def\MakeRobust#1{% \count@=\escapechar @@ -1890,8 +1900,8 @@ of this package available from CTAN} \EndIncludeInRelease %%% From File: ltcmd.dtx -\def\ltcmdversion{v1.0l} -\def\ltcmddate{2022-03-18} +\def\ltcmdversion{v1.1a} +\def\ltcmddate{2022-08-16} \edef\@latexrelease@catcode@null{\the\catcode`\^^@ } \catcode`\^^@=12 \ExplSyntaxOn @@ -1921,6 +1931,7 @@ of this package available from CTAN} \bool_new:N \l__cmd_obey_spaces_bool \tl_new:N \l__cmd_last_delimiters_tl \bool_new:N \l__cmd_long_bool +\bool_new:N \l__cmd_suppress_strip_bool \int_new:N \l__cmd_m_args_int \bool_new:N \l__cmd_prefixed_bool \tl_new:N \l__cmd_process_all_tl @@ -1931,6 +1942,9 @@ of this package available from CTAN} \bool_new:N \l__cmd_some_obey_spaces_bool \bool_new:N \l__cmd_some_long_bool \bool_new:N \l__cmd_some_short_bool +\quark_new:N \q__cmd_recursion_tail +\quark_new:N \q__cmd_recursion_stop +\__kernel_quark_new_test:N \__cmd_if_recursion_tail_stop_do:Nn \prop_new:N \l__cmd_tmp_prop \tl_new:N \l__cmd_tmpa_tl \tl_new:N \l__cmd_tmpb_tl @@ -2269,6 +2283,7 @@ of this package available from CTAN} \bool_set_true:N \l__cmd_grab_expandably_bool \bool_set_false:N \l__cmd_obey_spaces_bool \bool_set_false:N \l__cmd_long_bool + \bool_set_false:N \l__cmd_suppress_strip_bool \bool_set_false:N \l__cmd_some_obey_spaces_bool \bool_set_false:N \l__cmd_some_long_bool \bool_set_false:N \l__cmd_some_short_bool @@ -2359,30 +2374,48 @@ of this package available from CTAN} } \cs_new_protected:cpn { __cmd_normalize_type_+:w } #1 { - \quark_if_recursion_tail_stop_do:nn {#1} { \__cmd_bad_arg_spec:wn } - \bool_if:NT \l__cmd_long_bool + \__cmd_normalize_type_aux:NnNn + {#1} + \l__cmd_long_bool + { \bool_set_true:N \l__cmd_long_bool } + } +\cs_new_protected:cpn { __cmd_normalize_type_!:w } #1 + { + \__cmd_normalize_type_aux:NnNn ! {#1} + \l__cmd_obey_spaces_bool { - \msg_error:nnxx { cmd } { two-markers } - { \__cmd_environment_or_command: } { + } - \__cmd_bad_def:wn + \bool_set_true:N \l__cmd_obey_spaces_bool + \bool_set_true:N \l__cmd_some_obey_spaces_bool } - \bool_set_true:N \l__cmd_long_bool - \int_decr:N \l__cmd_current_arg_int - \__cmd_normalize_arg_spec_loop:n {#1} } -\cs_new_protected:cpn { __cmd_normalize_type_!:w } #1 +\cs_new_protected:cpn { __cmd_normalize_type_=:w } #1#2 + { + \__cmd_normalize_type_aux:NnNn = {#2} + \l__cmd_suppress_strip_bool + { + \bool_if:NT \l__cmd_expandable_bool + { + \msg_error:nnxx { cmd } { keyval-in-expandable } + { \iow_char:N \\ \l__cmd_function_tl } { \tl_to_str:n {#1} } + \__cmd_bad_def:wn + } + \bool_set_true:N \l__cmd_suppress_strip_bool + \bool_set_false:N \l__cmd_grab_expandably_bool + \tl_put_right:Nx \l__cmd_arg_spec_tl + { = { \tl_trim_spaces:n {#1} } } + } + } +\cs_new_protected:Npn \__cmd_normalize_type_aux:NnNn #1#2#3#4 { - \quark_if_recursion_tail_stop_do:nn {#1} { \__cmd_bad_arg_spec:wn } - \bool_if:NT \l__cmd_obey_spaces_bool + \quark_if_recursion_tail_stop_do:nn {#2} { \__cmd_bad_arg_spec:wn } + \bool_if:NT #3 { \msg_error:nnxx { cmd } { two-markers } - { \__cmd_environment_or_command: } { ! } + { \__cmd_environment_or_command: } { #1 } \__cmd_bad_def:wn } - \bool_set_true:N \l__cmd_obey_spaces_bool - \bool_set_true:N \l__cmd_some_obey_spaces_bool + #4 \int_decr:N \l__cmd_current_arg_int - \__cmd_normalize_arg_spec_loop:n {#1} + \__cmd_normalize_arg_spec_loop:n {#2} } \cs_new_protected:Npn \__cmd_normalize_type_D:w #1#2#3 { @@ -2579,6 +2612,7 @@ of this package available from CTAN} \int_zero:N \l__cmd_current_arg_int \bool_set_false:N \l__cmd_long_bool \bool_set_false:N \l__cmd_obey_spaces_bool + \bool_set_false:N \l__cmd_suppress_strip_bool \int_zero:N \l__cmd_m_args_int \bool_set_false:N \l__cmd_defaults_bool \tl_clear:N \l__cmd_defaults_tl @@ -2626,6 +2660,16 @@ of this package available from CTAN} \tl_put_left:Nn \l__cmd_process_one_tl { {#1} } \__cmd_prepare_signature_bypass:N } +\cs_new_protected:cpn { __cmd_add_type_=:w } #1 + { + \__cmd_flush_m_args: + \bool_set_true:N \l__cmd_prefixed_bool + \bool_set_true:N \l__cmd_suppress_strip_bool + \bool_set_true:N \l__cmd_process_some_bool + \tl_put_left:Nn \l__cmd_process_one_tl + { { \__cmd_arg_to_keyvalue:nn {#1} } } + \__cmd_prepare_signature_bypass:N + } \cs_new_protected:Npn \__cmd_add_type_b:w { \__cmd_flush_m_args: @@ -2716,11 +2760,16 @@ of this package available from CTAN} __cmd_grab_ #1 \bool_if:NT \l__cmd_long_bool { _long } \bool_if:NT \l__cmd_obey_spaces_bool { _obey_spaces } + \bool_lazy_and:nnT + { \l__cmd_suppress_strip_bool } + { \str_if_eq_p:nn {#1} { D } } + { _no_strip } :w } } \bool_set_false:N \l__cmd_long_bool \bool_set_false:N \l__cmd_obey_spaces_bool + \bool_set_false:N \l__cmd_suppress_strip_bool \tl_put_right:Nx \l__cmd_process_all_tl { { @@ -3139,7 +3188,7 @@ of this package available from CTAN} \quark_if_nil:nF {#1} { \tl_const:cn { c__cmd_show_type_#1_tl } {#2} \__cmd_tmp:w } } -\__cmd_tmp:w t0 r1 d1 R2 D2 O3 e4 E5 +6 !6 >7 \q_nil \q_nil +\__cmd_tmp:w t0 r1 d1 R2 D2 O3 e4 E5 +6 !6 >7 =7 \q_nil \q_nil \cs_new_protected:Npn \__cmd_show_delim:Nw #1 #2 { \__cmd_split_end_item:n { #1 #2 } \__cmd_split_signature_loop:Nw } \cs_new_protected:Npn \__cmd_show_delims:Nw #1 #2 #3 @@ -3204,7 +3253,7 @@ of this package available from CTAN} { \__cmd_grab_b_aux:NNw \cs_set_protected:Npn \exp_not:n } \cs_new_protected:Npn \__cmd_grab_b_aux:NNw #1#2#3 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnN \begin \end {#3} #1 + \__cmd_grab_D_aux:NNnNN \begin \end {#3} #1 \use_ii:nn \tl_put_left:Nn \l__cmd_signature_tl { \__cmd_grab_b_end:Nw #2 } \tl_set_eq:NN \l__cmd_saved_args_tl \l__cmd_args_tl \tl_clear:N \l__cmd_args_tl @@ -3223,32 +3272,56 @@ of this package available from CTAN} } \cs_new_protected:Npn \__cmd_grab_D:w #1#2#3 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected_nopar:Npn - \__cmd_peek_nonspace_remove:NTF + \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn + \__cmd_peek_nonspace_remove:NTF \use_ii:nn } \cs_new_protected:Npn \__cmd_grab_D_long:w #1#2#3 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected:Npn - \__cmd_peek_nonspace_remove:NTF + \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn + \__cmd_peek_nonspace_remove:NTF \use_ii:nn } \cs_new_protected:Npn \__cmd_grab_D_obey_spaces:w #1#2#3 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected_nopar:Npn - \__cmd_peek_meaning_remove:NTF + \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn + \__cmd_peek_meaning_remove:NTF \use_ii:nn } \cs_new_protected:Npn \__cmd_grab_D_long_obey_spaces:w #1#2#3 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected:Npn - \__cmd_peek_meaning_remove:NTF + \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn + \__cmd_peek_meaning_remove:NTF \use_ii:nn } -\cs_new_protected:Npn \__cmd_grab_D_aux:NNnNN #1#2#3#4#5 +\cs_new_protected:Npn \__cmd_grab_D_no_strip:w + #1#2#3 \__cmd_run_code: + { + \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn + \__cmd_peek_nonspace_remove:NTF \use_none:n + } +\cs_new_protected:Npn \__cmd_grab_D_long_no_strip:w + #1#2#3 \__cmd_run_code: { - \__cmd_grab_D_aux:NNnN #1#2 {#3} #4 + \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn + \__cmd_peek_nonspace_remove:NTF \use_none:n + } +\cs_new_protected:Npn \__cmd_grab_D_obey_spaces_no_strip:w + #1#2#3 \__cmd_run_code: + { + \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected_nopar:Npn + \__cmd_peek_meaning_remove:NTF \use_none:n + } +\cs_new_protected:Npn \__cmd_grab_D_long_obey_spaces_no_strip:w + #1#2#3 \__cmd_run_code: + { + \__cmd_grab_D_aux:NNnNNN #1 #2 {#3} \cs_set_protected:Npn + \__cmd_peek_meaning_remove:NTF \use_none:n + } +\cs_new_protected:Npn \__cmd_grab_D_aux:NNnNNN #1#2#3#4#5#6 + { + \__cmd_grab_D_aux:NNnNN #1#2 {#3} #4 #6 #5 #1 { \__cmd_grab_D_call:Nw #1 } { \__cmd_add_arg:o \c_novalue_tl } } -\cs_new_protected:Npn \__cmd_grab_D_aux:NNnN #1#2#3#4 +\cs_new_protected:Npn \__cmd_grab_D_aux:NNnNN #1#2#3#4#5 { \tl_set:Nn \l__cmd_signature_tl {#3} \exp_after:wN #4 \l__cmd_fn_tl ##1 #2 @@ -3262,7 +3335,7 @@ of this package available from CTAN} \str_if_eq:eeTF { \exp_not:o { \use_none:n ##1 } } { { \exp_not:o { \use_ii:nnn ##1 \q_nil } } } - { \__cmd_add_arg:o { \use_ii:nn ##1 } } + { \__cmd_add_arg:o { #5 ##1 } } { \__cmd_add_arg:o { \use_none:n ##1 } } } } @@ -3460,7 +3533,7 @@ of this package available from CTAN} { \__cmd_grab_R_aux:NNnN #1 #2 {#3} \cs_set_protected:Npn } \cs_new_protected:Npn \__cmd_grab_R_aux:NNnN #1#2#3#4 { - \__cmd_grab_D_aux:NNnN #1 #2 {#3} #4 + \__cmd_grab_D_aux:NNnNN #1 #2 {#3} #4 \use_ii:nn \__cmd_peek_nonspace_remove:NTF #1 { \__cmd_grab_D_call:Nw #1 } { @@ -3916,6 +3989,121 @@ of this package available from CTAN} } \cs_new_protected:Npn \__cmd_trim_spaces:n #1 { \tl_set:Nx \ProcessedArgument { \tl_trim_spaces:n {#1} } } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue:nn #1#2 + { + \tl_trim_spaces_apply:nN {#2} \__cmd_arg_to_keyvalue_braces:nnn + {#1} {#2} + } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_braces:nnn #1#2#3 + { + \tl_if_head_is_group:nT {#1} + { + \tl_if_blank:oT { \use_none:n #1 } + { + \tl_set:Nx \ProcessedArgument { #2 = { \exp_not:n #1 } } + \use_none:nnnn + } + } + \__cmd_arg_to_keyvalue_auxi:nnn {#1} {#2} {#3} + } +\cs_new:Npn \__cmd_arg_to_keyvalue_auxi:nnn #1 + { + \tl_if_head_is_N_type:nTF {#1} + { \__cmd_split_N_head_apply:Nn \__cmd_arg_to_keyvalue_auxii:Nnnn {#1} } + { \__cmd_arg_to_keyvalue_auxv:nn } + } +\cs_new:Npn \__cmd_arg_to_keyvalue_auxii:Nnnn #1#2 + { + \str_if_eq:eeTF { \exp_not:n {#1} } { = } + { \tl_trim_spaces_apply:nN {#2} \__cmd_arg_to_keyvalue_auxiii:nnn } + { \__cmd_arg_to_keyvalue_auxv:nn } + } +\cs_new:Npn \__cmd_arg_to_keyvalue_auxiii:nnn #1 + { + \tl_if_head_is_N_type:nTF {#1} + { \__cmd_split_N_head_apply:Nn \__cmd_arg_to_keyvalue_auxiv:Nnnn {#1} } + { \__cmd_arg_to_keyvalue_auxv:nn } + } +\cs_new:Npn \__cmd_arg_to_keyvalue_auxiv:Nnnn #1#2 + { + \str_if_eq:eeTF { \exp_not:n {#1} } { , } + { \tl_set:Nn \ProcessedArgument {#2} \use_none:nn } + { \__cmd_arg_to_keyvalue_auxv:nn } + } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_auxv:nn #1#2 + { + \__cmd_arg_to_keyvalue_loop:w #2 + \q__cmd_recursion_tail \q__cmd_recursion_stop {#1} {#2} + } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_loop:w #1 \q__cmd_recursion_stop + { + \tl_if_head_is_N_type:nTF {#1} + { \__cmd_arg_to_keyvalue_loop_N_type:N } + { + \tl_if_head_is_group:nTF {#1} + { \__cmd_arg_to_keyvalue_loop_group:n } + { \__cmd_arg_to_keyvalue_loop_space:w } + } + #1 \q__cmd_recursion_stop + } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_loop_group:n #1 + { \__cmd_arg_to_keyvalue_loop:w } +\use:n { \cs_new_protected:Npn \__cmd_arg_to_keyvalue_loop_space:w } ~ + { \__cmd_arg_to_keyvalue_loop:w } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_loop_N_type:N #1 + { + \__cmd_if_recursion_tail_stop_do:Nn #1 + { \__cmd_arg_to_keyvalue_set_default:nn } + \str_if_eq:nnTF {#1} { = } + { + \__cmd_use_i_delimit_by_q_recursion_stop:nw + { \__cmd_arg_to_keyvalue_set_keyvalue:nn } + } + { + \bool_lazy_or:nnTF + { \token_if_math_toggle_p:N #1 } + { \str_if_eq_p:nn {#1} { \( } } + { \__cmd_arg_to_keyvalue_math:w } + { \__cmd_arg_to_keyvalue_loop:w } + } + } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_math:w #1 \q__cmd_recursion_stop + { + \tl_if_head_is_N_type:nTF {#1} + { \__cmd_arg_to_keyvalue_math_N_type:N } + { + \tl_if_head_is_group:nTF {#1} + { \__cmd_arg_to_keyvalue_math_group:n } + { \__cmd_arg_to_keyvalue_math_space:w } + } + #1 \q__cmd_recursion_stop + } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_math_N_type:N #1 + { + \__cmd_if_recursion_tail_stop_do:Nn #1 + { \__cmd_arg_to_keyvalue_set_default:nn } + \bool_lazy_or:nnTF + { \token_if_math_toggle_p:N #1 } + { \str_if_eq_p:nn {#1} { \) } } + { \__cmd_arg_to_keyvalue_loop:w } + { \__cmd_arg_to_keyvalue_math:w } + } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_math_group:n #1 + { \__cmd_arg_to_keyvalue_math:w } +\use:n { \cs_new_protected:Npn \__cmd_arg_to_keyvalue_math_space:w } ~ + { \__cmd_arg_to_keyvalue_math:w } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_set_default:nn #1#2 + { \tl_set:Nn \ProcessedArgument { #1 = {#2} } } +\cs_new_protected:Npn \__cmd_arg_to_keyvalue_set_keyvalue:nn #1#2 + { \tl_set:Nn \ProcessedArgument {#2} } +\cs_new:Npn \__cmd_split_N_head_apply:Nn #1#2 + { \exp:w \if_false: { \fi: \__cmd_split_N_head_apply_aux:NNw #1#2 } } +\cs_new:Npn \__cmd_split_N_head_apply_aux:NNw #1#2 + { + \exp_after:wN \exp_end: + \exp_after:wN #1 \exp_after:wN #2 \exp_after:wN { \if_false: } \fi: + } + \cs_new_protected:Npn \__cmd_get_arg_spec_error:N #1 { \bool_set_false:N \l__cmd_environment_bool @@ -4261,6 +4449,13 @@ of this package available from CTAN} This~is~only~supported~for~robust~commands,~but~not~for~expandable~ones. \c__cmd_ignore_def_tl } +\msg_new:nnnn { cmd } { keyval-in-expandable } + { Invalid~argument~prefix~'='~in~command~'#1'. } + { + The~argument~specification~for~'#1'~contains~a~key--value~marker~'={#2}'.~ + This~is~only~supported~for~robust~commands,~but~not~for~expandable~ones. + \c__cmd_ignore_def_tl + } \msg_new:nnnn { cmd } { too-many-args } { Too~many~arguments~for~#1. } { @@ -9240,44 +9435,6 @@ of this package available from CTAN} \expandafter#1\ifx\math@bgroup\bgroup{#4}\else#4\fi }% } -\ExplSyntaxOn -\cs_new_protected:Npn\freeze@math@version #1 { - \@font@info{Freeze~ math~ alphabet~ allocation~ in~ version~ - #1.\MessageBreak - Allocated~math~groups:~\int_use:c{ c@mv@ #1 }~ - (local:~ \int_use:N\c@localmathalphabets) } - \cs_gset_eq:cc { mv@#1@frozen }{ mv@#1 } - \tl_gset:cx { g__nfss_frozen_mv_ #1 _tl }{ \int_use:c { c@mv@#1 } } - \group_insert_after:N \__nfss_init_mv_freeze:N - \exp_after:wN \group_insert_after:N \cs:w mv@#1@reset \cs_end: - \tl_gput_right:No \check@mathfonts - { - \exp_after:wN \group_insert_after:N \cs:w mv@#1@reset \cs_end: - } - \cs_gset:cpn{mv@#1@reset} - { - \int_compare:nNnTF { \int_use:c{c@mv@#1} } > - { \tl_use:c{g__nfss_frozen_mv_ #1 _tl} } - { - \@font@info{Undo~ math~ alphabet~ allocation~ in~ version~ #1} - \cs_gset_eq:cc { mv@#1 }{ mv@#1@frozen } - \int_gset:cn { c@mv@#1 }{ \tl_use:c {g__nfss_frozen_mv_ #1 _tl} } - \group_begin: - \cs_set_eq:NN \getanddefine@fonts \use_none:nn - \use:c {mv@#1} - \group_end: - } - { - \@font@info{No~ math~ alphabet~ change~ to~ frozen~ version~ #1} - } - \if@ignore \ignorespaces \fi - } -} -\cs_new_protected:Npn \__nfss_init_mv_freeze:N #1 {% - \mode_if_math:T { \group_insert_after:N \__nfss_init_mv_freeze:N - \group_insert_after:N } #1 -} -\ExplSyntaxOff \EndIncludeInRelease \IncludeInRelease{2020/10/01} {\document@select@group}{\document@select@group}% @@ -9371,18 +9528,188 @@ of this package available from CTAN} }% } \EndIncludeInRelease -\IncludeInRelease{2021/11/15}% +\IncludeInRelease{2022/11/01}% + {\freeze@math@version}{freeze math version}% +\ExplSyntaxOn +\cs_new_protected:Npn\freeze@math@version #1 { + \@font@info{Freeze~ math~ alphabet~ allocation~ in~ version~ + #1.\MessageBreak + Allocated~math~groups:~\int_use:c{ c@mv@ #1 }~ + (local:~ \int_use:N\c@localmathalphabets) } + \cs_gset_eq:cc { mv@#1@frozen }{ mv@#1 } + \tl_gset:cx { g__nfss_frozen_mv_ #1 _tl }{ \int_use:c { c@mv@#1 } } + \cs_gset:cpn{mv@#1@reset} + { + \int_compare:nNnTF { \int_use:c{c@mv@#1} } > + { \tl_use:c{g__nfss_frozen_mv_ #1 _tl} } + { + \@font@info{Undo~ math~ alphabet~ allocation~ in~ version~ #1} + \cs_gset_eq:cc { mv@#1 }{ mv@#1@frozen } + \int_gset:cn { c@mv@#1 }{ \tl_use:c {g__nfss_frozen_mv_ #1 _tl} } + \group_begin: + \cs_set_eq:NN \getanddefine@fonts \use_none:nn + \use:c {mv@#1} + \group_end: + } + { + \@font@info{No~ math~ alphabet~ change~ to~ frozen~ version~ #1} + } + \if@ignore \ignorespaces \fi + } +} +\ExplSyntaxOff +\EndIncludeInRelease +\IncludeInRelease{2021/11/15} + {\freeze@math@version}{freeze math version}% + +\ExplSyntaxOn +\cs_set_protected:Npn\freeze@math@version #1 { + \@font@info{Freeze~ math~ alphabet~ allocation~ in~ version~ + #1.\MessageBreak + Allocated~math~groups:~\int_use:c{ c@mv@ #1 }~ + (local:~ \int_use:N\c@localmathalphabets) } + \cs_gset_eq:cc { mv@#1@frozen }{ mv@#1 } + \tl_gset:cx { g__nfss_frozen_mv_ #1 _tl }{ \int_use:c { c@mv@#1 } } + \group_insert_after:N \__nfss_init_mv_freeze:N + \exp_after:wN \group_insert_after:N \cs:w mv@#1@reset \cs_end: + \tl_gput_right:No \check@mathfonts + { + \exp_after:wN \group_insert_after:N \cs:w mv@#1@reset \cs_end: + } + \cs_gset:cpn{mv@#1@reset} + { + \int_compare:nNnTF { \int_use:c{c@mv@#1} } > + { \tl_use:c{g__nfss_frozen_mv_ #1 _tl} } + { + \@font@info{Undo~ math~ alphabet~ allocation~ in~ version~ #1} + \cs_gset_eq:cc { mv@#1 }{ mv@#1@frozen } + \int_gset:cn { c@mv@#1 }{ \tl_use:c {g__nfss_frozen_mv_ #1 _tl} } + \group_begin: + \cs_set_eq:NN \getanddefine@fonts \use_none:nn + \use:c {mv@#1} + \group_end: + } + { + \@font@info{No~ math~ alphabet~ change~ to~ frozen~ version~ #1} + } + \if@ignore \ignorespaces \fi + } +} +\cs_set_protected:Npn \__nfss_init_mv_freeze:N #1 {% + \mode_if_math:T { \group_insert_after:N \__nfss_init_mv_freeze:N + \group_insert_after:N } #1 +} +\ExplSyntaxOff + +\EndIncludeInRelease +\IncludeInRelease{2022/11/01}% {\DeclareMathVersion}{local alphabets}% \def\DeclareMathVersion#1{% \@namedef{g__nfss_frozen_mv_#1_tl}{}% + \expandafter\ifx\csname mv@#1\endcsname \relax + \expandafter \g@addto@macro \expandafter \check@mathfonts + \expandafter {\expandafter \aftergroup \csname mv@#1@reset\endcsname}% + \@namedef{mv@#1@reset}{}% + \fi \expandafter\new@mathversion\csname mv@#1\endcsname} \@onlypreamble\DeclareMathVersion \EndIncludeInRelease +\IncludeInRelease{2021/11/15}% + {\DeclareMathVersion}{local alphabets}% +\def\DeclareMathVersion#1{% + \@namedef{g__nfss_frozen_mv_#1_tl}{}% + \expandafter\new@mathversion\csname mv@#1\endcsname} +\EndIncludeInRelease \IncludeInRelease{0000/00/00}% {\DeclareMathVersion}{local alphabets}% \def\DeclareMathVersion#1{% \expandafter\new@mathversion\csname mv@#1\endcsname} \EndIncludeInRelease +\IncludeInRelease{2022/11/01}% + {\DeclareSymbolFont}{maybe drop m}% +\def\DeclareSymbolFont #1#2#3#4#5{% + \def\reserved@a{\DeclareSymbolFont@m@dropped{#1}{#2}{#3}}% + \edef\reserved@b{#4}% + \series@maybe@drop@one@m\reserved@b\reserved@b + \expandafter\reserved@a\expandafter{\reserved@b}{#5}% +} +\def\DeclareSymbolFont@m@dropped #1#2#3#4#5{% + \@tempswafalse + \edef\reserved@b{#2}% + \def\cdp@elt##1##2##3##4{\def\reserved@c{##1}% + \ifx\reserved@b\reserved@c \@tempswatrue\fi}% + \cdp@list + \if@tempswa + \@ifundefined{sym#1}{% + \ifnum\count18<15 % + \expandafter\new@mathgroup\csname sym#1\endcsname + \expandafter\new@symbolfont\csname sym#1\endcsname + {#2}{#3}{#4}{#5}% + \else + \@latex@error{Too many symbol fonts declared}\@eha + \fi + }% + {% + \@font@info{Redeclaring symbol font `#1'}% + \def\group@elt##1##2{% + \noexpand\group@elt\noexpand##1% + \expandafter\ifx\csname sym#1\endcsname##1% + \expandafter\noexpand\csname#2/#3/#4/#5\endcsname + \else + \noexpand##2% + \fi}% + \xdef\group@list{\group@list}% + \def\version@elt##1{% + \expandafter + \SetSymbolFont@\expandafter##1\csname#2/#3/#4/#5\expandafter + \endcsname \csname sym#1\endcsname + }% + \version@list + }% + \else + \@latex@error{Encoding scheme `#2' unknown}\@eha + \fi + } +\@onlypreamble\DeclareSymbolFont +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\DeclareSymbolFont}{maybe drop m}% + +\let\DeclareSymbolFont\DeclareSymbolFont@m@dropped +\let\DeclareSymbolFont@m@dropped\@undefined + +\EndIncludeInRelease +\IncludeInRelease{2022/11/01}% + {\SetSymbolFont}{maybe drop m}% +\def\SetSymbolFont #1#2#3#4#5#6{% + \def\reserved@a{\SetSymbolFont@m@dropped{#1}{#2}{#3}{#4}}% + \edef\reserved@b{#5}% + \series@maybe@drop@one@m\reserved@b\reserved@b + \expandafter\reserved@a\expandafter{\reserved@b}{#6}% +} +\def\SetSymbolFont@m@dropped#1#2#3#4#5#6{% + \@tempswafalse + \edef\reserved@b{#3}% + \def\cdp@elt##1##2##3##4{\def\reserved@c{##1}% + \ifx\reserved@b\reserved@c \@tempswatrue\fi}% + \cdp@list + \if@tempswa + \expandafter\SetSymbolFont@ + \csname mv@#2\expandafter\endcsname\csname#3/#4/#5/#6\expandafter + \endcsname \csname sym#1\endcsname + \else + \@latex@error{Encoding scheme `#3' unknown}\@eha + \fi +} +\@onlypreamble\SetSymbolFont +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\SetSymbolFont}{maybe drop m}% + +\let\SetSymbolFont\SetSymbolFont@m@dropped +\let\SetSymbolFont@m@dropped\@undefined + +\EndIncludeInRelease \IncludeInRelease{2019/10/01}% {DeclareMathAccent}{Make math accents robust}% \def\DeclareMathAccent#1#2#3#4{% @@ -10247,7 +10574,7 @@ of this package available from CTAN} \@ifundefined{#1:#2}% {\@font@info{Setting #2 sub-encoding to #1/#3}}% {\@font@info{Changing #2 sub-encoding to #1/#3}}% - \@namedef{#1:#2}{#3}} + \global\@namedef{#1:#2}{#3}} \@onlypreamble\DeclareEncodingSubset \@onlypreamble\DeclareEncodingSubset@aux \@onlypreamble\@DeclareEncodingSubset @@ -11566,6 +11893,17 @@ of this package available from CTAN} \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@\fi \ifh@ \wd\tw@\wd\z@\fi \box\tw@} \EndIncludeInRelease +\IncludeInRelease{2022/11/01}% + {\mathsm@sh}{Guard against reboxing}% +\def\mathsm@sh#1#2{% + \setbox\z@\hbox{$\m@th#1{#2}$}% + {}\finsm@sh} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\mathsm@sh}{Guard against reboxing}% +\def\mathsm@sh#1#2{% + \setbox\z@\hbox{$\m@th#1{#2}$}\finsm@sh} +\EndIncludeInRelease \IncludeInRelease{2018/12/01}% {\finsm@sh}{Start LR-mode}% \def\finsm@sh{\ht\z@\z@ \dp\z@\z@ \leavevmode@ifvmode\box\z@} @@ -13699,7 +14037,7 @@ of this package available from CTAN} {\@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{% + \expandafter\protected@xdef\csname opt@\reserved@a\endcsname{% \@ifundefined{opt@\reserved@a}\@empty {\csname opt@\reserved@a\endcsname,}% \zap@space#2 \@empty}% @@ -13765,7 +14103,7 @@ of this package available from CTAN} \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 }% @@ -13794,7 +14132,7 @@ of this package available from CTAN} {\@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}% \@use@ption}% @@ -13828,7 +14166,7 @@ of this package available from CTAN} \@expandtwoargs\@removeelement {\expandafter\@remove@eq@value\CurrentOption=\@nil}% \@unusedoptionlist\@unusedoptionlist - \csname ds@\CurrentOption\endcsname} + \csname ds@\detokenize\expandafter{\CurrentOption}\endcsname} \EndIncludeInRelease \IncludeInRelease{0000/00/00}% {\@use@ption}{filter unused option list}% @@ -13893,7 +14231,7 @@ of this package available from CTAN} \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}% \gdef\@raw@classoptionslist{#2}% \def\reserved@a{% \@onefilewithoptions#3[{#2}][{#4}]#1% @@ -13985,15 +14323,13 @@ of this package available from CTAN} \global\let\@currext#4% \@ifl@aded\@currext\@currname {% - \@ifundefined{opt@fam@\@currname.\@currext} + \@ifundefined{opt@handler@\@currname.\@currext} {\@onefilewithoptions@clashchk{#2}} {% - \expandafter\edef\csname opt@\@currname.\@currext\endcsname + \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 @@ -14534,8 +14870,8 @@ of this package available from CTAN} \endgroup% \EndIncludeInRelease %%% From File: ltfilehook.dtx -\providecommand\ltfilehookversion{v1.0m} -\providecommand\ltfilehookdate{2022/04/01} +\providecommand\ltfilehookversion{v1.0n} +\providecommand\ltfilehookdate{2022/08/18} \IncludeInRelease{2020/10/01}% {\CurrentFile}{Hook management file}% \ExplSyntaxOn @@ -14970,8 +15306,12 @@ of this package available from CTAN} \def\disable@package@load#1#2{% \global\@namedef{@pkg-disable@#1.\@pkgextension}{#2}} \def\@disable@packageload@do#1#2{% - \@ifundefined{@pkg-disable@#1}{#2}% - {\@nameuse{@pkg-disable@#1}}} + \@ifundefined{@pkg-disable@#1}% + {#2}% + {\@nameuse{@pkg-disable@#1}% + \@latex@info{Package '#1' has been disabled.% + \MessageBreak Load request ignored}% + \expandafter\@gobbletwo}} \def\reenable@package@load#1{% \global\expandafter\let \csname @pkg-disable@#1.\@pkgextension \endcsname \@undefined} @@ -15020,8 +15360,7 @@ of this package available from CTAN} %% %%% From File: ltshipout.dtx \providecommand\ltshipoutversion{v1.0m} -\providecommand\ltshipoutdate{2022/05/08} - % \cs{AtBeginDvi} is the existing \LaTeXe{} interface to fill the +\providecommand\ltshipoutdate{2022/08/26} \IncludeInRelease{2020/10/01}% {\shipout}{Hook management (shipout)}% \ExplSyntaxOn diff --git a/Master/texmf-dist/tex/latex/base/ltluatex.lua b/Master/texmf-dist/tex/latex/base/ltluatex.lua index 40c36482252..1565ae7d19d 100644 --- a/Master/texmf-dist/tex/latex/base/ltluatex.lua +++ b/Master/texmf-dist/tex/latex/base/ltluatex.lua @@ -240,7 +240,107 @@ local function new_luafunction(name) return tex_count[luafunction_count_name] end luatexbase.new_luafunction = new_luafunction -local callbacklist = callbacklist or { } +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 +}) local list, data, exclusive, simple, reverselist = 1, 2, 3, 4, 5 local types = { list = list, @@ -296,9 +396,6 @@ local callbacktypes = callbacktypes or { ligaturing = simple, kerning = simple, insert_local_par = simple, - pre_mlist_to_hlist_filter = list, - mlist_to_hlist = exclusive, - post_mlist_to_hlist_filter = reverselist, new_graf = exclusive, pre_dump = simple, start_run = simple, @@ -329,6 +426,15 @@ local callbacktypes = callbacktypes or { provide_charproc_data = exclusive, } luatexbase.callbacktypes=callbacktypes +local shared_callbacks = { + mlist_to_hlist = { + callback = "mlist_to_hlist", + count = 0, + handler = nil, + }, +} +shared_callbacks.pre_mlist_to_hlist_filter = shared_callbacks.mlist_to_hlist +shared_callbacks.post_mlist_to_hlist_filter = shared_callbacks.mlist_to_hlist local callback_register = callback_register or callback.register function callback.register() luatexbase_error("Attempt to use callback.register() directly\n") @@ -415,11 +521,7 @@ local defaults = { [reverselist] = list_handler_default, [simple] = simple_handler_default, } -local user_callbacks_defaults = { - pre_mlist_to_hlist_filter = list_handler_default, - mlist_to_hlist = node.mlist_to_hlist, - post_mlist_to_hlist_filter = list_handler_default, -} +local user_callbacks_defaults = {} local function create_callback(name, ctype, default) local ctype_id = types[ctype] if not name or name == "" @@ -479,11 +581,17 @@ local function add_to_callback(name, func, description) .. "add_to_callback(<callback>, <function>, <description>)" ) end - local l = callbacklist[name] + local l = realcallbacklist[name] if l == nil then l = { } - callbacklist[name] = l - if user_callbacks_defaults[name] == nil then + realcallbacklist[name] = l + local shared = shared_callbacks[name] + if shared then + shared.count = shared.count + 1 + if shared.count == 1 then + callback_register(shared.callback, shared.handler) + end + elseif user_callbacks_defaults[name] == nil then callback_register(name, handlers[callbacktypes[name]](name)) end end @@ -491,7 +599,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( @@ -499,13 +606,56 @@ local function add_to_callback(name, func, description) name .. "'") end end - table.insert(l, priority, f) + table.insert(l, f) + callbacklist[name] = nil luatexbase_log( - "Inserting `" .. description .. "' at position " - .. priority .. " in `" .. name .. "'." + "Inserting `" .. description .. "' in `" .. name .. "'." ) end luatexbase.add_to_callback = add_to_callback +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 local function remove_from_callback(name, description) if not name or name == "" then luatexbase_error("Unable to remove function from callback:\n" .. @@ -520,7 +670,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") @@ -543,8 +693,15 @@ local function remove_from_callback(name, description) "Removing `" .. description .. "' from `" .. name .. "'." ) if #l == 0 then + realcallbacklist[name] = nil callbacklist[name] = nil - if user_callbacks_defaults[name] == nil then + local shared = shared_callbacks[name] + if shared then + shared.count = shared.count - 1 + if shared.count == 0 then + callback_register(shared.callback, nil) + end + elseif user_callbacks_defaults[name] == nil then callback_register(name, nil) end end @@ -554,12 +711,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 @@ -568,7 +725,7 @@ local function in_callback(name, description) end luatexbase.in_callback = in_callback 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") @@ -579,7 +736,7 @@ 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 @@ -600,7 +757,10 @@ local function uninstall() luatexbase = nil end luatexbase.uninstall = uninstall -callback_register("mlist_to_hlist", function(head, display_type, need_penalties) +create_callback('pre_mlist_to_hlist_filter', 'list') +create_callback('mlist_to_hlist', 'exclusive', node.mlist_to_hlist) +create_callback('post_mlist_to_hlist_filter', 'list') +function shared_callbacks.mlist_to_hlist.handler(head, display_type, need_penalties) local current = call_callback("pre_mlist_to_hlist_filter", head, display_type, need_penalties) if current == false then flush_list(head) @@ -613,4 +773,4 @@ callback_register("mlist_to_hlist", function(head, display_type, need_penalties) return nil end return post -end) +end diff --git a/Master/texmf-dist/tex/latex/base/ltluatex.tex b/Master/texmf-dist/tex/latex/base/ltluatex.tex index 3a5b526eed8..dc356201b06 100644 --- a/Master/texmf-dist/tex/latex/base/ltluatex.tex +++ b/Master/texmf-dist/tex/latex/base/ltluatex.tex @@ -47,7 +47,7 @@ #1#2[#3]{\endgroup\immediate\write-1{File: #1 #3}} \fi \ProvidesFile{ltluatex.tex}% -[2021/12/27 v1.1x +[2022/10/03 v1.2a LuaTeX support for plain TeX (core) ] \edef\etatcatcode{\the\catcode`\@} diff --git a/Master/texmf-dist/tex/latex/base/omlcmm.fd b/Master/texmf-dist/tex/latex/base/omlcmm.fd index fcd7ac66daf..329e1cb193d 100644 --- a/Master/texmf-dist/tex/latex/base/omlcmm.fd +++ b/Master/texmf-dist/tex/latex/base/omlcmm.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{omlcmm.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \DeclareFontFamily{OML}{cmm}{\skewchar\font127 } \DeclareFontShape{OML}{cmm}{m}{it}% {<5><6><7><8><9>gen*cmmi% diff --git a/Master/texmf-dist/tex/latex/base/omlcmr.fd b/Master/texmf-dist/tex/latex/base/omlcmr.fd index e0fce9650ee..34a6edab171 100644 --- a/Master/texmf-dist/tex/latex/base/omlcmr.fd +++ b/Master/texmf-dist/tex/latex/base/omlcmr.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{omlcmr.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \DeclareFontFamily{OML}{cmr}{\skewchar\font127 } \DeclareFontShape{OML}{cmr}{m}{n}% {<->ssub*cmm/m/it}{} diff --git a/Master/texmf-dist/tex/latex/base/omscmr.fd b/Master/texmf-dist/tex/latex/base/omscmr.fd index c1a3b8a4924..35be157bd6b 100644 --- a/Master/texmf-dist/tex/latex/base/omscmr.fd +++ b/Master/texmf-dist/tex/latex/base/omscmr.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{omscmr.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \DeclareFontFamily{OMS}{cmr}{\skewchar\font48 } \DeclareFontShape{OMS}{cmr}{m}{n}% {<->ssub*cmsy/m/n}{} diff --git a/Master/texmf-dist/tex/latex/base/omscmsy.fd b/Master/texmf-dist/tex/latex/base/omscmsy.fd index 423f041e2f3..696a1cd9942 100644 --- a/Master/texmf-dist/tex/latex/base/omscmsy.fd +++ b/Master/texmf-dist/tex/latex/base/omscmsy.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{omscmsy.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \DeclareFontFamily{OMS}{cmsy}{\skewchar\font48 } \DeclareFontShape{OMS}{cmsy}{m}{n}{% <5><6><7><8><9><10>gen*cmsy% diff --git a/Master/texmf-dist/tex/latex/base/omxcmex.fd b/Master/texmf-dist/tex/latex/base/omxcmex.fd index dfd16bd3a4c..2f3fa1342fe 100644 --- a/Master/texmf-dist/tex/latex/base/omxcmex.fd +++ b/Master/texmf-dist/tex/latex/base/omxcmex.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{omxcmex.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \DeclareFontFamily{OMX}{cmex}{} \DeclareFontShape{OMX}{cmex}{m}{n}{% <->sfixed*cmex10% diff --git a/Master/texmf-dist/tex/latex/base/ot1cmdh.fd b/Master/texmf-dist/tex/latex/base/ot1cmdh.fd index a34ae5c92e8..2ad840921f1 100644 --- a/Master/texmf-dist/tex/latex/base/ot1cmdh.fd +++ b/Master/texmf-dist/tex/latex/base/ot1cmdh.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{ot1cmdh.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \DeclareFontFamily{OT1}{cmdh}{\hyphenchar\font45 } \DeclareFontShape{OT1}{cmdh}{m}{n}{% <10>cmdunh10% diff --git a/Master/texmf-dist/tex/latex/base/ot1cmfib.fd b/Master/texmf-dist/tex/latex/base/ot1cmfib.fd index e4ddbecd024..31a94988252 100644 --- a/Master/texmf-dist/tex/latex/base/ot1cmfib.fd +++ b/Master/texmf-dist/tex/latex/base/ot1cmfib.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{ot1cmfib.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \DeclareFontFamily{OT1}{cmfib}{\hyphenchar\font45 } \DeclareFontShape{OT1}{cmfib}{m}{n}{% <8>cmfib8% diff --git a/Master/texmf-dist/tex/latex/base/ot1cmfr.fd b/Master/texmf-dist/tex/latex/base/ot1cmfr.fd index c1a5bf7bb02..378a07d8670 100644 --- a/Master/texmf-dist/tex/latex/base/ot1cmfr.fd +++ b/Master/texmf-dist/tex/latex/base/ot1cmfr.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{ot1cmfr.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \DeclareFontFamily{OT1}{cmfr}{\hyphenchar\font45 } \DeclareFontShape{OT1}{cmfr}{m}{n}{% <10>cmff10% diff --git a/Master/texmf-dist/tex/latex/base/ot1cmr.fd b/Master/texmf-dist/tex/latex/base/ot1cmr.fd index 90c019feed5..a79e2b366f2 100644 --- a/Master/texmf-dist/tex/latex/base/ot1cmr.fd +++ b/Master/texmf-dist/tex/latex/base/ot1cmr.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{ot1cmr.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \DeclareFontFamily{OT1}{cmr}{\hyphenchar\font45 } \DeclareFontShape{OT1}{cmr}{m}{n}% {<5><6><7><8><9><10><12>gen*cmr% diff --git a/Master/texmf-dist/tex/latex/base/ot1cmss.fd b/Master/texmf-dist/tex/latex/base/ot1cmss.fd index 7b98b6232f7..891c4f46c44 100644 --- a/Master/texmf-dist/tex/latex/base/ot1cmss.fd +++ b/Master/texmf-dist/tex/latex/base/ot1cmss.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{ot1cmss.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \DeclareFontFamily{OT1}{cmss}{\hyphenchar\font45 } \DeclareFontShape{OT1}{cmss}{m}{n} {% diff --git a/Master/texmf-dist/tex/latex/base/ot1cmtt.fd b/Master/texmf-dist/tex/latex/base/ot1cmtt.fd index 2658d0a5319..02f080ce517 100644 --- a/Master/texmf-dist/tex/latex/base/ot1cmtt.fd +++ b/Master/texmf-dist/tex/latex/base/ot1cmtt.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{ot1cmtt.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \DeclareFontFamily{OT1}{cmtt}{\hyphenchar \font\m@ne} \DeclareFontShape{OT1}{cmtt}{m}{n} {% diff --git a/Master/texmf-dist/tex/latex/base/ot1cmvtt.fd b/Master/texmf-dist/tex/latex/base/ot1cmvtt.fd index 0dd9bdd91a9..bf485c7e1d7 100644 --- a/Master/texmf-dist/tex/latex/base/ot1cmvtt.fd +++ b/Master/texmf-dist/tex/latex/base/ot1cmvtt.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{ot1cmvtt.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \DeclareFontFamily{OT1}{cmvtt}{\hyphenchar\font45 } \DeclareFontShape{OT1}{cmvtt}{m}{n}% {% diff --git a/Master/texmf-dist/tex/latex/base/report.cls b/Master/texmf-dist/tex/latex/base/report.cls index ac7d0f64793..2b2c29351d2 100644 --- a/Master/texmf-dist/tex/latex/base/report.cls +++ b/Master/texmf-dist/tex/latex/base/report.cls @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. \NeedsTeXFormat{LaTeX2e}[1995/12/01] \ProvidesClass{report} - [2021/10/04 v1.4n + [2022/07/02 v1.4n Standard LaTeX document class] \newcommand\@ptsize{} \newif\if@restonecol diff --git a/Master/texmf-dist/tex/latex/base/shortvrb.sty b/Master/texmf-dist/tex/latex/base/shortvrb.sty index 4141d998138..9b4753ced92 100644 --- a/Master/texmf-dist/tex/latex/base/shortvrb.sty +++ b/Master/texmf-dist/tex/latex/base/shortvrb.sty @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. \NeedsTeXFormat{LaTeX2e}[1994/12/01] \ProvidesPackage{shortvrb} - [2022/06/08 v3.0j + [2022/07/03 v3.0k Standard LaTeX documentation package V3 (FMi)] %% %% Package `doc' to use with LaTeX 2e diff --git a/Master/texmf-dist/tex/latex/base/size10.clo b/Master/texmf-dist/tex/latex/base/size10.clo index 6f0c7561b20..03dc8e61fc5 100644 --- a/Master/texmf-dist/tex/latex/base/size10.clo +++ b/Master/texmf-dist/tex/latex/base/size10.clo @@ -42,7 +42,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. \ProvidesFile{size10.clo} - [2021/10/04 v1.4n + [2022/07/02 v1.4n Standard LaTeX file (size option)] \renewcommand\normalsize{% \@setfontsize\normalsize\@xpt\@xiipt diff --git a/Master/texmf-dist/tex/latex/base/size11.clo b/Master/texmf-dist/tex/latex/base/size11.clo index 1ba265275ea..71f930d413d 100644 --- a/Master/texmf-dist/tex/latex/base/size11.clo +++ b/Master/texmf-dist/tex/latex/base/size11.clo @@ -42,7 +42,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. \ProvidesFile{size11.clo} - [2021/10/04 v1.4n + [2022/07/02 v1.4n Standard LaTeX file (size option)] \renewcommand\normalsize{% \@setfontsize\normalsize\@xipt{13.6}% diff --git a/Master/texmf-dist/tex/latex/base/size12.clo b/Master/texmf-dist/tex/latex/base/size12.clo index c07477787c9..e85a5983c4c 100644 --- a/Master/texmf-dist/tex/latex/base/size12.clo +++ b/Master/texmf-dist/tex/latex/base/size12.clo @@ -42,7 +42,7 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. \ProvidesFile{size12.clo} - [2021/10/04 v1.4n + [2022/07/02 v1.4n Standard LaTeX file (size option)] \renewcommand\normalsize{% \@setfontsize\normalsize\@xiipt{14.5}% diff --git a/Master/texmf-dist/tex/latex/base/structuredlog.sty b/Master/texmf-dist/tex/latex/base/structuredlog.sty index f1de46f35a7..3821aefdeb2 100644 --- a/Master/texmf-dist/tex/latex/base/structuredlog.sty +++ b/Master/texmf-dist/tex/latex/base/structuredlog.sty @@ -42,8 +42,8 @@ %% and covered by LPPL is defined by the unpacking scripts (with %% extension .ins) which are part of the distribution. %%% From File: ltfilehook.dtx -\providecommand\ltfilehookversion{v1.0m} -\providecommand\ltfilehookdate{2022/04/01} +\providecommand\ltfilehookversion{v1.0n} +\providecommand\ltfilehookdate{2022/08/18} \ProvidesExplPackage {structuredlog}{\ltfilehookdate}{\ltfilehookversion} {Structuring the TeX transcript file} diff --git a/Master/texmf-dist/tex/latex/base/t1cmdh.fd b/Master/texmf-dist/tex/latex/base/t1cmdh.fd index 2855ca8a1f9..780a713ce9b 100644 --- a/Master/texmf-dist/tex/latex/base/t1cmdh.fd +++ b/Master/texmf-dist/tex/latex/base/t1cmdh.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{t1cmdh.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \providecommand{\EC@family}[5]{% \DeclareFontShape{#1}{#2}{#3}{#4}% {<5><6><7><8><9><10><10.95><12><14.4>% diff --git a/Master/texmf-dist/tex/latex/base/t1cmfib.fd b/Master/texmf-dist/tex/latex/base/t1cmfib.fd index 63db02be391..c2f39ac5212 100644 --- a/Master/texmf-dist/tex/latex/base/t1cmfib.fd +++ b/Master/texmf-dist/tex/latex/base/t1cmfib.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{t1cmfib.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \providecommand{\EC@family}[5]{% \DeclareFontShape{#1}{#2}{#3}{#4}% {<5><6><7><8><9><10><10.95><12><14.4>% diff --git a/Master/texmf-dist/tex/latex/base/t1cmfr.fd b/Master/texmf-dist/tex/latex/base/t1cmfr.fd index d71ca32c4c8..ec37c5faf36 100644 --- a/Master/texmf-dist/tex/latex/base/t1cmfr.fd +++ b/Master/texmf-dist/tex/latex/base/t1cmfr.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{t1cmfr.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \providecommand{\EC@family}[5]{% \DeclareFontShape{#1}{#2}{#3}{#4}% {<5><6><7><8><9><10><10.95><12><14.4>% diff --git a/Master/texmf-dist/tex/latex/base/t1cmr.fd b/Master/texmf-dist/tex/latex/base/t1cmr.fd index ff17222f16f..04c86917c23 100644 --- a/Master/texmf-dist/tex/latex/base/t1cmr.fd +++ b/Master/texmf-dist/tex/latex/base/t1cmr.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{t1cmr.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \providecommand{\EC@family}[5]{% \DeclareFontShape{#1}{#2}{#3}{#4}% {<5><6><7><8><9><10><10.95><12><14.4>% @@ -62,6 +62,9 @@ \EC@family{T1}{cmr}{bx}{sl}{ecbl} \EC@family{T1}{cmr}{bx}{sc}{ecxc} \EC@family{T1}{cmr}{m}{ui}{ecui} +\EC@family{T1}{cmr}{m}{scsl}{ecsc} +\EC@family{T1}{cmr}{bx}{scsl}{ecoc} +\EC@family{T1}{cmr}{b}{scsl}{ecoc} \endinput %% %% End of file `t1cmr.fd'. diff --git a/Master/texmf-dist/tex/latex/base/t1cmss.fd b/Master/texmf-dist/tex/latex/base/t1cmss.fd index 5dc6c724b0c..1f7138b51b7 100644 --- a/Master/texmf-dist/tex/latex/base/t1cmss.fd +++ b/Master/texmf-dist/tex/latex/base/t1cmss.fd @@ -46,18 +46,18 @@ %% making successful document exchange impossible. %% \ProvidesFile{t1cmss.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] -\providecommand{\EC@family}[5]{% + [2022/07/10 v2.5l Standard LaTeX font definitions] +\providecommand{\EC@ssfamily}[5]{% \DeclareFontShape{#1}{#2}{#3}{#4}% - {<5><6><7><8><9><10><10.95><12><14.4>% - <17.28><20.74><24.88><29.86><35.83>genb*#5}{}} + {<5><6><7><8>#50800% + <9><10><10.95><12><14.4><17.28><20.74><24.88><29.86><35.83>genb*#5}{}} \DeclareFontFamily{T1}{cmss}{} -\EC@family{T1}{cmss}{m}{n}{ecss} -\EC@family{T1}{cmss}{m}{sl}{ecsi} -\EC@family{T1}{cmss}{m}{it}{ecsi} -\EC@family{T1}{cmss}{bx}{n}{ecsx} -\EC@family{T1}{cmss}{bx}{it}{ecso} -\EC@family{T1}{cmss}{bx}{sl}{ecso} +\EC@ssfamily{T1}{cmss}{m}{n}{ecss} +\EC@ssfamily{T1}{cmss}{m}{sl}{ecsi} +\EC@ssfamily{T1}{cmss}{m}{it}{ecsi} +\EC@ssfamily{T1}{cmss}{bx}{n}{ecsx} +\EC@ssfamily{T1}{cmss}{bx}{it}{ecso} +\EC@ssfamily{T1}{cmss}{bx}{sl}{ecso} %%%%%% Font/shape undefined, therefore substituted \DeclareFontShape{T1}{cmss}{m}{sc}% {<->sub*cmr/m/sc}{} diff --git a/Master/texmf-dist/tex/latex/base/t1cmtt.fd b/Master/texmf-dist/tex/latex/base/t1cmtt.fd index 8ef2377d9f8..3cb4e498c51 100644 --- a/Master/texmf-dist/tex/latex/base/t1cmtt.fd +++ b/Master/texmf-dist/tex/latex/base/t1cmtt.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{t1cmtt.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \providecommand{\EC@ttfamily}[5]{% \DeclareFontShape{#1}{#2}{#3}{#4}% {<5><6><7><8>#50800% diff --git a/Master/texmf-dist/tex/latex/base/t1cmvtt.fd b/Master/texmf-dist/tex/latex/base/t1cmvtt.fd index d31fe4202bc..bd33c77b7fd 100644 --- a/Master/texmf-dist/tex/latex/base/t1cmvtt.fd +++ b/Master/texmf-dist/tex/latex/base/t1cmvtt.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{t1cmvtt.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \providecommand{\EC@ttfamily}[5]{% \DeclareFontShape{#1}{#2}{#3}{#4}% {<5><6><7><8>#50800% diff --git a/Master/texmf-dist/tex/latex/base/ts1cmr.fd b/Master/texmf-dist/tex/latex/base/ts1cmr.fd index b3e92d27237..62e7610e4a8 100644 --- a/Master/texmf-dist/tex/latex/base/ts1cmr.fd +++ b/Master/texmf-dist/tex/latex/base/ts1cmr.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{ts1cmr.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \providecommand{\EC@family}[5]{% \DeclareFontShape{#1}{#2}{#3}{#4}% {<5><6><7><8><9><10><10.95><12><14.4>% diff --git a/Master/texmf-dist/tex/latex/base/ts1cmss.fd b/Master/texmf-dist/tex/latex/base/ts1cmss.fd index 2ca7eae58c2..88329e97559 100644 --- a/Master/texmf-dist/tex/latex/base/ts1cmss.fd +++ b/Master/texmf-dist/tex/latex/base/ts1cmss.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{ts1cmss.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \providecommand{\EC@family}[5]{% \DeclareFontShape{#1}{#2}{#3}{#4}% {<5><6><7><8><9><10><10.95><12><14.4>% diff --git a/Master/texmf-dist/tex/latex/base/ts1cmtt.fd b/Master/texmf-dist/tex/latex/base/ts1cmtt.fd index 2947b13e1a3..bbea6182516 100644 --- a/Master/texmf-dist/tex/latex/base/ts1cmtt.fd +++ b/Master/texmf-dist/tex/latex/base/ts1cmtt.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{ts1cmtt.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \providecommand{\EC@ttfamily}[5]{% \DeclareFontShape{#1}{#2}{#3}{#4}% {<5><6><7><8>#50800% diff --git a/Master/texmf-dist/tex/latex/base/ts1cmvtt.fd b/Master/texmf-dist/tex/latex/base/ts1cmvtt.fd index c4a96cfc2b2..33e6ede3271 100644 --- a/Master/texmf-dist/tex/latex/base/ts1cmvtt.fd +++ b/Master/texmf-dist/tex/latex/base/ts1cmvtt.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{ts1cmvtt.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \providecommand{\EC@ttfamily}[5]{% \DeclareFontShape{#1}{#2}{#3}{#4}% {<5><6><7><8>#50800% diff --git a/Master/texmf-dist/tex/latex/base/ucmr.fd b/Master/texmf-dist/tex/latex/base/ucmr.fd index e795726253a..7ab1d923a2a 100644 --- a/Master/texmf-dist/tex/latex/base/ucmr.fd +++ b/Master/texmf-dist/tex/latex/base/ucmr.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{ucmr.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \DeclareFontFamily{U}{cmr}{\hyphenchar\font45 } \DeclareFontShape{U}{cmr}{m}{n}% {<5><6><7><8><9><10><12>gen*cmr% diff --git a/Master/texmf-dist/tex/latex/base/ucmss.fd b/Master/texmf-dist/tex/latex/base/ucmss.fd index 60bbff556ee..963b6316c86 100644 --- a/Master/texmf-dist/tex/latex/base/ucmss.fd +++ b/Master/texmf-dist/tex/latex/base/ucmss.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{ucmss.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \DeclareFontFamily{U}{cmss}{\hyphenchar\font45 } \DeclareFontShape{U}{cmss}{m}{n}% {% diff --git a/Master/texmf-dist/tex/latex/base/ucmtt.fd b/Master/texmf-dist/tex/latex/base/ucmtt.fd index fdf09d32a07..5fa40718388 100644 --- a/Master/texmf-dist/tex/latex/base/ucmtt.fd +++ b/Master/texmf-dist/tex/latex/base/ucmtt.fd @@ -46,7 +46,7 @@ %% making successful document exchange impossible. %% \ProvidesFile{ucmtt.fd} - [2019/12/16 v2.5j Standard LaTeX font definitions] + [2022/07/10 v2.5l Standard LaTeX font definitions] \DeclareFontFamily{U}{cmtt}{\hyphenchar \font\m@ne} \DeclareFontShape{U}{cmtt}{m}{n}% {% diff --git a/Master/texmf-dist/tex/latex/firstaid/latex2e-first-aid-for-external-files.ltx b/Master/texmf-dist/tex/latex/firstaid/latex2e-first-aid-for-external-files.ltx index 4f3e22c741f..ebdf7f5f99c 100644 --- a/Master/texmf-dist/tex/latex/firstaid/latex2e-first-aid-for-external-files.ltx +++ b/Master/texmf-dist/tex/latex/firstaid/latex2e-first-aid-for-external-files.ltx @@ -34,8 +34,8 @@ %% %% The LaTeX Project and any individual authors listed elsewhere %% in this file. -\def\LaTeXFirstAidDate{2022/02/20} -\def\LaTeXFirstAidVersion{v1.0r} +\def\LaTeXFirstAidDate{2022/10/29} +\def\LaTeXFirstAidVersion{v1.0u} \ProvidesFile{latex2e-first-aid-for-external-files.ltx} [\LaTeXFirstAidDate\space \LaTeXFirstAidVersion\space LaTeX kernel fixes to external files and packages] @@ -71,6 +71,7 @@ } } \ExplSyntaxOff +\AddToHook{file/babel.sty/before}[firstaid]{\def\BabelCaseHack{}} \AddToHook{file/bigfoot.sty/after}{% \ifnum\count10<\insc@unt \global\count10=\insc@unt @@ -131,6 +132,19 @@ \ngermanTeX }% } +\AddToHook{file/memoir.cls/before}[firstaid]{% + \expandafter\def\expandafter\@tempa\string\dimen{}% + \edef\kernel@stockheight{\expandafter\@tempa\meaning\stockheight}% + \edef\kernel@stockwidth{\expandafter\@tempa\meaning\stockwidth}% + \let\stockheight\@undefined + \let\stockwidth\@undefined +} +\AddToHook{file/memoir.cls/after}[firstaid]{% + \dimen\kernel@stockheight=\stockheight + \dimen\kernel@stockwidth=\stockwidth + \dimendef\stockheight=\kernel@stockheight + \dimendef\stockwidth=\kernel@stockwidth +} \ExplSyntaxOn \sys_if_engine_luatex:T { diff --git a/Master/texmf-dist/tex/latex/graphics/mathcolor.ltx b/Master/texmf-dist/tex/latex/graphics/mathcolor.ltx index c7588a3e195..6e9c12551ce 100644 --- a/Master/texmf-dist/tex/latex/graphics/mathcolor.ltx +++ b/Master/texmf-dist/tex/latex/graphics/mathcolor.ltx @@ -13,85 +13,79 @@ %% %% File: mathcolor.dtx (C) Copyright 2021-2022 %%% From File: mathcolor.dtx -\def\mathcolorversion{v1.0b} -\def\mathcolordate{2022/01/28} - - +\def\mathcolorversion{v1.0c} +\def\mathcolordate{2022/07/25} \ifcsname mathcolor\endcsname \endinput \fi \ExplSyntaxOn \seq_new:N \g__mathcolor_seq -\DeclareDocumentCommand \mathcolor { o m m } { - \mode_if_math:F { \non@alpherr {\mathcolor\space} } - \seq_gpush:No \g__mathcolor_seq \current@color - \group_insert_after:N \use_none:n - \IfValueTF{#1} { \color[#1]{#2} }{ \color{#2} } - #3 - \__mathcolor_scan_for_scripts:w -} -\cs_new_protected:Npn \__mathcolor_scan_for_scripts:w { - \__mathcolor_peek_catcode_ignore_filler_expand:NTF \c_math_subscript_token - { \__mathcolor_handle_scripts:Nw } - { \token_if_math_superscript:NTF \l_peek_token - { \__mathcolor_handle_scripts:Nw } - { \token_case_meaning:NnTF \l_peek_token +\DeclareDocumentCommand \mathcolor { o m m } + { + \mode_if_math:F { \non@alpherr {\mathcolor\space} } + \seq_gpush:No \g__mathcolor_seq \current@color + \group_insert_after:N \use_none:n + \IfValueTF {#1} { \color[#1]{#2} } { \color{#2} } + #3 + \__mathcolor_scan_for_scripts:w + } +\cs_new_protected:Npn \__mathcolor_scan_for_scripts:w + { + \peek_remove_filler:n + { + \group_align_safe_begin: + \token_case_catcode:NnTF \l_peek_token { - \limits { \limits } - \nolimits { \nolimits } - \displaylimits { \displaylimits } + \c_math_subscript_token { } + \c_math_superscript_token { } } - { \__mathcolor_scan_for_scripts:w \use_none:n } - { \peek_meaning_remove:NTF ' - { \__mathcolor_handle_scripts:Nw ^\c_group_begin_token \prim@s } - { \reset@color - \seq_gpop:NN \g__mathcolor_seq \current@color - } + { \__mathcolor_handle_scripts:Nw } + { + \token_case_meaning:NnTF \l_peek_token + { + \limits { \limits } + \nolimits { \nolimits } + \displaylimits { \displaylimits } + } + { + \group_align_safe_end: % case 4 + \__mathcolor_scan_for_scripts:w \use_none:n + } + { + \token_if_eq_meaning:NNTF \l_peek_token ' + { + \__mathcolor_handle_scripts:Nw ^ + \c_group_begin_token + \exp_after:wN \prim@s \use_none:n + } + { + \group_align_safe_end: % case 1 + \reset@color + \seq_gpop:NN \g__mathcolor_seq \current@color + } + } } } - } -} - -\cs_new_protected:Npn \__mathcolor_handle_scripts:Nw #1 { + } +\cs_new_protected:Npn \__mathcolor_handle_scripts:Nw #1 + { #1 \c_group_begin_token \c_group_begin_token \seq_get:NN \g__mathcolor_seq \current@color \set@color \group_insert_after:N \c_group_end_token \group_insert_after:N \__mathcolor_scan_for_scripts:w - \__mathcolor_peek_catcode_ignore_filler_expand:NTF \c_group_begin_token - { \peek_catcode_remove:NT \c_group_begin_token { } } - { \__mathcolor_handle_unbraced_script:N } - }% \end{macrocode} - -\cs_new_protected:Npn \__mathcolor_handle_unbraced_script:N #1 { - #1 \c_group_end_token } -\tl_new:N \l__mathcolor_peek_tmp_tl -\cs_new_protected:Npn \__mathcolor_peek_catcode_ignore_filler_expand:NTF #1#2#3 - { - \tl_set:Nn \l__mathcolor_peek_tmp_tl - { \token_if_eq_catcode:NNTF \l_peek_token #1 {#2} {#3} } - \__mathcolor_peek_expand:w - } -\cs_new_protected:Npn \__mathcolor_peek_expand:w - { - \exp_after:wN \peek_catcode_remove:NTF - \exp_after:wN \c_space_token - \exp_after:wN \__mathcolor_peek_test_expand:w - \exp_after:wN \__mathcolor_peek_test_relax:w - \exp:w \exp_end_continue_f:w - } -\cs_new_protected:Npn \__mathcolor_peek_test_expand:w - { - \token_if_expandable:NTF \l_peek_token - { \__mathcolor_peek_expand:w } - { \l__mathcolor_peek_tmp_tl } + \peek_remove_filler:n + { + \token_if_eq_meaning:NNTF \l_peek_token \c_group_begin_token + { + \group_align_safe_end: % case 2 + \peek_catcode_remove:NT \c_group_begin_token { } + } + { + \exp_after:wN \group_align_safe_end: % case 3 + \use_ii_i:nn \c_group_end_token + } + } } -\cs_new_protected:Npn \__mathcolor_peek_test_relax:w - { - \peek_meaning_remove:NTF \scan_stop: - { \__mathcolor_peek_expand:w } - { \__mathcolor_peek_test_expand:w } - } \ExplSyntaxOff - %%%%%%%%%%%%%%%% \endinput %% diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footnotes.ltx b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footnotes.ltx index 560c1b98bae..66c25fc3e89 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footnotes.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footnotes.ltx @@ -34,7 +34,7 @@ %% %% File: latex-lab-footnotes.dtx \ProvidesFile{latex-lab-footnotes.ltx} - [2022-03-10 v0.6a changes to the footnote interfaces] + [2022-07-22 v0.6b changes to the footnote interfaces] % not looked at yet @@ -300,13 +300,13 @@ } -\DeclareDocumentCommand\footnotetext {om} { +\DeclareDocumentCommand\footnotetext {o+m} { \fnote_set_fnmark:nn {#1} \@mpfn \@footnotetext {#2} } -\DeclareDocumentCommand\footnote {om} { +\DeclareDocumentCommand\footnote {o+m} { \fnote_step_fnmark:nn {#1} \@mpfn \cs_set_eq:NN \__fnote_footnotemark_finish: \prg_do_nothing: \@footnotemark diff --git a/Master/texmf-dist/tex/latex/tools/array.sty b/Master/texmf-dist/tex/latex/tools/array.sty index 6d72accba91..e3c173cffcb 100644 --- a/Master/texmf-dist/tex/latex/tools/array.sty +++ b/Master/texmf-dist/tex/latex/tools/array.sty @@ -46,7 +46,7 @@ \DeclareCurrentRelease{}{2020-10-01} \ProvidesPackage{array} - [2022/03/10 v2.5f Tabular extension package (FMi)] + [2022/09/04 v2.5g Tabular extension package (FMi)] %% \def\@addtopreamble#1{\xdef\@preamble{\@preamble #1}} @@ -126,7 +126,7 @@ \newbox\ar@mcellbox \def\ar@align@mcell{% - \ifdim \ht\ar@mcellbox > \ht\@arstrutbox + \ifdim \ht\ar@mcellbox > \ht\strutbox \begingroup \dimen@\ht\ar@mcellbox \advance\dimen@-\ht\@arstrutbox diff --git a/Master/texmf-dist/tex/latex/tools/verbatim.sty b/Master/texmf-dist/tex/latex/tools/verbatim.sty index 57883e192ae..48d13747019 100644 --- a/Master/texmf-dist/tex/latex/tools/verbatim.sty +++ b/Master/texmf-dist/tex/latex/tools/verbatim.sty @@ -39,7 +39,7 @@ %% Copyright (C) 1989--2003 by Rainer Sch\"opf. All rights reserved. \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{verbatim} - [2020-07-07 v1.5u LaTeX2e package for verbatim enhancements] + [2022-07-02 v1.5u LaTeX2e package for verbatim enhancements] \@ifundefined{verbatim@@@}{}{\endinput} \newtoks\every@verbatim \every@verbatim={} |