summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-05-16 20:22:00 +0000
committerKarl Berry <karl@freefriends.org>2023-05-16 20:22:00 +0000
commit8e9d8b027e86eefeb1788f42ec5fc0a8c76548ba (patch)
tree23fc8c8906eff72625be83d276d39e516ecb1f41 /Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
parente66174d7e5c8c2f71571c928e0d6c5a8b037a904 (diff)
l3kernel (16may23)
git-svn-id: svn://tug.org/texlive/trunk@67134 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3expan.dtx')
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3expan.dtx562
1 files changed, 19 insertions, 543 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
index 8e6e06deeb1..28ac1c8123f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-05-15}
%
% \maketitle
%
@@ -1043,18 +1043,10 @@
% \end{macro}
%
% \begin{macro}[EXP]{\::e}
-% With the \tn{expanded} primitive available, just expand. Otherwise
-% defer to \cs{exp_args:Ne} implemented later.
+% With the \tn{expanded} primitive available, just expand.
% \begin{macrocode}
-\cs_if_exist:NTF \tex_expanded:D
- {
- \cs_new:Npn \::e #1 \::: #2#3
- { \tex_expanded:D { \exp_not:n { #1 \::: } { \exp_not:n {#2} {#3} } } }
- }
- {
- \cs_new:Npn \::e #1 \::: #2#3
- { \exp_args:Ne \@@_arg_next:nnn {#3} {#1} {#2} }
- }
+\cs_new:Npn \::e #1 \::: #2#3
+ { \tex_expanded:D { \exp_not:n { #1 \::: } { \exp_not:n {#2} {#3} } } }
% \end{macrocode}
% \end{macro}
%
@@ -1242,21 +1234,10 @@
% \end{macro}
%
% \begin{macro}[EXP]{\exp_args:Ne}
-% When the \tn{expanded} primitive is available, use it. Otherwise
-% use \cs{@@_e:nn}, defined later, to fully expand tokens.
+% When the \tn{expanded} primitive is available, use it.
% \begin{macrocode}
-\cs_if_exist:NTF \tex_expanded:D
- {
- \cs_new:Npn \exp_args:Ne #1#2
- { \exp_after:wN #1 \tex_expanded:D { {#2} } }
- }
- {
- \cs_new:Npn \exp_args:Ne #1#2
- {
- \exp_after:wN #1 \exp_after:wN
- { \exp:w \@@_e:nn {#2} { } }
- }
- }
+\cs_new:Npn \exp_args:Ne #1#2
+ { \exp_after:wN #1 \tex_expanded:D { {#2} } }
% \end{macrocode}
% \end{macro}
%
@@ -1300,16 +1281,12 @@
\exp_after:wN #2
\exp_after:wN { \exp:w \@@_eval_register:c {#3} }
}
-\cs_if_exist:NTF \tex_expanded:D
+\cs_new:Npn \exp_args:NNe #1#2#3
{
- \cs_new:Npn \exp_args:NNe #1#2#3
- {
- \exp_after:wN #1
- \exp_after:wN #2
- \tex_expanded:D { {#3} }
- }
+ \exp_after:wN #1
+ \exp_after:wN #2
+ \tex_expanded:D { {#3} }
}
- { \cs_new:Npn \exp_args:NNe { \::N \::e \::: } }
\cs_new:Npn \exp_args:NNf #1#2#3
{
\exp_after:wN #1
@@ -1428,15 +1405,8 @@
\exp_after:wN \@@_arg_last_unbraced:nn
\exp_after:wN { \exp:w \@@_eval_register:c {#2} } {#1}
}
-\cs_if_exist:NTF \tex_expanded:D
- {
- \cs_new:Npn \::e_unbraced \::: #1#2
- { \tex_expanded:D { \exp_not:n {#1} #2 } }
- }
- {
- \cs_new:Npn \::e_unbraced \::: #1#2
- { \exp:w \@@_e:nn {#2} {#1} }
- }
+\cs_new:Npn \::e_unbraced \::: #1#2
+ { \tex_expanded:D { \exp_not:n {#1} #2 } }
\cs_new:Npn \::f_unbraced \::: #1#2
{
\exp_after:wN \@@_arg_last_unbraced:nn
@@ -1487,12 +1457,8 @@
{ \exp_after:wN #1 \exp:w \@@_eval_register:N #2 }
\cs_new:Npn \exp_last_unbraced:Nv #1#2
{ \exp_after:wN #1 \exp:w \@@_eval_register:c {#2} }
-\cs_if_exist:NTF \tex_expanded:D
- {
- \cs_new:Npn \exp_last_unbraced:Ne #1#2
- { \exp_after:wN #1 \tex_expanded:D {#2} }
- }
- { \cs_new:Npn \exp_last_unbraced:Ne { \::e_unbraced \::: } }
+\cs_new:Npn \exp_last_unbraced:Ne #1#2
+ { \exp_after:wN #1 \tex_expanded:D {#2} }
\cs_new:Npn \exp_last_unbraced:Nf #1#2
{ \exp_after:wN #1 \exp:w \exp_end_continue_f:w #2 }
\cs_new:Npn \exp_last_unbraced:NNo #1#2#3
@@ -1591,15 +1557,8 @@
% \begin{macrocode}
\cs_new:Npn \exp_not:c #1 { \exp_after:wN \exp_not:N \cs:w #1 \cs_end: }
\cs_new:Npn \exp_not:o #1 { \__kernel_exp_not:w \exp_after:wN {#1} }
-\cs_if_exist:NTF \tex_expanded:D
- {
- \cs_new:Npn \exp_not:e #1
- { \__kernel_exp_not:w \tex_expanded:D { {#1} } }
- }
- {
- \cs_new:Npn \exp_not:e
- { \__kernel_exp_not:w \exp_args:Ne \prg_do_nothing: }
- }
+\cs_new:Npn \exp_not:e #1
+ { \__kernel_exp_not:w \tex_expanded:D { {#1} } }
\cs_new:Npn \exp_not:f #1
{ \__kernel_exp_not:w \exp_after:wN { \exp:w \exp_end_continue_f:w #1 } }
\cs_new:Npn \exp_not:V #1
@@ -1685,475 +1644,6 @@
% \end{macro}
% \end{macro}
%
-%
-% \subsection{Emulating \texttt{e}-type expansion}
-%
-% When the \tn{expanded} primitive is available it is used to implement
-% \texttt{e}-type expansion; otherwise we emulate it.
-%
-% \begin{macrocode}
-\cs_if_exist:NF \tex_expanded:D
- {
-% \end{macrocode}
-%
-% \begin{macro}[EXP]{\@@_e:nn, \@@_e_end:nn}
-% Repeatedly expand tokens, keeping track of fully-expanded tokens in
-% the second argument to \cs{@@_e:nn}; this function eventually
-% calls \cs{@@_e_end:nn} to leave \cs{exp_end:} in the input
-% stream, followed by the result of the expansion. There are many
-% special cases: spaces, brace groups, \tn{noexpand}, \tn{unexpanded},
-% \tn{the}, \tn{primitive}.
-% While we use brace tricks \cs{if_false:} |{| \cs{fi:}, the expansion
-% of this function is always triggered by \cs{exp:w} so brace balance
-% is eventually restored after that is hit with a single step of
-% expansion. Otherwise we could not nest \texttt{e}-type expansions
-% within each other.
-% \begin{macrocode}
- \cs_new:Npn \@@_e:nn #1
- {
- \if_false: { \fi:
- \tl_if_head_is_N_type:nTF {#1}
- { \@@_e:N }
- {
- \tl_if_head_is_group:nTF {#1}
- { \@@_e_group:n }
- {
- \tl_if_empty:nTF {#1}
- { \exp_after:wN \@@_e_end:nn }
- { \exp_after:wN \@@_e_space:nn }
- \exp_after:wN { \if_false: } \fi:
- }
- }
- #1
- }
- }
- \cs_new:Npn \@@_e_end:nn #1#2 { \exp_end: #2 }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_space:nn}
-% For an explicit space character, remove it by \texttt{f}-expansion
-% and put it in the (future) output.
-% \begin{macrocode}
- \cs_new:Npn \@@_e_space:nn #1#2
- { \exp_args:Nf \@@_e:nn {#1} { #2 ~ } }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_group:n, \@@_e_put:nn, \@@_e_put:nnn}
-% For a group, expand its contents, wrap it in two pairs of braces,
-% and call \cs{@@_e_put:nn}. This function places the first item (the
-% double-brace wrapped result) into the output. Importantly,
-% \cs{tl_head:n} works even if the input contains quarks.
-% \begin{macrocode}
- \cs_new:Npn \@@_e_group:n #1
- {
- \exp_after:wN \@@_e_put:nn
- \exp_after:wN { \exp_after:wN { \exp_after:wN {
- \exp:w \if_false: } \fi: \@@_e:nn {#1} { } } }
- }
- \cs_new:Npn \@@_e_put:nn #1
- {
- \exp_args:NNo \exp_args:No \@@_e_put:nnn
- { \tl_head:n {#1} } {#1}
- }
- \cs_new:Npn \@@_e_put:nnn #1#2#3
- { \exp_args:No \@@_e:nn { \use_none:n #2 } { #3 #1 } }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]
-% {\@@_e:N, \@@_e:Nnn, \@@_e_protected:Nnn, \@@_e_expandable:Nnn}
-% For an \texttt{N}-type token, call \cs{@@_e:Nnn} with arguments the
-% \meta{first token}, the remaining tokens to expand and what's
-% already been expanded. If the \meta{first token} is non-expandable,
-% including \tn{protected} (\tn{long} or not) macros, it is put in the
-% result by \cs{@@_e_protected:Nnn}. The four special primitives
-% \tn{unexpanded}, \tn{noexpand}, \tn{the}, \tn{primitive} are
-% detected; otherwise the token is expanded by
-% \cs{@@_e_expandable:Nnn}.
-% \begin{macrocode}
- \cs_new:Npn \@@_e:N #1
- {
- \exp_after:wN \@@_e:Nnn
- \exp_after:wN #1
- \exp_after:wN { \if_false: } \fi:
- }
- \cs_new:Npn \@@_e:Nnn #1
- {
- \if_case:w
- \exp_after:wN \if_meaning:w \exp_not:N #1 #1 1 ~ \fi:
- \token_if_protected_macro:NT #1 { 1 ~ }
- \token_if_protected_long_macro:NT #1 { 1 ~ }
- \if_meaning:w \exp_not:n #1 2 ~ \fi:
- \if_meaning:w \exp_not:N #1 3 ~ \fi:
- \if_meaning:w \tex_the:D #1 4 ~ \fi:
- \if_meaning:w \tex_primitive:D #1 5 ~ \fi:
- 0 ~
- \exp_after:wN \@@_e_expandable:Nnn
- \or: \exp_after:wN \@@_e_protected:Nnn
- \or: \exp_after:wN \@@_e_unexpanded:Nnn
- \or: \exp_after:wN \@@_e_noexpand:Nnn
- \or: \exp_after:wN \@@_e_the:Nnn
- \or: \exp_after:wN \@@_e_primitive:Nnn
- \fi:
- #1
- }
- \cs_new:Npn \@@_e_protected:Nnn #1#2#3
- { \@@_e:nn {#2} { #3 #1 } }
- \cs_new:Npn \@@_e_expandable:Nnn #1#2
- { \exp_args:No \@@_e:nn { #1 #2 } }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]
-% {
-% \@@_e_primitive:Nnn,
-% \@@_e_primitive_aux:NNw,
-% \@@_e_primitive_aux:NNnn,
-% \@@_e_primitive_other:NNnn,
-% \@@_e_primitive_other_aux:nNNnn
-% }
-% We don't try hard to make sensible error recovery since the error
-% recovery of \cs{tex_primitive:D} when followed by something else
-% than a primitive depends on the engine. The only valid case is when
-% what follows is \texttt{N}-type. Then distinguish special
-% primitives \tn{unexpanded}, \tn{noexpand}, \tn{the}, \tn{primitive}
-% from other primitives. In the \enquote{other} case, the only
-% reasonable way to check if the primitive that follows
-% \cs{tex_primitive:D} is expandable is to expand and compare the
-% before-expansion and after-expansion results. If they coincide then
-% probably the primitive is non-expandable and should be put in the
-% output together with \cs{tex_primitive:D} (one can cook up contrived
-% counter-examples where the true \tn{expanded} would have an infinite
-% loop), and otherwise one should continue expanding.
-% \begin{macrocode}
- \cs_new:Npn \@@_e_primitive:Nnn #1#2
- {
- \if_false: { \fi:
- \tl_if_head_is_N_type:nTF {#2}
- { \@@_e_primitive_aux:NNw #1 }
- {
- \msg_expandable_error:nnn { kernel } { e-type }
- { Missing~primitive~name }
- \@@_e_primitive_aux:NNw #1 \c_empty_tl
- }
- #2
- }
- }
- \cs_new:Npn \@@_e_primitive_aux:NNw #1#2
- {
- \exp_after:wN \@@_e_primitive_aux:NNnn
- \exp_after:wN #1
- \exp_after:wN #2
- \exp_after:wN { \if_false: } \fi:
- }
- \cs_new:Npn \@@_e_primitive_aux:NNnn #1#2
- {
- \exp_args:Nf \str_case_e:nnTF { \cs_to_str:N #2 }
- {
- { unexpanded } { \@@_e_unexpanded:Nnn \exp_not:n }
- { noexpand } { \@@_e_noexpand:Nnn \exp_not:N }
- { the } { \@@_e_the:Nnn \tex_the:D }
- {
- \sys_if_engine_xetex:T { pdf }
- \sys_if_engine_luatex:T { pdf }
- primitive
- } { \@@_e_primitive:Nnn #1 }
- }
- { \@@_e_primitive_other:NNnn #1 #2 }
- }
- \cs_new:Npn \@@_e_primitive_other:NNnn #1#2#3
- {
- \exp_args:No \@@_e_primitive_other_aux:nNNnn
- { #1 #2 #3 }
- #1 #2 {#3}
- }
- \cs_new:Npn \@@_e_primitive_other_aux:nNNnn #1#2#3#4#5
- {
- \str_if_eq:nnTF {#1} { #2 #3 #4 }
- { \@@_e:nn {#4} { #5 #2 #3 } }
- { \@@_e:nn {#1} {#5} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_noexpand:Nnn}
-% The \tn{noexpand} primitive has no effect when followed by a token
-% that is not \texttt{N}-type; otherwise \cs{@@_e_put:nn} can grab the
-% next token and put it in the result unchanged.
-% \begin{macrocode}
- \cs_new:Npn \@@_e_noexpand:Nnn #1#2
- {
- \tl_if_head_is_N_type:nTF {#2}
- { \@@_e_put:nn } { \@@_e:nn } {#2}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]
-% {
-% \@@_e_unexpanded:Nnn, \@@_e_unexpanded:nn,
-% \@@_e_unexpanded:nN, \@@_e_unexpanded:N
-% }
-% The \tn{unexpanded} primitive expands and ignores any space,
-% \cs{scan_stop:}, or token affected by \cs{exp_not:N}, then expects a
-% brace group. Since we only support brace-balanced token lists it is
-% impossible to support the case where the argument of \tn{unexpanded}
-% starts with an implicit brace. Even though we want to expand and
-% ignore spaces we cannot blindly \texttt{f}-expand because tokens
-% affected by \cs{exp_not:N} should discarded without being expanded
-% further.
-%
-% As usual distinguish four cases: brace group (the normal case, where
-% we just put the item in the result), space (just \texttt{f}-expand
-% to remove the space), empty (an error), or \texttt{N}-type
-% \meta{token}. In the last case call \cs{@@_e_unexpanded:nN}
-% triggered by an \texttt{f}-expansion. Having a non-expandable
-% \meta{token} after \tn{unexpanded} is an error (we recover by
-% passing |{}| to \tn{unexpanded}; this is different from \TeX{}
-% because the error recovery of \tn{unexpanded} changes the balance of
-% braces), unless that \meta{token} is \cs{scan_stop:} or a space
-% (recall that we don't implement the case of an implicit begin-group
-% token). An expandable \meta{token} is instead expanded, unless it
-% is \tn{noexpand}. The latter primitive can be followed by an expandable
-% \texttt{N}-type token (removed), by a non-expandable one (kept
-% and later causing an error), by a space (removed by
-% \texttt{f}-expansion), or by a brace group or nothing (later causing
-% an error).
-% \begin{macrocode}
- \cs_new:Npn \@@_e_unexpanded:Nnn #1 { \@@_e_unexpanded:nn }
- \cs_new:Npn \@@_e_unexpanded:nn #1
- {
- \tl_if_head_is_N_type:nTF {#1}
- {
- \exp_args:Nf \@@_e_unexpanded:nn
- { \@@_e_unexpanded:nN {#1} #1 }
- }
- {
- \tl_if_head_is_group:nTF {#1}
- { \@@_e_put:nn }
- {
- \tl_if_empty:nTF {#1}
- {
- \msg_expandable_error:nnn
- { kernel } { e-type }
- { \unexpanded missing~brace }
- \@@_e_end:nn
- }
- { \exp_args:Nf \@@_e_unexpanded:nn }
- }
- {#1}
- }
- }
- \cs_new:Npn \@@_e_unexpanded:nN #1#2
- {
- \exp_after:wN \if_meaning:w \exp_not:N #2 #2
- \exp_after:wN \use_i:nn
- \else:
- \exp_after:wN \use_ii:nn
- \fi:
- {
- \token_if_eq_catcode:NNTF #2 \c_space_token
- { \exp_stop_f: }
- {
- \token_if_eq_meaning:NNTF #2 \scan_stop:
- { \exp_stop_f: }
- {
- \msg_expandable_error:nnn
- { kernel } { e-type }
- { \unexpanded missing~brace }
- { }
- }
- }
- }
- {
- \token_if_eq_meaning:NNTF #2 \exp_not:N
- {
- \exp_args:No \tl_if_head_is_N_type:nT { \use_none:n #1 }
- { \@@_e_unexpanded:N }
- }
- { \exp_after:wN \exp_stop_f: #2 }
- }
- }
- \cs_new:Npn \@@_e_unexpanded:N #1
- {
- \exp_after:wN \if_meaning:w \exp_not:N #1 #1 \else:
- \exp_after:wN \use_i:nn
- \fi:
- \exp_stop_f: #1
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_the:Nnn, \@@_e_the:N, \@@_e_the_toks_reg:N}
-% Finally implement \tn{the}. Followed by anything other than an
-% \texttt{N}-type \meta{token} this causes an error (we just let
-% \TeX{} make one), otherwise we test the \meta{token}. If the
-% \meta{token} is expandable, expand it. Otherwise it could be any
-% kind of register, or things like \tn{numexpr}, so there is no way to
-% deal with all cases. Thankfully, only \tn{toks} data needs to be
-% protected from expansion since everything else gives a string of
-% characters. If the \meta{token} is \tn{toks} we find a number and
-% unpack using the |the_toks| functions. If it is a token register we
-% unpack it in a brace group and call \cs{@@_e_put:nn} to move it to
-% the result. Otherwise we unpack and continue expanding (useless but
-% safe) since it is basically impossible to have a handle on where the
-% result of \tn{the} ends.
-% \begin{macrocode}
- \cs_new:Npn \@@_e_the:Nnn #1#2
- {
- \tl_if_head_is_N_type:nTF {#2}
- { \if_false: { \fi: \@@_e_the:N #2 } }
- { \exp_args:No \@@_e:nn { \tex_the:D #2 } }
- }
- \cs_new:Npn \@@_e_the:N #1
- {
- \exp_after:wN \if_meaning:w \exp_not:N #1 #1
- \exp_after:wN \use_i:nn
- \else:
- \exp_after:wN \use_ii:nn
- \fi:
- {
- \if_meaning:w \tex_toks:D #1
- \exp_after:wN \@@_e_the_toks:wnn \int_value:w
- \exp_after:wN \@@_e_the_toks:n
- \exp_after:wN { \int_value:w \if_false: } \fi:
- \else:
- \@@_e_if_toks_register:NTF #1
- { \exp_after:wN \@@_e_the_toks_reg:N }
- {
- \exp_after:wN \@@_e:nn \exp_after:wN {
- \tex_the:D \if_false: } \fi:
- }
- \exp_after:wN #1
- \fi:
- }
- {
- \exp_after:wN \@@_e_the:Nnn \exp_after:wN ?
- \exp_after:wN { \exp:w \if_false: } \fi:
- \exp_after:wN \exp_end: #1
- }
- }
- \cs_new:Npn \@@_e_the_toks_reg:N #1
- {
- \exp_after:wN \@@_e_put:nn \exp_after:wN {
- \exp_after:wN {
- \tex_the:D \if_false: } \fi: #1 }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_the_toks:wnn, \@@_e_the_toks:n, \@@_e_the_toks:N}
-% The calling function has applied \cs{int_value:w} so we collect
-% digits with \cs{@@_e_the_toks:n} (which gets the token list as an
-% argument) and \cs{@@_e_the_toks:N} (which gets the first token in
-% case it is \texttt{N}-type). The digits are themselves collected
-% into an \cs{int_value:w} argument to \cs{@@_e_the_toks:wnn}. Then
-% that function unpacks the \tn{toks}\meta{number} into the result.
-% We include |?| because \cs{@@_e_put:nnn} removes one item from its
-% second argument. Note that our approach is rather crude: in cases
-% like |\the\toks12~34| the first \cs{int_value:w} removes the space
-% and we will incorrectly unpack the |\the\toks1234|.
-% \begin{macrocode}
- \cs_new:Npn \@@_e_the_toks:wnn #1; #2
- {
- \exp_args:No \@@_e_put:nnn
- { \tex_the:D \tex_toks:D #1 } { ? #2 }
- }
- \cs_new:Npn \@@_e_the_toks:n #1
- {
- \tl_if_head_is_N_type:nTF {#1}
- { \exp_after:wN \@@_e_the_toks:N \if_false: { \fi: #1 } }
- { ; {#1} }
- }
- \cs_new:Npn \@@_e_the_toks:N #1
- {
- \if_int_compare:w 10 < 9 \token_to_str:N #1 \exp_stop_f:
- \exp_after:wN \use_i:nn
- \else:
- \exp_after:wN \use_ii:nn
- \fi:
- {
- #1
- \exp_after:wN \@@_e_the_toks:n
- \exp_after:wN { \if_false: } \fi:
- }
- {
- \exp_after:wN ;
- \exp_after:wN { \if_false: } \fi: #1
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_e_if_toks_register:NTF}
-% \begin{macro}[EXP]
-% {
-% \@@_e_the_XeTeXinterchartoks:,
-% \@@_e_the_errhelp:,
-% \@@_e_the_everycr:,
-% \@@_e_the_everydisplay:,
-% \@@_e_the_everyeof:,
-% \@@_e_the_everyhbox:,
-% \@@_e_the_everyjob:,
-% \@@_e_the_everymath:,
-% \@@_e_the_everypar:,
-% \@@_e_the_everyvbox:,
-% \@@_e_the_output:,
-% \@@_e_the_pdfpageattr:,
-% \@@_e_the_pdfpageresources:,
-% \@@_e_the_pdfpagesattr:,
-% \@@_e_the_pdfpkmode:
-% }
-% We need to detect both \tn{toks} registers like \tn{toks@} in
-% \LaTeXe{} and parameters such as \tn{everypar}, as the result of
-% unpacking the register should not expand further. Registers are
-% found by \cs{token_if_toks_register:NTF} by inspecting the meaning.
-% The list of parameters is finite so we just use a
-% \cs{cs_if_exist:cTF} test to look up in a table. We abuse
-% \cs{cs_to_str:N}'s ability to remove a leading escape character
-% whatever it is.
-% \begin{macrocode}
- \prg_new_conditional:Npnn \@@_e_if_toks_register:N #1 { TF }
- {
- \token_if_toks_register:NTF #1 { \prg_return_true: }
- {
- \cs_if_exist:cTF
- {
- @@_e_the_
- \exp_after:wN \cs_to_str:N
- \token_to_meaning:N #1
- :
- } { \prg_return_true: } { \prg_return_false: }
- }
- }
- \cs_new_eq:NN \@@_e_the_XeTeXinterchartoks: ?
- \cs_new_eq:NN \@@_e_the_errhelp: ?
- \cs_new_eq:NN \@@_e_the_everycr: ?
- \cs_new_eq:NN \@@_e_the_everydisplay: ?
- \cs_new_eq:NN \@@_e_the_everyeof: ?
- \cs_new_eq:NN \@@_e_the_everyhbox: ?
- \cs_new_eq:NN \@@_e_the_everyjob: ?
- \cs_new_eq:NN \@@_e_the_everymath: ?
- \cs_new_eq:NN \@@_e_the_everypar: ?
- \cs_new_eq:NN \@@_e_the_everyvbox: ?
- \cs_new_eq:NN \@@_e_the_output: ?
- \cs_new_eq:NN \@@_e_the_pdfpageattr: ?
- \cs_new_eq:NN \@@_e_the_pdfpageresources: ?
- \cs_new_eq:NN \@@_e_the_pdfpagesattr: ?
- \cs_new_eq:NN \@@_e_the_pdfpkmode: ?
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% We are done emulating \texttt{e}-type argument expansion when
-% \tn{expanded} is unavailable.
-% \begin{macrocode}
- }
-% \end{macrocode}
-%
-%
% \subsection{Defining function variants}
%
% \begin{macrocode}
@@ -2638,22 +2128,8 @@
}
\cs_new_protected:Npn \@@_generate_internal_test_aux:w
##1 #1 ##2 \s_@@_mark ##3 ##4 \s_@@_stop {##3}
- \cs_if_exist:NTF \tex_expanded:D
- {
- \cs_new_eq:NN \@@_generate_internal_test:Nw
- \@@_generate_internal_test_aux:w
- }
- {
- \cs_new_protected:Npn \@@_generate_internal_test:Nw ##1
- {
- \if_meaning:w \tex_expanded:D ##1
- \exp_after:wN \@@_generate_internal_test_aux:w
- \exp_after:wN #1
- \else:
- \exp_after:wN \@@_generate_internal_test_aux:w
- \fi:
- }
- }
+ \cs_new_eq:NN \@@_generate_internal_test:Nw
+ \@@_generate_internal_test_aux:w
}
\exp_args:No \@@_tmp:w { \token_to_str:N p }
\cs_new_protected:Npn \@@_generate_internal_one_go:NNn #1#2#3