summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex-dev
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-05-04 22:31:00 +0000
committerKarl Berry <karl@freefriends.org>2021-05-04 22:31:00 +0000
commit79249345968fdf93852a9d6288e11ed512f00847 (patch)
treecedebc871343326014bcad24d68e3bb84ad99093 /Master/texmf-dist/tex/latex-dev
parent89ad34326c4bcdee034f82558a4be360d599e6d9 (diff)
latex-dev (5may21)
git-svn-id: svn://tug.org/texlive/trunk@59080 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex-dev')
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fontenc.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latex.ltx935
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latexrelease.sty1430
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/letter.cls2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltluatex.lua1
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltluatex.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltpara.ltx171
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omlenc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omsenc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1enc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot4enc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/structuredlog.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1enc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty1
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/textcomp.sty1
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tracefnt.sty5
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tuenc.def8
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/color.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/dvipdf.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/dvipsnam.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/dvipsone.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/dviwin.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/emtex.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/epsfig.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/graphics-2017-06-25.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/graphics.sty12
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/graphicx.sty8
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/keyval.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/lscape.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/pctex32.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/pctexhp.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/pctexps.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/pctexwin.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/rotating.sty8
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/tcidvi.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/trig.sty6
-rw-r--r--Master/texmf-dist/tex/latex-dev/graphics/truetex.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/array.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/bm.sty35
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/layout.sty10
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/longtable.sty20
-rw-r--r--Master/texmf-dist/tex/latex-dev/tools/trace.sty23
44 files changed, 2143 insertions, 623 deletions
diff --git a/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty b/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty
index ae05a7a297e..672479a434c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty
@@ -47,7 +47,7 @@
%%
%%% From File: ltshipout.dtx
\providecommand\ltshipoutversion{v1.0i}
-\providecommand\ltshipoutdate{2021/01/25}
+\providecommand\ltshipoutdate{2021/03/17}
\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-dev/base/atveryend-ltx.sty b/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty
index 543e9332dc5..663b13db340 100644
--- a/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty
+++ b/Master/texmf-dist/tex/latex-dev/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.0g}
-\providecommand\ltfilehookdate{2021/02/08}
+\providecommand\ltfilehookversion{v1.0j}
+\providecommand\ltfilehookdate{2021/04/29}
\ProvidesPackage{atveryend-ltx}
[2020/08/19 v1.0a
Emulation of the original atvery package^^Jwith kernel methods]
diff --git a/Master/texmf-dist/tex/latex-dev/base/fontenc.sty b/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
index 0bf32c52c98..ecc422cfe8a 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesPackage{fontenc}
- [2021/02/19 v2.0u
+ [2021/04/29 v2.0v
Standard LaTeX package]
\def\update@uclc@with@cyrillic{%
\expandafter\def\expandafter\@uclclist\expandafter
diff --git a/Master/texmf-dist/tex/latex-dev/base/latex.ltx b/Master/texmf-dist/tex/latex-dev/base/latex.ltx
index 2d22e178de4..942de9c0a35 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latex.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/latex.ltx
@@ -12,10 +12,12 @@
%% ltdefns.dtx (with options: `2ekernel')
%% ltcmd.dtx (with options: `2ekernel')
%% lthooks.dtx (with options: `2ekernel')
+%% ltcmdhooks.dtx (with options: `2ekernel')
%% ltalloc.dtx (with options: `2ekernel')
%% ltcntrl.dtx (with options: `2ekernel')
%% lterror.dtx (with options: `2ekernel')
%% ltpar.dtx (with options: `2ekernel')
+%% ltpara.dtx (with options: `2ekernel')
%% ltspace.dtx (with options: `2ekernel')
%% ltlogos.dtx (with options: `2ekernel')
%% ltfiles.dtx (with options: `2ekernel')
@@ -484,6 +486,8 @@
\errmessage{No room for a new #3}%
\fi}
\def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}}
+\newread\@inputcheck
+\newwrite\@unused
\newdimen\maxdimen \maxdimen=16383.99999pt % the largest legal <dimen>
\newskip\hideskip \hideskip=-1000pt plus 1fill % negative but can grow
\newdimen\p@ \p@=1pt % this saves macro space and time
@@ -509,6 +513,12 @@
\finalhyphendemerits=5000
\adjdemerits=10000
\tracinglostchars=1
+\ifx\directlua\@undefined
+ % \tracingstacklevels=0 % added in 2021
+\else
+ \newcount\tracingstacklevels
+ % Code for \tracingstacklevels defined in ltfinal.dtx
+\fi
\uchyph=1
\defaulthyphenchar=`\-
\defaultskewchar=-1
@@ -633,54 +643,25 @@
\gdef\loggingoutput{\tracingoutput\@ne
\showboxbreadth\maxdimen\showboxdepth\maxdimen\errorstopmode}
\gdef\showoutput{\loggingoutput\showoverfull}
-\ifx\tracingscantokens\@undefined
-\gdef\loggingall{%
- \tracingstats\tw@
- \tracingpages\@ne
- \tracinglostchars\@ne
- \tracingparagraphs\@ne
- \errorcontextlines\maxdimen
- \loggingoutput
- \tracingmacros\tw@
- \tracingcommands\tw@
- \tracingrestores\@ne
- }%
-\else
-\gdef\loggingall{%
+\edef\loggingall{%
\tracingstats\tw@
\tracingpages\@ne
- \tracinglostchars\tw@
+ \tracinglostchars\thr@@
\tracingparagraphs\@ne
\tracinggroups\@ne
\tracingifs\@ne
\tracingscantokens\@ne
\tracingnesting\@ne
\errorcontextlines\maxdimen
- \loggingoutput
+ \ifdefined\tracingstacklevels \tracingstacklevels\maxdimen \fi
+ \noexpand \loggingoutput
\tracingmacros\tw@
\tracingcommands\thr@@
\tracingrestores\@ne
\tracingassigns\@ne
}%
-\fi
-\gdef\tracingall{\showoverfull\loggingall}
-\ifx\tracingscantokens\@undefined
-\def\tracingnone{%
- \tracingonline\z@
- \tracingcommands\z@
- \showboxdepth\m@ne
- \showboxbreadth\m@ne
- \tracingoutput\z@
- \errorcontextlines\m@ne
- \tracingrestores\z@
- \tracingparagraphs\z@
- \tracingmacros\z@
- \tracinglostchars\@ne
- \tracingpages\z@
- \tracingstats\z@
-}%
-\else
-\def\tracingnone{%
+\def\tracingall{\showoverfull\loggingall}
+\edef\tracingnone{%
\tracingassigns\z@
\tracingrestores\z@
\tracingonline\z@
@@ -689,6 +670,7 @@
\showboxbreadth\m@ne
\tracingoutput\z@
\errorcontextlines\m@ne
+ \ifdefined\tracingstacklevels \tracingstacklevels\z@ \fi
\tracingnesting\z@
\tracingscantokens\z@
\tracingifs\z@
@@ -699,7 +681,6 @@
\tracingpages\z@
\tracingstats\z@
}%
-\fi
\def\hideoutput{%
\tracingoutput\z@
\showboxbreadth\m@ne
@@ -710,8 +691,8 @@
%%% From File: ltvers.dtx
\def\fmtname{LaTeX2e}
\edef\fmtversion
- {2021-05-01}
-\def\patch@level{-2}
+ {2021-06-01}
+\def\patch@level{-3}
\edef\development@branch@name{develop \the\year-\the\month-\the\day}
\iffalse
\def\reserved@a#1/#2/#3\@nil{%
@@ -775,17 +756,37 @@
{There is an \string\EndIncludeRelease\space missing}%
\@includeinreleasefalse
\fi
- \kernel@ifnextchar[%
- {\@IncludeInRelease{#1}}
- {\@IncludeInRelease{#1}[#1]}}
+ \ifnum0%
+ \ifx\new@moduledate\@empty\else 1\fi
+ \ifnum \expandafter\@parse@version#1//00\@nil=0 1\fi
+ =11
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\finish@module@release{#1}}%
+ {\kernel@ifnextchar[%
+ {\@IncludeInRelease{#1}}
+ {\@IncludeInRelease{#1}[#1]}}}
+\def\finish@module@release#1#2#3{%
+ \toks@{[#1] #3}%
+ \ifnum\expandafter\@parse@version\new@moduledate//00\@nil
+ >\expandafter\@parse@version\fmtversion//00\@nil
+ \GenericInfo{}{Applying: \the\toks@}%
+ \else
+ \GenericInfo{}{Skipping: \the\toks@}%
+ \expandafter\gobble@finish@module@release
+ \fi}
+\long\def\gobble@finish@module@release#1\EndModuleRelease{%
+ \EndModuleRelease}
\def\@IncludeInRelease#1[#2]{\@IncludeInRele@se{#2}}
\def\@IncludeInRele@se#1#2#3{%
\toks@{[#1] #3}%
\expandafter\ifx\csname\string#2+\@currname+IIR\endcsname\relax
\ifnum\expandafter\@parse@version#1//00\@nil
- >\expandafter\@parse@version\fmtversion//00\@nil
+ >\expandafter\@parse@version\fmtversion//00\@nil
\GenericInfo{}{Skipping: \the\toks@}%
- \expandafter\expandafter\expandafter\@gobble@IncludeInRelease
+ \expandafter\expandafter\expandafter\@gobble@IncludeInRelease
\else
\GenericInfo{}{Applying: \the\toks@}%
\@includeinreleasetrue
@@ -801,6 +802,9 @@
\@includeinreleasefalse
\else
\PackageError{latexrelease}{mis-matched EndIncludeInRelease}{}%
+\fi
+\if@skipping@module
+ \expandafter\new@module@skip
\fi}
\long\def\@gobble@IncludeInRelease#1\EndIncludeInRelease{%
\@includeinreleasefalse
@@ -810,6 +814,47 @@
#2#3\@end@check@IncludeInRelease{%
\ifx\@check@IncludeInRelease#2\else
\PackageError{latexrelease}{skipped IncludeInRelease for tag \string#2}{}%
+ \fi
+ \if@skipping@module
+ \expandafter\new@module@skip
+ \fi}
+\let\if@skipping@module\iffalse
+\def\@skipping@moduletrue{\let\if@skipping@module\iftrue}
+\def\@skipping@modulefalse{\let\if@skipping@module\iffalse}
+\let\new@modulename\@empty
+\let\new@moduledate\@empty
+\def\NewModuleRelease#1#2#3{%
+ \ifx\new@modulename\@empty \else
+ \@latex@error{Nested \noexpand\NewModuleRelease forbidden.}\@ehd \fi
+ \edef\new@moduledate{#1}%
+ \edef\new@modulename{#2}%
+ \GenericInfo{}{BEGIN module: \new@modulename\space (\new@moduledate)}%
+ \GenericInfo{}{ \@spaces\@spaces\@spaces\space#3\@gobble}%
+ \ifnum\sourceLaTeXdate<%
+ \expandafter\@parse@version\new@moduledate//00\@nil\relax
+ \ifnum\expandafter\@parse@version\fmtversion//00\@nil<%
+ \expandafter\@parse@version\new@moduledate//00\@nil\relax
+ \GenericInfo{}{Skipping module \new@modulename}%
+ \expandafter\expandafter
+ \expandafter\gobble@finish@module@release
+ \else
+ \GenericInfo{}{Applying module \new@modulename}
+ \@skipping@modulefalse
+ \fi
+ \else
+ \GenericInfo{}{Skipping module \new@modulename}
+ \@skipping@moduletrue
+ \expandafter\new@module@skip
+ \fi}
+\long\def\new@module@skip#1\IncludeInRelease{\IncludeInRelease}
+\def\EndModuleRelease{%
+ \ifx\new@modulename\@empty
+ \@latex@error{Extra \string\EndModuleRelease.}\@eha
+ \else
+ \GenericInfo{}{END module: \new@modulename\space (\new@moduledate)}%
+ \let\new@modulename\@empty
+ \let\new@moduledate\@empty
+ \@skipping@modulefalse
\fi}
%%% From File: ltluatex.dtx
\ifx\directlua\@undefined\else
@@ -991,8 +1036,12 @@
}
\fi
%%% From File: ltexpl.dtx
-\let\@kernel@after@enddocument\@empty
-\let\@kernel@after@enddocument@afterlastpage\@empty
+\ifx\@kernel@after@enddocument\@undefined
+ \let \@kernel@after@enddocument \@empty
+ \let \@kernel@after@enddocument@afterlastpage \@empty
+ \let \@kernel@before@begindocument \@empty
+ \let \@kernel@after@begindocument \@empty
+\fi
\def\reserved@a#1{\ifdefined#1\else\def#1{}\fi}
\reserved@a\@expl@sys@load@backend@@
\reserved@a\@expl@push@filename@@
@@ -1623,8 +1672,8 @@
\xdef#1{\the\toks@}%
\endgroup}
%%% From File: ltcmd.dtx
-\def\ltcmdversion{v1.0a}
-\def\ltcmddate{2021/01/21}
+\def\ltcmdversion{v1.0d}
+\def\ltcmddate{2021-04-19}
\message{document commands,}
\ExplSyntaxOn
\tl_new:N \l__cmd_arg_spec_tl
@@ -3330,7 +3379,7 @@
}
\cs_new_protected:Npn \__cmd_get_arg_spec:NTF #1#2#3
{
- \__cmd_cmd_if_xparse:NTF #1
+ \__kernel_cmd_if_xparse:NTF #1
{
\tl_set:Nx \ArgumentSpecification { \tl_item:Nn #1 { 2 } }
#2
@@ -3430,7 +3479,7 @@
#1 {#2} {#4}
\__cmd_tl_mapthread_loop:w #1#3 \q_mark
}
-\cs_new_protected:Npn \__cmd_cmd_if_xparse:NTF #1
+\cs_new_protected:Npn \__kernel_cmd_if_xparse:NTF #1
{
\exp_args:Nf \str_case_e:nnTF
{
@@ -3883,8 +3932,9 @@
\cs_new_eq:NN \ShowDocumentEnvironmentArgSpec \__cmd_show_arg_spec:n
\ExplSyntaxOff
%%% From File: lthooks.dtx
-\def\lthooksversion{v1.0h}
-\def\lthooksdate{2021/01/15}
+\def\lthooksversion{v1.0m}
+\def\lthooksdate{2021/04/29}
+
\ExplSyntaxOn
\bool_new:N \g__hook_debug_bool
\cs_new_eq:NN \__hook_debug:n \use_none:n
@@ -3949,24 +3999,34 @@
\cs_new_protected:Npn \__hook_tl_gclear:N #1
{ \__hook_tl_gset_eq:NN #1 \c_empty_tl }
\cs_generate_variant:Nn \__hook_tl_gclear:N { c }
+
+
\cs_new_protected:Npn \hook_new:n #1
{ \__hook_normalize_hook_args:Nn \__hook_new:n {#1} }
\cs_new_protected:Npn \__hook_new:n #1
{
- \hook_if_exist:nTF {#1}
- { \msg_error:nnn { hooks } { exists } {#1} }
+ \__hook_if_declared:nTF {#1}
+ { \__kernel_msg_error:nnn { hooks } { exists } {#1} }
+ {
+ \tl_new:c { g__hook_#1_declared_tl }
+ \__hook_make_usable:n {#1}
+ }
+ }
+\cs_new_protected:Npn \__hook_make_usable:n #1
+ {
+ \tl_if_exist:cF { __hook~#1 }
{
\seq_gput_right:Nn \g__hook_all_seq {#1}
\tl_new:c { __hook~#1 }
- \__hook_declare:n {#1}
- \clist_new:c {g__hook_#1_labels_clist}
+ \__hook_init_structure:n {#1}
+ \clist_new:c { g__hook_#1_labels_clist }
\tl_new:c { g__hook_#1_reversed_tl }
\__hook_include_legacy_code_chunk:n {#1}
- }
+ }
}
-\cs_new_protected:Npn \__hook_declare:n #1
+\cs_new_protected:Npn \__hook_init_structure:n #1
{
- \__hook_if_exist:nF {#1}
+ \__hook_if_structure_exist:nF {#1}
{
\prop_new:c { g__hook_#1_code_prop }
\tl_new:c { __hook_toplevel~#1 }
@@ -3994,6 +4054,44 @@
}
}
}
+\cs_new_protected:Npn \hook_disable:n #1
+ { \__hook_normalize_hook_args:Nn \__hook_disable:n {#1} }
+\cs_new_protected:Npn \__hook_disable:n #1
+ {
+ \tl_gclear_new:c { g__hook_#1_declared_tl }
+ \cs_undefine:c { __hook~#1 }
+ }
+\prg_new_conditional:Npnn \__hook_if_disabled:n #1 { p, T, F, TF }
+ {
+ \bool_lazy_and:nnTF
+ { \tl_if_exist_p:c { g__hook_#1_declared_tl } }
+ { ! \tl_if_exist_p:c { __hook~#1 } }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+\cs_new_protected:Npn \hook_provide:n #1
+ { \__hook_normalize_hook_args:Nn \__hook_provide:nn {#1} { } }
+\cs_new_protected:Npn \hook_provide_reversed:n #1
+ { \__hook_normalize_hook_args:Nn \__hook_provide:nn {#1} { - } }
+\cs_new_protected:Npn \__hook_provide:nn #1 #2
+ {
+ \__hook_if_disabled:nTF {#1}
+ { \__kernel_msg_warning:nnn { hooks } { provide-disabled } {#1} }
+ {
+ \__hook_if_declared:nTF {#1}
+ {
+ \str_if_eq:eeF { \tl_use:c { g__hook_#1_reversed_tl } } {#2}
+ { \__kernel_msg_error:nnn { hooks } { provide-error } {#1} }
+ }
+ {
+ \tl_new:c { g__hook_#1_declared_tl }
+ \__hook_make_usable:n {#1}
+ \tl_gset:cn { g__hook_#1_reversed_tl } {#2}
+ }
+ }
+ }
+\cs_new_protected:Npn \hook_provide_pair:nn #1#2
+ { \hook_provide:n {#1} \hook_provide_reversed:n {#2} }
\cs_new:Npn \__hook_parse_label_default:n #1
{
\tl_if_novalue:nTF {#1}
@@ -4004,7 +4102,7 @@
{
\tl_if_empty:nTF {#1}
{
- \msg_expandable_error:nn { hooks } { empty-label }
+ \__kernel_msg_expandable_error:nn { hooks } { empty-label }
\__hook_currname_or_default:
}
{
@@ -4032,7 +4130,7 @@
{
\tl_if_empty:NTF \@currname
{
- \msg_expandable_error:nnn { hooks } { should-not-happen }
+ \__kernel_msg_expandable_error:nnn { hooks } { should-not-happen }
{ Empty~default~label. }
\__hook_make_name:n { label-missing }
}
@@ -4089,12 +4187,16 @@
\__hook_if_marked_removal:nnTF {#1} {#2}
{ \__hook_unmark_removal:nn {#1} {#2} }
{
- \hook_if_exist:nTF {#1}
+ \__hook_if_usable:nTF {#1}
{
\__hook_hook_gput_code_do:nnn {#1} {#2} {#3}
\__hook_update_hook_code:n {#1}
}
- { \__hook_try_declaring_generic_hook:nnn {#1} {#2} {#3} }
+ {
+ \__hook_if_disabled:nTF {#1}
+ { \__kernel_msg_error:nnn { hooks } { hook-disabled } {#1} }
+ { \__hook_try_declaring_generic_hook:nnn {#1} {#2} {#3} }
+ }
}
}
}
@@ -4102,17 +4204,17 @@
\cs_new_protected:Npn \__hook_hook_gput_code_do:nnn #1 #2 #3
{
\__hook_debug:n{\iow_term:x{****~ Add~ to~
- \hook_if_exist:nF {#1} { undeclared~ }
+ \__hook_if_usable:nF {#1} { undeclared~ }
hook~ #1~ (#2)
\on@line\space <-~ \tl_to_str:n{#3}} }
\str_if_eq:nnTF {#2} { top-level }
{
\str_if_eq:eeTF { top-level } { \__hook_currname_or_default: }
{
- \__hook_declare:n {#1}
+ \__hook_init_structure:n {#1}
\__hook_tl_gput_right:cn { __hook_toplevel~#1 } {#3}
}
- { \msg_error:nnn { hooks } { misused-top-level } {#1} }
+ { \__kernel_msg_error:nnn { hooks } { misused-top-level } {#1} }
}
{
\prop_get:cnNTF { g__hook_#1_code_prop } {#2} \l__hook_return_tl
@@ -4125,7 +4227,7 @@
}
\cs_new_protected:Npn \__hook_gput_undeclared_hook:nnn #1 #2 #3
{
- \__hook_declare:n {#1}
+ \__hook_init_structure:n {#1}
\__hook_hook_gput_code_do:nnn {#1} {#2} {#3}
}
\cs_new_protected:Npn \__hook_try_declaring_generic_hook:nnn #1
@@ -4161,7 +4263,12 @@
{
\prop_if_in:NnTF \c__hook_generics_prop {#1}
{
- \hook_if_exist:nF {#5} { \hook_new:n {#5} }
+ \__hook_if_usable:nF {#5}
+ {
+ \str_if_eq:nnT {#1} { cmd }
+ { \__hook_try_put_cmd_hook:n {#5} }
+ \__hook_make_usable:n {#5}
+ }
\prop_if_in:NnTF \c__hook_generics_reversed_ii_prop {#2}
{ \tl_gset:cn { g__hook_#5_reversed_tl } { - } }
{
@@ -4201,7 +4308,7 @@
{ \__hook_strip_double_slash:w #1/#2/#3 / #4 \s__hook_mark }
}
\prop_const_from_keyval:Nn \c__hook_generics_prop
- {env=,file=,package=,class=,include=}
+ {cmd=,env=,file=,package=,class=,include=}
\prop_const_from_keyval:Nn \c__hook_generics_reversed_ii_prop {after=,end=}
\prop_const_from_keyval:Nn \c__hook_generics_reversed_iii_prop {after=}
\prop_const_from_keyval:Nn \c__hook_generics_file_prop {before=,after=}
@@ -4209,7 +4316,7 @@
{ \__hook_normalize_hook_args:Nnn \__hook_gremove_code:nn {#1} {#2} }
\cs_new_protected:Npn \__hook_gremove_code:nn #1 #2
{
- \__hook_if_exist:nTF {#1}
+ \__hook_if_structure_exist:nTF {#1}
{
\str_if_eq:nnTF {#2} {*}
{
@@ -4227,7 +4334,7 @@
{#1} {#2}
}
}
- \hook_if_exist:nT {#1}
+ \__hook_if_usable:nT {#1}
{ \__hook_update_hook_code:n {#1} }
}
{ \__hook_mark_removal:nn {#1} {#2} }
@@ -4262,14 +4369,14 @@
}
\cs_new_protected:Npn \__hook_gset_rule:nnnn #1#2#3#4
{
- \__hook_declare:n {#1}
+ \__hook_init_structure:n {#1}
\__hook_rule_gclear:nnn {#1} {#2} {#4}
\cs_if_exist_use:cTF { __hook_rule_#3_gset:nnn }
{
{#1} {#2} {#4}
\__hook_update_hook_code:n {#1}
}
- { \msg_error:nnnnnn { hooks } { unknown-rule }
+ { \__kernel_msg_error:nnnnnn { hooks } { unknown-rule }
{#1} {#2} {#3} {#4} }
}
\cs_new_protected:Npn \__hook_rule_before_gset:nnn #1#2#3
@@ -4310,7 +4417,7 @@
{
\if_int_compare:w \__hook_str_compare:nn {#1} {#2} > 0 \exp_stop_f:
\prg_return_true:
- \else
+ \else:
\prg_return_false:
\fi:
}
@@ -4344,7 +4451,7 @@
\__hook_debug:n{ \iow_term:x{^^JUpdate~ code~ for~ hook~
'#1' \on@line :^^J} }
\__hook_include_legacy_code_chunk:n {#1}
- \hook_if_exist:nT {#1}
+ \__hook_if_usable:nT {#1}
{
\prop_if_empty:cTF {g__hook_#1_code_prop}
{
@@ -4488,7 +4595,7 @@
\cs_new_protected:cpn { __hook_apply_rule_xE:nnn } #1#2#3
{
\__hook_debug:n { \__hook_msg_pair_found:nnn {#1} {#2} {#3} }
- \msg_error:nnnnnn { hooks } { labels-incompatible }
+ \__kernel_msg_error:nnnnnn { hooks } { labels-incompatible }
{#1} {#2} {#3} { 1 }
\use:c { __hook_apply_rule_->:nnn } {#1} {#2} {#3}
\use:c { __hook_apply_rule_<-:nnn } {#1} {#2} {#3}
@@ -4496,7 +4603,7 @@
\cs_new_protected:cpn { __hook_apply_rule_xW:nnn } #1#2#3
{
\__hook_debug:n { \__hook_msg_pair_found:nnn {#1} {#2} {#3} }
- \msg_warning:nnnnnn { hooks } { labels-incompatible }
+ \__kernel_msg_warning:nnnnnn { hooks } { labels-incompatible }
{#1} {#2} {#3} { 0 }
}
\cs_new_protected:cpn { __hook_apply_rule_->:nnn } #1#2#3
@@ -4564,8 +4671,10 @@
{
\__hook_preamble_hook:n {#1}
\__hook_log_cmd:x { ^^J ->~The~hook~'#1': }
- \hook_if_exist:nF {#1}
- { \__hook_log_line:x { is~not~declared! } }
+ \__hook_if_usable:nF {#1}
+ { \__hook_log_line:x { The~hook~is~not~declared. } }
+ \__hook_if_disabled:nT {#1}
+ { \__hook_log_line:x { The~hook~is~disabled. } }
\hook_if_empty:nTF {#1}
{ #2 { The~hook~is~empty } }
{
@@ -4579,7 +4688,7 @@
\__hook_log_line:x
{
Document-level~(top-level)~code
- \hook_if_exist:nT {#1}
+ \__hook_if_usable:nT {#1}
{ ~(executed~\__hook_if_reversed:nTF {#1} {first} {last} ) } :
}
\__hook_log_line_indent:x
@@ -4610,7 +4719,7 @@
\bool_if:NT \l__hook_tmpa_bool
{ \__hook_log_line_indent:x { --- } }
\bool_lazy_and:nnTF
- { \hook_if_exist_p:n {#1} }
+ { \__hook_if_usable_p:n {#1} }
{ ! \hook_if_empty_p:n {#1} }
{
\__hook_log_line:x
@@ -4632,10 +4741,12 @@
}
}
{
+ \__hook_log_line:x { Execution~order: }
#2
{
- Hook~ \hook_if_exist:nTF {#1}
- {code~pool~empty} {not~declared}
+ \@spaces Not~set~because~the~hook~ \__hook_if_usable:nTF {#1}
+ { code~pool~is~empty }
+ { is~\__hook_if_disabled:nTF {#1} {disabled} {undeclared} }
}
}
}
@@ -4691,10 +4802,14 @@
{ \__hook_normalize_hook_args:Nn \__hook_gput_next_code:nn {#1} }
\cs_new_protected:Npn \__hook_gput_next_code:nn #1 #2
{
- \__hook_declare:n {#1}
- \hook_if_exist:nTF {#1}
- { \__hook_gput_next_do:nn {#1} {#2} }
- { \__hook_try_declaring_generic_next_hook:nn {#1} {#2} }
+ \__hook_if_disabled:nTF {#1}
+ { \__kernel_msg_error:nnn { hooks } { hook-disabled } {#1} }
+ {
+ \__hook_init_structure:n {#1}
+ \__hook_if_usable:nTF {#1}
+ { \__hook_gput_next_do:nn {#1} {#2} }
+ { \__hook_try_declaring_generic_next_hook:nn {#1} {#2} }
+ }
}
\cs_new_protected:Npn \__hook_gput_next_do:nn #1
{
@@ -4746,12 +4861,12 @@
{
\__hook_if_file_hook:wTF #1 / / \s__hook_mark
{
- \exp_args:Ne \__hook_if_exist_use:n
+ \exp_args:Ne \__hook_if_usable_use:n
{ \exp_args:Ne \__hook_file_hook_normalize:n {#1} }
}
- { \__hook_if_exist_use:n {#1} } % file/ generic hook (e.g. file/before)
+ { \__hook_if_usable_use:n {#1} } % file/ generic hook (e.g. file/before)
}
-\cs_new_protected:Npn \__hook_if_exist_use:n #1
+\cs_new_protected:Npn \__hook_if_usable_use:n #1
{
\tl_if_exist:cT { __hook~#1 }
{
@@ -4771,9 +4886,10 @@
}
\cs_new_protected:Npn \__hook_use_once_store:n #1
{ \prop_gput:Nnn \g__hook_execute_immediately_prop {#1} { } }
+
\prg_new_conditional:Npnn \hook_if_empty:n #1 { p , T , F , TF }
{
- \__hook_if_exist:nTF {#1}
+ \__hook_if_structure_exist:nTF {#1}
{
\bool_lazy_and:nnTF
{ \prop_if_empty_p:c { g__hook_#1_code_prop } }
@@ -4787,18 +4903,24 @@
}
{ \prg_return_true: }
}
-\prg_new_conditional:Npnn \hook_if_exist:n #1 { p , T , F , TF }
+\prg_new_conditional:Npnn \__hook_if_usable:n #1 { p , T , F , TF }
{
\tl_if_exist:cTF { __hook~#1 }
{ \prg_return_true: }
{ \prg_return_false: }
}
-\prg_new_conditional:Npnn \__hook_if_exist:n #1 { p , T , F , TF }
+\prg_new_conditional:Npnn \__hook_if_structure_exist:n #1 { p , T , F , TF }
{
\prop_if_exist:cTF { g__hook_#1_code_prop }
{ \prg_return_true: }
{ \prg_return_false: }
}
+\prg_new_conditional:Npnn \__hook_if_declared:n #1 { p, T, F, TF }
+ {
+ \tl_if_exist:cTF { g__hook_#1_declared_tl }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
\prg_new_conditional:Npnn \__hook_if_reversed:n #1 { p , T , F , TF }
{
\if_int_compare:w \cs:w g__hook_#1_reversed_tl \cs_end: 1 < 0 \exp_stop_f:
@@ -4807,47 +4929,54 @@
\prg_return_false:
\fi:
}
-\msg_new:nnnn { hooks } { labels-incompatible }
+\__kernel_msg_new:nnnn { hooks } { labels-incompatible }
{
- Labels~`#1'~and~`#2'~are~incompatible
- \str_if_eq:nnF {#3} {??} { ~in~hook~`#3' } .~
+ Labels~'#1'~and~'#2'~are~incompatible
+ \str_if_eq:nnF {#3} {??} { ~in~hook~'#3' } .~
\int_compare:nNnTF {#4} = { 1 }
{ The~ code~ for~ both~ labels~ will~ be~ dropped. }
{ You~ may~ see~ errors~ later. }
}
{ LaTeX~found~two~incompatible~labels~in~the~same~hook.~
This~indicates~an~incompatibility~between~packages. }
-\msg_new:nnnn { hooks } { exists }
- { Hook~`#1'~ has~ already~ been~ declared. }
+\__kernel_msg_new:nnnn { hooks } { exists }
+ { Hook~'#1'~ has~ already~ been~ declared. }
{ There~ already~ exists~ a~ hook~ declaration~ with~ this~
name.\\
Please~ use~ a~ different~ name~ for~ your~ hook.}
-\msg_new:nnn { hooks } { empty-label }
+\__kernel_msg_new:nnnn { hooks } { hook-disabled }
+ { Cannot~add~code~to~disabled~hook~'#1'. }
+ {
+ The~hook~'#1'~you~tried~to~add~code~to~was~previously~disabled~
+ with~\iow_char:N\\hook_disable:n~or~\iow_char:N\\DisableHook,~so~
+ it~cannot~have~code~added~to~it.
+ }
+\__kernel_msg_new:nnn { hooks } { empty-label }
{
Empty~code~label~\msg_line_context:.~
- Using~`\__hook_currname_or_default:'~instead.
+ Using~'\__hook_currname_or_default:'~instead.
}
-\msg_new:nnn { hooks } { no-default-label }
+\__kernel_msg_new:nnn { hooks } { no-default-label }
{
Missing~(empty)~default~label~\msg_line_context:. \\
This~command~was~ignored.
}
-\msg_new:nnnn { hooks } { unknown-rule }
- { Unknown~ relationship~ `#3'~
- between~ labels~ `#2'~ and~ `#4'~
- \str_if_eq:nnF {#1} {??} { ~in~hook~`#1' }. ~
+\__kernel_msg_new:nnnn { hooks } { unknown-rule }
+ { Unknown~ relationship~ '#3'~
+ between~ labels~ '#2'~ and~ '#4'~
+ \str_if_eq:nnF {#1} {??} { ~in~hook~'#1' }. ~
Perhaps~ a~ missspelling?
}
{
The~ relation~ used~ not~ known~ to~ the~ system.~ Allowed~ values~ are~
- `before'~ or~ `<',~
- `after'~ or~ `>',~
- `incompatible-warning',~
- `incompatible-error',~
- `voids'~ or~
- `unrelated'.
+ 'before'~ or~ '<',~
+ 'after'~ or~ '>',~
+ 'incompatible-warning',~
+ 'incompatible-error',~
+ 'voids'~ or~
+ 'unrelated'.
}
-\msg_new:nnnn { hooks } { misused-top-level }
+\__kernel_msg_new:nnnn { hooks } { misused-top-level }
{
Illegal~\iow_char:N \\AddToHook{#1}[top-level]{...}.\\
'top-level'~is~reserved~for~the~user's~document.
@@ -4858,36 +4987,56 @@
'\__hook_currname_or_default:'~for~this~\@cls@pkg,~or~another~
suitable~label.
}
-\msg_new:nnn { hooks } { set-top-level }
+\__kernel_msg_new:nnn { hooks } { set-top-level }
{
- You~cannot~change~the~default~label~#1~`top-level'.~Illegal \\
+ You~cannot~change~the~default~label~#1~'top-level'.~Illegal \\
\use:nn { ~ } { ~ } \iow_char:N \\#2{#3} \\
\msg_line_context:.
}
-\msg_new:nnn { hooks } { ddhl-deprecated }
+\__kernel_msg_new:nnn { hooks } { ddhl-deprecated }
{
\iow_char:N \\DeclareDefaultHookLabel~is~deprecated.\\
Use~\iow_char:N \\SetDefaultHookLabel~instead.\\ \\
The~deprecated~name~will~be~removed~in~the~next~release.
}
-\msg_new:nnn { hooks } { extra-pop-label }
+\__kernel_msg_new:nnn { hooks } { extra-pop-label }
{
Extra~\iow_char:N \\PopDefaultHookLabel. \\
This~command~will~be~ignored.
}
-\msg_new:nnn { hooks } { missing-pop-label }
+\__kernel_msg_new:nnn { hooks } { missing-pop-label }
{
Missing~\iow_char:N \\PopDefaultHookLabel. \\
- The~label~`#1'~was~pushed~but~never~popped.~Something~is~wrong.
+ The~label~'#1'~was~pushed~but~never~popped.~Something~is~wrong.
}
-\msg_new:nnn { hooks } { should-not-happen }
+\__kernel_msg_new:nnn { hooks } { should-not-happen }
{
ERROR!~This~should~not~happen.~#1 \\
Please~report~at~https://github.com/latex3/latex2e.
}
+\__kernel_msg_new:nnn { hooks } { provide-disabled }
+ {
+ Can't~ provide~ hook~ '#1'~ because~ it~ is~ disabled!
+ }
+\__kernel_msg_new:nnnn { hooks } { provide-error }
+ {
+ Hook~'#1'~ already~ declared~ as~ a~
+ \__hook_if_reversed:nTF {#1} { reversed } { normal }~ hook!
+ }
+ {
+ You~ attempted~ to~ provide~ the~ hook~'#1'~ as~ a~
+ \__hook_if_reversed:nTF {#1} { normal } { reversed }~ hook,~ but~ it~
+ was~ already~ previously~ declared~ as~ a~
+ \__hook_if_reversed:nTF {#1} { reversed } { normal }~ hook.~
+ A~ redeclaration~ is~ not~ possible.
+ }
\NewDocumentCommand \NewHook { m }{ \hook_new:n {#1} }
\NewDocumentCommand \NewReversedHook { m }{ \hook_new_reversed:n {#1} }
\NewDocumentCommand \NewMirroredHookPair { mm }{ \hook_new_pair:nn {#1}{#2} }
+\NewDocumentCommand \ProvideHook { m }{ \hook_provide:n {#1} }
+\NewDocumentCommand \ProvideReversedHook { m }{ \hook_provide_reversed:n {#1} }
+\NewDocumentCommand \ProvideMirroredHookPair { mm }{ \hook_provide_pair:nn {#1}{#2} }
+\NewDocumentCommand \DisableHook { m }{ \hook_disable:n {#1} }
\NewDocumentCommand \AddToHook { m o +m }
{ \hook_gput_code:nnn {#1} {#2} {#3} }
\NewDocumentCommand \AddToHookNext { m +m }
@@ -4900,11 +5049,11 @@
\cs_new_protected:Npn \__hook_curr_name_push_aux:n #1
{
\tl_if_blank:nTF {#1}
- { \msg_error:nn { hooks } { no-default-label } }
+ { \__kernel_msg_error:nn { hooks } { no-default-label } }
{
\str_if_eq:nnTF {#1} { top-level }
{
- \msg_error:nnnnn { hooks } { set-top-level }
+ \__kernel_msg_error:nnnnn { hooks } { set-top-level }
{ to } { PushDefaultHookLabel } {#1}
}
{
@@ -4917,7 +5066,7 @@
{
\seq_gpop:NNTF \g__hook_name_stack_seq \l__hook_return_tl
{ \tl_gset_eq:NN \g__hook_hook_curr_name_tl \l__hook_return_tl }
- { \msg_error:nn { hooks } { extra-pop-label } }
+ { \__kernel_msg_error:nn { hooks } { extra-pop-label } }
}
\tl_gput_right:Nn \@kernel@after@enddocument@afterlastpage
{ \__hook_end_document_label_check: }
@@ -4925,7 +5074,7 @@
{
\seq_gpop:NNT \g__hook_name_stack_seq \l__hook_return_tl
{
- \msg_error:nnx { hooks } { missing-pop-label }
+ \__kernel_msg_error:nnx { hooks } { missing-pop-label }
{ \g__hook_hook_curr_name_tl }
\tl_gset_eq:NN \g__hook_hook_curr_name_tl \l__hook_return_tl
\__hook_end_document_label_check:
@@ -4935,7 +5084,7 @@
{
\seq_if_empty:NTF \g__hook_name_stack_seq
{
- \msg_error:nnnnn { hooks } { set-top-level }
+ \__kernel_msg_error:nnnnn { hooks } { set-top-level }
{ for } { SetDefaultHookLabel } {#1}
}
{ \exp_args:Nx \__hook_set_default_label:n { \__hook_make_name:n {#1} } }
@@ -4944,14 +5093,14 @@
{
\str_if_eq:nnTF {#1} { top-level }
{
- \msg_error:nnnnn { hooks } { set-top-level }
+ \__kernel_msg_error:nnnnn { hooks } { set-top-level }
{ to } { SetDefaultHookLabel } {#1}
}
{ \tl_gset:Nn \g__hook_hook_curr_name_tl {#1} }
}
\NewDocumentCommand \DeclareDefaultHookLabel { m }
{
- \msg_error:nn { hooks } { ddhl-deprecated }
+ \__kernel_msg_error:nn { hooks } { ddhl-deprecated }
\SetDefaultHookLabel {#1}
}
\NewDocumentCommand \PushDefaultHookLabel { m }
@@ -4977,15 +5126,328 @@
\@onlypreamble\DeclareDefaultHookRule
\NewDocumentCommand \ClearHookRule { m m m }
{ \hook_gset_rule:nnnn {#1}{#2}{unrelated}{#3} }
-\cs_new_eq:NN \IfHookExistsTF \hook_if_exist:nTF
\cs_new_eq:NN \IfHookEmptyTF \hook_if_empty:nTF
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
+\cs_new_eq:NN \IfHookExistsTF \__hook_if_usable:nTF
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cs_new_eq:NN \@expl@@@initialize@all@@
\__hook_initialize_all:
\cs_new_eq:NN \@expl@@@hook@curr@name@pop@@
\__hook_curr_name_pop:
\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% File: ltcmdhooks.dtx (C) Copyright 2020-2021
+%% Frank Mittelbach, Phelype Oleinik, LaTeX Team
+%%% From File: ltcmdhooks.dtx
+\def\ltcmdhooksversion{v1.0a}
+\def\ltcmdhooksdate{2021/04/30}
+\ExplSyntaxOn
+\tl_new:N \g_hook_patch_action_list_tl
+\int_new:N \l__hook_patch_num_args_int
+\tl_new:N \l__hook_patch_prefixes_tl
+\tl_new:N \l__hook_patch_param_text_tl
+\tl_new:N \l__hook_patch_replacement_tl
+\prop_new:N \g__hook_delayed_patches_prop
+\cs_new_protected:Npn \__hook_patch_debug:x #1
+ { \__hook_debug:n { \iow_term:x { [lthooks]~#1 } } }
+\cs_generate_variant:Nn \tl_rescan:nn { nV }
+\cs_new_protected:Npn \__hook_try_put_cmd_hook:n #1
+ { \__hook_try_put_cmd_hook:w #1 / / / \s__hook_mark {#1} }
+\cs_new_protected:Npn \__hook_try_put_cmd_hook:w
+ #1 / #2 / #3 / #4 \s__hook_mark #5
+ {
+ \__hook_debug:n { \iow_term:n { ->~Adding~cmd~hook~to~'#2'~(#3): } }
+ \str_case:nnTF {#3}
+ { { before } { } { after } { } }
+ { \exp_args:Nc \__hook_patch_cmd_or_delay:Nnn {#2} {#2} {#3} }
+ { \__kernel_msg_error:nnn { hooks } { wrong-cmd-hook } {#2} {#3} }
+ }
+\cs_new_protected:Npn \__hook_patch_cmd_or_delay:Nnn #1 #2 #3
+ {
+ \__hook_debug:n { \iow_term:n { ->~Add~generic~cmd~hook~for~#2~(#3). } }
+ \__hook_debug:n
+ { \iow_term:n { !~In~the~preamble:~delaying. } }
+ \prop_gput:Nnn \g__hook_delayed_patches_prop { #2 / #3 }
+ { \__hook_cmd_try_patch:nn {#2} {#3} }
+ }
+\cs_new_protected:Npn \__hook_cmd_begindocument_code:
+ {
+ \cs_gset_eq:NN \__hook_patch_cmd_or_delay:Nnn \__hook_patch_command:Nnn
+ \prop_map_function:NN \g__hook_delayed_patches_prop { \use_ii:nn }
+ \prop_gclear:N \g__hook_delayed_patches_prop
+ \cs_undefine:N \__hook_cmd_begindocument_code:
+ }
+\g@addto@macro \@kernel@after@begindocument
+ { \__hook_cmd_begindocument_code: }
+\cs_new_protected:Npn \__hook_cmd_try_patch:nn #1 #2
+ {
+ \__hook_debug:n
+ { \iow_term:x { ->~\string\begin{document}~try~cmd / #1 / #2. } }
+ \__hook_if_declared:nTF { cmd / #1 / #2 }
+ {
+ \__hook_debug:n
+ { \iow_term:n { .->~Giving~up:~hook~already~created. } }
+ }
+ {
+ \cs_if_exist:cT {#1}
+ { \exp_args:Nc \__hook_patch_command:Nnn {#1} {#1} {#2} }
+ }
+ }
+\cs_new_protected:Npn \__hook_patch_command:Nnn #1 #2 #3
+ {
+ \__hook_patch_debug:x { analyzing~'\token_to_str:N #1' }
+ \__hook_patch_debug:x { \token_to_str:N #1 = \token_to_meaning:N #1 }
+ \__hook_patch_check:NNnn \cs_if_exist:NTF #1 { undef }
+ {
+ \__hook_patch_debug:x { ++~control~sequence~is~defined }
+ \__hook_patch_check:NNnn \token_if_macro:NTF #1 { macro }
+ {
+ \__hook_patch_debug:x { ++~control~sequence~is~a~macro }
+ \__hook_patch_check:NNnn \__hook_if_public_command:NTF #1 { expl3 }
+ {
+ \__hook_patch_debug:x { ++~macro~is~not~private }
+ \robust@command@act
+ \g_hook_patch_action_list_tl #1
+ \__hook_retokenize_patch:Nnn { #1 {#2} {#3} }
+ }
+ }
+ }
+ }
+\cs_new_protected:Npn \__hook_patch_check:NNnn #1 #2 #3 #4
+ {
+ #1 #2 {#4}
+ {
+ \__kernel_msg_error:nnxx { hooks } { cant-patch }
+ { \token_to_str:N #2 } {#3}
+ }
+ }
+\use:x
+ {
+ \prg_new_protected_conditional:Npnn
+ \exp_not:N \__hook_if_public_command:N ##1 { TF }
+ {
+ \exp_not:N \exp_last_unbraced:Nf
+ \exp_not:N \__hook_if_public_command:w
+ { \exp_not:N \cs_to_str:N ##1 }
+ \tl_to_str:n { _ _ } \s__hook_mark
+ }
+ }
+\exp_last_unbraced:NNNNo
+\cs_new_protected:Npn \__hook_if_public_command:w
+ #1 \tl_to_str:n { _ _ } #2 \s__hook_mark
+ {
+ \tl_if_empty:nTF {#2}
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+\tl_gset:Nn \g_hook_patch_action_list_tl
+ {
+ { \@if@DeclareRobustCommand \__hook_patch_DeclareRobustCommand:Nnn }
+ { \@if@newcommand \__hook_patch_newcommand:Nnn }
+ { \__kernel_cmd_if_xparse:NTF \__hook_cmd_patch_xparse:Nnn }
+ }
+\cs_new_protected:Npn \__hook_patch_DeclareRobustCommand:Nnn #1
+ {
+ \exp_args:Nc \@if@newcommand { \cs_to_str:N #1 ~ }
+ { \exp_args:Nc \__hook_patch_newcommand:Nnn }
+ { \exp_args:NNc \__hook_patch_expand_redefine:NNnn \c_false_bool }
+ { \cs_to_str:N #1 ~ }
+ }
+\cs_new_protected:Npn \__hook_patch_newcommand:Nnn #1
+ {
+ \exp_args:NNc \__hook_patch_expand_redefine:NNnn \c_true_bool
+ { \c_backslash_str \cs_to_str:N #1 }
+ }
+\cs_new_protected:Npn \__hook_cmd_patch_xparse:Nnn #1
+ {
+ \exp_args:NNc \__hook_patch_expand_redefine:NNnn \c_false_bool
+ { \cs_to_str:N #1 ~ code }
+ }
+\cs_new_protected:Npn \__hook_patch_expand_redefine:NNnn #1 #2 #3 #4
+ {
+ \__hook_patch_debug:x { ++~command~can~be~patched~without~rescanning }
+ \int_set:Nn \l__hook_patch_num_args_int
+ {
+ \exp_args:Nf \str_count:n { \cs_argument_spec:N #2 } / 2
+ \bool_if:NT #1 { -1 }
+ }
+ \int_compare:nNnTF { \l__hook_patch_num_args_int } > { \c_zero_int }
+ {
+ \tl_set:Nx \l__hook_patch_param_text_tl
+ { \bool_if:NTF #1 { [####1] } { ####1 } }
+ \tl_set:Nx \l__hook_patch_replacement_tl
+ { \bool_if:NTF #1 { [####1] } { {####1} } }
+ \int_step_inline:nnn { 2 } { \l__hook_patch_num_args_int }
+ {
+ \tl_put_right:Nn \l__hook_patch_param_text_tl { ## ####1 }
+ \tl_put_right:Nn \l__hook_patch_replacement_tl { { ## ####1 } }
+ }
+ }
+ {
+ \tl_clear:N \l__hook_patch_param_text_tl
+ \tl_clear:N \l__hook_patch_replacement_tl
+ }
+ \group_begin:
+ \int_set:Nn \tex_escapechar:D { `\/ }
+ \use:x
+ {
+ \group_end:
+ \tl_set:Nx \exp_not:N \l__hook_patch_prefixes_tl
+ { \exp_not:N \__hook_make_prefixes:w \cs_prefix_spec:N #2 / / }
+ }
+ \use:x
+ {
+ \l__hook_patch_prefixes_tl \tex_def:D
+ \exp_not:N #2 \exp_not:V \l__hook_patch_param_text_tl
+ {
+ \str_if_eq:nnT {#4} { before }
+ { \exp_not:N \UseHook { cmd / #3 / #4 } }
+ \exp_args:No \exp_not:o
+ { \exp_after:wN #2 \l__hook_patch_replacement_tl }
+ \str_if_eq:nnT {#4} { after }
+ { \exp_not:N \UseHook { cmd / #3 / #4 } }
+ }
+ }
+ }
+\cs_new:Npn \__hook_make_prefixes:w / #1 /
+ {
+ \tl_if_empty:nF {#1}
+ {
+ \exp_not:c { tex_ \tl_trim_spaces:n {#1} :D }
+ \__hook_make_prefixes:w /
+ }
+ }
+\cs_new_protected:Npn \__hook_retokenize_patch:Nnn #1 #2 #3
+ {
+ \__hook_patch_debug:x { ..~command~can~only~be~patched~by~rescanning }
+ \str_if_eq:eeTF { \cs_argument_spec:N #1 } { }
+ { \__hook_patch_expand_redefine:NNnn \c_false_bool #1 {#2} {#3} }
+ {
+ \tl_set:Nx \l__hook_tmpa_tl
+ {
+ \int_compare:nNnTF { \char_value_catcode:n {`\@ } } = { 12 }
+ { \exp_not:N \makeatletter } { \exp_not:N \makeatother }
+ }
+ \tl_set:Nx \l__hook_tmpb_tl
+ {
+ \bool_if:NTF \l__kernel_expl_bool
+ { \ExplSyntaxOff } { \ExplSyntaxOn }
+ }
+ \use:x
+ {
+ \exp_not:N \__hook_try_patch_with_catcodes:Nnnnw
+ \exp_not:n { #1 {#2} {#3} }
+ { \prg_do_nothing: }
+ { \exp_not:V \l__hook_tmpa_tl } % @
+ { \exp_not:V \l__hook_tmpb_tl } % _:
+ {
+ \exp_not:V \l__hook_tmpa_tl % @
+ \exp_not:V \l__hook_tmpb_tl % _:
+ }
+ }
+ \q_recursion_tail \q_recursion_stop
+ {
+ \__kernel_msg_error:nnxx { hooks } { cant-patch }
+ { \c_backslash_str #2 } { retok }
+ }
+ }
+ }
+\cs_new_protected:Npn \__hook_try_patch_with_catcodes:Nnnnw #1 #2 #3 #4
+ {
+ \quark_if_recursion_tail_stop_do:nn {#4} { \use:n }
+ \__hook_patch_debug:x { ++~trying~to~patch~by~retokenization }
+ \__hook_cmd_if_scanable:NnTF {#1} {#4}
+ {
+ \__hook_patch_debug:x { ++~macro~can~be~retokenized~cleanly }
+ \__hook_patch_debug:x { ==~retokenizing~macro~now }
+ \__hook_patch_retokenize:Nnnn #1 {#2} {#3} {#4}
+ \use_i_delimit_by_q_recursion_stop:nw \use_none:n
+ }
+ {
+ \__hook_patch_debug:x { --~macro~cannot~be~retokenized~cleanly }
+ \__hook_try_patch_with_catcodes:Nnnnw #1 {#2} {#3}
+ }
+ }
+\cs_new_eq:NN \kerneltmpDoNotUse !
+\cs_new_protected:Npn \__hook_patch_required_catcodes:
+ {
+ \char_set_catcode_escape:N \\
+ \char_set_catcode_group_begin:N \{
+ \char_set_catcode_group_end:N \}
+ \char_set_catcode_parameter:N \#
+ % \int_set:Nn \tex_endlinechar:D { -1 }
+ % \int_set:Nn \tex_newlinechar:D { -1 }
+ }
+\prg_new_protected_conditional:Npnn \__hook_cmd_if_scanable:Nn #1 #2 { TF }
+ {
+ \cs_set_eq:NN \kerneltmpDoNotUse \scan_stop:
+ \cs_set_eq:NN \__hook_tmp:w \scan_stop:
+ \use:x
+ {
+ \cs_set:Npn \__hook_tmp:w
+ ####1 \tl_to_str:n { macro: } ####2 -> ####3 \s__hook_mark
+ { ####1 \def \kerneltmpDoNotUse ####2 {####3} }
+ \tl_set:Nx \exp_not:N \l__hook_tmpa_tl
+ { \exp_not:N \__hook_tmp:w \token_to_meaning:N #1 \s__hook_mark }
+ }
+ \tl_rescan:nV { #2 \__hook_patch_required_catcodes: } \l__hook_tmpa_tl
+ \token_if_eq_meaning:NNTF #1 \kerneltmpDoNotUse
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+\cs_new_protected:Npn \__hook_patch_retokenize:Nnnn #1 #2 #3 #4
+ {
+ \cs_set_eq:NN \kerneltmpDoNotUse \scan_stop:
+ \cs_set_eq:NN \__hook_tmp:w \scan_stop:
+ \use:x
+ {
+ \cs_set:Npn \__hook_tmp:w
+ ####1 \tl_to_str:n { macro: } ####2 -> ####3 \s__hook_mark
+ {
+ ####1 \def \kerneltmpDoNotUse ####2
+ {
+ \str_if_eq:nnT {#3} { before }
+ { \token_to_str:N \UseHook { cmd / #2 / #3 } }
+ ####3
+ \str_if_eq:nnT {#3} { after }
+ { \token_to_str:N \UseHook { cmd / #2 / #3 } }
+ }
+ }
+ \tl_set:Nx \exp_not:N \l__hook_tmpa_tl
+ { \exp_not:N \__hook_tmp:w \token_to_meaning:N #1 \s__hook_mark }
+ }
+ \tl_rescan:nV { #4 \__hook_patch_required_catcodes: } \l__hook_tmpa_tl
+ \cs_set_eq:NN #1 \kerneltmpDoNotUse
+ }
+\__kernel_msg_new:nnnn { hooks } { wrong-cmd-hook }
+ {
+ Command~hook~`cmd/#1/#2'~invalid.\\
+ The~hook~should~be~`cmd/#1/before'~or~`cmd/#1/after'.
+ }
+ {
+ You~tried~to~add~a~hook~to~command~\iow_char:N \\#1,~but~`#2'~
+ is~an~invalid~position.~Only~`before'~or~`after'~are~allowed.
+ }
+\__kernel_msg_new:nnnn { hooks } { cant-patch }
+ {
+ Command~`#1'~cannot~have~hooks~because~it~
+ \__hook_unpatchable_cases:n {#2} .
+ }
+ {
+ You~tried~to~add~a~hook~to~`#1',~but~LaTeX~was~not~able~to~
+ add~the~hook~to~that~command~because~`#1'~
+ \__hook_unpatchable_cases:n {#2} .
+ }
+\cs_new:Npn \__hook_unpatchable_cases:n #1
+ {
+ \str_case:nn {#1}
+ {
+ { undef } { doesn't~exist }
+ { macro } { is~not~a~macro }
+ { expl3 } { is~a~private~expl3~macro }
+ { retok } { can't~be~retokenized~cleanly }
+ }
+ }
+\ExplSyntaxOff
%%% From File: ltalloc.dtx
\chardef\@xxxii=32
\mathchardef\@Mi=10001
@@ -5276,6 +5738,131 @@ Type H <return> for immediate help.}%
\def\@setpar#1{\def\par{#1}\def\@par{#1}}
\def\@par{\let\par\@@par\par}
\def\@restorepar{\def\par{\@par}}
+%% File: ltpara.dtx (C) Copyright 2020-2021
+%%% From File: ltpara.dtx
+\def\ltparaversion{v1.0f}
+\def\ltparadate{2021/04/16}
+
+
+\ExplSyntaxOn
+\hook_new_pair:nn{para/before}{para/after}
+\hook_new_pair:nn{para/begin}{para/end}
+\let \@kernel@before@para@before \@empty
+\let \@kernel@before@para@begin \@empty
+\let \@kernel@after@para@end \@empty
+\let \@kernel@after@para@after \@empty
+\tl_new:N \g__para_standard_everypar_tl
+\tl_gset:Nn \g__para_standard_everypar_tl {
+ \box_gset_to_last:N \g_para_indent_box
+ \group_begin:
+ \tex_par:D
+ \group_end:
+ \tex_everypar:D { \__kernel_msg_error:nnnn {para}{mode}{before}{vertical} }
+ \@kernel@before@para@before
+ \hook_use:n {para/before}
+ \group_begin:
+ \tex_everypar:D {}
+ \skip_zero:N \tex_parskip:D
+ \tex_noindent:D
+ \group_end:
+ \tex_everypar:D{\g__para_standard_everypar_tl}
+ \@kernel@before@para@begin
+ \hook_use:n {para/begin}
+ \if_mode_horizontal: \else:
+ \__kernel_msg_error:nnnn {para}{mode}{begin}{vertical} \fi:
+ \__para_handle_indent:
+}
+\tex_everypar:D{\g__para_standard_everypar_tl}
+\newtoks \everypar
+
+\tl_gput_right:Nx \g__para_standard_everypar_tl {
+ \exp_not:N \the
+ \exp_not:N \toks
+ \the \allocationnumber
+ \c_space_tl
+}
+\box_new:N \g_para_indent_box
+
+\cs_new:Npn \__para_handle_indent: {
+ \box_use_drop:N \g_para_indent_box
+}
+\cs_new:Npn \para_omit_indent: {
+ \box_gclear:N \g_para_indent_box
+}
+\cs_set_eq:NN \IndentBox \g_para_indent_box
+\cs_set_eq:NN \OmitIndent \para_omit_indent:
+\cs_new_protected:Npn \para_end: {
+ \mode_if_horizontal:TF {
+ \mode_if_inner:F {
+ \tex_unskip:D
+ \hook_use:n{para/end}
+ \@kernel@after@para@end
+ \mode_if_horizontal:TF {
+ \if_int_compare:w 0 < \tex_lastnodetype:D
+ \tex_kern:D \c_zero_dim
+ \fi:
+ \tex_par:D
+ \hook_use:n{para/after}
+ \@kernel@after@para@after
+ }
+ { \__kernel_msg_error:nnnn {para}{mode}{end}{horizontal} }
+ }
+ }
+ \tex_par:D
+}
+\cs_new:Npn \para_raw_indent: {
+ \mode_if_vertical:TF
+ {
+ \tex_everypar:D {
+ \box_gset_to_last:N \g_para_indent_box
+ \tex_everypar:D { \g__para_standard_everypar_tl }
+ \__para_handle_indent:
+ \the\everypar }
+ }
+ { \__kernel_msg_error:nn {para}{raw} }
+ \tex_indent:D
+}
+\cs_new:Npn \para_raw_noindent: {
+ \mode_if_vertical:TF
+ {
+ \tex_everypar:D {
+ \tex_everypar:D { \g__para_standard_everypar_tl }
+ \the\everypar }
+ }
+ { \__kernel_msg_error:nn {para}{raw} }
+ \tex_noindent:D
+}
+\cs_new_eq:NN \para_raw_end: \tex_par:D
+\cs_set_eq:NN \RawIndent \para_raw_indent:
+\cs_set_eq:NN \RawNoindent \para_raw_noindent:
+\cs_set_eq:NN \RawParEnd \para_raw_end:
+\cs_set_eq:NN \par \para_end:
+\cs_set_eq:NN \@@par \para_end:
+\cs_set_eq:NN \endgraf \para_end:
+\everypar{\@nodocument} %% To get an error if text appears before the
+\__kernel_msg_new:nnnn {para} {mode}
+ {
+ Illegal~mode~ change~ in~ hook~ 'para/#1'.\\
+ Hook~ code~ did~ not~ remain~ in~ #2~ mode.
+ }
+ {
+ Paragraph~ hooks~ cannot~ change~ the~ TeX~ mode~ without~ causing~
+ endless~ recursion.~ The~ hook~ code~ in~ 'para/#1'~ needs~ to~ stay~
+ in~ #2~ mode,~ but~ it~ didn't.~ Examine~ the~ hook~
+ code~ with~ \ShowHook~ to~ find~ the~ issue.
+ }
+\__kernel_msg_new:nnnn {para} {raw}
+ {
+ Paragraph started while not in vertical mode.
+ }
+ {
+ Starting a paragraph with \RawIndent or \RawNoindent
+ (or \para_raw_indent: or \para_raw_noindent:) is only
+ allowed if LaTeX is in vertical mode.
+ }
+
+\ExplSyntaxOff
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% From File: ltspace.dtx
\message{spacing,}
\DeclareRobustCommand\pagebreak{\@testopt{\@no@pgbk-}4}
@@ -5523,8 +6110,6 @@ Type H <return> for immediate help.}%
\LaTeX\kern.15em2$_{\textstyle\varepsilon}$}}
%%% From File: ltfiles.dtx
\message{files,}
-\newread\@inputcheck
-\newwrite\@unused
\newwrite\@mainaux
\newwrite\@partaux
\newif\if@filesw \@fileswtrue
@@ -5597,8 +6182,6 @@ Type H <return> for immediate help.}%
\let\expandafter\noexpand\csname
__hook env/document/begin\endcsname
\noexpand\@empty}
-\let \@kernel@before@begindocument \@empty
-\let \@kernel@after@begindocument \@empty
\@onlypreamble\document
\let\normalsfcodes\@empty
@@ -5726,16 +6309,18 @@ Type H <return> for immediate help.}%
\openin\@inputcheck"#1" %
\ifeof\@inputcheck
\ifx\input@path\@undefined
- \def\reserved@a{#3}%
+ \let\reserved@a\@secondoftwo
\else
- \def\reserved@a{\@iffileonpath{#1}{#2}{#3}}%
+ \def\reserved@a{\@iffileonpath{#1}}%
\fi
\else
\closein\@inputcheck
\edef\@filef@und{"#1" }%
- \def\reserved@a{#2}%
+ \let\reserved@a\@firstoftwo
\fi
- \reserved@a}
+ \expandafter\def\expandafter\reserved@a
+ \expandafter{\reserved@a{#2}{#3}}%
+\reserved@a}
\long\def\@iffileonpath#1{%
\let\reserved@a\@secondoftwo
\expandafter\@tfor\expandafter\reserved@b\expandafter
@@ -6458,7 +7043,9 @@ Type H <return> for immediate help.}%
\DeclareRobustCommand\usefont[4]{\fontencoding{#1}%
\edef\f@family{#2}%
\set@target@series{#3}%
- \edef\f@shape{#4}\selectfont
+ \edef\f@shape{#4}%
+ \let\delayed@f@adjustment\@empty
+ \selectfont
\ignorespaces}
\DeclareRobustCommand\linespread[1]
{\set@fontsize{#1}\f@size\f@baselineskip}
@@ -7402,6 +7989,7 @@ Type H <return> for immediate help.}%
\fi
\let\delayed@f@adjustment\@empty
\fi
+ \@forced@seriesfalse
\xdef\font@name{%
\csname\curr@fontshape/\f@size\endcsname}%
\pickup@font
@@ -8832,6 +9420,7 @@ Type H <return> for immediate help.}%
\edef\f@family{\familydefault}%
\edef\f@series{\seriesdefault}%
\edef\f@shape{\shapedefault}%
+ \let\delayed@f@adjustment\@empty
\UseHook{normalfont}%
\@defaultfamilyhook % hookname from 2020/02 will vanish
\selectfont}
@@ -9063,7 +9652,6 @@ Type H <return> for immediate help.}%
\egroup
}
\def\textcompsubstdefault{\rmsubstdefault}
-
\def\DeclareEncodingSubset#1#2{%
\DeclareEncodingSubset@aux{#1}#2*\DeclareEncodingSubset@aux
}
@@ -10181,7 +10769,7 @@ Type H <return> for immediate help.}%
}
\let\@eqnsel=\relax
\def\nonumber{\global\@eqnswfalse}
-\def\@eqncr{%
+\protected\def\@eqncr{%
{\ifnum0=`}\fi
\@ifstar{%
\global\@eqpen\@M\@yeqncr
@@ -10203,7 +10791,7 @@ Type H <return> for immediate help.}%
\reserved@a \if@eqnsw\@eqnnum\stepcounter{equation}\fi
\global\@eqnswtrue\global\@eqcnt\z@\cr}
\let\@seqncr=\@eqncr
-\@namedef{eqnarray*}{\def\@eqncr{\nonumber\@seqncr}\eqnarray}
+\@namedef{eqnarray*}{\protected\def\@eqncr{\nonumber\@seqncr}\eqnarray}
\@namedef{endeqnarray*}{\nonumber\endeqnarray}
\def\lefteqn#1{\rlap{$\displaystyle #1$}}
\DeclareRobustCommand{\ensuremath}{%
@@ -10812,7 +11400,7 @@ Type H <return> for immediate help.}%
\def\@addfield{\global\setbox\@curline\hbox{\unhbox
\@curline\unhbox\@curfield}}
\def\@ifatmargin{\ifdim \wd\@curline =\z@}
-\def\@tabcr{\@stopline \@ifstar{\penalty \@M \@xtabcr}\@xtabcr}
+\protected\def\@tabcr{\@stopline \@ifstar{\penalty \@M \@xtabcr}\@xtabcr}
\def\@xtabcr{\@ifnextchar[\@itabcr{\@startline\ignorespaces}}
\def\@itabcr[#1]{\@vspace@calcify{#1}\@startline\ignorespaces}
\def\tabbing{\lineskip \z@skip\let\>\@rtab\let\<\@ltab\let\=\@settab
@@ -10930,14 +11518,14 @@ Type H <return> for immediate help.}%
\lineskip\z@skip\baselineskip\z@skip
\ifhmode \@preamerr\z@ \@@par\fi
\@preamble}
-\def\@arraycr{%
+\protected\def\@arraycr{%
${\ifnum0=`}\fi\@ifstar\@xarraycr\@xarraycr}
\def\@xarraycr{\@ifnextchar[\@argarraycr{\ifnum0=`{\fi}${}\cr}}
\def\@argarraycr[#1]{%
\ifnum0=`{\fi}${}\ifdim #1>\z@ \@xargarraycr{#1}\else
\@yargarraycr{#1}\fi}
\let\tabularnewline\relax
-\def\@tabularcr{%
+\protected\def\@tabularcr{%
{\ifnum0=`}\fi\@ifstar\@xtabularcr\@xtabularcr}
\def\@xtabularcr{\@ifnextchar[\@argtabularcr{\ifnum0=`{\fi}\cr}}
\def\@argtabularcr[#1]{%
@@ -11171,7 +11759,7 @@ Type H <return> for immediate help.}%
\let\\\@stackcr
\@ishortstack}
\def\@ishortstack#1{\ialign{\mb@l {##}\unskip\mb@r\cr #1\crcr}\egroup}
-\def\@stackcr{\@ifstar\@ixstackcr\@ixstackcr}
+\protected\def\@stackcr{\@ifstar\@ixstackcr\@ixstackcr}
\def\@ixstackcr{\@ifnextchar[\@istackcr{\cr\ignorespaces}}
\def\@istackcr[#1]{\cr\noalign{\@vspace@calcify{#1}}\ignorespaces}
\newif\if@negarg
@@ -12046,12 +12634,6 @@ Type H <return> for immediate help.}%
\endgroup
\@footnotemark
}
-%%<latexrelease>\IncludeInRelease{0000/00/00}%
-%%<latexrelease> {\footref}{Add footref}%
-%%<latexrelease>
-%%<latexrelease>\let\footref\@undefined
-%%<latexrelease>
-%%<latexrelease>\EndIncludeInRelease
%%% From File: ltidxglo.dtx
\message{index,}
\def\makeindex{%
@@ -12409,14 +12991,15 @@ Type H <return> for immediate help.}%
\@onlypreamble\@process@ptions
\def\@xprocess@ptions{%
\ifx\@currext\@clsextension\else
+ \ifx\@classoptionslist\relax\else
\@for\CurrentOption:=\@classoptionslist\do{%
\ifx\CurrentOption\@empty\else
- \@expandtwoargs\in@{,\CurrentOption,}{,\@declaredoptions,}%
- \ifin@
+ \@ifundefined{ds@\CurrentOption}{}{%
\@use@ption
\expandafter\let\csname ds@\CurrentOption\endcsname\@empty
- \fi
+ }%
\fi}%
+ \fi
\fi
\@process@pti@ns}
\@onlypreamble\@xprocess@ptions
@@ -12798,14 +13381,12 @@ Type H <return> for immediate help.}%
\let\write\@gobbletwo%
\let\closeout\@gobble%
\else%
- \edef\reserved@a{#1}%
- \edef\reserved@a{\detokenize\expandafter{\reserved@a}}%
\edef\reserved@b{\detokenize\expandafter{\jobname}}%
- \ifx\reserved@a\reserved@b%
+ \ifx\@curr@file\reserved@b%
\@fileswtrue%
\else%
\edef\reserved@b{\reserved@b\detokenize{.tex}}%
- \ifx\reserved@a\reserved@b
+ \ifx\@curr@file\reserved@b
\@fileswtrue%
\fi%
\fi%
@@ -13077,8 +13658,8 @@ Type H <return> for immediate help.}%
\fi
}
%%% From File: ltfilehook.dtx
-\providecommand\ltfilehookversion{v1.0g}
-\providecommand\ltfilehookdate{2021/02/08}
+\providecommand\ltfilehookversion{v1.0j}
+\providecommand\ltfilehookdate{2021/04/29}
\ExplSyntaxOn
\tl_new:N \CurrentFile
\tl_new:N \CurrentFilePath
@@ -13116,7 +13697,8 @@ Type H <return> for immediate help.}%
\cs_new:Npn \__filehook_drop_extension_aux:nnn #1 #2 #3
{ \tl_if_empty:nF {#1} { #1 / } #2 }
\tl_new:N \l__filehook_internal_tl
-\seq_new:N \g__filehook_input_file_seq
+\seq_if_exist:NF \g__filehook_input_file_seq
+ { \seq_new:N \g__filehook_input_file_seq }
\cs_new_protected:Npn \__filehook_file_push:
{
\seq_gpush:Nx \g__filehook_input_file_seq
@@ -13130,7 +13712,7 @@ Type H <return> for immediate help.}%
\seq_gpop:NNTF \g__filehook_input_file_seq \l__filehook_internal_tl
{ \exp_after:wN \__filehook_file_pop_assign:nnnn \l__filehook_internal_tl }
{
- \msg_error:nnn { hooks } { should-not-happen }
+ \__kernel_msg_error:nnn { hooks } { should-not-happen }
{ Tried~to~pop~from~an~empty~file~name~stack. }
}
}
@@ -13218,6 +13800,7 @@ Type H <return> for immediate help.}%
\begingroup
\escapechar\m@ne
\let\protect\string
+ \edef~{\string~}%
\expandafter\def\csname\expandafter\endcsname
\expandafter{\csname\endcsname}%
\@expl@@@filehook@if@no@extension@@nTF{#1}%
@@ -13340,7 +13923,7 @@ Type H <return> for immediate help.}%
\cs_new_eq:NN \@expl@@@filehook@drop@extension@@N
\__filehook_drop_extension:N
\cs_new_eq:NN \@expl@@@filehook@file@push@@
- \__filehook_file_push:
+ \__filehook_file_push:
\cs_new_eq:NN \@expl@@@filehook@file@pop@@
\__filehook_file_pop:
\cs_new_eq:NN \@expl@@@filehook@file@pop@assign@@nnnn
@@ -13354,7 +13937,7 @@ Type H <return> for immediate help.}%
%%
%%% From File: ltshipout.dtx
\providecommand\ltshipoutversion{v1.0i}
-\providecommand\ltshipoutdate{2021/01/25}
+\providecommand\ltshipoutdate{2021/03/17}
\ExplSyntaxOn
\bool_new:N \g__shipout_debug_bool
\cs_new_eq:NN \__shipout_debug:n \use_none:n
@@ -14865,6 +15448,33 @@ Type H <return> for immediate help.}%
\countdef\xe@alloc@intercharclass=257
\xe@alloc@intercharclass=\z@
\fi
+\ifx\directlua\@undefined
+\else
+ \expanded{%
+ \everyjob{\the\everyjob
+ \noexpand%\directlua
+ \directlua{%
+ local function trace_stack_levels (input_ptr)
+ local tracingstacklevels = tex.count.tracingstacklevels
+ if tex.tracingmacros > 0 or input_ptr < tracingstacklevels then
+ if tracingstacklevels > 0 then
+ if input_ptr < tracingstacklevels then
+ return "\string\n\string~" .. string.rep(".",input_ptr)
+ else
+ return "\string~\string~"
+ end
+ else
+ return "\string\n"
+ end
+ else
+ return ""
+ end
+ end
+ luatexbase.add_to_callback('input_level_string',
+ trace_stack_levels,'tracingstacklevels')
+ }%
+ }}%
+\fi
\unitlength = 1pt
\fboxsep = 3pt
\fboxrule = .4pt
@@ -15175,7 +15785,6 @@ Type H <return> for immediate help.}%
\let\@filelist\@gobble
\def\@addtofilelist#1{\xdef\@filelist{\@filelist,#1}}%
\@input{latex2e-first-aid-for-external-files.ltx}
-\@input{ltpara.ltx}
\makeatother
\errorstopmode
\dump
diff --git a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
index 529e3cd6df3..4bdca00b45e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
@@ -14,10 +14,12 @@
%% ltdefns.dtx (with options: `latexrelease')
%% ltcmd.dtx (with options: `latexrelease')
%% lthooks.dtx (with options: `latexrelease')
+%% ltcmdhooks.dtx (with options: `latexrelease')
%% ltalloc.dtx (with options: `latexrelease')
%% ltcntrl.dtx (with options: `latexrelease')
%% lterror.dtx (with options: `latexrelease')
%% ltpar.dtx (with options: `latexrelease')
+%% ltpara.dtx (with options: `latexrelease')
%% ltspace.dtx (with options: `latexrelease')
%% ltlogos.dtx (with options: `latexrelease')
%% ltfiles.dtx (with options: `latexrelease')
@@ -52,6 +54,7 @@
%% ltoutput.dtx (with options: `latexrelease')
%% ltfsscmp.dtx (with options: `latexrelease')
%% ltfinal.dtx (with options: `latexrelease')
+%% latexrelease.dtx (with options: `latexrelease-finish')
%%
%% This is a generated file.
%%
@@ -284,7 +287,7 @@
}
%%% From File: ltvers.dtx
\edef\latexreleaseversion
- {2021-05-01}
+ {2021-06-01}
\newif\if@includeinrelease
\@includeinreleasefalse
\def\IncludeInRelease#1{%
@@ -293,17 +296,37 @@
{There is an \string\EndIncludeRelease\space missing}%
\@includeinreleasefalse
\fi
- \kernel@ifnextchar[%
- {\@IncludeInRelease{#1}}
- {\@IncludeInRelease{#1}[#1]}}
+ \ifnum0%
+ \ifx\new@moduledate\@empty\else 1\fi
+ \ifnum \expandafter\@parse@version#1//00\@nil=0 1\fi
+ =11
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {\finish@module@release{#1}}%
+ {\kernel@ifnextchar[%
+ {\@IncludeInRelease{#1}}
+ {\@IncludeInRelease{#1}[#1]}}}
+\def\finish@module@release#1#2#3{%
+ \toks@{[#1] #3}%
+ \ifnum\expandafter\@parse@version\new@moduledate//00\@nil
+ >\expandafter\@parse@version\fmtversion//00\@nil
+ \GenericInfo{}{Applying: \the\toks@}%
+ \else
+ \GenericInfo{}{Skipping: \the\toks@}%
+ \expandafter\gobble@finish@module@release
+ \fi}
+\long\def\gobble@finish@module@release#1\EndModuleRelease{%
+ \EndModuleRelease}
\def\@IncludeInRelease#1[#2]{\@IncludeInRele@se{#2}}
\def\@IncludeInRele@se#1#2#3{%
\toks@{[#1] #3}%
\expandafter\ifx\csname\string#2+\@currname+IIR\endcsname\relax
\ifnum\expandafter\@parse@version#1//00\@nil
- >\expandafter\@parse@version\fmtversion//00\@nil
+ >\expandafter\@parse@version\fmtversion//00\@nil
\GenericInfo{}{Skipping: \the\toks@}%
- \expandafter\expandafter\expandafter\@gobble@IncludeInRelease
+ \expandafter\expandafter\expandafter\@gobble@IncludeInRelease
\else
\GenericInfo{}{Applying: \the\toks@}%
\@includeinreleasetrue
@@ -319,6 +342,9 @@
\@includeinreleasefalse
\else
\PackageError{latexrelease}{mis-matched EndIncludeInRelease}{}%
+\fi
+\if@skipping@module
+ \expandafter\new@module@skip
\fi}
\long\def\@gobble@IncludeInRelease#1\EndIncludeInRelease{%
\@includeinreleasefalse
@@ -328,13 +354,55 @@
#2#3\@end@check@IncludeInRelease{%
\ifx\@check@IncludeInRelease#2\else
\PackageError{latexrelease}{skipped IncludeInRelease for tag \string#2}{}%
+ \fi
+ \if@skipping@module
+ \expandafter\new@module@skip
+ \fi}
+\let\if@skipping@module\iffalse
+\def\@skipping@moduletrue{\let\if@skipping@module\iftrue}
+\def\@skipping@modulefalse{\let\if@skipping@module\iffalse}
+\let\new@modulename\@empty
+\let\new@moduledate\@empty
+\def\NewModuleRelease#1#2#3{%
+ \ifx\new@modulename\@empty \else
+ \@latex@error{Nested \noexpand\NewModuleRelease forbidden.}\@ehd \fi
+ \edef\new@moduledate{#1}%
+ \edef\new@modulename{#2}%
+ \GenericInfo{}{BEGIN module: \new@modulename\space (\new@moduledate)}%
+ \GenericInfo{}{ \@spaces\@spaces\@spaces\space#3\@gobble}%
+ \ifnum\sourceLaTeXdate<%
+ \expandafter\@parse@version\new@moduledate//00\@nil\relax
+ \ifnum\expandafter\@parse@version\fmtversion//00\@nil<%
+ \expandafter\@parse@version\new@moduledate//00\@nil\relax
+ \GenericInfo{}{Skipping module \new@modulename}%
+ \expandafter\expandafter
+ \expandafter\gobble@finish@module@release
+ \else
+ \GenericInfo{}{Applying module \new@modulename}
+ \@skipping@modulefalse
+ \fi
+ \else
+ \GenericInfo{}{Skipping module \new@modulename}
+ \@skipping@moduletrue
+ \expandafter\new@module@skip
+ \fi}
+\long\def\new@module@skip#1\IncludeInRelease{\IncludeInRelease}
+\def\EndModuleRelease{%
+ \ifx\new@modulename\@empty
+ \@latex@error{Extra \string\EndModuleRelease.}\@eha
+ \else
+ \GenericInfo{}{END module: \new@modulename\space (\new@moduledate)}%
+ \let\new@modulename\@empty
+ \let\new@moduledate\@empty
+ \@skipping@modulefalse
\fi}
\ProvidesPackage{latexrelease}
- [2021/01/23 v1.0l LaTeX release emulation and tests
+ [2021/04/29 v1.0n LaTeX release emulation and tests
(including releases up to \latexreleaseversion)]
\NeedsTeXFormat{LaTeX2e}[1996/06/01]
-\edef\sourceLaTeXdate{%
- \expandafter\@parse@version\fmtversion//00\@nil}
+\@ifundefined{sourceLaTeXdate}{%
+ \edef\sourceLaTeXdate{%
+ \expandafter\@parse@version\fmtversion//00\@nil}}{}%
\DeclareOption*{%
\def\@IncludeInRelease#1[#2]{\@IncludeInRele@se{#1}}%
\let\requestedpatchdate\CurrentOption}
@@ -385,6 +453,76 @@ of this package available from CTAN}
\fi
\let\fmtversion\requestedpatchdate
\let\currentLaTeXdate\requestedLaTeXdate
+\csname ExplSyntaxOn\endcsname
+\csname ExplSyntaxOff\endcsname
+\begingroup
+ \endlinechar=-1
+ \catcode95=11 % _
+ \catcode58=11 % :
+ \catcode126=10 % ~
+ \catcode32=09 % <space>
+ \xdef\latexrelease@postexpl{\unexpanded{%
+\cs_gset_protected:Npn \__latexrelease_declare_command:w
+ { \@star@or@long \__latexrelease_declare_command:Nw }
+\cs_gset_protected:Npn \__latexrelease_declare_command:Nw #1
+ { \cs_if_exist:NTF #1 { \renew@command } { \new@command } #1 }
+\cs_gset_protected:Npn \__latexrelease_e@alloc:NnnnnN #1 #2 #3 #4 #5 #6
+ {
+ \cs_if_free:NTF #6
+ { \use:n }
+ {
+ \exp_after:wN \__latexrelease_e@alloc:N
+ \token_to_meaning:N #6 \scan_stop: {#2} #6
+ }
+ { \__latexrelease_e@alloc #1 {#2} {#3} {#4} {#5} #6 }
+ }
+\cs_gset_protected:Npn \__latexrelease_e@alloc:N #1
+ {
+ \if_int_compare:w 0 < 0
+ \if_int_compare:w 10 < 9#1 ~ 1 \fi:
+ \if_charcode:w " #1 1 \fi: \exp_stop_f:
+ \tex_afterassignment:D \__latexrelease_e@alloc:w
+ \@tempcnta #1
+ \use_i:nnn
+ \fi:
+ \use:n
+ {
+ \if_meaning:w \scan_stop: #1
+ \exp_after:wN \use_iv:nnnn
+ \fi:
+ \__latexrelease_e@alloc:N
+ }
+ }
+\cs_gset_protected:Npn \__latexrelease_e@alloc:w #1 \scan_stop: #2 #3
+ {
+ #2 \__latexrelease_tmp:w = \@tempcnta
+ \token_if_eq_meaning:NNTF #3 \__latexrelease_tmp:w
+ { \int_set_eq:NN \allocationnumber \@tempcnta \use_none:n }
+ { \cs_set_eq:NN #3 \tex_undefined:D \use:n }
+ }
+\tl_clear_new:N \l__latexrelease_restores_tl
+\cs_gset:Npn \__latexrelease_tmp:w #1 #2
+ {
+ \quark_if_recursion_tail_stop_do:Nn #1
+ { \cs_undefine:N \__latexrelease_tmp:w }
+ \tl_put_right:Nn \l__latexrelease_restores_tl {#1}
+ \cs_set_eq:cN { __latexrelease_ \cs_to_str:N #1 } #1
+ \cs_set_eq:NN #1 #2
+ \__latexrelease_tmp:w
+ }
+\__latexrelease_tmp:w
+ \__kernel_chk_if_free_cs:N \use_none:n
+ \e@alloc \__latexrelease_e@alloc:NnnnnN
+ \__kernel_msg_error:nnx \use_none:nnn
+ \msg_new:nnnn \msg_gset:nnnn
+ \NewDocumentCommand \DeclareDocumentCommand
+ \newcommand \__latexrelease_declare_command:w
+ \__kernel_msg_error:nnn \use_none:nnn % needed while redirect for kernel msgs doesn't work
+ \q_recursion_tail \q_recursion_tail
+ \q_recursion_stop
+\msg_redirect_name:nnn { hooks } { exists } { none }
+ }}%
+\endgroup
%%% From File: ltdirchk.dtx
\ifx\directlua\undefined\else
\IncludeInRelease{2015/10/01}{\luatexluafunction}
@@ -682,6 +820,45 @@ of this package available from CTAN}
\global\chardef#1\allocationnumber
\wlog{\string#1=\string\insert\the\allocationnumber}}
\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}{\tracingstacklevels}%
+ {tracingstacklevels}%
+\ifx\directlua\@undefined
+ % \tracingstacklevels=0 % added in 2021
+\else
+ \newcount\tracingstacklevels
+ % Code for \tracingstacklevels defined in ltfinal.dtx
+\fi
+\EndIncludeInRelease
+
+\IncludeInRelease{0000/00/00}{\tracingstacklevels}%
+ {tracingstacklevels}%
+\ifx\directlua\@undefined
+\else
+ \let\tracingstacklevels\@undefined
+\fi
+\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}{\loggingall}
+ {\tracingstacklevels and \tracinglostchars=3}%
+\edef\loggingall{%
+ \tracingstats\tw@
+ \tracingpages\@ne
+ \tracinglostchars\thr@@
+ \tracingparagraphs\@ne
+ \tracinggroups\@ne
+ \tracingifs\@ne
+ \tracingscantokens\@ne
+ \tracingnesting\@ne
+ \errorcontextlines\maxdimen
+ \ifdefined\tracingstacklevels \tracingstacklevels\maxdimen \fi
+ \noexpand \loggingoutput
+ \tracingmacros\tw@
+ \tracingcommands\thr@@
+ \tracingrestores\@ne
+ \tracingassigns\@ne
+}%
+\def\tracingall{\showoverfull\loggingall}
+\EndIncludeInRelease
+
\IncludeInRelease{2015/01/01}{\loggingall}{etex tracing}%
\ifx\tracingscantokens\@undefined
\gdef\loggingall{%
@@ -715,6 +892,7 @@ of this package available from CTAN}
\fi
\gdef\tracingall{\showoverfull\loggingall}
\EndIncludeInRelease
+
\IncludeInRelease{0000/00/00}{\loggingall}{etex tracing}%
\gdef\loggingall{\tracingcommands\tw@\tracingstats\tw@
\tracingpages\@ne\tracinglostchars\@ne
@@ -724,6 +902,30 @@ of this package available from CTAN}
\EndIncludeInRelease
\IncludeInRelease{2015/01/01}{\tracingnone}%
{turn off etex tracing}%
+\edef\tracingnone{%
+ \tracingassigns\z@
+ \tracingrestores\z@
+ \tracingonline\z@
+ \tracingcommands\z@
+ \showboxdepth\m@ne
+ \showboxbreadth\m@ne
+ \tracingoutput\z@
+ \errorcontextlines\m@ne
+ \ifdefined\tracingstacklevels \tracingstacklevels\z@ \fi
+ \tracingnesting\z@
+ \tracingscantokens\z@
+ \tracingifs\z@
+ \tracinggroups\z@
+ \tracingparagraphs\z@
+ \tracingmacros\z@
+ \tracinglostchars\@ne
+ \tracingpages\z@
+ \tracingstats\z@
+}%
+\EndIncludeInRelease
+
+\IncludeInRelease{2015/01/01}{\tracingnone}%
+ {turn off etex tracing}%
\ifx\tracingscantokens\@undefined
\def\tracingnone{%
\tracingonline\z@
@@ -760,6 +962,14 @@ of this package available from CTAN}
\tracingstats\z@
}%
\fi
+\EndIncludeInRelease
+
+\IncludeInRelease{0000/00/00}{\tracingnone}%
+ {turn off etex tracing}%
+\let\tracingnone\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}{\hideoutput}%
+ {hide output from tracing}%
\def\hideoutput{%
\tracingoutput\z@
\showboxbreadth\m@ne
@@ -767,9 +977,9 @@ of this package available from CTAN}
\tracingonline\m@ne
}%
\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{\tracingnone}%
- {turn off etex tracing}%
-\let\tracingnone\@undefined
+
+\IncludeInRelease{0000/00/00}{\hideoutput}%
+ {hide output from tracing}%
\let\hideoutput\@undefined
\EndIncludeInRelease
\ifx\directlua\@undefined\else
@@ -983,14 +1193,20 @@ of this package available from CTAN}
\fi
%%% From File: ltexpl.dtx
\IncludeInRelease{2020/10/01}%
- {kernel@enddocument hooks}{Define kernel enddocument Hooks}%
-\let\@kernel@after@enddocument\@empty
-\let\@kernel@after@enddocument@afterlastpage\@empty
+ {kernel@enddocument hooks}{Define several kernel hooks}
+\ifx\@kernel@after@enddocument\@undefined
+ \let \@kernel@after@enddocument \@empty
+ \let \@kernel@after@enddocument@afterlastpage \@empty
+ \let \@kernel@before@begindocument \@empty
+ \let \@kernel@after@begindocument \@empty
+\fi
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {kernel@enddocument hooks}{Define kernel enddocument Hooks}%
+ {kernel@enddocument hooks}{Define several kernel hooks}
\let\@kernel@after@enddocument\@undefined
\let\@kernel@after@enddocument@afterlastpage\@undefined
+\let\@kernel@before@begindocument\@undefined
+\let\@kernel@after@begindocument\@undefined
\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
{\@expl@sys@load@backend@@}{Roll forward support}%
@@ -1565,13 +1781,13 @@ of this package available from CTAN}
\EndIncludeInRelease
%%% From File: ltcmd.dtx
-\def\ltcmdversion{v1.0a}
-\def\ltcmddate{2021/01/21}
+\def\ltcmdversion{v1.0d}
+\def\ltcmddate{2021-04-19}
\edef\@latexrelease@catcode@null{\the\catcode`\^^@ }
\catcode`\^^@=12
-\IncludeInRelease{2021/05/01}%
- {\NewDocumentCommand}{Document commands}%
\ExplSyntaxOn
+\NewModuleRelease{2020/10/01}{ltcmd}
+ {Document~command~parser}%
\tl_new:N \l__cmd_arg_spec_tl
\tl_new:N \l__cmd_args_tl
\tl_new:N \l__cmd_args_i_tl
@@ -3275,7 +3491,7 @@ of this package available from CTAN}
}
\cs_new_protected:Npn \__cmd_get_arg_spec:NTF #1#2#3
{
- \__cmd_cmd_if_xparse:NTF #1
+ \__kernel_cmd_if_xparse:NTF #1
{
\tl_set:Nx \ArgumentSpecification { \tl_item:Nn #1 { 2 } }
#2
@@ -3377,7 +3593,7 @@ of this package available from CTAN}
#1 {#2} {#4}
\__cmd_tl_mapthread_loop:w #1#3 \q_mark
}
-\cs_new_protected:Npn \__cmd_cmd_if_xparse:NTF #1
+\cs_new_protected:Npn \__kernel_cmd_if_xparse:NTF #1
{
\exp_args:Nf \str_case_e:nnTF
{
@@ -3830,31 +4046,21 @@ of this package available from CTAN}
\cs_new_eq:NN \ShowDocumentEnvironmentArgSpec \__cmd_show_arg_spec:n
\cs_gset_eq:NN \__kernel_chk_if_free_cs:N \__cmd_chk_if_free_cs:N
\cs_undefine:N \__cmd_chk_if_free_cs:N
-\ExplSyntaxOff
-\EndIncludeInRelease
-\catcode`\^^@=\@latexrelease@catcode@null\relax
-\IncludeInRelease{2020/10/01}%
- {\NewDocumentCommand}{Document commands}%
-\@ifundefined{NewDocumentCommand}
- {%
- \IfFileExists{xparse.ltx}
- {\input xparse.ltx }
- {\@latex@error{LaTeX requires xparse}\@ehd}%
- }
- {}
-\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{ltcmd}%
+ {Document~command~parser}%
-\IncludeInRelease{0000/00/00}%
- {\NewDocumentCommand}{Document commands}%
-
-\EndIncludeInRelease
+\EndModuleRelease
+\ExplSyntaxOff
+\@ifundefined{ExplSyntaxOff}{}{\latexrelease@postexpl}
+\catcode`\^^@=\@latexrelease@catcode@null\relax
%%% From File: lthooks.dtx
-\def\lthooksversion{v1.0h}
-\def\lthooksdate{2021/01/15}
-\IncludeInRelease{2020/10/01}%
- {\NewHook}{The hook management}%
+\def\lthooksversion{v1.0m}
+\def\lthooksdate{2021/04/29}
+
\ExplSyntaxOn
+\NewModuleRelease{2020/10/01}{lthooks}
+ {The~hook~management~system}
\bool_new:N \g__hook_debug_bool
\cs_new_eq:NN \__hook_debug:n \use_none:n
\cs_new_protected:Npn \hook_debug_on:
@@ -3918,24 +4124,34 @@ of this package available from CTAN}
\cs_new_protected:Npn \__hook_tl_gclear:N #1
{ \__hook_tl_gset_eq:NN #1 \c_empty_tl }
\cs_generate_variant:Nn \__hook_tl_gclear:N { c }
+
+
\cs_new_protected:Npn \hook_new:n #1
{ \__hook_normalize_hook_args:Nn \__hook_new:n {#1} }
\cs_new_protected:Npn \__hook_new:n #1
{
- \hook_if_exist:nTF {#1}
- { \msg_error:nnn { hooks } { exists } {#1} }
+ \__hook_if_declared:nTF {#1}
+ { \__kernel_msg_error:nnn { hooks } { exists } {#1} }
+ {
+ \tl_new:c { g__hook_#1_declared_tl }
+ \__hook_make_usable:n {#1}
+ }
+ }
+\cs_new_protected:Npn \__hook_make_usable:n #1
+ {
+ \tl_if_exist:cF { __hook~#1 }
{
\seq_gput_right:Nn \g__hook_all_seq {#1}
\tl_new:c { __hook~#1 }
- \__hook_declare:n {#1}
- \clist_new:c {g__hook_#1_labels_clist}
+ \__hook_init_structure:n {#1}
+ \clist_new:c { g__hook_#1_labels_clist }
\tl_new:c { g__hook_#1_reversed_tl }
\__hook_include_legacy_code_chunk:n {#1}
- }
+ }
}
-\cs_new_protected:Npn \__hook_declare:n #1
+\cs_new_protected:Npn \__hook_init_structure:n #1
{
- \__hook_if_exist:nF {#1}
+ \__hook_if_structure_exist:nF {#1}
{
\prop_new:c { g__hook_#1_code_prop }
\tl_new:c { __hook_toplevel~#1 }
@@ -3963,6 +4179,64 @@ of this package available from CTAN}
}
}
}
+\IncludeInRelease{2021/06/01}%
+ {\hook_disable:n}{Disable~hooks}
+\cs_new_protected:Npn \hook_disable:n #1
+ { \__hook_normalize_hook_args:Nn \__hook_disable:n {#1} }
+\cs_new_protected:Npn \__hook_disable:n #1
+ {
+ \tl_gclear_new:c { g__hook_#1_declared_tl }
+ \cs_undefine:c { __hook~#1 }
+ }
+\prg_new_conditional:Npnn \__hook_if_disabled:n #1 { p, T, F, TF }
+ {
+ \bool_lazy_and:nnTF
+ { \tl_if_exist_p:c { g__hook_#1_declared_tl } }
+ { ! \tl_if_exist_p:c { __hook~#1 } }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}
+ {\hook_disable:n}{Disable~hooks}
+
+\cs_new_protected:Npn \hook_disable:n #1 {}
+
+\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}%
+ {\hook_provide:n}{Providing~hooks}
+\cs_new_protected:Npn \hook_provide:n #1
+ { \__hook_normalize_hook_args:Nn \__hook_provide:nn {#1} { } }
+\cs_new_protected:Npn \hook_provide_reversed:n #1
+ { \__hook_normalize_hook_args:Nn \__hook_provide:nn {#1} { - } }
+\cs_new_protected:Npn \__hook_provide:nn #1 #2
+ {
+ \__hook_if_disabled:nTF {#1}
+ { \__kernel_msg_warning:nnn { hooks } { provide-disabled } {#1} }
+ {
+ \__hook_if_declared:nTF {#1}
+ {
+ \str_if_eq:eeF { \tl_use:c { g__hook_#1_reversed_tl } } {#2}
+ { \__kernel_msg_error:nnn { hooks } { provide-error } {#1} }
+ }
+ {
+ \tl_new:c { g__hook_#1_declared_tl }
+ \__hook_make_usable:n {#1}
+ \tl_gset:cn { g__hook_#1_reversed_tl } {#2}
+ }
+ }
+ }
+\cs_new_protected:Npn \hook_provide_pair:nn #1#2
+ { \hook_provide:n {#1} \hook_provide_reversed:n {#2} }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}
+ {\hook_provide:n}{Providing~hooks}
+
+\cs_new_protected:Npn \hook_provide_reversed:n #1 {}
+\cs_new_protected:Npn \hook_provide:n #1 {}
+\cs_new_protected:Npn \hook_provide_pair:nn #1#2 {}
+
+\EndIncludeInRelease
\cs_new:Npn \__hook_parse_label_default:n #1
{
\tl_if_novalue:nTF {#1}
@@ -3973,7 +4247,7 @@ of this package available from CTAN}
{
\tl_if_empty:nTF {#1}
{
- \msg_expandable_error:nn { hooks } { empty-label }
+ \__kernel_msg_expandable_error:nn { hooks } { empty-label }
\__hook_currname_or_default:
}
{
@@ -4001,7 +4275,7 @@ of this package available from CTAN}
{
\tl_if_empty:NTF \@currname
{
- \msg_expandable_error:nnn { hooks } { should-not-happen }
+ \__kernel_msg_expandable_error:nnn { hooks } { should-not-happen }
{ Empty~default~label. }
\__hook_make_name:n { label-missing }
}
@@ -4058,12 +4332,16 @@ of this package available from CTAN}
\__hook_if_marked_removal:nnTF {#1} {#2}
{ \__hook_unmark_removal:nn {#1} {#2} }
{
- \hook_if_exist:nTF {#1}
+ \__hook_if_usable:nTF {#1}
{
\__hook_hook_gput_code_do:nnn {#1} {#2} {#3}
\__hook_update_hook_code:n {#1}
}
- { \__hook_try_declaring_generic_hook:nnn {#1} {#2} {#3} }
+ {
+ \__hook_if_disabled:nTF {#1}
+ { \__kernel_msg_error:nnn { hooks } { hook-disabled } {#1} }
+ { \__hook_try_declaring_generic_hook:nnn {#1} {#2} {#3} }
+ }
}
}
}
@@ -4071,17 +4349,17 @@ of this package available from CTAN}
\cs_new_protected:Npn \__hook_hook_gput_code_do:nnn #1 #2 #3
{
\__hook_debug:n{\iow_term:x{****~ Add~ to~
- \hook_if_exist:nF {#1} { undeclared~ }
+ \__hook_if_usable:nF {#1} { undeclared~ }
hook~ #1~ (#2)
\on@line\space <-~ \tl_to_str:n{#3}} }
\str_if_eq:nnTF {#2} { top-level }
{
\str_if_eq:eeTF { top-level } { \__hook_currname_or_default: }
{
- \__hook_declare:n {#1}
+ \__hook_init_structure:n {#1}
\__hook_tl_gput_right:cn { __hook_toplevel~#1 } {#3}
}
- { \msg_error:nnn { hooks } { misused-top-level } {#1} }
+ { \__kernel_msg_error:nnn { hooks } { misused-top-level } {#1} }
}
{
\prop_get:cnNTF { g__hook_#1_code_prop } {#2} \l__hook_return_tl
@@ -4094,7 +4372,7 @@ of this package available from CTAN}
}
\cs_new_protected:Npn \__hook_gput_undeclared_hook:nnn #1 #2 #3
{
- \__hook_declare:n {#1}
+ \__hook_init_structure:n {#1}
\__hook_hook_gput_code_do:nnn {#1} {#2} {#3}
}
\cs_new_protected:Npn \__hook_try_declaring_generic_hook:nnn #1
@@ -4122,6 +4400,8 @@ of this package available from CTAN}
{ #2 }
{ #3 } {#1}
}
+\IncludeInRelease{2021/06/01}%
+ {\__hook_try_declaring_generic_hook:wn}{Support~cmd~hooks}
\prg_new_protected_conditional:Npnn \__hook_try_declaring_generic_hook:wn
#1 / #2 / #3 / #4 \scan_stop: #5 { TF }
{
@@ -4130,7 +4410,12 @@ of this package available from CTAN}
{
\prop_if_in:NnTF \c__hook_generics_prop {#1}
{
- \hook_if_exist:nF {#5} { \hook_new:n {#5} }
+ \__hook_if_usable:nF {#5}
+ {
+ \str_if_eq:nnT {#1} { cmd }
+ { \__hook_try_put_cmd_hook:n {#5} }
+ \__hook_make_usable:n {#5}
+ }
\prop_if_in:NnTF \c__hook_generics_reversed_ii_prop {#2}
{ \tl_gset:cn { g__hook_#5_reversed_tl } { - } }
{
@@ -4142,6 +4427,32 @@ of this package available from CTAN}
{ \prg_return_false: }
}
}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\__hook_try_declaring_generic_hook:wn}{Support~cmd~hooks}
+
+\prg_new_protected_conditional:Npnn \__hook_try_declaring_generic_hook:wn
+ #1 / #2 / #3 / #4 \scan_stop: #5 { TF }
+ {
+ \tl_if_empty:nTF {#2}
+ { \prg_return_false: }
+ {
+ \prop_if_in:NnTF \c__hook_generics_prop {#1}
+ {
+ \__hook_if_declared:nF {#5} { \hook_new:n {#5} }
+ \prop_if_in:NnTF \c__hook_generics_reversed_ii_prop {#2}
+ { \tl_gset:cn { g__hook_#5_reversed_tl } { - } }
+ {
+ \prop_if_in:NnT \c__hook_generics_reversed_iii_prop {#3}
+ { \tl_gset:cn { g__hook_#5_reversed_tl } { - } }
+ }
+ \prg_return_true:
+ }
+ { \prg_return_false: }
+ }
+ }
+
+\EndIncludeInRelease
\prg_new_conditional:Npnn \__hook_if_file_hook:w
#1 / #2 / #3 \s__hook_mark { TF }
{
@@ -4170,7 +4481,7 @@ of this package available from CTAN}
{ \__hook_strip_double_slash:w #1/#2/#3 / #4 \s__hook_mark }
}
\prop_const_from_keyval:Nn \c__hook_generics_prop
- {env=,file=,package=,class=,include=}
+ {cmd=,env=,file=,package=,class=,include=}
\prop_const_from_keyval:Nn \c__hook_generics_reversed_ii_prop {after=,end=}
\prop_const_from_keyval:Nn \c__hook_generics_reversed_iii_prop {after=}
\prop_const_from_keyval:Nn \c__hook_generics_file_prop {before=,after=}
@@ -4178,7 +4489,7 @@ of this package available from CTAN}
{ \__hook_normalize_hook_args:Nnn \__hook_gremove_code:nn {#1} {#2} }
\cs_new_protected:Npn \__hook_gremove_code:nn #1 #2
{
- \__hook_if_exist:nTF {#1}
+ \__hook_if_structure_exist:nTF {#1}
{
\str_if_eq:nnTF {#2} {*}
{
@@ -4196,7 +4507,7 @@ of this package available from CTAN}
{#1} {#2}
}
}
- \hook_if_exist:nT {#1}
+ \__hook_if_usable:nT {#1}
{ \__hook_update_hook_code:n {#1} }
}
{ \__hook_mark_removal:nn {#1} {#2} }
@@ -4231,14 +4542,14 @@ of this package available from CTAN}
}
\cs_new_protected:Npn \__hook_gset_rule:nnnn #1#2#3#4
{
- \__hook_declare:n {#1}
+ \__hook_init_structure:n {#1}
\__hook_rule_gclear:nnn {#1} {#2} {#4}
\cs_if_exist_use:cTF { __hook_rule_#3_gset:nnn }
{
{#1} {#2} {#4}
\__hook_update_hook_code:n {#1}
}
- { \msg_error:nnnnnn { hooks } { unknown-rule }
+ { \__kernel_msg_error:nnnnnn { hooks } { unknown-rule }
{#1} {#2} {#3} {#4} }
}
\cs_new_protected:Npn \__hook_rule_before_gset:nnn #1#2#3
@@ -4279,7 +4590,7 @@ of this package available from CTAN}
{
\if_int_compare:w \__hook_str_compare:nn {#1} {#2} > 0 \exp_stop_f:
\prg_return_true:
- \else
+ \else:
\prg_return_false:
\fi:
}
@@ -4313,7 +4624,7 @@ of this package available from CTAN}
\__hook_debug:n{ \iow_term:x{^^JUpdate~ code~ for~ hook~
'#1' \on@line :^^J} }
\__hook_include_legacy_code_chunk:n {#1}
- \hook_if_exist:nT {#1}
+ \__hook_if_usable:nT {#1}
{
\prop_if_empty:cTF {g__hook_#1_code_prop}
{
@@ -4457,7 +4768,7 @@ of this package available from CTAN}
\cs_new_protected:cpn { __hook_apply_rule_xE:nnn } #1#2#3
{
\__hook_debug:n { \__hook_msg_pair_found:nnn {#1} {#2} {#3} }
- \msg_error:nnnnnn { hooks } { labels-incompatible }
+ \__kernel_msg_error:nnnnnn { hooks } { labels-incompatible }
{#1} {#2} {#3} { 1 }
\use:c { __hook_apply_rule_->:nnn } {#1} {#2} {#3}
\use:c { __hook_apply_rule_<-:nnn } {#1} {#2} {#3}
@@ -4465,7 +4776,7 @@ of this package available from CTAN}
\cs_new_protected:cpn { __hook_apply_rule_xW:nnn } #1#2#3
{
\__hook_debug:n { \__hook_msg_pair_found:nnn {#1} {#2} {#3} }
- \msg_warning:nnnnnn { hooks } { labels-incompatible }
+ \__kernel_msg_warning:nnnnnn { hooks } { labels-incompatible }
{#1} {#2} {#3} { 0 }
}
\cs_new_protected:cpn { __hook_apply_rule_->:nnn } #1#2#3
@@ -4533,8 +4844,10 @@ of this package available from CTAN}
{
\__hook_preamble_hook:n {#1}
\__hook_log_cmd:x { ^^J ->~The~hook~'#1': }
- \hook_if_exist:nF {#1}
- { \__hook_log_line:x { is~not~declared! } }
+ \__hook_if_usable:nF {#1}
+ { \__hook_log_line:x { The~hook~is~not~declared. } }
+ \__hook_if_disabled:nT {#1}
+ { \__hook_log_line:x { The~hook~is~disabled. } }
\hook_if_empty:nTF {#1}
{ #2 { The~hook~is~empty } }
{
@@ -4548,7 +4861,7 @@ of this package available from CTAN}
\__hook_log_line:x
{
Document-level~(top-level)~code
- \hook_if_exist:nT {#1}
+ \__hook_if_usable:nT {#1}
{ ~(executed~\__hook_if_reversed:nTF {#1} {first} {last} ) } :
}
\__hook_log_line_indent:x
@@ -4579,7 +4892,7 @@ of this package available from CTAN}
\bool_if:NT \l__hook_tmpa_bool
{ \__hook_log_line_indent:x { --- } }
\bool_lazy_and:nnTF
- { \hook_if_exist_p:n {#1} }
+ { \__hook_if_usable_p:n {#1} }
{ ! \hook_if_empty_p:n {#1} }
{
\__hook_log_line:x
@@ -4601,10 +4914,12 @@ of this package available from CTAN}
}
}
{
+ \__hook_log_line:x { Execution~order: }
#2
{
- Hook~ \hook_if_exist:nTF {#1}
- {code~pool~empty} {not~declared}
+ \@spaces Not~set~because~the~hook~ \__hook_if_usable:nTF {#1}
+ { code~pool~is~empty }
+ { is~\__hook_if_disabled:nTF {#1} {disabled} {undeclared} }
}
}
}
@@ -4660,10 +4975,14 @@ of this package available from CTAN}
{ \__hook_normalize_hook_args:Nn \__hook_gput_next_code:nn {#1} }
\cs_new_protected:Npn \__hook_gput_next_code:nn #1 #2
{
- \__hook_declare:n {#1}
- \hook_if_exist:nTF {#1}
- { \__hook_gput_next_do:nn {#1} {#2} }
- { \__hook_try_declaring_generic_next_hook:nn {#1} {#2} }
+ \__hook_if_disabled:nTF {#1}
+ { \__kernel_msg_error:nnn { hooks } { hook-disabled } {#1} }
+ {
+ \__hook_init_structure:n {#1}
+ \__hook_if_usable:nTF {#1}
+ { \__hook_gput_next_do:nn {#1} {#2} }
+ { \__hook_try_declaring_generic_next_hook:nn {#1} {#2} }
+ }
}
\cs_new_protected:Npn \__hook_gput_next_do:nn #1
{
@@ -4715,12 +5034,12 @@ of this package available from CTAN}
{
\__hook_if_file_hook:wTF #1 / / \s__hook_mark
{
- \exp_args:Ne \__hook_if_exist_use:n
+ \exp_args:Ne \__hook_if_usable_use:n
{ \exp_args:Ne \__hook_file_hook_normalize:n {#1} }
}
- { \__hook_if_exist_use:n {#1} } % file/ generic hook (e.g. file/before)
+ { \__hook_if_usable_use:n {#1} } % file/ generic hook (e.g. file/before)
}
-\cs_new_protected:Npn \__hook_if_exist_use:n #1
+\cs_new_protected:Npn \__hook_if_usable_use:n #1
{
\tl_if_exist:cT { __hook~#1 }
{
@@ -4740,9 +5059,10 @@ of this package available from CTAN}
}
\cs_new_protected:Npn \__hook_use_once_store:n #1
{ \prop_gput:Nnn \g__hook_execute_immediately_prop {#1} { } }
+
\prg_new_conditional:Npnn \hook_if_empty:n #1 { p , T , F , TF }
{
- \__hook_if_exist:nTF {#1}
+ \__hook_if_structure_exist:nTF {#1}
{
\bool_lazy_and:nnTF
{ \prop_if_empty_p:c { g__hook_#1_code_prop } }
@@ -4756,18 +5076,24 @@ of this package available from CTAN}
}
{ \prg_return_true: }
}
-\prg_new_conditional:Npnn \hook_if_exist:n #1 { p , T , F , TF }
+\prg_new_conditional:Npnn \__hook_if_usable:n #1 { p , T , F , TF }
{
\tl_if_exist:cTF { __hook~#1 }
{ \prg_return_true: }
{ \prg_return_false: }
}
-\prg_new_conditional:Npnn \__hook_if_exist:n #1 { p , T , F , TF }
+\prg_new_conditional:Npnn \__hook_if_structure_exist:n #1 { p , T , F , TF }
{
\prop_if_exist:cTF { g__hook_#1_code_prop }
{ \prg_return_true: }
{ \prg_return_false: }
}
+\prg_new_conditional:Npnn \__hook_if_declared:n #1 { p, T, F, TF }
+ {
+ \tl_if_exist:cTF { g__hook_#1_declared_tl }
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
\prg_new_conditional:Npnn \__hook_if_reversed:n #1 { p , T , F , TF }
{
\if_int_compare:w \cs:w g__hook_#1_reversed_tl \cs_end: 1 < 0 \exp_stop_f:
@@ -4776,47 +5102,54 @@ of this package available from CTAN}
\prg_return_false:
\fi:
}
-\msg_new:nnnn { hooks } { labels-incompatible }
+\__kernel_msg_new:nnnn { hooks } { labels-incompatible }
{
- Labels~`#1'~and~`#2'~are~incompatible
- \str_if_eq:nnF {#3} {??} { ~in~hook~`#3' } .~
+ Labels~'#1'~and~'#2'~are~incompatible
+ \str_if_eq:nnF {#3} {??} { ~in~hook~'#3' } .~
\int_compare:nNnTF {#4} = { 1 }
{ The~ code~ for~ both~ labels~ will~ be~ dropped. }
{ You~ may~ see~ errors~ later. }
}
{ LaTeX~found~two~incompatible~labels~in~the~same~hook.~
This~indicates~an~incompatibility~between~packages. }
-\msg_new:nnnn { hooks } { exists }
- { Hook~`#1'~ has~ already~ been~ declared. }
+\__kernel_msg_new:nnnn { hooks } { exists }
+ { Hook~'#1'~ has~ already~ been~ declared. }
{ There~ already~ exists~ a~ hook~ declaration~ with~ this~
name.\\
Please~ use~ a~ different~ name~ for~ your~ hook.}
-\msg_new:nnn { hooks } { empty-label }
+\__kernel_msg_new:nnnn { hooks } { hook-disabled }
+ { Cannot~add~code~to~disabled~hook~'#1'. }
+ {
+ The~hook~'#1'~you~tried~to~add~code~to~was~previously~disabled~
+ with~\iow_char:N\\hook_disable:n~or~\iow_char:N\\DisableHook,~so~
+ it~cannot~have~code~added~to~it.
+ }
+\__kernel_msg_new:nnn { hooks } { empty-label }
{
Empty~code~label~\msg_line_context:.~
- Using~`\__hook_currname_or_default:'~instead.
+ Using~'\__hook_currname_or_default:'~instead.
}
-\msg_new:nnn { hooks } { no-default-label }
+\__kernel_msg_new:nnn { hooks } { no-default-label }
{
Missing~(empty)~default~label~\msg_line_context:. \\
This~command~was~ignored.
}
-\msg_new:nnnn { hooks } { unknown-rule }
- { Unknown~ relationship~ `#3'~
- between~ labels~ `#2'~ and~ `#4'~
- \str_if_eq:nnF {#1} {??} { ~in~hook~`#1' }. ~
+\__kernel_msg_new:nnnn { hooks } { unknown-rule }
+ { Unknown~ relationship~ '#3'~
+ between~ labels~ '#2'~ and~ '#4'~
+ \str_if_eq:nnF {#1} {??} { ~in~hook~'#1' }. ~
Perhaps~ a~ missspelling?
}
{
The~ relation~ used~ not~ known~ to~ the~ system.~ Allowed~ values~ are~
- `before'~ or~ `<',~
- `after'~ or~ `>',~
- `incompatible-warning',~
- `incompatible-error',~
- `voids'~ or~
- `unrelated'.
+ 'before'~ or~ '<',~
+ 'after'~ or~ '>',~
+ 'incompatible-warning',~
+ 'incompatible-error',~
+ 'voids'~ or~
+ 'unrelated'.
}
-\msg_new:nnnn { hooks } { misused-top-level }
+\__kernel_msg_new:nnnn { hooks } { misused-top-level }
{
Illegal~\iow_char:N \\AddToHook{#1}[top-level]{...}.\\
'top-level'~is~reserved~for~the~user's~document.
@@ -4827,36 +5160,67 @@ of this package available from CTAN}
'\__hook_currname_or_default:'~for~this~\@cls@pkg,~or~another~
suitable~label.
}
-\msg_new:nnn { hooks } { set-top-level }
+\__kernel_msg_new:nnn { hooks } { set-top-level }
{
- You~cannot~change~the~default~label~#1~`top-level'.~Illegal \\
+ You~cannot~change~the~default~label~#1~'top-level'.~Illegal \\
\use:nn { ~ } { ~ } \iow_char:N \\#2{#3} \\
\msg_line_context:.
}
-\msg_new:nnn { hooks } { ddhl-deprecated }
+\__kernel_msg_new:nnn { hooks } { ddhl-deprecated }
{
\iow_char:N \\DeclareDefaultHookLabel~is~deprecated.\\
Use~\iow_char:N \\SetDefaultHookLabel~instead.\\ \\
The~deprecated~name~will~be~removed~in~the~next~release.
}
-\msg_new:nnn { hooks } { extra-pop-label }
+\__kernel_msg_new:nnn { hooks } { extra-pop-label }
{
Extra~\iow_char:N \\PopDefaultHookLabel. \\
This~command~will~be~ignored.
}
-\msg_new:nnn { hooks } { missing-pop-label }
+\__kernel_msg_new:nnn { hooks } { missing-pop-label }
{
Missing~\iow_char:N \\PopDefaultHookLabel. \\
- The~label~`#1'~was~pushed~but~never~popped.~Something~is~wrong.
+ The~label~'#1'~was~pushed~but~never~popped.~Something~is~wrong.
}
-\msg_new:nnn { hooks } { should-not-happen }
+\__kernel_msg_new:nnn { hooks } { should-not-happen }
{
ERROR!~This~should~not~happen.~#1 \\
Please~report~at~https://github.com/latex3/latex2e.
}
+\__kernel_msg_new:nnn { hooks } { provide-disabled }
+ {
+ Can't~ provide~ hook~ '#1'~ because~ it~ is~ disabled!
+ }
+\__kernel_msg_new:nnnn { hooks } { provide-error }
+ {
+ Hook~'#1'~ already~ declared~ as~ a~
+ \__hook_if_reversed:nTF {#1} { reversed } { normal }~ hook!
+ }
+ {
+ You~ attempted~ to~ provide~ the~ hook~'#1'~ as~ a~
+ \__hook_if_reversed:nTF {#1} { normal } { reversed }~ hook,~ but~ it~
+ was~ already~ previously~ declared~ as~ a~
+ \__hook_if_reversed:nTF {#1} { reversed } { normal }~ hook.~
+ A~ redeclaration~ is~ not~ possible.
+ }
\NewDocumentCommand \NewHook { m }{ \hook_new:n {#1} }
\NewDocumentCommand \NewReversedHook { m }{ \hook_new_reversed:n {#1} }
\NewDocumentCommand \NewMirroredHookPair { mm }{ \hook_new_pair:nn {#1}{#2} }
+\IncludeInRelease{2021/06/01}%
+ {\hook_provide:n}{Providing~hooks}
+\NewDocumentCommand \ProvideHook { m }{ \hook_provide:n {#1} }
+\NewDocumentCommand \ProvideReversedHook { m }{ \hook_provide_reversed:n {#1} }
+\NewDocumentCommand \ProvideMirroredHookPair { mm }{ \hook_provide_pair:nn {#1}{#2} }
+\NewDocumentCommand \DisableHook { m }{ \hook_disable:n {#1} }
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}
+ {\hook_provide:n}{Providing~hooks}
+
+\def \ProvideHook#1{}
+\def \ProvideReversedHook#1{}
+\def \ProvideMirroredHookPair#1#2{}
+
+\EndIncludeInRelease
\NewDocumentCommand \AddToHook { m o +m }
{ \hook_gput_code:nnn {#1} {#2} {#3} }
\NewDocumentCommand \AddToHookNext { m +m }
@@ -4864,7 +5228,8 @@ of this package available from CTAN}
\NewDocumentCommand \RemoveFromHook { m o }
{ \hook_gremove_code:nn {#1} {#2} }
\tl_gset:Nn \g__hook_hook_curr_name_tl { top-level }
-\seq_gput_right:Nn \g__hook_name_stack_seq { top-level }
+\seq_if_empty:NT \g__hook_name_stack_seq
+ { \seq_gput_right:Nn \g__hook_name_stack_seq { top-level } }
\cs_set_protected:Npn \__hook_tmp:w #1 #2 #3
{
\quark_if_recursion_tail_stop:n {#1}
@@ -4875,16 +5240,17 @@ of this package available from CTAN}
\q_recursion_tail \q_recursion_tail
\q_recursion_tail \q_recursion_stop
\tl_gset:Nx \g__hook_hook_curr_name_tl { \@currname }
+\seq_gpop_right:NN \g__hook_name_stack_seq \l__hook_tmpa_tl
\cs_new_protected:Npn \__hook_curr_name_push:n #1
{ \exp_args:Nx \__hook_curr_name_push_aux:n { \__hook_make_name:n {#1} } }
\cs_new_protected:Npn \__hook_curr_name_push_aux:n #1
{
\tl_if_blank:nTF {#1}
- { \msg_error:nn { hooks } { no-default-label } }
+ { \__kernel_msg_error:nn { hooks } { no-default-label } }
{
\str_if_eq:nnTF {#1} { top-level }
{
- \msg_error:nnnnn { hooks } { set-top-level }
+ \__kernel_msg_error:nnnnn { hooks } { set-top-level }
{ to } { PushDefaultHookLabel } {#1}
}
{
@@ -4897,7 +5263,7 @@ of this package available from CTAN}
{
\seq_gpop:NNTF \g__hook_name_stack_seq \l__hook_return_tl
{ \tl_gset_eq:NN \g__hook_hook_curr_name_tl \l__hook_return_tl }
- { \msg_error:nn { hooks } { extra-pop-label } }
+ { \__kernel_msg_error:nn { hooks } { extra-pop-label } }
}
\tl_gput_right:Nn \@kernel@after@enddocument@afterlastpage
{ \__hook_end_document_label_check: }
@@ -4905,7 +5271,7 @@ of this package available from CTAN}
{
\seq_gpop:NNT \g__hook_name_stack_seq \l__hook_return_tl
{
- \msg_error:nnx { hooks } { missing-pop-label }
+ \__kernel_msg_error:nnx { hooks } { missing-pop-label }
{ \g__hook_hook_curr_name_tl }
\tl_gset_eq:NN \g__hook_hook_curr_name_tl \l__hook_return_tl
\__hook_end_document_label_check:
@@ -4915,7 +5281,7 @@ of this package available from CTAN}
{
\seq_if_empty:NTF \g__hook_name_stack_seq
{
- \msg_error:nnnnn { hooks } { set-top-level }
+ \__kernel_msg_error:nnnnn { hooks } { set-top-level }
{ for } { SetDefaultHookLabel } {#1}
}
{ \exp_args:Nx \__hook_set_default_label:n { \__hook_make_name:n {#1} } }
@@ -4924,14 +5290,14 @@ of this package available from CTAN}
{
\str_if_eq:nnTF {#1} { top-level }
{
- \msg_error:nnnnn { hooks } { set-top-level }
+ \__kernel_msg_error:nnnnn { hooks } { set-top-level }
{ to } { SetDefaultHookLabel } {#1}
}
{ \tl_gset:Nn \g__hook_hook_curr_name_tl {#1} }
}
\NewDocumentCommand \DeclareDefaultHookLabel { m }
{
- \msg_error:nn { hooks } { ddhl-deprecated }
+ \__kernel_msg_error:nn { hooks } { ddhl-deprecated }
\SetDefaultHookLabel {#1}
}
\NewDocumentCommand \PushDefaultHookLabel { m }
@@ -4957,21 +5323,21 @@ of this package available from CTAN}
\@onlypreamble\DeclareDefaultHookRule
\NewDocumentCommand \ClearHookRule { m m m }
{ \hook_gset_rule:nnnn {#1}{#2}{unrelated}{#3} }
-\cs_new_eq:NN \IfHookExistsTF \hook_if_exist:nTF
\cs_new_eq:NN \IfHookEmptyTF \hook_if_empty:nTF
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
+\cs_new_eq:NN \IfHookExistsTF \__hook_if_usable:nTF
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cs_new_eq:NN \@expl@@@initialize@all@@
\__hook_initialize_all:
\cs_new_eq:NN \@expl@@@hook@curr@name@pop@@
\__hook_curr_name_pop:
-\ExplSyntaxOff
-\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\NewHook}{The hook management}%
+ {lthooks}{The~hook~management}%
-\def\NewHook#1{}
-\def\NewReversedHook#1{}
-\def\NewMirroredHookPair#1#2{}
+\def \NewHook#1{}
+\def \NewReversedHook#1{}
+\def \NewMirroredHookPair#1#2{}
+
+\def \DisableHook #1{}
\long\def\AddToHookNext#1#2{}
@@ -4993,12 +5359,475 @@ of this package available from CTAN}
\long\def \IfHookExistsTF #1#2#3{#3}
\long\def \IfHookEmptyTF #1#2#3{#2}
-\EndIncludeInRelease
+\EndModuleRelease
+\ExplSyntaxOff
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% File: ltcmdhooks.dtx (C) Copyright 2020-2021
+%% Frank Mittelbach, Phelype Oleinik, LaTeX Team
+%%% From File: ltcmdhooks.dtx
+\def\ltcmdhooksversion{v1.0a}
+\def\ltcmdhooksdate{2021/04/30}
+\ExplSyntaxOn
+\NewModuleRelease{2021/06/01}{ltcmdhooks}
+ {The~hook~management~system~for~commands}
+\tl_new:N \g_hook_patch_action_list_tl
+\int_new:N \l__hook_patch_num_args_int
+\tl_new:N \l__hook_patch_prefixes_tl
+\tl_new:N \l__hook_patch_param_text_tl
+\tl_new:N \l__hook_patch_replacement_tl
+\prop_new:N \g__hook_delayed_patches_prop
+\cs_new_protected:Npn \__hook_patch_debug:x #1
+ { \__hook_debug:n { \iow_term:x { [lthooks]~#1 } } }
+\cs_generate_variant:Nn \tl_rescan:nn { nV }
+\cs_new_protected:Npn \__hook_try_put_cmd_hook:n #1
+ { \__hook_try_put_cmd_hook:w #1 / / / \s__hook_mark {#1} }
+\cs_new_protected:Npn \__hook_try_put_cmd_hook:w
+ #1 / #2 / #3 / #4 \s__hook_mark #5
+ {
+ \__hook_debug:n { \iow_term:n { ->~Adding~cmd~hook~to~'#2'~(#3): } }
+ \str_case:nnTF {#3}
+ { { before } { } { after } { } }
+ { \exp_args:Nc \__hook_patch_cmd_or_delay:Nnn {#2} {#2} {#3} }
+ { \__kernel_msg_error:nnn { hooks } { wrong-cmd-hook } {#2} {#3} }
+ }
+\cs_new_protected:Npn \__hook_patch_cmd_or_delay:Nnn #1 #2 #3
+ {
+ \__hook_debug:n { \iow_term:n { ->~Add~generic~cmd~hook~for~#2~(#3). } }
+ \__hook_debug:n
+ { \iow_term:n { !~In~the~preamble:~delaying. } }
+ \prop_gput:Nnn \g__hook_delayed_patches_prop { #2 / #3 }
+ { \__hook_cmd_try_patch:nn {#2} {#3} }
+ }
+\cs_new_protected:Npn \__hook_cmd_begindocument_code:
+ {
+ \cs_gset_eq:NN \__hook_patch_cmd_or_delay:Nnn \__hook_patch_command:Nnn
+ \prop_map_function:NN \g__hook_delayed_patches_prop { \use_ii:nn }
+ \prop_gclear:N \g__hook_delayed_patches_prop
+ \cs_undefine:N \__hook_cmd_begindocument_code:
+ }
+\g@addto@macro \@kernel@after@begindocument
+ { \__hook_cmd_begindocument_code: }
+\cs_new_protected:Npn \__hook_cmd_try_patch:nn #1 #2
+ {
+ \__hook_debug:n
+ { \iow_term:x { ->~\string\begin{document}~try~cmd / #1 / #2. } }
+ \__hook_if_declared:nTF { cmd / #1 / #2 }
+ {
+ \__hook_debug:n
+ { \iow_term:n { .->~Giving~up:~hook~already~created. } }
+ }
+ {
+ \cs_if_exist:cT {#1}
+ { \exp_args:Nc \__hook_patch_command:Nnn {#1} {#1} {#2} }
+ }
+ }
+\cs_new_protected:Npn \__hook_patch_command:Nnn #1 #2 #3
+ {
+ \__hook_patch_debug:x { analyzing~'\token_to_str:N #1' }
+ \__hook_patch_debug:x { \token_to_str:N #1 = \token_to_meaning:N #1 }
+ \__hook_patch_check:NNnn \cs_if_exist:NTF #1 { undef }
+ {
+ \__hook_patch_debug:x { ++~control~sequence~is~defined }
+ \__hook_patch_check:NNnn \token_if_macro:NTF #1 { macro }
+ {
+ \__hook_patch_debug:x { ++~control~sequence~is~a~macro }
+ \__hook_patch_check:NNnn \__hook_if_public_command:NTF #1 { expl3 }
+ {
+ \__hook_patch_debug:x { ++~macro~is~not~private }
+ \robust@command@act
+ \g_hook_patch_action_list_tl #1
+ \__hook_retokenize_patch:Nnn { #1 {#2} {#3} }
+ }
+ }
+ }
+ }
+\cs_new_protected:Npn \__hook_patch_check:NNnn #1 #2 #3 #4
+ {
+ #1 #2 {#4}
+ {
+ \__kernel_msg_error:nnxx { hooks } { cant-patch }
+ { \token_to_str:N #2 } {#3}
+ }
+ }
+\use:x
+ {
+ \prg_new_protected_conditional:Npnn
+ \exp_not:N \__hook_if_public_command:N ##1 { TF }
+ {
+ \exp_not:N \exp_last_unbraced:Nf
+ \exp_not:N \__hook_if_public_command:w
+ { \exp_not:N \cs_to_str:N ##1 }
+ \tl_to_str:n { _ _ } \s__hook_mark
+ }
+ }
+\exp_last_unbraced:NNNNo
+\cs_new_protected:Npn \__hook_if_public_command:w
+ #1 \tl_to_str:n { _ _ } #2 \s__hook_mark
+ {
+ \tl_if_empty:nTF {#2}
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+\tl_gset:Nn \g_hook_patch_action_list_tl
+ {
+ { \@if@DeclareRobustCommand \__hook_patch_DeclareRobustCommand:Nnn }
+ { \@if@newcommand \__hook_patch_newcommand:Nnn }
+ { \__kernel_cmd_if_xparse:NTF \__hook_cmd_patch_xparse:Nnn }
+ }
+\cs_new_protected:Npn \__hook_patch_DeclareRobustCommand:Nnn #1
+ {
+ \exp_args:Nc \@if@newcommand { \cs_to_str:N #1 ~ }
+ { \exp_args:Nc \__hook_patch_newcommand:Nnn }
+ { \exp_args:NNc \__hook_patch_expand_redefine:NNnn \c_false_bool }
+ { \cs_to_str:N #1 ~ }
+ }
+\cs_new_protected:Npn \__hook_patch_newcommand:Nnn #1
+ {
+ \exp_args:NNc \__hook_patch_expand_redefine:NNnn \c_true_bool
+ { \c_backslash_str \cs_to_str:N #1 }
+ }
+\cs_new_protected:Npn \__hook_cmd_patch_xparse:Nnn #1
+ {
+ \exp_args:NNc \__hook_patch_expand_redefine:NNnn \c_false_bool
+ { \cs_to_str:N #1 ~ code }
+ }
+\cs_new_protected:Npn \__hook_patch_expand_redefine:NNnn #1 #2 #3 #4
+ {
+ \__hook_patch_debug:x { ++~command~can~be~patched~without~rescanning }
+ \int_set:Nn \l__hook_patch_num_args_int
+ {
+ \exp_args:Nf \str_count:n { \cs_argument_spec:N #2 } / 2
+ \bool_if:NT #1 { -1 }
+ }
+ \int_compare:nNnTF { \l__hook_patch_num_args_int } > { \c_zero_int }
+ {
+ \tl_set:Nx \l__hook_patch_param_text_tl
+ { \bool_if:NTF #1 { [####1] } { ####1 } }
+ \tl_set:Nx \l__hook_patch_replacement_tl
+ { \bool_if:NTF #1 { [####1] } { {####1} } }
+ \int_step_inline:nnn { 2 } { \l__hook_patch_num_args_int }
+ {
+ \tl_put_right:Nn \l__hook_patch_param_text_tl { ## ####1 }
+ \tl_put_right:Nn \l__hook_patch_replacement_tl { { ## ####1 } }
+ }
+ }
+ {
+ \tl_clear:N \l__hook_patch_param_text_tl
+ \tl_clear:N \l__hook_patch_replacement_tl
+ }
+ \group_begin:
+ \int_set:Nn \tex_escapechar:D { `\/ }
+ \use:x
+ {
+ \group_end:
+ \tl_set:Nx \exp_not:N \l__hook_patch_prefixes_tl
+ { \exp_not:N \__hook_make_prefixes:w \cs_prefix_spec:N #2 / / }
+ }
+ \use:x
+ {
+ \l__hook_patch_prefixes_tl \tex_def:D
+ \exp_not:N #2 \exp_not:V \l__hook_patch_param_text_tl
+ {
+ \str_if_eq:nnT {#4} { before }
+ { \exp_not:N \UseHook { cmd / #3 / #4 } }
+ \exp_args:No \exp_not:o
+ { \exp_after:wN #2 \l__hook_patch_replacement_tl }
+ \str_if_eq:nnT {#4} { after }
+ { \exp_not:N \UseHook { cmd / #3 / #4 } }
+ }
+ }
+ }
+\cs_new:Npn \__hook_make_prefixes:w / #1 /
+ {
+ \tl_if_empty:nF {#1}
+ {
+ \exp_not:c { tex_ \tl_trim_spaces:n {#1} :D }
+ \__hook_make_prefixes:w /
+ }
+ }
+\cs_new_protected:Npn \__hook_retokenize_patch:Nnn #1 #2 #3
+ {
+ \__hook_patch_debug:x { ..~command~can~only~be~patched~by~rescanning }
+ \str_if_eq:eeTF { \cs_argument_spec:N #1 } { }
+ { \__hook_patch_expand_redefine:NNnn \c_false_bool #1 {#2} {#3} }
+ {
+ \tl_set:Nx \l__hook_tmpa_tl
+ {
+ \int_compare:nNnTF { \char_value_catcode:n {`\@ } } = { 12 }
+ { \exp_not:N \makeatletter } { \exp_not:N \makeatother }
+ }
+ \tl_set:Nx \l__hook_tmpb_tl
+ {
+ \bool_if:NTF \l__kernel_expl_bool
+ { \ExplSyntaxOff } { \ExplSyntaxOn }
+ }
+ \use:x
+ {
+ \exp_not:N \__hook_try_patch_with_catcodes:Nnnnw
+ \exp_not:n { #1 {#2} {#3} }
+ { \prg_do_nothing: }
+ { \exp_not:V \l__hook_tmpa_tl } % @
+ { \exp_not:V \l__hook_tmpb_tl } % _:
+ {
+ \exp_not:V \l__hook_tmpa_tl % @
+ \exp_not:V \l__hook_tmpb_tl % _:
+ }
+ }
+ \q_recursion_tail \q_recursion_stop
+ {
+ \__kernel_msg_error:nnxx { hooks } { cant-patch }
+ { \c_backslash_str #2 } { retok }
+ }
+ }
+ }
+\cs_new_protected:Npn \__hook_try_patch_with_catcodes:Nnnnw #1 #2 #3 #4
+ {
+ \quark_if_recursion_tail_stop_do:nn {#4} { \use:n }
+ \__hook_patch_debug:x { ++~trying~to~patch~by~retokenization }
+ \__hook_cmd_if_scanable:NnTF {#1} {#4}
+ {
+ \__hook_patch_debug:x { ++~macro~can~be~retokenized~cleanly }
+ \__hook_patch_debug:x { ==~retokenizing~macro~now }
+ \__hook_patch_retokenize:Nnnn #1 {#2} {#3} {#4}
+ \use_i_delimit_by_q_recursion_stop:nw \use_none:n
+ }
+ {
+ \__hook_patch_debug:x { --~macro~cannot~be~retokenized~cleanly }
+ \__hook_try_patch_with_catcodes:Nnnnw #1 {#2} {#3}
+ }
+ }
+\cs_new_eq:NN \kerneltmpDoNotUse !
+\cs_new_protected:Npn \__hook_patch_required_catcodes:
+ {
+ \char_set_catcode_escape:N \\
+ \char_set_catcode_group_begin:N \{
+ \char_set_catcode_group_end:N \}
+ \char_set_catcode_parameter:N \#
+ % \int_set:Nn \tex_endlinechar:D { -1 }
+ % \int_set:Nn \tex_newlinechar:D { -1 }
+ }
+\prg_new_protected_conditional:Npnn \__hook_cmd_if_scanable:Nn #1 #2 { TF }
+ {
+ \cs_set_eq:NN \kerneltmpDoNotUse \scan_stop:
+ \cs_set_eq:NN \__hook_tmp:w \scan_stop:
+ \use:x
+ {
+ \cs_set:Npn \__hook_tmp:w
+ ####1 \tl_to_str:n { macro: } ####2 -> ####3 \s__hook_mark
+ { ####1 \def \kerneltmpDoNotUse ####2 {####3} }
+ \tl_set:Nx \exp_not:N \l__hook_tmpa_tl
+ { \exp_not:N \__hook_tmp:w \token_to_meaning:N #1 \s__hook_mark }
+ }
+ \tl_rescan:nV { #2 \__hook_patch_required_catcodes: } \l__hook_tmpa_tl
+ \token_if_eq_meaning:NNTF #1 \kerneltmpDoNotUse
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+\cs_new_protected:Npn \__hook_patch_retokenize:Nnnn #1 #2 #3 #4
+ {
+ \cs_set_eq:NN \kerneltmpDoNotUse \scan_stop:
+ \cs_set_eq:NN \__hook_tmp:w \scan_stop:
+ \use:x
+ {
+ \cs_set:Npn \__hook_tmp:w
+ ####1 \tl_to_str:n { macro: } ####2 -> ####3 \s__hook_mark
+ {
+ ####1 \def \kerneltmpDoNotUse ####2
+ {
+ \str_if_eq:nnT {#3} { before }
+ { \token_to_str:N \UseHook { cmd / #2 / #3 } }
+ ####3
+ \str_if_eq:nnT {#3} { after }
+ { \token_to_str:N \UseHook { cmd / #2 / #3 } }
+ }
+ }
+ \tl_set:Nx \exp_not:N \l__hook_tmpa_tl
+ { \exp_not:N \__hook_tmp:w \token_to_meaning:N #1 \s__hook_mark }
+ }
+ \tl_rescan:nV { #4 \__hook_patch_required_catcodes: } \l__hook_tmpa_tl
+ \cs_set_eq:NN #1 \kerneltmpDoNotUse
+ }
+\__kernel_msg_new:nnnn { hooks } { wrong-cmd-hook }
+ {
+ Command~hook~`cmd/#1/#2'~invalid.\\
+ The~hook~should~be~`cmd/#1/before'~or~`cmd/#1/after'.
+ }
+ {
+ You~tried~to~add~a~hook~to~command~\iow_char:N \\#1,~but~`#2'~
+ is~an~invalid~position.~Only~`before'~or~`after'~are~allowed.
+ }
+\__kernel_msg_new:nnnn { hooks } { cant-patch }
+ {
+ Command~`#1'~cannot~have~hooks~because~it~
+ \__hook_unpatchable_cases:n {#2} .
+ }
+ {
+ You~tried~to~add~a~hook~to~`#1',~but~LaTeX~was~not~able~to~
+ add~the~hook~to~that~command~because~`#1'~
+ \__hook_unpatchable_cases:n {#2} .
+ }
+\cs_new:Npn \__hook_unpatchable_cases:n #1
+ {
+ \str_case:nn {#1}
+ {
+ { undef } { doesn't~exist }
+ { macro } { is~not~a~macro }
+ { expl3 } { is~a~private~expl3~macro }
+ { retok } { can't~be~retokenized~cleanly }
+ }
+ }
+\IncludeInRelease{0000/00/00}{ltcmdhooks}%
+ {The~hook~management~system~for~commands}
+
+\cs_set_eq:NN \__hook_cmd_begindocument_code: \prg_do_nothing:
+
+\EndModuleRelease
+\ExplSyntaxOff
%%% From File: ltalloc.dtx
%%% From File: ltcntrl.dtx
%%% From File: lterror.dtx
%%% From File: ltpar.dtx
+%% File: ltpara.dtx (C) Copyright 2020-2021
+%%% From File: ltpara.dtx
+\def\ltparaversion{v1.0f}
+\def\ltparadate{2021/04/16}
+
+
+\ExplSyntaxOn
+\NewModuleRelease{2021/06/01}{ltpara}
+ {Paragraph~handling~and~hooks}
+\hook_new_pair:nn{para/before}{para/after}
+\hook_new_pair:nn{para/begin}{para/end}
+\let \@kernel@before@para@before \@empty
+\let \@kernel@before@para@begin \@empty
+\let \@kernel@after@para@end \@empty
+\let \@kernel@after@para@after \@empty
+\tl_new:N \g__para_standard_everypar_tl
+\tl_gset:Nn \g__para_standard_everypar_tl {
+ \box_gset_to_last:N \g_para_indent_box
+ \group_begin:
+ \tex_par:D
+ \group_end:
+ \tex_everypar:D { \__kernel_msg_error:nnnn {para}{mode}{before}{vertical} }
+ \@kernel@before@para@before
+ \hook_use:n {para/before}
+ \group_begin:
+ \tex_everypar:D {}
+ \skip_zero:N \tex_parskip:D
+ \tex_noindent:D
+ \group_end:
+ \tex_everypar:D{\g__para_standard_everypar_tl}
+ \@kernel@before@para@begin
+ \hook_use:n {para/begin}
+ \if_mode_horizontal: \else:
+ \__kernel_msg_error:nnnn {para}{mode}{begin}{vertical} \fi:
+ \__para_handle_indent:
+}
+\tex_everypar:D{\g__para_standard_everypar_tl}
+\newtoks \everypar
+
+\tl_gput_right:Nx \g__para_standard_everypar_tl {
+ \exp_not:N \the
+ \exp_not:N \toks
+ \the \allocationnumber
+ \c_space_tl
+}
+\box_new:N \g_para_indent_box
+
+\cs_new:Npn \__para_handle_indent: {
+ \box_use_drop:N \g_para_indent_box
+}
+\cs_new:Npn \para_omit_indent: {
+ \box_gclear:N \g_para_indent_box
+}
+\cs_set_eq:NN \IndentBox \g_para_indent_box
+\cs_set_eq:NN \OmitIndent \para_omit_indent:
+\cs_new_protected:Npn \para_end: {
+ \mode_if_horizontal:TF {
+ \mode_if_inner:F {
+ \tex_unskip:D
+ \hook_use:n{para/end}
+ \@kernel@after@para@end
+ \mode_if_horizontal:TF {
+ \if_int_compare:w 0 < \tex_lastnodetype:D
+ \tex_kern:D \c_zero_dim
+ \fi:
+ \tex_par:D
+ \hook_use:n{para/after}
+ \@kernel@after@para@after
+ }
+ { \__kernel_msg_error:nnnn {para}{mode}{end}{horizontal} }
+ }
+ }
+ \tex_par:D
+}
+\cs_new:Npn \para_raw_indent: {
+ \mode_if_vertical:TF
+ {
+ \tex_everypar:D {
+ \box_gset_to_last:N \g_para_indent_box
+ \tex_everypar:D { \g__para_standard_everypar_tl }
+ \__para_handle_indent:
+ \the\everypar }
+ }
+ { \__kernel_msg_error:nn {para}{raw} }
+ \tex_indent:D
+}
+\cs_new:Npn \para_raw_noindent: {
+ \mode_if_vertical:TF
+ {
+ \tex_everypar:D {
+ \tex_everypar:D { \g__para_standard_everypar_tl }
+ \the\everypar }
+ }
+ { \__kernel_msg_error:nn {para}{raw} }
+ \tex_noindent:D
+}
+\cs_new_eq:NN \para_raw_end: \tex_par:D
+\cs_set_eq:NN \RawIndent \para_raw_indent:
+\cs_set_eq:NN \RawNoindent \para_raw_noindent:
+\cs_set_eq:NN \RawParEnd \para_raw_end:
+\cs_set_eq:NN \par \para_end:
+\cs_set_eq:NN \@@par \para_end:
+\cs_set_eq:NN \endgraf \para_end:
+\everypar{\@nodocument} %% To get an error if text appears before the
+\__kernel_msg_new:nnnn {para} {mode}
+ {
+ Illegal~mode~ change~ in~ hook~ 'para/#1'.\\
+ Hook~ code~ did~ not~ remain~ in~ #2~ mode.
+ }
+ {
+ Paragraph~ hooks~ cannot~ change~ the~ TeX~ mode~ without~ causing~
+ endless~ recursion.~ The~ hook~ code~ in~ 'para/#1'~ needs~ to~ stay~
+ in~ #2~ mode,~ but~ it~ didn't.~ Examine~ the~ hook~
+ code~ with~ \ShowHook~ to~ find~ the~ issue.
+ }
+\__kernel_msg_new:nnnn {para} {raw}
+ {
+ Paragraph started while not in vertical mode.
+ }
+ {
+ Starting a paragraph with \RawIndent or \RawNoindent
+ (or \para_raw_indent: or \para_raw_noindent:) is only
+ allowed if LaTeX is in vertical mode.
+ }
+
+\IncludeInRelease{0000/00/00}%
+ {ltpara}{Undo~hooks~for~paragraphs}
+
+\let \OmitIndent \@undefined
+\let \IndentBox \@undefined
+\let \RawIndent \@undefined
+\let \RawNoindent \@undefined
+\let \RawParEnd \@undefined
+
+\cs_set_eq:NN \par \tex_par:D
+\cs_set_eq:NN \@@par \tex_par:D
+\cs_set_eq:NN \endgraf \tex_par:D
+
+\EndModuleRelease
+\ExplSyntaxOff
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% From File: ltspace.dtx
\IncludeInRelease{2019/10/01}%
{\pagebreak}{Make commands robust}%
@@ -5402,8 +6231,6 @@ of this package available from CTAN}
\let\expandafter\noexpand\csname
__hook env/document/begin\endcsname
\noexpand\@empty}
-\let \@kernel@before@begindocument \@empty
-\let \@kernel@after@begindocument \@empty
\EndIncludeInRelease
\IncludeInRelease{2017/04/15}%
@@ -5668,6 +6495,52 @@ of this package available from CTAN}
\DeclareRobustCommand\IfFileExists[1]{%
\set@curr@file{#1}%
\expandafter\IfFileExists@\expandafter{\@curr@file}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\quote@name}{Quote file names}%
+
+\let\quote@name\@undefined
+\let\quote@@name\@undefined
+\let\unquote@name\@undefined
+
+\long\def \IfFileExists#1#2#3{%
+ \openin\@inputcheck#1 %
+ \ifeof\@inputcheck
+ \ifx\input@path\@undefined
+ \def\reserved@a{#3}%
+ \else
+ \def\reserved@a{\@iffileonpath{#1}{#2}{#3}}%
+ \fi
+ \else
+ \closein\@inputcheck
+ \edef\@filef@und{#1 }%
+ \def\reserved@a{#2}%
+ \fi
+ \reserved@a}
+
+\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}%
+ {\IfFileExists@}{manage unbalanced conditionals}
+\long\def \IfFileExists@#1#2#3{%
+ \openin\@inputcheck"#1" %
+ \ifeof\@inputcheck
+ \ifx\input@path\@undefined
+ \let\reserved@a\@secondoftwo
+ \else
+ \def\reserved@a{\@iffileonpath{#1}}%
+ \fi
+ \else
+ \closein\@inputcheck
+ \edef\@filef@und{"#1" }%
+ \let\reserved@a\@firstoftwo
+ \fi
+ \expandafter\def\expandafter\reserved@a
+ \expandafter{\reserved@a{#2}{#3}}%
+\reserved@a}
+\EndIncludeInRelease
+\IncludeInRelease{2019/10/01}%
+ {\IfFileExists@}{manage unbalanced conditionals}
+
\long\def \IfFileExists@#1#2#3{%
\openin\@inputcheck"#1" %
\ifeof\@inputcheck
@@ -5682,6 +6555,16 @@ of this package available from CTAN}
\def\reserved@a{#2}%
\fi
\reserved@a}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\IfFileExists@}{manage unbalanced conditionals}
+
+\let\IfFileExists@\@undefined
+
+
+\EndIncludeInRelease
+\IncludeInRelease{2019/10/01}%
+ {\@iffileonpath}{Quote file names}
\long\def\@iffileonpath#1{%
\let\reserved@a\@secondoftwo
\expandafter\@tfor\expandafter\reserved@b\expandafter
@@ -5696,28 +6579,7 @@ of this package available from CTAN}
\reserved@a}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\quote@name}{Quote file names}%
-
-\let\quote@name\@undefined
-\let\quote@@name\@undefined
-\let\unquote@name\@undefined
-
-\let\IfFileExists@\@undefined
-
-\long\def \IfFileExists#1#2#3{%
- \openin\@inputcheck#1 %
- \ifeof\@inputcheck
- \ifx\input@path\@undefined
- \def\reserved@a{#3}%
- \else
- \def\reserved@a{\@iffileonpath{#1}{#2}{#3}}%
- \fi
- \else
- \closein\@inputcheck
- \edef\@filef@und{#1 }%
- \def\reserved@a{#2}%
- \fi
- \reserved@a}
+ {\quote@name}{Quote file names}
\long\def\@iffileonpath#1{%
\let\reserved@a\@secondoftwo
@@ -6157,13 +7019,25 @@ of this package available from CTAN}
}%
\fi}%
\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}%
+ {\usefont}{Force font face}%
+\DeclareRobustCommand\usefont[4]{\fontencoding{#1}%
+ \edef\f@family{#2}%
+ \set@target@series{#3}%
+ \edef\f@shape{#4}%
+ \let\delayed@f@adjustment\@empty
+ \selectfont
+ \ignorespaces}
+\EndIncludeInRelease
\IncludeInRelease{2020/02/02}%
{\usefont}{Drop m in usefont}%
+
\DeclareRobustCommand\usefont[4]{\fontencoding{#1}%
\edef\f@family{#2}%
\set@target@series{#3}%
\edef\f@shape{#4}\selectfont
\ignorespaces}
+
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
{\usefont}{Drop m in usefont}%
@@ -6785,7 +7659,7 @@ of this package available from CTAN}
\let\DeclareFontSeriesChangeRule\@undefined
\EndIncludeInRelease
-\IncludeInRelease{2021/05/01}%
+\IncludeInRelease{2021/06/01}%
{\fontseries}{delay fontseries update}%
\DeclareRobustCommand\fontseries[1]{\@forced@seriesfalse
\expandafter\def\expandafter\delayed@f@adjustment\expandafter
@@ -6805,9 +7679,7 @@ of this package available from CTAN}
\edef\f@series{#1}}
\let\delayed@f@adjustment\@undefined
-\ifx\@forced@seriestrue\@undefined \else
- \expandafter\newif\csname if@forced@series\endcsname
-\fi
+\expandafter\newif\csname if@forced@series\endcsname
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
@@ -6982,7 +7854,7 @@ of this package available from CTAN}
\let\sscdefault\@undefined
\EndIncludeInRelease
-\IncludeInRelease{2021/05/01}%
+\IncludeInRelease{2021/06/01}%
{\fontshape}{Font shape change}%
\DeclareRobustCommand\fontshape[1]
{\expandafter\def\expandafter\delayed@f@adjustment\expandafter
@@ -7113,7 +7985,7 @@ of this package available from CTAN}
%% Copyright (C) 1989-97 by Frank Mittelbach and Rainer Sch\"opf.
%% Copyright (C) 1994-97 by LaTeX Project. All rights reserved.
-\IncludeInRelease{2021/05/01}%
+\IncludeInRelease{2021/06/01}%
{\selectfont}{Add hook to \selectfont}%
\DeclareRobustCommand\selectfont
{%
@@ -7137,6 +8009,7 @@ of this package available from CTAN}
\fi
\let\delayed@f@adjustment\@empty
\fi
+ \@forced@seriesfalse
\xdef\font@name{%
\csname\curr@fontshape/\f@size\endcsname}%
\pickup@font
@@ -7714,6 +8587,9 @@ of this package available from CTAN}
\prepare@family@series@update{tt}\ttdefault
\@ttfamilyhook
\selectfont}
+\let\@rmfamilyhook\@empty
+\let\@sffamilyhook\@empty
+\let\@ttfamilyhook\@empty
\EndIncludeInRelease
@@ -7852,18 +8728,53 @@ of this package available from CTAN}
\DeclareRobustCommand\symbol[1]{\char#1\relax}
\EndIncludeInRelease
-\IncludeInRelease{2020/02/02}%
+\IncludeInRelease{2021/06/01}%
{\normalfont}{Add hook to \normalfont}%
\DeclareRobustCommand\normalfont{%
\fontencoding\encodingdefault
\edef\f@family{\familydefault}%
\edef\f@series{\seriesdefault}%
\edef\f@shape{\shapedefault}%
+ \let\delayed@f@adjustment\@empty
\UseHook{normalfont}%
\@defaultfamilyhook % hookname from 2020/02 will vanish
\selectfont}
\let\reset@font\normalfont
\EndIncludeInRelease
+
+\IncludeInRelease{2020/10/01}%
+ {\normalfont}{Add hook to \normalfont}%
+
+\DeclareRobustCommand\normalfont{%
+ \fontencoding\encodingdefault
+ \edef\f@family{\familydefault}%
+ \edef\f@series{\seriesdefault}%
+ \edef\f@shape{\shapedefault}%
+ \UseHook{normalfont}%
+ \@defaultfamilyhook % hookname from 2020/02 will vanish
+ \selectfont}
+
+\let\reset@font\normalfont
+
+\EndIncludeInRelease
+
+\IncludeInRelease{2020/02/02}%
+ {\normalfont}{Add hook to \normalfont}%
+
+\DeclareRobustCommand\normalfont{%
+ \fontencoding\encodingdefault
+ \edef\f@family{\familydefault}%
+ \edef\f@series{\seriesdefault}%
+ \edef\f@shape{\shapedefault}%
+ \@defaultfamilyhook
+ \selectfont}
+
+\let\reset@font\normalfont
+
+\let\@defaultfamilyhook\@empty
+
+\EndIncludeInRelease
+
\IncludeInRelease{0000/00/00}%
{\normalfont}{Add hook to \normalfont}%
@@ -7958,8 +8869,8 @@ of this package available from CTAN}
\let\textssc\@undefined
\EndIncludeInRelease
%%% From File: lttextcomp.dtx
-\IncludeInRelease{2020/02/02}%
- {\oldstylenums}{Old style numerals}%
+\NewModuleRelease{2020/02/02}{lttextcomp}
+ {Text Companion symbols}
\DeclareRobustCommand\legacyoldstylenums[1]{%
\begingroup
\spaceskip\fontdimen\tw@\font
@@ -7996,24 +8907,6 @@ of this package available from CTAN}
\egroup
}
\def\textcompsubstdefault{\rmsubstdefault}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\oldstylenums}{Old style numerals}%
-
-\DeclareRobustCommand\oldstylenums[1]{%
- \begingroup
- \spaceskip\fontdimen\tw@\font
- \usefont{OML}{\rmdefault}{\f@series}{it}%
- \mathgroup\symletters #1%
- \endgroup
-}
-\let\legacyoldstylenums\@undefined
-\def\textcompsubstdefault{cmr}
-
-\EndIncludeInRelease
-
-\IncludeInRelease{2020/02/02}%
- {\DeclareEncodingSubset}{Text companion symbols}%
\def\DeclareEncodingSubset#1#2{%
\DeclareEncodingSubset@aux{#1}#2*\DeclareEncodingSubset@aux
}
@@ -8576,9 +9469,19 @@ of this package available from CTAN}
\DeclareTextSymbolDefault{\textlegacyperiodcentered}{OMS}
\DeclareTextSymbolDefault{\textlegacysection}{OMS}
-\EndIncludeInRelease
+
\IncludeInRelease{0000/00/00}%
- {\DeclareEncodingSubset}{Text companion symbols}%
+ {lttextcomp}{Undefine text companion symbols}%
+
+\DeclareRobustCommand\oldstylenums[1]{%
+ \begingroup
+ \spaceskip\fontdimen\tw@\font
+ \usefont{OML}{\rmdefault}{\f@series}{it}%
+ \mathgroup\symletters #1%
+ \endgroup
+}
+\let\legacyoldstylenums\@undefined
+\def\textcompsubstdefault{cmr}
\let\DeclareEncodingSubset\@undefined
\let\CheckEncodingSubset\@undefined
@@ -8769,7 +9672,7 @@ of this package available from CTAN}
\let\textlegacyperiodcentered\@undefined
\let\textlegacysection\@undefined
-\EndIncludeInRelease
+\EndModuleRelease
%%% From File: ltpageno.dtx
@@ -8902,7 +9805,7 @@ of this package available from CTAN}
\let\@enddocument@kernel@warnings\@undefined
\EndIncludeInRelease
-\IncludeInRelease{2021/05/01}%
+\IncludeInRelease{2021/06/01}%
{\@kernel@before@enddocument}{kernel before hook}%
\def\@kernel@before@enddocument{\par}
\EndIncludeInRelease
@@ -9498,7 +10401,7 @@ of this package available from CTAN}
\mb@b
\kern\z@}}
\EndIncludeInRelease
-\IncludeInRelease{2021/05/01}%
+\IncludeInRelease{2021/06/01}%
{\color@begingroup}{color group settings}%
\let\color@begingroup\begingroup
\def\color@endgroup{\endgraf\endgroup}
@@ -9599,7 +10502,7 @@ of this package available from CTAN}
\baselineskip\normalbaselineskip
\sloppy}
\EndIncludeInRelease
-\IncludeInRelease{2021/05/01}%
+\IncludeInRelease{2021/06/01}%
{\@mpfootnotetext}{footnotetext tagging}%
\long\def\@mpfootnotetext#1{%
\global\setbox\@mpfootins\vbox{%
@@ -10574,7 +11477,7 @@ of this package available from CTAN}
\@fpbot \@dblfpbot
}%
\EndIncludeInRelease
-\IncludeInRelease{2021/05/01}%
+\IncludeInRelease{2021/06/01}%
{\@savemarbox}{Explicit par for marginpar}%
\long\def \@savemarbox #1#2{%
\global\setbox #1%
@@ -10642,7 +11545,7 @@ of this package available from CTAN}
{\@textsubscript}{subscript baseline}%
\let\@textsubscript\@undefined
\EndIncludeInRelease
-\IncludeInRelease{2021/05/01}%
+\IncludeInRelease{2021/06/01}%
{\@footnotetext}{footnotetext tagging}%
\long\def\@footnotetext#1{\insert\footins{%
\reset@font\footnotesize
@@ -10677,7 +11580,7 @@ of this package available from CTAN}
\color@endgroup}}%
\EndIncludeInRelease
-\IncludeInRelease{2021/05/01}%
+\IncludeInRelease{2021/06/01}%
{\footref}{Add footref}%
\def\footref#1{%
\begingroup
@@ -10686,15 +11589,15 @@ of this package available from CTAN}
\@footnotemark
}
\EndIncludeInRelease
-%%<latexrelease>\IncludeInRelease{0000/00/00}%
-%%<latexrelease> {\footref}{Add footref}%
-%%<latexrelease>
-%%<latexrelease>\let\footref\@undefined
-%%<latexrelease>
-%%<latexrelease>\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\footref}{Add footref}%
+
+ % \let\footref\@undefined
+
+\EndIncludeInRelease
%%% From File: ltidxglo.dtx
%%% From File: ltbibl.dtx
-\IncludeInRelease{2021/05/01}%
+\IncludeInRelease{2021/06/01}%
{\nocite}{Allow nocite in preamble}%
\def\nocite#1{\@bsphack
\ifx\@onlypreamble\document
@@ -10791,12 +11694,25 @@ of this package available from CTAN}
\IncludeInRelease{0000/00/00}{\@pushfilename}%
{Add \@expl@push@filename@@ and \@expl@push@filename@aux@@}%
+\ifnum\sourceLaTeXdate<20200202\relax
+ \GenericInfo{}{Defining 00-00-00\string\@pushfilename.}
\def\@pushfilename{%
\xdef\@currnamestack{%
{\@currname}%
{\@currext}%
{\the\catcode`\@}%
\@currnamestack}}
+\else
+ \GenericInfo{}{Defining 2020-02-02\string\@pushfilename.}
+\def\@pushfilename{%
+ \@expl@push@filename@@
+ \xdef\@currnamestack{%
+ {\@currname}%
+ {\@currext}%
+ {\the\catcode`\@}%
+ \@currnamestack}%
+ \@expl@push@filename@aux@@}
+\fi
\EndIncludeInRelease
\@onlypreamble\@pushfilename
@@ -10816,7 +11732,14 @@ of this package available from CTAN}
\IncludeInRelease{0000/00/00}{\@popfilename}%
{Add \@expl@push@filename@@ and \@expl@push@filename@aux@@}%
+\ifnum\sourceLaTeXdate<20200202\relax
+ \GenericInfo{}{Defining 00-00-00\string\@popfilename.}
\def\@popfilename{\expandafter\@p@pfilename\@currnamestack\@nil}
+\else
+ \GenericInfo{}{Defining 2020-02-02\string\@popfilename.}
+\def\@popfilename{\expandafter\@p@pfilename\@currnamestack\@nil
+ \@expl@pop@filename@@}
+\fi
\EndIncludeInRelease
\@onlypreamble\@popfilename
@@ -10978,7 +11901,7 @@ of this package available from CTAN}
\let\ProvidesClass\ProvidesPackage
\@onlypreamble\ProvidesClass
\EndIncludeInRelease
-\IncludeInRelease{2021/05/01}%
+\IncludeInRelease{2021/06/01}%
{\@pass@ptions}{Raw option lists}%
\def\@pass@ptions#1#2#3{%
\@expl@@@filehook@set@curr@file@@nNN
@@ -11022,7 +11945,7 @@ of this package available from CTAN}
{\csname opt@#3.#1\endcsname,}%
\zap@space#2 \@empty}}
\EndIncludeInRelease
-\IncludeInRelease{2021/05/01}%
+\IncludeInRelease{2021/06/01}%
{\OptionNotUsed}{filter unused option list}%
\def\@remove@eq@value#1=#2\@nil{#1}
\def\OptionNotUsed{%
@@ -11042,6 +11965,38 @@ of this package available from CTAN}
\CurrentOption}%
\fi}
\EndIncludeInRelease
+\IncludeInRelease{2021/06/01}%
+ {\@xprocess@ptions}{safer @xprocess@ptions}%
+\def\@xprocess@ptions{%
+ \ifx\@currext\@clsextension\else
+ \ifx\@classoptionslist\relax\else
+ \@for\CurrentOption:=\@classoptionslist\do{%
+ \ifx\CurrentOption\@empty\else
+ \@ifundefined{ds@\CurrentOption}{}{%
+ \@use@ption
+ \expandafter\let\csname ds@\CurrentOption\endcsname\@empty
+ }%
+ \fi}%
+ \fi
+ \fi
+ \@process@pti@ns}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@xprocess@ptions}{safer @xprocess@ptions}%
+\let\@remove@eq@value\@undefined
+\def\@xprocess@ptions{%
+ \ifx\@currext\@clsextension\else
+ \@for\CurrentOption:=\@classoptionslist\do{%
+ \ifx\CurrentOption\@empty\else
+ \@expandtwoargs\in@{,\CurrentOption,}{,\@declaredoptions,}%
+ \ifin@
+ \@use@ption
+ \expandafter\let\csname ds@\CurrentOption\endcsname\@empty
+ \fi
+ \fi}%
+ \fi
+ \@process@pti@ns}
+\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
{\@process@pti@ns}{Unused options issue}%
\def\@process@pti@ns{%
@@ -11074,7 +12029,7 @@ of this package available from CTAN}
\let\@fileswith@pti@ns\@@fileswith@pti@ns
\AtEndOfPackage{\let\@unprocessedoptions\relax}}
\EndIncludeInRelease
-\IncludeInRelease{2021/05/01}%
+\IncludeInRelease{2021/06/01}%
{\@use@ption}{filter unused option list}%
\def\@use@ption{%
\@expandtwoargs\@removeelement
@@ -11455,14 +12410,12 @@ of this package available from CTAN}
\let\write\@gobbletwo%
\let\closeout\@gobble%
\else%
- \edef\reserved@a{#1}%
- \edef\reserved@a{\detokenize\expandafter{\reserved@a}}%
\edef\reserved@b{\detokenize\expandafter{\jobname}}%
- \ifx\reserved@a\reserved@b%
+ \ifx\@curr@file\reserved@b%
\@fileswtrue%
\else%
\edef\reserved@b{\reserved@b\detokenize{.tex}}%
- \ifx\reserved@a\reserved@b
+ \ifx\@curr@file\reserved@b
\@fileswtrue%
\fi%
\fi%
@@ -11752,8 +12705,8 @@ of this package available from CTAN}
\endgroup%
\EndIncludeInRelease
%%% From File: ltfilehook.dtx
-\providecommand\ltfilehookversion{v1.0g}
-\providecommand\ltfilehookdate{2021/02/08}
+\providecommand\ltfilehookversion{v1.0j}
+\providecommand\ltfilehookdate{2021/04/29}
\IncludeInRelease{2020/10/01}%
{\CurrentFile}{Hook management file}%
\ExplSyntaxOn
@@ -11805,7 +12758,8 @@ of this package available from CTAN}
\cs_new:Npn \__filehook_drop_extension_aux:nnn #1 #2 #3
{ \tl_if_empty:nF {#1} { #1 / } #2 }
\tl_new:N \l__filehook_internal_tl
-\seq_new:N \g__filehook_input_file_seq
+\seq_if_exist:NF \g__filehook_input_file_seq
+ { \seq_new:N \g__filehook_input_file_seq }
\cs_new_protected:Npn \__filehook_file_push:
{
\seq_gpush:Nx \g__filehook_input_file_seq
@@ -11819,7 +12773,7 @@ of this package available from CTAN}
\seq_gpop:NNTF \g__filehook_input_file_seq \l__filehook_internal_tl
{ \exp_after:wN \__filehook_file_pop_assign:nnnn \l__filehook_internal_tl }
{
- \msg_error:nnn { hooks } { should-not-happen }
+ \__kernel_msg_error:nnn { hooks } { should-not-happen }
{ Tried~to~pop~from~an~empty~file~name~stack. }
}
}
@@ -11991,12 +12945,13 @@ of this package available from CTAN}
\let \undeclare@file@substitution \@gobble
\EndIncludeInRelease
-\IncludeInRelease{2021/05/01}%
+\IncludeInRelease{2021/06/01}%
{\set@curr@file}{Setting current file name}%
\def\set@curr@file#1{%
\begingroup
\escapechar\m@ne
\let\protect\string
+ \edef~{\string~}%
\expandafter\def\csname\expandafter\endcsname
\expandafter{\csname\endcsname}%
\@expl@@@filehook@if@no@extension@@nTF{#1}%
@@ -12013,6 +12968,7 @@ of this package available from CTAN}
\endgroup}
\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
+ {\set@curr@file}{Setting current file name}%
\def\set@curr@file#1{%
\begingroup
\escapechar\m@ne
@@ -12180,7 +13136,7 @@ of this package available from CTAN}
\cs_new_eq:NN \@expl@@@filehook@drop@extension@@N
\__filehook_drop_extension:N
\cs_new_eq:NN \@expl@@@filehook@file@push@@
- \__filehook_file_push:
+ \__filehook_file_push:
\cs_new_eq:NN \@expl@@@filehook@file@pop@@
\__filehook_file_pop:
\cs_new_eq:NN \@expl@@@filehook@file@pop@assign@@nnnn
@@ -12199,7 +13155,7 @@ of this package available from CTAN}
%%
%%% From File: ltshipout.dtx
\providecommand\ltshipoutversion{v1.0i}
-\providecommand\ltshipoutdate{2021/01/25}
+\providecommand\ltshipoutdate{2021/03/17}
\IncludeInRelease{2020/10/01}%
{\shipout}{Hook management (shipout)}%
\ExplSyntaxOn
@@ -13670,6 +14626,47 @@ of this package available from CTAN}
\xe@alloc@intercharclass=\thr@@
\fi
\EndIncludeInRelease
+\ifx\directlua\@undefined
+\else
+ \directlua{%
+ if luatexbase.callbacktypes['input_level_string'] and %
+ luatexbase.in_callback('input_level_string','tracingstacklevels') then
+ luatexbase.remove_from_callback('input_level_string','tracingstacklevels')
+ end}%
+\fi
+\IncludeInRelease{2021/06/01}{trace_stack_levels}%
+ {Lua trace_stack_levels function}%
+\ifx\directlua\@undefined
+\else
+ \directlua{%
+ local function trace_stack_levels (input_ptr)
+ local tracingstacklevels = tex.count.tracingstacklevels
+ if tex.tracingmacros > 0 or input_ptr < tracingstacklevels then
+ if tracingstacklevels > 0 then
+ if input_ptr < tracingstacklevels then
+ return "\string\n\string~" .. string.rep(".",input_ptr)
+ else
+ return "\string~\string~"
+ end
+ else
+ return "\string\n"
+ end
+ else
+ return ""
+ end
+ end
+ if luatexbase.callbacktypes['input_level_string'] then
+ luatexbase.add_to_callback('input_level_string',
+ trace_stack_levels,'tracingstacklevels')
+ end
+ }%
+\fi
+\EndIncludeInRelease
+
+\IncludeInRelease{0000/00/00}{trace_stack_levels}%
+ {Lua trace_stack_levels function}%
+% Nothing here
+\EndIncludeInRelease
\IncludeInRelease{2016/02/01}%
{\XeTeXintercharclasses}{XeTeX character classes}%
\ifx\XeTeXinterchartoks\undefined
@@ -13735,7 +14732,7 @@ of this package available from CTAN}
{\document@default@language}{Save language for hyphenation}%
\let\document@default@language\@undefined
\EndIncludeInRelease
-\IncludeInRelease{2021/05/01}%
+\IncludeInRelease{2021/06/01}%
{\pdfgentounicode}{Preload glyphtounicode}%
\ifx \pdfgentounicode \@undefined \else
\input glyphtounicode
@@ -13875,6 +14872,21 @@ of this package available from CTAN}
\let\DeclareFontEncoding@saved\@undefined
\let\inputencodingname\@undefined
\EndIncludeInRelease
+\@ifundefined{ExplSyntaxOn}%
+ {\let\ExplSyntaxOn\@undefined
+ \let\ExplSyntaxOff\@undefined
+ \@gobble}%
+ {\ExplSyntaxOn
+ \@firstofone}%
+ {%
+\tl_map_inline:Nn \l__latexrelease_restores_tl
+ {
+ \cs_set_eq:Nc #1 { __latexrelease_ \cs_to_str:N #1 }
+ \cs_undefine:c { __latexrelease_ \cs_to_str:N #1 }
+ }
+\tl_clear:N \l__latexrelease_restores_tl
+\msg_redirect_name:nnn { hooks } { exists } { }
+ \ExplSyntaxOff}%
\endinput
%%
%% End of file `latexrelease.sty'.
diff --git a/Master/texmf-dist/tex/latex-dev/base/letter.cls b/Master/texmf-dist/tex/latex-dev/base/letter.cls
index 34a7ae4b023..587e999eebc 100644
--- a/Master/texmf-dist/tex/latex-dev/base/letter.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/letter.cls
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1996/06/01]
\ProvidesClass{letter}
- [2021/01/07 v1.3c
+ [2021/03/05 v1.3c
Standard LaTeX document class]
\newcommand\@ptsize{}
\DeclareOption{a4paper}
diff --git a/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua b/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
index ee7fcd3df22..193514467b2 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
+++ b/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
@@ -324,6 +324,7 @@ local callbacktypes = callbacktypes or {
glyph_stream_provider = exclusive,
make_extensible = exclusive,
font_descriptor_objnum_provider = exclusive,
+ input_level_string = exclusive,
}
luatexbase.callbacktypes=callbacktypes
local callback_register = callback_register or callback.register
diff --git a/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex b/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
index 74e4779a415..90b6d2dfe7e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
@@ -47,7 +47,7 @@
#1#2[#3]{\endgroup\immediate\write-1{File: #1 #3}}
\fi
\ProvidesFile{ltluatex.tex}%
-[2021/01/15 v1.1s
+[2021/04/18 v1.1t
LuaTeX support for plain TeX (core)
]
\edef\etatcatcode{\the\catcode`\@}
diff --git a/Master/texmf-dist/tex/latex-dev/base/ltpara.ltx b/Master/texmf-dist/tex/latex-dev/base/ltpara.ltx
deleted file mode 100644
index b56859f471e..00000000000
--- a/Master/texmf-dist/tex/latex-dev/base/ltpara.ltx
+++ /dev/null
@@ -1,171 +0,0 @@
-%%
-%% This is file `ltpara.ltx',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% ltpara.dtx (with options: `2ekernel')
-%%
-%% This is a generated file.
-%%
-%% The source is maintained by the LaTeX Project team and bug
-%% reports for it can be opened at https://latex-project.org/bugs.html
-%% (but please observe conditions on bug reports sent to that address!)
-%%
-%%
-%% Copyright (C) 1993-2021
-%% The LaTeX Project and any individual authors listed elsewhere
-%% in this file.
-%%
-%% This file was generated from file(s) of the LaTeX base system.
-%% --------------------------------------------------------------
-%%
-%% It may be distributed and/or modified under the
-%% conditions of the LaTeX Project Public License, either version 1.3c
-%% of this license or (at your option) any later version.
-%% The latest version of this license is in
-%% https://www.latex-project.org/lppl.txt
-%% and version 1.3c or later is part of all distributions of LaTeX
-%% version 2008 or later.
-%%
-%% This file has the LPPL maintenance status "maintained".
-%%
-%% This file may only be distributed together with a copy of the LaTeX
-%% base system. You may however distribute the LaTeX base system without
-%% such generated files.
-%%
-%% The list of all files belonging to the LaTeX base distribution is
-%% given in the file `manifest.txt'. See also `legal.txt' for additional
-%% information.
-%%
-%% The list of derived (unpacked) files belonging to the distribution
-%% and covered by LPPL is defined by the unpacking scripts (with
-%% extension .ins) which are part of the distribution.
-%% File: ltpara.dtx (C) Copyright 2020-2021
-%%% From File: lthooks.dtx
-\def\ltparaversion{v1.0d}
-\def\ltparadate{2021/02/18}
-
-
-\ExplSyntaxOn
-
-\hook_new_pair:nn{para/before}{para/after}
-\hook_new_pair:nn{para/begin}{para/end}
-\let \@kernel@before@para@before \@empty
-\let \@kernel@before@para@begin \@empty
-\let \@kernel@after@para@end \@empty
-\let \@kernel@after@para@after \@empty
-\tl_new:N \g__para_standard_everypar_tl
-\tl_gset:Nn \g__para_standard_everypar_tl {
- \box_gset_to_last:N \g_para_indentation_box
- \group_begin:
- \tex_par:D
- \group_end:
- \tex_everypar:D { \__kernel_msg_error:nnnn {para}{mode}{before}{vertical} }
- \@kernel@before@para@before
- \hook_use:n {para/before}
- \group_begin:
- \tex_everypar:D {}
- \skip_zero:N \tex_parskip:D
- \tex_noindent:D
- \group_end:
- \tex_everypar:D{\g__para_standard_everypar_tl}
- \cs_set_eq:NN \__para_handle_indent: \__para_add_indentation_box:
- \@kernel@before@para@begin
- \hook_use:n {para/begin}
- \if_mode_horizontal: \else:
- \__kernel_msg_error:nnnn {para}{mode}{begin}{vertical} \fi:
- \__para_handle_indent:
-}
-\tex_everypar:D{\g__para_standard_everypar_tl}
-\newtoks \everypar
-
-\tl_gput_right:Nx \g__para_standard_everypar_tl {
- \exp_not:N \the
- \exp_not:N \toks
- \the \allocationnumber
- \c_space_tl
-}
-\box_new:N \g_para_indentation_box
-
-\cs_new:Npn \__para_add_indentation_box: {
- \box_use_drop:N \g_para_indentation_box
-}
-\cs_new_eq:NN \__para_handle_indent: \__para_add_indentation_box:
-\cs_new:Npn \para_suppress_indentation: {
- \cs_set_eq:NN \__para_handle_indent: \prg_do_nothing:
-}
-\cs_set_eq:NN \IndentationBox \g_para_indentation_box
-\cs_set_eq:NN \SuppressIndentationBox \para_suppress_indentation:
-\cs_new_protected:Npn \para_end: {
- \mode_if_horizontal:TF {
- \mode_if_inner:F {
- \tex_unskip:D
- \hook_use:n{para/end}
- \@kernel@after@para@end
- \mode_if_horizontal:TF {
- \if_int_compare:w 0 < \tex_lastnodetype:D
- \tex_kern:D \c_zero_dim
- \fi:
- \tex_par:D
- \hook_use:n{para/after}
- \@kernel@after@para@after
- }
- { \__kernel_msg_error:nnnn {para}{mode}{end}{horizontal} }
- }
- }
- \tex_par:D
-}
-\cs_set_eq:NN \par \para_end:
-\cs_set_eq:NN \@@par \para_end:
-\cs_set_eq:NN \endgraf \para_end:
-\everypar{\@nodocument} %% To get an error if text appears before the
-\__kernel_msg_new:nnnn {para} {mode}
- {
- Illegal~mode~ change~ in~ hook~ 'para/#1'.\\
- Hook~ code~ did~ not~ remain~ in~ #2~ mode.
- }
- {
- Paragraph~ hooks~ cannot~ change~ the~ TeX~ mode~ without~ causing~
- endless~ recursion.~ The~ hook~ code~ in~ 'para/#1'~ needs~ to~ stay~
- in~ #2~ mode,~ but~ it~ didn't.~ Examine~ the~ hook~
- code~ with~ \ShowHook~ to~ find~ the~ issue.
- }
-\ExplSyntaxOff
-\IfFormatAtLeastTF{2021/05/01}{}
-{
-\long\def \@savemarbox #1#2{%
- \global\setbox #1%
- \color@vbox
- \vtop{%
- \hsize\marginparwidth
- \@parboxrestore
- \@marginparreset
- #2\par % <-- needed
- \@minipagefalse
- \outer@nobreak
- }%
- \color@endbox
-}
-\newcounter{paracnt}
-\def\@kernel@before@para@begin{%
- \stepcounter{paracnt}%
- \typeout{PARA: \arabic{paracnt} start
- (\@currenvir\space level\on@line)}%
-}
-\def\@kernel@after@para@end {%
- \typeout{PARA: \arabic{paracnt} end \space\space
- (\@currenvir\space level\on@line)}%
- \addtocounter{paracnt}{-1}%
-}
-\let\color@begingroup\begingroup
-\def\color@endgroup{\endgraf\endgroup}
-\def\color@setgroup{\color@begingroup} % \def\color@setgroup{\color@begingroup\set@color}
-\def\color@hbox{\hbox\bgroup\color@begingroup}
-\def\color@vbox{\vbox\bgroup\color@begingroup}
-\def\color@endbox{\color@endgroup\egroup}
-}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\endinput
-%%
-%% End of file `ltpara.ltx'.
diff --git a/Master/texmf-dist/tex/latex-dev/base/omlenc.def b/Master/texmf-dist/tex/latex-dev/base/omlenc.def
index 3b3ea0cbfc3..bf1bebaba3d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omlenc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/omlenc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{omlenc.def}
- [2021/02/19 v2.0u
+ [2021/04/29 v2.0v
Standard LaTeX file]
\DeclareFontEncoding{OML}{}{}
\DeclareTextSymbol{\textless}{OML}{`\<}
diff --git a/Master/texmf-dist/tex/latex-dev/base/omsenc.def b/Master/texmf-dist/tex/latex-dev/base/omsenc.def
index 10f60116098..c07656fd9d4 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omsenc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/omsenc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{omsenc.def}
- [2021/02/19 v2.0u
+ [2021/04/29 v2.0v
Standard LaTeX file]
\DeclareFontEncoding{OMS}{}{}
\DeclareTextSymbol{\textasteriskcentered}{OMS}{3} % "03
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1enc.def b/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
index 00c70e7e971..7ee4e30b0a8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{ot1enc.def}
- [2021/02/19 v2.0u
+ [2021/04/29 v2.0v
Standard LaTeX file]
\DeclareFontEncoding{OT1}{}{}
\DeclareTextAccent{\"}{OT1}{127}
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot4enc.def b/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
index bb1644e5b28..73b55c8f0a2 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{ot4enc.def}
- [2021/02/19 v2.0u
+ [2021/04/29 v2.0v
Standard LaTeX file]
\DeclareFontEncoding{OT4}{}{}
\DeclareFontSubstitution{OT4}{cmr}{m}{n}
diff --git a/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty b/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty
index e945e76549d..8257719886b 100644
--- a/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty
+++ b/Master/texmf-dist/tex/latex-dev/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.0g}
-\providecommand\ltfilehookdate{2021/02/08}
+\providecommand\ltfilehookversion{v1.0j}
+\providecommand\ltfilehookdate{2021/04/29}
\ProvidesExplPackage
{structuredlog}{\ltfilehookdate}{\ltfilehookversion}
{Structuring the TeX transcript file}
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1enc.def b/Master/texmf-dist/tex/latex-dev/base/t1enc.def
index f59a16678ed..dad5bdd3733 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/t1enc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{t1enc.def}
- [2021/02/19 v2.0u
+ [2021/04/29 v2.0v
Standard LaTeX file]
\DeclareFontEncoding{T1}{}{}
\DeclareTextAccent{\`}{T1}{0}
diff --git a/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty b/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
index 947c26fb0b3..57659edefc1 100644
--- a/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
@@ -42,7 +42,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%% From File: lttextcomp.dtx
-
\ProvidesPackage{textcomp}
[2018/08/11 v2.0j Standard LaTeX package]
diff --git a/Master/texmf-dist/tex/latex-dev/base/textcomp.sty b/Master/texmf-dist/tex/latex-dev/base/textcomp.sty
index 8db7c8b1d86..dd443d4ccf4 100644
--- a/Master/texmf-dist/tex/latex-dev/base/textcomp.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/textcomp.sty
@@ -42,7 +42,6 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%% From File: lttextcomp.dtx
-
\providecommand\DeclareRelease[3]{}
\providecommand\DeclareCurrentRelease[2]{}
diff --git a/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty b/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty
index cd7f60a26d5..09146d4c0f0 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty
@@ -44,7 +44,7 @@
%%% From File: ltfsstrc.dtx
%% Copyright (C) 1989-97 by Frank Mittelbach and Rainer Sch\"opf.
%% Copyright (C) 1994-97 by LaTeX Project. All rights reserved.
-\NeedsTeXFormat{LaTeX2e}[2021/05/01]
+\NeedsTeXFormat{LaTeX2e}[2021/06/01]
\ProvidesPackage{tracefnt}
[2020/12/22 v3.0n Standard LaTeX package (font tracing)]
\newcount\tracingfonts
@@ -126,6 +126,7 @@
\fi
\let\delayed@f@adjustment\@empty
\fi
+ \@forced@seriesfalse
\xdef\font@name{%
\csname\curr@fontshape/\f@size\endcsname}%
\pickup@font
@@ -137,7 +138,7 @@
\AddToHook{selectfont}
{\ifnum \tracingfonts>\tw@
\@font@info{Switching to \font@name}\fi}
-\IncludeInRelease{2021/05/01}%
+\IncludeInRelease{2021/06/01}%
{\selectfont}{Add hook to \selectfont}%
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/tuenc.def b/Master/texmf-dist/tex/latex-dev/base/tuenc.def
index 90ebea4f728..3bddf30c999 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tuenc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/tuenc.def
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
%%% From File: ltoutenc.dtx
\ProvidesFile{tuenc.def}
- [2021/02/19 v2.0u
+ [2021/04/29 v2.0v
Standard LaTeX file]
\providecommand\UnicodeEncodingName{TU}
\begingroup\expandafter\expandafter\expandafter\endgroup
@@ -488,8 +488,14 @@
\DeclareUnicodeComposite{\v} {o}{"01D2}
\DeclareUnicodeComposite{\v} {U}{"01D3}
\DeclareUnicodeComposite{\v} {u}{"01D4}
+\DeclareUnicodeComposite{\'} \AE{"01FC}
+\DeclareUnicodeComposite{\'} {Æ}{"01FC}
+\DeclareUnicodeComposite{\'} \ae{"01FD}
+\DeclareUnicodeComposite{\'} {æ}{"01FD}
\DeclareUnicodeComposite{\=} \AE{"01E2}
+\DeclareUnicodeComposite{\=} {Æ}{"01E2}
\DeclareUnicodeComposite{\=} \ae{"01E3}
+\DeclareUnicodeComposite{\=} {æ}{"01E3}
\DeclareUnicodeComposite{\v} {G}{"01E6}
\DeclareUnicodeComposite{\v} {g}{"01E7}
\DeclareUnicodeComposite{\v} {K}{"01E8}
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/color.sty b/Master/texmf-dist/tex/latex-dev/graphics/color.sty
index 0f0b974689a..23c90207aa8 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/color.sty
+++ b/Master/texmf-dist/tex/latex-dev/graphics/color.sty
@@ -12,7 +12,9 @@
%%
%%
%% color.dtx Copyright (C) 1994--1999 David Carlisle
-%% Copyright (C) 2005-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 2005-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/dvipdf.def b/Master/texmf-dist/tex/latex-dev/graphics/dvipdf.def
index 39d2d8f9835..04f533c35ae 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/dvipdf.def
+++ b/Master/texmf-dist/tex/latex-dev/graphics/dvipdf.def
@@ -8,7 +8,9 @@
%%
%% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
%% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle
-%% Copyright (C) 2000-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 2000-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/dvipsnam.def b/Master/texmf-dist/tex/latex-dev/graphics/dvipsnam.def
index 06e7398272f..826161736cd 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/dvipsnam.def
+++ b/Master/texmf-dist/tex/latex-dev/graphics/dvipsnam.def
@@ -8,7 +8,9 @@
%%
%% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
%% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle
-%% Copyright (C) 2000-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 2000-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/dvipsone.def b/Master/texmf-dist/tex/latex-dev/graphics/dvipsone.def
index b942a05ae3f..4918f74ba1f 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/dvipsone.def
+++ b/Master/texmf-dist/tex/latex-dev/graphics/dvipsone.def
@@ -8,7 +8,9 @@
%%
%% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
%% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle
-%% Copyright (C) 2000-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 2000-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/dviwin.def b/Master/texmf-dist/tex/latex-dev/graphics/dviwin.def
index 07a34e4db2b..db6eac4074a 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/dviwin.def
+++ b/Master/texmf-dist/tex/latex-dev/graphics/dviwin.def
@@ -8,7 +8,9 @@
%%
%% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
%% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle
-%% Copyright (C) 2000-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 2000-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/emtex.def b/Master/texmf-dist/tex/latex-dev/graphics/emtex.def
index c3d17aa20d0..d1d405dae14 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/emtex.def
+++ b/Master/texmf-dist/tex/latex-dev/graphics/emtex.def
@@ -8,7 +8,9 @@
%%
%% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
%% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle
-%% Copyright (C) 2000-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 2000-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/epsfig.sty b/Master/texmf-dist/tex/latex-dev/graphics/epsfig.sty
index 114460d3493..bb0abac3949 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/epsfig.sty
+++ b/Master/texmf-dist/tex/latex-dev/graphics/epsfig.sty
@@ -12,7 +12,9 @@
%%
%%
%% epsfig.dtx Copyright (C) 1994-1996 1999 Sebastian Rahtz
-%% Copyright (C) 2000-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 2000-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/graphics-2017-06-25.sty b/Master/texmf-dist/tex/latex-dev/graphics/graphics-2017-06-25.sty
index 5cfa5df4500..154867d99a4 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/graphics-2017-06-25.sty
+++ b/Master/texmf-dist/tex/latex-dev/graphics/graphics-2017-06-25.sty
@@ -12,7 +12,7 @@
%%
%%
%% graphics.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
-%% Copyright (C) 1995--2017 David Carlisle, LaTeX3 Project
+%% Copyright (C) 1995--2017 David Carlisle, LaTeX Project
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty b/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty
index 86e3314d9a5..5d0292c3d08 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty
+++ b/Master/texmf-dist/tex/latex-dev/graphics/graphics.sty
@@ -12,7 +12,9 @@
%%
%%
%% graphics.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
-%% Copyright (C) 1995-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 1995-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
@@ -29,7 +31,7 @@
\DeclareCurrentRelease{}{2019-10-01}
\ProvidesPackage{graphics}
- [2020/08/30 v1.4c Standard LaTeX Graphics (DPC,SPQR)]
+ [2021/03/04 v1.4d Standard LaTeX Graphics (DPC,SPQR)]
\edef\Gin@codes{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax
\catcode`\noexpand\"\the\catcode`\"\relax
@@ -202,7 +204,7 @@
\ifx\filename@ext\relax
\let\filename@ext\Gin@gzext
\else
- \edef\Gin@ext{\Gin@ext\Gin@sepdefault\Gin@gzext}%
+ \edef\filename@ext{\filename@ext\Gin@sepdefault\Gin@gzext}%
\fi
\fi
\ifx\filename@ext\relax
@@ -216,9 +218,10 @@
\ifx\Gin@ext\relax 1%
\else \@ifundefined{Gin@rule@\Gin@ext}{1}{0}%
\fi >0
- \let\Gin@ext\relax
+ \let\Gin@extsaved\Gin@ext
\let\Gin@savedbase\filename@base
\let\Gin@savedext\filename@ext
+ \let\Gin@ext\relax
\edef\filename@base{\filename@base\Gin@sepdefault\filename@ext}%
\let\filename@ext\relax
\@for\Gin@temp:=\Gin@extensions\do{%
@@ -226,6 +229,7 @@
\Gin@getbase\Gin@temp
\fi}%
\ifx\Gin@ext\relax
+ \let\Gin@ext\Gin@extsaved
\let\filename@base\Gin@savedbase
\let\filename@ext\Gin@savedext
\fi
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/graphicx.sty b/Master/texmf-dist/tex/latex-dev/graphics/graphicx.sty
index 9446a0a5c2f..0a259c8836f 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/graphicx.sty
+++ b/Master/texmf-dist/tex/latex-dev/graphics/graphicx.sty
@@ -12,7 +12,9 @@
%%
%%
%% graphicx.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
-%% Copyright (C) 1995-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 1995-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
@@ -21,7 +23,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{graphicx}
- [2020/09/09 v1.2b Enhanced LaTeX Graphics (DPC,SPQR)]
+ [2020/12/05 v1.2c Enhanced LaTeX Graphics (DPC,SPQR)]
\DeclareOption{unknownkeysallowed}
{\PassOptionsToPackage\CurrentOption{keyval}}
\DeclareOption*{\PassOptionsToPackage\CurrentOption{graphics}}
@@ -99,7 +101,7 @@
\define@key{Gin}{decodearray}{%
\def\Gin@decode{#1}%
}
-\define@key{Gin}{quiet}{%
+\define@key{Gin}{quiet}[]{%
\let\Gin@log\@gobble
}
\define@key{Gin}{page}{%
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/keyval.sty b/Master/texmf-dist/tex/latex-dev/graphics/keyval.sty
index ddb6c0a183e..97bbda4f480 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/keyval.sty
+++ b/Master/texmf-dist/tex/latex-dev/graphics/keyval.sty
@@ -12,7 +12,9 @@
%%
%%
%% keyval.dtx Copyright (C) 1993 1994 1995 1997 1998 1999 David Carlisle
-%% Copyright (C) 2000-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 2000-2021 David Carlisle, LaTeX Project
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/lscape.sty b/Master/texmf-dist/tex/latex-dev/graphics/lscape.sty
index d9f2daee5a8..25342e422fc 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/lscape.sty
+++ b/Master/texmf-dist/tex/latex-dev/graphics/lscape.sty
@@ -12,7 +12,9 @@
%%
%%
%% lscape.dtx Copyright (C) 1994 1999-2000 David Carlisle
-%% Copyright (C) 2000-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 2000-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/pctex32.def b/Master/texmf-dist/tex/latex-dev/graphics/pctex32.def
index 58c913cd023..5934c4c0a94 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/pctex32.def
+++ b/Master/texmf-dist/tex/latex-dev/graphics/pctex32.def
@@ -8,7 +8,9 @@
%%
%% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
%% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle
-%% Copyright (C) 2000-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 2000-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/pctexhp.def b/Master/texmf-dist/tex/latex-dev/graphics/pctexhp.def
index 341204427d1..76e83d251c4 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/pctexhp.def
+++ b/Master/texmf-dist/tex/latex-dev/graphics/pctexhp.def
@@ -8,7 +8,9 @@
%%
%% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
%% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle
-%% Copyright (C) 2000-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 2000-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/pctexps.def b/Master/texmf-dist/tex/latex-dev/graphics/pctexps.def
index 6920dcd739e..85f6f3a13de 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/pctexps.def
+++ b/Master/texmf-dist/tex/latex-dev/graphics/pctexps.def
@@ -8,7 +8,9 @@
%%
%% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
%% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle
-%% Copyright (C) 2000-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 2000-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/pctexwin.def b/Master/texmf-dist/tex/latex-dev/graphics/pctexwin.def
index 198644d3b3b..cf44d184547 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/pctexwin.def
+++ b/Master/texmf-dist/tex/latex-dev/graphics/pctexwin.def
@@ -8,7 +8,9 @@
%%
%% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
%% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle
-%% Copyright (C) 2000-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 2000-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/rotating.sty b/Master/texmf-dist/tex/latex-dev/graphics/rotating.sty
index 14ba6fb1427..7f3a2df8f47 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/rotating.sty
+++ b/Master/texmf-dist/tex/latex-dev/graphics/rotating.sty
@@ -11,9 +11,11 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1995--1999 Sebastian Rahtz and Leonor Barroca
-%% Copyright (C) 2001--2003,2007--2009 Robin Fairbairns
-%% Copyright (C) 2016-2020 LaTeX3 Project
+%% Copyright (C) 1995-1999 Sebastian Rahtz and Leonor Barroca
+%% Copyright (C) 2001-2003,2007-2009 Robin Fairbairns
+%% Copyright (C) 2016-2021 LaTeX Project
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{rotating}%
[2016/08/11 v2.16d
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/tcidvi.def b/Master/texmf-dist/tex/latex-dev/graphics/tcidvi.def
index d4a93d43c38..805384f66e7 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/tcidvi.def
+++ b/Master/texmf-dist/tex/latex-dev/graphics/tcidvi.def
@@ -8,7 +8,9 @@
%%
%% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
%% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle
-%% Copyright (C) 2000-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 2000-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/trig.sty b/Master/texmf-dist/tex/latex-dev/graphics/trig.sty
index 1cdc14cb7e3..1147ab46c79 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/trig.sty
+++ b/Master/texmf-dist/tex/latex-dev/graphics/trig.sty
@@ -11,8 +11,10 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% File: trig.dtx Copyright (C) 1993 1994 1995 1996 1997 1999 David Carlisle
-%% Copyright (C) 2000-2020 David Carlisle, LaTeX3 Project
+%% File: trig.dtx Copyright (C) 1993-1999 David Carlisle
+%% Copyright (C) 2000-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/graphics/truetex.def b/Master/texmf-dist/tex/latex-dev/graphics/truetex.def
index 62a4742b863..a2d0fc970ea 100644
--- a/Master/texmf-dist/tex/latex-dev/graphics/truetex.def
+++ b/Master/texmf-dist/tex/latex-dev/graphics/truetex.def
@@ -8,7 +8,9 @@
%%
%% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
%% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle
-%% Copyright (C) 2000-2020 David Carlisle, LaTeX3 Project
+%% Copyright (C) 2000-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
%%
%% This file is part of the Standard LaTeX `Graphics Bundle'.
%% It may be distributed under the terms of the LaTeX Project Public
diff --git a/Master/texmf-dist/tex/latex-dev/tools/array.sty b/Master/texmf-dist/tex/latex-dev/tools/array.sty
index 8fae23a89e9..80b0241e965 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/array.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/array.sty
@@ -46,7 +46,7 @@
\DeclareCurrentRelease{}{2020-10-01}
\ProvidesPackage{array}
- [2021/02/10 v2.5d Tabular extension package (FMi)]
+ [2021/04/20 v2.5e Tabular extension package (FMi)]
%%
\def\@addtopreamble#1{\xdef\@preamble{\@preamble #1}}
@@ -184,7 +184,7 @@
\newdimen \extrarowheight
\extrarowheight=0pt
\def\@arstrut{\unhcopy\@arstrutbox}
-\def\@arraycr{\relax\iffalse{\fi\ifnum 0=`}\fi
+\protected\def\@arraycr{\relax\iffalse{\fi\ifnum 0=`}\fi
\@ifstar \@xarraycr \@xarraycr}
\def\@xarraycr{\@ifnextchar [%
\@argarraycr {\ifnum 0=`{}\fi\cr}}
diff --git a/Master/texmf-dist/tex/latex-dev/tools/bm.sty b/Master/texmf-dist/tex/latex-dev/tools/bm.sty
index b98b7ed2049..18b4c0c9661 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/bm.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/bm.sty
@@ -40,11 +40,17 @@
%% Development of this package was commissioned by Y&Y Inc.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{bm}
- [2019/07/24 v1.2d Bold Symbol Support (DPC/FMi)]
-\def\bm#1#2{%
- \let\bm@pmb\install@mathalphabet
- \let\bm@pmb@\getanddefine@fonts
- \let\bm@pmb@@\or
+ [2021/04/25 v1.2e Bold Symbol Support (DPC/FMi)]
+\DeclareOption{nopmb}{\let\bm@pmb@\@firstofone}
+\DeclareOption{warn}{\def\bm@info{\PackageWarningNoLine{bm}}}
+\DeclareOption{info}{\def\bm@info#1{\PackageInfo{bm}{#1\@gobble}}}
+\DeclareOption{silent}{\let\bm@info\@gobble}
+\ExecuteOptions{info}
+\ProcessOptions\relax
+\def\bm@setup#1#2{%
+ \let\bm@install@mathalphabet\install@mathalphabet
+ \let\bm@getanddefine@fonts\getanddefine@fonts
+ \let\bm@or\or
\edef\bm@general{\f@encoding/\f@family/\f@series/\f@shape/\f@size}%
\@tempcnta#2%
\count@-\count18%
@@ -65,6 +71,8 @@
\@tempb\csname mv@#1\endcsname\@nil
\ifx\@tempa\@tempb
\bm@define\m@ne
+ \bm@info{No #1 for \string##2%
+ \ifx\bm@pmb@\@firstofone\else, using \string\pmb\fi}%
\else
\edef\@tempa{sym#1\expandafter\@gobblefour\string##1}%
\ifnum\@tempcnta<%
@@ -105,7 +113,7 @@
\fi
\fi
\else
- \PackageInfo{bm}%
+ \bm@info
{Symbol font \@tempa\space already defined.\MessageBreak
Not overwriting it}%
\fi
@@ -123,9 +131,9 @@
\z@
\noexpand\fi}%
\expandafter\split@name\bm@general\@nil
- \let\install@mathalphabet\bm@pmb
- \let\getanddefine@fonts\bm@pmb@
- \let\or\bm@pmb@@}
+ \let\install@mathalphabet\bm@install@mathalphabet
+ \let\getanddefine@fonts\bm@getanddefine@fonts
+ \let\or\bm@or}
\ifx\bmmax\@undefined
\chardef\bmmax=4
\fi
@@ -133,9 +141,9 @@
\def\bm@boldtable{\m@ne}
\AtEndOfPackage{%
\def\bm@gr@up#1#2{%
- \bm@pmb{#2}}}
+ \bm@install@mathalphabet{#2}}}
\else
- \bm{bold}\bmmax
+ \bm@setup{bold}\bmmax
\@ifundefined{symboldoperators}
{}
{\DeclareSymbolFontAlphabet\mathbf{boldoperators}}
@@ -145,7 +153,7 @@
\fi
\ifx\mv@heavy\@undefined
\else
- \bm{heavy}\hmmax
+ \bm@setup{heavy}\hmmax
\fi
\begingroup
\catcode`\'=\active
@@ -176,6 +184,7 @@
\expandafter\@secondoftwo
\fi
{##2##4}{##3{##4}}}%
+ \let\kernel@ifnextchar\@ifnextchar
\def\GenericWarning##1##2{%
\unvcopy{\GenericWarning{##1}{##2}}}%
\def\GenericError##1##2##3##4{%
@@ -357,6 +366,7 @@
\fi}
\def\bm@pmb#1{%
\bm@add{\bm@pmb@{#1}}}
+\ifx\bm@pmb@\@firstofone\else
\def\bm@pmb@#1{{%
\setbox\tw@\hbox{$\m@th\mkern.4mu$}%
\mathchoice
@@ -372,6 +382,7 @@
\raise1.5\dimen@\rlap{\copy\z@}%
\kern\dimen@
\box\z@}}%
+\fi
\def\bm@class{%
\ifcase\count@
\or
diff --git a/Master/texmf-dist/tex/latex-dev/tools/layout.sty b/Master/texmf-dist/tex/latex-dev/tools/layout.sty
index 354a79b9451..bf2d8584829 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/layout.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/layout.sty
@@ -37,7 +37,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{layout}
- [2020-07-25 v1.2d Show layout parameters]
+ [2021-03-10 v1.2e Show layout parameters]
\DeclareOption{dutch}{%
\def\Headertext{Kopregel}
\def\Bodytext{Broodtekst}
@@ -104,6 +104,14 @@
\def\oneinchtext{un pollice}
\def\notshown{non mostrato}
}
+\DeclareOption{romanian}{%
+ \def\Headertext{Antet}
+ \def\Bodytext{Corp}
+ \def\Footertext{Subsol}
+ \def\MarginNotestext{Note\\ Marginale}
+ \def\oneinchtext{un inch}
+ \def\notshown{neafi\textcommabelow sat}
+ }
\DeclareOption{japanese}{%
\def\Headertext{天}
\def\Bodytext{基本版面}
diff --git a/Master/texmf-dist/tex/latex-dev/tools/longtable.sty b/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
index 16eb6a57915..6c3dcc62fb9 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
@@ -39,11 +39,11 @@
\providecommand\DeclareRelease[3]{}
\providecommand\DeclareCurrentRelease[2]{}
-\DeclareRelease{}{2020-01-02}{longtable-2020-01-07.sty}
+\DeclareRelease{v4.13}{2020-01-02}{longtable-2020-01-07.sty}
\DeclareCurrentRelease{}{2020-02-07}
\ProvidesPackage{longtable}
- [2020-02-07 v4.14 Multi-page Table package (DPC)]
+ [2021-04-21 v4.15 Multi-page Table package (DPC)]
\def\LT@err{\PackageError{longtable}}
\def\LT@warn{\PackageWarning{longtable}}
\def\LT@final@warn{%
@@ -162,12 +162,13 @@
\advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
\advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
\advance\dimen@ \ht\LT@foot
- \dimen@ii\vfuzz
+ \edef\LT@reset@vfuzz{\vfuzz\the\vfuzz\vbadness\the\vbadness\relax}%
\vfuzz\maxdimen
- \setbox\tw@\copy\z@
- \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox
- \setbox\tw@\vbox{\unvbox\tw@}%
- \vfuzz\dimen@ii
+ \vbadness\@M
+ \setbox\tw@\copy\z@
+ \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox
+ \setbox\tw@\vbox{\unvbox\tw@}%
+ \LT@reset@vfuzz
\advance\dimen@ \ht
\ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi
\advance\dimen@\dp
@@ -227,7 +228,7 @@
\else
\expandafter\LT@nofcols
\fi}
-\def\LT@tabularcr{%
+\protected\def\LT@tabularcr{%
\relax\iffalse{\fi\ifnum0=`}\fi
\@ifstar
{\def\crcr{\LT@crcr\noalign{\nobreak}}\let\cr\crcr
@@ -396,6 +397,7 @@
{\egroup\@xdblarg{\LT@c@ption\@firstofone}}}
\def\LT@makecaption#1#2#3{%
\LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{%
+ \reset@font
\sbox\@tempboxa{#1{#2: }#3}%
\ifdim\wd\@tempboxa>\hsize
#1{#2: }#3%
@@ -459,7 +461,7 @@
\the\LT@p@ftn
\global\LT@p@ftn{}%
\hfil}
-\def\LT@p@ftntext#1{%
+\long\def\LT@p@ftntext#1{%
\edef\@tempa{\the\LT@p@ftn\noexpand\footnotetext[\the\c@footnote]}%
\global\LT@p@ftn\expandafter{\@tempa{#1}}}%
\endinput
diff --git a/Master/texmf-dist/tex/latex-dev/tools/trace.sty b/Master/texmf-dist/tex/latex-dev/tools/trace.sty
index 8306cf8465f..e43c50706bb 100644
--- a/Master/texmf-dist/tex/latex-dev/tools/trace.sty
+++ b/Master/texmf-dist/tex/latex-dev/tools/trace.sty
@@ -41,7 +41,7 @@
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{trace}
- [2018/10/13 v1.1e trace LaTeX code]
+ [2021/04/18 v1.1f trace LaTeX code]
\NeedsTeXFormat{LaTeX2e}[1998/12/01]
\DeclareOption{logonly}
{\let\tracingonline@p\z@}
@@ -57,19 +57,20 @@
\tr@ce@n}
%% \tracinglostchars\z@
- \def\tr@ce@n{%
- \@tracingtrue
+ \edef\tr@ce@n{%
+ \noexpand\@tracingtrue
\tracingstats\tw@
\tracingpages\@ne
- \tracinglostchars\@ne
+ \tracinglostchars\thr@@
\tracingparagraphs\@ne
\errorcontextlines\maxdimen
- \ifnum\tracingoutput=\@ne
- \else
+ \ifdefined\tracingstacklevels \tracingstacklevels\maxdimen \fi
+ \noexpand\ifnum\tracingoutput=\@ne
+ \noexpand\else
\tracingoutput\tw@
\showboxbreadth\maxdimen
\showboxdepth\maxdimen
- \fi
+ \noexpand\fi
\errorstopmode
\tracingmacros\tw@
\tracinggroups\@ne
@@ -78,18 +79,20 @@
\tracingassigns\@ne
\tracingonline\tracingonline@p
}
- \def\conditionally@traceoff{%
+ \edef\conditionally@traceoff{%
\tracingassigns\z@
\tracingrestores\z@
\tracingcommands\z@
\tracingpages\z@
\tracingmacros\z@
- \ifnum\tracingoutput=\tw@
+ \noexpand\ifnum\tracingoutput=\tw@
\tracingoutput\z@
\showboxbreadth\m@ne
\showboxdepth\m@ne
- \fi
+ \noexpand\fi
\tracingstats\@ne
+ \ifdefined\tracingstacklevels \tracingstacklevels\z@ \fi
+ \errorcontextlines\m@ne
\tracingparagraphs\z@
\tracinggroups\z@
}