summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-10-10 20:27:00 +0000
committerKarl Berry <karl@freefriends.org>2023-10-10 20:27:00 +0000
commit1045e3f70340d9f7540d9c9328a282ee84f88a51 (patch)
treeab54e08e01a041bf9bfd650d8981c1f63214a169 /Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
parentf92a7f650889a8bbbd6ff151a911a35c25fa2901 (diff)
l3 (10oct23)
git-svn-id: svn://tug.org/texlive/trunk@68507 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.dtx64
1 files changed, 36 insertions, 28 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx b/Master/texmf-dist/source/latex/l3kernel/l3expan.dtx
index 0d7e3e877a9..d4fe6b3a30a 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-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -501,6 +501,7 @@
% \exp_args:NNNo,
% \exp_args:NNNV,
% \exp_args:NNNv,
+% \exp_args:NNNe,
% \exp_args:Nccc,
% \exp_args:NcNc,
% \exp_args:NcNo,
@@ -664,8 +665,8 @@
% This is the \TeX{} \tn{noexpand} primitive. It only prevents
% expansion. At the beginning of an |f|-type argument, a space
% \meta{token} is removed even if it appears as \cs{exp_not:N}
-% \cs{c_space_token}. In an |x|-expanding definition
-% (\cs{cs_new:Npx}), a macro parameter introduces an argument even
+% \cs{c_space_token}. In an |e|-expanding definition
+% (\cs{cs_new:Npe}), a macro parameter introduces an argument even
% if it appears as \cs{exp_not:N} |#| |1|. This differs from
% \cs{exp_not:n}.
% \end{texnote}
@@ -692,7 +693,7 @@
% \emph{must} be surrounded by braces.
% \begin{texnote}
% This is the \eTeX{} \tn{unexpanded} primitive. In an
-% |x|-expanding definition (\cs{cs_new:Npx}), \cs{exp_not:n}~|{#1}|
+% |x|-expanding definition (\cs{cs_new:Npe}), \cs{exp_not:n}~|{#1}|
% is equivalent to |##1| rather than to~|#1|, namely it inserts the
% two characters |#| and~|1|. In an |e|-type argument
% \cs{exp_not:n}~|{#}| is equivalent to |#|, namely it inserts the
@@ -947,7 +948,7 @@
% In this section a general mechanism for defining functions that handle
% arguments is defined. These general expansion functions are
% expandable unless |x| is used. (Any version of |x| is going to have
-% to use one of the \LaTeX3 names for \cs{cs_set:Npx} at some
+% to use one of the \LaTeX3 names for \cs{cs_set:Npe} at some
% point, and so is never going to be expandable.)
%
% The definition of expansion functions with this technique happens
@@ -1080,7 +1081,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \::x #1 \::: #2#3
{
- \cs_set_nopar:Npx \l_@@_internal_tl
+ \cs_set_nopar:Npe \l_@@_internal_tl
{ \exp_not:n { #1 \::: } { \exp_not:n {#2} {#3} } }
\l_@@_internal_tl
}
@@ -1325,7 +1326,7 @@
%
% \begin{macro}[EXP]
% {
-% \exp_args:NNNV, \exp_args:NNNv,
+% \exp_args:NNNV, \exp_args:NNNv, \exp_args:NNNe,
% \exp_args:NcNc, \exp_args:NcNo,
% \exp_args:Ncco,
% }
@@ -1345,6 +1346,13 @@
\exp_after:wN #3
\exp_after:wN { \exp:w \@@_eval_register:c {#4} }
}
+\cs_new:Npn \exp_args:NNNe #1#2#3#4
+ {
+ \exp_after:wN #1
+ \exp_after:wN #2
+ \exp_after:wN #3
+ \tex_expanded:D { {#4} }
+ }
\cs_new:Npn \exp_args:NcNc #1#2#3#4
{
\exp_after:wN #1
@@ -1410,7 +1418,7 @@
}
\cs_new_protected:Npn \::x_unbraced \::: #1#2
{
- \cs_set_nopar:Npx \l_@@_internal_tl { \exp_not:n {#1} #2 }
+ \cs_set_nopar:Npe \l_@@_internal_tl { \exp_not:n {#1} #2 }
\l_@@_internal_tl
}
% \end{macrocode}
@@ -1682,7 +1690,7 @@
% \end{arguments}
% After making sure that the base form exists, test whether it is
% protected or not and define \cs{@@_tmp:w} as either
-% \cs{cs_new:Npx} or \cs{cs_new_protected:Npx}, which is
+% \cs{cs_new:Npe} or \cs{cs_new_protected:Npe}, which is
% then used to define all the variants (except those involving
% \texttt{x}-expansion, always protected). Split up the original base
% function only once, to grab its name and signature. Then we wish to
@@ -1692,7 +1700,7 @@
\cs_new_protected:Npn \cs_generate_variant:Nn #1#2
{
\@@_generate_variant:N #1
- \use:x
+ \use:e
{
\@@_generate_variant:nnNN
\cs_split_function:N #1
@@ -1728,21 +1736,21 @@
% |\bot|, |\splittop|, or |\splitbot|, with |\| replaced by the
% appropriate escape character. If |pr| appears in the part before
% |ma|, the first \cs{s_@@_mark} is taken as an argument of the |wwNw|
-% auxiliary, and |#3| is \cs{cs_new_protected:Npx}, otherwise it
-% is \cs{cs_new:Npx}.
+% auxiliary, and |#3| is \cs{cs_new_protected:Npe}, otherwise it
+% is \cs{cs_new:Npe}.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_generate_variant:N #1
+\cs_new_protected:Npe \@@_generate_variant:N #1
{
\exp_not:N \exp_after:wN \exp_not:N \if_meaning:w
\exp_not:N \exp_not:N #1 #1
- \cs_set_eq:NN \exp_not:N \@@_tmp:w \cs_new_protected:Npx
+ \cs_set_eq:NN \exp_not:N \@@_tmp:w \cs_new_protected:Npe
\exp_not:N \else:
\exp_not:N \exp_after:wN \exp_not:N \@@_generate_variant:ww
\exp_not:N \token_to_meaning:N #1 \tl_to_str:n { ma }
\s_@@_mark
- \s_@@_mark \cs_new_protected:Npx
+ \s_@@_mark \cs_new_protected:Npe
\tl_to_str:n { pr }
- \s_@@_mark \cs_new:Npx
+ \s_@@_mark \cs_new:Npe
\s_@@_stop
\exp_not:N \fi:
}
@@ -1773,7 +1781,7 @@
\cs_new_protected:Npn \@@_generate_variant:nnNN #1#2#3#4
{
\if_meaning:w \c_false_bool #3
- \msg_error:nnx { kernel } { missing-colon }
+ \msg_error:nne { kernel } { missing-colon }
{ \token_to_str:c {#1} }
\exp_after:wN \@@_use_none_delimit_by_q_recursion_stop:w
\fi:
@@ -1837,7 +1845,7 @@
\if_meaning:w \scan_stop: #4
\exp_after:wN \@@_use_none_delimit_by_q_recursion_stop:w
\fi:
- \use:x
+ \use:e
{
\exp_not:N \@@_generate_variant:wwNN
\@@_generate_variant_loop:nNwN { }
@@ -1976,7 +1984,7 @@
\exp_not:n
{
\s_@@_mark
- \msg_error:nnxx { kernel } { variant-too-long }
+ \msg_error:nnee { kernel } { variant-too-long }
{#5} { \token_to_str:N #3 }
\use_none:nnn
\s_@@_stop
@@ -1991,7 +1999,7 @@
\exp_not:n
{
\s_@@_mark
- \msg_error:nnxxxx { kernel } { invalid-variant }
+ \msg_error:nneeee { kernel } { invalid-variant }
{#7} { \token_to_str:N #5 } {#1} {#2}
\use_none:nnn
\s_@@_stop
@@ -2005,7 +2013,7 @@
#3 \s_@@_stop #4 #5 {#6} {#7}
\exp_not:n
{
- \msg_error:nnxxxx
+ \msg_error:nneeee
{ kernel } { deprecated-variant }
{#7} { \token_to_str:N #5 } {#1} {#2}
}
@@ -2039,7 +2047,7 @@
% (provided \texttt{log-functions} is active).
% Otherwise, make sure that the |\exp_args:N #3| form is defined, and
% if it contains |x|, change \cs{@@_tmp:w} locally to
-% \cs{cs_new_protected:Npx}. Then define the variant by
+% \cs{cs_new_protected:Npe}. Then define the variant by
% combining the |\exp_args:N #3| variant and the base function.
% \begin{macrocode}
\cs_new_protected:Npn \@@_generate_variant:wwNN
@@ -2074,11 +2082,11 @@
% the \cs[no-index]{exp_args:N\dots} function as a macro taking up to
% $9$~arguments and expanding them using \cs{use:x} or \cs{tex_expanded:D}.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_generate_internal_variant:n #1
+\cs_new_protected:Npe \@@_generate_internal_variant:n #1
{
\exp_not:N \@@_generate_internal_variant:wwnNwn
#1 \s_@@_mark
- { \cs_set_eq:NN \exp_not:N \@@_tmp:w \cs_new_protected:Npx }
+ { \cs_set_eq:NN \exp_not:N \@@_tmp:w \cs_new_protected:Npe }
\cs_new_protected:cpn
\use:x
\token_to_str:N x \s_@@_mark
@@ -2111,7 +2119,7 @@
##3
\s_@@_mark
{
- \use:x
+ \use:e
{
##1 { exp_args:N ##3 }
{ \@@_generate_internal_variant_loop:n ##3 { : \use_i:nn } }
@@ -2206,7 +2214,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \prg_generate_conditional_variant:Nnn #1
{
- \use:x
+ \use:e
{
\@@_generate_variant:nnNnn
\cs_split_function:N #1
@@ -2215,7 +2223,7 @@
\cs_new_protected:Npn \@@_generate_variant:nnNnn #1#2#3#4#5
{
\if_meaning:w \c_false_bool #3
- \msg_error:nnx { kernel } { missing-colon }
+ \msg_error:nne { kernel } { missing-colon }
{ \token_to_str:c {#1} }
\@@_use_i_delimit_by_s_stop:nw
\fi:
@@ -2235,7 +2243,7 @@
\cs_if_exist_use:cTF { @@_generate_variant_#1_form:nnn }
{ {#3} {#4} {#5} }
{
- \msg_error:nnxx
+ \msg_error:nnee
{ kernel } { conditional-form-unknown }
{#1} { \token_to_str:c { #3 : #4 } }
}