diff options
author | Karl Berry <karl@freefriends.org> | 2023-11-01 20:13:49 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-11-01 20:13:49 +0000 |
commit | a776d572cfd8fa24365dbc0cc22bbd856fbbe97b (patch) | |
tree | 849f92803a749fc1bc8aecd7ba910bd723ec4095 /Master/texmf-dist/tex/latex | |
parent | d090e61f0bea55cb371aeb790140dbcb6c5d7d36 (diff) |
latex2e (1nov23)
git-svn-id: svn://tug.org/texlive/trunk@68720 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex')
68 files changed, 2973 insertions, 740 deletions
diff --git a/Master/texmf-dist/tex/latex/base/atveryend-ltx.sty b/Master/texmf-dist/tex/latex/base/atveryend-ltx.sty index 2f63091fb5d..35b348e5456 100644 --- a/Master/texmf-dist/tex/latex/base/atveryend-ltx.sty +++ b/Master/texmf-dist/tex/latex/base/atveryend-ltx.sty @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. %%% From File: ltfilehook.dtx \providecommand\ltfilehookversion{v1.0o} -\providecommand\ltfilehookdate{2023/04/02} +\providecommand\ltfilehookdate{2023/07/10} \ProvidesPackage{atveryend-ltx} [2020/08/19 v1.0a Emulation of the original atveryend package^^Jwith kernel methods] diff --git a/Master/texmf-dist/tex/latex/base/docstrip.tex b/Master/texmf-dist/tex/latex/base/docstrip.tex index fa6dbc7cc18..0cafcd2c109 100644 --- a/Master/texmf-dist/tex/latex/base/docstrip.tex +++ b/Master/texmf-dist/tex/latex/base/docstrip.tex @@ -46,7 +46,7 @@ \def\filename{docstrip.dtx} \def\fileversion{v2.6b} \def\filedate{2022-09-03} -\def\docdate {2022-09-03} +\def\docdate {2023-10-10} %% %% The docstrip program for use with TeX. %% Copyright (C) 1989-1991 Frank Mittelbach diff --git a/Master/texmf-dist/tex/latex/base/latex.ltx b/Master/texmf-dist/tex/latex/base/latex.ltx index 164ecc62270..35a2d4db005 100644 --- a/Master/texmf-dist/tex/latex/base/latex.ltx +++ b/Master/texmf-dist/tex/latex/base/latex.ltx @@ -13,6 +13,7 @@ %% ltcmd.dtx (with options: `2ekernel') %% lthooks.dtx (with options: `2ekernel') %% ltcmdhooks.dtx (with options: `2ekernel') +%% ltsockets.dtx (with options: `2ekernel') %% ltalloc.dtx (with options: `2ekernel') %% ltcntrl.dtx (with options: `2ekernel') %% lterror.dtx (with options: `2ekernel') @@ -34,6 +35,7 @@ %% lttextcomp.dtx (with options: `2ekernel') %% ltpageno.dtx (with options: `2ekernel') %% ltxref.dtx (with options: `2ekernel') +%% ltproperties.dtx (with options: `2ekernel') %% ltmiscen.dtx (with options: `2ekernel') %% ltmath.dtx (with options: `2ekernel') %% ltlists.dtx (with options: `2ekernel') @@ -705,8 +707,8 @@ %%% From File: ltvers.dtx \def\fmtname{LaTeX2e} \edef\fmtversion - {2023-06-01} -\def\patch@level{1} + {2023-11-01} +\def\patch@level{0} \edef\development@branch@name{} \iffalse \def\reserved@a#1/#2/#3\@nil{% @@ -1177,6 +1179,7 @@ \msg_new:nnn { kernel } { unknown-arg-expansion } { Unknown~arg~expansion~"#1" } \ExplSyntaxOff +\def\IfExplAtLeastTF{\@ifl@t@r\ExplLoaderFileDate} %%% From File: ltdefns.dtx \def\two@digits#1{\ifnum#1<10 0\fi\number#1} \protected\long\def\typeout#1{\begingroup @@ -1803,8 +1806,8 @@ \xdef#1{\the\toks@}% \endgroup} %%% From File: ltcmd.dtx -\def\ltcmdversion{v1.1e} -\def\ltcmddate{2023-05-26} +\def\ltcmdversion{v1.2a} +\def\ltcmddate{2023-08-19} \message{document commands,} \ExplSyntaxOn \tl_new:N \l__cmd_arg_spec_tl @@ -4005,66 +4008,6 @@ \exp_after:wN #1 \exp_after:wN #2 \exp_after:wN { \if_false: } \fi: } -\cs_new_protected:Npn \__cmd_get_arg_spec_error:N #1 - { - \bool_set_false:N \l__cmd_environment_bool - \tl_set:Nn \l__cmd_fn_tl {#1} - \__cmd_get_arg_spec_error_aux:n { \cs_if_exist:NTF #1 } - } -\cs_new_protected:Npn \__cmd_get_arg_spec_error:n #1 - { - \bool_set_true:N \l__cmd_environment_bool - \str_set:Nx \l__cmd_environment_str {#1} - \__cmd_get_arg_spec_error_aux:n - { \cs_if_exist:cTF { \l__cmd_environment_str } } - } -\cs_new_protected:Npn \__cmd_get_arg_spec_error_aux:n #1 - { - #1 - { - \msg_error:nnx { cmd } { non-xparse } - { \__cmd_environment_or_command: } - } - { - \msg_error:nnx { cmd } { unknown } - { \__cmd_environment_or_command: } - } - } -\cs_new_protected:Npn \__cmd_get_arg_spec:NTF #1#2#3 - { - \__kernel_cmd_if_xparse:NTF #1 - { - \tl_set:Nx \ArgumentSpecification { \tl_item:Nn #1 { 2 } } - #2 - } - {#3} - } -\tl_new:N \ArgumentSpecification -\cs_new_protected:Npn \__cmd_get_arg_spec:N #1 - { - \__cmd_get_arg_spec:NTF #1 { } - { \__cmd_get_arg_spec_error:N #1 } - } -\cs_new_protected:Npn \__cmd_get_arg_spec:n #1 - { - \exp_args:Nc \__cmd_get_arg_spec:NTF - { environment~ \tl_to_str:n {#1} } - { } - { \__cmd_get_arg_spec_error:n {#1} } - } -\cs_new_protected:Npn \__cmd_show_arg_spec:N #1 - { - \__cmd_get_arg_spec:NTF #1 - { \tl_show:N \ArgumentSpecification } - { \__cmd_get_arg_spec_error:N #1 } - } -\cs_new_protected:Npn \__cmd_show_arg_spec:n #1 - { - \exp_args:Nc \__cmd_get_arg_spec:NTF - { environment~ \tl_to_str:n {#1} } - { \tl_show:N \ArgumentSpecification } - { \__cmd_get_arg_spec_error:n {#1} } - } \cs_new_protected:Npn \__cmd_check_definable:nNT #1 { \tl_trim_spaces_apply:nN {#1} \__cmd_check_definable_aux:nN } \group_begin: @@ -4396,12 +4339,6 @@ LaTeX~did~not~find~this~argument~and~will~insert~a~default~value~ for~further~processing. } -\msg_new:nnnn { cmd } { non-xparse } - { \str_uppercase:n #1~not~defined~using~xparse. } - { - You~have~asked~for~the~argument~specification~for~the~#1,~ - but~this~was~not~defined~using~xparse. - } \msg_new:nnnn { cmd } { arg-split } { Too~many~'#1'~separators~in~argument. } { @@ -4409,12 +4346,6 @@ at~each~occurrence~of~the~separator~'#1'~into~#2~parts.~ Too~many~separators~were~found. } -\msg_new:nnnn { cmd } { unknown } - { Unknown~document~#1. } - { - You~have~asked~for~the~argument~specification~for~the~#1,~ - but~it~is~not~defined. - } \msg_new:nnnn { cmd } { verbatim-nl } { Verbatim-like~#1~ended~by~end~of~line. } { @@ -4605,23 +4536,11 @@ \cs_new_eq:NN \SplitList \__cmd_split_list:nn \cs_new_eq:NN \TrimSpaces \__cmd_trim_spaces:n \cs_new_eq:NN \ProcessList \tl_map_function:nN -\cs_new_protected:Npn \GetDocumentCommandArgSpec #1 - { - \__cmd_check_definable:nNT {#1} \GetDocumentCommandArgSpec - { \__cmd_get_arg_spec:N #1 } - } -\cs_new_eq:NN \GetDocumentEnvironmentArgSpec \__cmd_get_arg_spec:n -\cs_new_protected:Npn \ShowDocumentCommandArgSpec #1 - { - \__cmd_check_definable:nNT {#1} \ShowDocumentCommandArgSpec - { \__cmd_show_arg_spec:N #1 } - } -\cs_new_eq:NN \ShowDocumentEnvironmentArgSpec \__cmd_show_arg_spec:n \ExplSyntaxOff %%% From File: lthooks.dtx \def\lthooksversion{v1.1f} -\def\lthooksdate{2023/06/16} +\def\lthooksdate{2023/10/02} \ExplSyntaxOn \bool_new:N \g__hook_debug_bool \cs_new_eq:NN \__hook_debug:n \use_none:n @@ -6832,6 +6751,181 @@ } \ExplSyntaxOff %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% From File: ltsockets.dtx +\def\ltsocketsversion{0.9a} +\def\ltsocketsdate{2023-08-21} +\ExplSyntaxOn +\bool_new:N \g__socket_debug_bool +\cs_new_eq:NN \__socket_debug:n \use_none:n +\cs_new_eq:NN \__socket_debug_term:n \use_none:n +\cs_new_protected:Npn \socket_debug_on: + { + \bool_gset_true:N \g__socket_debug_bool + \__socket_debug_gset: + } +\cs_new_protected:Npn \socket_debug_off: + { + \bool_gset_false:N \g__socket_debug_bool + \__socket_debug_gset: + } +\cs_new_protected:Npn \__socket_debug_gset: + { + \cs_gset_protected:Npx \__socket_debug:n ##1 + { \bool_if:NT \g__socket_debug_bool {##1} } + \cs_gset_protected:Npx \__socket_debug_term:n ##1 + { \bool_if:NT \g__socket_debug_bool + { \iow_term:x { ^^J [Sockets]~ ==>~ ##1} } } + } +\cs_new_protected:Npn \socket_new:nn #1 #2 { + \str_if_exist:cTF { l__socket_#1_plug_str } + { + \msg_error:nnn { socket } { already-declared } {#1} + } + { + \int_if_zero:nTF \tex_currentgrouplevel:D + { + \str_new:c { l__socket_#1_plug_str } + \seq_new:c { l__socket_#1_plugs_seq } + \int_const:cn { c__socket_#1_args_int } {#2} + \socket_new_plug:nnn {#1} { noop } {} + \int_compare:nNnTF {#2} = 1 + { + \socket_new_plug:nnn {#1} { identity } {##1} + \socket_assign_plug:nn {#1} { identity } + } + { \socket_assign_plug:nn {#1} { noop } } + \__socket_debug_term:n + { Socket~ '#1'~ declared~ with~ #2~ input(s) } + } + { + \msg_error:nn { socket } { not-top-level } + } + } +} +\cs_new_protected:Npn \socket_log:n #1 { + \typeout{ Socket~ #1:} + \str_if_exist:cTF { l__socket_#1_plug_str } + { + \typeout{ \@spaces number~ of~ inputs~ =~ + \int_use:c { c__socket_#1_args_int } } + \typeout{ \@spaces available~plugs~ =~ + \seq_use:cnnn { l__socket_#1_plugs_seq }{,~}{,~}{,~} } + \typeout{ \@spaces current~ plug~ =~ + \str_use:c { l__socket_#1_plug_str } } + \typeout{ \@spaces definition~ =~ + \cs_meaning:c + { __socket_#1_plug_ \str_use:c { l__socket_#1_plug_str } :w } } + \typeout{} + } + { + \typeout { Socket~ is~ not~ declared! } + } +} +\cs_new_protected:Npn \socket_show:n #1 {\socket_log:n {#1} \errmessage{}} +\cs_new_protected:Npn \socket_new_plug:nnn #1#2#3 { + \str_if_exist:cTF { l__socket_#1_plug_str } + { + \cs_if_exist:cTF { __socket_#1_plug_#2:w } + { + \msg_error:nnnn { socket } { plug-already-declared } {#1} {#2} + } + { + \cs_generate_from_arg_count:cNnn + { __socket_#1_plug_#2:w } + \cs_new_protected:Npn + { \int_use:c { c__socket_#1_args_int } } + {#3} + \seq_put_right:cn { l__socket_#1_plugs_seq } {#2} + \__socket_debug_term:n + { Plug~ '#2'~ for~ socket~ '#1'~ declared. } + } + } + { + \msg_error:nnn { socket } { undeclared } {#1} + } +} +\cs_new_protected:Npn \socket_set_plug:nnn #1#2#3 { + \str_if_exist:cTF { l__socket_#1_plug_str } + { + \cs_if_exist:cTF { __socket_#1_plug_#2:w } + { + \cs_generate_from_arg_count:cNnn + { __socket_#1_plug_#2:w } + \cs_set_protected:Npn + { \int_use:c { c__socket_#1_args_int } } + {#3} + \__socket_debug_term:n + { Plug~ '#2'~ for~ socket~ '#1'~ changed. } + } + { + \msg_error:nnnn { socket } { plug-undeclared } {#1} {#2} + } + } + { + \msg_error:nnn { socket } { undeclared } {#1} + } +} +\cs_new_protected:Npn \socket_assign_plug:nn #1 #2 { + \str_if_exist:cTF { l__socket_#1_plug_str } + { + \cs_if_exist:cTF { __socket_#1_plug_#2:w } + { + \__socket_debug_term:n + { Replacing~ plug~ '\str_use:c { l__socket_#1_plug_str }'~ + with~ '#2'~ in~ socket~ '#1'. } + \str_set:cn { l__socket_#1_plug_str } {#2} + } + { + \msg_error:nnnn { socket } { plug-undeclared } {#1} {#2} + } + } + { \msg_error:nnn { socket } { undeclared } {#1} } +} +\cs_new_protected:Npn \socket_use:nw #1 { + \__socket_debug_term:n + { Socket~ '#1'~ containing~ plug~ + '\str_use:c { l__socket_#1_plug_str }'~ used. } + \use:c { __socket_#1_plug_ \str_use:c { l__socket_#1_plug_str } :w } +} +\cs_new_eq:NN \socket_use:n \socket_use:nw % socket with no inputs +\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 + +\msg_new:nnnn { socket } { already-declared } + { Socket~ '#1'~ already~ declared! } + { A~ socket~ can~ only~ be~ declared~ once.~ The~ name~ '#1'~ is~ + already~ taken.~ Use~ \ShowSocket{#1}~ to~ see~ its~ definition. } + +\msg_new:nnnn { socket } { undeclared } + { Socket~ '#1'~ undeclared! } + { You~ tried~ to~ use~ a~ socket~ that~ was~ not~ declared~ before. } + +\msg_new:nnnn { socket } { not-top-level } + { Sockets~ can~ only~ be~ declared~ at~ top-level! } + { It~ is~ not~ allowed~ to~ declare~ sockets~ inside~ a~ + group.~ Move~ the~ declaration~ to~ the~ top-level. } +\msg_new:nnnn { socket } { plug-already-declared } + { Plug~ '#2'~ for~ socket~ '#1'~ already~ declared! } + { You~ can't~ change~ an~ existing~ plug~ with~ \NewSocketPlug~ and~ it~ + is~ normally~ not~ sensible~ to~ do~ so.~ Use~ the~ L3~ programming~ + layer~ function~ \socket_set_plug:nnn~ if~ you~ really~ have~ to. } + +\msg_new:nnnn { socket } { plug-undeclared } + { Plug~ '#2'~ for~ socket~ '#1'~ undeclared! } + { The~ plug~ name~ is~ unknown.~ Is~ the~ name~ misspelled~ or~ did~ you~ + intend~ to~ assign~ it~ to~ a~ different~ socket? } +\prop_gput:Nnn \g_msg_module_type_prop { socket } { LaTeX } +\cs_new_eq:NN \NewSocket \socket_new:nn +\cs_new_eq:NN \ShowSocket \socket_show:n +\cs_new_eq:NN \LogSocket \socket_log:n +\cs_new_eq:NN \NewSocketPlug \socket_new_plug:nnn +\cs_new_eq:NN \AssignSocketPlug \socket_assign_plug:nn +\cs_new_eq:NN \UseSocket \socket_use:nw +\cs_new_eq:NN \DebugSocketsOn \socket_debug_on: +\cs_new_eq:NN \DebugSocketsOff \socket_debug_off: +\ExplSyntaxOff +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% From File: ltalloc.dtx \chardef\@xxxii=32 \mathchardef\@Mi=10001 @@ -7518,8 +7612,14 @@ Type H <return> for immediate help.}% \DeclareRobustCommand{\nobreakspace}{% \leavevmode\nobreak\ } \catcode `\~=13 -\def~{\nobreakspace{}} +\protected\edef~{% + \noexpand\ifincsname\noexpand\expandafter\string~% + \noexpand\else + \noexpand\expandafter\noexpand\nobreakspace + \noexpand\fi +} \expandafter\let\expandafter\@xobeysp\csname nobreakspace \endcsname +\let\@xobeytab\@xobeysp \def\@{\spacefactor\@m{}}% \DeclareRobustCommand\hspace{\@ifstar\@hspacer\@hspace} \newskip\sp@ce@skip @@ -11849,6 +11949,269 @@ Type H <return> for immediate help.}% \NewDocumentCommand\Ref{s} {\IfBooleanTF{#1}{\@kernel@sRef}{\@kernel@Ref}} \def\@currentlabel{} +%% File: ltproperties.dtx +\def\ltpropertiesversion{1.0c} +\def\ltpropertiesdate{2023-10-15} + + + +\ExplSyntaxOn +\cs_new_protected:Npn \property_new:nnnn #1#2#3#4 + { + \cs_if_free:cTF { __property_code_ #1 : } + { + \exp_args:Nx \__property_gset:nnnn { \tl_to_str:n {#1} } + {#2} {#3} {#4} + } + { + \msg_error:nn { property }{ exists }{#1} + } + } +\cs_new_protected:Npn \property_gset:nnnn #1#2#3#4 + { + \__property_gset:ennn { \tl_to_str:n {#1} } + {#2} {#3} {#4} + } +\cs_new_protected:Npn \__property_gset:nnnn #1#2#3#4 + { + \cs_gset:cpn { __property_code_ #1 : } {#4} + \tl_gclear_new:c { g__property_default_ #1 _tl } + \tl_gset:cn { g__property_default_ #1 _tl } {#3} + \bool_if_exist:cF { g__property_shipout_ #1 _tl } + { \bool_new:c { g__property_shipout_ #1 _tl } } + \str_case:nnF {#2} + { + { now } { { \bool_gset_false:c { g__property_shipout_ #1 _tl } } } + { shipout } + { \bool_gset_true:c { g__property_shipout_ #1 _tl } } + } + { \msg_error:nnnn { property } { unknown-setpoint } {#1} {#2} } + } +\cs_generate_variant:Nn \__property_gset:nnnn {ennn} +\cs_new_protected:Npn \NewProperty #1#2#3#4 + { + \protected@edef\reserved@a{#1} + \exp_args:No \property_new:nnnn {\reserved@a} {#2}{#3}{#4} + } +\cs_new_protected:Npn \SetProperty #1#2#3#4 + { + \protected@edef\reserved@a{#1} + \exp_args:No \property_gset:nnnn {\reserved@a} {#2}{#3}{#4} + } +\cs_new_protected:Npn \property_record:nN #1#2 + { \property_record:nV {#1} #2 } +\cs_new_protected:Npn \property_record:nn #1#2 + { \__property_record:en { \tl_to_str:n {#1} } {#2} } +\cs_generate_variant:Nn \property_record:nn { nV , ee, oo } +\cs_new_protected:Npn \__property_record:nn #1#2 + { + \legacy_if:nT { @filesw } + { + \iow_shipout_x:Nx \@auxout + { + \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 } +\cs_new:Npn \__property_record_value:n #1 + { \__property_record_value_aux:e { \tl_to_str:n {#1} } } +\cs_new:Npn \__property_record_value_aux:n #1 + { + \cs_if_exist:cTF { __property_code_ #1 : } + { + {#1} + { + \bool_if:cTF { g__property_shipout_ #1 _tl } + { \exp_not:c } + { \use:c } + { __property_code_ #1 : } + } + } + { \msg_expandable_error:nnn { property } { not-declared } {#1} } + } +\cs_generate_variant:Nn \__property_record_value_aux:n { e } +\NewDocumentCommand\RecordProperties { m m } + { + \@bsphack + \protected@edef\reserved@a{#1} + \protected@edef\reserved@b{#2} + \property_record:oo {\reserved@a}{\reserved@b} + \@esphack + } +\flag_new:n { l__property_ref_flag } +\cs_new:Npn \property_ref:nn #1#2 + { + \__property_ref:een + { \tl_to_str:n {#1} } + { \tl_to_str:n {#2} } + { \tl_use:c { g__property_default_ #2 _tl } } + } +\cs_generate_variant:Nn \property_ref:nn {ee} +\cs_new:Npn \property_ref:nnn #1#2#3 + { + \__property_ref:een + { \tl_to_str:n {#1} } + { \tl_to_str:n {#2} } + {#3} + } +\cs_new:Npn \__property_ref:nnn #1#2#3 + { + \tl_if_exist:cTF { g__property_label_ #1 _ #2 _tl } + { \tl_use:c { g__property_label_ #1 _ #2 _tl } } + { + \flag_if_raised:nF + { l__property_ref_flag } { \flag_raise:n { l__property_ref_flag } } + \tl_if_exist:cTF { g__property_default_ #2 _tl } + { #3 } + { \msg_expandable_error:nnn { property } { not-declared } {#2} } + } + } +\cs_generate_variant:Nn \__property_ref:nnn { ee } +\cs_generate_variant:Nn \property_ref:nnn {een} +\NewExpandableDocumentCommand \RefProperty { o m m } + { + \IfNoValueTF {#1} + { + \property_ref:ee {#2}{#3} + } + { + \property_ref:een {#2}{#3}{#1} + } + } +\cs_new_protected:Npn \new@label@record #1#2 + { + \tl_if_exist:cTF { r@#1 } + { + \gdef \@multiplelabels + { \@latex@warning@no@line { There~were~multiply-defined~labels } } + \@latex@warning@no@line { Label~`#1'~multiply~defined } + } + { + \tl_new:c { r@#1 } + \tl_gset:cn { r@#1 }{#2} + } + \__property_data:nnn {#1} #2 { \q_recursion_tail } { ? } \q_recursion_stop + } +\cs_new_protected:Npn \__property_data:nnn #1#2#3 + { + \quark_if_recursion_tail_stop:n {#2} + \tl_gclear_new:c { g__property_label_ \tl_to_str:n {#1} _ \tl_to_str:n {#2} _tl } + \tl_gset:cn { g__property_label_ \tl_to_str:n {#1} _ \tl_to_str:n {#2} _tl } {#3} + \__property_data:nnn {#1} + } +\cs_new_protected:Npn \@kernel@new@label@record@testdef #1 #2 + { + \tl_if_eq:cnF { r@#1 } {#2} + { \@tempswatrue } + } +\prg_new_conditional:Npnn \property_if_exist:n #1 { p , T , F, TF } + % #1 property + { + \cs_if_exist:cTF { __property_code_ #1 : } + { + \prg_return_true: + } + { + \prg_return_false: + } + } +\prg_generate_conditional_variant:Nnn \property_if_exist:n {e} {TF} +\cs_new_eq:NN \IfPropertyExistTF \property_if_exist:eTF +\prg_new_conditional:Npnn \property_if_recorded:n #1 { p , T , F, TF } + % #1 label + { + \tl_if_exist:cTF { r@#1 } + { + \prg_return_true: + } + { + \prg_return_false: + } + } +\prg_generate_conditional_variant:Nnn \property_if_recorded:n {e} {TF} +\cs_new_eq:NN \IfLabelExistTF \property_if_recorded:eTF +\prg_new_conditional:Npnn \property_if_recorded:nn #1#2 { p , T , F, TF } + % #1 label #2 property + { + \tl_if_exist:cTF { g__property_label_ \tl_to_str:n {#1} _ \tl_to_str:n {#2} _tl } + { + \prg_return_true: + } + { + \prg_return_false: + } + } +\prg_generate_conditional_variant:Nnn \property_if_recorded:nn {ee} {TF} +\cs_new_eq:NN \IfPropertyRecordedTF \property_if_recorded:eeTF +\cs_new_protected:Npn \property_ref_undefined_warn: + { + \flag_if_raised:nT { l__property_ref_flag } + { + \G@refundefinedtrue + } + } +\cs_new_protected:Npn \property_ref_undefined_warn:n #1 %#1 label + { + \property_if_recorded:nF {#1} + { + \G@refundefinedtrue + \@latex@warning{Reference~`#1'~on~page~\thepage\space undefined}% + } + } +\cs_new_protected:Npn \property_ref_undefined_warn:nn #1#2 %#1 label, #2 property + { + \property_if_recorded:nTF {#1} + { + \property_if_recorded:nnF {#1}{#2} + { + \G@refundefinedtrue + \@latex@warning + { Property~`#2'~undefined~for~reference~`#1'~on~page~\thepage } + } + } + { + \G@refundefinedtrue + \@latex@warning { Reference~`#1'~on~page~\thepage\space undefined }% + } + } +\cs_generate_variant:Nn \property_ref_undefined_warn:nn {ee} +\cs_set_eq:NN \RefUndefinedWarn \property_ref_undefined_warn:ee +\property_new:nnnn { abspage } { shipout } + { 0 } { \int_use:N \g_shipout_readonly_int } +\property_new:nnnn { page } { shipout } { 0 } { \thepage } +\property_new:nnnn { pagenum } { shipout } { 0 } { \the \value { page } } +\property_new:nnnn { label } { now } { ?? } { \@currentlabel } +\property_new:nnnn { title } { now } + { \exp_not:n { \textbf { ?? } } } { \@currentlabelname } +\property_new:nnnn { target } { now } { } { \@currentHref } +\newcommand\@currentHpage{} +\property_new:nnnn { pagetarget } { shipout } { } { \@currentHpage } + +\property_new:nnnn { counter } { now } { } { \@currentcounter } +\property_new:nnnn { xpos } { shipout } { 0} { \int_use:N \tex_lastxpos:D } +\property_new:nnnn { ypos } { shipout } { 0} { \int_use:N \tex_lastypos:D } +\msg_new:nnnn { property } { exists } + { Property~'#1'~ has~ already~ been~ declared. } + { There~ already~ exists~ a~ property~ declaration~ with~ this~ + name.\\ + Please~ use~ a~ different~ name~ for~ your~ property.} + +\msg_new:nnnn { property } { not-declared } + { Property~'#1'~not~declared. } + { + LaTeX~has~been~asked~to~use~property~'#1',~but~this~ + name~has~not~been~declared. + } +\msg_new:nnnn { property } { unknown-setpoint } + { Unknown~keyword~'#2'~for~setting~property~'#1'. } + { + LaTeX~has~been~asked~to~set~the~property~'#1',~but~the~keyword~ + '#2'~is~not~one~of~the~two~known~values:~'now'~or~'shipout'. + } +\ExplSyntaxOff %%% From File: ltmiscen.dtx \message{environments,} \def\@currenvir{document} @@ -11869,6 +12232,7 @@ Type H <return> for immediate help.}% \immediate\closeout\@mainaux \let\@setckpt\@gobbletwo \let\@newl@bel\@testdef + \let\new@label@record\@kernel@new@label@record@testdef \@tempswafalse \makeatletter \@@input\jobname.aux \fi @@ -11919,7 +12283,6 @@ Type H <return> for immediate help.}% \def\reserved@a{#3}\expandafter \ifx \csname #1@#2\endcsname \reserved@a \else \@tempswatrue \fi} \protected\def\protected@file@percent{} - \catcode`\^^A=9 \long\gdef\add@percent@to@temptokena #1\protected@file@percent#2\add@percent@to@temptokena @@ -12028,7 +12391,11 @@ Type H <return> for immediate help.}% \def\endflushright{\endtrivlist} \message{verbatim,} {\catcode`\ =\active% -\gdef\@vobeyspaces{\catcode`\ \active\let \@xobeysp}} +\gdef\@vobeyspaces{\catcode`\ \active\let \@xobeysp\@vobeytabs}} +{\catcode`\^^I=\active +\gdef\@vobeytabs{\catcode`\^^I\active\let^^I\@xobeytab}% +\global\let^^I=\space +} \begingroup \catcode `|=0 \catcode `[= 1 \catcode`]=2 \catcode `\{=12 \catcode `\}=12 \catcode`\\=12 |gdef|@xverbatim#1\end{verbatim}[#1|end[verbatim]] @@ -12062,7 +12429,11 @@ Type H <return> for immediate help.}% \DeclareRobustCommand\verbvisiblespace {\leavevmode{\usefont{OT1}{cmtt}{m}{n}\asciispace}} % xetex/luatex version \fi - +\newbox\@verbvisiblespacebox +\@namedef{verbatim*}{\@verbatim + \@setupverbvisiblespace + \frenchspacing\@vobeyspaces\@sxverbatim} +\expandafter\let\csname endverbatim*\endcsname =\endverbatim \def\@setupverbvisiblespace{% \ifx\verbvisiblespace\asciispace \let\@xobeysp\asciispace @@ -12071,13 +12442,9 @@ Type H <return> for immediate help.}% \setbox\@verbvisiblespacebox\hbox to\wd\z@{\hss\verbvisiblespace\hss}% \def\@xobeysp{\leavevmode\copy\@verbvisiblespacebox}% \fi + \@setupverbvisibletab } - -\newbox\@verbvisiblespacebox -\@namedef{verbatim*}{\@verbatim - \@setupverbvisiblespace - \frenchspacing\@vobeyspaces\@sxverbatim} -\expandafter\let\csname endverbatim*\endcsname =\endverbatim +\def\@setupverbvisibletab{\let\@xobeytab\@xobeysp} \def\@sverb#1{\if\noexpand#1 \expandafter\@sverb\else\@@sverb{#1}\fi} \def\@@sverb#1{% \catcode`#1\active @@ -12086,7 +12453,10 @@ Type H <return> for immediate help.}% \@latex@error{\noexpand\verb illegal in argument}\@ehc}% \aftergroup\verb@balance@group \lowercase{\let~\verb@egroup}% - \ifnum\catcode`\ =\active + \ifnum0% + \ifnum\catcode`\ =\active\else 1\fi + \ifnum\catcode`\^^I=\active\else 1\fi + =0 % \else \@setupverbvisiblespace \@vobeyspaces \fi } \def\@makeother#1{\catcode`#112\relax} @@ -12671,7 +13041,13 @@ Type H <return> for immediate help.}% \long\def\@imakebox[#1][#2]#3{% \@begin@tempboxa\hbox{#3}% \setlength\@tempdima{#1}% support calc - \hb@xt@\@tempdima{\csname bm@#2\endcsname}% + \hb@xt@\@tempdima{% + \expandafter\ifx\csname bm@#2\endcsname\relax + \bm@c + \@latex@warning{Unexpected alignment #2}% + \else + \csname bm@#2\endcsname + \fi}% \@end@tempboxa} \def\@makepicbox(#1,#2){% \@ifnextchar[{\@imakepicbox(#1,#2)}{\@imakepicbox(#1,#2)[]}} @@ -12762,7 +13138,14 @@ Type H <return> for immediate help.}% \@begin@tempboxa\hbox{#3}% \setlength\@tempdima{#1}% \setbox\@tempboxa\hb@xt@\@tempdima - {\kern\fboxsep\csname bm@#2\endcsname\kern\fboxsep}% + {\kern\fboxsep + \expandafter\ifx\csname bm@#2\endcsname\relax + \bm@c + \@latex@warning{Unexpected alignment #2}% + \else + \csname bm@#2\endcsname + \fi + \kern\fboxsep}% \@frameb@x{\kern-\fboxrule}% \@end@tempboxa} \def\@frameb@x#1{% @@ -12818,7 +13201,12 @@ Type H <return> for immediate help.}% \else\@pboxswtrue $\vcenter \fi\fi\fi \@parboxto{\let\hss\vss\let\unhbox\unvbox - \csname bm@#3\endcsname}% + \expandafter\ifx\csname bm@#3\endcsname\relax + \bm@c + \@latex@warning{Unexpected alignment #3}% + \else + \csname bm@#3\endcsname + \fi}% \if@pboxsw \m@th$\fi \@end@tempboxa} \def\@arrayparboxrestore{% @@ -15873,7 +16261,7 @@ Type H <return> for immediate help.}% \ExplSyntaxOff %%% From File: ltfilehook.dtx \providecommand\ltfilehookversion{v1.0o} -\providecommand\ltfilehookdate{2023/04/02} +\providecommand\ltfilehookdate{2023/07/10} \ExplSyntaxOn \tl_new:N \CurrentFile \tl_new:N \CurrentFilePath @@ -16011,7 +16399,6 @@ Type H <return> for immediate help.}% \cs_new_eq:NN \declare@file@substitution \__filehook_subst_add:nn \cs_new_eq:NN \undeclare@file@substitution \__filehook_subst_remove:n \ExplSyntaxOff -\ExplSyntaxOff \def\set@curr@file{% \begingroup \set@curr@file@aux} diff --git a/Master/texmf-dist/tex/latex/base/latexrelease.sty b/Master/texmf-dist/tex/latex/base/latexrelease.sty index cefa0d6f035..035a4bcff57 100644 --- a/Master/texmf-dist/tex/latex/base/latexrelease.sty +++ b/Master/texmf-dist/tex/latex/base/latexrelease.sty @@ -15,6 +15,7 @@ %% ltcmd.dtx (with options: `latexrelease') %% lthooks.dtx (with options: `latexrelease') %% ltcmdhooks.dtx (with options: `latexrelease') +%% ltsockets.dtx (with options: `latexrelease') %% ltalloc.dtx (with options: `latexrelease') %% ltcntrl.dtx (with options: `latexrelease') %% lterror.dtx (with options: `latexrelease') @@ -37,6 +38,7 @@ %% lttextcomp.dtx (with options: `latexrelease') %% ltpageno.dtx (with options: `latexrelease') %% ltxref.dtx (with options: `latexrelease') +%% ltproperties.dtx (with options: `latexrelease') %% ltmiscen.dtx (with options: `latexrelease') %% ltmath.dtx (with options: `latexrelease') %% ltlists.dtx (with options: `latexrelease') @@ -290,7 +292,7 @@ } %%% From File: ltvers.dtx \edef\latexreleaseversion - {2023-06-01} + {2023-11-01} \newif\if@includeinrelease \@includeinreleasefalse \def\IncludeInRelease#1{% @@ -1411,6 +1413,15 @@ of this package available from CTAN} \let\UseName\@undefined \let\ExpandArgs\@undefined \EndIncludeInRelease +\IncludeInRelease{2023/11/01}% + {\IfExplAtLeastTF}{Test for expl3 date}% +\def\IfExplAtLeastTF{\@ifl@t@r\ExplLoaderFileDate} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\IfExplAtLeastTF}{Test for expl3 date}% + +\def\IfExplAtLeastTF{\@ifl@t@r\ExplLoaderFileDate} +\EndIncludeInRelease %%% From File: ltdefns.dtx \IncludeInRelease{2020/10/01}% {\typeout}{Allow "par" in \typeout}% @@ -1986,8 +1997,8 @@ of this package available from CTAN} \EndIncludeInRelease %%% From File: ltcmd.dtx -\def\ltcmdversion{v1.1e} -\def\ltcmddate{2023-05-26} +\def\ltcmdversion{v1.2a} +\def\ltcmddate{2023-08-19} \edef\@latexrelease@catcode@null{\the\catcode`\^^@ } \catcode`\^^@=12 \ExplSyntaxOn @@ -4248,68 +4259,6 @@ of this package available from CTAN} \exp_after:wN #1 \exp_after:wN #2 \exp_after:wN { \if_false: } \fi: } -\cs_new_protected:Npn \__cmd_get_arg_spec_error:N #1 - { - \bool_set_false:N \l__cmd_environment_bool - \tl_set:Nn \l__cmd_fn_tl {#1} - \__cmd_get_arg_spec_error_aux:n { \cs_if_exist:NTF #1 } - } -\cs_new_protected:Npn \__cmd_get_arg_spec_error:n #1 - { - \bool_set_true:N \l__cmd_environment_bool - \str_set:Nx \l__cmd_environment_str {#1} - \__cmd_get_arg_spec_error_aux:n - { \cs_if_exist:cTF { \l__cmd_environment_str } } - } -\cs_new_protected:Npn \__cmd_get_arg_spec_error_aux:n #1 - { - #1 - { - \msg_error:nnx { cmd } { non-xparse } - { \__cmd_environment_or_command: } - } - { - \msg_error:nnx { cmd } { unknown } - { \__cmd_environment_or_command: } - } - } -\cs_new_protected:Npn \__cmd_get_arg_spec:NTF #1#2#3 - { - \__kernel_cmd_if_xparse:NTF #1 - { - \tl_set:Nx \ArgumentSpecification { \tl_item:Nn #1 { 2 } } - #2 - } - {#3} - } -\cs_new_eq:NN \__cmd_chk_if_free_cs:N \__kernel_chk_if_free_cs:N -\cs_gset_eq:NN \__kernel_chk_if_free_cs:N \use_none:n -\tl_new:N \ArgumentSpecification -\cs_new_protected:Npn \__cmd_get_arg_spec:N #1 - { - \__cmd_get_arg_spec:NTF #1 { } - { \__cmd_get_arg_spec_error:N #1 } - } -\cs_new_protected:Npn \__cmd_get_arg_spec:n #1 - { - \exp_args:Nc \__cmd_get_arg_spec:NTF - { environment~ \tl_to_str:n {#1} } - { } - { \__cmd_get_arg_spec_error:n {#1} } - } -\cs_new_protected:Npn \__cmd_show_arg_spec:N #1 - { - \__cmd_get_arg_spec:NTF #1 - { \tl_show:N \ArgumentSpecification } - { \__cmd_get_arg_spec_error:N #1 } - } -\cs_new_protected:Npn \__cmd_show_arg_spec:n #1 - { - \exp_args:Nc \__cmd_get_arg_spec:NTF - { environment~ \tl_to_str:n {#1} } - { \tl_show:N \ArgumentSpecification } - { \__cmd_get_arg_spec_error:n {#1} } - } \cs_new_protected:Npn \__cmd_check_definable:nNT #1 { \tl_trim_spaces_apply:nN {#1} \__cmd_check_definable_aux:nN } \group_begin: @@ -4641,12 +4590,6 @@ of this package available from CTAN} LaTeX~did~not~find~this~argument~and~will~insert~a~default~value~ for~further~processing. } -\msg_new:nnnn { cmd } { non-xparse } - { \str_uppercase:n #1~not~defined~using~xparse. } - { - You~have~asked~for~the~argument~specification~for~the~#1,~ - but~this~was~not~defined~using~xparse. - } \msg_new:nnnn { cmd } { arg-split } { Too~many~'#1'~separators~in~argument. } { @@ -4654,12 +4597,6 @@ of this package available from CTAN} at~each~occurrence~of~the~separator~'#1'~into~#2~parts.~ Too~many~separators~were~found. } -\msg_new:nnnn { cmd } { unknown } - { Unknown~document~#1. } - { - You~have~asked~for~the~argument~specification~for~the~#1,~ - but~it~is~not~defined. - } \msg_new:nnnn { cmd } { verbatim-nl } { Verbatim-like~#1~ended~by~end~of~line. } { @@ -4860,18 +4797,6 @@ of this package available from CTAN} \cs_new_eq:NN \SplitList \__cmd_split_list:nn \cs_new_eq:NN \TrimSpaces \__cmd_trim_spaces:n \cs_new_eq:NN \ProcessList \tl_map_function:nN -\cs_new_protected:Npn \GetDocumentCommandArgSpec #1 - { - \__cmd_check_definable:nNT {#1} \GetDocumentCommandArgSpec - { \__cmd_get_arg_spec:N #1 } - } -\cs_new_eq:NN \GetDocumentEnvironmentArgSpec \__cmd_get_arg_spec:n -\cs_new_protected:Npn \ShowDocumentCommandArgSpec #1 - { - \__cmd_check_definable:nNT {#1} \ShowDocumentCommandArgSpec - { \__cmd_show_arg_spec:N #1 } - } -\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 @@ -4885,7 +4810,7 @@ of this package available from CTAN} %%% From File: lthooks.dtx \def\lthooksversion{v1.1f} -\def\lthooksdate{2023/06/16} +\def\lthooksdate{2023/10/02} \ExplSyntaxOn \NewModuleRelease{2020/10/01}{lthooks} {The~hook~management~system} @@ -8348,6 +8273,198 @@ of this package available from CTAN} \EndModuleRelease \ExplSyntaxOff %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% From File: ltsockets.dtx +\def\ltsocketsversion{0.9a} +\def\ltsocketsdate{2023-08-21} +\ExplSyntaxOn +\NewModuleRelease{2023/11/01}{ltsockets} + {The~socket~management~system} +\bool_new:N \g__socket_debug_bool +\cs_new_eq:NN \__socket_debug:n \use_none:n +\cs_new_eq:NN \__socket_debug_term:n \use_none:n +\cs_new_protected:Npn \socket_debug_on: + { + \bool_gset_true:N \g__socket_debug_bool + \__socket_debug_gset: + } +\cs_new_protected:Npn \socket_debug_off: + { + \bool_gset_false:N \g__socket_debug_bool + \__socket_debug_gset: + } +\cs_new_protected:Npn \__socket_debug_gset: + { + \cs_gset_protected:Npx \__socket_debug:n ##1 + { \bool_if:NT \g__socket_debug_bool {##1} } + \cs_gset_protected:Npx \__socket_debug_term:n ##1 + { \bool_if:NT \g__socket_debug_bool + { \iow_term:x { ^^J [Sockets]~ ==>~ ##1} } } + } +\cs_new_protected:Npn \socket_new:nn #1 #2 { + \str_if_exist:cTF { l__socket_#1_plug_str } + { + \msg_error:nnn { socket } { already-declared } {#1} + } + { + \int_if_zero:nTF \tex_currentgrouplevel:D + { + \str_new:c { l__socket_#1_plug_str } + \seq_new:c { l__socket_#1_plugs_seq } + \int_const:cn { c__socket_#1_args_int } {#2} + \socket_new_plug:nnn {#1} { noop } {} + \int_compare:nNnTF {#2} = 1 + { + \socket_new_plug:nnn {#1} { identity } {##1} + \socket_assign_plug:nn {#1} { identity } + } + { \socket_assign_plug:nn {#1} { noop } } + \__socket_debug_term:n + { Socket~ '#1'~ declared~ with~ #2~ input(s) } + } + { + \msg_error:nn { socket } { not-top-level } + } + } +} +\cs_new_protected:Npn \socket_log:n #1 { + \typeout{ Socket~ #1:} + \str_if_exist:cTF { l__socket_#1_plug_str } + { + \typeout{ \@spaces number~ of~ inputs~ =~ + \int_use:c { c__socket_#1_args_int } } + \typeout{ \@spaces available~plugs~ =~ + \seq_use:cnnn { l__socket_#1_plugs_seq }{,~}{,~}{,~} } + \typeout{ \@spaces current~ plug~ =~ + \str_use:c { l__socket_#1_plug_str } } + \typeout{ \@spaces definition~ =~ + \cs_meaning:c + { __socket_#1_plug_ \str_use:c { l__socket_#1_plug_str } :w } } + \typeout{} + } + { + \typeout { Socket~ is~ not~ declared! } + } +} +\cs_new_protected:Npn \socket_show:n #1 {\socket_log:n {#1} \errmessage{}} +\cs_new_protected:Npn \socket_new_plug:nnn #1#2#3 { + \str_if_exist:cTF { l__socket_#1_plug_str } + { + \cs_if_exist:cTF { __socket_#1_plug_#2:w } + { + \msg_error:nnnn { socket } { plug-already-declared } {#1} {#2} + } + { + \cs_generate_from_arg_count:cNnn + { __socket_#1_plug_#2:w } + \cs_new_protected:Npn + { \int_use:c { c__socket_#1_args_int } } + {#3} + \seq_put_right:cn { l__socket_#1_plugs_seq } {#2} + \__socket_debug_term:n + { Plug~ '#2'~ for~ socket~ '#1'~ declared. } + } + } + { + \msg_error:nnn { socket } { undeclared } {#1} + } +} +\cs_new_protected:Npn \socket_set_plug:nnn #1#2#3 { + \str_if_exist:cTF { l__socket_#1_plug_str } + { + \cs_if_exist:cTF { __socket_#1_plug_#2:w } + { + \cs_generate_from_arg_count:cNnn + { __socket_#1_plug_#2:w } + \cs_set_protected:Npn + { \int_use:c { c__socket_#1_args_int } } + {#3} + \__socket_debug_term:n + { Plug~ '#2'~ for~ socket~ '#1'~ changed. } + } + { + \msg_error:nnnn { socket } { plug-undeclared } {#1} {#2} + } + } + { + \msg_error:nnn { socket } { undeclared } {#1} + } +} +\cs_new_protected:Npn \socket_assign_plug:nn #1 #2 { + \str_if_exist:cTF { l__socket_#1_plug_str } + { + \cs_if_exist:cTF { __socket_#1_plug_#2:w } + { + \__socket_debug_term:n + { Replacing~ plug~ '\str_use:c { l__socket_#1_plug_str }'~ + with~ '#2'~ in~ socket~ '#1'. } + \str_set:cn { l__socket_#1_plug_str } {#2} + } + { + \msg_error:nnnn { socket } { plug-undeclared } {#1} {#2} + } + } + { \msg_error:nnn { socket } { undeclared } {#1} } +} +\cs_new_protected:Npn \socket_use:nw #1 { + \__socket_debug_term:n + { Socket~ '#1'~ containing~ plug~ + '\str_use:c { l__socket_#1_plug_str }'~ used. } + \use:c { __socket_#1_plug_ \str_use:c { l__socket_#1_plug_str } :w } +} +\cs_new_eq:NN \socket_use:n \socket_use:nw % socket with no inputs +\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 + +\msg_new:nnnn { socket } { already-declared } + { Socket~ '#1'~ already~ declared! } + { A~ socket~ can~ only~ be~ declared~ once.~ The~ name~ '#1'~ is~ + already~ taken.~ Use~ \ShowSocket{#1}~ to~ see~ its~ definition. } + +\msg_new:nnnn { socket } { undeclared } + { Socket~ '#1'~ undeclared! } + { You~ tried~ to~ use~ a~ socket~ that~ was~ not~ declared~ before. } + +\msg_new:nnnn { socket } { not-top-level } + { Sockets~ can~ only~ be~ declared~ at~ top-level! } + { It~ is~ not~ allowed~ to~ declare~ sockets~ inside~ a~ + group.~ Move~ the~ declaration~ to~ the~ top-level. } +\msg_new:nnnn { socket } { plug-already-declared } + { Plug~ '#2'~ for~ socket~ '#1'~ already~ declared! } + { You~ can't~ change~ an~ existing~ plug~ with~ \NewSocketPlug~ and~ it~ + is~ normally~ not~ sensible~ to~ do~ so.~ Use~ the~ L3~ programming~ + layer~ function~ \socket_set_plug:nnn~ if~ you~ really~ have~ to. } + +\msg_new:nnnn { socket } { plug-undeclared } + { Plug~ '#2'~ for~ socket~ '#1'~ undeclared! } + { The~ plug~ name~ is~ unknown.~ Is~ the~ name~ misspelled~ or~ did~ you~ + intend~ to~ assign~ it~ to~ a~ different~ socket? } +\prop_gput:Nnn \g_msg_module_type_prop { socket } { LaTeX } +\cs_new_eq:NN \NewSocket \socket_new:nn +\cs_new_eq:NN \ShowSocket \socket_show:n +\cs_new_eq:NN \LogSocket \socket_log:n +\cs_new_eq:NN \NewSocketPlug \socket_new_plug:nnn +\cs_new_eq:NN \AssignSocketPlug \socket_assign_plug:nn +\cs_new_eq:NN \UseSocket \socket_use:nw +\cs_new_eq:NN \DebugSocketsOn \socket_debug_on: +\cs_new_eq:NN \DebugSocketsOff \socket_debug_off: +\IncludeInRelease{0000/00/00}{ltsockets} + {The~socket~management~(undo)}% + +\let \NewSocket \@undefined +\let \ShowSocket \@undefined +\let \LogSocket \@undefined + +\let \NewSocketPlug \@undefined +\let \AssignSocketPlug \@undefined +\let \UseSocket \@undefined + +\let \DebugSocketsOn \@undefined +\let \DebugSocketsOff \@undefined + +\EndModuleRelease +\ExplSyntaxOff +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% From File: ltalloc.dtx %%% From File: ltcntrl.dtx %%% From File: lterror.dtx @@ -8922,6 +9039,27 @@ of this package available from CTAN} \@esphack \fi} \EndIncludeInRelease +\IncludeInRelease{2023/11/01}% + {\tilde}{Protected tilde}% +\protected\edef~{% + \noexpand\ifincsname\noexpand\expandafter\string~% + \noexpand\else + \noexpand\expandafter\noexpand\nobreakspace + \noexpand\fi +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\tilde}{Protected tilde}% +\def~{\nobreakspace{}} +\EndIncludeInRelease +\IncludeInRelease{2023/11/01}% + {\@xobeytab}{Obeyed tabs}% +\let\@xobeytab\@xobeysp +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@xobeytab}{Obeyed tabs}% +\let\@xobeytab\@undefined +\EndIncludeInRelease \IncludeInRelease{2015/01/01}% {\@}{Space after \@}% \def\@{\spacefactor\@m{}}% @@ -9373,7 +9511,7 @@ of this package available from CTAN} \reserved@a} \EndIncludeInRelease -\IncludeInRelease{2023/05/01}% +\IncludeInRelease{2023/06/01}% {\IfFileExists@}{IfFileExists} \long\def \IfFileExists@#1#2#3{% \edef\@filef@und{\IfFileExists@@{#1}}% @@ -13122,7 +13260,351 @@ of this package available from CTAN} \let\Ref\@undefined \EndIncludeInRelease +%% File: ltproperties.dtx +\def\ltpropertiesversion{1.0c} +\def\ltpropertiesdate{2023-10-15} + + + +\ExplSyntaxOn +\NewModuleRelease{2023/11/01}{ltproperties} + {Cross-referencing~properties} +\cs_new_protected:Npn \property_new:nnnn #1#2#3#4 + { + \cs_if_free:cTF { __property_code_ #1 : } + { + \exp_args:Nx \__property_gset:nnnn { \tl_to_str:n {#1} } + {#2} {#3} {#4} + } + { + \msg_error:nn { property }{ exists }{#1} + } + } +\cs_new_protected:Npn \property_gset:nnnn #1#2#3#4 + { + \__property_gset:ennn { \tl_to_str:n {#1} } + {#2} {#3} {#4} + } +\cs_new_protected:Npn \__property_gset:nnnn #1#2#3#4 + { + \cs_gset:cpn { __property_code_ #1 : } {#4} + \tl_gclear_new:c { g__property_default_ #1 _tl } + \tl_gset:cn { g__property_default_ #1 _tl } {#3} + \bool_if_exist:cF { g__property_shipout_ #1 _tl } + { \bool_new:c { g__property_shipout_ #1 _tl } } + \str_case:nnF {#2} + { + { now } { { \bool_gset_false:c { g__property_shipout_ #1 _tl } } } + { shipout } + { \bool_gset_true:c { g__property_shipout_ #1 _tl } } + } + { \msg_error:nnnn { property } { unknown-setpoint } {#1} {#2} } + } +\cs_generate_variant:Nn \__property_gset:nnnn {ennn} +\cs_new_protected:Npn \NewProperty #1#2#3#4 + { + \protected@edef\reserved@a{#1} + \exp_args:No \property_new:nnnn {\reserved@a} {#2}{#3}{#4} + } +\cs_new_protected:Npn \SetProperty #1#2#3#4 + { + \protected@edef\reserved@a{#1} + \exp_args:No \property_gset:nnnn {\reserved@a} {#2}{#3}{#4} + } +\cs_new_protected:Npn \property_record:nN #1#2 + { \property_record:nV {#1} #2 } +\cs_new_protected:Npn \property_record:nn #1#2 + { \__property_record:en { \tl_to_str:n {#1} } {#2} } +\cs_generate_variant:Nn \property_record:nn { nV , ee, oo } +\cs_new_protected:Npn \__property_record:nn #1#2 + { + \legacy_if:nT { @filesw } + { + \iow_shipout_x:Nx \@auxout + { + \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 } +\cs_new:Npn \__property_record_value:n #1 + { \__property_record_value_aux:e { \tl_to_str:n {#1} } } +\cs_new:Npn \__property_record_value_aux:n #1 + { + \cs_if_exist:cTF { __property_code_ #1 : } + { + {#1} + { + \bool_if:cTF { g__property_shipout_ #1 _tl } + { \exp_not:c } + { \use:c } + { __property_code_ #1 : } + } + } + { \msg_expandable_error:nnn { property } { not-declared } {#1} } + } +\cs_generate_variant:Nn \__property_record_value_aux:n { e } +\NewDocumentCommand\RecordProperties { m m } + { + \@bsphack + \protected@edef\reserved@a{#1} + \protected@edef\reserved@b{#2} + \property_record:oo {\reserved@a}{\reserved@b} + \@esphack + } +\flag_new:n { l__property_ref_flag } +\cs_new:Npn \property_ref:nn #1#2 + { + \__property_ref:een + { \tl_to_str:n {#1} } + { \tl_to_str:n {#2} } + { \tl_use:c { g__property_default_ #2 _tl } } + } +\cs_generate_variant:Nn \property_ref:nn {ee} +\cs_new:Npn \property_ref:nnn #1#2#3 + { + \__property_ref:een + { \tl_to_str:n {#1} } + { \tl_to_str:n {#2} } + {#3} + } +\cs_new:Npn \__property_ref:nnn #1#2#3 + { + \tl_if_exist:cTF { g__property_label_ #1 _ #2 _tl } + { \tl_use:c { g__property_label_ #1 _ #2 _tl } } + { + \flag_if_raised:nF + { l__property_ref_flag } { \flag_raise:n { l__property_ref_flag } } + \tl_if_exist:cTF { g__property_default_ #2 _tl } + { #3 } + { \msg_expandable_error:nnn { property } { not-declared } {#2} } + } + } +\cs_generate_variant:Nn \__property_ref:nnn { ee } +\cs_generate_variant:Nn \property_ref:nnn {een} +\NewExpandableDocumentCommand \RefProperty { o m m } + { + \IfNoValueTF {#1} + { + \property_ref:ee {#2}{#3} + } + { + \property_ref:een {#2}{#3}{#1} + } + } +\cs_new_protected:Npn \new@label@record #1#2 + { + \tl_if_exist:cTF { r@#1 } + { + \gdef \@multiplelabels + { \@latex@warning@no@line { There~were~multiply-defined~labels } } + \@latex@warning@no@line { Label~`#1'~multiply~defined } + } + { + \tl_new:c { r@#1 } + \tl_gset:cn { r@#1 }{#2} + } + \__property_data:nnn {#1} #2 { \q_recursion_tail } { ? } \q_recursion_stop + } +\cs_new_protected:Npn \__property_data:nnn #1#2#3 + { + \quark_if_recursion_tail_stop:n {#2} + \tl_gclear_new:c { g__property_label_ \tl_to_str:n {#1} _ \tl_to_str:n {#2} _tl } + \tl_gset:cn { g__property_label_ \tl_to_str:n {#1} _ \tl_to_str:n {#2} _tl } {#3} + \__property_data:nnn {#1} + } +\cs_new_protected:Npn \@kernel@new@label@record@testdef #1 #2 + { + \tl_if_eq:cnF { r@#1 } {#2} + { \@tempswatrue } + } +\prg_new_conditional:Npnn \property_if_exist:n #1 { p , T , F, TF } + % #1 property + { + \cs_if_exist:cTF { __property_code_ #1 : } + { + \prg_return_true: + } + { + \prg_return_false: + } + } +\prg_generate_conditional_variant:Nnn \property_if_exist:n {e} {TF} +\cs_new_eq:NN \IfPropertyExistTF \property_if_exist:eTF +\prg_new_conditional:Npnn \property_if_recorded:n #1 { p , T , F, TF } + % #1 label + { + \tl_if_exist:cTF { r@#1 } + { + \prg_return_true: + } + { + \prg_return_false: + } + } +\prg_generate_conditional_variant:Nnn \property_if_recorded:n {e} {TF} +\cs_new_eq:NN \IfLabelExistTF \property_if_recorded:eTF +\prg_new_conditional:Npnn \property_if_recorded:nn #1#2 { p , T , F, TF } + % #1 label #2 property + { + \tl_if_exist:cTF { g__property_label_ \tl_to_str:n {#1} _ \tl_to_str:n {#2} _tl } + { + \prg_return_true: + } + { + \prg_return_false: + } + } +\prg_generate_conditional_variant:Nnn \property_if_recorded:nn {ee} {TF} +\cs_new_eq:NN \IfPropertyRecordedTF \property_if_recorded:eeTF +\cs_new_protected:Npn \property_ref_undefined_warn: + { + \flag_if_raised:nT { l__property_ref_flag } + { + \G@refundefinedtrue + } + } +\cs_new_protected:Npn \property_ref_undefined_warn:n #1 %#1 label + { + \property_if_recorded:nF {#1} + { + \G@refundefinedtrue + \@latex@warning{Reference~`#1'~on~page~\thepage\space undefined}% + } + } +\cs_new_protected:Npn \property_ref_undefined_warn:nn #1#2 %#1 label, #2 property + { + \property_if_recorded:nTF {#1} + { + \property_if_recorded:nnF {#1}{#2} + { + \G@refundefinedtrue + \@latex@warning + { Property~`#2'~undefined~for~reference~`#1'~on~page~\thepage } + } + } + { + \G@refundefinedtrue + \@latex@warning { Reference~`#1'~on~page~\thepage\space undefined }% + } + } +\cs_generate_variant:Nn \property_ref_undefined_warn:nn {ee} +\cs_set_eq:NN \RefUndefinedWarn \property_ref_undefined_warn:ee +\property_new:nnnn { abspage } { shipout } + { 0 } { \int_use:N \g_shipout_readonly_int } +\property_new:nnnn { page } { shipout } { 0 } { \thepage } +\property_new:nnnn { pagenum } { shipout } { 0 } { \the \value { page } } +\property_new:nnnn { label } { now } { ?? } { \@currentlabel } +\property_new:nnnn { title } { now } + { \exp_not:n { \textbf { ?? } } } { \@currentlabelname } +\property_new:nnnn { target } { now } { } { \@currentHref } +\newcommand\@currentHpage{} +\property_new:nnnn { pagetarget } { shipout } { } { \@currentHpage } + +\property_new:nnnn { counter } { now } { } { \@currentcounter } +\property_new:nnnn { xpos } { shipout } { 0} { \int_use:N \tex_lastxpos:D } +\property_new:nnnn { ypos } { shipout } { 0} { \int_use:N \tex_lastypos:D } +\msg_new:nnnn { property } { exists } + { Property~'#1'~ has~ already~ been~ declared. } + { There~ already~ exists~ a~ property~ declaration~ with~ this~ + name.\\ + Please~ use~ a~ different~ name~ for~ your~ property.} + +\msg_new:nnnn { property } { not-declared } + { Property~'#1'~not~declared. } + { + LaTeX~has~been~asked~to~use~property~'#1',~but~this~ + name~has~not~been~declared. + } +\msg_new:nnnn { property } { unknown-setpoint } + { Unknown~keyword~'#2'~for~setting~property~'#1'. } + { + LaTeX~has~been~asked~to~set~the~property~'#1',~but~the~keyword~ + '#2'~is~not~one~of~the~two~known~values:~'now'~or~'shipout'. + } +\IncludeInRelease{0000/00/00}{ltproperties} + {cross-referencing~properties~(undo)}% + +\let \NewProperty \@undefined +\let \SetProperty \@undefined + +\let \RecordProperties \@undefined +\let \RefProperty \@undefined +\let \RefUndefinedWarn \@undefined + +\let \IfPropertyExistTF \@undefined +\let \IfLabelExistTF \@undefined +\let \IfPropertyRecordedTF \@undefined + +\let\new@label@record \@undefined +\let\@kernel@new@label@record@testdef\@undefined +\EndModuleRelease +\ExplSyntaxOff %%% From File: ltmiscen.dtx +\IncludeInRelease{2023/11/01}% + {\enddocument}{check property labels}% +\def\enddocument{% + \@kernel@before@enddocument + \UseOneTimeHook{enddocument}% + \@kernel@after@enddocument + \@checkend{document}% + \clearpage + \UseOneTimeHook{enddocument/afterlastpage}% + \@kernel@after@enddocument@afterlastpage + \begingroup + \if@filesw + \immediate\closeout\@mainaux + \let\@setckpt\@gobbletwo + \let\@newl@bel\@testdef + \let\new@label@record\@kernel@new@label@record@testdef + \@tempswafalse + \makeatletter \@@input\jobname.aux + \fi + \UseOneTimeHook{enddocument/afteraux}% + \UseOneTimeHook{enddocument/info}% + \endgroup + \UseOneTimeHook{enddocument/end}% + \deadcycles\z@\@@end} +\NewHook{enddocument} +\NewHook{enddocument/afterlastpage} +\NewHook{enddocument/afteraux} +\NewHook{enddocument/info} +\NewHook{enddocument/end} +\AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist} +\AddToHook{enddocument/info}[kernel/warnings]{\@enddocument@kernel@warnings} +\AddToHook{enddocument/info}[kernel/release]{% + \let\show@release@info\wlog + \show@release@info{ ***********}% + \the\LaTeXReleaseInfo + \show@release@info{ ***********}} + +\DeclareHookRule{enddocument/info}{kernel/release}{before}{kernel/filelist} +\DeclareHookRule{enddocument/info}{kernel/filelist}{before}{kernel/warnings} +\def\@enddocument@kernel@warnings{% + \ifdim \font@submax >\fontsubfuzz\relax + \@font@warning{Size substitutions with differences\MessageBreak + up to \font@submax\space have occurred.\@gobbletwo}% + \fi + \@defaultsubs + \@refundefined + \if@filesw + \ifx \@multiplelabels \relax + \if@tempswa + \@latex@warning@no@line{Label(s) may have changed. + Rerun to get cross-references right}% + \fi + \else + \@multiplelabels + \fi + \ifx \@extra@page@added \relax + \@latex@warning@no@line{Temporary extra page added at the end. + Rerun to get it removed}% + \fi + \fi +} +\EndIncludeInRelease \IncludeInRelease{2020/10/01}% {\enddocument}{Use Hooks}% \def\enddocument{% @@ -13236,7 +13718,6 @@ of this package available from CTAN} \IncludeInRelease{2018/12/01}% {\protected@file@percent}{Mask line endings}% \protected\def\protected@file@percent{} - \catcode`\^^A=9 \long\gdef\add@percent@to@temptokena #1\protected@file@percent#2\add@percent@to@temptokena @@ -13454,6 +13935,21 @@ of this package available from CTAN} \kernel@make@fragile\raggedleft \EndIncludeInRelease +\IncludeInRelease{2023/11/01}% + {\@vobeytabs}{Obeyed tabs}% +{\catcode`\ =\active% +\gdef\@vobeyspaces{\catcode`\ \active\let \@xobeysp\@vobeytabs}} +{\catcode`\^^I=\active +\gdef\@vobeytabs{\catcode`\^^I\active\let^^I\@xobeytab}% +\global\let^^I=\space +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@vobeytabs}{Obeyed tabs}% +{\catcode`\ =\active% +\gdef\@vobeyspaces{\catcode`\ \active\let \@xobeysp}} +\let\@vobeytabs\@undefined +\EndIncludeInRelease \IncludeInRelease{2017-04-15}{\@verbatim}% {Disable hyphenation in verbatim}% \def\@verbatim{\trivlist \item\relax @@ -13505,17 +14001,6 @@ of this package available from CTAN} \DeclareRobustCommand\verbvisiblespace {\leavevmode{\usefont{OT1}{cmtt}{m}{n}\asciispace}} % xetex/luatex version \fi - -\def\@setupverbvisiblespace{% - \ifx\verbvisiblespace\asciispace - \let\@xobeysp\asciispace - \else - \setbox\z@\hbox{x}% - \setbox\@verbvisiblespacebox\hbox to\wd\z@{\hss\verbvisiblespace\hss}% - \def\@xobeysp{\leavevmode\copy\@verbvisiblespacebox}% - \fi -} - \newbox\@verbvisiblespacebox \@namedef{verbatim*}{\@verbatim \@setupverbvisiblespace @@ -13532,9 +14017,62 @@ of this package available from CTAN} \let\@setupverbvisiblespace\@undefined \let\@verbvisiblespacebox \@undefined \EndIncludeInRelease +\IncludeInRelease{2023/11/01}% + {\@setupverbvisiblespace}{Setup visible tab for \verb}% +\def\@setupverbvisiblespace{% + \ifx\verbvisiblespace\asciispace + \let\@xobeysp\asciispace + \else + \setbox\z@\hbox{x}% + \setbox\@verbvisiblespacebox\hbox to\wd\z@{\hss\verbvisiblespace\hss}% + \def\@xobeysp{\leavevmode\copy\@verbvisiblespacebox}% + \fi + \@setupverbvisibletab +} +\EndIncludeInRelease +\IncludeInRelease{2018/12/01}% + {\@setupverbvisiblespace}{Setup visible space for \verb}% +\def\@setupverbvisiblespace{% + \ifx\verbvisiblespace\asciispace + \let\@xobeysp\asciispace + \else + \setbox\z@\hbox{x}% + \setbox\@verbvisiblespacebox\hbox to\wd\z@{\hss\verbvisiblespace\hss}% + \def\@xobeysp{\leavevmode\copy\@verbvisiblespacebox}% + \fi +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@setupverbvisiblespace}{Setup visible space for \verb}% +\let\@setupverbvisiblespace\@undefined +\EndIncludeInRelease +\IncludeInRelease{2023/11/01}% + {\@setupverbvisibletab}{Setup visible tab for \verb}% +\def\@setupverbvisibletab{\let\@xobeytab\@xobeysp} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@setupverbvisibletab}{Setup visible tab for \verb}% +\let\@setupverbvisibletab\@undefined +\EndIncludeInRelease +\IncludeInRelease{2023/11/01}% + {\@sverb}{Support visible tabs}% +\def\@sverb#1{\if\noexpand#1 \expandafter\@sverb\else\@@sverb{#1}\fi} +\def\@@sverb#1{% + \catcode`#1\active + \lccode`\~`#1% + \gdef\verb@balance@group{\verb@egroup + \@latex@error{\noexpand\verb illegal in argument}\@ehc}% + \aftergroup\verb@balance@group + \lowercase{\let~\verb@egroup}% + \ifnum0% + \ifnum\catcode`\ =\active\else 1\fi + \ifnum\catcode`\^^I=\active\else 1\fi + =0 % + \else \@setupverbvisiblespace \@vobeyspaces \fi +} +\EndIncludeInRelease \IncludeInRelease{2020/10/01}% {\@sverb}{Drop spaces before \verb delimiter}% -\def\@sverb#1{\if\noexpand#1 \expandafter\@sverb\else\@@sverb{#1}\fi} \def\@@sverb#1{% \catcode`#1\active \lccode`\~`#1% @@ -13806,6 +14344,28 @@ of this package available from CTAN} {\@ifnextchar[\@makebox\mbox}}% \expandafter\let\csname makebox \endcsname\@undefined \EndIncludeInRelease +\IncludeInRelease{2023/11/01}% + {\@imakebox}{Unknown alignment warning}% +\long\def\@imakebox[#1][#2]#3{% + \@begin@tempboxa\hbox{#3}% + \setlength\@tempdima{#1}% support calc + \hb@xt@\@tempdima{% + \expandafter\ifx\csname bm@#2\endcsname\relax + \bm@c + \@latex@warning{Unexpected alignment #2}% + \else + \csname bm@#2\endcsname + \fi}% + \@end@tempboxa} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@imakebox}{Unknown alignment warning}% +\long\def\@imakebox[#1][#2]#3{% + \@begin@tempboxa\hbox{#3}% + \setlength\@tempdima{#1}% support calc + \hb@xt@\@tempdima{\csname bm@#2\endcsname}% + \@end@tempboxa} +\EndIncludeInRelease \IncludeInRelease{2020/10/01}% {\@imakepicbox}{default units}% \long\def\@imakepicbox(#1,#2)[#3]#4{% @@ -13890,6 +14450,35 @@ of this package available from CTAN} \@framepicbox{\@ifnextchar[\@framebox\fbox}}% \expandafter\let\csname framebox \endcsname\@undefined \EndIncludeInRelease +\IncludeInRelease{2023/11/01}% + {\@iframebox}{Unknown alignment warning}% +\long\def\@iframebox[#1][#2]#3{% + \leavevmode + \@begin@tempboxa\hbox{#3}% + \setlength\@tempdima{#1}% + \setbox\@tempboxa\hb@xt@\@tempdima + {\kern\fboxsep + \expandafter\ifx\csname bm@#2\endcsname\relax + \bm@c + \@latex@warning{Unexpected alignment #2}% + \else + \csname bm@#2\endcsname + \fi + \kern\fboxsep}% + \@frameb@x{\kern-\fboxrule}% + \@end@tempboxa} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@iframebox}{Unknown alignment warning}% +\long\def\@iframebox[#1][#2]#3{% + \leavevmode + \@begin@tempboxa\hbox{#3}% + \setlength\@tempdima{#1}% + \setbox\@tempboxa\hb@xt@\@tempdima + {\kern\fboxsep\csname bm@#2\endcsname\kern\fboxsep}% + \@frameb@x{\kern-\fboxrule}% + \@end@tempboxa} +\EndIncludeInRelease \IncludeInRelease{2015/01/01}% {\parbox}{Make \parbox robust}% \DeclareRobustCommand\parbox{% @@ -13905,6 +14494,53 @@ of this package available from CTAN} {\@iiiparbox c\relax[s]}}% \expandafter\let\csname parbox \endcsname\@undefined \EndIncludeInRelease +\IncludeInRelease{2023/11/01}% + {\@iiiparbox}{Unknown alignment warning}% +\long\def\@iiiparbox#1#2[#3]#4#5{% + \leavevmode + \@pboxswfalse + \setlength\@tempdima{#4}% + \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}% + \ifx\relax#2\else + \setlength\@tempdimb{#2}% + \edef\@parboxto{to\the\@tempdimb}% + \fi + \if#1b\vbox + \else\if #1t\vtop + \else\ifmmode\vcenter + \else\@pboxswtrue $\vcenter + \fi\fi\fi + \@parboxto{\let\hss\vss\let\unhbox\unvbox + \expandafter\ifx\csname bm@#3\endcsname\relax + \bm@c + \@latex@warning{Unexpected alignment #3}% + \else + \csname bm@#3\endcsname + \fi}% + \if@pboxsw \m@th$\fi + \@end@tempboxa} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@iiiparbox}{Unknown alignment warning}% +\long\def\@iiiparbox#1#2[#3]#4#5{% + \leavevmode + \@pboxswfalse + \setlength\@tempdima{#4}% + \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}% + \ifx\relax#2\else + \setlength\@tempdimb{#2}% + \edef\@parboxto{to\the\@tempdimb}% + \fi + \if#1b\vbox + \else\if #1t\vtop + \else\ifmmode\vcenter + \else\@pboxswtrue $\vcenter + \fi\fi\fi + \@parboxto{\let\hss\vss\let\unhbox\unvbox + \csname bm@#3\endcsname}% + \if@pboxsw \m@th$\fi + \@end@tempboxa} +\EndIncludeInRelease \IncludeInRelease{2017-04-15}% {\normallineskiplimit} {reset \lineskiplimit}% @@ -16620,7 +17256,7 @@ of this package available from CTAN} \EndIncludeInRelease %%% From File: ltfilehook.dtx \providecommand\ltfilehookversion{v1.0o} -\providecommand\ltfilehookdate{2023/04/02} +\providecommand\ltfilehookdate{2023/07/10} \IncludeInRelease{2020/10/01}% {\CurrentFile}{Hook management file}% \ExplSyntaxOn diff --git a/Master/texmf-dist/tex/latex/base/ltluatex.lua b/Master/texmf-dist/tex/latex/base/ltluatex.lua index 5573fc75636..45bd9dff75b 100644 --- a/Master/texmf-dist/tex/latex/base/ltluatex.lua +++ b/Master/texmf-dist/tex/latex/base/ltluatex.lua @@ -230,7 +230,11 @@ local luafunction_count_name = luafunction_count_name or "e@alloc@luafunction@count" local function new_luafunction(name) tex_setcount("global", luafunction_count_name, - tex_count[luafunction_count_name] + 1) + math.max( + #(lua.get_functions_table()), + tex_count[luafunction_count_name]) + + 1) + lua.get_functions_table()[tex_count[luafunction_count_name]] = false if tex_count[luafunction_count_name] > 65534 then luatexbase_error("No room for a new luafunction register") end @@ -758,7 +762,7 @@ end luatexbase.uninstall = uninstall create_callback('pre_mlist_to_hlist_filter', 'list') create_callback('mlist_to_hlist', 'exclusive', node.mlist_to_hlist) -create_callback('post_mlist_to_hlist_filter', 'list') +create_callback('post_mlist_to_hlist_filter', 'reverselist') function shared_callbacks.mlist_to_hlist.handler(head, display_type, need_penalties) local current = call_callback("pre_mlist_to_hlist_filter", head, display_type, need_penalties) if current == false then diff --git a/Master/texmf-dist/tex/latex/base/ltluatex.tex b/Master/texmf-dist/tex/latex/base/ltluatex.tex index ddef389f103..c42a75e40b1 100644 --- a/Master/texmf-dist/tex/latex/base/ltluatex.tex +++ b/Master/texmf-dist/tex/latex/base/ltluatex.tex @@ -47,7 +47,7 @@ #1#2[#3]{\endgroup\immediate\write-1{File: #1 #3}} \fi \ProvidesFile{ltluatex.tex}% -[2023/01/19 v1.2b +[2023/08/03 v1.2c LuaTeX support for plain TeX (core) ] \edef\etatcatcode{\the\catcode`\@} diff --git a/Master/texmf-dist/tex/latex/base/source2edoc.cls b/Master/texmf-dist/tex/latex/base/source2edoc.cls index f0f1479cac5..5f731af7ae8 100644 --- a/Master/texmf-dist/tex/latex/base/source2edoc.cls +++ b/Master/texmf-dist/tex/latex/base/source2edoc.cls @@ -30,7 +30,7 @@ \seq_if_empty:NF \g__codedoc_nested_names_seq { % This is a crude change: we grab the first name - \__codedoc_get_hyper_target:xN + \__codedoc_get_hyper_target:eN { \seq_item:Nn \g__codedoc_nested_names_seq { 1 } } \l__codedoc_tmpa_tl % ... and check if it has a reference diff --git a/Master/texmf-dist/tex/latex/base/structuredlog.sty b/Master/texmf-dist/tex/latex/base/structuredlog.sty index cd77c7b8d2c..a5392defc98 100644 --- a/Master/texmf-dist/tex/latex/base/structuredlog.sty +++ b/Master/texmf-dist/tex/latex/base/structuredlog.sty @@ -43,7 +43,7 @@ %% extension .ins) which are part of the distribution. %%% From File: ltfilehook.dtx \providecommand\ltfilehookversion{v1.0o} -\providecommand\ltfilehookdate{2023/04/02} +\providecommand\ltfilehookdate{2023/07/10} \ProvidesExplPackage {structuredlog}{\ltfilehookdate}{\ltfilehookversion} {Structuring the TeX transcript file} diff --git a/Master/texmf-dist/tex/latex/firstaid/filehook-ltx.sty b/Master/texmf-dist/tex/latex/firstaid/filehook-ltx.sty index 2415a38f1c8..ffff6eb4d99 100644 --- a/Master/texmf-dist/tex/latex/firstaid/filehook-ltx.sty +++ b/Master/texmf-dist/tex/latex/firstaid/filehook-ltx.sty @@ -11,7 +11,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 2020-2021 +%% Copyright (C) 2020-2023 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% diff --git a/Master/texmf-dist/tex/latex/firstaid/latex2e-first-aid-for-external-files.ltx b/Master/texmf-dist/tex/latex/firstaid/latex2e-first-aid-for-external-files.ltx index df4b77ed714..d782bcd647e 100644 --- a/Master/texmf-dist/tex/latex/firstaid/latex2e-first-aid-for-external-files.ltx +++ b/Master/texmf-dist/tex/latex/firstaid/latex2e-first-aid-for-external-files.ltx @@ -11,7 +11,7 @@ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 2020-2021 +%% Copyright (C) 2020-2023 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -34,8 +34,8 @@ %% %% The LaTeX Project and any individual authors listed elsewhere %% in this file. -\def\LaTeXFirstAidDate{2023/05/20} -\def\LaTeXFirstAidVersion{v1.0z} +\def\LaTeXFirstAidDate{2023/09/20} +\def\LaTeXFirstAidVersion{v1.1b} \ProvidesFile{latex2e-first-aid-for-external-files.ltx} [\LaTeXFirstAidDate\space \LaTeXFirstAidVersion\space LaTeX kernel fixes to external files and packages] @@ -167,19 +167,8 @@ \ngermanTeX }% } -\AddToHook{file/memoir.cls/before}[firstaid]{% - \expandafter\def\expandafter\@tempa\string\dimen{}% - \edef\kernel@stockheight{\expandafter\@tempa\meaning\stockheight}% - \edef\kernel@stockwidth{\expandafter\@tempa\meaning\stockwidth}% - \let\stockheight\@undefined - \let\stockwidth\@undefined -} -\AddToHook{file/memoir.cls/after}[firstaid]{% - \dimen\kernel@stockheight=\stockheight - \dimen\kernel@stockwidth=\stockwidth - \dimendef\stockheight=\kernel@stockheight - \dimendef\stockwidth=\kernel@stockwidth -} +\AddToHook{file/underscore.sty/after}[firstaid]{% + \FirstAidNeededT{underscore}{sty}{2006/09/13}{\RequirePackage{underscore-ltx}}} \endinput %% %% End of file `latex2e-first-aid-for-external-files.ltx'. diff --git a/Master/texmf-dist/tex/latex/firstaid/everysel-ltx.sty b/Master/texmf-dist/tex/latex/firstaid/underscore-ltx.sty index c7e7e6e06ca..3a0df981742 100644 --- a/Master/texmf-dist/tex/latex/firstaid/everysel-ltx.sty +++ b/Master/texmf-dist/tex/latex/firstaid/underscore-ltx.sty @@ -1,17 +1,17 @@ %% -%% This is file `everysel-ltx.sty', +%% This is file `underscore-ltx.sty', %% generated with the docstrip utility. %% %% The original source files were: %% -%% latex2e-first-aid-for-external-files.dtx (with options: `everysel-ltx') +%% latex2e-first-aid-for-external-files.dtx (with options: `underscore-ltx') %% %% The source is maintained by the LaTeX Project team and bug %% reports for it can be opened at https://latex-project.org/bugs/ %% (but please observe conditions on bug reports sent to that address!) %% %% -%% Copyright (C) 2020-2021 +%% Copyright (C) 2020-2023 %% The LaTeX Project and any individual authors listed elsewhere %% in this file. %% @@ -34,13 +34,23 @@ %% %% The LaTeX Project and any individual authors listed elsewhere %% in this file. -\ProvidesPackage{everysel-ltx} - [2020/12/04 v1.0a - Emulation of the original everysel^^Jpackage with kernel methods] -\newcommand*{\EverySelectfont}[1] - {\AddToHook{selectfont}{#1}} -\newcommand*{\AtNextSelectfont}[1] - {\AddToHookNext{selectfont}{#1}} +\ProvidesPackage{underscore-ltx}[2023/09/20 LaTeX firstaid to make underscore protected ] +\begingroup + \catcode`\_=\active + \protected\gdef _{% + \ifincsname % + \string_% + \else + \ifx\protect\@typeset@protect + \ifmmode \sb \else \BreakableUnderscore \fi + \else + \ifx\protect\@unexpandable@protect \noexpand_% + \else \protect_% + \fi\fi + \fi + } + \global\let\ActiveUnderscore=_ +\endgroup \endinput %% -%% End of file `everysel-ltx.sty'. +%% End of file `underscore-ltx.sty'. diff --git a/Master/texmf-dist/tex/latex/latex-lab/bib-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/bib-latex-lab-testphase.ltx index 1b8ca3cb7ad..b15043fd884 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/bib-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/bib-latex-lab-testphase.ltx @@ -33,8 +33,11 @@ %% %% %% File: latex-lab-bib.dtx (C) Copyright 2023 LaTeX Project +\def\ltlabbibdate{2023-07-20} +\def\ltlabbibversion{0.81a} \ProvidesFile{bib-latex-lab-testphase.ltx} - [2023-05-18 v0.8 code related to the tagging of bib and citations] + [\ltlabbibdate\space v\ltlabbibversion\space + latex-lab wrapper bib] \RequirePackage{latex-lab-testphase-bib} diff --git a/Master/texmf-dist/tex/latex/latex-lab/block-tagging-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/block-latex-lab-testphase.ltx index 80eb00b8567..98dd43bb43d 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/block-tagging-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/block-latex-lab-testphase.ltx @@ -1,10 +1,10 @@ %% -%% This is file `block-tagging-latex-lab-testphase.ltx', +%% This is file `block-latex-lab-testphase.ltx', %% generated with the docstrip utility. %% %% The original source files were: %% -%% latex-lab-block-tagging.dtx (with options: `latex-lab') +%% latex-lab-block.dtx (with options: `latex-lab') %% %% This is a generated file. %% @@ -32,17 +32,15 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-block-tagging.dtx (C) Copyright 2021-2023 LaTeX Project - -\def\ltblocksversion{v0.8d} -\def\ltblocksdate{2023/06/07} - -\ProvidesFile{block-tagging-latex-lab-testphase.ltx} - [\ltblocksdate\space \ltblocksversion\space +%% File: latex-lab-block.dtx (C) Copyright 2021-2023 LaTeX Project +\def\ltlabblockdate{2023-09-01} +\def\ltlabblockversion{0.8h} +\ProvidesFile{block-latex-lab-testphase.ltx} + [\ltlabblockdate\space v\ltlabblockversion\space blockenv implementation] -\RequirePackage{latex-lab-testphase-block-tagging} +\RequirePackage{latex-lab-testphase-block} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \endinput %% -%% End of file `block-tagging-latex-lab-testphase.ltx'. +%% End of file `block-latex-lab-testphase.ltx'. diff --git a/Master/texmf-dist/tex/latex/latex-lab/documentmetadata-support.ltx b/Master/texmf-dist/tex/latex/latex-lab/documentmetadata-support.ltx index ba72b004841..fa6a346a3a8 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/documentmetadata-support.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/documentmetadata-support.ltx @@ -33,8 +33,8 @@ %% %% %% File: documentmetadata-support.dtx -\def\documentmetadatasupportversion{1.0d} -\def\documentmetadatasupportdate{2023-06-07} +\def\documentmetadatasupportversion{1.0f} +\def\documentmetadatasupportdate{2023-09-01} \RequirePackage{pdfmanagement-testphase} \ExplSyntaxOn\makeatletter @@ -180,6 +180,16 @@ \tagpdfsetup{log=#1} } } + ,debug / tagpdf .code:n = + { + \AddToHook + { + package/tagpdf/after + } + { + \RequirePackage{tagpdf-debug} + } + } ,debug / uncompress .code:n = { \pdf_uncompress: diff --git a/Master/texmf-dist/tex/latex/latex-lab/firstaid-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/firstaid-latex-lab-testphase.ltx index 4d8ea15f1e0..f8719fcdfbf 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/firstaid-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/firstaid-latex-lab-testphase.ltx @@ -33,9 +33,12 @@ %% %% %% File: latex-lab-firstaid.dtx (C) Copyright 2023 LaTeX Project +\def\ltlabfirstaiddate{2023-07-20} +\def\ltlabfirstaidversion{0.85a} \ProvidesFile{firstaid-latex-lab-testphase.ltx} - [2023-06-04 v0.8 Temporary patches to external packages need for the tagging project] + [\ltlabfirstaiddate\space v\ltlabfirstaidversion\space + latex-lab wrapper firstaid] \RequirePackage{latex-lab-testphase-firstaid} diff --git a/Master/texmf-dist/tex/latex/latex-lab/float-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/float-latex-lab-testphase.ltx index 29a76c4ed93..3f8eefffbdd 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/float-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/float-latex-lab-testphase.ltx @@ -33,9 +33,11 @@ %% %% %% File: latex-lab-float.dtx (C) Copyright 2023 LaTeX Project +\def\ltlabfloatdate{2023-07-20} +\def\ltlabfloatversion{0.81a} \ProvidesFile{float-latex-lab-testphase.ltx} - [2023-04-30 v0.8 code related to the tagging of floats] + [\ltlabfloatdate\space v\ltlabfloatversion\space latex-lab wrapper float] \RequirePackage{latex-lab-testphase-float} \endinput %% diff --git a/Master/texmf-dist/tex/latex/latex-lab/graphic-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/graphic-latex-lab-testphase.ltx index 12fd17f5d2c..b8d2878c302 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/graphic-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/graphic-latex-lab-testphase.ltx @@ -33,9 +33,11 @@ %% %% %% File: latex-lab-graphic.dtx (C) Copyright 2022-2023 LaTeX Project +\def\ltlabgraphicdate{2023-10-13} +\def\ltlabgraphicversion{0.80b} \ProvidesFile{graphic-latex-lab-testphase.ltx} - [2023-04-07 v0.8 code related to the tagging included graphics] + [\ltlabgraphicdate\space v\ltlabgraphicversion\space latex-lab wrapper graphic] \RequirePackage{latex-lab-testphase-graphic} \endinput %% diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footmisc.ltx b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footmisc.ltx index 79d3063aeb4..a4c95e4cb11 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footmisc.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footmisc.ltx @@ -33,9 +33,12 @@ %% %% %% File: latex-lab-footnotes.dtx +\def\ltlabfootnotedate{2023-09-04} +\def\ltlabfootnoteversion{0.8c} + %% %% Copyright (c) 1995-2011 Robin Fairbairns -%% Copyright (c) 2018-2022 Robin Fairbairns, Frank Mittelbach +%% Copyright (c) 2018-2023 Robin Fairbairns, Frank Mittelbach %% %% This file is part of the `latex-lab Bundle'. %% -------------------------------------------- @@ -50,9 +53,6 @@ %% %% This work has the LPPL maintenance status 'maintained'. %% -%% -%% File: footmisc.dtx (C) Copyright 1995-2011 Robin Fairbairns -%% (C) Copyright 2018-2022 Frank Mittelbach \NeedsTeXFormat{LaTeX2e} \providecommand\DeclareRelease[3]{} \providecommand\DeclareCurrentRelease[2]{} @@ -92,14 +92,13 @@ option "para"}% {I shall ignore "\CurrentOption"}% \else - \def\@footnotetext@cfgpoint {\marginpar} \AddToHook{fntext/para}{% \hsize\marginparwidth % correct the default \hsize \footnotesep\z@ % don't add a default separation } - \def\@footnotetext@cfgpointii {\@makefntext} - \def\@footnotetext@cfgpointiii {} - \def\@footnotetext@cfgpointiv {} + \AssignSocketPlug{fntext/process}{side} + \AssignSocketPlug{fntext/begin}{noop} + \AssignSocketPlug{fntext/end}{noop} \fi } \let\footnotelayout\@empty @@ -168,9 +167,10 @@ \DeclareOption{multiple}{\FN@multiplefootnotetrue} \ProcessOptions \ifFN@para - \def\@makecol@cfgpointii {% + \NewSocketPlug{@makecol/footnotes}{para}{% \global\setbox\footins\vbox{\FN@makefootnoteparagraph}% } + \AssignSocketPlug{@makecol/footnotes}{para} \fi \ifFN@fixskip \def\@outputbox@removebskip{% @@ -193,61 +193,27 @@ \let\@outputbox@reinsertbskip\relax \fi \ifcase \FN@bottomcases\relax -\ERROR -\or + \ERROR +\or %1 \ifFN@abovefloats - \def\@makecol@cfgpoint {% - \@if@footnotes@TF - {\@outputbox@append{\vfill}}% - {\@if@bfloats@TF{\@outputbox@append{\vfill}}% - {\@outputbox@reinsertbskip}}% - \@outputbox@appendfootnotes - \@outputbox@attachfloats - } + \AssignSocketPlug {@makecol/outputbox}{space-footnotes-floats} \else - \def\@makecol@cfgpoint {% - \@outputbox@attachfloats - \@if@footnotes@TF - {\@outputbox@append{\vfill}}% - {\@outputbox@reinsertbskip}% - \@outputbox@appendfootnotes - } + \AssignSocketPlug {@makecol/outputbox}{floats-footnotes-space} \fi -\or +\or %2 \ifFN@abovefloats - \def\@makecol@cfgpoint {% - \@outputbox@appendfootnotes - \@if@bfloats@TF - {\@outputbox@append{\vfill}}% - {\@outputbox@reinsertbskip}% - \@outputbox@attachfloats - } + \AssignSocketPlug {@makecol/outputbox}{footnotes-space-floats} \else - \def\@makecol@cfgpoint {% - \@if@footnotes@TF - {\@outputbox@append{\vfill}}% - {\@if@bfloats@TF{\@outputbox@append{\vfill}}% - {\@outputbox@reinsertbskip}}% - \@outputbox@attachfloats - \@outputbox@appendfootnotes - } + \AssignSocketPlug {@makecol/outputbox}{space-floats-footnotes} \fi -\or +\or %3 \ifFN@abovefloats - \def\@makecol@cfgpoint {% - \@outputbox@appendfootnotes - \@outputbox@attachfloats - \@outputbox@reinsertbskip - } + \AssignSocketPlug {@makecol/outputbox}{footnotes-floats} \else - \def\@makecol@cfgpoint {% - \@outputbox@attachfloats - \@outputbox@appendfootnotes - \@outputbox@reinsertbskip -} + \AssignSocketPlug {@makecol/outputbox}{floats-footnotes} \fi \else -\ERROR + \ERROR \fi \newif\ifFN@setspace @@ -268,23 +234,11 @@ } \ifFN@para - \def\@footnotetext@cfgpoint {\insert\footins} - \long\def\@footnotetext@cfgpointii #1{% - \setbox\FN@tempboxa\hbox{\@makefntext{#1}}% - \dp\FN@tempboxa\z@ - \ht\FN@tempboxa - \dimexpr\wd\FN@tempboxa *% - \footnotebaselineskip /\columnwidth\relax - \box\FN@tempboxa - } + \AssignSocketPlug{fntext/make}{para} + \AssignSocketPlug{fntext/begin}{noop} + \AssignSocketPlug{fntext/end}{para} - \def\@footnotetext@cfgpointiii {} - \def\@footnotetext@cfgpointiv {% config point - \strut - \penalty-10\relax - \hskip\footglue - } \fi \ifFN@para @@ -347,7 +301,7 @@ -\AddToHook{fntext/begin}{\nobreak \hspace{.2em}} + \AddToHook{fntext/begin}{\nobreak \hspace{.2em}} \else @@ -611,7 +565,7 @@ {\mathparagraph\mathparagraph\mathparagraph}% } \newcommand\mpfootnotemark{% - \@ifnextchar[% + \@ifnextchar[%] \@xmpfootnotemark {% \stepcounter\@mpfn diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footnotes.ltx b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footnotes.ltx index 4a3a046a21d..38876d0c908 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footnotes.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-footnotes.ltx @@ -33,8 +33,12 @@ %% %% %% File: latex-lab-footnotes.dtx +\def\ltlabfootnotedate{2023-09-04} +\def\ltlabfootnoteversion{0.8c} + \ProvidesFile{latex-lab-footnotes.ltx} - [2023-02-04 v0.7 changes to the footnote interfaces] + [\ltlabfootnotedate\space v\ltlabfootnoteversion\space + changes to the footnote interfaces] %% alterations not covered: \ExplSyntaxOn @@ -54,9 +58,6 @@ \bool_set_true:N \l__fnote_autodetect_bool \tl_new:N \l__fnote_currentstruct_tl \tl_set:Nn \l__fnote_currentstruct_tl {1} -\cs_generate_variant:Nn \ref_label:nn { Vn } -\cs_generate_variant:Nn \ref_value:nn { Vn } -\cs_generate_variant:Nn \prop_gput:Nnn {cxn} \cs_generate_variant:Nn \hook_gput_code:nnn{nne} \cs_generate_variant:Nn \tag_struct_use:n {e} \cs_new_protected:Npn \fnote_step_fnmark:nn #1#2 { @@ -99,11 +100,11 @@ { \bool_if:NT \g_fnote_debug_bool { - \LogHook{fnmark/before} - \LogHook{fnmark} - \LogHook{fnmark/begin} - \LogHook{fnmark/end} - \LogHook{fnmark/after} + \hook_log:n {fnmark/before} + \hook_log:n {fnmark} + \hook_log:n {fnmark/begin} + \hook_log:n {fnmark/end} + \hook_log:n {fnmark/after} \cs_gset_eq:NN \__fnote_debug_footnotemark: \prg_do_nothing: } } @@ -111,52 +112,56 @@ { \bool_if:NT \g_fnote_debug_bool { - \cs_log:N\@footnotetext@cfgpoint - \cs_log:N\@footnotetext@cfgpointii - \cs_log:N\@footnotetext@cfgpointiii - \cs_log:N\@footnotetext@cfgpointiv - \cs_log:N\@makefntext@cfgpoint - \cs_log:N\@makefntext@cfgpointii - \LogHook{fntext/before} - \LogHook{fntext} - \LogHook{fntext/para} - \LogHook{fntext/begin} - \LogHook{fntext/end} - \LogHook{fntext/after} + \socket_log:n {fntext/process} + \socket_log:n {fntext/make} + \socket_log:n {fntext/begin} + \socket_log:n {fntext/end} + \socket_log:n {fntext/mark} + \socket_log:n {fntext/text} + \socket_log:n {tagsupport/fnmark} + \socket_log:n {tagsupport/fntext/begin} + \socket_log:n {tagsupport/fntext/end} + \socket_log:n {tagsupport/fntext/mark} + \socket_log:n {tagsupport/fntext/text} + \hook_log:n {fntext/before} + \hook_log:n {fntext} + \hook_log:n {fntext/para} + \hook_log:n {fntext/begin} + \hook_log:n {fntext/end} + \hook_log:n {fntext/after} \cs_gset_eq:NN \__fnote_debug_footnotetext: \prg_do_nothing: } } \cs_new_protected:Npn \fnote_footnotemark: { \__fnote_debug_footnotemark: - \UseHook{fnmark/before} + \hook_use:n {fnmark/before} \leavevmode \ifhmode \edef\@x@sf{\the\spacefactor} - \UseHook{fnmark} + \hook_use:n {fnmark} \nobreak \fi - \UseHook{fnmark/begin} - \@kernel@process@makefnmark - \@makefnmark + \hook_use:n {fnmark/begin} + \socket_use:nn {tagsupport/fnmark} \@makefnmark \__fnote_footnotemark_finish: } -\cs_new_protected:Npn \__fnote_finish: { +\cs_new_protected:Npn \__fnote_footnotemark_default_finish: { \UseHook{fnmark/end} \ifhmode \spacefactor \@x@sf \relax \fi \UseHook{fnmark/after} } - -\cs_new_eq:NN \__fnote_footnotemark_finish: \__fnote_finish: -\def \@kernel@process@makefnmark { } +\cs_new_eq:NN \__fnote_footnotemark_finish: \__fnote_footnotemark_default_finish: +\NewSocket{tagsupport/fnmark}{1} \cs_set_eq:NN \@footnotemark \fnote_footnotemark: \cs_new_protected:Npn \fnote_footnotetext:n #1 { \__fnote_debug_footnotetext: - \UseHook{fntext/before} - \@kernel@process@footnotetext - \@footnotetext@cfgpoint { % config point - \UseHook{fntext} + \hook_use:n {fntext/before} + \socket_use:n {tagsupport/fntext/begin} + \socket_use:nn {fntext/process} + { + \hook_use:n {fntext} \reset@font \footnotesize \interlinepenalty\interfootnotelinepenalty @@ -168,27 +173,53 @@ \parindent 1em % typical default used in \@makefntext moved up here \def\@currentcounter{footnote} \protected@edef \@currentlabel { \p@footnote \@thefnmark } - \UseHook{fntext/para} + \hook_use:n {fntext/para} \color@begingroup - \@footnotetext@cfgpointii % config point + \socket_use:nn {fntext/make} { - \@footnotetext@cfgpointiii % config point - \UseHook{fntext/begin} + \socket_use:n {fntext/begin}% + \hook_use:n {fntext/begin} \ignorespaces #1 - \UseHook{fntext/end} - \@footnotetext@cfgpointiv % config point + \hook_use:n {fntext/end} + \socket_use:n {fntext/end} } \par \color@endgroup } - \UseHook{fntext/after} + \socket_use:n{tagsupport/fntext/end} + \hook_use:n {fntext/after} +} +\NewSocket {fntext/process}{1} +\NewSocketPlug{fntext/process}{default}{ \insert\footins {#1} } +\NewSocketPlug{fntext/process}{side} { \marginpar {#1} } +\AssignSocketPlug{fntext/process}{default} +\NewSocket {fntext/make}{1} +\NewSocketPlug{fntext/make}{default}{ \@makefntext {#1} } +\NewSocketPlug{fntext/make}{para} +{ + \setbox\FN@tempboxa\hbox{\@makefntext{#1}}% + \dp\FN@tempboxa\z@ + \ht\FN@tempboxa + \dimexpr\wd\FN@tempboxa *% + \footnotebaselineskip /\columnwidth\relax + \box\FN@tempboxa } -\cs_new_protected:Npn \@footnotetext@cfgpoint { \insert\footins } -\cs_new_protected:Npn \@footnotetext@cfgpointii { \@makefntext } -\cs_new_protected:Npn \@footnotetext@cfgpointiii { \rule\z@\footnotesep } -\cs_new_protected:Npn \@footnotetext@cfgpointiv { \@finalstrut\strutbox } -\cs_new_protected:Npn \@kernel@process@footnotetext {} +\AssignSocketPlug{fntext/make}{default} +\NewSocket {fntext/begin}{0} +\NewSocketPlug{fntext/begin}{default}{ \rule\z@\footnotesep } +\AssignSocketPlug{fntext/begin}{default} +\NewSocket {fntext/end}{0} +\NewSocketPlug{fntext/end}{default}{ \@finalstrut\strutbox } +\NewSocketPlug{fntext/end}{para} + {% + \strut + \penalty-10\relax + \hskip\footglue + } +\AssignSocketPlug{fntext/end}{default} +\NewSocket{tagsupport/fntext/begin}{0} +\NewSocket{tagsupport/fntext/end}{0} \AddToHook{begindocument} { \cs_set_eq:NN \@footnotetext \fnote_footnotetext:n @@ -202,29 +233,31 @@ \setlength\footnotemargin{1.8em} \fi } - \cs_new_protected:Npn \fnote_makefntext:n #1 { - \@makefntext@cfgpoint - { - \ifdim\footnotemargin>\z@ - \hb@xt@ \footnotemargin{\hss\@makefnmark} - \else - \ifdim\footnotemargin=\z@ - \llap{\@makefnmark} - \else - \ifdim\footnotemargin=-\maxdimen - \@makefnmark - \else - \llap{\hb@xt@ -\footnotemargin{\@makefnmark\hss}} - \fi - \fi - \fi - } - \@makefntext@cfgpointii - { #1 } + \noindent + \socket_use:nn {tagsupport/fntext/mark} { \socket_use:n {fntext/mark} } + \socket_use:nn {tagsupport/fntext/text} { \socket_use:nn {fntext/text}{#1} } +} +\NewSocket {fntext/mark}{0} +\NewSocketPlug{fntext/mark}{default}{ + \ifdim\footnotemargin>\z@ + \hb@xt@ \footnotemargin{\hss\@makefnmark} + \else + \ifdim\footnotemargin=\z@ + \llap{\@makefnmark} + \else + \ifdim\footnotemargin=-\maxdimen + \@makefnmark + \else + \llap{\hb@xt@ -\footnotemargin{\@makefnmark\hss}} + \fi + \fi + \fi } -\cs_new_protected:Npn \@makefntext@cfgpoint { \noindent } -\cs_new_protected:Npn \@makefntext@cfgpointii #1 { #1 } +\AssignSocketPlug{fntext/mark}{default} +\NewSocket {fntext/text}{1} +\NewSocket{tagsupport/fntext/mark}{1} +\NewSocket{tagsupport/fntext/text}{1} \newcommand\old@std@class@makefntext[1]{% \parindent 1em% \noindent @@ -234,7 +267,7 @@ \cs_new_protected:Npn \__fnote_patch: { - \tl_set:No \l__fnote_patch_tl { \@makefntext { \@makefntext@cfgpointii{##1} } } + \tl_set:No \l__fnote_patch_tl { \@makefntext { \UseSocket{tagsupport/fntext/text}{##1} } } \tl_if_in:NnTF \l__fnote_patch_tl { \hbox } { \cs_set_eq:NN \__fnote_tmp:w \__fnote_patch_hbox:w } { @@ -258,7 +291,7 @@ { \exp_stop_f: #1 \@makefntext@processX { \hb@xt@ #2 } } \cs_new:Npn \__fnote_patch_@makefnmark:w #1 \@makefnmark { \exp_stop_f: #1 \@makefntext@processX { \use:n } { \@makefnmark } } -\cs_new:Npn \@makefntext@processX #1#2{\@makefntext@cfgpoint{#1{#2}}} +\cs_new:Npn \@makefntext@processX #1#2{\UseSocket{tagsupport/fntext/mark}{#1{#2}}} \AddToHook{begindocument} { @@ -281,7 +314,7 @@ \fnote_step_fnmark:nn {#1} \@mpfn \cs_set_eq:NN \__fnote_footnotemark_finish: \prg_do_nothing: \@footnotemark - \cs_set_eq:NN \__fnote_footnotemark_finish: \__fnote_finish: + \cs_set_eq:NN \__fnote_footnotemark_finish: \__fnote_footnotemark_default_finish: \@footnotetext {#2} \__fnote_footnotemark_finish: } @@ -302,20 +335,13 @@ \@footnotemark \bool_set_true:N \l__fnote_autodetect_bool } -\cs_new_protected:Npn \@mpfootnotetext@cfgpoint #1 +\NewSocketPlug{fntext/process}{mp} { \global\setbox\@mpfootins\vbox{% \unvbox\@mpfootins #1 } } -\RequirePackage{etoolbox} -\ExplSyntaxOff -\patchcmd\@iiiminipage - {\let\@footnotetext\@mpfootnotetext} - {\let\@footnotetext@cfgpoint\@mpfootnotetext@cfgpoint} - {}{\ERROR} -\ExplSyntaxOn \AddToHook{class/memoir/before} { \let\new@std@class@makecol\@makecol } \AddToHook{class/memoir/after} @@ -343,38 +369,31 @@ \bool_set_false:N \l_fnote_link_bool } } -\ref_attribute_gset:nnnn {fnote/struct}{1}{now}{\l__fnote_currentstruct_tl} -\cs_new_protected:Npn \__fnote_label_hook: {} -\AddToHook{begindocument/before} - { - \RequirePackage{nameref} - \g@addto@macro\label@hook - { - \__fnote_label_hook: - } - } +\property_new:nnnn {fnote/struct}{now}{1}{\l__fnote_currentstruct_tl} +\cs_new_protected:Npn \__fnote_label_hook:e #1 {} +\AddToHookWithArguments{label}{ \__fnote_label_hook:e{#1}} \AddToHook{fntext/begin} { - \cs_set_protected:Npn \__fnote_label_hook: + \cs_set_protected:Npn \__fnote_label_hook:e #1 { - \ref_label:Vn \label@name {fnote/struct} + \property_record:ee {__fnote/#1} {fnote/struct} } } -\cs_new_protected:Npn \fnote_new:nn #1 #2 % #1 name, #2 options +\cs_new_protected:Npn \fnote_class_new:nn #1 #2 % #1 name, #2 options { \prop_new:c { g__fnote_currentmarks_ #1 _prop } } -\fnote_new:nn {default}{} +\fnote_class_new:nn {default}{} \cs_new_protected:Npn \fnote_mark_gput:nn #1 #2 % #1 the representation of the mark, #2 type { - \prop_gput:cxn { g__fnote_currentmarks_ #2 _prop } + \prop_gput:cen { g__fnote_currentmarks_ #2 _prop } { \tag_get:n{struct_num} } { #1 } } \cs_generate_variant:Nn \fnote_mark_gput:nn {no,oo} -\cs_new_protected:Npn \fnote_mark_gpop:nnN #1 #2 #3 +\cs_new_protected:Npn \fnote_mark_gpop_all:nnN #1 #2 #3 { \seq_clear:N #3 \prop_set_eq:Nc \l__fnote_tmpa_prop { g__fnote_currentmarks_ #2 _prop } @@ -387,25 +406,24 @@ } } } -\cs_generate_variant:Nn\fnote_mark_gpop:nnN {ooN} - -\cs_new_protected:Npn \tag@FEMark #1 %#1 content +\cs_generate_variant:Nn\fnote_mark_gpop_all:nnN {ooN} +\NewSocketPlug{tagsupport/fnmark}{FEMark} { \tag_mc_end_push: \tag_struct_begin:n { tag=footnotemark } \bool_if:NTF \l__fnote_autodetect_bool { \fnote_mark_gput:oo {\@thefnmark}{\l_fnote_type_tl} - \tl_set:Nx \l__fnote_linktarget_tl {footnote*.\tag_get:n{struct_num}} + \tl_set:Ne \l__fnote_linktarget_tl {footnote*.\tag_get:n{struct_num}} } { \hook_gput_code:nne {tagpdf/finish/before} {tagpdf/footnote} { \exp_not:N\fnote_gput_refs:ee { \tag_get:n{struct_num} } - { \ref_value:Vn\l__fnote_currentlabel_tl {fnote/struct} } + { \property_ref:ee{ __fnote/\l__fnote_currentlabel_tl } {fnote/struct} } } - \tl_set:Nx \l__fnote_linktarget_tl {footnote*.\ref_value:Vn\l__fnote_currentlabel_tl {fnote/struct}} + \tl_set:Ne \l__fnote_linktarget_tl {footnote*.\property_ref:ee {__fnote/\l__fnote_currentlabel_tl} {fnote/struct}} } \tag_mc_begin:n{tag=Lbl} % @@ -423,8 +441,7 @@ \tag_struct_end: \tag_mc_begin_pop:n{} } -\cs_set_eq:NN \@kernel@process@makefnmark \tag@FEMark - +\AssignSocketPlug{tagsupport/fnmark}{FEMark} \cs_new_protected:Npn \__fnote_gput_ref:nn #1 #2 %#1 the structure number receiving the ref #2 { @@ -441,7 +458,7 @@ \cs_generate_variant:Nn \fnote_gput_refs:nn {ee} \tl_new:N \l__fnote_dflt_struct_tl \tl_set:Nn \l__fnote_dflt_struct_tl {1} -\cs_new_protected:Npn \tag@FENote #1#2 % #1 config point, \insert\footins #2 content +\NewSocketPlug{tagsupport/fntext/begin}{FENote} { \tag_mc_end_push: \tag_check_child:nnTF {FENote}{pdf2} @@ -451,11 +468,11 @@ { \tag_struct_begin:n { tag=footnote,parent=\l__fnote_dflt_struct_tl } } - \tl_set:Nx \l__fnote_currentstruct_tl { \tag_get:n{struct_num} } + \tl_set:Ne \l__fnote_currentstruct_tl { \tag_get:n{struct_num} } \tag_struct_begin:n { tag=footnotelabel }\tag_struct_end: \bool_if:NTF \l__fnote_autodetect_bool { - \fnote_mark_gpop:ooN { \@thefnmark }{ \l_fnote_type_tl } \l__fnote_currentrefs_seq + \fnote_mark_gpop_all:ooN { \@thefnmark }{ \l_fnote_type_tl } \l__fnote_currentrefs_seq \seq_map_inline:Nn \l__fnote_currentrefs_seq { \fnote_gput_refs:ee {##1}{ \l__fnote_currentstruct_tl } @@ -464,20 +481,18 @@ {%no auto } - #1 {#2} - \tag_struct_end: - \tag_mc_begin_pop:n{} } -\cs_set_eq:NN \@kernel@process@footnotetext \tag@FENote -\cs_set_protected:Npn \@makefntext@cfgpoint #1 %#1 code that typesets the mark. + +\NewSocketPlug{tagsupport/fntext/end}{FENote} { - \noindent - \tag_mc_end_push: - \tag@FENoteLbl { #1 } + \tag_struct_end: \tag_mc_begin_pop:n{} } -\cs_new_protected:Npn \tag@FENoteLbl #1 +\AssignSocketPlug{tagsupport/fntext/begin}{FENote} +\AssignSocketPlug{tagsupport/fntext/end}{FENote} +\NewSocketPlug{tagsupport/fntext/mark}{FENoteLbl} { + \tag_mc_end_push: %\seq_show:N\l__fnote_currentrefs_seq \seq_map_inline:Nn\l__fnote_currentrefs_seq {\MakeLinkTarget*{footnote*.##1}} \MakeLinkTarget*{footnote*.\l__fnote_currentstruct_tl} @@ -486,19 +501,18 @@ #1 \tag_mc_end: \tag_struct_end: - } -\cs_set_protected:Npn \@makefntext@cfgpointii #1 - { - \tag_mc_end_push: - \tag@FENotetext { #1 } \tag_mc_begin_pop:n{} } -\cs_new_protected:Npn \tag@FENotetext #1 +\AssignSocketPlug{tagsupport/fntext/mark}{FENoteLbl} +\NewSocketPlug{tagsupport/fntext/text}{FENotetext} { + \tag_mc_end_push: \tag_mc_begin:n{} #1 \tag_mc_end: + \tag_mc_begin_pop:n{} } +\AssignSocketPlug{tagsupport/fntext/text}{FENotetext} \ExplSyntaxOff \endinput diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-kernel-changes.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-kernel-changes.sty index 2c990ee7ef8..f2c99285c91 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-kernel-changes.sty +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-kernel-changes.sty @@ -33,7 +33,12 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-toc-kernel-functions.dtx (C) Copyright 2022-2023 LaTeX Project +%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2023 LaTeX Project +\def\ltlabkerneldate{2023-10-16} +\def\ltlabkernelversion{0.85b} +\ProvidesPackage{latex-lab-kernel-changes} + [\ltlabkerneldate\space v\ltlabkernelversion\space + General kernel and class changes] \def\hyper@nopatch@counter{} \def\@definecounter#1{\expandafter\newcount\csname c@#1\endcsname \setcounter{#1}\z@ @@ -72,13 +77,28 @@ \def\toclevel@subparagraph{5} \def\toclevel@figure{1} \def\toclevel@table{1} - +\ExplSyntaxOn +\AddToHookWithArguments{cmd/MakeLinkTarget/after} + { + \tag_if_active:T + { + \tl_if_blank:VF \@currentHref + { + \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} + } + } + } +\ExplSyntaxOff %% File: latex-lab-sec.dtx (C) Copyright 2022-2023 LaTeX Project +\def\ltlabsecdate{2023-10-16} +\def\ltlabsecversion{0.84b} \ifdefined\directlua - \pdfvariable gentounicode =1 - \protected\def\pdfglyphtounicode {\pdfextension glyphtounicode } - \protected\edef\pdfgentounicode {\pdfvariable gentounicode} - \input{glyphtounicode} + \ifnum\outputmode > 0 + \pdfvariable gentounicode =1 + \protected\def\pdfglyphtounicode {\pdfextension glyphtounicode } + \protected\edef\pdfgentounicode {\pdfvariable gentounicode} + \input{glyphtounicode} + \fi \fi \ifdefined\pdfglyphtounicode \input{glyphtounicode-cmex} diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-mathtagging.ltx b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-math.ltx index d333b5ca9a3..1ced324bb10 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-mathtagging.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-math.ltx @@ -1,10 +1,10 @@ %% -%% This is file `latex-lab-mathtagging.ltx', +%% This is file `latex-lab-math.ltx', %% generated with the docstrip utility. %% %% The original source files were: %% -%% latex-lab-mathtagging.dtx (with options: `kernel') +%% latex-lab-math.dtx (with options: `kernel') %% %% This is a generated file. %% @@ -32,14 +32,14 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-mathtagging.dtx -\def\ltmathtaggingdate{2023-03-08} -\def\ltmathtaggingversion{v0.5a} -\ProvidesFile{latex-lab-mathtagging.ltx} - [\ltmathtaggingdate\space - \ltmathtaggingversion\space +%% File: latex-lab-math.dtx +\def\ltlabmathdate{2023-09-11} +\def\ltlabmathversion{0.5c} +\ProvidesFile{latex-lab-math.ltx} + [\ltlabmathdate\space + v\ltlabmathversion\space Grab all the math(s) and tag it (experiments)] -\AddToHook{begindocument/before}{\RequirePackage{latex-lab-testphase-block-tagging}} +\AddToHook{begindocument/before}{\RequirePackage{latex-lab-testphase-block}} \ExplSyntaxOn \tl_gput_right:Nn \@kernel@before@begindocument { \RequirePackage { amsmath } } @@ -70,11 +70,19 @@ \tl_if_blank:nF {#1} { \__math_process:nn { math } {#1} % $ - \tagmcend %end P-chunk, in code: \tag_mc_end_push: - \@kernel@math@begin - #1 $ - \@kernel@math@end - \tagmcbegin{} % restart P-chunk (whatsits in pdftex) + \legacy_if:nTF { measuring@ } + { #1 $ } + { + \tl_if_in:nnTF {#1} { \m@th } + { #1 $ } + { + \tagmcend %end P-chunk, in code: \tag_mc_end_push: + \@kernel@math@begin + #1 $ + \@kernel@math@end + \tagmcbegin{} % restart P-chunk (whatsits in pdftex) + } + } } } @@ -90,9 +98,10 @@ $$ } } - \cs_new_protected:Npn \@kernel@close@P { - \tagmcend %end P-chunk, in code: \tag_mc_end_push: + \tag_if_active:T + { + \tagmcend %end P-chunk, should perhaps be \tag_mc_end_push: ... \int_gincr:N \g__tag_para_end_int \bool_if:NT \l__tag_para_show_bool { \tag_mc_begin:n{artifact} @@ -100,6 +109,7 @@ \tag_mc_end: } \tag_struct_end: + } } \cs_new_protected:Npn \__math_tag_dollardollar_display:nn #1#2 { @@ -116,7 +126,7 @@ \l__math_tmpa_skip \lastskip \@kernel@math@end \penalty \postdisplaypenalty - \skip_vertical:n { -\l__math_tmpa_skip } + \skip_vertical:n { -\l__math_tmpa_skip * 2 } \@doendpe % this has no \end{...} to take care of it } @@ -288,7 +298,6 @@ { $ } } { - \bool_set_true:N \l__math_collected_bool \__math_grab_inline:w } } % \( @@ -352,6 +361,7 @@ \__math_grab_dollar:w } } + \exp_args:No \tex_everydisplay:D { \tex_the:D \tex_everydisplay:D @@ -654,7 +664,6 @@ \fi } \ExplSyntaxOff - \endinput %% -%% End of file `latex-lab-mathtagging.ltx'. +%% End of file `latex-lab-math.ltx'. diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-bib.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-bib.sty index 62e98a45f63..9261393042e 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-bib.sty +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-bib.sty @@ -33,9 +33,11 @@ %% %% %% File: latex-lab-bib.dtx (C) Copyright 2023 LaTeX Project -\ProvidesExplPackage {latex-lab-testphase-bib} {2023-05-18} {0.8} +\def\ltlabbibdate{2023-07-20} +\def\ltlabbibversion{0.81a} +\ProvidesExplPackage {latex-lab-testphase-bib} {\ltlabbibdate} {\ltlabbibversion} {Code related to the tagging of bibliography and cite command} -\RequirePackage{latex-lab-testphase-block-tagging} +\RequirePackage{latex-lab-testphase-block} \def\hyper@nopatch@bib{} \providecommand*\@extra@binfo{}% diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-block-tagging.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-block.sty index c65c155fc5c..2764ca6d8bb 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-block-tagging.sty +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-block.sty @@ -1,10 +1,10 @@ %% -%% This is file `latex-lab-testphase-block-tagging.sty', +%% This is file `latex-lab-testphase-block.sty', %% generated with the docstrip utility. %% %% The original source files were: %% -%% latex-lab-block-tagging.dtx (with options: `package') +%% latex-lab-block.dtx (with options: `package') %% %% This is a generated file. %% @@ -32,13 +32,11 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-block-tagging.dtx (C) Copyright 2021-2023 LaTeX Project - -\def\ltblocksversion{v0.8d} -\def\ltblocksdate{2023/06/07} - -\ProvidesPackage {latex-lab-testphase-block-tagging} - [\ltblocksdate\space \ltblocksversion\space +%% File: latex-lab-block.dtx (C) Copyright 2021-2023 LaTeX Project +\def\ltlabblockdate{2023-09-01} +\def\ltlabblockversion{0.8h} +\ProvidesPackage {latex-lab-testphase-block} + [\ltlabblockdate\space v\ltlabblockversion\space blockenv implementation] \RequirePackage{xtemplate} \RequirePackage{latex-lab-kernel-changes} @@ -145,8 +143,6 @@ } \cs_new_eq:NN \__block_skip_remove_last: \tex_unskip:D \cs_generate_variant:Nn \tl_if_novalue:nTF { o } -\cs_if_exist:NF \tag_if_active:T - { \cs_new_eq:NN \tag_if_active:T \use_none:n } \bool_new:N \g__block_debug_bool \cs_new_eq:NN \__block_debug:n \use_none:n \cs_new_eq:NN \__block_debug_typeout:n \use_none:n @@ -244,6 +240,23 @@ { \endblockenv } } \AddToHook{begindocument/before}{ + \RenewDocumentEnvironment{verse}{ !O{} } + { + \let\\\@centercr + \UseInstance{blockenv}{list} + { + item-indent=-1.5em, + parindent=-1.5em, + item-skip=0pt, + rightmargin=\leftmargin, + leftmargin=\leftmargin+1.5em, + #1 + } + \item\relax + } + { \endblockenv } + } +\AddToHook{begindocument/before}{ \RenewDocumentEnvironment{list}{O{} m m } { \tl_set:Nn \@itemlabel {#2} @@ -252,9 +265,6 @@ } { \endblockenv } } -\tag_if_active:T { - \tagpdfsetup{add-new-tag={tag=list,role=L}} -} \tl_new:N \l__block_env_params_tl \cs_new:Npn \legacylistsetupcode { \dim_zero:N \listparindent @@ -318,10 +328,17 @@ \global\@namedef{end#1}{ \@endtheorem } } } +\tl_new:N \l__block_thm_current_counter_tl +\def\@thm#1#2{% + \@kernel@refstepcounter{#1} + \tl_set:Nn \l__block_thm_current_counter_tl{#1} + \@ifnextchar[{\@ythm{#1}{#2}}{\@xthm{#1}{#2}}} +\def\hyper@nopatch@thm{} \def\@begintheorem#1#2{ \UseInstance{blockenv}{theorem}{} \tagpdfparaOff \mode_leave_vertical: + \MakeLinkTarget{\l__block_thm_current_counter_tl} \tag_struct_begin:n{tag=Caption} \group_begin: \bfseries @@ -345,6 +362,7 @@ \UseInstance{blockenv}{theorem}{} \tagpdfparaOff \mode_leave_vertical: + \MakeLinkTarget{\l__block_thm_current_counter_tl} \tag_struct_begin:n{tag=Caption} \group_begin: \bfseries @@ -478,16 +496,17 @@ \addpenalty \@endparpenalty \addvspace \l__block_topsepadd_skip } - % \begin{macrocode} - \bool_if:NTF \l__block_standalone_bool - { \legacy_if_gset_false:n { @endpe } } - { \legacy_if_gset_true:n { @endpe } } + \socket_use:n {tagsupport/block-endpe} } \cs_new:Npn \__kernel_displayblock_end: { \__block_debug_typeout:n{\detokenize{__kernel_displayblock_end:}} } -\bool_new:N \l__block_standalone_bool -\bool_set_false:N \l__block_standalone_bool +\socket_new:nn {tagsupport/block-endpe}{0} +\socket_new_plug:nnn{tagsupport/block-endpe}{on} + { \legacy_if_gset_true:n { @endpe } } +\socket_new_plug:nnn{tagsupport/block-endpe}{off} + { \legacy_if_gset_false:n { @endpe } } +\socket_assign_plug:nn{tagsupport/block-endpe}{on} \DeclareTemplateCode{para}{std}{1} { indent-width = \parindent , @@ -828,6 +847,7 @@ \__block_beginpar_vmode: \let \__kernel_displayblock_begin: \prg_do_nothing: \let \__kernel_displayblock_end: \prg_do_nothing: + \socket_assign_plug:nn{tagsupport/block-endpe}{on} } \cs_new:Npn \__block_recipe_standalone: { \cs_set_eq:NN \__kernel_displayblock_beginpar_hmode:w @@ -836,7 +856,7 @@ \prg_do_nothing: \cs_set_eq:NN \__kernel_displayblock_begin: \__block_inner_begin: \cs_set_eq:NN \__kernel_displayblock_end: \__block_inner_end: - \bool_set_true:N \l__block_standalone_bool + \socket_assign_plug:nn{tagsupport/block-endpe}{off} \tl_if_empty:NTF \l__block_tag_name_tl { \tl_set:Nn \l__block_tag_inner_tag_tl {Sect} } { \tl_set_eq:NN \l__block_tag_inner_tag_tl \l__block_tag_name_tl } @@ -849,6 +869,7 @@ \__block_beginpar_vmode: \cs_set_eq:NN \__kernel_displayblock_begin: \__block_inner_begin: \cs_set_eq:NN \__kernel_displayblock_end: \__block_inner_end: + \socket_assign_plug:nn{tagsupport/block-endpe}{on} \tl_if_empty:NTF \l__block_tag_name_tl { \tl_set:Nn \l__block_tag_inner_tag_tl {Figure} } { \tl_set_eq:NN \l__block_tag_inner_tag_tl \l__block_tag_name_tl } @@ -864,6 +885,7 @@ \cs_set_eq:NN \__kernel_displayblock_end: \__block_list_end: \cs_set_eq:NN \__kernel_list_item_begin: \__block_list_item_begin: \cs_set_eq:NN \__kernel_list_item_end: \__block_list_item_end: + \socket_assign_plug:nn{tagsupport/block-endpe}{on} \tl_if_empty:NTF \l__block_tag_name_tl { \tl_set:Nn \l__tag_L_tag_tl {L} } { \tl_set_eq:NN \l__tag_L_tag_tl \l__block_tag_name_tl } @@ -939,10 +961,7 @@ para-instance = raggedleft , inner-instance = , } -\tag_if_active:T { - \tagpdfsetup{add-new-tag={tag=quote,role=BlockQuote}} - \tagpdfsetup{add-new-tag={tag=quotation,role=BlockQuote}} -} + % \DeclareInstance{blockenv}{quotation}{display} { env-name = quotation, @@ -979,13 +998,6 @@ setup-code = , block-instance = displayblock , } -\tag_if_active:T { - \tagpdfsetup{add-new-tag={tag=theorem-like,role=Sect}} -} -\tag_if_active:T { - \tagpdfsetup{add-new-tag={tag=verbatim,role=P}} - \tagpdfsetup{add-new-tag={tag=codeline,role=Sub}} -} \DeclareInstance{blockenv}{verbatim}{display} { env-name = verbatim, @@ -1179,7 +1191,7 @@ \DeclareRobustCommand\justifying {\UseInstance{para}{justify}{}} \justifying -\tag_if_active:T { +\tag_if_active:TF { \cs_set:Npn \__block_beginpar_vmode: { \__block_debug_typeout:n { @endpe = \legacy_if:nTF { @endpe }{true}{false} @@ -1275,8 +1287,6 @@ \__tag_check_para_begin_show:nn {green}{#1} \tag_mc_begin:n {} } -\tag_if_active:T { -} \RemoveFromHook{para/end}[tagpdf] \AddToHook{para/end} { @@ -1419,8 +1429,11 @@ \tagstructend % end L } } +{ + \cs_new:Npn \__block_start_para_structure_unconditionally:n #1 {} +} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \endinput %% -%% End of file `latex-lab-testphase-block-tagging.sty'. +%% End of file `latex-lab-testphase-block.sty'. diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-firstaid.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-firstaid.sty index b95e81c61b4..7ea7fe54bec 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-firstaid.sty +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-firstaid.sty @@ -33,9 +33,12 @@ %% %% %% File: latex-lab-firstaid.dtx (C) Copyright 2023 LaTeX Project +\def\ltlabfirstaiddate{2023-07-20} +\def\ltlabfirstaidversion{0.85a} -\ProvidesPackage {latex-lab-testphase-firstaid} [2023-06-04 v0.8 - Temporary patches to external packages need for the tagging project] +\ProvidesPackage {latex-lab-testphase-firstaid} [% + \ltlabfirstaiddate\space v\ltlabfirstaiddate\space + Temporary patches to external packages needed for the tagging project] \AddToHook{file/blindtext.sty/after}[latex-lab-firstaid]{% \FirstAidNeededT{blindtext}{sty}{\blindfiledate\space\blindfileversion\space% @@ -72,32 +75,20 @@ } }% } -\AddToHook{file/ltugboat.cls/after} +\AddToHook{package/cleveref/after} { - \def\l@section#1#2{\addpenalty{\@secpenalty}% - \addvspace{\TBtocsectionspace}% - \@tempdima 1.5em - \begingroup - \parindent\z@ \rightskip\z@ % article style makes \rightskip > 0 - \parfillskip\z@ - \TBtocsectionfont - \leavevmode\advance\leftskip\@tempdima\hskip-\leftskip - \UseHookWithArguments{contentsline/text/before}{4} - {\toclevel@part}{#1}{#2}{\@contentsline@destination}% - \csname contentsline@text@1@format\endcsname{#1}% - \UseHookWithArguments{contentsline/text/after}{4} - {\toclevel@part}{#1}{#2}{\@contentsline@destination}% - \nobreak\hfil - \nobreak\hb@xt@\@pnumwidth{\hss - \UseHookWithArguments{contentsline/page/before}{4} - {\toclevel@part}{#1}{#2}{\@contentsline@destination}% - #2% - \UseHookWithArguments{contentsline/page/after}{4} - {\toclevel@part}{#1}{#2}{\@contentsline@destination}% - }\par - \endgroup} + \let\@makefntext\cref@old@makefntext + \AddToHook{cmd/@makefntext/before}{% + \cref@constructprefix{footnote}{\cref@result}% + \protected@edef\cref@currentlabel{% + [footnote][\arabic{footnote}][\cref@result]% + \p@footnote\@thefnmark}} + \RenewDocumentCommand\refstepcounter{om}{% + \IfNoValueTF{#1}% + {\refstepcounter@noarg{#2}}% + {\refstepcounter@optarg[#1]{#2}}% + }% } - \endinput %% %% End of file `latex-lab-testphase-firstaid.sty'. diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-float.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-float.sty index 92268acbe81..8b38e4aedef 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-float.sty +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-float.sty @@ -33,11 +33,10 @@ %% %% %% File: latex-lab-float.dtx (C) Copyright 2023 LaTeX Project -\ProvidesExplPackage {latex-lab-testphase-float} {2023-04-28} {0.8} +\def\ltlabfloatdate{2023-07-20} +\def\ltlabfloatversion{0.81a} +\ProvidesExplPackage {latex-lab-testphase-float} {\ltlabfloatdate} {\ltlabfloatversion} {Code related to the tagging of floats} -\tagpdfsetup{add-new-tag=float/Aside} -\tagpdfsetup{add-new-tag=figures/Sect} -\tagpdfsetup{add-new-tag=tables/Sect} \prop_new:N \g__tag_float_sect_prop \seq_new:N \g__tag_float_types_seq \seq_gput_right:Nn \g__tag_float_types_seq {figure} @@ -219,8 +218,42 @@ \fi \fi } +\def\end@dblfloat{% + \if@twocolumn + \@endfloatbox + \@nameuse{__tag_float_end:}% + \ifnum\@floatpenalty <\z@ + \@largefloatcheck + \global\dp\@currbox1sp % + \@cons\@currlist\@currbox + \ifnum\@floatpenalty <-\@Mii + \penalty -\@Miv + \@tempdima\prevdepth + \vbox{}% + \prevdepth\@tempdima + \penalty\@floatpenalty + \else + \vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@Esphack + \@nameuse{__tag_float_start_par:} %restart P safe here?? + \fi + \fi + \else + \end@float + \fi +}% \ExplSyntaxOn \def\hyper@nopatch@caption{} +\let\@kernel@refstepcounter\refstepcounter %as long it is not in the kernel +\def\caption{% + \ifx\@captype\@undefined + \@latex@error{\noexpand\caption outside float}\@ehd + \expandafter\@gobble + \else + \@kernel@refstepcounter\@captype + \expandafter\@firstofone + \fi + {\@dblarg{\@caption\@captype}}% +} \providecommand\theHg__tag_struct_abs_int{\int_use:N\c@g__tag_struct_abs_int} \AddToHook{begindocument} @@ -253,7 +286,7 @@ \tag_mc_end: \tag_struct_end: \tag_mc_begin:n{} - #2\par + #2 \tag_mc_end:\hfil}% \fi \tag_struct_end: %caption diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-graphic.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-graphic.sty index afe5a4625e5..19aed304798 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-graphic.sty +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-graphic.sty @@ -33,16 +33,15 @@ %% %% %% File: latex-lab-graphic.dtx (C) Copyright 2022-2023 LaTeX Project -\ProvidesExplPackage {latex-lab-testphase-graphic} {2023-04-07} {0.8} +\def\ltlabgraphicdate{2023-10-13} +\def\ltlabgraphicversion{0.80b} +\ProvidesExplPackage {latex-lab-testphase-graphic} {\ltlabgraphicdate} {\ltlabgraphicversion} {Code related to the tagging of graphics} \RequirePackage{l3opacity} -\ref_attribute_gset:nnnn{xpos}{0}{shipout}{\int_use:N\tex_lastxpos:D} -\ref_attribute_gset:nnnn{ypos}{0}{shipout}{\int_use:N\tex_lastypos:D} - \cs_new_protected:Npn\__tag_graphic_savepos:n #1 { \tex_savepos:D - \ref_label:nn{#1}{xpos,ypos,abspage} + \property_record:nn{#1}{xpos,ypos,abspage} \tex_savepos:D } \cs_generate_variant:Nn \__tag_graphic_savepos:n {e} @@ -105,8 +104,8 @@ { \tl_if_empty:NT\l__tag_graphic_alt_tl { - \msg_warning:nnx{tag}{alt-text-missing}{\l__tag_graphic_alt_dflt_tl} - \tl_set:Nx\l__tag_graphic_alt_tl {\l__tag_graphic_alt_dflt_tl} + \msg_warning:nne{tag}{alt-text-missing}{\l__tag_graphic_alt_dflt_tl} + \tl_set:Ne\l__tag_graphic_alt_tl {\l__tag_graphic_alt_dflt_tl} } \tag_struct_begin:n { @@ -196,7 +195,7 @@ } \AddToHook{package/graphicx/after}[latex-lab] { - \define@key{Gin}{alt} {\tl_set:Nx\l__tag_graphic_alt_tl{\text_purify:n{#1}}} + \define@key{Gin}{alt} {\tl_set:Ne\l__tag_graphic_alt_tl{\text_purify:n{#1}}} \define@key{Gin}{artifact}[] { \bool_set_true:N \l__tag_graphic_artifact_bool @@ -204,7 +203,7 @@ } \define@key{Gin}{actualtext} { - \tl_set:Nx\l__tag_graphic_actual_tl{\text_purify:n{#1}} + \tl_set:Ne\l__tag_graphic_actual_tl{\text_purify:n{#1}} \bool_set_false:N \l__tag_graphic_BBox_bool } \define@key{Gin}{correct-BBox} @@ -231,7 +230,7 @@ \keys_define:nn{tag/picture} { ,alt .code:n = - {\tl_set:Nx\l__tag_graphic_alt_tl{\text_purify:n{#1}}} + {\tl_set:Ne\l__tag_graphic_alt_tl{\text_purify:n{#1}}} ,artifact .code:n = { \bool_set_true:N \l__tag_graphic_artifact_bool @@ -239,7 +238,7 @@ } ,actualtext .code:n = { - \tl_set:Nx\l__tag_graphic_actual_tl{\text_purify:n{#1}} + \tl_set:Ne\l__tag_graphic_actual_tl{\text_purify:n{#1}} \bool_set_false:N \l__tag_graphic_BBox_bool } ,correct-BBox .code:n = @@ -284,7 +283,12 @@ } \cs_new_protected:Npn \__tag_graphic_get_scale: { - \fp_set:Nn \l__tag_graphic_scale_fp { \Gin@scalex } + \fp_set:Nn \l__tag_graphic_scale_fp + { + \str_if_eq:eeTF {\Gin@scalex} { ! } + { \Gin@scaley } + { \Gin@scalex } + } } \cs_new_protected:Npn \__tag_graphic_applyangle:nnnn #1#2#3#4 %lx,ly,ux,uy { @@ -325,7 +329,7 @@ (\l__tag_graphic_uy_fp-\l__tag_graphic_ly_fp-\l__tag_graphic_trim_ly_fp) * (-\l__tag_graphic_sin_fp) } - \tl_gset:Nx\g__tag_graphic_lx_tl + \tl_gset:Ne\g__tag_graphic_lx_tl { \fp_eval:n { @@ -340,7 +344,7 @@ +\l__tag_graphic_trim_lx_fp } } - \tl_gset:Nx\g__tag_graphic_ux_tl + \tl_gset:Ne\g__tag_graphic_ux_tl { \fp_eval:n { @@ -381,7 +385,7 @@ (\l__tag_graphic_uy_fp-\l__tag_graphic_ly_fp-\l__tag_graphic_trim_ly_fp) * \l__tag_graphic_cos_fp } - \tl_gset:Nx\g__tag_graphic_ly_tl + \tl_gset:Ne\g__tag_graphic_ly_tl { \fp_eval:n { @@ -395,7 +399,7 @@ + \l__tag_graphic_ly_fp + \l__tag_graphic_trim_ly_fp } } - \tl_gset:Nx\g__tag_graphic_uy_tl + \tl_gset:Ne\g__tag_graphic_uy_tl { \fp_eval:n { @@ -416,7 +420,7 @@ { \bool_if:NT\l__tag_graphic_bboxcorr_bool { - \tl_set:Nx #1 + \tl_set:Ne #1 { \fp_eval:n { @@ -425,7 +429,7 @@ \dim_to_decimal_in_bp:n {\seq_item:Nn \l__tag_graphic_bboxcorr_seq {1} } } } - \tl_set:Nx #2 + \tl_set:Ne #2 { \fp_eval:n { @@ -434,7 +438,7 @@ \dim_to_decimal_in_bp:n {\seq_item:Nn \l__tag_graphic_bboxcorr_seq {2} } } } - \tl_set:Nx #3 + \tl_set:Ne #3 { \fp_eval:n { @@ -443,7 +447,7 @@ \dim_to_decimal_in_bp:n {\seq_item:Nn \l__tag_graphic_bboxcorr_seq {3} } } } - \tl_set:Nx #4 + \tl_set:Ne #4 { \fp_eval:n { @@ -463,22 +467,22 @@ {\l__tag_graphic_BBox_bool} } { - \fp_set:Nn \l__tag_graphic_scale_fp { \Gin@scalex } + \__tag_graphic_get_scale: \__tag_graphic_get_trim: \int_gincr:N\g__tag_graphic_int - \tl_set:Nx\l__tag_graphic_currentlabel_tl {__tag_graphic_\int_use:N \g__tag_graphic_int} + \tl_set:Ne\l__tag_graphic_currentlabel_tl {__tag_graphic_\int_use:N \g__tag_graphic_int} \__tag_graphic_savepos:e { \l__tag_graphic_currentlabel_tl } - \tl_gset:Nx\g__tag_graphic_lx_tl + \tl_gset:Ne\g__tag_graphic_lx_tl { \dim_to_decimal_in_bp:n - { \__tag_ref_value:enn {\l__tag_graphic_currentlabel_tl}{xpos}{0}sp } + { \property_ref:een {\l__tag_graphic_currentlabel_tl}{xpos}{0}sp } } - \tl_gset:Nx\g__tag_graphic_ly_tl + \tl_gset:Ne\g__tag_graphic_ly_tl { \dim_to_decimal_in_bp:n - { \__tag_ref_value:enn {\l__tag_graphic_currentlabel_tl}{ypos}{0}sp } + { \property_ref:een {\l__tag_graphic_currentlabel_tl}{ypos}{0}sp } } - \tl_gset:Nx\g__tag_graphic_ux_tl + \tl_gset:Ne\g__tag_graphic_ux_tl { \fp_eval:n { @@ -487,7 +491,7 @@ \dim_to_decimal_in_bp:n { \Gin@req@width } } } - \tl_gset:Nx\g__tag_graphic_uy_tl + \tl_gset:Ne\g__tag_graphic_uy_tl { \fp_eval:n { @@ -498,7 +502,7 @@ } \legacy_if:nF {Gin@clip} { - \tl_gset:Nx\g__tag_graphic_ux_tl + \tl_gset:Ne\g__tag_graphic_ux_tl { \fp_eval:n { @@ -507,7 +511,7 @@ \l__tag_graphic_trim_ux_fp } } - \tl_gset:Nx\g__tag_graphic_lx_tl + \tl_gset:Ne\g__tag_graphic_lx_tl { \fp_eval:n { @@ -516,7 +520,7 @@ \l__tag_graphic_trim_lx_fp } } - \tl_gset:Nx\g__tag_graphic_uy_tl + \tl_gset:Ne\g__tag_graphic_uy_tl { \fp_eval:n { @@ -525,7 +529,7 @@ \l__tag_graphic_trim_uy_fp } } - \tl_gset:Nx\g__tag_graphic_ly_tl + \tl_gset:Ne\g__tag_graphic_ly_tl { \fp_eval:n { @@ -581,26 +585,26 @@ } { \int_gincr:N\g__tag_graphic_int - \tl_set:Nx\l__tag_graphic_currentlabel_tl {__tag_graphic_\int_use:N \g__tag_graphic_int} + \tl_set:Ne\l__tag_graphic_currentlabel_tl {__tag_graphic_\int_use:N \g__tag_graphic_int} \__tag_graphic_savepos:e { \l__tag_graphic_currentlabel_tl } - \tl_gset:Nx \g__tag_graphic_lx_tl + \tl_gset:Ne \g__tag_graphic_lx_tl { \dim_to_decimal_in_bp:n - { \__tag_ref_value:enn {\l__tag_graphic_currentlabel_tl}{xpos}{0}sp } + { \property_ref:een {\l__tag_graphic_currentlabel_tl}{xpos}{0}sp } } - \tl_gset:Nx \g__tag_graphic_ly_tl + \tl_gset:Ne \g__tag_graphic_ly_tl { \dim_to_decimal_in_bp:n - { \__tag_ref_value:enn {\l__tag_graphic_currentlabel_tl}{ypos}{0}sp - \dp\@picbox } + { \property_ref:een {\l__tag_graphic_currentlabel_tl}{ypos}{0}sp - \dp\@picbox } } - \tl_gset:Nx \g__tag_graphic_ux_tl + \tl_gset:Ne \g__tag_graphic_ux_tl { \dim_to_decimal_in_bp:n { \g__tag_graphic_lx_tl bp + \wd\@picbox } } - \tl_gset:Nx \g__tag_graphic_uy_tl + \tl_gset:Ne \g__tag_graphic_uy_tl { \dim_to_decimal_in_bp:n { @@ -673,7 +677,7 @@ \int_compare:nNnT {\g_shipout_readonly_int} = - {\__tag_ref_value:enn{__tag_graphic_#6}{abspage}{0}} + {\property_ref:een{__tag_graphic_#6}{abspage}{0}} { \put (#1 bp,\dim_eval:n{-\paperheight + \dim_eval:n{#2 bp}}) diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-math.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-math.sty index efda100178d..592dca80c1b 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-math.sty +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-math.sty @@ -4,7 +4,7 @@ %% %% The original source files were: %% -%% latex-lab-testphase.dtx (with options: `math-sty') +%% latex-lab-testphase.dtx (with options: `math-package') %% %% This is a generated file. %% @@ -34,9 +34,10 @@ %% %% File: latex-lab-testphase.dtx + \ProvidesPackage{latex-lab-testphase-math} - [2023-01-07 v0.8 code related to the math tagging] -\input{latex-lab-mathtagging.ltx} + [2023-07-20 v0.8a code related to the math tagging] +\input{latex-lab-math.ltx} \input{latex-lab-amsmath.ltx} \input{latex-lab-mathtools.ltx} \input{latex-lab-mathpkg.ltx} diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-minipage.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-minipage.sty index b6f6fe4357a..1f8c5eb5b42 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-minipage.sty +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-minipage.sty @@ -33,33 +33,34 @@ %% %% %% File: latex-lab-minipage.dtx (C) Copyright 2023 LaTeX Project - -\def\ltlistsversion{v0.81} -\def\ltlistsdate{2023/05/10} - -\ProvidesExplPackage {latex-lab-testphase-minipage} {2023-05-10} {0.81} +\def\ltlabminipagedate{2023-10-30} +\def\ltlabminipageversion{0.81c} +\ProvidesExplPackage {latex-lab-testphase-minipage} + {\ltlabminipagedate} {\ltlabminipageversion} {Code related to the tagging of minipages and parboxes} +\RequirePackage{latex-lab-testphase-new-or-1} +\RequirePackage{latex-lab-testphase-new-or-2} \def\@kernel@init@minipage{} \def\@kernel@init@parbox{} -\def\@kernel@before@minipage{} -\def\@kernel@after@minipage{} -\def\@kernel@before@parbox{} -\def\@kernel@after@parbox{} +\socket_new:nn {tagsupport/minipage/before}{0} +\socket_new:nn {tagsupport/minipage/after} {0} +\socket_new:nn {tagsupport/parbox/before} {0} +\socket_new:nn {tagsupport/parbox/after}{0} \def\@iiiminipage#1#2[#3]#4{% \@kernel@init@minipage \leavevmode \@pboxswfalse \setlength\@tempdima{#4}% \def\@mpargs{{#1}{#2}[#3]{#4}}% - \@kernel@before@minipage% new + \socket_use:n{tagsupport/minipage/before}% new \setbox\@tempboxa\vbox\bgroup \color@begingroup \hsize\@tempdima \textwidth\hsize \columnwidth\hsize \@parboxrestore \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@ - \let\@footnotetext\@mpfootnotetext + \socket_assign_plug:nn{fntext/process}{mp}% \let\@listdepth\@mplistdepth \@mplistdepth\z@ \@minipagerestore \@setminipage} @@ -78,14 +79,14 @@ \tag_stop:n{minipage} \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}% \tag_start:n{minipage} - \@kernel@after@minipage%new end ... + \socket_use:n{tagsupport/minipage/after} %new end ... } \long\def\@iiiparbox#1#2[#3]#4#5{% \@kernel@init@parbox \leavevmode \@pboxswfalse \setlength\@tempdima{#4}% - \@kernel@before@parbox% new + \socket_use:n{tagsupport/parbox/before} \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}% \ifx\relax#2\else \setlength\@tempdimb{#2}% @@ -100,20 +101,27 @@ \csname bm@#3\endcsname}% \if@pboxsw \m@th$\fi \@end@tempboxa% - \@kernel@after@parbox%new end + \socket_use:n{tagsupport/parbox/after} } \tl_new:N \l__ltboxes_tag_tl \tl_set:Nn \l__ltboxes_tag_tl {Div} -\cs_set_protected:Npn\@kernel@before@minipage +\socket_new_plug:nnn{tagsupport/minipage/before}{tag/dflt} { \tag_mc_end_push:\tag_struct_end: - \tag_struct_begin:n{tag=\l__ltboxes_tag_tl}} -\cs_set_protected:Npn\@kernel@after@minipage + \tag_struct_begin:n{tag=\l__ltboxes_tag_tl} + } +\socket_new_plug:nnn{tagsupport/minipage/after}{tag/dflt} {\tag_struct_end:\tag_struct_begin:n{tag=\l__tag_para_tag_tl}\tag_mc_begin_pop:n{}} -\cs_set_protected:Npn\@kernel@before@parbox + +\socket_new_plug:nnn{tagsupport/parbox/before}{tag/dflt} {\tag_mc_end_push:\tag_struct_end:\tag_struct_begin:n{tag=\l__ltboxes_tag_tl}} -\cs_set_protected:Npn\@kernel@after@parbox + +\socket_new_plug:nnn{tagsupport/parbox/after}{tag/dflt} {\tag_struct_end:\tag_struct_begin:n{tag=\l__tag_para_tag_tl}\tag_mc_begin_pop:n{}} +\socket_assign_plug:nn{tagsupport/minipage/before}{tag/dflt} +\socket_assign_plug:nn{tagsupport/minipage/after} {tag/dflt} +\socket_assign_plug:nn{tagsupport/parbox/before} {tag/dflt} +\socket_assign_plug:nn{tagsupport/parbox/after} {tag/dflt} \endinput %% diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-new-or-1.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-new-or-1.sty index a0c12a56ee0..167c5d6130e 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-new-or-1.sty +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-new-or-1.sty @@ -4,7 +4,7 @@ %% %% The original source files were: %% -%% latex-lab-new-or-1.dtx (with options: `code') +%% latex-lab-new-or-1.dtx (with options: `package') %% %% This is a generated file. %% @@ -33,8 +33,11 @@ %% %% %% File: latex-lab-new-or-1.dtx (C) Copyright 2020-2023 Frank Mittelbach +\def\ltlabneworIdate{2023-07-20} +\def\ltlabneworIversion{0.85a} \ProvidesPackage{latex-lab-testphase-new-or-1} - [2022-11-94 v0.1a Temporary output patches for tagging and better link support] + [\ltlabneworIdate\space v\ltlabneworIversion\space + Temporary output patches for tagging and better link support] \RequirePackage{etoolbox} \providecommand\@kernel@before@head{} \providecommand\@kernel@before@foot{} @@ -51,17 +54,36 @@ {\color@hbox\normalcolor\hb@xt@\textwidth{\@thefoot}\color@endbox} {\@kernel@before@foot\color@hbox\normalcolor\hb@xt@\textwidth{\@thefoot}\color@endbox\@kernel@after@foot} {\typeout{Patching footer in \string\@outputpage}}{\PATCHerror } - \providecommand\@kernel@before@footins{} - \providecommand\@kernel@before@cclv{} +\providecommand\@kernel@before@footins{} +\providecommand\@kernel@tagsupport@@makecol{} - \patchcmd\@makecol - {\vskip\skip\footins} - {\vskip\skip\footins\@kernel@before@footins} - {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror } +\patchcmd\@makecol + {\vskip\skip\footins} + {\vskip\skip\footins\@kernel@before@footins} + {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror } +\patchcmd\@makecol + {\let\@elt\relax} + {\@kernel@tagsupport@@makecol\let\@elt\relax} + {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror } - \pretocmd\@makecol{\@kernel@before@cclv} - {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror } +\AddToHook{package/footmisc/after} + {% + \def\@makecol{% + \setbox\@outputbox \box\@cclv + \@outputbox@removebskip + \@kernel@tagsupport@@makecol + \let\@elt\relax + \xdef\@freelist{\@freelist\@midlist}% + \global \let \@midlist \@empty + \@makecol@appendblocks + \ifvbox\@kludgeins + \@makespecialcolbox + \else + \@makenormalcolbox + \fi + \global \maxdepth \@maxdepth} +} \AddToHook{package/multicol/after} {% multicol needs later loading \patchcmd\page@sofar diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-new-or-2.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-new-or-2.sty index 7b7be705354..cb81b74c017 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-new-or-2.sty +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-new-or-2.sty @@ -4,7 +4,7 @@ %% %% The original source files were: %% -%% latex-lab-new-or-2.dtx (with options: `code') +%% latex-lab-new-or-2.dtx (with options: `package') %% %% This is a generated file. %% @@ -33,25 +33,29 @@ %% %% %% File: latex-lab-new-or-2.dtx +\def\ltlabneworIIdate{2023-09-04} +\def\ltlabneworIIversion{0.85c} + \ProvidesPackage{latex-lab-testphase-new-or-2} - [2022-11-04 v0.1c changes to the output routine] + [\ltlabneworIIdate\space v\ltlabneworIIversion\space + Changes to the output routine] \def \@makecol {% - \@kernel@before@cclv \setbox\@outputbox \box\@cclv \@outputbox@removebskip + \@kernel@tagsupport@@makecol \let\@elt\relax \xdef\@freelist{\@freelist\@midlist}% \global \let \@midlist \@empty - \@makecol@cfgpoint + \UseSocket{@makecol/outputbox}% \ifvbox\@kludgeins - \@makespecialcolbox + \@make@specialcolbox \else - \@makenormalcolbox + \@make@normalcolbox \fi \global \maxdepth \@maxdepth } \newdimen\@outputbox@depth -\def \@makenormalcolbox {% +\def \@make@normalcolbox {% \setbox\@outputbox \vbox to\@colht {% \@texttop \@outputbox@depth \dp\@outputbox @@ -60,7 +64,7 @@ \@textbottom }% } -\def \@makespecialcolbox {% +\def \@make@specialcolbox {% \@outputbox@append {\vskip-\@outputbox@depth}% \@tempdima \@colht \ifdim \wd\@kludgeins>\z@ @@ -109,7 +113,7 @@ \def\@outputbox@appendfootnotes {% \ifvoid\footins \else \@makecol@handlesplitfootnotes - \@makecol@cfgpointii + \UseSocket{@makecol/footnotes}% \@outputbox@append{% \vskip \skip\footins \@kernel@before@footins @@ -135,7 +139,7 @@ \fi } \let \@makecol@splitfootnotemessagehook \@empty -\let \@makecol@cfgpointii \@empty +\NewSocket{@makecol/footnotes}{0} \def\@if@flushbottom@TF{% \ifx\@textbottom\relax \expandafter\@firstoftwo @@ -157,11 +161,51 @@ \expandafter\@firstoftwo \fi } - \def\@makecol@cfgpoint {% - \@outputbox@appendfootnotes - \@outputbox@attachfloats - \@outputbox@reinsertbskip - } +\NewSocket{@makecol/outputbox}{0} +\NewSocketPlug {@makecol/outputbox}{space-footnotes-floats} {% + \@if@footnotes@TF + {\@outputbox@append{\vfill}}% + {\@if@bfloats@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}% + }% + \@outputbox@appendfootnotes + \@outputbox@attachfloats +} +\NewSocketPlug {@makecol/outputbox}{floats-footnotes-space} {% + \@outputbox@attachfloats + \@if@footnotes@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}% + \@outputbox@appendfootnotes +} +\NewSocketPlug {@makecol/outputbox}{footnotes-space-floats} {% + \@outputbox@appendfootnotes + \@if@bfloats@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}% + \@outputbox@attachfloats +} +\NewSocketPlug {@makecol/outputbox}{space-floats-footnotes} {% + \@if@footnotes@TF + {\@outputbox@append{\vfill}}% + {\@if@bfloats@TF + {\@outputbox@append{\vfill}}% + {\@outputbox@reinsertbskip}}% + \@outputbox@attachfloats + \@outputbox@appendfootnotes +} +\NewSocketPlug {@makecol/outputbox}{floats-footnotes} {% + \@outputbox@attachfloats + \@outputbox@appendfootnotes + \@outputbox@reinsertbskip +} +\NewSocketPlug {@makecol/outputbox}{footnotes-floats} {% + \@outputbox@appendfootnotes + \@outputbox@attachfloats + \@outputbox@reinsertbskip +} +\AssignSocketPlug {@makecol/outputbox}{footnotes-floats} \declare@file@substitution{footmisc.sty}{latex-lab-footmisc.ltx} \input{latex-lab-footnotes.ltx} \endinput diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-sec.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-sec.sty index 37d260300ad..9e98894969c 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-sec.sty +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-sec.sty @@ -33,7 +33,9 @@ %% %% %% File: latex-lab-sec.dtx (C) Copyright 2022-2023 LaTeX Project -\ProvidesExplPackage {latex-lab-testphase-sec} {2023-05-20} {0.81} +\def\ltlabsecdate{2023-10-16} +\def\ltlabsecversion{0.84b} +\ProvidesExplPackage {latex-lab-testphase-sec} {\ltlabsecdate} {\ltlabsecversion} {Code related to the tagging of sectioning commands} \RequirePackage{latex-lab-kernel-changes} \seq_new:N \g__tag_sec_stack_seq @@ -161,31 +163,34 @@ { \@ifundefined{chapter} { - \RenewDocumentCommand\part{ s O{#3} m } + \@ifundefined{part}{} { - \if@noskipsec \leavevmode \fi - \par - \addvspace{4ex}% - \@afterindentfalse + \RenewDocumentCommand\part{ s O{#3} m } + { + \if@noskipsec \leavevmode \fi + \par + \addvspace{4ex}% + \@afterindentfalse % tagging start commands - \tag_tool:n {sec-start-part=#2} + \tag_tool:n {sec-start-part=#2} % end tagging start commands - \bool_lazy_any:nT - { - { #1 } + \bool_lazy_any:nT { - \int_compare_p:nNn {\c@secnumdepth}<{-1} + { #1 } + { + \int_compare_p:nNn {\c@secnumdepth}<{-1} + } } - } - { - \MakeLinkTarget[part]{} - } - \IfBooleanTF - {#1} - { \@spart {#3} } - { \@part [#2]{#3} } - \tag_tool:n {sec-stop-part} - } + { + \MakeLinkTarget[part]{} + } + \IfBooleanTF + {#1} + { \@spart {#3} } + { \@part [#2]{#3} } + \tag_tool:n {sec-stop-part} + } + } } { \RenewDocumentCommand\chapter{ s O{#3} m } @@ -210,11 +215,6 @@ } { \MakeLinkTarget[chapter]{} - %todo public function for this update! - \tl_if_blank:VF \@currentHref - { - \prop_gput:Nxx \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} - } } \IfBooleanTF {#1} @@ -253,10 +253,6 @@ } { \MakeLinkTarget[part]{} - \tl_if_blank:VF \@currentHref - { - \prop_gput:Nxx \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} - } } \IfBooleanTF {#1} @@ -268,18 +264,14 @@ } \def\hyper@nopatch@sectioning{} \cs_new_protected:Npn \@hyp@section@target@nnn #1 #2 #3 %#1 optarg #2 name/counter, #3 indent - { - \makebox[0pt][l] + { + \makebox[0pt][l] { \skip_set:Nn \@tempskipa {#3} \dim_compare:nNnF {\@tempskipa}<{0pt}{\kern-\@tempskipa} \MakeLinkTarget#1{#2} } - \tl_if_blank:VF \@currentHref - { - \prop_gput:Nxx \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} - } - } + } \def\@startsection#1#2#3#4#5#6{% \if@noskipsec \leavevmode \fi \par diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-table.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-table.sty new file mode 100644 index 00000000000..e6c89d16715 --- /dev/null +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-table.sty @@ -0,0 +1,977 @@ +%% +%% This is file `latex-lab-testphase-table.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% latex-lab-table.dtx (with options: `package') +%% +%% This is a generated file. +%% +%% Copyright 2021-2023 LaTeX Project +%% +%% This file was generated from file(s) of the `LaTeX-lab Bundle'. +%% ------------------------------------------------------------------------------------ +%% +%% 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 +%% http://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 may only be distributed together with a copy of the LaTeX +%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle' +%% without such generated files. +%% +%% The newest sources can be found below +%% +%% https://github.com/latex3/latex2e/required/latex-lab +%% +%% where one can also log issues in case there are any. +%% +%% +%% File: latex-lab-table.dtx (C) Copyright 2023 LaTeX Project +\def\ltlabtbldate{2023-10-30} +\def\ltlabtblversion{0.85d} +\ProvidesExplPackage {latex-lab-testphase-table} {\ltlabtbldate} {\ltlabtblversion} + {Code related to the tagging of tables} +\RequirePackage{array} +\tl_new:N \l__tbl_celltag_tl +\tl_set:Nn \l__tbl_celltag_tl {TD} +\tl_new:N \l__tbl_rowtag_tl +\tl_set:Nn \l__tbl_rowtag_tl {TR} +\tl_new:N \l__tbl_cellattribute_tl +\tl_set:Nn \l__tbl_cellattribute_tl {} +\tl_new:N \l__tbl_rowattribute_tl +\tl_set:Nn \l__tbl_rowattribute_tl {} +\int_new:N \g__tbl_missing_cells_int +\clist_new:N \l__tbl_tmpa_clist +\seq_new:N \l__tbl_tmpa_seq +\tl_new:N \l__tbl_tmpa_tl +\NewSocket{tagsupport/tblcell/begin}{0} +\NewSocket{tagsupport/tblcell/end}{0} +\NewSocket{tagsupport/tblrow/begin}{0} +\NewSocket{tagsupport/tblrow/end}{0} +\NewSocket{tagsupport/tbl/init}{0} +\NewSocket{tagsupport/tbl/finalize}{0} +\NewSocket{tagsupport/tbl/finalize/longtable}{0} +\NewSocket{tagsupport/tblhmode/begin}{0} +\NewSocket{tagsupport/tblhmode/end}{0} +\NewSocket{tagsupport/tblvmode/begin}{0} +\NewSocket{tagsupport/tblvmode/end}{0} +\NewSocketPlug{tagsupport/tblcell/begin}{TD} + { + \tag_struct_begin:n + { + tag =\l__tbl_celltag_tl, + attribute-class =\l__tbl_cellattribute_tl + } + \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} } + \int_step_inline:nn { \g__tbl_span_tl - 1 } + { + \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} } + } + \tag_mc_begin:n{} + } +\NewSocketPlug{tagsupport/tblcell/end}{TD} + { + \tag_mc_end: + \tag_struct_end: + } +\NewSocketPlug{tagsupport/tblcell/begin}{TDpbox} + { + \tag_struct_begin:n + { + tag =\l__tbl_celltag_tl, + attribute-class =\l__tbl_cellattribute_tl + } + \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} } + \int_step_inline:nn { \g__tbl_span_tl - 1 } + { + \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} } + } + \tagpdfparaOn + \tl_set:Nn \l__tag_para_main_tag_tl {Div} + } +\NewSocketPlug{tagsupport/tblcell/end}{TDpbox} + { + \tag_struct_end: + } +\NewSocketPlug{tagsupport/tblrow/begin}{TR} + { + \seq_gclear:N \g__tbl_struct_cur_seq + \tag_struct_begin:n + { + tag =\l__tbl_rowtag_tl, + attribute-class=\l__tbl_rowattribute_tl + } + \seq_gput_right:Ne \g__tbl_struct_rows_seq { \tag_get:n {struct_num} } + } +\NewSocketPlug{tagsupport/tblrow/end}{TR} + { + \__tag_tbl_add_missing_cells:n { \g__tbl_missing_cells_int } + \seq_gput_right:Ne \g__tbl_struct_cells_seq + { + \seq_use:Nn \g__tbl_struct_cur_seq {,} + } + \int_compare:nNnTF { \g__tbl_row_int } = { \seq_count:N\g__tbl_struct_cells_seq } + { + \typeout + {==>~ + stucture~stored~for~row~\int_use:N\g__tbl_row_int :~ + \seq_use:Nn \g__tbl_struct_cur_seq {,} + } + } + { \ERROR } % should not happen ... + \tag_struct_end: + } +\NewSocketPlug{tagsupport/tbl/init}{Table} + { + \tag_if_active:T + { + \bool_set_false:N \l__tag_para_bool + } + } +\NewSocketPlug{tagsupport/tbl/finalize}{Table} + { + \__tbl_set_header_rows: + } +\NewSocketPlug{tagsupport/tbl/finalize/longtable}{Table} + { + \bool_lazy_and:nnTF + { \seq_if_empty_p:N \g__tbl_LT@head_rows_seq } + { \seq_if_empty_p:N \g__tbl_LT@firsthead_rows_seq } + { \__tbl_set_header_rows: } + { + \seq_if_empty:NTF \g__tbl_LT@firsthead_rows_seq + { + \clist_set:Ne \l__tbl_header_rows_clist + {\seq_use:Nn \g__tbl_LT@head_rows_seq {,}} + \__tbl_set_header_rows: + } + { + \clist_set:Ne \l__tbl_header_rows_clist + { \seq_use:Nn \g__tbl_LT@firsthead_rows_seq {,} } + \__tbl_set_header_rows: + \pdf_version_compare:NnTF < {2.0} + { + \seq_map_inline:Nn \g__tbl_LT@head_rows_seq + { + \seq_gset_item:cnn + {g__tag_struct_kids_ \g__tbl_struct_table_tl _seq} + { ##1 } + {} + \tl_set:Ne \l__tbl_tmpa_tl + { \seq_item:Nn\g__tbl_struct_rows_seq {##1} } + \prop_if_exist:cT + { g__tag_struct_ \l__tbl_tmpa_tl _prop } + { + %\prop_gremove:cn {g__tag_struct_ \l__tbl_tmpa_tl _prop} {P} + } + } + } + { + \seq_map_inline:Nn \g__tbl_LT@head_rows_seq + { + \tl_set:Ne \l__tbl_tmpa_tl + { \seq_item:Nn\g__tbl_struct_rows_seq {##1} } + \prop_if_exist:cT + { g__tag_struct_ \l__tbl_tmpa_tl _prop } + { + \__tbl_struct_prop_gput:Vnn \l__tbl_tmpa_tl {S}{/Artifact} + } + } + } + } + } + \bool_lazy_and:nnF + { \seq_if_empty_p:N \g__tbl_LT@foot_rows_seq } + { \seq_if_empty_p:N \g__tbl_LT@lastfoot_rows_seq } + { + \seq_if_empty:NTF \g__tbl_LT@lastfoot_rows_seq + { + \seq_map_inline:Nn \g__tbl_LT@foot_rows_seq + { + \tl_set:Ne \l__tbl_tmpa_tl + { + \seq_item:cn + {g__tag_struct_kids_ \g__tbl_struct_table_tl _seq} + {##1} + } + \seq_gset_item:cnn + {g__tag_struct_kids_ \g__tbl_struct_table_tl _seq} + { ##1 } + {} + \seq_gput_right:cV + {g__tag_struct_kids_ \g__tbl_struct_table_tl _seq} + \l__tbl_tmpa_tl + } + } + { + \seq_map_inline:Nn \g__tbl_LT@lastfoot_rows_seq + { + \tl_set:Ne \l__tbl_tmpa_tl + { + \seq_item:cn + {g__tag_struct_kids_ \g__tbl_struct_table_tl _seq} + {##1} + } + \seq_gset_item:cnn + {g__tag_struct_kids_ \g__tbl_struct_table_tl _seq} + { ##1 } + {} + \seq_gput_right:cV + {g__tag_struct_kids_ \g__tbl_struct_table_tl _seq} + \l__tbl_tmpa_tl + } + \pdf_version_compare:NnTF < {2.0} + { + \seq_map_inline:Nn \g__tbl_LT@foot_rows_seq + { + \seq_gset_item:cnn + {g__tag_struct_kids_ \g__tbl_struct_table_tl _seq} + { ##1 } + {} + \tl_set:Ne \l__tbl_tmpa_tl + { \seq_item:Nn\g__tbl_struct_rows_seq {##1} } + \prop_if_exist:cT + { g__tag_struct_ \l__tbl_tmpa_tl _prop } + { + %\prop_gremove:cn {g__tag_struct_ \l__tbl_tmpa_tl _prop} {P} + } + } + } + { + \seq_map_inline:Nn \g__tbl_LT@foot_rows_seq + { + \tl_set:Ne \l__tbl_tmpa_tl + { \seq_item:Nn\g__tbl_struct_rows_seq {##1} } + \prop_if_exist:cT + { g__tag_struct_ \l__tbl_tmpa_tl _prop } + { + \__tbl_struct_prop_gput:Vnn \l__tbl_tmpa_tl {S}{/Artifact} + } + } + } + } + } + } +\NewSocketPlug{tagsupport/tblhmode/begin}{Table} + { + \mode_leave_vertical: + \tag_mc_end_push: + \bool_lazy_and:nnT + { \bool_if_exist_p:N \l__tag_para_bool } { \l__tag_para_bool } + { \tag_struct_end:n { text } } + \tag_struct_begin:n {tag=Table} + \tl_gset:Ne \g__tbl_struct_table_tl { \tag_get:n {struct_num} } + } +\NewSocketPlug{tagsupport/tblhmode/end}{Table} + { + \tag_struct_end: + \bool_lazy_and:nnT + { \bool_if_exist_p:N \l__tag_para_bool } { \l__tag_para_bool } + { \tag_struct_begin:n { tag=\l__tag_para_tag_tl } } + \tag_mc_begin_pop:n{} + } +\NewSocketPlug{tagsupport/tblvmode/begin}{Table} + { + \tag_struct_begin:n {tag=Table} + \tl_gset:Ne \g__tbl_struct_table_tl { \tag_get:n {struct_num} } + } +\NewSocketPlug{tagsupport/tblvmode/end}{Table} + { + \tag_struct_end: + \par + } +\AddToHook{env/tabular/before} {\UseSocket{tagsupport/tblhmode/begin}} +\AddToHook{env/tabular/after} {\UseSocket{tagsupport/tblhmode/end}} +\AddToHook{env/tabular*/before} {\UseSocket{tagsupport/tblhmode/begin}} +\AddToHook{env/tabular*/after} {\UseSocket{tagsupport/tblhmode/end}} +\AddToHook{env/tabularx/before} {\UseSocket{tagsupport/tblhmode/begin}} +\AddToHook{env/tabularx/after} {\UseSocket{tagsupport/tblhmode/end}} +\AddToHook{env/longtable/before}{\UseSocket{tagsupport/tblvmode/begin}} +\AddToHook{env/longtable/after} {\UseSocket{tagsupport/tblvmode/end}} +\AddToHook{env/array/begin} {\__tag_tbl_disable:} +\tag_if_active:T + { \cs_generate_variant:Nn \__tag_attr_new_entry:nn {ee} } +\cs_new_protected:Npn \__tbl_set_colspan:n #1 + { + \tag_if_active:T + { + \int_compare:nNnT {#1}>{1} + { + \prop_get:NeNF \g__tag_attr_entries_prop + {colspan-\int_eval:n{#1}} + \l__tbl_tmpa_tl + { + \__tag_attr_new_entry:ee + {colspan-\int_eval:n{#1}} + {/O /Table /ColSpan~\int_eval:n{#1}} + } + \tl_set:Ne \l__tbl_cellattribute_tl + {colspan-\int_eval:n{#1}} + } + } + } + +\cs_new_protected:Npn \__tag_tbl_disable: + { + \AssignSocketPlug{tagsupport/tblcell/begin}{noop} + \AssignSocketPlug{tagsupport/tblcell/end}{noop} + \AssignSocketPlug{tagsupport/tblrow/begin}{noop} + \AssignSocketPlug{tagsupport/tblrow/end}{noop} + \AssignSocketPlug{tagsupport/tbl/init}{noop} + \AssignSocketPlug{tagsupport/tbl/finalize}{noop} + \AssignSocketPlug{tagsupport/tbl/finalize/longtable}{noop} + \AssignSocketPlug{tagsupport/tblhmode/begin}{noop} + \AssignSocketPlug{tagsupport/tblhmode/end}{noop} + \AssignSocketPlug{tagsupport/tblvmode/begin}{noop} + \AssignSocketPlug{tagsupport/tblvmode/end}{noop} + } + +\cs_new_protected:Npn \__tag_tbl_enable: + { + \AssignSocketPlug{tagsupport/tblcell/begin}{TD} + \AssignSocketPlug{tagsupport/tblcell/end}{TD} + \AssignSocketPlug{tagsupport/tblrow/begin}{TR} + \AssignSocketPlug{tagsupport/tblrow/end}{TR} + \AssignSocketPlug{tagsupport/tbl/init}{Table} + \AssignSocketPlug{tagsupport/tbl/finalize}{Table} + \AssignSocketPlug{tagsupport/tbl/finalize/longtable}{Table} + \AssignSocketPlug{tagsupport/tblhmode/begin}{Table} + \AssignSocketPlug{tagsupport/tblhmode/end}{Table} + \AssignSocketPlug{tagsupport/tblvmode/begin}{Table} + \AssignSocketPlug{tagsupport/tblvmode/end}{Table} + } + +\keys_define:nn { __tag / setup } + { + table-tagging .choices:nn = { true, on } + { \__tag_tbl_enable: }, + table-tagging .choices:nn = { false, off } + { \__tag_tbl_disable: }, + table-tagging .default:n = true, + table-tagging .initial:n = true + } +\AddToHook{begindocument} + { + \cs_if_exist:NT \@kernel@before@head + { + \tl_put_right:Nn \@kernel@before@head {\__tag_tbl_disable:} + \tl_put_right:Nn \@kernel@before@foot {\__tag_tbl_disable:} + } + } +\AddToHook{begindocument} + { + \tag_if_active:T + { + \tagpdfsetup + { + newattribute = + {TH-col}{/O /Table /Scope /Column}, + newattribute = + {TH-row}{/O /Table /Scope /Row}, + newattribute = + {TH-both}{/O /Table /Scope /Both}, + } + \seq_gput_left:Ne\g__tag_attr_class_used_seq + {\pdf_name_from_unicode_e:n{TH-col}} + \seq_gput_left:Ne\g__tag_attr_class_used_seq + {\pdf_name_from_unicode_e:n{TH-row}} + \seq_gput_left:Ne\g__tag_attr_class_used_seq + {\pdf_name_from_unicode_e:n{TH-both}} + } + } + +\clist_new:N \l__tbl_header_rows_clist +\cs_if_free:NTF \__tag_struct_prop_gput:nnn + { + \cs_new_protected:Npn \__tbl_struct_prop_gput:nnn #1#2#3 + { \prop_gput:cnn { g__tag_struct_#1_prop }{#2}{#3} } + } + { \cs_new_protected:Npn \__tbl_struct_prop_gput:nnn #1#2#3 + { \__tag_struct_prop_gput:nnn {#1}{#2}{#3} } + } +\cs_generate_variant:Nn \__tbl_struct_prop_gput:nnn {nne,Vnn} +\cs_new_protected:Npn \__tbl_set_header_rows: + { + \clist_map_inline:Nn \l__tbl_header_rows_clist + { + \clist_set:Ne\l__tbl_tmpa_clist + { + \seq_item:Nn \g__tbl_struct_cells_seq {##1} + } + \clist_map_inline:Nn \l__tbl_tmpa_clist + { + \prop_if_exist:cT { g__tag_struct_####1_prop } + { + \__tbl_struct_prop_gput:nnn{ ####1 }{S}{/TH} + \prop_get:cnNTF + { g__tag_struct_####1_prop } + { C } + \l__tbl_tmpa_tl + {\__tbl_struct_prop_gput:nne{ ####1 }{C}{[/TH-col~\l__tbl_tmpa_tl]} } + {\__tbl_struct_prop_gput:nnn{ ####1 }{C}{/TH-col}} + } + } + } + } +\keys_define:nn { __tag / setup } + { + table-header-rows .clist_set:N = \l__tbl_header_rows_clist + } +\cs_new_protected:Npn \__tbl_show_curr_cell_data: { + \typeout { ==>~ current~cell~data:~ + \int_use:N \g__tbl_row_int , + \int_use:N \g__tbl_col_int , + \g__tbl_span_tl + } +} +\def\insert@column{% + \__tbl_show_curr_cell_data: + \UseSocket{tagsupport/tblcell/begin}% + \the@toks \the \@tempcnta + \ignorespaces \@sharp \unskip + \the@toks \the \count@ \relax + \UseSocket{tagsupport/tblcell/end}% +} +\def\@classz{\@classx + \@tempcnta \count@ + \prepnext@tok + \@addtopreamble{\ifcase \@chnum + \hfil + \hskip1sp% + \d@llarbegin + \insert@column + \d@llarend \do@row@strut \hfil \or + \hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \hfil \or + \hfil\hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \or + \setbox\ar@mcellbox\vbox + \@startpbox{\@nextchar} + \AssignSocketPlug{tagsupport/tblcell/begin}{TDpbox} + \AssignSocketPlug{tagsupport/tblcell/end}{TDpbox} + \insert@column \@endpbox + \ar@align@mcell + \do@row@strut \or + \vtop \@startpbox{\@nextchar} + \AssignSocketPlug{tagsupport/tblcell/begin}{TDpbox} + \AssignSocketPlug{tagsupport/tblcell/end}{TDpbox} + \insert@column \@endpbox\do@row@strut \or + \vbox \@startpbox{\@nextchar} + \AssignSocketPlug{tagsupport/tblcell/begin}{TDpbox} + \AssignSocketPlug{tagsupport/tblcell/end}{TDpbox} + \insert@column \@endpbox\do@row@strut + \fi}\prepnext@tok} +\def\@array[#1]#2{% + \@tempdima \ht \strutbox + \advance \@tempdima by\extrarowheight + \setbox \@arstrutbox \hbox{\vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@}% + \tl_set_eq:NN \l__tbl_saved_table_cols_tl \g__tbl_table_cols_tl + \begingroup + \@mkpream{#2} + \__tbl_determine_table_cols: + \xdef\@preamble{% + \noexpand + \ar@ialign + \@halignto + \bgroup \@arstrut + \UseSocket{tagsupport/tblrow/begin}% + \__tbl_init_cell_data: + \@preamble + \tabskip \z@ \cr}% + \endgroup + \@arrayleft + \UseSocket{tagsupport/tbl/init} + \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi + \bgroup + \let \@sharp ##\let \protect \relax + \lineskip \z@ + \baselineskip \z@ + \m@th + \let\\\@arraycr \let\tabularnewline\\\let\par\@empty + \@preamble} +\let\@@array\@array +\cs_new_protected:Npn \__tbl_init_cell_data: { + \int_gset:Nn \g__tbl_col_int {1} + \tl_gset:Nn \g__tbl_span_tl {1} +} +\cs_new_protected:Npn \__tbl_update_cell_data: { + \int_gadd:Nn \g__tbl_col_int { \g__tbl_span_tl } + \tl_gset:Nn \g__tbl_span_tl {1} +} +\cs_new:Npn \__tbl_determine_table_cols: { + \seq_set_split:NnV\l__tbl_tmpa_seq {&}\@preamble + \tl_gset:Ne \g__tbl_table_cols_tl { \seq_count:N \l__tbl_tmpa_seq } + \typeout{ ==>~ Table~ has~ \g__tbl_table_cols_tl \space columns } +} +\protected\def\@arraycr{ + \relax + \__tbl_store_missing_cells:n{@arraycr} + % + \iffalse{\fi\ifnum 0=`}\fi + \@ifstar \@xarraycr \@xarraycr} +\cs_new:Npn \__tbl_store_missing_cells:n #1 { + \int_compare:nNnT \g__tbl_col_int > 0 + { + \int_gset:Nn \g__tbl_missing_cells_int + { + \g__tbl_table_cols_tl + - \g__tbl_col_int + - \g__tbl_span_tl + + 1 + } + \int_compare:nNnT \g__tbl_missing_cells_int < 0 \ERROR % should not happen + \typeout{==>~ + (#1)~ + This~ row~ needs~ + \int_use:N \g__tbl_missing_cells_int \space + additional~ cell(s) + } + } +} +\cs_new:Npn \__tag_tbl_add_missing_cells:n #1 + { + \int_compare:nNnT {#1}>{0} + { + \typeout{==>~ + ~Inserting~\int_eval:n{#1}~additional~cell(s)~into~previous~row:} + } + \int_step_inline:nn { #1 } + { + \UseSocket{tagsupport/tblcell/begin} + \UseSocket{tagsupport/tblcell/end} + } + } +\def\endarray{ + \__tbl_store_missing_cells:n{endarray} + \crcr \egroup + \UseSocket{tagsupport/tbl/finalize} + \int_gset:Nn \g__tbl_col_int { \l__tbl_saved_col_tl } + \int_gset:Nn \g__tbl_row_int { \l__tbl_saved_row_tl } + \tl_gset_eq:NN \g__tbl_span_tl \l__tbl_saved_span_tl + \tl_gset_eq:NN \g__tbl_table_cols_tl \l__tbl_saved_table_cols_tl + \tl_gset_eq:NN \g__tbl_struct_table_tl \l__tbl_saved_struct_table_tl + \seq_gset_eq:NN \g__tbl_struct_rows_seq \l__tbl_saved_struct_rows_seq + \seq_gset_eq:NN \g__tbl_struct_cells_seq\l__tbl_saved_struct_cells_seq + \seq_gset_eq:NN \g__tbl_struct_cur_seq \l__tbl_saved_struct_cur_seq + \typeout{==>~ restored~cell~data:~ + \int_use:N \g__tbl_row_int, + \int_use:N \g__tbl_col_int, + \l__tbl_saved_span_tl \space + ( + \int_compare:nNnTF \g__tbl_table_cols_tl = 0 + { outer~ level } + { max:~ \g__tbl_table_cols_tl } + ) + } + \egroup + \@arrayright \gdef\@preamble{}% +} +\def\@addamp { + \if@firstamp + \@firstampfalse + \else + \edef\@preamble{\@preamble & + \__tbl_update_cell_data: + } + \fi +} +\int_new:N \g__tbl_col_int +\int_new:N \g__tbl_row_int +\tl_new:N \g__tbl_span_tl +\tl_new:N \g__tbl_table_cols_tl + +\tl_gset:Nn \g__tbl_span_tl {1} +\tl_gset:Nn \g__tbl_table_cols_tl {0} % indicates outer level +\tl_new:N \l__tbl_saved_col_tl +\tl_new:N \l__tbl_saved_row_tl +\tl_new:N \l__tbl_saved_span_tl +\tl_new:N \l__tbl_saved_table_cols_tl + +\tl_set:Nn \l__tbl_saved_col_tl{0} +\tl_set:Nn \l__tbl_saved_row_tl{0} +\tl_set:Nn \l__tbl_saved_span_tl{1} +\tl_set:Nn \l__tbl_saved_table_cols_tl{0} % indicates outer level +\tl_new:N \g__tbl_struct_table_tl +\tl_new:N \l__tbl_saved_struct_table_tl +\seq_new:N \g__tbl_struct_rows_seq +\seq_new:N \l__tbl_saved_struct_rows_seq +\seq_new:N \g__tbl_struct_cells_seq +\seq_new:N \l__tbl_saved_struct_cells_seq +\seq_new:N \g__tbl_struct_cur_seq +\seq_new:N \l__tbl_saved_struct_cur_seq +\def\ar@ialign{% + \tl_set:No \l__tbl_saved_col_tl {\int_use:N \g__tbl_col_int } + \tl_set:No \l__tbl_saved_row_tl {\int_use:N \g__tbl_row_int } + \tl_set_eq:NN \l__tbl_saved_span_tl \g__tbl_span_tl + \tl_set_eq:NN \l__tbl_saved_struct_table_tl \g__tbl_struct_table_tl + \seq_set_eq:NN \l__tbl_saved_struct_rows_seq \g__tbl_struct_rows_seq + \seq_set_eq:NN \l__tbl_saved_struct_cells_seq \g__tbl_struct_cells_seq + \seq_set_eq:NN \l__tbl_saved_struct_cur_seq \g__tbl_struct_cur_seq + \typeout{==>~ saved~cell~data:~ + \l__tbl_saved_row_tl, + \l__tbl_saved_col_tl, + \l__tbl_saved_span_tl \space + ( + \int_compare:nNnTF \l__tbl_saved_table_cols_tl = 0 + { outer~ level } + { max:~ \l__tbl_saved_table_cols_tl } + ) + } + \int_gzero:N \g__tbl_row_int + \int_gzero:N \g__tbl_col_int + \tl_gset:Nn \g__tbl_span_tl {1} + \seq_gclear:N\g__tbl_struct_rows_seq + \seq_gclear:N\g__tbl_struct_cells_seq + \seq_gclear:N\g__tbl_struct_cur_seq + \everycr{% + \noalign{% + \int_compare:nNnT \g__tbl_col_int > 0 + { \UseSocket{tagsupport/tblrow/end} } + \int_gincr:N \g__tbl_row_int % this row about to start + \int_gzero:N \g__tbl_col_int % we are before first col + }% + }% + \tabskip\z@skip\halign} +\long\def\multicolumn#1#2#3{% + % alternative: determine first col with vmode test ... + % \ifvmode + % \multispan{#1}\typeout{A==> vmode}% + % \else + % \multispan{#1}\typeout{A==> not vmode} + % \fi + % but this makes the \crcr handling really complicated which would + % then need to become something like + % \ifvmode \expandafter \@gobble + % \else \expandafter \@iden \fi {\cr\noalign{do something}}% + % so not used. + % Instead: + \multispan{#1}\begingroup + \int_compare:nNnTF \g__tbl_col_int = 0 + { + \UseSocket{tagsupport/tblrow/begin} + \int_gset:Nn \g__tbl_col_int {1} + } + { + \int_gadd:Nn \g__tbl_col_int { \g__tbl_span_tl } + } + \tl_gset:Nn \g__tbl_span_tl {#1} + \def\@addamp{\if@firstamp\@firstampfalse \else + \@preamerr 5\fi}% + \@mkpream{#2}\@addtopreamble\@empty + \endgroup + \__tbl_set_colspan:n {#1} + \def\@sharp{#3}% + \@arstrut \@preamble + \null + \ignorespaces} +\let\@kernel@refstepcounter\refstepcounter +\def\hyper@nopatch@longtable{} +\def\__tbl_patch_LT@array[#1]#2{% + \UseSocket{tagsupport/tbl/init}% + \@kernel@refstepcounter{table}\stepcounter{LT@tables}% + \tl_gset:Ne \@currentHref {table.\cs_if_exist_use:N\theHtable} + \int_gzero:N \g__tbl_row_int + \seq_gclear:N\g__tbl_struct_rows_seq + \seq_gclear:N\g__tbl_struct_cells_seq + \seq_gclear:N\g__tbl_struct_cur_seq + \seq_gclear:N\g__tbl_LT@firsthead_rows_seq + \seq_gclear:N\g__tbl_LT@head_rows_seq + \seq_gclear:N\g__tbl_LT@lastfoot_rows_seq + \seq_gclear:N\g__tbl_LT@foot_rows_seq + \if l#1% + \LTleft\z@ \LTright\fill + \else\if r#1% + \LTleft\fill \LTright\z@ + \else\if c#1% + \LTleft\fill \LTright\fill + \fi\fi\fi + \let\LT@mcol\multicolumn + \let\LT@@tabarray\@tabarray + \let\LT@@hl\hline + \def\@tabarray{% + \let\hline\LT@@hl + \LT@@tabarray}% + \let\\\LT@tabularcr + \let\tabularnewline\\% + \def\newpage{\noalign{\break}}% + \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% + \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% + \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption + \@tempdima\ht\strutbox + \let\@endpbox\LT@endpbox + \ifx\extrarowheight\@undefined + \let\@acol\@tabacol + \let\@classz\@tabclassz \let\@classiv\@tabclassiv + \def\@startpbox{\vtop\LT@startpbox}% + \let\@@startpbox\@startpbox + \let\@@endpbox\@endpbox + \let\LT@LL@FM@cr\@tabularcr + \else + \advance\@tempdima\extrarowheight + \col@sep\tabcolsep + \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr + \fi + \setbox\@arstrutbox\hbox{\vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@}% + \let\@sharp##\let\protect\relax + \begingroup + \@mkpream{#2}% + \__tbl_determine_table_cols: + \xdef\LT@bchunk{% + \int_gzero:N \g__tbl_col_int + \global\advance\c@LT@chunks\@ne + \global\LT@rows\z@\setbox\z@\vbox\bgroup + \LT@setprevdepth + \tabskip\LTleft \noexpand\halign to\hsize\bgroup + \tabskip\z@ \@arstrut + \UseSocket{tagsupport/tblrow/begin}% + \__tbl_init_cell_data: + \@preamble \tabskip\LTright \cr}% + \endgroup + \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols + \LT@make@row + \m@th\let\par\@empty + \everycr{% + \noalign{% + \typeout{--longtable-->~chunk~row:~ \the\LT@rows \space + row:~ \the\g__tbl_row_int \space + column:~ \the\g__tbl_col_int + } + \int_compare:nNnT \g__tbl_col_int > 0 + { + \UseSocket{tagsupport/tblrow/end} + } + \int_gzero:N \g__tbl_col_int % before first col + \int_compare:nNnT \LT@rows < \LTchunksize + { \int_gincr:N \g__tbl_row_int } % this row about to start + }% + }% + \lineskip\z@\baselineskip\z@ + \LT@bchunk} +\def\__tbl_patch_endlongtable{% + \__tbl_store_missing_cells:n{endlongtable} + \crcr + \noalign{% + \UseSocket{tagsupport/tbl/finalize/longtable} + \int_gzero:N \g__tbl_row_int % this prevents considering the next + % \crcr as another row end. + \let\LT@entry\LT@entry@chop + \xdef\LT@save@row{\LT@save@row}}% + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \if@filesw + {\let\LT@entry\LT@entry@write\immediate\write\@auxout{% + \gdef\expandafter\noexpand + \csname LT@\romannumeral\c@LT@tables\endcsname + {\LT@save@row}}}% + \fi + \ifx\LT@save@row\LT@@save@row + \else + \LT@warn{Column~\@width s~have~changed\MessageBreak + in~table~\thetable}% + \LT@final@warn + \fi + \endgraf\penalty -\LT@end@pen + \ifvoid\LT@foot\else + \global\advance\vsize\ht\LT@foot + \global\advance\@colroom\ht\LT@foot + \dimen@\pagegoal\advance\dimen@\ht\LT@foot\pagegoal\dimen@ + \fi + \endgroup + \global\@mparbottom\z@ + \endgraf\penalty\z@\addvspace\LTpost + \ifvoid\footins\else\insert\footins{}\fi} +\def\__tbl_patch_LT@t@bularcr{% + \global\advance\LT@rows\@ne + \ifnum\LT@rows=\LTchunksize + \__tbl_store_missing_cells:n{echunk} + \gdef\LT@setprevdepth{% + \prevdepth\z@ + \global\let\LT@setprevdepth\relax}% + \expandafter\LT@xtabularcr + \else + \ifnum0=`{}\fi + \expandafter\LT@LL@FM@cr + \fi} + +\def\__tbl_patch_LT@end@hd@ft#1{% + \__tbl_store_missing_cells:n{head/foot} + \int_step_inline:nn + { \LT@rows + 1 } + { + \seq_gput_left:ce + {g__tbl_\cs_to_str:N #1 _rows_seq } + { \int_eval:n {\g__tbl_row_int + 1 - ##1 } } + } + \int_gset:Nn \LT@rows { \LTchunksize } + \LT@echunk + \ifx\LT@start\endgraf + \LT@err + {Longtable head or foot not at start of table}% + {Increase LTchunksize}% + \fi + \setbox#1\box\z@ + \LT@get@widths + \LT@bchunk} + +\def\__tbl_patch_LT@start{% + \let\LT@start\endgraf + \endgraf\penalty\z@\vskip\LTpre\endgraf + \ifdim \pagetotal<\pagegoal \else + \dimen@=\pageshrink + \advance \dimen@ 1sp % + \kern\dimen@\penalty 9999\endgraf \kern-\dimen@ + \fi + \dimen@\pagetotal + \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 + \edef\LT@reset@vfuzz{\vfuzz\the\vfuzz\vbadness\the\vbadness\relax}% + \vfuzz\maxdimen + \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 + \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@ -\pagegoal + \ifdim \dimen@>\z@ + \vfil\break + \else + \ifdim\pageshrink>\z@\pageshrink\z@\fi + \fi + \global\@colroom\@colht + \ifvoid\LT@foot\else + \global\advance\vsize-\ht\LT@foot + \global\advance\@colroom-\ht\LT@foot + \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@ + \maxdepth\z@ + \fi + \MakeLinkTarget{table} + \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak + \tagmcbegin{artifact} + \tag_mc_reset_box:N\LT@head + \tagmcend + \output{\LT@output}} +\def\__tbl_patch_LT@output{% + \ifnum\outputpenalty <-\@Mi + \ifnum\outputpenalty > -\LT@end@pen + \LT@err{floats and marginpars not allowed in a longtable}\@ehc + \else + \setbox\z@\vbox{\unvbox\@cclv}% + \ifdim \ht\LT@lastfoot>\ht\LT@foot + \dimen@\pagegoal + \advance\dimen@\ht\LT@foot + \advance\dimen@-\ht\LT@lastfoot + \ifdim\dimen@<\ht\z@ + \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}% + \@makecol + \@outputpage + \global\vsize\@colroom + \setbox\z@\vbox{\box\LT@head}% + \fi + \fi + \unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi + \tagmcbegin{artifact} + \tag_mc_reset_box:N \LT@foot + \tagmcend + \fi + \else + \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}% + \tagmcbegin{artifact} + \tag_mc_reset_box:N \LT@foot + \tagmcend + \@makecol + \@outputpage + \global\vsize\@colroom + \copy\LT@head\nobreak + \fi} +\def\__tbl_patch_LT@makecaption#1#2#3{% + \LT@mcol\LT@cols c{% + % test can go after merge + \str_if_exist:cT { l__socket_tagsupport/parbox/before_plug_str } + { + \AssignSocketPlug{tagsupport/parbox/before}{noop} + \AssignSocketPlug{tagsupport/parbox/after}{noop} + } + \hbox to\z@{\hss\parbox[t]\LTcapwidth{% + \reset@font + \tag_stop:n{caption} + \sbox\@tempboxa{#1{#2:~}#3}% + \tag_start:n{caption} + \ifdim\wd\@tempboxa>\hsize + #1{#2:~}#3% + \else + \hbox to\hsize{\hfil#1{#2:~}#3\hfil}% + \fi + \endgraf\vskip\baselineskip}% + \hss}}} +\AddToHook{package/longtable/after} + { + \seq_new:N \g__tbl_LT@firsthead_rows_seq + \seq_new:N \g__tbl_LT@head_rows_seq + \seq_new:N \g__tbl_LT@lastfoot_rows_seq + \seq_new:N \g__tbl_LT@foot_rows_seq + \cs_set_eq:NN \LT@array\__tbl_patch_LT@array + \cs_set_eq:NN \endlongtable\__tbl_patch_endlongtable + \cs_set_eq:NN \LT@start\__tbl_patch_LT@start + \cs_set_eq:NN \LT@output\__tbl_patch_LT@output + \cs_set_eq:NN \LT@t@bularcr\__tbl_patch_LT@t@bularcr + \cs_set_eq:NN \LT@end@hd@ft\__tbl_patch_LT@end@hd@ft + \cs_set_eq:NN \LT@makecaption\__tbl_patch_LT@makecaption + } + +\def\__tbl_patch_TX@endtabularx{% + \expandafter\expandafter\expandafter + \TX@find@endtabularxa\csname end\TX@\endcsname + \endtabularx\TX@\endtabularx\TX@find@endtabularxa + \expandafter\TX@newcol\expandafter{\tabularxcolumn{\TX@col@width}}% + \let\verb\TX@verb + \def\@elt##1{\global\value{##1}\the\value{##1}\relax}% + \edef\TX@ckpt{\cl@@ckpt}% + \let\@elt\relax + \TX@old@table\maxdimen + \TX@col@width\TX@target + \global\TX@cols\@ne + \TX@typeout@ + {\@spaces Table Width\@spaces Column Width\@spaces X Columns}% + \tag_stop:n{tabularx} + \TX@trial{\def\NC@rewrite@X{% + \global\advance\TX@cols\@ne\NC@find p{\TX@col@width}}}% + \loop + \TX@arith + \ifTX@ + \TX@trial{}% + \repeat + \tag_start:n{tabularx} + {\let\@footnotetext\TX@ftntext\let\@xfootnotenext\TX@xftntext + \csname tabular*\expandafter\endcsname\expandafter\TX@target + \the\toks@ + \csname endtabular*\endcsname}% + \global\TX@ftn\expandafter{\expandafter}\the\TX@ftn + \ifnum0=`{\fi}% + \expandafter\expandafter\expandafter + \TX@find@endtabularxbb + \expandafter\end\expandafter{\TX@}% + \endtabularx\TX@\endtabularx\TX@find@endtabularxb +} + +\AddToHook{package/tabularx/after} + {\cs_set_eq:NN \TX@endtabularx\__tbl_patch_TX@endtabularx } +\endinput +%% +%% End of file `latex-lab-testphase-table.sty'. diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-text.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-text.sty index eb79c90efea..7cae4fc4897 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-text.sty +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-text.sty @@ -33,8 +33,11 @@ %% %% %% File: latex-lab-text.dtx (C) Copyright 2023 LaTeX Project -\ProvidesExplPackage {latex-lab-testphase-text} {2023-05-28} {0.8} - {Code related to the tagging of inline text commands} +\def\ltlabtextdate{2023-07-20} +\def\ltlabtextversion{0.85a} + +\ProvidesExplPackage {latex-lab-testphase-text} {\ltlabtextdate} {\ltlabtextversion} + {Code related to the tagging of various small text commands} \AddToHook{cmd/LaTeX/before} { diff --git a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-toc.sty b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-toc.sty index effe44b7358..bf1cb9bb87f 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-toc.sty +++ b/Master/texmf-dist/tex/latex/latex-lab/latex-lab-testphase-toc.sty @@ -4,9 +4,9 @@ %% %% The original source files were: %% -%% latex-lab-toc-tagging-functions.dtx (with options: `header') +%% latex-lab-toc.dtx (with options: `header') %% latex-lab-toc-kernel-changes.dtx (with options: `package') -%% latex-lab-toc-tagging-functions.dtx (with options: `package') +%% latex-lab-toc.dtx (with options: `package') %% latex-lab-toc-hyperref-changes.dtx (with options: `package') %% %% This is a generated file. @@ -35,10 +35,14 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-toc-tagging-functions.dtx (C) Copyright 2022-2023 LaTeX Project -\ProvidesExplPackage {latex-lab-testphase-toc} {2023-05-20} {0.82} - { commands related to the tagging of toc-like lists} -%% File: latex-lab-toc-kernel-functions.dtx (C) Copyright 2022-2023 LaTeX Project +%% File: latex-lab-toc.dtx (C) Copyright 2022-2023 LaTeX Project +\def\ltlabtocdate{2023-10-16} +\def\ltlabtocversion{0.85b} +\ProvidesExplPackage {latex-lab-testphase-toc} {\ltlabtocdate} {\ltlabtocversion} + { Code related to the tagging of toc-like lists} +%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2023 LaTeX Project +\def\ltlabkerneldate{2023-10-16} +\def\ltlabkernelversion{0.85b} \RequirePackage{latex-lab-kernel-changes} \def\@contentsline@cfgpoint@before#1#2#3#4{} \def\@contentsline@cfgpoint@after#1#2#3#4{} @@ -271,27 +275,22 @@ \endgroup \fi} } - -%% File: latex-lab-toc-tagging-functions.dtx (C) Copyright 2022-2023 LaTeX Project +%% File: latex-lab-toc.dtx (C) Copyright 2022-2023 LaTeX Project +\def\ltlabtocdate{2023-10-16} +\def\ltlabtocversion{0.85b} \tl_new:N \l__tag_toc_tmpa_tl \AddToHook{cmd/refstepcounter/after} { \tl_if_blank:VF \@currentHref { - \prop_if_exist:NT \g__tag_struct_dest_num_prop - { - \prop_gput:Nxx \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} - } + \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} } } \AddToHook{cmd/H@refstepcounter/after} { \tl_if_blank:VF \@currentHref { - \prop_if_exist:NT \g__tag_struct_dest_num_prop - { - \prop_gput:Nxx \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} - } + \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}} } } \msg_new:nnn { tag } {struct-dest-unknown} @@ -440,6 +439,8 @@ \tag_mc_begin:n{artifact}\tag_stop:n{leaders}\nobreak#1\nobreak\tag_start:n{leaders}\tag_mc_end:} %% File: latex-lab-toc-hyperref-changes.dtx (C) Copyright 2022-2023 LaTeX Project +\def\ltlabtochyperdate{2023-07-20} +\def\ltlabtochyperversion{0.85a} \def\hyper@nopatch@toc{} \AddToHook{package/hyperref/after} { diff --git a/Master/texmf-dist/tex/latex/latex-lab/math-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/math-latex-lab-testphase.ltx index d57dc7e8742..2c89d19d494 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/math-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/math-latex-lab-testphase.ltx @@ -4,7 +4,7 @@ %% %% The original source files were: %% -%% latex-lab-testphase.dtx (with options: `math-lab') +%% latex-lab-testphase.dtx (with options: `math') %% %% This is a generated file. %% @@ -34,8 +34,9 @@ %% %% File: latex-lab-testphase.dtx + \ProvidesFile{math-latex-lab-testphase.ltx} - [2023-01-07 v0.8 code related to the math tagging] + [2023-07-20 v0.8a latex-lab wrapper math] \RequirePackage{latex-lab-testphase-math} \endinput %% diff --git a/Master/texmf-dist/tex/latex/latex-lab/minipage-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/minipage-latex-lab-testphase.ltx index 9c0a803cb68..e309b479ed1 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/minipage-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/minipage-latex-lab-testphase.ltx @@ -33,13 +33,12 @@ %% %% %% File: latex-lab-minipage.dtx (C) Copyright 2023 LaTeX Project - -\def\ltlistsversion{v0.81} -\def\ltlistsdate{2023/05/10} - +\def\ltlabminipagedate{2023-10-30} +\def\ltlabminipageversion{0.81c} \ProvidesFile{minipage-latex-lab-testphase.ltx} - [2022-10-26 v0.8 code related to the tagging of sectioning commands] + [\ltlabminipagedate\space v\ltlabminipageversion + code related to the tagging of minipage and parbox] \RequirePackage{latex-lab-testphase-minipage} \endinput %% diff --git a/Master/texmf-dist/tex/latex/latex-lab/new-or-1-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/new-or-1-latex-lab-testphase.ltx index 305ecb25304..015487e4396 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/new-or-1-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/new-or-1-latex-lab-testphase.ltx @@ -4,7 +4,7 @@ %% %% The original source files were: %% -%% latex-lab-testphase.dtx (with options: `new-or-1') +%% latex-lab-new-or-1.dtx (with options: `latex-lab') %% %% This is a generated file. %% @@ -32,10 +32,12 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-testphase.dtx - +%% File: latex-lab-new-or-1.dtx (C) Copyright 2020-2023 Frank Mittelbach +\def\ltlabneworIdate{2023-07-20} +\def\ltlabneworIversion{0.85a} \ProvidesFile{new-or-1-latex-lab-testphase.ltx} - [2022-11-04 v0.1a latex-lab wrapper new-or-1] + [\ltlabneworIdate\space v\ltlabneworIversion\space + latex-lab wrapper new-or-1] \RequirePackage{latex-lab-testphase-new-or-1} \endinput %% diff --git a/Master/texmf-dist/tex/latex/latex-lab/new-or-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/new-or-latex-lab-testphase.ltx index 742a1fa3531..45354f15d36 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/new-or-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/new-or-latex-lab-testphase.ltx @@ -34,8 +34,9 @@ %% %% File: latex-lab-testphase.dtx + \ProvidesFile{new-or-latex-lab-testphase.ltx} - [2022-11-04 v0.1a latex-lab wrapper new-or] + [2023-06-15 v0.1b latex-lab wrapper new-or] \RequirePackage{latex-lab-testphase-new-or-1} \RequirePackage{latex-lab-testphase-new-or-2} \endinput diff --git a/Master/texmf-dist/tex/latex/latex-lab/phase-I-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/phase-I-latex-lab-testphase.ltx index 477a74076fb..c2f68512e79 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/phase-I-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/phase-I-latex-lab-testphase.ltx @@ -34,6 +34,7 @@ %% %% File: latex-lab-testphase.dtx + \ProvidesFile{phase-I-latex-lab-testphase.ltx} [2023-02-04 v0.1b latex-lab wrapper phase-I] \RequirePackage{latex-lab-testphase-new-or-1} diff --git a/Master/texmf-dist/tex/latex/latex-lab/phase-II-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/phase-II-latex-lab-testphase.ltx index 7114d4882b2..ff7e6dd7452 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/phase-II-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/phase-II-latex-lab-testphase.ltx @@ -34,8 +34,9 @@ %% %% File: latex-lab-testphase.dtx + \ProvidesFile{phase-II-latex-lab-testphase.ltx} - [2022-11-04 v0.1a latex-lab wrapper phase-II] + [2023-06-15 v0.1b latex-lab wrapper phase-II] \RequirePackage{latex-lab-testphase-new-or-1} \RequirePackage{latex-lab-testphase-new-or-2} \RequirePackage{tagpdf} diff --git a/Master/texmf-dist/tex/latex/latex-lab/phase-III-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/phase-III-latex-lab-testphase.ltx index 3c36a82f86d..2f7a38ef142 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/phase-III-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/phase-III-latex-lab-testphase.ltx @@ -34,12 +34,13 @@ %% %% File: latex-lab-testphase.dtx + \ProvidesFile{phase-III-latex-lab-testphase.ltx} - [2023-03-06 v0.1a latex-lab wrapper phase-III] + [2023-07-20 v0.1b latex-lab wrapper phase-III] \input{phase-II-latex-lab-testphase.ltx} \IfFormatAtLeastTF{2023-06-01} { - \RequirePackage{latex-lab-testphase-block-tagging} + \RequirePackage{latex-lab-testphase-block} \RequirePackage{latex-lab-testphase-sec} \RequirePackage{latex-lab-testphase-toc} \RequirePackage{latex-lab-testphase-minipage} diff --git a/Master/texmf-dist/tex/latex/latex-lab/sec-tagging-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/sec-latex-lab-testphase.ltx index cf6557fa41e..bf39e9949f7 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/sec-tagging-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/sec-latex-lab-testphase.ltx @@ -1,5 +1,5 @@ %% -%% This is file `sec-tagging-latex-lab-testphase.ltx', +%% This is file `sec-latex-lab-testphase.ltx', %% generated with the docstrip utility. %% %% The original source files were: @@ -33,10 +33,12 @@ %% %% %% File: latex-lab-sec.dtx (C) Copyright 2022-2023 LaTeX Project +\def\ltlabsecdate{2023-10-16} +\def\ltlabsecversion{0.84b} -\ProvidesFile{sec-tagging-latex-lab-testphase.ltx} - [2023-05-20 v0.82 code related to the tagging of sectioning commands] +\ProvidesFile{sec-latex-lab-testphase.ltx} + [\ltlabsecdate\space v\ltlabsecversion\space latex-lab wrapper sec] \RequirePackage{latex-lab-testphase-sec} \endinput %% -%% End of file `sec-tagging-latex-lab-testphase.ltx'. +%% End of file `sec-latex-lab-testphase.ltx'. diff --git a/Master/texmf-dist/tex/latex/latex-lab/table-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/table-latex-lab-testphase.ltx new file mode 100644 index 00000000000..850f3ffa110 --- /dev/null +++ b/Master/texmf-dist/tex/latex/latex-lab/table-latex-lab-testphase.ltx @@ -0,0 +1,43 @@ +%% +%% This is file `table-latex-lab-testphase.ltx', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% latex-lab-table.dtx (with options: `latex-lab') +%% +%% This is a generated file. +%% +%% Copyright 2021-2023 LaTeX Project +%% +%% This file was generated from file(s) of the `LaTeX-lab Bundle'. +%% ------------------------------------------------------------------------------------ +%% +%% 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 +%% http://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 may only be distributed together with a copy of the LaTeX +%% `LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle' +%% without such generated files. +%% +%% The newest sources can be found below +%% +%% https://github.com/latex3/latex2e/required/latex-lab +%% +%% where one can also log issues in case there are any. +%% +%% +%% File: latex-lab-table.dtx (C) Copyright 2023 LaTeX Project +\def\ltlabtbldate{2023-10-30} +\def\ltlabtblversion{0.85d} +\ProvidesFile{table-latex-lab-testphase.ltx} + [\ltlabtbldate\space v\ltlabtblversion\space latex-lab wrapper table] +\RequirePackage{latex-lab-testphase-table} +\endinput +%% +%% End of file `table-latex-lab-testphase.ltx'. diff --git a/Master/texmf-dist/tex/latex/latex-lab/tagpdf-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/tagpdf-latex-lab-testphase.ltx index c12a0c17bbb..99866c0ee12 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/tagpdf-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/tagpdf-latex-lab-testphase.ltx @@ -34,6 +34,7 @@ %% %% File: latex-lab-testphase.dtx + \ProvidesFile{tagpdf-latex-lab-testphase.ltx} [2022-11-04 v0.1a latex-lab wrapper tagpdf (deprecated)] \RequirePackage{latex-lab-testphase-new-or-1} diff --git a/Master/texmf-dist/tex/latex/latex-lab/tagpdf-ns-latex-lab.def b/Master/texmf-dist/tex/latex/latex-lab/tagpdf-ns-latex-lab.def new file mode 100644 index 00000000000..ac71752ca07 --- /dev/null +++ b/Master/texmf-dist/tex/latex/latex-lab/tagpdf-ns-latex-lab.def @@ -0,0 +1,42 @@ +%% +%% This is file `tagpdf-ns-latex-lab.def', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% latex-lab-namespace.dtx (with options: `ns-latex-lab') +%% +%% File: latex-lab-namespace.dtx (C) Copyright 2023 LaTeX Project +%% \ProvidesExplFile {tagpdf-ns-latex-lab.def} {2023-09-04} {0.8} +%% {latex} {https://www.latex-project.org/ns/lab/2022}{} +title, Title, pdf2, +part, Title, pdf2, +section, H1, pdf2, +subsection, H2, pdf2, +subsubsection,H3, pdf2, +paragraph, H4, pdf2, +subparagraph, H5, pdf2, +list, L, pdf2, +itemize, L, pdf2, +enumerate, L, pdf2, +description, L, pdf2, +quote, BlockQuote,pdf, +quotation, BlockQuote,pdf, +verbatim, Div, pdf2, +item, LI, pdf2, +itemlabel, Lbl, pdf2, +itembody, LBody, pdf2, +footnote, FENote, pdf2, +footnotemark, Lbl, pdf2, +footnotelabel,Lbl, pdf2, +text-unit, Part, pdf2, +text, P, pdf2, +theorem-like, Sect, pdf2, +verbatim, P, pdf2, +codeline, Sub, pdf2, +float, Aside, pdf2, +figures, Sect, pdf2, +tables, Sect, pdf2, +%% +%% +%% End of file `tagpdf-ns-latex-lab.def'. diff --git a/Master/texmf-dist/tex/latex/latex-lab/text-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/text-latex-lab-testphase.ltx index 62b5de750d7..59d30103ae9 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/text-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/text-latex-lab-testphase.ltx @@ -33,8 +33,12 @@ %% %% %% File: latex-lab-text.dtx (C) Copyright 2023 LaTeX Project +\def\ltlabtextdate{2023-07-20} +\def\ltlabtextversion{0.85a} + \ProvidesFile{text-latex-lab-testphase.ltx} - [2023-05-28 v0.8 code related to the tagging of bib and citations] + [\ltlabtextdate\space v\ltlabtextversion\space + code related to the tagging of various small text commands] \RequirePackage{latex-lab-testphase-text} diff --git a/Master/texmf-dist/tex/latex/latex-lab/toc-tagging-latex-lab-testphase.ltx b/Master/texmf-dist/tex/latex/latex-lab/toc-latex-lab-testphase.ltx index 2ec61214410..1d7e70c5d79 100644 --- a/Master/texmf-dist/tex/latex/latex-lab/toc-tagging-latex-lab-testphase.ltx +++ b/Master/texmf-dist/tex/latex/latex-lab/toc-latex-lab-testphase.ltx @@ -1,10 +1,10 @@ %% -%% This is file `toc-tagging-latex-lab-testphase.ltx', +%% This is file `toc-latex-lab-testphase.ltx', %% generated with the docstrip utility. %% %% The original source files were: %% -%% latex-lab-toc-kernel-changes.dtx (with options: `latex-lab') +%% latex-lab-toc.dtx (with options: `latex-lab') %% %% This is a generated file. %% @@ -32,13 +32,14 @@ %% where one can also log issues in case there are any. %% %% -%% File: latex-lab-toc-kernel-functions.dtx (C) Copyright 2022-2023 LaTeX Project - -\ProvidesFile{toc-tagging-latex-lab-testphase.ltx} - [2023-05-20 v0.81 code related to the tagging of toc and similar lists] +%% File: latex-lab-toc.dtx (C) Copyright 2022-2023 LaTeX Project +\def\ltlabtocdate{2023-10-16} +\def\ltlabtocversion{0.85b} +\ProvidesFile{toc-latex-lab-testphase.ltx} + [\ltlabtocdate\space v\ltlabtocversion latex-lab wrapper toc] \RequirePackage{latex-lab-testphase-toc} \endinput %% -%% End of file `toc-tagging-latex-lab-testphase.ltx'. +%% End of file `toc-latex-lab-testphase.ltx'. diff --git a/Master/texmf-dist/tex/latex/tools/afterpage.sty b/Master/texmf-dist/tex/latex/tools/afterpage.sty index 52ae067c1fa..823f3ffa25c 100644 --- a/Master/texmf-dist/tex/latex/tools/afterpage.sty +++ b/Master/texmf-dist/tex/latex/tools/afterpage.sty @@ -37,7 +37,7 @@ %% File: afterpage.dtx Copyright (C) 1994 1994 1995 David Carlisle \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{afterpage} - [2014/10/28 v1.08 After-Page Package (DPC)] + [2023/07/04 v1.08 After-Page Package (DPC)] \newtoks\AP@output \global\AP@output\expandafter{\the\output} \newbox\AP@partial diff --git a/Master/texmf-dist/tex/latex/tools/array.sty b/Master/texmf-dist/tex/latex/tools/array.sty index ff3a57f6eaa..cd6eee6a0fc 100644 --- a/Master/texmf-dist/tex/latex/tools/array.sty +++ b/Master/texmf-dist/tex/latex/tools/array.sty @@ -46,7 +46,7 @@ \DeclareCurrentRelease{}{2020-10-01} \ProvidesPackage{array} - [2022/09/04 v2.5g Tabular extension package (FMi)] + [2023/10/16 v2.5g Tabular extension package (FMi)] %% \def\@addtopreamble#1{\xdef\@preamble{\@preamble #1}} @@ -194,7 +194,6 @@ \def\@xargarraycr#1{\unskip\gdef\do@row@strut {\@tempdima #1\advance\@tempdima \dp\@arstrutbox \vrule \@depth\@tempdima \@width\z@\global\let\do@row@strut\relax}% - % \begin{macrocode} \ifnum\@multicnt >\z@ \do@row@strut \fi \cr} \let\do@row@strut\relax diff --git a/Master/texmf-dist/tex/latex/tools/bm.sty b/Master/texmf-dist/tex/latex/tools/bm.sty index 37ac28e1176..8a136bd86d5 100644 --- a/Master/texmf-dist/tex/latex/tools/bm.sty +++ b/Master/texmf-dist/tex/latex/tools/bm.sty @@ -40,7 +40,7 @@ %% Development of this package was commissioned by Y&Y Inc. \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{bm} - [2022/01/05 v1.2f Bold Symbol Support (DPC/FMi)] + [2023/07/08 v1.2f 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}}} diff --git a/Master/texmf-dist/tex/latex/tools/calc.sty b/Master/texmf-dist/tex/latex/tools/calc.sty index f1ecb90347f..d36e1a57ba6 100644 --- a/Master/texmf-dist/tex/latex/tools/calc.sty +++ b/Master/texmf-dist/tex/latex/tools/calc.sty @@ -47,7 +47,7 @@ %% the normal LaTeX bug report address. \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{calc} - [2017/05/25 v4.3 Infix arithmetic (KKT,FJ)] + [2023/07/08 v4.3 Infix arithmetic (KKT,FJ)] \def\calc@assign@generic#1#2#3#4{\let\calc@A#1\let\calc@B#2% \calc@open(#4!% \global\calc@A\calc@B\endgroup#3\calc@B} diff --git a/Master/texmf-dist/tex/latex/tools/dcolumn.sty b/Master/texmf-dist/tex/latex/tools/dcolumn.sty index 78a01a5ba14..dccfaac71cb 100644 --- a/Master/texmf-dist/tex/latex/tools/dcolumn.sty +++ b/Master/texmf-dist/tex/latex/tools/dcolumn.sty @@ -38,7 +38,7 @@ %% File: dcolumn.dtx Copyright (C) 1992-1996 1999-2001 David Carlisle \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{dcolumn} - [2014/10/28 v1.06 decimal alignment package (DPC)] + [2023/07/08 v1.06 decimal alignment package (DPC)] \RequirePackage{array} \def\DC@#1#2#3{% \uccode`\~=`#1\relax diff --git a/Master/texmf-dist/tex/latex/tools/enumerate.sty b/Master/texmf-dist/tex/latex/tools/enumerate.sty index 86220225a13..31a7b6d8d11 100644 --- a/Master/texmf-dist/tex/latex/tools/enumerate.sty +++ b/Master/texmf-dist/tex/latex/tools/enumerate.sty @@ -38,7 +38,7 @@ %% File: enumerate.dtx Copyright 1993 1994 1999 David Carlisle \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{enumerate} - [2015/07/23 v3.00 enumerate extensions (DPC)] + [2023/07/04 v3.00 enumerate extensions (DPC)] \newtoks\@enLab \def\@enQmark{?} \def\@enLabel#1#2{% diff --git a/Master/texmf-dist/tex/latex/tools/ftnright.sty b/Master/texmf-dist/tex/latex/tools/ftnright.sty index d70101bae11..fbae2b7949a 100644 --- a/Master/texmf-dist/tex/latex/tools/ftnright.sty +++ b/Master/texmf-dist/tex/latex/tools/ftnright.sty @@ -39,7 +39,7 @@ %% Copyright (C) 1989-2004 Frank Mittelbach, all rights reserved. \NeedsTeXFormat{LaTeX2e}[1995/06/01] \ProvidesPackage{ftnright} - [2014/10/28 v1.1f footnote layout package (FMi)] + [2023/07/08 v1.1f footnote layout package (FMi)] %% %% \def\preparefootins{% diff --git a/Master/texmf-dist/tex/latex/tools/indentfirst.sty b/Master/texmf-dist/tex/latex/tools/indentfirst.sty index a552fdd8d67..be715f3d89b 100644 --- a/Master/texmf-dist/tex/latex/tools/indentfirst.sty +++ b/Master/texmf-dist/tex/latex/tools/indentfirst.sty @@ -38,7 +38,7 @@ %% File: indent.dtx Copyright (C) 1991-1994 David Carlisle \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{indentfirst} - [1995/11/23 v1.03 Indent first paragraph (DPC)] + [2023/07/02 v1.03 Indent first paragraph (DPC)] \let\@afterindentfalse\@afterindenttrue \@afterindenttrue \endinput diff --git a/Master/texmf-dist/tex/latex/tools/layout.sty b/Master/texmf-dist/tex/latex/tools/layout.sty index a80bc79e1f3..485dd89fac4 100644 --- a/Master/texmf-dist/tex/latex/tools/layout.sty +++ b/Master/texmf-dist/tex/latex/tools/layout.sty @@ -37,7 +37,7 @@ %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{layout} - [2021-03-10 v1.2e Show layout parameters] + [2023-08-20 v1.2e Show layout parameters] \DeclareOption{dutch}{% \def\Headertext{Kopregel} \def\Bodytext{Broodtekst} diff --git a/Master/texmf-dist/tex/latex/tools/longtable.sty b/Master/texmf-dist/tex/latex/tools/longtable.sty index 9d9ab53fda3..040f3f3d659 100644 --- a/Master/texmf-dist/tex/latex/tools/longtable.sty +++ b/Master/texmf-dist/tex/latex/tools/longtable.sty @@ -43,7 +43,7 @@ \DeclareCurrentRelease{}{2020-02-07} \ProvidesPackage{longtable} - [2021-09-01 v4.17 Multi-page Table package (DPC)] + [2025-10-25 v4.18 Multi-page Table package (DPC)] \def\LT@err{\PackageError{longtable}} \def\LT@warn{\PackageWarning{longtable}} \def\LT@final@warn{% @@ -458,7 +458,10 @@ \let\@footnotetext\LT@p@ftntext \setlength\hsize{#1}% \@arrayparboxrestore - \vrule \@height \ht\@arstrutbox \@width \z@} + \everypar{% + \vrule \@height \ht\@arstrutbox \@width \z@ + \everypar{}}% + } \def\LT@endpbox{% \@finalstrut\@arstrutbox \color@endgroup diff --git a/Master/texmf-dist/tex/latex/tools/shellesc.sty b/Master/texmf-dist/tex/latex/tools/shellesc.sty index dfea3222973..6fbd004dfed 100644 --- a/Master/texmf-dist/tex/latex/tools/shellesc.sty +++ b/Master/texmf-dist/tex/latex/tools/shellesc.sty @@ -49,7 +49,7 @@ \ifx\PackageWarning\undefined\def\PackageWarning#1#2{\wlog{#1: #2}}\fi \expandafter\next\fi \ProvidesPackage{shellesc} - [2023/04/15 v1.0d unified shell escape interface for LaTeX] + [2023/07/08 v1.0d unified shell escape interface for LaTeX] \chardef\shellesc@quotecat\catcode`\" \chardef\shellesc@underscorecat\catcode`\_ \@makeother\" diff --git a/Master/texmf-dist/tex/latex/tools/showkeys.sty b/Master/texmf-dist/tex/latex/tools/showkeys.sty index 236b135311b..090a8fb7875 100644 --- a/Master/texmf-dist/tex/latex/tools/showkeys.sty +++ b/Master/texmf-dist/tex/latex/tools/showkeys.sty @@ -46,7 +46,7 @@ \DeclareCurrentRelease{}{2022-06-01} \ProvidesPackage{showkeys} - [2023/05/11 v3.19 Show cite and label keys (DPC, MH)] + [2023/07/08 v3.19 Show cite and label keys (DPC, MH)] \DeclareOption{notref}{\let\SK@ref\@empty} \DeclareOption{notcite}{\let\SK@cite\@empty} \let\SK@refcolor\relax diff --git a/Master/texmf-dist/tex/latex/tools/tabularx.sty b/Master/texmf-dist/tex/latex/tools/tabularx.sty index a084ff17cd4..4079dc9f63e 100644 --- a/Master/texmf-dist/tex/latex/tools/tabularx.sty +++ b/Master/texmf-dist/tex/latex/tools/tabularx.sty @@ -37,7 +37,7 @@ %% File: tabularx.dtx Copyright (C) 1991-1999 2012 2014 2016 2017 David Carlisle \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{tabularx} - [2020/01/15 v2.11c `tabularx' package (DPC)] + [2023/07/08 v2.11c `tabularx' package (DPC)] \DeclareOption{infoshow}{\AtEndOfPackage\tracingtabularx} \DeclareOption{debugshow}{\AtEndOfPackage\tracingtabularx} \ProcessOptions diff --git a/Master/texmf-dist/tex/latex/tools/thb.sty b/Master/texmf-dist/tex/latex/tools/thb.sty index 56deb3cd976..60ffb1140b8 100644 --- a/Master/texmf-dist/tex/latex/tools/thb.sty +++ b/Master/texmf-dist/tex/latex/tools/thb.sty @@ -36,7 +36,7 @@ %% given in the file `manifest.txt'. %% %% -\def\FMithmInfo{2014/10/28 v2.2c Theorem extension package (FMi)} +\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)} %% %% Package `theorem' to use with LaTeX2e %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved. diff --git a/Master/texmf-dist/tex/latex/tools/thc.sty b/Master/texmf-dist/tex/latex/tools/thc.sty index 79d85c49184..c8ddd8b16c3 100644 --- a/Master/texmf-dist/tex/latex/tools/thc.sty +++ b/Master/texmf-dist/tex/latex/tools/thc.sty @@ -36,7 +36,7 @@ %% given in the file `manifest.txt'. %% %% -\def\FMithmInfo{2014/10/28 v2.2c Theorem extension package (FMi)} +\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)} %% %% Package `theorem' to use with LaTeX2e %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved. diff --git a/Master/texmf-dist/tex/latex/tools/thcb.sty b/Master/texmf-dist/tex/latex/tools/thcb.sty index 39be6ed45a1..f6db2854666 100644 --- a/Master/texmf-dist/tex/latex/tools/thcb.sty +++ b/Master/texmf-dist/tex/latex/tools/thcb.sty @@ -36,7 +36,7 @@ %% given in the file `manifest.txt'. %% %% -\def\FMithmInfo{2014/10/28 v2.2c Theorem extension package (FMi)} +\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)} %% %% Package `theorem' to use with LaTeX2e %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved. diff --git a/Master/texmf-dist/tex/latex/tools/theorem.sty b/Master/texmf-dist/tex/latex/tools/theorem.sty index 4304eff280e..5bbbe63e71a 100644 --- a/Master/texmf-dist/tex/latex/tools/theorem.sty +++ b/Master/texmf-dist/tex/latex/tools/theorem.sty @@ -36,7 +36,7 @@ %% given in the file `manifest.txt'. %% %% -\def\FMithmInfo{2014/10/28 v2.2c Theorem extension package (FMi)} +\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)} %% %% Package `theorem' to use with LaTeX2e %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved. diff --git a/Master/texmf-dist/tex/latex/tools/thm.sty b/Master/texmf-dist/tex/latex/tools/thm.sty index f62e6b65c07..7c98832f830 100644 --- a/Master/texmf-dist/tex/latex/tools/thm.sty +++ b/Master/texmf-dist/tex/latex/tools/thm.sty @@ -36,7 +36,7 @@ %% given in the file `manifest.txt'. %% %% -\def\FMithmInfo{2014/10/28 v2.2c Theorem extension package (FMi)} +\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)} %% %% Package `theorem' to use with LaTeX2e %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved. diff --git a/Master/texmf-dist/tex/latex/tools/thmb.sty b/Master/texmf-dist/tex/latex/tools/thmb.sty index 167aaafe080..47babc61d69 100644 --- a/Master/texmf-dist/tex/latex/tools/thmb.sty +++ b/Master/texmf-dist/tex/latex/tools/thmb.sty @@ -36,7 +36,7 @@ %% given in the file `manifest.txt'. %% %% -\def\FMithmInfo{2014/10/28 v2.2c Theorem extension package (FMi)} +\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)} %% %% Package `theorem' to use with LaTeX2e %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved. diff --git a/Master/texmf-dist/tex/latex/tools/thp.sty b/Master/texmf-dist/tex/latex/tools/thp.sty index ce803310b70..951bc8fa14c 100644 --- a/Master/texmf-dist/tex/latex/tools/thp.sty +++ b/Master/texmf-dist/tex/latex/tools/thp.sty @@ -36,7 +36,7 @@ %% given in the file `manifest.txt'. %% %% -\def\FMithmInfo{2014/10/28 v2.2c Theorem extension package (FMi)} +\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)} %% %% Package `theorem' to use with LaTeX2e %% Copyright (C) 1989-1995 Frank Mittelbach, all rights reserved. diff --git a/Master/texmf-dist/tex/latex/tools/xr.sty b/Master/texmf-dist/tex/latex/tools/xr.sty index 8304f2ff866..ece5e0df2d0 100644 --- a/Master/texmf-dist/tex/latex/tools/xr.sty +++ b/Master/texmf-dist/tex/latex/tools/xr.sty @@ -38,7 +38,7 @@ %% File: xr.dtx Copyright (C) 1993-2019 David Carlisle \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{xr} - [2020-05-10 v5.06 eXternal References (DPC)] + [2023-07-04 v5.06 eXternal References (DPC)] \def\externaldocument{\@ifnextchar[\XR@{\XR@[]}} \let\externalcitedocument\externaldocument \def\XR@[#1]#2{{% |