diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex-dev/base/latexrelease.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex-dev/base/latexrelease.sty | 304 |
1 files changed, 191 insertions, 113 deletions
diff --git a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty index a7ea9bfd040..5a696389f15 100644 --- a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty +++ b/Master/texmf-dist/tex/latex-dev/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 @@ -293,7 +300,7 @@ } %%% From File: ltvers.dtx \edef\latexreleaseversion - {2024-06-01} + {2024-11-01} \newif\if@includeinrelease \@includeinreleasefalse \def\IncludeInRelease#1{% @@ -571,25 +578,6 @@ of this package available from CTAN} "luatex", tex.extraprimitives("core","omega", "aleph", "luatex") ) - local i - local t = { } - for _,i in pairs(tex.extraprimitives("luatex")) do - if not string.match(i,"^U") then - if not string.match(i, "^luatex") then - table.insert(t,i) - end - else - if string.match(i,"^Uchar$") then - table.insert(t,i) - end - end - end - for _,i in pairs(t) do - tex.print( - "\noexpand\\let\noexpand\\" .. i - .. "\noexpand\\undefined" - ) - end } \EndIncludeInRelease \fi @@ -1363,7 +1351,10 @@ of this package available from CTAN} \cs_gset_eq:NN \@expl@cs@to@str@@N \cs_to_str:N \cs_gset_eq:NN \@expl@str@if@eq@@nnTF \str_if_eq:nnTF \cs_gset_eq:NN \@expl@cs@prefix@spec@@N \cs_prefix_spec:N -\cs_gset_eq:NN \@expl@cs@argument@spec@@N \cs_argument_spec:N +\cs_if_exist:NTF \cs_parameter_spec:N + { \cs_gset_eq:NN \@expl@cs@parameter@spec@@N \cs_parameter_spec:N } + { \cs_gset_eq:NN \@expl@cs@parameter@spec@@N \cs_argument_spec:N } +\cs_gset_eq:NN \__kernel_cs_parameter_spec:N \@expl@cs@parameter@spec@@N \cs_gset_eq:NN \@expl@cs@replacement@spec@@N \cs_replacement_spec:N \cs_gset_eq:NN \@expl@str@map@function@@NN \str_map_function:NN \cs_gset_eq:NN \@expl@char@generate@@nn \char_generate:nn @@ -1374,7 +1365,7 @@ of this package available from CTAN} \let \@expl@cs@to@str@@N \@undefined \let \@expl@str@if@eq@@nnTF \@undefined \let \@expl@cs@prefix@spec@@N \@undefined -\let \@expl@cs@argument@spec@@N \@undefined +\let \@expl@cs@parameter@spec@@N \@undefined \let \@expl@cs@replacement@spec@@N \@undefined \let \@expl@str@map@function@@NN \@undefined \EndIncludeInRelease @@ -1797,7 +1788,7 @@ of this package available from CTAN} \long\def\@show@newcommand@aux#1#2#3{% \typeout{> \string#1=\@expl@cs@prefix@spec@@N#1macro:}% #3{default \string##1=\expandafter\detokenize\@gobblethree#2.^^J% - \@expl@cs@argument@spec@@N#1->\@expl@cs@replacement@spec@@N#1}} + \@expl@cs@parameter@spec@@N#1->\@expl@cs@replacement@spec@@N#1}} \long\def\@show@tokens#1{% \edef\reserved@a{#1}% \showtokens\expandafter @@ -1845,7 +1836,7 @@ of this package available from CTAN} \@show@environment@end#1} \long\def\@show@environment@begin#1{% \typeout{> \string\begin{\@expl@cs@to@str@@N#1}=environment:}% - \typeout{\@expl@cs@argument@spec@@N#1->% + \typeout{\@expl@cs@parameter@spec@@N#1->% \@expl@cs@replacement@spec@@N#1.^^J}} \long\def\@show@normalenv#1{% \@show@environment@begin#1% @@ -1856,12 +1847,12 @@ of this package available from CTAN} \long\def\@show@environment@end@aux#1#2{% \@show@tokens{\string\end{\@expl@cs@to@str@@N#2}% \ifx\relax#1=undefined% - \else:^^J\@expl@cs@argument@spec@@N#1->% + \else:^^J\@expl@cs@parameter@spec@@N#1->% \@expl@cs@replacement@spec@@N#1% \fi}} \def\@show@nonstop#1{% \typeout{> \string#1=\@expl@cs@prefix@spec@@N#1macro:^^J% - \@expl@cs@argument@spec@@N#1->\@expl@cs@replacement@spec@@N#1.}} + \@expl@cs@parameter@spec@@N#1->\@expl@cs@replacement@spec@@N#1.}} \def\@show@typeout#1{\typeout{> #1.^^J}} \EndIncludeInRelease \IncludeInRelease{0000-00-00}{\ShowEnvironment} @@ -1998,8 +1989,8 @@ of this package available from CTAN} \EndIncludeInRelease %%% From File: ltcmd.dtx -\def\ltcmdversion{v1.2d} -\def\ltcmddate{2024-03-21} +\def\ltcmdversion{v1.2e} +\def\ltcmddate{2024-04-17} \edef\@latexrelease@catcode@null{\the\catcode`\^^@ } \catcode`\^^@=12 \ExplSyntaxOn @@ -4452,7 +4443,7 @@ of this package available from CTAN} { \exp_args:Ne \str_case_e:nnF { - \exp_args:Nf \tl_if_empty:nT { \cs_argument_spec:N #1 } + \exp_args:Nf \tl_if_empty:nT { \__kernel_cs_parameter_spec:N #1 } { \exp_not:N \exp_not:n { \exp_not:e { \tl_head:N #1 } } } } { @@ -7863,7 +7854,7 @@ of this package available from CTAN} } \ExplSyntaxOff %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% From File: ltcmdhooks.dtx +%% From File: ltcmdhooks.dtx %% Copyright (C) 2020-2024 %% Frank Mittelbach, Phelype Oleinik, The LaTeX Project %%% From File: lthooks.dtx @@ -8025,7 +8016,7 @@ of this package available from CTAN} \__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 + \exp_args:Nf \str_count:n { \__kernel_cs_parameter_spec:N #2 } / 2 \bool_if:NT #1 { -1 } } \int_compare:nNnTF { \l__hook_patch_num_args_int } > { \c_zero_int } @@ -8100,7 +8091,7 @@ of this package available from CTAN} \__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 + \exp_args:Nf \str_count:n { \__kernel_cs_parameter_spec:N #2 } / 2 \bool_if:NT #1 { -1 } } \int_compare:nNnTF { \l__hook_patch_num_args_int } > { \c_zero_int } @@ -8233,7 +8224,7 @@ of this package available from CTAN} { ~ \__hook_double_hashes:w } \cs_new_protected:Npn \__hook_retokenize_patch:Nnn #1 #2 #3 { - \str_if_eq:eeTF { \cs_argument_spec:N #1 } { } + \str_if_eq:eeTF { \__kernel_cs_parameter_spec:N #1 } { } { \__hook_patch_expand_redefine:NNnn \c_false_bool #1 {#2} {#3} } { \__hook_patch_debug:x { ..~command~can~only~be~patched~by~rescanning } @@ -9388,7 +9379,8 @@ of this package available from CTAN} { \__template_find_global: } } \tl_set:Nn \l__template_key_name_tl {#1} - \use:c { __template_assign_ \l__template_keytype_tl : } + \cs_if_exist_use:cF { __template_assign_ \l__template_keytype_tl : } + { \__template_assign_variable: } } { \msg_error:nnn { template } { unknown-attribute } {#1} } } @@ -9502,67 +9494,14 @@ of this package available from CTAN} } } } -\cs_new_protected:Npn \__template_assign_integer: - { - \bool_if:NTF \l__template_global_bool - { \__template_assign_variable:N \int_gset:Nn } - { \__template_assign_variable:N \int_set:Nn } - } -\cs_new_protected:Npn \__template_assign_length: - { - \bool_if:NTF \l__template_global_bool - { \__template_assign_variable:N \dim_gset:Nn } - { \__template_assign_variable:N \dim_set:Nn } -} -\cs_new_protected:Npn \__template_assign_muskip: - { - \bool_if:NTF \l__template_global_bool - { \__template_assign_variable:N \muskip_gset:Nn } - { \__template_assign_variable:N \muskip_set:Nn } - } -\cs_new_protected:Npn \__template_assign_real: - { - \bool_if:NTF \l__template_global_bool - { \__template_assign_variable:N \fp_gset:Nn } - { \__template_assign_variable:N \fp_set:Nn } - } -\cs_new_protected:Npn \__template_assign_skip: - { - \bool_if:NTF \l__template_global_bool - { \__template_assign_variable:N \skip_gset:Nn } - { \__template_assign_variable:N \skip_set:Nn } - } -\cs_new_protected:Npn \__template_assign_tokenlist: +\cs_new_protected:Npn \__template_assign_variable: { - \bool_if:NTF \l__template_global_bool - { \__template_assign_tokenlist_aux:NN \tl_gset:NV \tl_gset:Nn } - { \__template_assign_tokenlist_aux:NN \tl_set:NV \tl_set:Nn } - } -\cs_new_protected:Npn \__template_assign_tokenlist_aux:NN #1#2 - { - \__template_if_key_value:VTF \l__template_value_tl - { - \__template_key_to_value: - \tl_put_right:Ne \l__template_assignments_tl - { - #1 \exp_not:V \l__template_var_tl - { \exp_not:V \l__template_value_tl } - } - } + \__template_assign_variable:c { - \tl_put_right:Ne \l__template_assignments_tl - { - #2 \exp_not:V \l__template_var_tl - { \exp_not:V \l__template_value_tl } - } + \__template_map_var_type: _ + \bool_if:NT \l__template_global_bool { g } set:Nn } } -\cs_new_protected:Npn \__template_assign_commalist: - { - \bool_if:NTF \l__template_global_bool - { \__template_assign_tokenlist_aux:NN \clist_gset:NV \clist_gset:Nn } - { \__template_assign_tokenlist_aux:NN \clist_set:NV \clist_set:Nn } - } \cs_new_protected:Npn \__template_assign_variable:N #1 { \__template_if_key_value:VT \l__template_value_tl @@ -9573,6 +9512,7 @@ of this package available from CTAN} { \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 @@ -9887,11 +9827,11 @@ of this package available from CTAN} { \__template_show_vars:nn {#1} {#2} } \cs_new_protected:Npn \ShowInstanceValues #1#2 { \__template_show_values:nn {#1} {#2} } -\cs_new:Npn \IfInstanceExistTF #1#2 +\cs_new:Npn \IfInstanceExistsTF #1#2 { \__template_if_instance_exist:nnTF {#1} {#2} } -\cs_new:Npn \IfInstanceExistT #1#2 +\cs_new:Npn \IfInstanceExistsT #1#2 { \__template_if_instance_exist:nnT {#1} {#2} } -\cs_new:Npn \IfInstanceExistF #1#2 +\cs_new:Npn \IfInstanceExistsF #1#2 { \__template_if_instance_exist:nnF {#1} {#2} } \cs_new_protected:Npn \KeyValue #1 {#1} \cs_new_protected:Npn \AssignTemplateKeys { \__template_assignments_pop: } @@ -10086,7 +10026,7 @@ of this package available from CTAN} \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 +\everypar{\@nodocument} %% To get an error if text appears before the \document \msg_new:nnnn { hooks } { para-mode } { Illegal~mode~ change~ in~ hook~ 'para/#1'.\\ @@ -14859,7 +14799,9 @@ of this package available from CTAN} } } \prg_generate_conditional_variant:Nnn \property_if_exist:n {e} {TF} -\cs_new_eq:NN \IfPropertyExistTF \property_if_exist:eTF +\cs_new_eq:NN \IfPropertyExistsTF \property_if_exist:eTF +\cs_new:Npn \IfPropertyExistsT #1#2 {\property_if_exist:eTF {#1}{#2}{} } +\cs_new:Npn \IfPropertyExistsF #1 {\property_if_exist:eTF {#1}{} } \prg_new_conditional:Npnn \property_if_recorded:n #1 { p , T , F, TF } % #1 label { @@ -14872,7 +14814,9 @@ of this package available from CTAN} } } \prg_generate_conditional_variant:Nnn \property_if_recorded:n {e} {TF} -\cs_new_eq:NN \IfLabelExistTF \property_if_recorded:eTF +\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}{} } \prg_new_conditional:Npnn \property_if_recorded:nn #1#2 { p , T , F, TF } % #1 label #2 property { @@ -14961,8 +14905,8 @@ of this package available from CTAN} \let \RefProperty \@undefined \let \RefUndefinedWarn \@undefined -\let \IfPropertyExistTF \@undefined -\let \IfLabelExistTF \@undefined +\let \IfPropertyExistsTF \@undefined +\let \IfLabelExistsTF \@undefined \let \IfPropertyRecordedTF \@undefined \let\new@label@record \@undefined @@ -16078,6 +16022,23 @@ of this package available from CTAN} \@ifnextchar[{\@rsbox{#1}}{\@irsbox{#1}[]}} \expandafter\let\csname raisebox \endcsname\@undefined \EndIncludeInRelease +\IncludeInRelease{2024/06/01}% + {\@finalstrut}{final strut correction}% +\def\@finalstrut#1{% + \unskip + \ifhmode \nobreak + \else + \vskip-\baselineskip + \fi + \vrule\@width\z@\@height\z@\@depth\dp#1} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@finalstrut}{final strut correction}% +\def\@finalstrut#1{% + \unskip\ifhmode\nobreak\fi + \vrule\@width\z@\@height\z@\@depth\dp#1} + +\EndIncludeInRelease %%% From File: lttab.dtx \IncludeInRelease{2020/10/01}% {\@itabcr}{Tabbing calc syntax}% @@ -17264,6 +17225,24 @@ of this package available from CTAN} \tl_new:c { g__mark_last-column_top_ #1 _tl } \tl_new:c { g__mark_last-column_first_ #1 _tl } \tl_new:c { g__mark_last-column_last_ #1 _tl } + \tl_set:cn { g__mark_page_top_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_page_first_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_page_last_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_previous-page_top_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_previous-page_first_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_previous-page_last_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_column_top_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_column_first_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_column_last_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_previous-column_top_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_previous-column_first_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_previous-column_last_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_first-column_top_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_first-column_first_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_first-column_last_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_last-column_top_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_last-column_first_ #1 _tl }{ \__mark_id:n{0} } + \tl_set:cn { g__mark_last-column_last_ #1 _tl }{ \__mark_id:n{0} } } \box_new:N \l__mark_box \box_new:N \l__mark_ii_box @@ -17408,12 +17387,14 @@ of this package available from CTAN} \group_begin: \@kernel@before@insertmark \hook_use:n { insertmark } - \unrestored@protected@xdef \g__mark_tmp_tl {#2} + \unrestored@protected@xdef \g__mark_tmp_tl + { + \__mark_id:n{ \int_use:N\g__mark_int } + #2 + } \tex_marks:D \use:c { c__mark_class_ #1 _mark } { - \tl_if_empty:NTF \g__mark_tmp_tl - { \exp_not:n { \prg_do_nothing: } } - { \exp_not:o { \g__mark_tmp_tl } } + \exp_not:o { \g__mark_tmp_tl } } \group_end: \if@nobreak\ifvmode\nobreak\fi\fi @@ -17423,15 +17404,23 @@ of this package available from CTAN} { \tl_to_str:n {#1} } } } +\cs_new_protected:Npn \__mark_id:n #1 { } +\int_new:N \g__mark_int \cs_new:Npn \@kernel@before@insertmark { \cs_set_eq:NN \label \scan_stop: \cs_set_eq:NN \index \scan_stop: \cs_set_eq:NN \glossary \scan_stop: + \int_compare:nNnTF \g__mark_int < {99999} + { \int_gincr:N \g__mark_int } + { \int_gzero:N \g__mark_int } + } \hook_new:n {insertmark} -\cs_new:Npn \mark_use_first:nn #1#2 { \exp_not:v { g__mark_#1_first_#2_tl } } -\cs_new:Npn \mark_use_last:nn #1#2 { \exp_not:v { g__mark_#1_last_#2_tl } } -\cs_new:Npn \mark_use_top:nn #1#2 { \exp_not:v { g__mark_#1_top_#2_tl } } +\cs_new:Npn \mark_use_first:nn #1#2 { \__mark_use:v { g__mark_#1_first_#2_tl } } +\cs_new:Npn \mark_use_last:nn #1#2 { \__mark_use:v { g__mark_#1_last_#2_tl } } +\cs_new:Npn \mark_use_top:nn #1#2 { \__mark_use:v { g__mark_#1_top_#2_tl } } +\cs_new:Npn \__mark_use:n #1 { \exp_not:o { \use_none:nn #1 } } +\cs_generate_variant:Nn \__mark_use:n { v } \prg_new_conditional:Npnn \mark_if_eq:nnnn #1#2#3#4 { T , F , TF } { \tl_if_eq:ccTF { g__mark_ #1 _#3_ #2 _tl } @@ -17546,10 +17535,19 @@ of this package available from CTAN} { g__mark_page_last_ ##1 _tl } \tl_gset_eq:cc { g__mark_page_top_ ##1 _tl } { g__mark_first-column_top_ ##1 _tl } - \tl_gset_eq:cc { g__mark_ page_first_ ##1 _tl } + + \tl_if_eq:ccTF { g__mark_first-column_top_ ##1 _tl } { g__mark_first-column_first_ ##1 _tl } - \tl_gset_eq:cc { g__mark_page_last_ ##1 _tl } - { g__mark_last-column_last_ ##1 _tl } + { + \tl_gset_eq:cc { g__mark_page_first_ ##1 _tl } + { g__mark_last-column_first_ ##1 _tl } + } + { + \tl_gset_eq:cc { g__mark_page_first_ ##1 _tl } + { g__mark_first-column_first_ ##1 _tl } + } + \tl_gset_eq:cc { g__mark_page_last_ ##1 _tl } + { g__mark_last-column_last_ ##1 _tl } } } } @@ -17812,15 +17810,15 @@ of this package available from CTAN} }% \reserved@a} \EndIncludeInRelease -\IncludeInRelease{2021/11/15}% - {\IfPackageLoadedtTF}{Test package loading}% +\IncludeInRelease{2024/06/01}% + {\IfPackageLoadedTF}{Test package loading}% \let \IfPackageLoadedTF \@ifpackageloaded \let \IfClassLoadedTF \@ifclassloaded \let \IfPackageLoadedWithOptionsTF \@ifpackagewith \let \IfClassLoadedWithOptionsTF \@ifclasswith \EndIncludeInRelease \IncludeInRelease{0000/00/00}% - {\IfPackageLoadedtTF}{Test package loading}% + {\IfPackageLoadedTF}{Test package loading}% \let \IfPackageLoadedTF \@ifpackageloaded \let \IfClassLoadedTF \@ifclassloaded @@ -17828,6 +17826,63 @@ of this package available from CTAN} \let \IfClassLoadedWithOptionsTF \@ifclasswith \EndIncludeInRelease +\IncludeInRelease{2024/06/01}% + {\IfPackageLoadedT}{More conditionals}% +\def\IfPackageLoadedT #1#2{\IfPackageLoadedTF{#1}{#2}{}} +\def\IfPackageLoadedF #1{\IfPackageLoadedTF{#1}{}} +\def\IfClassLoadedT #1#2{\IfClassLoadedTF{#1}{#2}{}} +\def\IfClassLoadedF #1{\IfClassLoadedTF{#1}{}} +\def\IfPackageAtLeastT#1#2#3{\IfPackageAtLeastTF{#1}{#2}{#3}{}} +\def\IfPackageAtLeastF #1#2{\IfPackageAtLeastTF{#1}{#2}{}} +\def\IfClassAtLeastT #1#2#3{\IfClassAtLeastTF{#1}{#2}{#3}{}} +\def\IfClassAtLeastF #1#2{\IfClassAtLeastTF{#1}{#2}{}} +\def\IfFileAtLeastT #1#2#3{\IfFileAtLeastTF{#1}{#2}{#3}{}} +\def\IfFileAtLeastF #1#2{\IfFileAtLeastTF{#1}{#2}{}} +\def\IfFormatAtLeastT #1#2{\IfFormatAtLeastTF{#1}{#2}{}} +\def\IfFormatAtLeastF #1{\IfFormatAtLeastTF{#1}{}} +\def\IfPackageLoadedWithOptionsT #1#2#3{\IfPackageLoadedWithOptionsTF{#1}{#2}{#3}{}} +\def\IfPackageLoadedWithOptionsF #1#2{\IfPackageLoadedWithOptionsTF{#1}{#2}{}} +\def\IfClassLoadedWithOptionsT #1#2#3{\IfClassLoadedWithOptionsTF{#1}{#2}{#3}{}} +\def\IfClassLoadedWithOptionsF #1#2{\IfClassLoadedWithOptionsTF{#1}{#2}{}} +\def\IfFileLoadedTF#1{% + \expandafter\ifx\csname ver@#1\endcsname\relax + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi} +\def\IfFileLoadedT#1#2{\IfFileLoadedTF{#1}{#2}{}} +\def\IfFileLoadedF #1{\IfFileLoadedTF{#1}{}} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\IfPackageLoadedT}{More conditionals}% + +\def\IfPackageLoadedT #1#2{\IfPackageLoadedTF{#1}{#2}{}} +\def\IfPackageLoadedF #1{\IfPackageLoadedTF{#1}{}} +\def\IfClassLoadedT #1#2{\IfClassLoadedTF{#1}{#2}{}} +\def\IfClassLoadedF #1{\IfClassLoadedTF{#1}{}} +\def\IfPackageAtLeastT#1#2#3{\IfPackageAtLeastTF{#1}{#2}{#3}{}} +\def\IfPackageAtLeastF #1#2{\IfPackageAtLeastTF{#1}{#2}{}} +\def\IfClassAtLeastT #1#2#3{\IfClassAtLeastTF{#1}{#2}{#3}{}} +\def\IfClassAtLeastF #1#2{\IfClassAtLeastTF{#1}{#2}{}} +\def\IfFileAtLeastT #1#2#3{\IfFileAtLeastTF{#1}{#2}{#3}{}} +\def\IfFileAtLeastF #1#2{\IfFileAtLeastTF{#1}{#2}{}} +\def\IfFormatAtLeastT #1#2{\IfFormatAtLeastTF{#1}{#2}{}} +\def\IfFormatAtLeastF #1{\IfFormatAtLeastTF{#1}{}} +\def\IfPackageLoadedWithOptionsT #1#2#3{\IfPackageLoadedWithOptionsTF{#1}{#2}{#3}{}} +\def\IfPackageLoadedWithOptionsF #1#2{\IfPackageLoadedWithOptionsTF{#1}{#2}{}} +\def\IfClassLoadedWithOptionsT #1#2#3{\IfClassLoadedWithOptionsTF{#1}{#2}{#3}{}} +\def\IfClassLoadedWithOptionsF #1#2{\IfClassLoadedWithOptionsTF{#1}{#2}{}} + +\def\IfFileLoadedTF#1{% + \expandafter\ifx\csname ver@#1\endcsname\relax + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi} +\def\IfFileLoadedT#1#2{\IfFileLoadedTF{#1}{#2}{}} +\def\IfFileLoadedF #1{\IfFileLoadedTF{#1}{}} + +\EndIncludeInRelease \IncludeInRelease{2020/10/01}% {\ProvidesPackage}{Check name with \strcmp}% \def\ProvidesPackage#1{% @@ -18411,6 +18466,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 |