summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex-dev
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-09-13 20:40:56 +0000
committerKarl Berry <karl@freefriends.org>2023-09-13 20:40:56 +0000
commit99bdd2e42bf8c8ec861eb8b6a7708f63396c5d8e (patch)
tree31f555c33bcc0153b169a88c625085b6c39389ee /Master/texmf-dist/tex/latex-dev
parent8f22ac5379816e4b6bdd9e5c9dc981b4223187b4 (diff)
latex-dev (13sep23)
git-svn-id: svn://tug.org/texlive/trunk@68270 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex-dev')
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latex.ltx573
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latexrelease.sty746
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltluatex.lua8
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltluatex.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/structuredlog.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/firstaid/everysel-ltx.sty46
-rw-r--r--Master/texmf-dist/tex/latex-dev/firstaid/filehook-ltx.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx19
9 files changed, 1115 insertions, 285 deletions
diff --git a/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty b/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty
index 2f63091fb5d..35b348e5456 100644
--- a/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty
+++ b/Master/texmf-dist/tex/latex-dev/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-dev/base/latex.ltx b/Master/texmf-dist/tex/latex-dev/base/latex.ltx
index f976b8d04f1..54b3e969575 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latex.ltx
+++ b/Master/texmf-dist/tex/latex-dev/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')
@@ -706,7 +708,7 @@
\def\fmtname{LaTeX2e}
\edef\fmtversion
{2023-11-01}
-\def\patch@level{-0}
+\def\patch@level{-1}
\edef\development@branch@name{develop \the\year-\the\month-\the\day}
\iffalse
\def\reserved@a#1/#2/#3\@nil{%
@@ -1803,8 +1805,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 +4007,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 +4338,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 +4345,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 +4535,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.1e}
-\def\lthooksdate{2023/06/06}
+\def\lthooksversion{v1.1f}
+\def\lthooksdate{2023/08/11}
\ExplSyntaxOn
\bool_new:N \g__hook_debug_bool
\cs_new_eq:NN \__hook_debug:n \use_none:n
@@ -6391,8 +6309,8 @@
%% Copyright (C) 2020-2023
%% Frank Mittelbach, Phelype Oleinik, The LaTeX Project
%%% From File: ltcmdhooks.dtx
-\def\ltcmdhooksversion{v1.0h}
-\def\ltcmdhooksdate{2023/05/21}
+\def\ltcmdhooksversion{v1.0i}
+\def\ltcmdhooksdate{2023/06/16}
\ExplSyntaxOn
\tl_new:N \g_hook_patch_action_list_tl
\int_new:N \l__hook_patch_num_args_int
@@ -6832,6 +6750,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
@@ -7520,6 +7613,7 @@ Type H <return> for immediate help.}%
\catcode `\~=13
\def~{\nobreakspace{}}
\expandafter\let\expandafter\@xobeysp\csname nobreakspace \endcsname
+\let\@xobeytab\@xobeysp
\def\@{\spacefactor\@m{}}%
\DeclareRobustCommand\hspace{\@ifstar\@hspacer\@hspace}
\newskip\sp@ce@skip
@@ -7786,7 +7880,16 @@ Type H <return> for immediate help.}%
\expandafter{\reserved@a{#2}{#3}}%
\reserved@a}
\ExplSyntaxOn
-\cs_new_eq:NN \IfFileExists@@ \file_full_name:n
+\cs_new:Npn \IfFileExists@@ #1
+ {
+ \tl_if_blank:nF {#1}
+ {
+ \tl_if_head_eq_charcode:oNTF { \use:n #1 } |
+ {#1}
+ { \file_full_name:n {#1} }
+ }
+ }
+\cs_generate_variant:Nn \tl_if_head_eq_charcode:nNTF { o }
\ExplSyntaxOff
\long\def\@iffileonpath#1{%
\let\reserved@a\@secondoftwo
@@ -11840,6 +11943,262 @@ Type H <return> for immediate help.}%
\NewDocumentCommand\Ref{s}
{\IfBooleanTF{#1}{\@kernel@sRef}{\@kernel@Ref}}
\def\@currentlabel{}
+%% File: ltproperties.dtx
+\def\ltpropertiesversion{1.0b}
+\def\ltpropertiesdate{2023-09-13}
+
+
+
+\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:xnnn { \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 {xnnn}
+\cs_new_protected:Npn \NewProperty #1#2#3#4
+ {
+ \exp_args:Nx \property_new:nnnn {#1}{#2}{#3}{#4}
+ }
+\cs_new_protected:Npn \SetProperty #1#2#3#4
+ {
+ \exp_args:Nx \property_gset:nnnn {#1}{#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:xn { \tl_to_str:n {#1} } {#2} }
+\cs_generate_variant:Nn \property_record:nn { nV , xx }
+\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 { x }
+\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
+ \property_record:xx {#1}{#2}
+ \@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 {xx}
+\cs_set_eq:NN \RefUndefinedWarn \property_ref_undefined_warn:xx
+\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 { currentlabel } { now } { ?? } { \@currentlabel }
+\property_new:nnnn { title } { now }
+ { \exp_not:n { \textbf { ?? } } } { \@currentlabelname }
+\property_new:nnnn { target } { now } { } { \@currentHref }
+\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}
@@ -11860,6 +12219,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
@@ -11910,7 +12270,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
@@ -12019,7 +12378,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]]
@@ -12053,7 +12416,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
@@ -12062,13 +12429,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
@@ -12077,7 +12440,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}
@@ -15864,7 +16230,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
@@ -16002,7 +16368,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-dev/base/latexrelease.sty b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
index 9ada4b71c40..c8776b66f93 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
+++ b/Master/texmf-dist/tex/latex-dev/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')
@@ -1986,8 +1988,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 +4250,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 +4581,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 +4588,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 +4788,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
@@ -4884,8 +4800,8 @@ of this package available from CTAN}
\catcode`\^^@=\@latexrelease@catcode@null\relax
%%% From File: lthooks.dtx
-\def\lthooksversion{v1.1e}
-\def\lthooksdate{2023/06/06}
+\def\lthooksversion{v1.1f}
+\def\lthooksdate{2023/08/11}
\ExplSyntaxOn
\NewModuleRelease{2020/10/01}{lthooks}
{The~hook~management~system}
@@ -5367,7 +5283,7 @@ of this package available from CTAN}
}
{ \tl_gset:Nn \g__hook_hook_curr_name_tl {#1} }
}
-\IncludeInRelease{2023/06/01}{\hook_gput_code_with_args:nnn}
+\IncludeInRelease{2023/06/01}{\hook_gput_code:nnn}
{Hooks~with~args}
\cs_new_protected:Npn \hook_gput_code:nnn #1 #2 #3
{
@@ -5844,7 +5760,7 @@ of this package available from CTAN}
}
}
\EndIncludeInRelease
-\IncludeInRelease{2023/06/01}{\hook_gremove_code:nn}
+\IncludeInRelease{2020/10/01}{\hook_gremove_code:nn}
{Hooks~with~args}
\cs_new_protected:Npn \__hook_gremove_code:nn #1 #2
{
@@ -6302,6 +6218,8 @@ of this package available from CTAN}
\cs_gset_eq:NN \hook_use:n \__hook_use_initialized:n
\cs_gset_eq:NN \__hook_preamble_hook:n \use_none:n
}
+\cs_gset_eq:NN \@expl@@@initialize@all@@
+ \__hook_initialize_all:
\EndIncludeInRelease
\IncludeInRelease{2023/06/01}{\__hook_initialize_hook_code:n}
{Hooks~with~args}
@@ -7511,7 +7429,7 @@ of this package available from CTAN}
\NewDocumentCommand \NewMirroredHookPairWithArguments { mmm }
{ \hook_new_pair_with_args:nnn {#1} {#2} {#3} }
\EndIncludeInRelease
-\IncludeInRelease{2023/06/01}{\NewHookWithArguments}
+\IncludeInRelease{2020/10/01}{\NewHookWithArguments}
{Hooks~with~args}
\cs_new_protected:Npn \NewHookWithArguments #1 #2 { }
\cs_new_protected:Npn \NewReversedHookWithArguments #1 #2 { }
@@ -7736,8 +7654,8 @@ of this package available from CTAN}
%% Copyright (C) 2020-2023
%% Frank Mittelbach, Phelype Oleinik, The LaTeX Project
%%% From File: ltcmdhooks.dtx
-\def\ltcmdhooksversion{v1.0h}
-\def\ltcmdhooksdate{2023/05/21}
+\def\ltcmdhooksversion{v1.0i}
+\def\ltcmdhooksdate{2023/06/16}
\ExplSyntaxOn
\NewModuleRelease{2021/06/01}{ltcmdhooks}
{The~hook~management~system~for~commands}
@@ -8305,10 +8223,10 @@ of this package available from CTAN}
\cs_gset_eq:NN #1 \kerneltmpDoNotUse
}
\EndIncludeInRelease
-\IncludeInRelease{2021/11/15}{wrong-cmd-hook}%
+\IncludeInRelease{2023/06/01}{wrong-cmd-hook}%
{Standardise~generic~hook~names}
\EndIncludeInRelease
-\IncludeInRelease{2021/11/15}{wrong-cmd-hook}%
+\IncludeInRelease{2021/06/01}{wrong-cmd-hook}%
{Standardise~generic~hook~names}
\msg_new:nnnn { hooks } { wrong-cmd-hook }
{
@@ -8346,6 +8264,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
@@ -8920,6 +9030,14 @@ of this package available from CTAN}
\@esphack
\fi}
\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{}}%
@@ -9371,7 +9489,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}}%
@@ -9390,7 +9508,16 @@ of this package available from CTAN}
\expandafter{\reserved@a{#2}{#3}}%
\reserved@a}
\ExplSyntaxOn
-\cs_new_eq:NN \IfFileExists@@ \file_full_name:n
+\cs_new:Npn \IfFileExists@@ #1
+ {
+ \tl_if_blank:nF {#1}
+ {
+ \tl_if_head_eq_charcode:oNTF { \use:n #1 } |
+ {#1}
+ { \file_full_name:n {#1} }
+ }
+ }
+\cs_generate_variant:Nn \tl_if_head_eq_charcode:nNTF { o }
\ExplSyntaxOff
\EndIncludeInRelease
\IncludeInRelease{2021/06/01}%
@@ -13111,7 +13238,344 @@ of this package available from CTAN}
\let\Ref\@undefined
\EndIncludeInRelease
+%% File: ltproperties.dtx
+\def\ltpropertiesversion{1.0b}
+\def\ltpropertiesdate{2023-09-13}
+
+
+
+\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:xnnn { \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 {xnnn}
+\cs_new_protected:Npn \NewProperty #1#2#3#4
+ {
+ \exp_args:Nx \property_new:nnnn {#1}{#2}{#3}{#4}
+ }
+\cs_new_protected:Npn \SetProperty #1#2#3#4
+ {
+ \exp_args:Nx \property_gset:nnnn {#1}{#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:xn { \tl_to_str:n {#1} } {#2} }
+\cs_generate_variant:Nn \property_record:nn { nV , xx }
+\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 { x }
+\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
+ \property_record:xx {#1}{#2}
+ \@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 {xx}
+\cs_set_eq:NN \RefUndefinedWarn \property_ref_undefined_warn:xx
+\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 { currentlabel } { now } { ?? } { \@currentlabel }
+\property_new:nnnn { title } { now }
+ { \exp_not:n { \textbf { ?? } } } { \@currentlabelname }
+\property_new:nnnn { target } { now } { } { \@currentHref }
+\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{%
@@ -13225,7 +13689,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
@@ -13443,6 +13906,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
@@ -13494,17 +13972,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
@@ -13521,9 +13988,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%
@@ -16609,7 +17129,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-dev/base/ltluatex.lua b/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
index 5573fc75636..45bd9dff75b 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
+++ b/Master/texmf-dist/tex/latex-dev/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-dev/base/ltluatex.tex b/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
index ddef389f103..c42a75e40b1 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
@@ -47,7 +47,7 @@
#1#2[#3]{\endgroup\immediate\write-1{File: #1 #3}}
\fi
\ProvidesFile{ltluatex.tex}%
-[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-dev/base/structuredlog.sty b/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty
index cd77c7b8d2c..a5392defc98 100644
--- a/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty
+++ b/Master/texmf-dist/tex/latex-dev/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-dev/firstaid/everysel-ltx.sty b/Master/texmf-dist/tex/latex-dev/firstaid/everysel-ltx.sty
deleted file mode 100644
index c7e7e6e06ca..00000000000
--- a/Master/texmf-dist/tex/latex-dev/firstaid/everysel-ltx.sty
+++ /dev/null
@@ -1,46 +0,0 @@
-%%
-%% This is file `everysel-ltx.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% latex2e-first-aid-for-external-files.dtx (with options: `everysel-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
-%% The LaTeX Project and any individual authors listed elsewhere
-%% in this file.
-%%
-%% This file was generated from file(s) of the Standard LaTeX `First Aid 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
-%% https://www.latex-project.org/lppl.txt
-%% and version 1.3c or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
-%%
-%% This file may only be distributed together with a copy of the LaTeX
-%% `First Aid Bundle'. You may however distribute the LaTeX `First Aid Bundle'
-%% without such generated files.
-%%
-%% File: latex2e-first-aid-for-external-files.dtx (C) Copyright 2020-2023
-%%
-%% 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}}
-\endinput
-%%
-%% End of file `everysel-ltx.sty'.
diff --git a/Master/texmf-dist/tex/latex-dev/firstaid/filehook-ltx.sty b/Master/texmf-dist/tex/latex-dev/firstaid/filehook-ltx.sty
index 2415a38f1c8..ffff6eb4d99 100644
--- a/Master/texmf-dist/tex/latex-dev/firstaid/filehook-ltx.sty
+++ b/Master/texmf-dist/tex/latex-dev/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-dev/firstaid/latex2e-first-aid-for-external-files.ltx b/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx
index df4b77ed714..4cfc1c4d1f8 100644
--- a/Master/texmf-dist/tex/latex-dev/firstaid/latex2e-first-aid-for-external-files.ltx
+++ b/Master/texmf-dist/tex/latex-dev/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/07/18}
+\def\LaTeXFirstAidVersion{v1.1a}
\ProvidesFile{latex2e-first-aid-for-external-files.ltx}
[\LaTeXFirstAidDate\space \LaTeXFirstAidVersion\space
LaTeX kernel fixes to external files and packages]
@@ -167,19 +167,6 @@
\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
-}
\endinput
%%
%% End of file `latex2e-first-aid-for-external-files.ltx'.