summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/base
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2022-11-01 19:57:17 +0000
committerKarl Berry <karl@freefriends.org>2022-11-01 19:57:17 +0000
commitcfd5d22753b4fdca36d85f59b8ba0e5d1e8a9ad0 (patch)
tree06d78cd6aa3bc8723a05ec9c682510ff774b3cef /Master/texmf-dist/tex/latex/base
parent820f14d57cd6b67d5793e43d5d1e4866a51ffaa7 (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/latex/base')
-rw-r--r--Master/texmf-dist/tex/latex/base/article.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/atbegshi-ltx.sty3
-rw-r--r--Master/texmf-dist/tex/latex/base/atveryend-ltx.sty4
-rw-r--r--Master/texmf-dist/tex/latex/base/bk10.clo2
-rw-r--r--Master/texmf-dist/tex/latex/base/bk11.clo2
-rw-r--r--Master/texmf-dist/tex/latex/base/bk12.clo2
-rw-r--r--Master/texmf-dist/tex/latex/base/book.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/doc.sty102
-rw-r--r--Master/texmf-dist/tex/latex/base/docstrip.tex16
-rw-r--r--Master/texmf-dist/tex/latex/base/latex.ltx424
-rw-r--r--Master/texmf-dist/tex/latex/base/latexrelease.sty517
-rw-r--r--Master/texmf-dist/tex/latex/base/ltluatex.lua208
-rw-r--r--Master/texmf-dist/tex/latex/base/ltluatex.tex2
-rw-r--r--Master/texmf-dist/tex/latex/base/omlcmm.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/omlcmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/omscmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/omscmsy.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/omxcmex.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmdh.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmfib.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmfr.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ot1cmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/report.cls2
-rw-r--r--Master/texmf-dist/tex/latex/base/shortvrb.sty2
-rw-r--r--Master/texmf-dist/tex/latex/base/size10.clo2
-rw-r--r--Master/texmf-dist/tex/latex/base/size11.clo2
-rw-r--r--Master/texmf-dist/tex/latex/base/size12.clo2
-rw-r--r--Master/texmf-dist/tex/latex/base/structuredlog.sty4
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmdh.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmfib.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmfr.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmr.fd5
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmss.fd20
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/t1cmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ts1cmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ts1cmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ts1cmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ts1cmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ucmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ucmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex/base/ucmtt.fd2
45 files changed, 1034 insertions, 339 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}%
{%