diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/base/latexrelease.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/base/latexrelease.sty | 548 |
1 files changed, 455 insertions, 93 deletions
diff --git a/Master/texmf-dist/tex/latex/base/latexrelease.sty b/Master/texmf-dist/tex/latex/base/latexrelease.sty index 51bccae7522..13f0c665a0f 100644 --- a/Master/texmf-dist/tex/latex/base/latexrelease.sty +++ b/Master/texmf-dist/tex/latex/base/latexrelease.sty @@ -122,6 +122,13 @@ \pkgcls@debug{\@spaces 4: #4}% \def\pkgcls@name{#1}% % for info message \def\pkgcls@arg {#3}% % for info message + \edef\pkgcls@ext{% + \ifx#4\@clsextension document class\else + \ifx#4\@pkgextension package\else + file + \fi + \fi + }% % for info message \pkgcls@parse@date@arg{#3}% \let\pkgcls@candidate\@empty \begingroup @@ -163,7 +170,7 @@ \ifnum \@parse@version0#1//00\@nil > \pkgcls@targetdate \@latex@warning@no@line{Suspicious rollback/min-date date given\MessageBreak A minimal date of #1 has been specified for - \@cls@pkg\MessageBreak '\pkgcls@name'.\MessageBreak + \pkgcls@ext\MessageBreak '\pkgcls@name'.\MessageBreak But this is in conflict with a rollback request to \requestedpatchdate} \fi @@ -219,6 +226,7 @@ \def\pkgcls@use@this@release#1#2{% \pkgcls@show@selection{#1}{#2}% \pkgcls@targetdate\z@ + \@addtofilelist{#1}% \@@input #1\relax \endinput } @@ -293,7 +301,7 @@ } %%% From File: ltvers.dtx \edef\latexreleaseversion - {2024-06-01} + {2024-11-01} \newif\if@includeinrelease \@includeinreleasefalse \def\IncludeInRelease#1{% @@ -424,7 +432,7 @@ \@skipping@modulefalse \fi} \ProvidesPackage{latexrelease} - [2022/11/14 v1.0p LaTeX release emulation and tests + [2024/08/11 v1.0p LaTeX release emulation and tests (including releases up to \latexreleaseversion)] \NeedsTeXFormat{LaTeX2e}[1996/06/01] \@ifundefined{sourceLaTeXdate}{% @@ -1982,8 +1990,8 @@ of this package available from CTAN} \EndIncludeInRelease %%% From File: ltcmd.dtx -\def\ltcmdversion{v1.2e} -\def\ltcmddate{2024-04-17} +\def\ltcmdversion{v1.2f} +\def\ltcmddate{2024-07-06} \edef\@latexrelease@catcode@null{\the\catcode`\^^@ } \catcode`\^^@=12 \ExplSyntaxOn @@ -2202,6 +2210,22 @@ of this package available from CTAN} { \cs_set_nopar:cpx } { \l__cmd_function_tl \c_space_tl } ##1##2 { ##1 {##2} } } +\IncludeInRelease{2024/11/01}{\__cmd_declare_env:nnnn}% + {Use~space-trimmed~envname~directly} +\cs_new_protected:Npn \__cmd_declare_env:nnnn #1#2 + { + \str_set:Nn \l__cmd_environment_str {#1} + \cs_if_exist:cTF { #1 } + { \msg_info:nnnn { cmd } { redefine-env } { #1 } { #2 } } + { \msg_info:nnnn { cmd } { define-env } { #1 } { #2 } } + \bool_set_false:N \l__cmd_expandable_bool + \bool_set_true:N \l__cmd_environment_bool + \__cmd_declare_env_internal:nnnn {#1} {#2} + } +\cs_generate_variant:Nn \__cmd_declare_env:nnnn { e } +\EndIncludeInRelease +\IncludeInRelease{2024/06/01}{\__cmd_declare_env:nnnn}% + {Use~space-trimmed~envname~directly} \cs_new_protected:Npn \__cmd_declare_env:nnnn #1#2 { \str_set:Nx \l__cmd_environment_str {#1} @@ -2221,6 +2245,8 @@ of this package available from CTAN} \exp_args:NV \__cmd_declare_env_internal:nnnn \l__cmd_environment_str {#2} } + +\EndIncludeInRelease \cs_new_protected:Npn \__cmd_declare_env_internal:nnnn #1#2#3#4 { \exp_args:Nc \__cmd_declare_cmd_internal:Nnnn { environment~ #1 } {#2} @@ -4799,6 +4825,61 @@ of this package available from CTAN} \__cmd_check_definable:nNT {#1} \DeclareDocumentCommand { \__cmd_declare_cmd:Nnn #1 {#2} {#3} } } +\IncludeInRelease{2024/11/01}{\NewDocumentEnvironment}% + {Trim~spaces~from~envname~first} +\cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4 + { + \__cmd_new_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4} + } +\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4 + { + \__cmd_renew_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4} + } +\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4 + { + \__cmd_provide_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4} + } +\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4 + { + \__cmd_declare_env:ennn { \tl_trim_spaces:e {#1} } {#2} {#3} {#4} + } +\cs_new_protected:Npn \__cmd_new_env:nnnn #1 + { + \cs_if_exist:cTF {#1} + { + \msg_error:nnx { cmd } { env-already-defined } {#1} + \use_none:nnn + } + { + \cs_if_exist:cTF { end #1 } + { + \msg_error:nnx { cmd } { env-end-already-defined } {#1} + \use_none:nnn + } + { \__cmd_declare_env:nnnn {#1} } + } + } +\cs_new_protected:Npn \__cmd_renew_env:nnnn #1 + { + \cs_if_exist:cTF {#1} + { \__cmd_declare_env:nnnn {#1} } + { + \msg_error:nnx { cmd } { env-undefined } {#1} + \use_none:nnn + } + } +\cs_new_protected:Npn \__cmd_provide_env:nnnn #1 + { + \cs_if_exist:cTF {#1} + { \use_none:nnn } + { \__cmd_declare_env:nnnn {#1} } + } +\cs_generate_variant:Nn \__cmd_new_env:nnnn { e } +\cs_generate_variant:Nn \__cmd_renew_env:nnnn { e } +\cs_generate_variant:Nn \__cmd_provide_env:nnnn { e } +\EndIncludeInRelease +\IncludeInRelease{2024/06/01}{\NewDocumentEnvironment}% + {Trim~spaces~from~envname~first} \cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4 { \cs_if_exist:cTF {#1} @@ -4819,6 +4900,14 @@ of this package available from CTAN} { \cs_if_exist:cF {#1} { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} } } \cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4 { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} } +\cs_undefine:N \__cmd_new_env:nnnn +\cs_undefine:N \__cmd_new_env:ennn +\cs_undefine:N \__cmd_renew_env:nnnn +\cs_undefine:N \__cmd_renew_env:ennn +\cs_undefine:N \__cmd_provide_env:nnnn +\cs_undefine:N \__cmd_provide_env:ennn + +\EndIncludeInRelease \cs_new_protected:Npn \NewExpandableDocumentCommand #1#2#3 { \__cmd_check_definable:nNT {#1} \NewExpandableDocumentCommand @@ -5242,17 +5331,19 @@ of this package available from CTAN} {Providing~hooks} \cs_gset_protected:Npn \hook_activate_generic:n #1 { } \EndIncludeInRelease -\cs_new:Npn \__hook_parse_label_default:n #1 +\cs_new:Npn \__hook_parse_label_default:nN #1#2 { \tl_if_novalue:nTF {#1} { \__hook_currname_or_default: } - { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:n } + { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:nN #2 } } -\cs_new:Npn \__hook_parse_dot_label:n #1 +\cs_new:Npn \__hook_parse_dot_label:nN #1#2 { \tl_if_empty:nTF {#1} { - \msg_expandable_error:nn { hooks } { empty-label } + \bool_if:NTF #2 + { \msg_expandable_error:nn { hooks } { empty-label } } + { \msg_expandable_error:nn { hooks } { empty-hook } } \__hook_currname_or_default: } { @@ -5307,24 +5398,24 @@ of this package available from CTAN} \cs_new_protected:Npn \__hook_normalize_hook_args:Nn #1 #2 { \__hook_normalize_hook_args_aux:Nn #1 - { { \__hook_parse_label_default:n {#2} } } + { { \__hook_parse_label_default:nN {#2} \c_false_bool } } } \cs_new_protected:Npn \__hook_normalize_hook_args:Nnn #1 #2 #3 { \__hook_normalize_hook_args_aux:Nn #1 { - { \__hook_parse_label_default:n {#2} } - { \__hook_parse_label_default:n {#3} } + { \__hook_parse_label_default:nN {#2} \c_false_bool } + { \__hook_parse_label_default:nN {#3} \c_true_bool } } } \cs_new_protected:Npn \__hook_normalize_hook_rule_args:Nnnnn #1 #2 #3 #4 #5 { \__hook_normalize_hook_args_aux:Nn #1 { - { \__hook_parse_label_default:n {#2} } - { \__hook_parse_label_default:n {#3} } + { \__hook_parse_label_default:nN {#2} \c_false_bool } + { \__hook_parse_label_default:nN {#3} \c_true_bool } { \tl_trim_spaces:n {#4} } - { \__hook_parse_label_default:n {#5} } + { \__hook_parse_label_default:nN {#5} \c_true_bool } } } \tl_gset:Nn \g__hook_hook_curr_name_tl { top-level } @@ -6774,7 +6865,9 @@ of this package available from CTAN} { #2 { The~hook~is~empty } } { \__hook_log_line:x { Code~chunks: } - \prop_if_empty:cTF { g__hook_#1_code_prop } + \bool_lazy_or:nnTF + { ! \prop_if_exist_p:c { g__hook_#1_code_prop } } + { \prop_if_empty_p:c { g__hook_#1_code_prop } } { \__hook_log_line_indent:x { --- } } { \prop_map_inline:cn { g__hook_#1_code_prop } @@ -6981,16 +7074,19 @@ of this package available from CTAN} } \cs_new_protected:Npn \__hook_list_rules:nn #1 #2 { - \cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2} - \prop_map_inline:cn { g__hook_#1_code_prop } + \prop_if_exist:cT { g__hook_#1_code_prop } { + \cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2} \prop_map_inline:cn { g__hook_#1_code_prop } { - \__hook_if_label_case:nnnnn {##1} {####1} - { \prop_map_break: } - { \__hook_list_one_rule:nnn {##1} {####1} } - { \__hook_list_one_rule:nnn {####1} {##1} } - {#1} + \prop_map_inline:cn { g__hook_#1_code_prop } + { + \__hook_if_label_case:nnnnn {##1} {####1} + { \prop_map_break: } + { \__hook_list_one_rule:nnn {##1} {####1} } + { \__hook_list_one_rule:nnn {####1} {##1} } + {#1} + } } } } @@ -7528,6 +7624,10 @@ of this package available from CTAN} Empty~code~label~\msg_line_context:.~ Using~'\__hook_currname_or_default:'~instead. } +\msg_new:nnn { hooks } { empty-hook } + { + Empty~hook~name~\msg_line_context:. + } \msg_new:nnn { hooks } { no-default-label } { Missing~(empty)~default~label~\msg_line_context:. \\ @@ -7705,6 +7805,8 @@ of this package available from CTAN} \NewDocumentCommand \ClearHookRule { m m m } { \hook_gset_rule:nnnn {#1}{#2}{unrelated}{#3} } \cs_new_eq:NN \IfHookEmptyTF \hook_if_empty:nTF +\cs_new_eq:NN \IfHookEmptyT \hook_if_empty:nT +\cs_new_eq:NN \IfHookEmptyF \hook_if_empty:nF \cs_new_eq:NN \IfHookExistsTF \__hook_if_usable:nTF %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \cs_new_protected:Npn \hook_disable:n @@ -8540,7 +8642,7 @@ of this package available from CTAN} { \cs_generate_from_arg_count:cNnn { __socket_#1_plug_#2:w } - \cs_new_protected:Npn + \cs_new:Npn { \int_use:c { c__socket_#1_args_int } } {#3} \seq_put_right:cn { l__socket_#1_plugs_seq } {#2} @@ -8559,7 +8661,7 @@ of this package available from CTAN} { \cs_generate_from_arg_count:cNnn { __socket_#1_plug_#2:w } - \cs_set_protected:Npn + \cs_set:Npn { \int_use:c { c__socket_#1_args_int } } {#3} \__socket_debug_term:n @@ -8599,6 +8701,10 @@ of this package available from CTAN} \cs_new_eq:NN \socket_use:nn \socket_use:nw % socket with one input \cs_new_eq:NN \socket_use:nnn \socket_use:nw % socket with two inputs \cs_new_eq:NN \socket_use:nnnn \socket_use:nw % socket with three inputs +\cs_new:Npn \socket_use_expandable:nw #1 { + \use:c { __socket_#1_plug_ \str_use:c { l__socket_#1_plug_str } :w } +} +\cs_new_eq:NN \socket_use_expandable:n \socket_use_expandable:nw % socket with no inputs \msg_new:nnnn { socket } { already-declared } { Socket~ '#1'~ already~ declared! } @@ -9489,23 +9595,33 @@ of this package available from CTAN} } \cs_new_protected:Npn \__template_assign_variable: { - \__template_assign_variable:c + \exp_args:Ne \__template_assign_variable:n { - \__template_map_var_type: _ - \bool_if:NT \l__template_global_bool { g } set:Nn + \__template_map_var_type: + _ + \bool_if:NT \l__template_global_bool { g } + set:N } } -\cs_new_protected:Npn \__template_assign_variable:N #1 +\cs_new_protected:Npn \__template_assign_variable:n #1 { - \__template_if_key_value:VT \l__template_value_tl - { \__template_key_to_value: } - \tl_put_right:Ne \l__template_assignments_tl + \__template_if_key_value:VTF \l__template_value_tl + { + \__template_key_to_value: + \tl_put_right:Ne \l__template_assignments_tl + { + \exp_not:c { #1 V } \exp_not:V \l__template_var_tl + \exp_not:V \l__template_value_tl + } + } { - #1 \exp_not:V \l__template_var_tl - { \exp_not:V \l__template_value_tl } + \tl_put_right:Ne \l__template_assignments_tl + { + \exp_not:c { #1 n } \exp_not:V \l__template_var_tl + { \exp_not:V \l__template_value_tl } + } } } -\cs_generate_variant:Nn \__template_assign_variable:N { c } \cs_new_protected:Npn \__template_key_to_value: { \exp_after:wN \__template_key_to_value_auxi:w \l__template_value_tl } \cs_new_protected:Npn \__template_key_to_value_auxi:w \KeyValue #1 @@ -10090,6 +10206,32 @@ of this package available from CTAN} \let \IfDocumentMetadataTF \@firstoftwo \DocumentMetadata } +\IncludeInRelease{2024/11/01}% + {\MakeLinkTarget}{Record target name for tagging support}% +\ExplSyntaxOn +\int_new:N\g__kernel_target_int +\NewDocumentCommand\MakeLinkTarget{sO{}m}{% + \ifvmode + \special{}% + \else + \@savsf\spacefactor + \smash{}% + \spacefactor\@savsf + \fi + \IfBooleanTF {#1} + { + \tl_gset:Ne \@currentHref {#3} + } + { + \int_gincr:N\g__kernel_target_int + \tl_gset:Ne \@currentHref {target*.\int_use:N\g__kernel_target_int} + } + \UseTaggingSocket{recordtarget} + } +\ExplSyntaxOff +\EndIncludeInRelease +\IncludeInRelease{2022/06/01}% + {\MakeLinkTarget}{Record target name for tagging support}% \NewDocumentCommand\MakeLinkTarget{sO{}m}{% \ifvmode \special{}% @@ -10098,7 +10240,8 @@ of this package available from CTAN} \smash{}% \spacefactor\@savsf \fi} -\NewDocumentCommand\LinkTargetOn{}{} +\EndIncludeInRelease + \NewDocumentCommand\LinkTargetOn{}{} \NewDocumentCommand\LinkTargetOff{}{} \NewDocumentCommand\NextLinkTarget{m}{} \IncludeInRelease{0000/00/00}{ltmeta}% @@ -10258,6 +10401,20 @@ of this package available from CTAN} \fi \fi}% \EndIncludeInRelease +\IncludeInRelease{2024/11/01}% + {\addvspace}{drop unnecessary no-item error}% +\protected\def\addvspace#1{% + \ifhmode \ifinner \@LRmoderr \else \par \fi \fi + \if@minipage\else + \ifdim \lastskip =\z@ + \@vspace@calcify{#1}% + \else + \setlength\@tempskipb{#1}% + \@xaddvskip + \fi + \fi +} +\EndIncludeInRelease \IncludeInRelease{2020/10/01}% {\addvspace}{\addvspace calc support}% \def\addvspace#1{% @@ -10291,6 +10448,38 @@ of this package available from CTAN} \@noitemerr \fi} \EndIncludeInRelease +\IncludeInRelease{2024/11/01}% + {\addpenalty}{\addpenalty drop error}% +\protected\def\addpenalty#1{% + \ifhmode \ifinner \@LRmoderr \else \par \fi \fi + \if@minipage + \else + \if@nobreak + \else + \ifdim\lastskip=\z@ + \penalty#1\relax + \else + \@tempskipb\lastskip + \begingroup + \@tempskipa\@tempskipb + \advance \@tempskipb + \ifdim\prevdepth>\maxdepth\maxdepth\else + \ifdim \prevdepth = -\@m\p@ \z@ \else \prevdepth \fi + \fi + \vskip -\@tempskipb + \penalty#1% + \ifdim\@tempskipa=\@tempskipb + \else + \advance\@tempskipb -\@tempskipa + \vskip \@tempskipb + \fi + \vskip \@tempskipa + \endgroup + \fi + \fi + \fi +} +\EndIncludeInRelease \IncludeInRelease{2015/01/01}% {\addpenalty}{\addpenalty}% \def\addpenalty#1{% @@ -11227,6 +11416,54 @@ of this package available from CTAN} {Reset nested counters}%% \def\@stpelt#1{\global\csname c@#1\endcsname \z@}% \EndIncludeInRelease +\IncludeInRelease{2024/11/01}{\@definecounter} + {provide theHfoo commands}% +\def\@definecounter#1{\expandafter\newcount\csname c@#1\endcsname + \setcounter{#1}\z@ + \global\expandafter\let\csname cl@#1\endcsname\@empty + \@addtoreset{#1}{@ckpt}% + \global\expandafter\let\csname p@#1\endcsname\@empty + \expandafter\xdef\csname theH#1\endcsname{% + \noexpand\the\noexpand\value{#1}}% + \expandafter + \ifx\csname the#1\endcsname\relax + \expandafter + \gdef\csname the#1\expandafter\endcsname\expandafter + {\expandafter\@arabic\csname c@#1\endcsname}% + \else + \@latex@warning{Command `\string\the#1' already + defined -- not changed}% + \fi} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}{\@definecounter} + {provide theHfoo commands}%% +\def\@definecounter#1{\expandafter\newcount\csname c@#1\endcsname + \setcounter{#1}\z@ + \global\expandafter\let\csname cl@#1\endcsname\@empty + \@addtoreset{#1}{@ckpt}% + \global\expandafter\let\csname p@#1\endcsname\@empty + \expandafter + \ifx\csname the#1\endcsname\relax + \expandafter + \gdef\csname the#1\expandafter\endcsname\expandafter + {\expandafter\@arabic\csname c@#1\endcsname}% + \else + \@latex@warning{Command `\string\the#1' already + defined -- not changed}% + \fi} +\EndIncludeInRelease +\IncludeInRelease{2024/11/01}{\@addtoreset} + {provide theHfoo commands}% +\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}% + \expandafter\xdef\csname theH#1\endcsname{% + \expandafter\noexpand\csname theH#2\endcsname.% + \noexpand\the\noexpand\value{#1}}% +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}{\@addtoreset} + {provide theHfoo commands}%% +\def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}} +\EndIncludeInRelease \IncludeInRelease{2018-04-01} {\@removefromreset}{Add interfaces}% \def\@removefromreset#1#2{% @@ -11359,6 +11596,17 @@ of this package available from CTAN} {\setlength}{Using \setlength with \dimen0}% \def\setlength#1#2{#1#2\relax} \EndIncludeInRelease +\IncludeInRelease{2024/11/01}% + {\@settodim}{suspend tagging}% +\def\@settodim#1#2#3{\setbox\@tempboxa\hbox + {{\SuspendTagging{\@settodim}#3\ResumeTagging{\@settodim}}}#2#1\@tempboxa + \setbox\@tempboxa\box\voidb@x} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@settodim}{suspend tagging}% +\def\@settodim#1#2#3{\setbox\@tempboxa\hbox{{#3}}#2#1\@tempboxa + \setbox\@tempboxa\box\voidb@x} +\EndIncludeInRelease %%% From File: ltfssbas.dtx %% Copyright (C) 1989-2002 Frank Mittelbach and Rainer Sch\"opf \IncludeInRelease{2020/02/02}% @@ -11664,6 +11912,7 @@ of this package available from CTAN} \hbadness\@M \hfuzz\maxdimen \tracingonline\z@ + \tracinglostchars\z@ \everypar={}% \leftskip\z@skip \rightskip\z@skip @@ -14575,11 +14824,42 @@ of this package available from CTAN} \IncludeInRelease{2022/06/01}% {\Ref}{Add starred version}% \def\@currentcounter{} -\def\refstepcounter#1{\stepcounter{#1}% +\EndIncludeInRelease +\IncludeInRelease{2024/11/01}% + {\@currentHref}{set theHcounter representation}% +\NewSocket{refstepcounter}{1} +\NewSocket{refstepcounter/target}{1} +\NewSocketPlug{refstepcounter/target}{kernel} + {\xdef\@currentHref {#1.\csname theH#1\endcsname}}% +\AssignSocketPlug{refstepcounter/target}{kernel} +\def\refstepcounter#1{% + \UseSocket{refstepcounter}{% + \stepcounter{#1}% \edef\@currentcounter{#1}% \protected@edef\@currentlabel {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}% + \UseSocket{refstepcounter/target}{#1}% + \UseTaggingSocket{recordtarget}% + }% +} +\def\@kernel@refstepcounter#1{% + \UseSocket{refstepcounter}{% + \stepcounter{#1}% + \edef\@currentcounter{#1}% + \protected@edef\@currentlabel + {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}}}% +\EndIncludeInRelease +\IncludeInRelease{2022/06/01}% + {\@currentHref}{set theHcounter representation}% +\def\refstepcounter#1{\stepcounter{#1}% + \edef\@currentcounter{#1}% + \protected@edef\@currentlabel + {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}% } +\let\@kernel@refstepcounter\refstepcounter +\EndIncludeInRelease +\IncludeInRelease{2022/06/01}% + {\Ref}{Add starred version}% \def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1} \def\@kernel@Ref#1{\protected@edef\@tempa{\@kernel@ref{#1}}% \expandafter\MakeUppercase\@tempa} @@ -14685,14 +14965,11 @@ of this package available from CTAN} \cs_generate_variant:Nn \property_record:nn { nV , ee, oo } \cs_new_protected:Npn \__property_record:nn #1#2 { - \legacy_if:nT { @filesw } + \protected@write \@auxout {} { - \protected@write \@auxout {} - { - \token_to_str:N \new@label@record - {#1} - { \clist_map_function:nN {#2} \__property_record_value:n } - } + \token_to_str:N \new@label@record + {#1} + { \clist_map_function:nN {#2} \__property_record_value:n } } } \cs_generate_variant:Nn \__property_record:nn { e } @@ -14815,8 +15092,8 @@ of this package available from CTAN} } \prg_generate_conditional_variant:Nnn \property_if_recorded:n {e} {TF} \cs_new_eq:NN \IfLabelExistsTF \property_if_recorded:eTF -\cs_new:Npn \IfLabelExistsT #1#2 {\property_if_exist:eTF {#1}{#2}{} } -\cs_new:Npn \IfLabelExistsF #1 {\property_if_exist:eTF {#1}{} } +\cs_new:Npn \IfLabelExistsT #1#2 {\property_if_recorded:eTF {#1}{#2}{} } +\cs_new:Npn \IfLabelExistsF #1 {\property_if_recorded:eTF {#1}{} } \prg_new_conditional:Npnn \property_if_recorded:nn #1#2 { p , T , F, TF } % #1 label #2 property { @@ -14830,6 +15107,8 @@ of this package available from CTAN} } \prg_generate_conditional_variant:Nnn \property_if_recorded:nn {ee} {TF} \cs_new_eq:NN \IfPropertyRecordedTF \property_if_recorded:eeTF +\cs_new:Npn \IfPropertyRecordedT #1#2#3 { \property_if_recorded:eeTF {#1}{#2}{#3}{} } +\cs_new:Npn \IfPropertyRecordedF #1#2#3 { \property_if_recorded:eeTF {#1}{#2}{}{#3} } \cs_new_protected:Npn \property_ref_undefined_warn: { \flag_if_raised:nT { l__property_ref_flag } @@ -14943,6 +15222,9 @@ of this package available from CTAN} \NewHook{enddocument/afteraux} \NewHook{enddocument/info} \NewHook{enddocument/end} +\RemoveFromHook{enddocument/info}[kernel/filelist] +\RemoveFromHook{enddocument/info}[kernel/warnings] +\RemoveFromHook{enddocument/info}[kernel/release] \AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist} \AddToHook{enddocument/info}[kernel/warnings]{\@enddocument@kernel@warnings} \AddToHook{enddocument/info}[kernel/release]{% @@ -15004,6 +15286,9 @@ of this package available from CTAN} \NewHook{enddocument/afteraux} \NewHook{enddocument/info} \NewHook{enddocument/end} +\RemoveFromHook{enddocument/info}[kernel/filelist] +\RemoveFromHook{enddocument/info}[kernel/warnings] +\RemoveFromHook{enddocument/info}[kernel/release] \AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist} \AddToHook{enddocument/info}[kernel/warnings]{\@enddocument@kernel@warnings} \AddToHook{enddocument/info}[kernel/release]{% @@ -15127,7 +15412,7 @@ of this package available from CTAN} \EndIncludeInRelease \IncludeInRelease{2020/10/01}% {\begin}{Use hook system}% -\DeclareRobustCommand*\begin[1]{% +\protected\def\begin#1{% \UseHook{env/#1/before}% \@ifundefined{#1}% {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}% @@ -15145,34 +15430,6 @@ of this package available from CTAN} \fi \UseHook{env/#1/begin}% } -\edef\end - {\unexpanded{% - \romannumeral - \ifx\protect\@typeset@protect - \expandafter %1 - \expandafter %2 - \expandafter %1 - \expandafter %3 expands the \csname inside \end<space> - \expandafter %1 - \expandafter %2 expands \end<space> - \expandafter %1 expands the \else - \z@ - \else - \expandafter\z@\expandafter\protect - \fi - }% - \expandafter\noexpand\csname end \endcsname - } -\@namedef{end }#1{% - \romannumeral - \IfHookEmptyTF{env/#1/end}% - {\expandafter\z@}% - {\z@\UseHook{env/#1/end}}% - \csname end#1\endcsname\@checkend{#1}% - \expandafter\endgroup\if@endpe\@doendpe\fi - \UseHook{env/#1/after}% - \if@ignore\@ignorefalse\ignorespaces\fi -} \EndIncludeInRelease \IncludeInRelease{2019/10/01}% {\begin}{Making \begin/\end robust}% @@ -15184,6 +15441,23 @@ of this package available from CTAN} \csname #1\endcsname}}% \@ignorefalse \begingroup\@endpefalse\reserved@a} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\begin}{Making \begin/\end robust}% +\def\begin#1{% + \@ifundefined{#1}% + {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}% + {\def\reserved@a{\def\@currenvir{#1}% + \edef\@currenvline{\on@line}% + \csname #1\endcsname}}% + \@ignorefalse + \begingroup\@endpefalse\reserved@a} + +\expandafter\let\csname begin \endcsname\@undefined + +\EndIncludeInRelease +\IncludeInRelease{2019/10/01}% + {\end}{Making \begin/\end robust}% \edef\end {\unexpanded{% \romannumeral @@ -15202,27 +15476,52 @@ of this package available from CTAN} }% \expandafter\noexpand\csname end \endcsname } -\@namedef{end }#1{% - \csname end#1\endcsname\@checkend{#1}% - \expandafter\endgroup\if@endpe\@doendpe\fi - \if@ignore\@ignorefalse\ignorespaces\fi} \EndIncludeInRelease \IncludeInRelease{0000/00/00}% - {\begin}{Making \begin/\end robust}% -\def\begin#1{% - \@ifundefined{#1}% - {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}% - {\def\reserved@a{\def\@currenvir{#1}% - \edef\@currenvline{\on@line}% - \csname #1\endcsname}}% - \@ignorefalse - \begingroup\@endpefalse\reserved@a} + {\end}{Making \begin/\end robust}% \def\end#1{% \csname end#1\endcsname\@checkend{#1}% \expandafter\endgroup\if@endpe\@doendpe\fi \if@ignore\@ignorefalse\ignorespaces\fi} -\expandafter\let\csname begin \endcsname\@undefined +\EndIncludeInRelease +\IncludeInRelease{2024/11/01}% + {\end!space}{New @endpe handling}% +\@namedef{end }#1{% + \romannumeral + \IfHookEmptyTF{env/#1/end}% + {\expandafter\z@}% + {\z@\UseHook{env/#1/end}}% + \csname end#1\endcsname\@checkend{#1}% + \endgroup + \UseHook{env/#1/after}% + \if@ignore\@ignorefalse\ignorespaces\fi +} +\EndIncludeInRelease +\IncludeInRelease{2020/10/01}% + {\end!space}{Use hook system}% + +\@namedef{end }#1{% + \romannumeral + \IfHookEmptyTF{env/#1/end}% + {\expandafter\z@}% + {\z@\UseHook{env/#1/end}}% + \csname end#1\endcsname\@checkend{#1}% + \expandafter\endgroup\if@endpe\@doendpe\fi + \UseHook{env/#1/after}% + \if@ignore\@ignorefalse\ignorespaces\fi +} +\EndIncludeInRelease +\IncludeInRelease{2019/10/01}% + {\end!space}{Making \begin/\end robust}% + +\@namedef{end }#1{% + \csname end#1\endcsname\@checkend{#1}% + \expandafter\endgroup\if@endpe\@doendpe\fi + \if@ignore\@ignorefalse\ignorespaces\fi} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\end!space}{Making \begin/\end robust}% \expandafter\let\csname end \endcsname\@undefined \EndIncludeInRelease @@ -15697,6 +15996,25 @@ of this package available from CTAN} \let\leqno\@kernel@leqno \EndIncludeInRelease %%% From File: ltlists.dtx +\IncludeInRelease{2024/11/01}% + {\@endpetrue}{New @endpe handling}% +\def\@endpefalse{\global\let\if@endpe\iffalse} +\def\@endpetrue {% + \global\let\if@endpe\iftrue + \ifnum\currentgrouplevel>\z@ + \aftergroup\propagate@doendpe + \fi +} +\def\propagate@doendpe{\if@endpe \@doendpe \fi} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@endpetrue}{New @endpe handling}% + + +\def\@endpefalse{\let\if@endpe\iffalse} +\def\@endpetrue{\let\if@endpe\iftrue} + +\EndIncludeInRelease %%% From File: ltboxes.dtx \IncludeInRelease{2015/01/01}% {\makebox}{Make \makebox robust}% @@ -15776,7 +16094,6 @@ of this package available from CTAN} \IncludeInRelease{2021/06/01}% {\color@begingroup}{color group settings}% \let\color@begingroup\begingroup -\def\color@endgroup{\endgraf\endgroup} \def\color@setgroup{\color@begingroup} % changed further in color package \let\normalcolor\relax % remains untouched; only changed in a color package \def\color@hbox{\hbox\bgroup\color@begingroup} @@ -15787,7 +16104,6 @@ of this package available from CTAN} {\color@begingroup}{color group settings}% \let\color@begingroup\relax -\let\color@endgroup\relax \let\color@setgroup\relax \let\normalcolor\relax \let\color@hbox\relax @@ -15795,6 +16111,22 @@ of this package available from CTAN} \let\color@endbox\relax \EndIncludeInRelease +\IncludeInRelease{2024/11/01}% + {\color@endgroup}{color group settings}% +\def\color@endgroup{\endgraf\@endpefalse\endgroup} + +\EndIncludeInRelease +\IncludeInRelease{2021/06/01}% + {\color@endgroup}{color group settings}% +\def\color@endgroup{\endgraf\endgroup} + +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\color@endgroup}{color group settings}% + +\let\color@endgroup\relax + +\EndIncludeInRelease \IncludeInRelease{2015/01/01}% {\savebox}{Make \savebox robust}% \DeclareRobustCommand\savebox[1]{% @@ -17187,7 +17519,6 @@ of this package available from CTAN} %% Copyright (C) 2022-2024 %% Frank Mittelbach, The LaTeX Project %%% From File: ltmarks.dtx -%% \end{function} \ExplSyntaxOn \NewModuleRelease{2022/06/01}{ltmarks} @@ -17493,6 +17824,12 @@ of this package available from CTAN} \NewExpandableDocumentCommand \IfMarksEqualTF {O{page}mmm} { \mark_if_eq:nnnnTF {#1}{#2}{#3}{#4} } +\NewExpandableDocumentCommand \IfMarksEqualT {O{page}mmm} { + \mark_if_eq:nnnnT {#1}{#2}{#3}{#4} +} +\NewExpandableDocumentCommand \IfMarksEqualF {O{page}mmm} { + \mark_if_eq:nnnnF {#1}{#2}{#3}{#4} +} \cs_new_protected:Npn \__mark_update_singlecol_structures: { \box_if_vertical:NTF \@outputbox { @@ -18003,7 +18340,9 @@ of this package available from CTAN} \EndIncludeInRelease \IncludeInRelease{2021/06/01}% {\OptionNotUsed}{filter unused option list}% -\def\@remove@eq@value#1=#2\@nil{#1} +\ExplSyntaxOn +\def\@remove@eq@value#1=#2\@nil{\tl_trim_spaces:n{#1}} +\ExplSyntaxOff \def\OptionNotUsed{% \ifx\@currext\@clsextension \xdef\@unusedoptionlist{% @@ -18466,6 +18805,29 @@ of this package available from CTAN} \DeclareRobustCommand\AtEndDocument{\g@addto@macro\@enddocumenthook} \EndIncludeInRelease +\IncludeInRelease{2024/11/01}% + {\@cls@pkg}{Allow for more extensions}% +\def\@cls@pkg{% + \ifx\@currext\@clsextension + document class% + \else + \ifx\@currext\@pkgextension + package% + \else + file% + \fi + \fi} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@cls@pkg}{Allow for more extensions}% + +\def\@cls@pkg{% + \ifx\@currext\@clsextension + document class% + \else + package% + \fi} +\EndIncludeInRelease \IncludeInRelease{2020/10/01}% {\filec@ntents}{Define \q@curr@file directly (gh/220)}% \def\filecontents{\@tempswatrue\@fileswtrue |