summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source')
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx62
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx30
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx54
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx90
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx40
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx24
-rw-r--r--Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx120
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx14
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx20
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx12
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx20
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx44
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx28
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx26
-rw-r--r--Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx30
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/expl3.dtx74
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3basics.dtx281
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3box.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx69
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx22
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3clist.dtx216
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx84
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3color.dtx102
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3debug.dtx113
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx22
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3doc.dtx207
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3expan.dtx64
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3file.dtx358
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3flag.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fp.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3int.dtx16
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx18
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx18
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3keys.dtx284
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3msg.dtx342
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3names.dtx2
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx21
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prg.dtx8
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3prop.dtx269
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3quark.dtx22
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3regex.dtx258
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3seq.dtx254
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3skip.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sort.dtx18
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx94
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3str.dtx163
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3sys.dtx56
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx16
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx6
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx16
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3text.dtx12
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx38
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl.dtx464
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3token.dtx64
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx28
-rw-r--r--Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx4
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx10
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx16
-rw-r--r--Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx145
88 files changed, 2789 insertions, 2259 deletions
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
index cf4ad444ba6..a6f7ea6d1c2 100644
--- a/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
+++ b/Master/texmf-dist/source/latex/l3backend/l3backend-basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -70,27 +70,27 @@
% \begin{macrocode}
\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-dvipdfmx.def}{2023-04-19}{}
+ {l3backend-dvipdfmx.def}{2023-10-10}{}
{L3 backend support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-dvips.def}{2023-04-19}{}
+ {l3backend-dvips.def}{2023-10-10}{}
{L3 backend support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-dvisvgm.def}{2023-04-19}{}
+ {l3backend-dvisvgm.def}{2023-10-10}{}
{L3 backend support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-luatex.def}{2023-04-19}{}
+ {l3backend-luatex.def}{2023-10-10}{}
{L3 backend support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-pdftex.def}{2023-04-19}{}
+ {l3backend-pdftex.def}{2023-10-10}{}
{L3 backend support: PDF output (pdfTeX)}
%</pdftex>
%<*xetex>
- {l3backend-xetex.def}{2023-04-19}{}
+ {l3backend-xetex.def}{2023-10-10}{}
{L3 backend support: XeTeX}
%</xetex>
% \end{macrocode}
@@ -137,8 +137,7 @@
% \begin{macro}
% {
% \__kernel_backend_literal:e,
-% \__kernel_backend_literal:n,
-% \__kernel_backend_literal:x
+% \__kernel_backend_literal:n
% }
% The one shared function for all backends is access to the basic
% \tn{special} primitive: it has slightly odd expansion behaviour
@@ -147,7 +146,6 @@
\cs_new_eq:NN \__kernel_backend_literal:e \tex_special:D
\cs_new_protected:Npn \__kernel_backend_literal:n #1
{ \__kernel_backend_literal:e { \exp_not:n {#1} } }
-\cs_generate_variant:Nn \__kernel_backend_literal:n { x }
% \end{macrocode}
% \end{macro}
%
@@ -175,7 +173,7 @@
% \end{macrocode}
%
% \begin{macro}
-% {\__kernel_backend_literal_postscript:n, \__kernel_backend_literal_postscript:x}
+% {\__kernel_backend_literal_postscript:n, \__kernel_backend_literal_postscript:e}
% Literal PostScript can be included using a few low-level formats. Here,
% we use the form with no positioning: this is overall more convenient as
% a wrapper. Note that this does require that where position is important,
@@ -183,18 +181,18 @@
% \begin{macrocode}
\cs_new_protected:Npn \__kernel_backend_literal_postscript:n #1
{ \__kernel_backend_literal:n { ps:: #1 } }
-\cs_generate_variant:Nn \__kernel_backend_literal_postscript:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_postscript:n { e }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\__kernel_backend_postscript:n, \__kernel_backend_postscript:x}
+% \begin{macro}{\__kernel_backend_postscript:n, \__kernel_backend_postscript:e}
% PostScript data that does have positioning, and also applying
% a shift to |SDict| (which is not done automatically by
% |ps:| or |ps::|, in contrast to |!| or |"|).
% \begin{macrocode}
\cs_new_protected:Npn \__kernel_backend_postscript:n #1
{ \__kernel_backend_literal:n { ps: SDict ~ begin ~ #1 ~ end } }
-\cs_generate_variant:Nn \__kernel_backend_postscript:n { x }
+\cs_generate_variant:Nn \__kernel_backend_postscript:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -265,7 +263,7 @@
% to have more code in Lua means we create two independent files using
% shared DocStrip code.
%
-% \begin{macro}{\__kernel_backend_literal_pdf:n, \__kernel_backend_literal_pdf:x}
+% \begin{macro}{\__kernel_backend_literal_pdf:n, \__kernel_backend_literal_pdf:e}
% This is equivalent to \verb|\special{pdf:}| but the engine can
% track it. Without the \texttt{direct} keyword everything is kept in
% sync: the transformation matrix is set to the current point automatically.
@@ -282,11 +280,11 @@
%</pdftex>
{ \exp_not:n {#1} }
}
-\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { e }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\__kernel_backend_literal_page:n}
+% \begin{macro}{\__kernel_backend_literal_page:n, \__kernel_backend_literal_page:e}
% Page literals are pretty simple. To avoid an expansion, we write out
% by hand.
% \begin{macrocode}
@@ -300,6 +298,16 @@
%</pdftex>
page { \exp_not:n {#1} }
}
+\cs_new_protected:Npn \__kernel_backend_literal_page:e #1
+ {
+%<*luatex>
+ \tex_pdfextension:D literal ~
+%</luatex>
+%<*pdftex>
+ \tex_pdfliteral:D
+%</pdftex>
+ page {#1}
+ }
% \end{macrocode}
% \end{macro}
%
@@ -327,7 +335,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\__kernel_backend_matrix:n, \__kernel_backend_matrix:x}
+% \begin{macro}{\__kernel_backend_matrix:n, \__kernel_backend_matrix:e}
% Here the appropriate function is set up to insert an affine matrix
% into the PDF. With \pdfTeX{} and \LuaTeX{} in direct PDF output mode there
% is a primitive for this, which only needs the rotation/scaling/skew part.
@@ -342,7 +350,7 @@
%</pdftex>
{ \exp_not:n {#1} }
}
-\cs_generate_variant:Nn \__kernel_backend_matrix:n { x }
+\cs_generate_variant:Nn \__kernel_backend_matrix:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -362,14 +370,14 @@
% for both backends, with some \texttt{clean up} for \XeTeX{} as
% required.
%
-% \begin{macro}{\__kernel_backend_literal_pdf:n, \__kernel_backend_literal_pdf:x}
+% \begin{macro}{\__kernel_backend_literal_pdf:n, \__kernel_backend_literal_pdf:e}
% Undocumented but equivalent to \pdfTeX{}'s |literal| keyword. It's similar to
% be not the same as the documented |contents| keyword as that adds a |q|/|Q|
% pair.
% \begin{macrocode}
\cs_new_protected:Npn \__kernel_backend_literal_pdf:n #1
{ \__kernel_backend_literal:n { pdf:literal~ #1 } }
-\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_pdf:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -404,7 +412,7 @@
%<*dvisvgm>
% \end{macrocode}
%
-% \begin{macro}{\__kernel_backend_literal_svg:n, \__kernel_backend_literal_svg:x}
+% \begin{macro}{\__kernel_backend_literal_svg:n, \__kernel_backend_literal_svg:e}
% Unlike the other backends, the requirements for making SVG files mean
% that we can't conveniently transform all operations to the current point.
% That makes life a bit more tricky later as that needs to be accounted for.
@@ -413,7 +421,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \__kernel_backend_literal_svg:n #1
{ \__kernel_backend_literal:n { dvisvgm:raw~ #1 { ?nl } } }
-\cs_generate_variant:Nn \__kernel_backend_literal_svg:n { x }
+\cs_generate_variant:Nn \__kernel_backend_literal_svg:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -427,8 +435,8 @@
% \end{variable}
%
% \begin{macro}{\__kernel_backend_scope_begin:, \__kernel_backend_scope_end:}
-% \begin{macro}{\__kernel_backend_scope_begin:n, \__kernel_backend_scope_begin:x}
-% \begin{macro}{\__kernel_backend_scope:n, \__kernel_backend_scope:x}
+% \begin{macro}{\__kernel_backend_scope_begin:n, \__kernel_backend_scope_begin:e}
+% \begin{macro}{\__kernel_backend_scope:n, \__kernel_backend_scope:e}
% In SVG, the need to attach concepts to a scope means we need to be sure we
% will close all of the open scopes. That is easiest done if we only need
% an outer \enquote{wrapper} \texttt{begin}/\texttt{end} pair, and within
@@ -464,13 +472,13 @@
\group_begin:
\int_gset:Nn \g__kernel_backend_scope_int { 1 }
}
-\cs_generate_variant:Nn \__kernel_backend_scope_begin:n { x }
+\cs_generate_variant:Nn \__kernel_backend_scope_begin:n { e }
\cs_new_protected:Npn \__kernel_backend_scope:n #1
{
\__kernel_backend_literal_svg:n { <g ~ #1 > }
\int_gincr:N \g__kernel_backend_scope_int
}
-\cs_generate_variant:Nn \__kernel_backend_scope:n { x }
+\cs_generate_variant:Nn \__kernel_backend_scope:n { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
index 6d8d4ede020..9bc74a1611d 100644
--- a/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
+++ b/Master/texmf-dist/source/latex/l3backend/l3backend-box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -82,7 +82,7 @@
\__kernel_backend_literal_postscript:n
{ Resolution~72~div~VResolution~72~div~scale }
\__kernel_backend_literal_postscript:n { DVImag~dup~scale }
- \__kernel_backend_literal_postscript:x
+ \__kernel_backend_literal_postscript:e
{
0 ~
\dim_to_decimal_in_bp:n { \box_dp:N #1 } ~
@@ -111,7 +111,7 @@
{
\__kernel_backend_scope_begin:
\__kernel_backend_align_begin:
- \__kernel_backend_literal_postscript:x
+ \__kernel_backend_literal_postscript:e
{
\fp_compare:nNnTF {#2} = \c_zero_fp
{ 0 }
@@ -134,7 +134,7 @@
{
\__kernel_backend_scope_begin:
\__kernel_backend_align_begin:
- \__kernel_backend_literal_postscript:x
+ \__kernel_backend_literal_postscript:e
{
\fp_eval:n { round ( #2 , 5 ) } ~
\fp_eval:n { round ( #3 , 5 ) } ~
@@ -169,7 +169,7 @@
\cs_new_protected:Npn \@@_backend_clip:N #1
{
\__kernel_backend_scope_begin:
- \__kernel_backend_literal_pdf:x
+ \__kernel_backend_literal_pdf:e
{
0~
\dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
@@ -204,7 +204,7 @@
\fp_compare:nNnT \l_@@_backend_cos_fp = \c_zero_fp
{ \fp_zero:N \l_@@_backend_cos_fp }
\fp_set:Nn \l_@@_backend_sin_fp { round ( sind ( #2 ) , 5 ) }
- \__kernel_backend_matrix:x
+ \__kernel_backend_matrix:e
{
\fp_use:N \l_@@_backend_cos_fp \c_space_tl
\fp_compare:nNnTF \l_@@_backend_sin_fp = \c_zero_fp
@@ -234,7 +234,7 @@
\cs_new_protected:Npn \@@_backend_scale:Nnn #1#2#3
{
\__kernel_backend_scope_begin:
- \__kernel_backend_matrix:x
+ \__kernel_backend_matrix:e
{
\fp_eval:n { round ( #2 , 5 ) } ~
0~0~
@@ -263,7 +263,7 @@
\cs_new_protected:Npn \@@_backend_clip:N #1
{
\__kernel_backend_scope_begin:
- \__kernel_backend_literal_pdf:x
+ \__kernel_backend_literal_pdf:e
{
0~
\dim_to_decimal_in_bp:n { -\box_dp:N #1 } ~
@@ -293,7 +293,7 @@
\cs_new_protected:Npn \@@_backend_rotate_aux:Nn #1#2
{
\__kernel_backend_scope_begin:
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
x:rotate~
\fp_compare:nNnTF {#2} = \c_zero_fp
@@ -314,7 +314,7 @@
\cs_new_protected:Npn \@@_backend_scale:Nnn #1#2#3
{
\__kernel_backend_scope_begin:
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
x:scale~
\fp_eval:n { round ( #2 , 5 ) } ~
@@ -350,9 +350,9 @@
\cs_new_protected:Npn \@@_backend_clip:N #1
{
\int_gincr:N \g__kernel_clip_path_int
- \__kernel_backend_literal_svg:x
+ \__kernel_backend_literal_svg:e
{ < clipPath~id = " l3cp \int_use:N \g__kernel_clip_path_int " > }
- \__kernel_backend_literal_svg:x
+ \__kernel_backend_literal_svg:e
{
<
path ~ d =
@@ -387,7 +387,7 @@
scale ( 1 , -1 )
"
}
- \__kernel_backend_scope:x
+ \__kernel_backend_scope:e
{
clip-path =
"url ( \c_hash_str l3cp \int_use:N \g__kernel_clip_path_int ) "
@@ -416,7 +416,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_rotate:Nn #1#2
{
- \__kernel_backend_scope_begin:x
+ \__kernel_backend_scope_begin:e
{
transform =
"
@@ -437,7 +437,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_scale:Nnn #1#2#3
{
- \__kernel_backend_scope_begin:x
+ \__kernel_backend_scope_begin:e
{
transform =
"
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
index 5049aae5f92..73eee0ca2cf 100644
--- a/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
+++ b/Master/texmf-dist/source/latex/l3backend/l3backend-color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -322,7 +322,7 @@
% \begin{macro}[EXP]{\@@_backend_devicen_colorants:n}
% \begin{macro}[EXP]{\@@_backend_devicen_colorants:w}
% \begin{macrocode}
-\cs_new:Npx \@@_backend_devicen_colorants:n #1
+\cs_new:Npe \@@_backend_devicen_colorants:n #1
{
\exp_not:N \tl_if_blank:nF {#1}
{
@@ -377,7 +377,7 @@
% \begin{macro}
% {
% \@@_backend_separation_init:nnnnn,
-% \@@_backend_separation_init:nxxnn
+% \@@_backend_separation_init:neenn
% }
% \begin{macro}
% {\@@_backend_separation_init_aux:nnnnnn}
@@ -402,17 +402,17 @@
% ideas from \url{https://tex.stackexchange.com/q/560093} plus using
% the PostScript manual for other aspects.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_backend_separation_init:nnnnn #1#2#3#4#5
+\cs_new_protected:Npe \@@_backend_separation_init:nnnnn #1#2#3#4#5
{
\bool_if:NT \g__kernel_backend_header_bool
{
- \exp_args:Nx \__kernel_backend_first_shipout:n
+ \exp_not:N \exp_args:Ne \__kernel_backend_first_shipout:n
{
\exp_not:N \@@_backend_separation_init_aux:nnnnnn
{ \exp_not:N \int_use:N \g_@@_model_int }
{#1} {#2} {#3} {#4} {#5}
}
- \prop_gput:Nxx \exp_not:N \g_@@_backend_colorant_prop
+ \prop_gput:Nee \exp_not:N \g_@@_backend_colorant_prop
{ / \exp_not:N \str_convert_pdfname:n {#1} }
{
<< ~
@@ -423,7 +423,7 @@
}
}
}
-\cs_generate_variant:Nn \@@_backend_separation_init:nnnnn { nxx }
+\cs_generate_variant:Nn \@@_backend_separation_init:nnnnn { nee }
\cs_new_protected:Npn \@@_backend_separation_init_aux:nnnnnn #1#2#3#4#5#6
{
\__kernel_backend_literal:e
@@ -552,7 +552,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_separation_init_CIELAB:nnn #1#2#3
{
- \@@_backend_separation_init:nxxnn
+ \@@_backend_separation_init:neenn
{#2}
{
/CIEBasedABC ~
@@ -678,7 +678,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_select_iccbased:nn #1#2
{
- \__kernel_backend_literal_svg:x
+ \__kernel_backend_literal_svg:e
{
<style>
@color-profile ~
@@ -712,7 +712,7 @@
% \begin{macrocode}
%<*dvipdfmx|xetex>
\cs_new_protected:Npn \@@_backend_select_separation:nn #1#2
- { \__kernel_backend_literal:x { pdf : bc ~ \pdf_object_ref:n {#1} ~ [ #2 ] } }
+ { \__kernel_backend_literal:e { pdf : bc ~ \pdf_object_ref:n {#1} ~ [ #2 ] } }
%</dvipdfmx|xetex>
%<*luatex|pdftex>
\cs_new_protected:Npn \@@_backend_select_separation:nn #1#2
@@ -734,7 +734,7 @@
{ \cs_if_exist_p:N \pdfmanagement_if_active_p: }
{ \pdfmanagement_if_active_p: }
{
- \use:x
+ \use:e
{
\pdfmanagement_add:nnn
{ Page / Resources / ColorSpace }
@@ -759,7 +759,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_separation_init:nnnnn #1#2#3#4#5
{
- \pdf_object_unnamed_write:nx { dict }
+ \pdf_object_unnamed_write:ne { dict }
{
/FunctionType ~ 2
/Domain ~ [0 ~ 1]
@@ -767,19 +767,19 @@
/C0 ~ [#4] ~
/C1 ~ [#5] /N ~ 1
}
- \exp_args:Nx \@@_backend_separation_init:nn
+ \exp_args:Ne \@@_backend_separation_init:nn
{ \str_convert_pdfname:n {#1} } {#2}
\@@_backend_init_resource:n { color \int_use:N \g_@@_model_int }
}
\cs_new_protected:Npn \@@_backend_separation_init:nn #1#2
{
- \use:x
+ \use:e
{
\pdf_object_new:n { color \int_use:N \g_@@_model_int }
\pdf_object_write:nnn { color \int_use:N \g_@@_model_int } { array }
{ /Separation /#1 ~ #2 ~ \pdf_object_ref_last: }
}
- \prop_gput:Nnx \g_@@_backend_colorant_prop { /#1 }
+ \prop_gput:Nne \g_@@_backend_colorant_prop { /#1 }
{ \pdf_object_ref_last: }
}
% \end{macrocode}
@@ -791,7 +791,7 @@
\pdf_object_if_exist:nF { @@_illuminant_CIELAB_ #1 }
{
\pdf_object_new:n { @@_illuminant_CIELAB_ #1 }
- \pdf_object_write:nnx { @@_illuminant_CIELAB_ #1 } { array }
+ \pdf_object_write:nne { @@_illuminant_CIELAB_ #1 } { array }
{
/Lab ~
<<
@@ -820,7 +820,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_devicen_init:nnn #1#2#3
{
- \pdf_object_unnamed_write:nx { stream }
+ \pdf_object_unnamed_write:ne { stream }
{
{
/FunctionType ~ 4 ~
@@ -842,7 +842,7 @@
}
{ {#3} }
}
- \use:x
+ \use:e
{
\pdf_object_new:n { color \int_use:N \g_@@_model_int }
\pdf_object_write:nnn { color \int_use:N \g_@@_model_int } { array }
@@ -875,7 +875,7 @@
\pdf_object_if_exist:nF { @@_icc_ #1 }
{
\pdf_object_new:n { @@_icc_ #1 }
- \pdf_object_write:nnx { @@_icc_ #1 } { fstream }
+ \pdf_object_write:nne { @@_icc_ #1 } { fstream }
{
{
/N ~ \exp_not:n { #2 } ~
@@ -884,7 +884,7 @@
{#1}
}
}
- \pdf_object_unnamed_write:nx { array }
+ \pdf_object_unnamed_write:ne { array }
{ /ICCBased ~ \pdf_object_ref:n { @@_icc_ #1 } }
\@@_backend_init_resource:n { color \int_use:N \g_@@_model_int }
}
@@ -906,7 +906,7 @@
{#1}
}
}
- \pdf_object_unnamed_write:nx { array }
+ \pdf_object_unnamed_write:ne { array }
{ /ICCBased ~ \pdf_object_ref:n { @@_icc_ #1 } }
\@@_backend_init_resource:n { Default #2 }
}
@@ -965,12 +965,12 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_fill_separation:nn #1#2
{
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{ pdf : bc ~ fill ~ \pdf_object_ref:n {#1} ~ [ #2 ] }
}
\cs_new_protected:Npn \@@_backend_stroke_separation:nn #1#2
{
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{ pdf : bc ~ stroke ~ \pdf_object_ref:n {#1} ~ [ #2 ] }
}
\cs_new_eq:NN \@@_backend_fill_devicen:nn \@@_backend_fill_separation:nn
@@ -1171,7 +1171,7 @@
\cs_new_protected:Npn \@@_backend_stroke_cmyk:w
#1 ~ #2 ~ #3 ~ #4 \s_@@_stop
{
- \use:x
+ \use:e
{
\@@_backend:nnn
{ \fp_eval:n { -100 * ( 1 - min ( 1 , #1 + #4 ) ) } }
@@ -1181,7 +1181,7 @@
}
\cs_new_protected:Npn \@@_backend_stroke_gray:n #1
{
- \use:x
+ \use:e
{
\@@_backend_stroke_gray_aux:n
{ \fp_eval:n { 100 * (#1) } }
@@ -1194,7 +1194,7 @@
\cs_new_protected:Npn \@@_backend_stroke_rgb:w
#1 ~ #2 ~ #3 \s_@@_stop
{
- \use:x
+ \use:e
{
\@@_backend:nnn
{ \fp_eval:n { 100 * (#1) } }
@@ -1202,7 +1202,7 @@
{ \fp_eval:n { 100 * (#3) } }
}
}
-\cs_new_protected:Npx \@@_backend:nnn #1#2#3
+\cs_new_protected:Npe \@@_backend:nnn #1#2#3
{
\__kernel_backend_scope:n
{
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
index 170f4090cd9..8fa2fda9401 100644
--- a/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
+++ b/Master/texmf-dist/source/latex/l3backend/l3backend-draw.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -66,12 +66,12 @@
%<*dvips>
% \end{macrocode}
%
-% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:x}
+% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:e}
% The same as literal PostScript: same arguments about positioning apply
% her.
% \begin{macrocode}
\cs_new_eq:NN \@@_backend_literal:n \__kernel_backend_literal_postscript:n
-\cs_generate_variant:Nn \@@_backend_literal:n { x }
+\cs_generate_variant:Nn \@@_backend_literal:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -125,7 +125,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_moveto:nn #1#2
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\dim_to_decimal_in_bp:n {#1} ~
\dim_to_decimal_in_bp:n {#2} ~ moveto
@@ -133,7 +133,7 @@
}
\cs_new_protected:Npn \@@_backend_lineto:nn #1#2
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\dim_to_decimal_in_bp:n {#1} ~
\dim_to_decimal_in_bp:n {#2} ~ lineto
@@ -141,7 +141,7 @@
}
\cs_new_protected:Npn \@@_backend_rectangle:nnnn #1#2#3#4
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\dim_to_decimal_in_bp:n {#4} ~ \dim_to_decimal_in_bp:n {#3} ~
\dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
@@ -150,7 +150,7 @@
}
\cs_new_protected:Npn \@@_backend_curveto:nnnnnn #1#2#3#4#5#6
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
\dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -205,7 +205,7 @@
\@@_backend_literal:n { grestore }
\bool_if:NT \g_@@_draw_clip_bool
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\bool_if:NT \g_@@_draw_eor_bool { eo }
clip
@@ -221,14 +221,14 @@
}
\cs_new_protected:Npn \@@_backend_fill:
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\bool_if:NT \g_@@_draw_eor_bool { eo }
fill
}
\bool_if:NT \g_@@_draw_clip_bool
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\bool_if:NT \g_@@_draw_eor_bool { eo }
clip
@@ -239,7 +239,7 @@
}
\cs_new_protected:Npn \@@_backend_fillstroke:
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\bool_if:NT \g_@@_draw_eor_bool { eo }
fill
@@ -250,7 +250,7 @@
\@@_backend_literal:n { grestore }
\bool_if:NT \g_@@_draw_clip_bool
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\bool_if:NT \g_@@_draw_eor_bool { eo }
clip
@@ -266,7 +266,7 @@
{
\bool_if:NT \g_@@_draw_clip_bool
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\bool_if:NT \g_@@_draw_eor_bool { eo }
clip
@@ -293,7 +293,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_dash_pattern:nn #1#2
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
[
\exp_args:Nf \use:n
@@ -306,7 +306,7 @@
{ ~ \dim_to_decimal_in_bp:n {#1} }
\cs_new_protected:Npn \@@_backend_linewidth:n #1
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{ \dim_to_decimal_in_bp:n {#1} ~ setlinewidth }
}
\cs_new_protected:Npn \@@_backend_miterlimit:n #1
@@ -400,11 +400,11 @@
%
% \subsubsection{Drawing}
%
-% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:x}
+% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:e}
% Pass data through using a dedicated interface.
% \begin{macrocode}
\cs_new_eq:NN \@@_backend_literal:n \__kernel_backend_literal_pdf:n
-\cs_generate_variant:Nn \@@_backend_literal:n { x }
+\cs_generate_variant:Nn \@@_backend_literal:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -434,17 +434,17 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_moveto:nn #1#2
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{ \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ m }
}
\cs_new_protected:Npn \@@_backend_lineto:nn #1#2
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{ \dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~ l }
}
\cs_new_protected:Npn \@@_backend_curveto:nnnnnn #1#2#3#4#5#6
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
\dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -454,7 +454,7 @@
}
\cs_new_protected:Npn \@@_backend_rectangle:nnnn #1#2#3#4
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
\dim_to_decimal_in_bp:n {#1} ~ \dim_to_decimal_in_bp:n {#2} ~
\dim_to_decimal_in_bp:n {#3} ~ \dim_to_decimal_in_bp:n {#4} ~
@@ -500,17 +500,17 @@
{ \@@_backend_literal:n { s } }
\cs_new_protected:Npn \@@_backend_fill:
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{ f \bool_if:NT \g_@@_draw_eor_bool * }
}
\cs_new_protected:Npn \@@_backend_fillstroke:
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{ B \bool_if:NT \g_@@_draw_eor_bool * }
}
\cs_new_protected:Npn \@@_backend_clip:
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{ W \bool_if:NT \g_@@_draw_eor_bool * }
}
\cs_new_protected:Npn \@@_backend_discardpath:
@@ -532,7 +532,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_dash_pattern:nn #1#2
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
[
\exp_args:Nf \use:n
@@ -545,11 +545,11 @@
{ ~ \dim_to_decimal_in_bp:n {#1} }
\cs_new_protected:Npn \@@_backend_linewidth:n #1
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{ \dim_to_decimal_in_bp:n {#1} ~ w }
}
\cs_new_protected:Npn \@@_backend_miterlimit:n #1
- { \@@_backend_literal:x { #1 ~ M } }
+ { \@@_backend_literal:e { #1 ~ M } }
\cs_new_protected:Npn \@@_backend_cap_butt:
{ \@@_backend_literal:n { 0 ~ J } }
\cs_new_protected:Npn \@@_backend_cap_round:
@@ -594,20 +594,20 @@
%<*dvipdfmx|xetex>
\cs_new_protected:Npn \@@_backend_cm_aux:nnnn #1#2#3#4
{
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
x:rotate~
\fp_compare:nNnTF {#1} = \c_zero_fp
{ 0 }
{ \fp_eval:n { round ( -#1 , 5 ) } }
}
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
x:scale~
\fp_eval:n { round ( #2 , 5 ) } ~
\fp_eval:n { round ( #3 , 5 ) }
}
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
x:rotate~
\fp_compare:nNnTF {#4} = \c_zero_fp
@@ -678,7 +678,7 @@
%<*dvipdfmx|xetex>
\cs_new_protected:Npn \@@_backend_cm_decompose:nnnnN #1#2#3#4#5
{
- \use:x
+ \use:e
{
\@@_backend_cm_decompose_auxi:nnnnN
{ \fp_eval:n { (#1 + #4) / 2 } }
@@ -690,7 +690,7 @@
}
\cs_new_protected:Npn \@@_backend_cm_decompose_auxi:nnnnN #1#2#3#4#5
{
- \use:x
+ \use:e
{
\@@_backend_cm_decompose_auxii:nnnnN
{ \fp_eval:n { 2 * sqrt ( #1 * #1 + #4 * #4 ) } }
@@ -702,7 +702,7 @@
}
\cs_new_protected:Npn \@@_backend_cm_decompose_auxii:nnnnN #1#2#3#4#5
{
- \use:x
+ \use:e
{
\@@_backend_cm_decompose_auxiii:nnnnN
{ \fp_eval:n { ( #4 - #3 ) / 2 } }
@@ -760,11 +760,11 @@
%<*dvisvgm>
% \end{macrocode}
%
-% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:x}
+% \begin{macro}{\@@_backend_literal:n, \@@_backend_literal:e}
% The same as the more general literal call.
% \begin{macrocode}
\cs_new_eq:NN \@@_backend_literal:n \__kernel_backend_literal_svg:n
-\cs_generate_variant:Nn \@@_backend_literal:n { x }
+\cs_generate_variant:Nn \@@_backend_literal:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -834,7 +834,7 @@
}
\cs_new_protected:Npn \@@_backend_add_to_path:n #1
{
- \tl_gset:Nx \g_@@_backend_path_tl
+ \tl_gset:Ne \g_@@_backend_path_tl
{
\g_@@_backend_path_tl
\tl_if_empty:NF \g_@@_backend_path_tl { \c_space_tl }
@@ -885,7 +885,7 @@
\bool_if:NTF \g_@@_draw_clip_bool
{
\int_gincr:N \g__kernel_clip_path_int
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
< clipPath~id = " l3cp \int_use:N \g__kernel_clip_path_int " >
{ ?nl }
@@ -897,14 +897,14 @@
#1
/>
}
- \__kernel_backend_scope:x
+ \__kernel_backend_scope:e
{
clip-path =
"url( \c_hash_str l3cp \int_use:N \g__kernel_clip_path_int)"
}
}
{
- \@@_backend_literal:x
+ \@@_backend_literal:e
{ <path ~ d=" \g_@@_backend_path_tl " ~ #1 /> }
}
\tl_gclear:N \g_@@_backend_path_tl
@@ -930,14 +930,14 @@
\bool_if:NT \g_@@_draw_clip_bool
{
\int_gincr:N \g__kernel_clip_path_int
- \@@_backend_literal:x
+ \@@_backend_literal:e
{
< clipPath~id = " l3cp \int_use:N \g__kernel_clip_path_int " >
{ ?nl }
<path~d=" \g_@@_backend_path_tl "/> { ?nl }
< /clipPath >
}
- \__kernel_backend_scope:x
+ \__kernel_backend_scope:e
{
clip-path =
"url( \c_hash_str l3cp \int_use:N \g__kernel_clip_path_int)"
@@ -968,7 +968,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_dash_pattern:nn #1#2
{
- \use:x
+ \use:e
{
\@@_backend_dash_aux:nn
{ \clist_map_function:nN {#1} \@@_backend_dash:n }
@@ -979,7 +979,7 @@
{ , \dim_to_decimal_in_bp:n {#1} }
\cs_new_protected:Npn \@@_backend_dash_aux:nn #1#2
{
- \__kernel_backend_scope:x
+ \__kernel_backend_scope:e
{
stroke-dasharray =
"
@@ -991,9 +991,9 @@
}
}
\cs_new_protected:Npn \@@_backend_linewidth:n #1
- { \__kernel_backend_scope:x { stroke-width=" \dim_to_decimal:n {#1} " } }
+ { \__kernel_backend_scope:e { stroke-width=" \dim_to_decimal:n {#1} " } }
\cs_new_protected:Npn \@@_backend_miterlimit:n #1
- { \__kernel_backend_scope:x { stroke-miterlimit=" #1 " } }
+ { \__kernel_backend_scope:e { stroke-miterlimit=" #1 " } }
\cs_new_protected:Npn \@@_backend_cap_butt:
{ \__kernel_backend_scope:n { stroke-linecap="butt" } }
\cs_new_protected:Npn \@@_backend_cap_round:
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
index da7dc7516e8..610785e348c 100644
--- a/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
+++ b/Master/texmf-dist/source/latex/l3backend/l3backend-graphics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -107,7 +107,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_include_eps:n #1
{
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
PSfile = #1 \c_space_tl
llx = \dim_to_decimal_in_bp:n \l_@@_llx_dim \c_space_tl
@@ -185,7 +185,7 @@
{
\int_zero:N \l_@@_page_int
\tl_clear:N \l_@@_pagebox_tl
- \tl_set:Nx \l_@@_attr_tl
+ \tl_set:Ne \l_@@_attr_tl
{
\tl_if_empty:NF \l_@@_decodearray_str
{ :D \l_@@_decodearray_str }
@@ -202,7 +202,7 @@
{
\tl_clear:N \l_@@_decodearray_str
\bool_set_false:N \l_@@_interpolate_bool
- \tl_set:Nx \l_@@_attr_tl
+ \tl_set:Ne \l_@@_attr_tl
{
: \l_@@_pagebox_tl
\int_compare:nNnT \l_@@_page_int > 1
@@ -214,7 +214,7 @@
}
\cs_new_protected:Npn \@@_backend_getbb_auxi:n #1
{
- \@@_bb_restore:xF { #1 \l_@@_attr_tl }
+ \@@_bb_restore:eF { #1 \l_@@_attr_tl }
{ \@@_backend_getbb_auxii:n {#1} }
}
% \end{macrocode}
@@ -230,7 +230,7 @@
{ \@@_backend_dequote:w #1 " #1 " \s_@@_stop }
\int_const:cn { c_@@_ #1 \l_@@_attr_tl _int }
{ \tex_the:D \tex_pdflastximage:D }
- \@@_bb_save:x { #1 \l_@@_attr_tl }
+ \@@_bb_save:e { #1 \l_@@_attr_tl }
}
\cs_new_protected:Npn \@@_backend_getbb_auxiii:n #1
{
@@ -310,7 +310,7 @@
\l_@@_backend_dir_str
\l_@@_backend_name_str
\l_@@_backend_ext_str
- \exp_args:Nx \@@_backend_getbb_eps:nn
+ \exp_args:Ne \@@_backend_getbb_eps:nn
{
\exp_args:Ne \__kernel_file_name_quote:n
{
@@ -336,7 +336,7 @@
{
\file_parse_full_name:nNNN {#1}
\l_@@_backend_dir_str \l_@@_backend_name_str \l_@@_backend_ext_str
- \exp_args:Nx \@@_backend_include_pdf:n
+ \exp_args:Ne \@@_backend_include_pdf:n
{
\exp_args:Ne \__kernel_file_name_quote:n
{
@@ -436,7 +436,7 @@
% \@@_backend_include_bmp:n ,
% }
% \begin{macro}{\@@_backend_include_auxi:nn}
-% \begin{macro}{\@@_backend_include_auxii:nnn, \@@_backend_include_auxii:xnn}
+% \begin{macro}{\@@_backend_include_auxii:nnn, \@@_backend_include_auxii:enn}
% \begin{macro}{\@@_backend_include_auxiii:nnn}
% The special syntax depends on the file type. There is a difference in
% how PDF graphics are best handled between |dvipdfmx| and \XeTeX{}: for
@@ -445,7 +445,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_include_eps:n #1
{
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
PSfile = #1 \c_space_tl
llx = \dim_to_decimal_in_bp:n \l_@@_llx_dim \c_space_tl
@@ -472,7 +472,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_include_auxi:nn #1#2
{
- \@@_backend_include_auxii:xnn
+ \@@_backend_include_auxii:enn
{
\tl_if_empty:NF \l_@@_pagebox_tl
{ : \l_@@_pagebox_tl }
@@ -489,12 +489,12 @@
{
\int_if_exist:cTF { c_@@_ #2#1 _int }
{
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{ pdf:usexobj~@graphic \int_use:c { c_@@_ #2#1 _int } }
}
{ \@@_backend_include_auxiii:nnn {#2} {#1} {#3} }
}
-\cs_generate_variant:Nn \@@_backend_include_auxii:nnn { x }
+\cs_generate_variant:Nn \@@_backend_include_auxii:nnn { e }
% \end{macrocode}
% Inclusion using the specials is relatively straight-forward, but there
% is one wrinkle. To get the |pagebox| correct for PDF graphics in all cases,
@@ -505,7 +505,7 @@
{
\int_gincr:N \g_@@_track_int
\int_const:cn { c_@@_ #1#2 _int } { \g_@@_track_int }
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
pdf:#3~
@graphic \int_use:c { c_@@_ #1#2 _int } ~
@@ -612,7 +612,7 @@
}
\cs_new_protected:Npn \@@_backend_getbb_auxiv:nnNnn #1#2#3#4#5
{
- \use:x
+ \use:e
{
\@@_backend_getbb_auxv:nNnn {#2} #3 { : #1 #4 }
{
@@ -750,10 +750,10 @@
}
\cs_new_protected:Npn \@@_backend_getbb_svg_auxi:nNn #1#2#3
{
- \use:x
+ \use:e
{
\cs_set_protected:Npn \@@_backend_getbb_svg_auxii:w
- ####1 \tl_to_str:n {#1} = ####2 \tl_to_str:n {#1} = ####3
+ ##1 \tl_to_str:n {#1} = ##2 \tl_to_str:n {#1} = ##3
\s_@@_stop
}
{
@@ -772,7 +772,7 @@
##2 \s_@@_stop
}
}
- \use:x
+ \use:e
{
\@@_backend_getbb_svg_auxii:w #3
\tl_to_str:n {#1} = \tl_to_str:n {#1} =
@@ -855,7 +855,7 @@
{ \@@_backend_include:nn { pdffile } {#1} }
\cs_new_protected:Npn \@@_backend_include:nn #1#2
{
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
#1 = #2 \c_space_tl
llx = \dim_to_decimal_in_bp:n \l_@@_llx_dim \c_space_tl
@@ -892,7 +892,7 @@
{
\hbox:n
{
- \__kernel_backend_literal:x
+ \__kernel_backend_literal:e
{
dvisvgm:img~
\dim_to_decimal:n { \l_@@_urx_dim } ~
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx
index 0cb6767908f..5bd4bb4808e 100644
--- a/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx
+++ b/Master/texmf-dist/source/latex/l3backend/l3backend-header.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx
index 033ab150f0b..9b994ac16e2 100644
--- a/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx
+++ b/Master/texmf-dist/source/latex/l3backend/l3backend-opacity.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -73,7 +73,7 @@
%
% \begin{macro}{\@@_backend_select:n,\@@_backend_select_aux:n}
% \begin{macro}{\@@_backend_fill:n, \@@_backend_stroke:n}
-% \begin{macro}{\@@_backend:nnn, \@@_backend:xnn}
+% \begin{macro}{\@@_backend:nnn, \@@_backend:enn}
% No stack so set values directly. The need to deal with Distiller and
% Ghostscript separately means we use a common auxiliary: the two
% systems require different PostScript for transparency. This is
@@ -83,7 +83,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_select:n #1
{
- \exp_args:Nx \@@_backend_select_aux:n
+ \exp_args:Ne \@@_backend_select_aux:n
{ \fp_eval:n { min(max(0,#1),1) } }
}
\cs_new_protected:Npn \@@_backend_select_aux:n #1
@@ -93,14 +93,14 @@
}
\cs_new_protected:Npn \@@_backend_fill:n #1
{
- \@@_backend:xnn
+ \@@_backend:enn
{ \fp_eval:n { min(max(0,#1),1) } }
{ fill }
{ ca }
}
\cs_new_protected:Npn \@@_backend_stroke:n #1
{
- \@@_backend:xnn
+ \@@_backend:enn
{ \fp_eval:n { min(max(0,#1),1) } }
{ stroke }
{ CA }
@@ -124,7 +124,7 @@
ifelse
}
}
-\cs_generate_variant:Nn \@@_backend:nnn { x }
+\cs_generate_variant:Nn \@@_backend:nnn { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -170,7 +170,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_select:n #1
{
- \exp_args:Nx \@@_backend_select_aux:n
+ \exp_args:Ne \@@_backend_select_aux:n
{ \fp_eval:n { min(max(0,#1),1) } }
}
\cs_new_protected:Npn \@@_backend_select_aux:n #1
@@ -210,19 +210,19 @@
% \end{macro}
%
% \begin{macro}{\@@_backend_fill:n, \@@_backend_stroke:n}
-% \begin{macro}{\@@_backend_fillstroke:nn, \@@_backend_fillstroke:xx}
+% \begin{macro}{\@@_backend_fillstroke:nn, \@@_backend_fillstroke:ee}
% For separate fill and stroke, we need to work out if we need to do
% more work or if we can stick to a single setting.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_fill:n #1
{
- \@@_backend_fill_stroke:xx
+ \@@_backend_fill_stroke:ee
{ \fp_eval:n { min(max(0,#1),1) } }
\l_@@_backend_stroke_tl
}
\cs_new_protected:Npn \@@_backend_stroke:n #1
{
- \@@_backend_fill_stroke:xx
+ \@@_backend_fill_stroke:ee
\l_@@_backend_fill_tl
{ \fp_eval:n { min(max(0,#1),1) } }
}
@@ -249,7 +249,7 @@
\group_insert_after:N \@@_backend_reset:
}
}
-\cs_generate_variant:Nn \@@_backend_fill_stroke:nn { xx }
+\cs_generate_variant:Nn \@@_backend_fill_stroke:nn { ee }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -274,7 +274,7 @@
\cs_new_protected:Npn \@@_backend_stroke:n #1
{ \@@_backend:nn { {#1} } { stroke- } }
\cs_new_protected:Npn \@@_backend:nn #1#2
- { \__kernel_backend_scope:x { #2 opacity = " \fp_eval:n { min(max(0,#1),1) } " } }
+ { \__kernel_backend_scope:e { #2 opacity = " \fp_eval:n { min(max(0,#1),1) } " } }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx b/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
index a95aff4070b..8d942551bb0 100644
--- a/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
+++ b/Master/texmf-dist/source/latex/l3backend/l3backend-pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-04-19}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -91,12 +91,12 @@
%<*dvips>
% \end{macrocode}
%
-% \begin{macro}{\@@_backend_pdfmark:n, \@@_backend_pdfmark:x}
+% \begin{macro}{\@@_backend_pdfmark:n, \@@_backend_pdfmark:e}
% Used often enough it should be a separate function.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_pdfmark:n #1
{ \__kernel_backend_postscript:n { mark #1 ~ pdfmark } }
-\cs_generate_variant:Nn \@@_backend_pdfmark:n { x }
+\cs_generate_variant:Nn \@@_backend_pdfmark:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -138,7 +138,7 @@
%
% \begin{macro}
% {
-% \@@_backend_object_write:nnn, \@@_backend_object_write:nnx,
+% \@@_backend_object_write:nnn, \@@_backend_object_write:nne,
% \@@_backend_object_write_aux:nnn
% }
% \begin{macro}
@@ -159,10 +159,10 @@
{ \@@_backend_object_ref:n {#1} }
{#2} {#3}
}
-\cs_generate_variant:Nn \@@_backend_object_write:nnn { nnx }
+\cs_generate_variant:Nn \@@_backend_object_write:nnn { nne }
\cs_new_protected:Npn \@@_backend_object_write_aux:nnn #1#2#3
{
- \@@_backend_pdfmark:x
+ \@@_backend_pdfmark:e
{
/_objdef ~ #1
/type
@@ -179,17 +179,17 @@
}
\cs_new_protected:Npn \@@_backend_object_write_array:nn #1#2
{
- \@@_backend_pdfmark:x
+ \@@_backend_pdfmark:e
{ #1 ~0~ [ ~ \exp_not:n {#2} ~ ] ~ /PUTINTERVAL }
}
\cs_new_protected:Npn \@@_backend_object_write_dict:nn #1#2
{
- \@@_backend_pdfmark:x
+ \@@_backend_pdfmark:e
{ #1 << \exp_not:n {#2} >> /PUT }
}
\cs_new_protected:Npn \@@_backend_object_write_fstream:nn #1#2
{
- \exp_args:Nx
+ \exp_args:Ne
\@@_backend_object_write_fstream:nnn {#1} #2
}
\cs_new_protected:Npn \@@_backend_object_write_fstream:nnn #1#2#3
@@ -204,7 +204,7 @@
}
\cs_new_protected:Npn \@@_backend_object_write_stream:nn #1#2
{
- \exp_args:Nx
+ \exp_args:Ne
\@@_backend_object_write_stream:nnn {#1} #2
}
\cs_new_protected:Npn \@@_backend_object_write_stream:nnn #1#2#3
@@ -220,7 +220,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:nx}
+% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:ne}
% No anonymous objects, so things are done manually.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_object_now:nn #1#2
@@ -230,7 +230,7 @@
{ { pdf.obj \int_use:N \g_@@_backend_object_int } }
{#1} {#2}
}
-\cs_generate_variant:Nn \@@_backend_object_now:nn { nx }
+\cs_generate_variant:Nn \@@_backend_object_now:nn { ne }
% \end{macrocode}
% \end{macro}
%
@@ -304,7 +304,7 @@
}
\int_gincr:N \g_@@_backend_object_int
\int_gset_eq:NN \g_@@_backend_annotation_int \g_@@_backend_object_int
- \@@_backend_pdfmark:x
+ \@@_backend_pdfmark:e
{
/_objdef { pdf.obj \int_use:N \g_@@_backend_object_int }
pdf.rect
@@ -468,7 +468,7 @@
\hbox_set_end:
\@@_backend_link_minima:
\hbox_set:Nn \l_@@_backend_model_box { Gg }
- \exp_args:Nx \@@_backend_link_outerbox:n
+ \exp_args:Ne \@@_backend_link_outerbox:n
{
\int_if_odd:nTF { \value { page } }
{ \oddsidemargin }
@@ -486,7 +486,7 @@
}
\int_gincr:N \g_@@_backend_object_int
\int_gset_eq:NN \g_@@_backend_link_int \g_@@_backend_object_int
- \__kernel_backend_postscript:x
+ \__kernel_backend_postscript:e
{
mark
/_objdef { pdf.obj \int_use:N \g_@@_backend_link_int }
@@ -500,7 +500,7 @@
\cs_new_protected:Npn \@@_backend_link_minima:
{
\hbox_set:Nn \l_@@_backend_model_box { Gg }
- \__kernel_backend_postscript:x
+ \__kernel_backend_postscript:e
{
/pdf.linkdp.pad ~
\dim_to_decimal:n
@@ -528,7 +528,7 @@
}
\cs_new_protected:Npn \@@_backend_link_outerbox:n #1
{
- \__kernel_backend_postscript:x
+ \__kernel_backend_postscript:e
{
/pdf.outerbox
[
@@ -583,9 +583,9 @@
{
\tl_put_right:Nn \@makecol@hook
{
- \box_if_empty:NF \@cclv
+ \box_if_empty:NF \l_shipout_box
{
- \vbox_set:Nn \@cclv
+ \vbox_set:Nn \l_shipout_box
{
\__kernel_backend_postscript:n
{
@@ -593,7 +593,7 @@
{ pdf.bordertracking.continue }
if
}
- \vbox_unpack_drop:N \@cclv
+ \vbox_unpack_drop:N \l_shipout_box
\__kernel_backend_postscript:n
{ pdf.bordertracking.endpage }
}
@@ -620,7 +620,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_link_margin:n #1
{
- \__kernel_backend_postscript:x
+ \__kernel_backend_postscript:e
{
/pdf.linkmargin { \dim_to_decimal:n {#1} ~ pdf.pt.dvi } def
}
@@ -638,7 +638,7 @@
\cs_new_protected:Npn \@@_backend_destination:nn #1#2
{
\__kernel_backend_postscript:n { pdf.dest.anchor }
- \@@_backend_pdfmark:x
+ \@@_backend_pdfmark:e
{
/View
[
@@ -737,11 +737,11 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_version_major_gset:n #1
{
- \cs_gset:Npx \@@_backend_version_major: { \int_eval:n {#1} }
+ \cs_gset:Npe \@@_backend_version_major: { \int_eval:n {#1} }
}
\cs_new_protected:Npn \@@_backend_version_minor_gset:n #1
{
- \cs_gset:Npx \@@_backend_version_minor: { \int_eval:n {#1} }
+ \cs_gset:Npe \@@_backend_version_minor: { \int_eval:n {#1} }
}
% \end{macrocode}
% \end{macro}
@@ -805,7 +805,7 @@
% space in the \LuaTeX{} version is \emph{required} as it is consumed in
% finding the end of the keyword.
% \begin{macrocode}
-\cs_new:Npx \@@_backend_annotation_last:
+\cs_new:Npe \@@_backend_annotation_last:
{
\exp_not:N \int_value:w
%<*luatex>
@@ -857,7 +857,7 @@
% \begin{macro}{\@@_backend_link_last:}
% Formatted for direct use.
% \begin{macrocode}
-\cs_new:Npx \@@_backend_link_last:
+\cs_new:Npe \@@_backend_link_last:
{
\exp_not:N \int_value:w
%<*luatex>
@@ -1000,7 +1000,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nnx}
+% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nne}
% \begin{macro}[EXP]{\@@_backend_object_write:nn}
% \begin{macro}[EXP]{\@@_exp_not_i:nn, \@@_exp_not_ii:nn}
% Writing the data needs a little information about the structure of the
@@ -1037,7 +1037,7 @@
}
}
}
-\cs_generate_variant:Nn \@@_backend_object_write:nnn { nnx }
+\cs_generate_variant:Nn \@@_backend_object_write:nnn { nne }
\cs_new:Npn \@@_exp_not_i:nn #1#2 { \exp_not:n {#1} }
\cs_new:Npn \@@_exp_not_ii:nn #1#2 { \exp_not:n {#2} }
% \end{macrocode}
@@ -1045,7 +1045,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:nx}
+% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:ne}
% Much like writing, but direct creation.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_object_now:nn #1#2
@@ -1058,14 +1058,14 @@
%</pdftex>
\@@_backend_object_write:nn {#1} {#2}
}
-\cs_generate_variant:Nn \@@_backend_object_now:nn { nx }
+\cs_generate_variant:Nn \@@_backend_object_now:nn { ne }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[EXP]{\@@_backend_object_last:}
% Much like annotation.
% \begin{macrocode}
-\cs_new:Npx \@@_backend_object_last:
+\cs_new:Npe \@@_backend_object_last:
{
\exp_not:N \int_value:w
%<*luatex>
@@ -1082,7 +1082,7 @@
% \begin{macro}[EXP]{\@@_backend_pageobject_ref:n}
% The usual wrapper situation; the three spaces here are essential.
% \begin{macrocode}
-\cs_new:Npx \@@_backend_pageobject_ref:n #1
+\cs_new:Npe \@@_backend_pageobject_ref:n #1
{
\exp_not:N \int_value:w
%<*luatex>
@@ -1141,7 +1141,7 @@
% The availability of the primitive is not universal, so we have to test
% at load time.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_backend_version_major_gset:n #1
+\cs_new_protected:Npe \@@_backend_version_major_gset:n #1
{
%<*luatex>
\int_compare:nNnT \tex_luatexversion:D > { 106 }
@@ -1175,7 +1175,7 @@
% \begin{macro}[EXP]{\@@_backend_version_major:, \@@_backend_version_minor:}
% As above.
% \begin{macrocode}
-\cs_new:Npx \@@_backend_version_major:
+\cs_new:Npe \@@_backend_version_major:
{
%<*luatex>
\int_compare:nNnTF \tex_luatexversion:D > { 106 }
@@ -1226,12 +1226,12 @@
%<*dvipdfmx|xetex>
% \end{macrocode}
%
-% \begin{macro}{\@@_backend:n, \@@_backend:x}
+% \begin{macro}{\@@_backend:n, \@@_backend:e}
% A generic function for the backend PDF specials: used where we can.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_backend:n #1
+\cs_new_protected:Npe \@@_backend:n #1
{ \__kernel_backend_literal:n { pdf: #1 } }
-\cs_generate_variant:Nn \@@_backend:n { x }
+\cs_generate_variant:Nn \@@_backend:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -1274,7 +1274,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nnx}
+% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nne}
% \begin{macro}
% {
% \@@_backend_object_write_array:nn ,
@@ -1290,15 +1290,15 @@
\use:c { @@_backend_object_write_ #2 :nn }
{ \@@_backend_object_ref:n {#1} } {#3}
}
-\cs_generate_variant:Nn \@@_backend_object_write:nnn { nnx }
+\cs_generate_variant:Nn \@@_backend_object_write:nnn { nne }
\cs_new_protected:Npn \@@_backend_object_write_array:nn #1#2
{
- \@@_backend:x
+ \@@_backend:e
{ obj ~ #1 ~ [ ~ \exp_not:n {#2} ~ ] }
}
\cs_new_protected:Npn \@@_backend_object_write_dict:nn #1#2
{
- \@@_backend:x
+ \@@_backend:e
{ obj ~ #1 ~ << ~ \exp_not:n {#2} ~ >> }
}
\cs_new_protected:Npn \@@_backend_object_write_fstream:nn #1#2
@@ -1307,7 +1307,7 @@
{ \@@_backend_object_write_stream:nnnn { } {#1} #2 }
\cs_new_protected:Npn \@@_backend_object_write_stream:nnnn #1#2#3#4
{
- \@@_backend:x
+ \@@_backend:e
{
#1 stream ~ #2 ~
( \exp_not:n {#4} ) ~ << \exp_not:n {#3} >>
@@ -1318,18 +1318,18 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:nx}
+% \begin{macro}{\@@_backend_object_now:nn, \@@_backend_object_now:ne}
% No anonymous objects with \texttt{dvipdfmx} so we have to give an
% object name.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_object_now:nn #1#2
{
\int_gincr:N \g_@@_backend_object_int
- \exp_args:Nnx \use:c { @@_backend_object_write_ #1 :nn }
+ \exp_args:Nne \use:c { @@_backend_object_write_ #1 :nn }
{ @pdf.obj \int_use:N \g_@@_backend_object_int }
{#2}
}
-\cs_generate_variant:Nn \@@_backend_object_now:nn { nx }
+\cs_generate_variant:Nn \@@_backend_object_now:nn { ne }
% \end{macrocode}
% \end{macro}
%
@@ -1364,7 +1364,7 @@
{
\int_gincr:N \g_@@_backend_object_int
\int_gset_eq:NN \g_@@_backend_annotation_int \g_@@_backend_object_int
- \@@_backend:x
+ \@@_backend:e
{
ann ~ @pdf.obj \int_use:N \g_@@_backend_object_int \c_space_tl
width ~ \dim_eval:n {#1} ~
@@ -1400,10 +1400,10 @@
{ \@@_backend_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) >> } }
\cs_new_protected:Npn \@@_backend_link_begin_user:nnw #1#2
{ \@@_backend_link_begin:n {#1#2} }
-\cs_new_protected:Npx \@@_backend_link_begin:n #1
+\cs_new_protected:Npe \@@_backend_link_begin:n #1
{
\exp_not:N \int_gincr:N \exp_not:N \g_@@_backend_link_int
- \@@_backend:x
+ \@@_backend:e
{
bann ~
@pdf.lnk
@@ -1435,7 +1435,7 @@
% Pass to \texttt{dvipdfmx}.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_link_margin:n #1
- { \__kernel_backend_literal:x { dvipdfmx:config~g~ \dim_eval:n {#1} } }
+ { \__kernel_backend_literal:e { dvipdfmx:config~g~ \dim_eval:n {#1} } }
% \end{macrocode}
% \end{macro}
%
@@ -1449,7 +1449,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_destination:nn #1#2
{
- \@@_backend:x
+ \@@_backend:e
{
dest ~ ( \exp_not:n {#1} )
[
@@ -1518,7 +1518,7 @@
% Pass data to the backend: these are a one-shot.
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_compresslevel:n #1
- { \__kernel_backend_literal:x { dvipdfmx:config~z~ \int_eval:n {#1} } }
+ { \__kernel_backend_literal:e { dvipdfmx:config~z~ \int_eval:n {#1} } }
\cs_new_protected:Npn \@@_backend_compress_objects:n #1
{
\bool_if:nF {#1}
@@ -1534,13 +1534,13 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_backend_version_major_gset:n #1
{
- \cs_gset:Npx \@@_backend_version_major: { \int_eval:n {#1} }
- \__kernel_backend_literal:x { pdf:majorversion~ \@@_backend_version_major: }
+ \cs_gset:Npe \@@_backend_version_major: { \int_eval:n {#1} }
+ \__kernel_backend_literal:e { pdf:majorversion~ \@@_backend_version_major: }
}
\cs_new_protected:Npn \@@_backend_version_minor_gset:n #1
{
- \cs_gset:Npx \@@_backend_version_minor: { \int_eval:n {#1} }
- \__kernel_backend_literal:x { pdf:minorversion~ \@@_backend_version_minor: }
+ \cs_gset:Npe \@@_backend_version_minor: { \int_eval:n {#1} }
+ \__kernel_backend_literal:e { pdf:minorversion~ \@@_backend_version_minor: }
}
% \end{macrocode}
% \end{macro}
@@ -1608,7 +1608,7 @@
%
% \begin{macro}{\@@_backend_link_last:}
% \begin{macrocode}
-\cs_new:Npx \@@_backend_link_last: { }
+\cs_new:Npe \@@_backend_link_last: { }
% \end{macrocode}
% \end{macro}
%
@@ -1642,8 +1642,8 @@
%
% \begin{macro}{\@@_backend_object_new:n}
% \begin{macro}[EXP]{\@@_backend_object_ref:n}
-% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:nx}
-% \begin{macro}{\@@_backend_object_now:nn, , \@@_backend_object_now:nx}
+% \begin{macro}{\@@_backend_object_write:nnn, \@@_backend_object_write:ne}
+% \begin{macro}{\@@_backend_object_now:nn, , \@@_backend_object_now:ne}
% \begin{macro}{\@@_backend_object_last:}
% \begin{macro}[EXP]{\@@_backend_pageobject_ref:n}
% All no-ops here.
@@ -1651,9 +1651,9 @@
\cs_new_protected:Npn \@@_backend_object_new:nn #1 { }
\cs_new:Npn \@@_backend_object_ref:n #1 { }
\cs_new_protected:Npn \@@_backend_object_write:nnn #1#2#3 { }
-\cs_new_protected:Npn \@@_backend_object_write:nnx #1#2#3 { }
+\cs_new_protected:Npn \@@_backend_object_write:nne #1#2#3 { }
\cs_new_protected:Npn \@@_backend_object_now:nn #1#2 { }
-\cs_new_protected:Npn \@@_backend_object_now:nx #1#2 { }
+\cs_new_protected:Npn \@@_backend_object_now:ne #1#2 { }
\cs_new:Npn \@@_backend_object_last: { }
\cs_new:Npn \@@_backend_pageobject_ref:n #1 { }
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
index c02099765d1..cd41c2103ee 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3benchmark/l3benchmark.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -122,7 +122,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3benchmark}{2023-05-11}{}
+\ProvidesExplPackage{l3benchmark}{2023-10-10}{}
{L3 Experimental benchmarking}
% \end{macrocode}
%
@@ -225,13 +225,13 @@
}
\cs_new_protected:Npn \@@_raw_replicate_large:nnN #1#2
{
- \cs_set:Npx \@@_tmp:w ##1 { \prg_replicate:nn { 5000 } {##1} }
+ \cs_set:Npe \@@_tmp:w ##1 { \prg_replicate:nn { 5000 } {##1} }
\exp_args:Nno \@@_raw_replicate:nnN { #1 / 5000 }
{ \@@_tmp:w {#2} }
}
\cs_new_protected:Npn \@@_raw_replicate_small:nnN #1#2
{
- \cs_set:Npx \@@_tmp:w ##1##2 { \prg_replicate:nn {#1} {##1} }
+ \cs_set:Npe \@@_tmp:w ##1##2 { \prg_replicate:nn {#1} {##1} }
\@@_raw:nN { \@@_tmp:w {#2} { } } \g_@@_time_int
\exp_args:No \@@_raw_replicate_aux:nnN
{ \int_use:N \g_@@_time_int } {#2}
@@ -439,7 +439,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_display:
{
- \iow_term:x
+ \iow_term:e
{
\@@_fp_to_tl:N \g_benchmark_time_fp \c_space_tl seconds \c_space_tl
( \@@_fp_to_tl:N \g_benchmark_ops_fp \c_space_tl ops)
@@ -474,7 +474,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \benchmark_tic:
{
- \iow_term:x { \@@_tictoc_prefix: TIC }
+ \iow_term:e { \@@_tictoc_prefix: TIC }
\exp_args:NNf \seq_gput_right:Nn \g_@@_tictoc_seq { \sys_timer: }
\int_gincr:N \g_@@_tictoc_int
}
@@ -494,7 +494,7 @@
\int_gdecr:N \g_@@_tictoc_int
\fp_gset:Nn \g_benchmark_time_fp
{ ( \sys_timer: - \l_@@_tictoc_pop_tl ) / 65536 }
- \iow_term:x
+ \iow_term:e
{
\@@_tictoc_prefix:
TOC: \c_space_tl
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx b/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx
index c15e0288e23..6d342b09552 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3bitset/l3bitset.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
% \begin{documentation}
@@ -264,7 +264,7 @@
%<@@=bitset>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesExplPackage{l3bitset}{2023-05-11}{}
+\ProvidesExplPackage{l3bitset}{2023-10-10}{}
{L3 Experimental bitset support}
% \end{macrocode}
% A bitset is a string variable.
@@ -337,13 +337,13 @@
% then inserting an $1$. It is not checked if the value was already $1$.
% \begin{macrocode}
\cs_new_protected:Npn \@@_set_true:Nn #1#2
- { \@@_set:NNnN \str_set:Nx #1 {#2} 1 }
+ { \@@_set:NNnN \str_set:Ne #1 {#2} 1 }
\cs_new_protected:Npn \@@_gset_true:Nn #1#2
- { \@@_set:NNnN \str_gset:Nx #1 {#2} 1 }
+ { \@@_set:NNnN \str_gset:Ne #1 {#2} 1 }
\cs_new_protected:Npn \@@_set_false:Nn #1#2
- { \@@_set:NNnN \str_set:Nx #1 {#2} 0 }
+ { \@@_set:NNnN \str_set:Ne #1 {#2} 0 }
\cs_new_protected:Npn \@@_gset_false:Nn #1#2
- { \@@_set:NNnN \str_gset:Nx #1 {#2} 0 }
+ { \@@_set:NNnN \str_gset:Ne #1 {#2} 0 }
\cs_new_protected:Npn \@@_set:NNnN #1#2#3#4
{
\int_compare:nNnT {#3} > { 0 }
@@ -434,7 +434,7 @@
\prop_gput:cnn { g_@@_ \cs_to_str:N #2 _name_prop } {#3} {#3}
}
{
- \msg_warning:nnxx { bitset } { unknown-name }
+ \msg_warning:nnee { bitset } { unknown-name }
{ \token_to_str:N #2 }
{ \tl_to_str:n {#3} }
}
@@ -531,11 +531,11 @@
% \bitset_log:N, \bitset_log:c
% }
% \begin{macrocode}
-\cs_new_protected:Npn \bitset_show:N { \@@_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \bitset_show:N { \@@_show:NN \msg_show:nneeee }
\cs_generate_variant:Nn \bitset_show:N { c }
-\cs_new_protected:Npn \bitset_log:N { \@@_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \bitset_log:N { \@@_show:NN \msg_log:nneeee }
\cs_generate_variant:Nn \bitset_log:N { c }
-\cs_new_protected:Npn \bitset_show_named_index:N { \@@_show_named_index:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \bitset_show_named_index:N { \@@_show_named_index:NN \msg_show:nneeee }
\cs_generate_variant:Nn \bitset_show_named_index:N { c }
\cs_new_protected:Npn \@@_show:NN #1#2
{
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
index d8704e45455..b48aa9d9951 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-boxes.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -102,7 +102,7 @@
\group_begin:
\hbox_set:Nn \l_@@_tmp_box
{
- \use:x
+ \use:e
{
\@@_backend_box_use:Nnnnn #1
{ \fp_use:N \l_@@_matrix_a_fp }
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
index 0303081b15b..e85f370c347 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-layers.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
index 702ef922f9c..41e866e5639 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-paths.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -346,7 +346,7 @@
{
\fp_set:Nn \l_@@_path_tmpa_fp { \c_@@_path_curveto_b_fp * #1 }
\fp_set:Nn \l_@@_path_tmpb_fp { \c_@@_path_curveto_b_fp * #2 }
- \use:x
+ \use:e
{
\@@_path_mark_corner:
\@@_path_curveto:nnnnnn
@@ -409,7 +409,7 @@
{ \draw_path_arc:nnnn {#1} {#2} {#3} {#3} }
\cs_new_protected:Npn \draw_path_arc:nnnn #1#2#3#4
{
- \use:x
+ \use:e
{
\@@_path_arc:nnnn
{ \fp_eval:n {#1} }
@@ -464,7 +464,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_path_arc_auxi:nnnnNnn #1#2#3#4#5#6#7
{
- \use:x
+ \use:e
{
\@@_path_arc_auxii:nnnNnnnn
{#1} {#2} {#4} #5 {#6} {#7}
@@ -564,7 +564,7 @@
}
\cs_new_protected:Npn \@@_path_arc_aux_add:nn #1#2
{
- \tl_put_right:Nx \l_@@_path_tmp_tl
+ \tl_put_right:Ne \l_@@_path_tmp_tl
{ { \fp_to_dim:n {#1} } { \fp_to_dim:n {#2} } }
}
\fp_new:N \l_@@_path_arc_delta_fp
@@ -624,7 +624,7 @@
}
\cs_new_protected:Npn \@@_path_ellipse:nnnnnn #1#2#3#4#5#6
{
- \use:x
+ \use:e
{
\@@_path_moveto:nn
{ \fp_to_dim:n { #1 + #3 } } { \fp_to_dim:n { #2 + #4 } }
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
index e858b98f108..044f01a374a 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-points.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
index 75b5238b38a..4017e46f178 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-scopes.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -247,7 +247,7 @@
{
\bool_if:NTF \l_@@_baseline_bool
{
- \use:x
+ \use:e
{
\exp_not:n {#1}
\@@_finalise_baseline:n { \dim_use:N \l_@@_baseline_dim }
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
index 867164c026a..44524fb17bb 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-softpath.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -96,11 +96,11 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\@@_softpath_add:n, \@@_softpath_add:o, \@@_softpath_add:x}
+% \begin{macro}{\@@_softpath_add:n, \@@_softpath_add:o, \@@_softpath_add:e}
% \begin{macrocode}
\cs_new_protected:Npn \@@_softpath_add:n
{ \tl_build_gput_right:Nn \g_@@_softpath_main_tl }
-\cs_generate_variant:Nn \@@_softpath_add:n { o, x }
+\cs_generate_variant:Nn \@@_softpath_add:n { o, e }
% \end{macrocode}
% \end{macro}
%
@@ -150,7 +150,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_softpath_closepath:
{
- \@@_softpath_add:x
+ \@@_softpath_add:e
{
\@@_softpath_close_op:nn
{ \dim_use:N \g_@@_softpath_lastx_dim }
@@ -466,19 +466,19 @@
% corner, in order to work out where the curve we are adding will start
% and end. From those, plus the points we already have, we work out where
% the control points will lie. All of this is done in an expansion to
-% avoid multiple calls to |\tl_put_right:Nx|. The end point of the line
+% avoid multiple calls to |\tl_put_right:Ne|. The end point of the line
% is worked out up-front and saved: we need that if dealing with a
% close-path operation.
% \begin{macrocode}
\cs_new_protected:Npn \@@_softpath_round_calc:NnnNnn #1#2#3#4#5#6
{
- \tl_set:Nx \l_@@_softpath_curve_end_tl
+ \tl_set:Ne \l_@@_softpath_curve_end_tl
{
\draw_point_interpolate_distance:nnn
\l_@@_softpath_cornerii_dim
{ #5 , #6 } { #2 , #3 }
}
- \tl_put_right:Nx \l_@@_softpath_part_tl
+ \tl_put_right:Ne \l_@@_softpath_part_tl
{
\exp_not:N #4
\@@_softpath_round_calc:fVnnnn
@@ -546,11 +546,11 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_softpath_round_close:nn #1#2
{
- \use:x
+ \use:e
{
\@@_softpath_round_calc:NnnNnn
{
- \tl_set:Nx \exp_not:N \l_@@_softpath_move_tl
+ \tl_set:Ne \exp_not:N \l_@@_softpath_move_tl
{
\@@_softpath_moveto_op:nn
\exp_not:N \exp_after:wN
@@ -558,7 +558,7 @@
\exp_not:N \l_@@_softpath_curve_end_tl
\s_@@_stop
}
- \use:x
+ \use:e
{
\exp_not:N \exp_not:N \exp_not:N \use_i:nnnn
{
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
index fca6f78389b..e1a67309e22 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-state.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -107,7 +107,7 @@
\seq_set_from_clist:Nn \l_@@_tmp_seq {#1}
\seq_set_map:NNn \l_@@_tmp_seq \l_@@_tmp_seq
{ \fp_to_dim:n {##1} }
- \use:x
+ \use:e
{
\@@_backend_dash_pattern:nn
{ \seq_use:Nn \l_@@_tmp_seq { , } }
@@ -124,7 +124,7 @@
% Pass through to the driver layer.
% \begin{macrocode}
\cs_new_protected:Npn \draw_miterlimit:n #1
- { \exp_args:Nx \@@_backend_miterlimit:n { \fp_eval:n {#1} } }
+ { \exp_args:Ne \@@_backend_miterlimit:n { \fp_eval:n {#1} } }
% \end{macrocode}
% \end{macro}
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
index 901b0b6f84d..35b31395dbd 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw-transforms.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -172,7 +172,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \draw_transform_matrix:nnnn #1#2#3#4
{
- \use:x
+ \use:e
{
\@@_transform:nnnn
{ \fp_eval:n {#1} }
@@ -183,7 +183,7 @@
}
\cs_new_protected:Npn \@@_transform:nnnn #1#2#3#4
{
- \use:x
+ \use:e
{
\draw_transform_matrix_absolute:nnnn
{ #1 * \l_@@_matrix_a_fp + #2 * \l_@@_matrix_c_fp }
@@ -269,7 +269,7 @@
}
\cs_new_protected:Npn \@@_transform_triangle:nnnnnn #1#2#3#4#5#6
{
- \use:x
+ \use:e
{
\draw_transform_matrix_absolute:nnnn
{ #3 - #1 }
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
index 7d4afed84f2..d1e604d42d4 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3draw/l3draw.dtx
@@ -110,7 +110,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -1173,7 +1173,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2023-05-11}{}
+\ProvidesExplPackage{l3draw}{2023-10-10}{}
{L3 Experimental core drawing support}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
index 3209e4793cf..0266b711fa0 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3graphics/l3graphics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -184,7 +184,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3graphics}{2023-05-11}{}
+\ProvidesExplPackage{l3graphics}{2023-10-10}{}
{L3 Experimental graphics inclusion support}
% \end{macrocode}
%
@@ -236,8 +236,8 @@
pagebox .choices:nn =
{ art , bleed , crop , media , trim }
{
- \tl_set:Nx \l_@@_pagebox_tl
- { \tl_use:N \l_keys_choice_tl box }
+ \tl_set:Ne \l_@@_pagebox_tl
+ { \l_keys_choice_tl box }
} ,
pagebox .initial:n =
crop ,
@@ -267,8 +267,8 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\@@_bb_save:n, \@@_bb_save:x}
-% \begin{macro}{\@@_bb_restore:nF, \@@_bb_restore:xF}
+% \begin{macro}{\@@_bb_save:n, \@@_bb_save:e}
+% \begin{macro}{\@@_bb_restore:nF, \@@_bb_restore:eF}
% Caching graphic bounding boxes is sensible, and these functions are needed both
% here and for drive-specific work. So they are made available as documented
% functions. To save on registers, the \enquote{origin} is only saved if it is
@@ -287,7 +287,7 @@
\dim_const:cn { c_@@_ #1 _ury_dim } { \l_@@_ury_dim }
}
}
-\cs_generate_variant:Nn \@@_bb_save:n { x }
+\cs_generate_variant:Nn \@@_bb_save:n { e }
\cs_new_protected:Npn \@@_bb_restore:nF #1#2
{
\dim_if_exist:cTF { c_@@_ #1 _urx_dim }
@@ -303,7 +303,7 @@
}
{#2}
}
-\cs_generate_variant:Nn \@@_bb_restore:nF { x }
+\cs_generate_variant:Nn \@@_bb_restore:nF { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -375,7 +375,7 @@
\@@_bb_restore:nF {#1#2}
{ \@@_read_bb_auxii:nnnn {#3} {#4} {#1} {#2} }
}
-\cs_new_protected:Npx \@@_read_bb_auxii:nnnn #1#2#3#4
+\cs_new_protected:Npe \@@_read_bb_auxii:nnnn #1#2#3#4
{
#1
\exp_not:N \ior_if_eof:NTF \exp_not:N \l_@@_internal_ior
@@ -390,15 +390,15 @@
}
\ior_close:N \exp_not:N \l_@@_internal_ior
}
-\use:x
+\use:e
{
\cs_new_protected:Npn \exp_not:N \@@_read_bb_auxiii:w
- ##1 \c_colon_str ##2 \s_@@_stop
+ #1 \c_colon_str #2 \s_@@_stop
{
\exp_not:N \str_if_eq:nnT
{ \c_percent_str \c_percent_str BoundingBox }
- {##1}
- { \exp_not:N \@@_read_bb_auxiv:w ##2 ( ) \s_@@_stop }
+ {#1}
+ { \exp_not:N \@@_read_bb_auxiv:w #2 ( ) \s_@@_stop }
}
}
% \end{macrocode}
@@ -413,7 +413,7 @@
{
\str_if_eq:nnF {#2} { atend }
{
- \tl_set_rescan:Nnx \l_@@_internal_tl
+ \tl_set_rescan:Nne \l_@@_internal_tl
{
\char_set_catcode_space:n { 9 }
\char_set_catcode_space:n { 32 }
@@ -552,7 +552,7 @@
\cs_if_exist:cTF { @@_backend_include_ #1 :n }
{
\tl_set_eq:NN \l_@@_final_name_str \l_@@_full_name_str
- \str_set:Nx \l_@@_full_name_str
+ \str_set:Ne \l_@@_full_name_str
{ \exp_args:NV \__kernel_file_name_quote:n \l_@@_full_name_str }
\exp_args:NnV \use:c { @@_backend_getbb_ #1 :n }
\l_@@_full_name_str
@@ -615,8 +615,8 @@
% \begin{macro}[EXP]{\@@_list_aux:n}
% A function to list all graphic files used.
% \begin{macrocode}
-\cs_new_protected:Npn \graphics_show_list: { \@@_list:N \msg_show:nnxxxx }
-\cs_new_protected:Npn \graphics_log_list: { \@@_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \graphics_show_list: { \@@_list:N \msg_show:nneeee }
+\cs_new_protected:Npn \graphics_log_list: { \@@_list:N \msg_log:nneeee }
\cs_new_protected:Npn \@@_list:N #1
{
\seq_remove_duplicates:N \g_@@_record_seq
@@ -714,7 +714,7 @@
\exp_args:NNNV \group_end:
\tl_set:Nn #2 #2
}
-\cs_new_protected:Npx \@@_get_pagecount:n #1
+\cs_new_protected:Npe \@@_get_pagecount:n #1
{
\ior_shell_open:Nn \exp_not:N \l_@@_internal_ior
{ extractbb~-O~#1 }
@@ -731,16 +731,16 @@
}
\ior_close:N \exp_not:N \l_@@_internal_ior
}
-\use:x
+\use:e
{
\cs_new_protected:Npn \exp_not:N \@@_get_pagecount:nw
- ##1##2 \c_colon_str ##3 \c_colon_str ##4 \s_@@_stop
+ #1#2 \c_colon_str #3 \c_colon_str #4 \s_@@_stop
{
\exp_not:N \str_if_eq:nnT
{ \c_percent_str \c_percent_str Pages }
- {##2}
+ {#2}
{
- \int_const:cn { c_@@_ ##1 _pages_int } {##3}
+ \int_const:cn { c_@@_ #1 _pages_int } {#3}
\exp_not:N \ior_map_break:
}
}
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx b/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx
index 0412372235e..3fce2c27d15 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3opacity/l3opacity.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -96,7 +96,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3opacity}{2023-05-11}{}
+\ProvidesExplPackage{l3opacity}{2023-10-10}{}
{L3 Experimental opacity support}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
index af0ad23e9f6..10ccfb2f794 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3str/l3str-format.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -166,7 +166,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2023-05-11}{}
+\ProvidesExplPackage{l3str-format}{2023-10-10}{}
{L3 Experimental string formatting}
% \end{macrocode}
%
@@ -256,7 +256,7 @@
\exp_last_unbraced:Nf \@@_format_parse_auxi:NN
{ \__kernel_str_to_other:n {#1} } \s_@@_stop \s_@@_stop {#1}
}
-\cs_new:Npx \@@_format_parse_auxi:NN #1#2
+\cs_new:Npe \@@_format_parse_auxi:NN #1#2
{
\exp_not:N \@@_format_if_in:nNTF { < > = ^ } #2
{ \exp_not:N \@@_format_parse_auxiii:nN { #1 #2 } }
@@ -271,7 +271,7 @@
{ \@@_format_parse_auxiii:nN { #1 #2 } }
{ \@@_format_parse_auxiii:nN { #1 ? } #2 }
}
-\cs_new:Npx \@@_format_parse_auxiii:nN #1#2
+\cs_new:Npe \@@_format_parse_auxiii:nN #1#2
{
\exp_not:N \@@_format_if_in:nNTF
{ + - \c_catcode_other_space_tl }
diff --git a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
index dfc2fb188ae..0cc622dbbb1 100644
--- a/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/l3sys-shell/l3sys-shell.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -151,7 +151,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3sys-shell}{2023-05-11}{}
+\ProvidesExplPackage{l3sys-shell}{2023-10-10}{}
{L3 Experimental system shell functions}
% \end{macrocode}
%
@@ -213,11 +213,11 @@
% Simple Unix-like file copying: at some stage we may need a directory-only
% version as Windows and Unix have different requirements here.
% \begin{macrocode}
-\cs_new_protected:Npx \sys_shell_cp:nn #1#2
+\cs_new_protected:Npe \sys_shell_cp:nn #1#2
{
\sys_if_shell_unrestricted:T
{
- \sys_shell_now:x
+ \sys_shell_now:e
{
\sys_if_platform_unix:T
{
@@ -240,11 +240,11 @@
% issues a warning if the directory already exists: avoid by including a
% test.
% \begin{macrocode}
-\cs_new_protected:Npx \sys_shell_mkdir:n #1
+\cs_new_protected:Npe \sys_shell_mkdir:n #1
{
\sys_if_shell_unrestricted:T
{
- \sys_shell_now:x
+ \sys_shell_now:e
{
\sys_if_platform_unix:T
{ mkdir~-p~ \exp_not:N \tl_to_str:n {#1} }
@@ -264,11 +264,11 @@
% On Windows we do not have a single |mv| operation, so copy-and-delete
% instead.
% \begin{macrocode}
-\cs_new_protected:Npx \sys_shell_mv:nn #1#2
+\cs_new_protected:Npe \sys_shell_mv:nn #1#2
{
\sys_if_shell_unrestricted:T
{
- \sys_shell_now:x
+ \sys_shell_now:e
{
\sys_if_platform_unix:T
{
@@ -291,11 +291,11 @@
% \begin{macro}{\sys_shell_rm:n}
% Deletion: obviously a big health warning here!
% \begin{macrocode}
-\cs_new_protected:Npx \sys_shell_rm:n #1
+\cs_new_protected:Npe \sys_shell_rm:n #1
{
\sys_if_shell_unrestricted:T
{
- \sys_shell_now:x
+ \sys_shell_now:e
{
\sys_if_platform_unix:T
{ rm~-f~ \exp_not:N \tl_to_str:n {#1} }
@@ -311,12 +311,12 @@
% When removing a directory, we create it first as that avoids errors in
% the Windows case.
% \begin{macrocode}
-\cs_new_protected:Npx \sys_shell_rmdir:n #1
+\cs_new_protected:Npe \sys_shell_rmdir:n #1
{
\sys_if_shell_unrestricted:T
{
\sys_shell_mkdir:n {#1}
- \sys_shell_now:x
+ \sys_shell_now:e
{
\sys_if_platform_unix:T
{ rm~-rf~ \exp_not:N \tl_to_str:n {#1} }
@@ -341,7 +341,7 @@
% that does not require shell escape. However, it's hard to see how it might
% be useful without the other file functions.)
% \begin{macrocode}
-\cs_new_protected:Npx \sys_get_shell_pwd:N #1
+\cs_new_protected:Npe \sys_get_shell_pwd:N #1
{
\sys_if_shell_unrestricted:T
{
@@ -371,7 +371,7 @@
% just a case of tidying up. The listing always ends in |^^M| so there is an
% extra entry to trim.
% \begin{macrocode}
-\cs_new_protected:Npx \sys_shell_split_ls:nN #1#2
+\cs_new_protected:Npe \sys_shell_split_ls:nN #1#2
{
\sys_if_shell_unrestricted:T
{
diff --git a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
index 97f1432be0e..8e8a9f0ca1a 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xcoffins/xcoffins.dtx
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -672,7 +672,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2023-05-11}{}
+\ProvidesExplPackage{xcoffins}{2023-10-10}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
@@ -781,7 +781,7 @@
{
\group_begin:
\@@_design_names:N #1
- \use:x
+ \use:e
{
\group_end:
\coffin_set_horizontal_pole:Nnn #1
@@ -792,7 +792,7 @@
{
\group_begin:
\@@_design_names:N #1
- \use:x
+ \use:e
{
\group_end:
\coffin_set_vertical_pole:Nnn #1
@@ -831,7 +831,7 @@
{
\group_begin:
\keys_set:nn { coffin } {#1}
- \tl_set:Nx \l_@@_tmp_tl
+ \tl_set:Ne \l_@@_tmp_tl
{
\group_end:
\bool_if:NTF \l_@@_bound_box_grow_bool
diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
index a40688f42a5..7272d8625ea 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/l3galley.dtx
@@ -61,7 +61,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -686,7 +686,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2023-05-11}{}
+\ProvidesExplPackage{l3galley}{2023-10-10}{}
{L3 Experimental galley code}
% \end{macrocode}
%
@@ -1325,7 +1325,7 @@
{
\tl_if_empty:NF #1
{
- \tl_gput_right:Nx \g_galley_restore_running_tl
+ \tl_gput_right:Ne \g_galley_restore_running_tl
{
\int_gset:Nn \exp_not:N \g_galley_penalty_int
{ \int_use:N \g_galley_penalty_int }
@@ -1337,7 +1337,7 @@
{
\tl_if_empty:NF #1
{
- \tl_gput_right:Nx \g_galley_restore_running_tl
+ \tl_gput_right:Ne \g_galley_restore_running_tl
{
\skip_gset:Nn \exp_not:N \g_galley_vspace_skip
{ \skip_use:N \g_galley_vspace_skip }
@@ -1755,7 +1755,7 @@
{
\seq_gpop_left:NNF #2 \l_@@_tmp_tl
{ \tl_set:Nn \l_@@_tmp_tl { 0pt } }
- \seq_put_right:Nx \l_@@_tmp_seq
+ \seq_put_right:Ne \l_@@_tmp_seq
{ \dim_eval:n { ##1 + \l_@@_tmp_tl } }
}
}
@@ -1950,10 +1950,10 @@
% deals with this nicely.
% \begin{macrocode}
\cs_new_protected:Npn \galley_penalty_set_single:n #1
- { \tl_gset:Nx \g_@@_interpar_penalty_user_tl { \int_eval:n {#1} } }
+ { \tl_gset:Ne \g_@@_interpar_penalty_user_tl { \int_eval:n {#1} } }
\cs_new_protected:Npn \galley_penalty_add_single:n #1
{
- \tl_gset:Nx \g_@@_interpar_penalty_user_tl
+ \tl_gset:Ne \g_@@_interpar_penalty_user_tl
{
\int_eval:n
{
@@ -1964,10 +1964,10 @@
}
}
\cs_new_protected:Npn \galley_vspace_set_single:n #1
- { \tl_gset:Nx \g_@@_interpar_vspace_user_tl { \skip_eval:n {#1} } }
+ { \tl_gset:Ne \g_@@_interpar_vspace_user_tl { \skip_eval:n {#1} } }
\cs_new_protected:Npn \galley_vspace_add_single:n #1
{
- \tl_gset:Nx \g_@@_interpar_vspace_user_tl
+ \tl_gset:Ne \g_@@_interpar_vspace_user_tl
{
\skip_eval:n
{
@@ -2408,11 +2408,11 @@
{ \clist_set_eq:NN #1 \l_galley_line_penalties_clist }
% \end{macrocode}
% These all require appropriate mappings, using the fact that
-% \cs{clist_set:Nx} will tidy up the excess comma.
+% \cs{clist_set:Ne} will tidy up the excess comma.
% \begin{macrocode}
\cs_new_protected:Npn \galley_save_display_club_penalties:N #1
{
- \clist_set:Nx #1
+ \clist_set:Ne #1
{
\int_step_function:nN { \tex_clubpenalties:D 0 - 1 }
\@@_save_display_club_penalties:n
@@ -2422,7 +2422,7 @@
{ \int_value:w \tex_clubpenalties:D \int_eval:n {#1} , }
\cs_new_protected:Npn \galley_save_display_widow_penalties:N #1
{
- \clist_set:Nx #1
+ \clist_set:Ne #1
{
\int_step_function:nN { \tex_displaywidowpenalties:D 0 - 1 }
\@@_save_display_widow_penalties:n
@@ -2435,7 +2435,7 @@
}
\cs_new_protected:Npn \galley_save_widow_penalties:N #1
{
- \clist_set:Nx #1
+ \clist_set:Ne #1
{
\int_step_function:nN { \tex_widowpenalties:D 0 - 1 }
\@@_save_widow_penalties:n
diff --git a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
index c7731b0b66e..abda67cc7ea 100644
--- a/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
+++ b/Master/texmf-dist/source/latex/l3experimental/xgalley/xgalley.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-05-11}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -731,7 +731,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2023-05-11}{}
+\ProvidesExplPackage{xgalley}{2023-10-10}{}
{L3 Experimental galley}
\RequirePackage{xtemplate,l3galley}
% \end{macrocode}
@@ -1057,7 +1057,7 @@
stretch-last-line = \l_galley_par_stretch_last_bool
}
{
- \tl_put_left:Nx \l_@@_justification_other_tl
+ \tl_put_left:Ne \l_@@_justification_other_tl
{
\skip_set:Nn \exp_not:N \l_galley_par_end_skip
{ \skip_use:N \l_galley_par_end_skip }
@@ -1355,7 +1355,7 @@
% \begin{macrocode}
\tl_if_empty:NF \l_@@_interline_penalty_tl
{
- \tl_gput_right:Nx \g_galley_par_reset_hook_tl
+ \tl_gput_right:Ne \g_galley_par_reset_hook_tl
{
\int_set:Nn \exp_not:N \l_@@_interline_penalty_int
{ \galley_interline_penalty: }
@@ -1365,7 +1365,7 @@
}
\tl_if_empty:NF \l_@@_parbreak_fuzz_tl
{
- \tl_gput_right:Nx \g_galley_par_reset_hook_tl
+ \tl_gput_right:Ne \g_galley_par_reset_hook_tl
{
\dim_set:Nn \exp_not:N \l_galley_parbreak_fuzz_dim
{ \dim_use:N \l_galley_parbreak_fuzz_dim }
@@ -1380,7 +1380,7 @@
{
\tl_if_empty:cF { l_galley_ ##1 _tl }
{
- \tl_gput_right:Nx \g_galley_par_reset_hook_tl
+ \tl_gput_right:Ne \g_galley_par_reset_hook_tl
{
\int_set:Nn \exp_not:c { l_galley_ ##1 _int }
{ \int_use:c { l_galley_ ##1 _int } }
@@ -1399,7 +1399,7 @@
\tl_if_empty:cF { l_galley_ ##1 _tl }
{
\use:c { galley_save_ ##1 :N } \l_@@_tmpa_clist
- \tl_gput_right:Nx \g_galley_par_reset_hook_tl
+ \tl_gput_right:Ne \g_galley_par_reset_hook_tl
{
\exp_not:c { galley_set_ ##1 :n }
{ \exp_not:o \l_@@_tmpa_clist }
@@ -1486,22 +1486,22 @@
{
\tl_if_empty:NF \l_galley_display_begin_par_vpenalty_tl
{
- \tl_set:Nx \l_galley_display_begin_par_vpenalty_tl
+ \tl_set:Ne \l_galley_display_begin_par_vpenalty_tl
{ \int_eval:n { \l_galley_display_begin_par_vpenalty_tl } }
}
\tl_if_empty:NF \l_galley_display_begin_par_vspace_tl
{
- \tl_set:Nx \l_galley_display_begin_par_vspace_tl
+ \tl_set:Ne \l_galley_display_begin_par_vspace_tl
{ \skip_eval:n { \l_galley_display_begin_par_vspace_tl } }
}
\tl_if_empty:NF \l_galley_display_begin_vpenalty_tl
{
- \tl_set:Nx \l_galley_display_begin_vpenalty_tl
+ \tl_set:Ne \l_galley_display_begin_vpenalty_tl
{ \int_eval:n { \l_galley_display_begin_vpenalty_tl } }
}
\tl_if_empty:NF \l_galley_display_begin_vspace_tl
{
- \tl_set:Nx \l_galley_display_begin_vspace_tl
+ \tl_set:Ne \l_galley_display_begin_vspace_tl
{ \skip_eval:n { \l_galley_display_begin_vspace_tl } }
}
}
@@ -1515,22 +1515,22 @@
{
\tl_if_empty:NF \l_galley_display_end_par_vpenalty_tl
{
- \tl_set:Nx \l_galley_display_end_par_vpenalty_tl
+ \tl_set:Ne \l_galley_display_end_par_vpenalty_tl
{ \int_eval:n { \l_galley_display_end_par_vpenalty_tl } }
}
\tl_if_empty:NF \l_galley_display_end_par_vspace_tl
{
- \tl_set:Nx \l_galley_display_end_par_vspace_tl
+ \tl_set:Ne \l_galley_display_end_par_vspace_tl
{ \skip_eval:n { \l_galley_display_end_par_vspace_tl } }
}
\tl_if_empty:NF \l_galley_display_end_vpenalty_tl
{
- \tl_set:Nx \l_galley_display_end_vpenalty_tl
+ \tl_set:Ne \l_galley_display_end_vpenalty_tl
{ \int_eval:n { \l_galley_display_end_vpenalty_tl } }
}
\tl_if_empty:NF \l_galley_display_end_vspace_tl
{
- \tl_set:Nx \l_galley_display_end_vspace_tl
+ \tl_set:Ne \l_galley_display_end_vspace_tl
{ \skip_eval:n { \l_galley_display_end_vspace_tl } }
}
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
index 9adee097c5c..ea13fbeacf1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/expl3.dtx
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2023-08-29}%
+\def\ExplFileDate{2023-10-10}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -311,8 +311,9 @@
% or private.
%
% To allow clear separation of these two cases, the following convention
-% is used. Private functions should be defined with |__| added to the beginning
-% of the module name. Thus
+% is used. In private functions and variables, two |_| characters are
+% added to the start of the module name. On the other hand, public
+% interfaces to not have these two |_| character. Thus
% \begin{verbatim}
% \module_foo:nnn
% \end{verbatim}
@@ -323,8 +324,9 @@
% is private to the module, and should \emph{not} be used outside of that
% module.
%
-% Similarly, private variables should use |__| to separate scope and
-% module name, such that
+% For variables, to avoid three |_| in a row, the separator for the variable
+% scope and any leading |_| for a private interface in the module part are
+% combined. Thus
% \begin{verbatim}
% \l_module_foo_tl
% \end{verbatim}
@@ -334,12 +336,12 @@
% \end{verbatim}
% is private.
%
-% \subsubsection{Using \texttt{@@} and \pkg{l3docstrip} to mark private code}
+% \subsubsection{Using \texttt{@@} and \pkg{DocStrip} to mark private code}
%
% The formal syntax for internal functions allows clear separation of public
% and private code, but includes redundant information (every internal function
% or variable includes \texttt{__\meta{module}}). To aid programmers, the
-% \pkg{l3docstrip} program introduces the syntax
+% \pkg{DocStrip} program introduces the syntax
% \begin{quote}
% \ttfamily
% |%<@@=|\meta{module}|>|
@@ -354,7 +356,7 @@
% \tl_new:N \l_@@_my_tl
% % \end{macrocode}
% \end{verbatim}
-% is converted by \pkg{l3docstrip} to
+% is converted by \pkg{DocStrip} to
% \begin{verbatim}
% \cs_new:Npn \__foo_function:n #1
% ...
@@ -365,13 +367,6 @@
% distinguish variables from functions in the source when the |@@|
% convention is used.
%
-% Please note that you have to use the \pkg{l3docstrip} and
-% \textbf{not} the \pkg{docstrip} program in your \texttt{.ins} files
-% to make this work---the original \LaTeXe{} \pkg{docstrip} doesn't
-% understand the \texttt{@@} and will just copy it into your code
-% unmodified!
-%
-%
% \subsubsection{Variables: declaration}
%
% In well-formed \pkg{expl3} code, variables should always be declared before
@@ -653,20 +648,10 @@
% variables which have a \cs{\meta{var}_use:N} function (other than
% boxes), and which therefore deliver a single
% \enquote{value}.
-% \item[x] Fully-expanded token or braced token list.\\
-% This means that the argument is expanded as in the replacement
-% text of an~\tn{edef}, and the expansion is passed to the function as
-% a braced token list. Expansion takes place until only unexpandable
-% tokens are left. |x|-type arguments cannot be nested.
% \item[e] Fully-expanded token or braced token list.\\
-% This expansion is very similar to |x|-type but may be nested and does
-% not require that |#| tokens are doubled. It uses \tn{expanded} primitive.
-% \item[f] Expanding the first token recursively in a braced token
-% list.\\ Almost the same as the |x| type except here the token list
-% is expanded fully until the first unexpandable token is found and
-% the rest is left unchanged. Note that if this function finds a
-% space at the beginning of the argument it gobbles it and does not
-% expand the next token.
+% This means that the argument is expanded as in the replacement
+% text of a~\tn{message}, and the expansion is passed to the function as
+% a braced token list.
% \item[o] One-level-expanded token or braced token list.\\
% This means that the argument is expanded one level, as by
% \tn{expandafter}, and the expansion is passed to the function as a
@@ -674,6 +659,19 @@
% token list then only the first token in that list is expanded.
% In general, using \texttt{V} should be preferred to using
% \texttt{o} for simple variable retrieval.
+% \item[f] Expanding the first token recursively in a braced token
+% list.\\ Almost the same as the |e| type except here the token list
+% is expanded fully until the first unexpandable token is found and
+% the rest is left unchanged. Note that if this function finds a
+% space at the beginning of the argument it gobbles it and does not
+% expand the next token.
+% \item[x] Fully-expanded token or braced token list.\\
+% This expansion is very similar to |e|-type but is not nestable,
+% can only be used to create non-expandable functions, and requires
+% that |#| tokens are doubled in the argument. In almost all cases,
+% |e|-type should be preferred: retained largely for historical
+% reasons, and should where possible be replaced by the |e|-type
+% equivalent.
% \end{description}
%
% \subsection{Simpler means better}
@@ -761,17 +759,17 @@
%
% To illustrate this let us suppose you have a \enquote{base function}
% |\demo_cmd:Nnn| that takes three normal arguments, and that you need
-% to construct the variant |\demo_cmd:cnx|, for which the first argument
+% to construct the variant |\demo_cmd:cne|, for which the first argument
% is used to construct the \emph{name} of a command, whilst the third
% argument must be fully expanded before being passed to
% |\demo_cmd:Nnn|.
% To produce the variant form from the base form, simply use this:
% \begin{verbatim}
-% \cs_generate_variant:Nn \demo_cmd:Nnn { cnx }
+% \cs_generate_variant:Nn \demo_cmd:Nnn { cne }
% \end{verbatim}
% This defines the variant form so that you can then write, for example:
% \begin{verbatim}
-% \demo_cmd:cnx { abc } { pq } { \rst \xyz }
+% \demo_cmd:cne { abc } { pq } { \rst \xyz }
% \end{verbatim}
% rather than \ldots\ well, something like this!
% \begin{verbatim}
@@ -793,13 +791,13 @@
% \end{verbatim}
%
% Another example: you may wish to declare a function
-% |\demo_cmd_b:xcxcx|, a variant of an existing function
+% |\demo_cmd_b:enene|, a variant of an existing function
% |\demo_cmd_b:nnnnn|, that fully
% expands arguments 1,~3 and~5, and produces commands to pass as
% arguments 2 and~4 using~\tn{csname}.
% The definition you need is simply
% \begin{verbatim}
-% \cs_generate_variant:Nn \demo_cmd_b:nnnnn { xcxcx }
+% \cs_generate_variant:Nn \demo_cmd_b:nnnnn { enene }
% \end{verbatim}
%
% This extension mechanism is written so that if the same new form of
@@ -854,7 +852,7 @@
% \begin{itemize}
% \item \pkg{expl3} is mainly focused on programming. This means that
% some areas still require the use of \LaTeXe{} internal macros.
-% For example, you may well need \tn{@ifpackageloaded}, as there
+% For example, you may well need \tn{IfPackageLoadedTF}, as there
% is currently no native \pkg{expl3} package loading module.
% \item User level macros should be generated using the mechanism
% available in the \pkg{xparse} package, which is part of the
@@ -1541,12 +1539,12 @@
}
\cs_gset_protected:Npn \@expl@push@filename@@@@
{
- \exp_args:Nx \__kernel_file_input_push:n
+ \exp_args:Ne \__kernel_file_input_push:n
{
\tl_to_str:N \@currname .
\tl_to_str:N \@currext
}
- \tl_put_left:Nx \l_@@_status_stack_tl
+ \tl_put_left:Ne \l_@@_status_stack_tl
{
\bool_if:NTF \l__kernel_expl_bool
{ 1 }
@@ -1742,7 +1740,7 @@
\cs_set_protected:Npn \ProvidesExplFileAux ##1##2##3##4
{
\group_end:
- \iow_log:x { File:~##1~##2~v##3~##4 }
+ \iow_log:e { File:~##1~##2~v##3~##4 }
}
\tex_input:D #1 .def \scan_stop:
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
index 17cb2467bf6..6b484105fe5 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -200,7 +200,12 @@
% \subsection{Defining new functions using parameter text}
% \label{sec:l3basics:defining-new-function-1}
%
-% \begin{function}{\cs_new:Npn, \cs_new:cpn, \cs_new:Npx, \cs_new:cpx}
+% \begin{function}
+% {
+% \cs_new:Npn, \cs_new:cpn,
+% \cs_new:Npe, \cs_new:cpe,
+% \cs_new:Npx, \cs_new:cpx
+% }
% \begin{syntax}
% \cs{cs_new:Npn} \meta{function} \meta{parameters} \Arg{code}
% \end{syntax}
@@ -214,6 +219,7 @@
% \begin{function}
% {
% \cs_new_nopar:Npn, \cs_new_nopar:cpn,
+% \cs_new_nopar:Npe, \cs_new_nopar:cpe,
% \cs_new_nopar:Npx, \cs_new_nopar:cpx
% }
% \begin{syntax}
@@ -230,6 +236,7 @@
% \begin{function}
% {
% \cs_new_protected:Npn, \cs_new_protected:cpn,
+% \cs_new_protected:Npe, \cs_new_protected:cpe,
% \cs_new_protected:Npx, \cs_new_protected:cpx
% }
% \begin{syntax}
@@ -247,6 +254,7 @@
% \begin{function}
% {
% \cs_new_protected_nopar:Npn, \cs_new_protected_nopar:cpn ,
+% \cs_new_protected_nopar:Npe, \cs_new_protected_nopar:cpe ,
% \cs_new_protected_nopar:Npx, \cs_new_protected_nopar:cpx
% }
% \begin{syntax}
@@ -261,7 +269,12 @@
% and an error results if the \meta{function} is already defined.
% \end{function}
%
-% \begin{function}{\cs_set:Npn, \cs_set:cpn, \cs_set:Npx, \cs_set:cpx}
+% \begin{function}
+% {
+% \cs_set:Npn, \cs_set:cpn,
+% \cs_set:Npe, \cs_set:cpe,
+% \cs_set:Npx, \cs_set:cpx
+% }
% \begin{syntax}
% \cs{cs_set:Npn} \meta{function} \meta{parameters} \Arg{code}
% \end{syntax}
@@ -275,6 +288,7 @@
% \begin{function}
% {
% \cs_set_nopar:Npn, \cs_set_nopar:cpn,
+% \cs_set_nopar:Npe, \cs_set_nopar:cpe,
% \cs_set_nopar:Npx, \cs_set_nopar:cpx
% }
% \begin{syntax}
@@ -292,6 +306,7 @@
% \begin{function}
% {
% \cs_set_protected:Npn, \cs_set_protected:cpn,
+% \cs_set_protected:Npe, \cs_set_protected:cpe,
% \cs_set_protected:Npx, \cs_set_protected:cpx
% }
% \begin{syntax}
@@ -308,6 +323,7 @@
% \begin{function}
% {
% \cs_set_protected_nopar:Npn, \cs_set_protected_nopar:cpn ,
+% \cs_set_protected_nopar:Npe, \cs_set_protected_nopar:cpe ,
% \cs_set_protected_nopar:Npx, \cs_set_protected_nopar:cpx ,
% }
% \begin{syntax}
@@ -323,7 +339,12 @@
% \texttt{x}-type or \texttt{e}-type argument.
% \end{function}
%
-% \begin{function}{\cs_gset:Npn, \cs_gset:cpn, \cs_gset:Npx, \cs_gset:cpx}
+% \begin{function}
+% {
+% \cs_gset:Npn, \cs_gset:cpn,
+% \cs_gset:Npe, \cs_gset:cpe,
+% \cs_gset:Npx, \cs_gset:cpx
+% }
% \begin{syntax}
% \cs{cs_gset:Npn} \meta{function} \meta{parameters} \Arg{code}
% \end{syntax}
@@ -338,6 +359,7 @@
% \begin{function}
% {
% \cs_gset_nopar:Npn, \cs_gset_nopar:cpn,
+% \cs_gset_nopar:Npe, \cs_gset_nopar:cpe,
% \cs_gset_nopar:Npx, \cs_gset_nopar:cpx
% }
% \begin{syntax}
@@ -355,6 +377,7 @@
% \begin{function}
% {
% \cs_gset_protected:Npn, \cs_gset_protected:cpn,
+% \cs_gset_protected:Npe, \cs_gset_protected:cpe,
% \cs_gset_protected:Npx, \cs_gset_protected:cpx
% }
% \begin{syntax}
@@ -372,6 +395,7 @@
% \begin{function}
% {
% \cs_gset_protected_nopar:Npn, \cs_gset_protected_nopar:cpn,
+% \cs_gset_protected_nopar:Npe, \cs_gset_protected_nopar:cpe,
% \cs_gset_protected_nopar:Npx, \cs_gset_protected_nopar:cpx
% }
% \begin{syntax}
@@ -393,7 +417,7 @@
% \begin{function}
% {
% \cs_new:Nn, \cs_new:cn,
-% \cs_new:Nx, \cs_new:cx
+% \cs_new:Ne, \cs_new:ce
% }
% \begin{syntax}
% \cs{cs_new:Nn} \meta{function} \Arg{code}
@@ -409,7 +433,7 @@
% \begin{function}
% {
% \cs_new_nopar:Nn, \cs_new_nopar:cn,
-% \cs_new_nopar:Nx, \cs_new_nopar:cx
+% \cs_new_nopar:Ne, \cs_new_nopar:ce
% }
% \begin{syntax}
% \cs{cs_new_nopar:Nn} \meta{function} \Arg{code}
@@ -426,7 +450,7 @@
% \begin{function}
% {
% \cs_new_protected:Nn, \cs_new_protected:cn,
-% \cs_new_protected:Nx, \cs_new_protected:cx
+% \cs_new_protected:Ne, \cs_new_protected:ce
% }
% \begin{syntax}
% \cs{cs_new_protected:Nn} \meta{function} \Arg{code}
@@ -443,7 +467,7 @@
% \begin{function}
% {
% \cs_new_protected_nopar:Nn, \cs_new_protected_nopar:cn,
-% \cs_new_protected_nopar:Nx, \cs_new_protected_nopar:cx
+% \cs_new_protected_nopar:Ne, \cs_new_protected_nopar:ce
% }
% \begin{syntax}
% \cs{cs_new_protected_nopar:Nn} \meta{function} \Arg{code}
@@ -461,7 +485,7 @@
% \begin{function}
% {
% \cs_set:Nn, \cs_set:cn,
-% \cs_set:Nx, \cs_set:cx
+% \cs_set:Ne, \cs_set:ce
% }
% \begin{syntax}
% \cs{cs_set:Nn} \meta{function} \Arg{code}
@@ -478,7 +502,7 @@
% \begin{function}
% {
% \cs_set_nopar:Nn, \cs_set_nopar:cn,
-% \cs_set_nopar:Nx, \cs_set_nopar:cx
+% \cs_set_nopar:Ne, \cs_set_nopar:ce
% }
% \begin{syntax}
% \cs{cs_set_nopar:Nn} \meta{function} \Arg{code}
@@ -496,7 +520,7 @@
% \begin{function}
% {
% \cs_set_protected:Nn, \cs_set_protected:cn,
-% \cs_set_protected:Nx, \cs_set_protected:cx
+% \cs_set_protected:Ne, \cs_set_protected:ce
% }
% \begin{syntax}
% \cs{cs_set_protected:Nn} \meta{function} \Arg{code}
@@ -514,7 +538,7 @@
% \begin{function}
% {
% \cs_set_protected_nopar:Nn, \cs_set_protected_nopar:cn,
-% \cs_set_protected_nopar:Nx, \cs_set_protected_nopar:cx
+% \cs_set_protected_nopar:Ne, \cs_set_protected_nopar:ce
% }
% \begin{syntax}
% \cs{cs_set_protected_nopar:Nn} \meta{function} \Arg{code}
@@ -533,7 +557,7 @@
% \begin{function}
% {
% \cs_gset:Nn, \cs_gset:cn,
-% \cs_gset:Nx, \cs_gset:cx
+% \cs_gset:Ne, \cs_gset:ce
% }
% \begin{syntax}
% \cs{cs_gset:Nn} \meta{function} \Arg{code}
@@ -549,7 +573,7 @@
% \begin{function}
% {
% \cs_gset_nopar:Nn, \cs_gset_nopar:cn,
-% \cs_gset_nopar:Nx, \cs_gset_nopar:cx
+% \cs_gset_nopar:Ne, \cs_gset_nopar:ce
% }
% \begin{syntax}
% \cs{cs_gset_nopar:Nn} \meta{function} \Arg{code}
@@ -566,7 +590,7 @@
% \begin{function}
% {
% \cs_gset_protected:Nn, \cs_gset_protected:cn,
-% \cs_gset_protected:Nx, \cs_gset_protected:cx
+% \cs_gset_protected:Ne, \cs_gset_protected:ce
% }
% \begin{syntax}
% \cs{cs_gset_protected:Nn} \meta{function} \Arg{code}
@@ -583,7 +607,7 @@
% \begin{function}
% {
% \cs_gset_protected_nopar:Nn, \cs_gset_protected_nopar:cn,
-% \cs_gset_protected_nopar:Nx, \cs_gset_protected_nopar:cx
+% \cs_gset_protected_nopar:Ne, \cs_gset_protected_nopar:ce
% }
% \begin{syntax}
% \cs{cs_gset_protected_nopar:Nn} \meta{function} \Arg{code}
@@ -1034,15 +1058,6 @@
% \end{texnote}
% \end{function}
%
-% \begin{function}[updated = 2011-12-31]{\use:x}
-% \begin{syntax}
-% \cs{use:x} \Arg{expandable tokens}
-% \end{syntax}
-% Fully expands the \meta{expandable tokens} and inserts the
-% result into the input stream at the current location.
-% Any hash characters (|#|) in the argument must be doubled.
-% \end{function}
-%
% \subsection{Selecting tokens from delimited arguments}
%
% A different kind of function for selecting tokens from the token
@@ -1520,55 +1535,63 @@
%
% \begin{macro}
% {
-% \cs_set_nopar:Npn , \cs_set_nopar:Npx ,
-% \cs_set:Npn , \cs_set:Npx ,
-% \cs_set_protected_nopar:Npn , \cs_set_protected_nopar:Npx ,
-% \cs_set_protected:Npn , \cs_set_protected:Npx
+% \cs_set_nopar:Npn , \cs_set_nopar:Npe , \cs_set_nopar:Npx ,
+% \cs_set:Npn , \cs_set:Npe , \cs_set:Npx ,
+% \cs_set_protected_nopar:Npn , \cs_set_protected_nopar:Npe , \cs_set_protected_nopar:Npx ,
+% \cs_set_protected:Npn , \cs_set_protected:Npe , \cs_set_protected:Npx
% }
% All assignment functions in \LaTeX3 should be naturally protected;
% after all, the \TeX{} primitives for assignments are and it can be
% a cause of problems if others aren't.
% \begin{macrocode}
\tex_let:D \cs_set_nopar:Npn \tex_def:D
+\tex_let:D \cs_set_nopar:Npe \tex_edef:D
\tex_let:D \cs_set_nopar:Npx \tex_edef:D
\tex_protected:D \tex_long:D \tex_def:D \cs_set:Npn
{ \tex_long:D \tex_def:D }
-\tex_protected:D \tex_long:D \tex_def:D \cs_set:Npx
+\tex_protected:D \tex_long:D \tex_def:D \cs_set:Npe
{ \tex_long:D \tex_edef:D }
+\tex_let:D \cs_set:Npx \cs_set:Npe
\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npn
{ \tex_protected:D \tex_def:D }
-\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npx
+\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected_nopar:Npe
{ \tex_protected:D \tex_edef:D }
+\tex_let:D \cs_set_protected_nopar:Npx \cs_set_protected_nopar:Npe
\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npn
{ \tex_protected:D \tex_long:D \tex_def:D }
-\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npx
+\tex_protected:D \tex_long:D \tex_def:D \cs_set_protected:Npe
{ \tex_protected:D \tex_long:D \tex_edef:D }
+\tex_let:D \cs_set_protected:Npx \cs_set_protected:Npe
% \end{macrocode}
% \end{macro}
%
% \begin{macro}
% {
-% \cs_gset_nopar:Npn , \cs_gset_nopar:Npx ,
-% \cs_gset:Npn , \cs_gset:Npx ,
-% \cs_gset_protected_nopar:Npn , \cs_gset_protected_nopar:Npx ,
-% \cs_gset_protected:Npn , \cs_gset_protected:Npx
+% \cs_gset_nopar:Npn , \cs_gset_nopar:Npe , \cs_gset_nopar:Npx ,
+% \cs_gset:Npn , \cs_gset:Npe , \cs_gset:Npx ,
+% \cs_gset_protected_nopar:Npn , \cs_gset_protected_nopar:Npe , \cs_gset_protected_nopar:Npx ,
+% \cs_gset_protected:Npn , \cs_gset_protected:Npe , \cs_gset_protected:Npx
% }
% Global versions of the above functions.
% \begin{macrocode}
\tex_let:D \cs_gset_nopar:Npn \tex_gdef:D
+\tex_let:D \cs_gset_nopar:Npe \tex_xdef:D
\tex_let:D \cs_gset_nopar:Npx \tex_xdef:D
\cs_set_protected:Npn \cs_gset:Npn
{ \tex_long:D \tex_gdef:D }
-\cs_set_protected:Npn \cs_gset:Npx
+\cs_set_protected:Npn \cs_gset:Npe
{ \tex_long:D \tex_xdef:D }
+\tex_let:D \cs_gset:Npx \cs_gset:Npe
\cs_set_protected:Npn \cs_gset_protected_nopar:Npn
{ \tex_protected:D \tex_gdef:D }
-\cs_set_protected:Npn \cs_gset_protected_nopar:Npx
+\cs_set_protected:Npn \cs_gset_protected_nopar:Npe
{ \tex_protected:D \tex_xdef:D }
+\tex_let:D \cs_gset_protected_nopar:Npx \cs_gset_protected_nopar:Npe
\cs_set_protected:Npn \cs_gset_protected:Npn
{ \tex_protected:D \tex_long:D \tex_gdef:D }
-\cs_set_protected:Npn \cs_gset_protected:Npx
+\cs_set_protected:Npn \cs_gset_protected:Npe
{ \tex_protected:D \tex_long:D \tex_xdef:D }
+\tex_let:D \cs_gset_protected:Npx \cs_gset_protected:Npe
% \end{macrocode}
% \end{macro}
%
@@ -1921,7 +1944,7 @@
{ \@@_generate_conditional_parm:NNNpnn \cs_new_protected:Npn p }
\cs_set_protected:Npn \@@_generate_conditional_parm:NNNpnn #1#2#3#4#
{
- \use:x
+ \use:e
{
\@@_generate_conditional:nnNNNnnn
\cs_split_function:N #3
@@ -1973,7 +1996,7 @@
{ \@@_generate_conditional_count:NNNnn \cs_new_protected:Npn p }
\cs_set_protected:Npn \@@_generate_conditional_count:NNNnn #1#2#3
{
- \use:x
+ \use:e
{
\@@_generate_conditional_count:nnNNNnn
\cs_split_function:N #3
@@ -1986,7 +2009,7 @@
{ \@@_generate_conditional:nnNNNnnn {#1} {#2} #3 #4 #5 }
{ \tl_count:n {#2} }
{
- \msg_error:nnxx { kernel } { bad-number-of-arguments }
+ \msg_error:nnee { kernel } { bad-number-of-arguments }
{ \token_to_str:c { #1 : #2 } }
{ \tl_count:n {#2} }
\use_none:nn
@@ -2024,11 +2047,11 @@
\cs_set_protected:Npn \@@_generate_conditional:nnNNNnnn #1#2#3#4#5#6#7#8
{
\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:nn
\fi:
- \use:x
+ \use:e
{
\exp_not:N \@@_generate_conditional:NNnnnnNw
\exp_not:n { #4 #5 {#1} {#2} {#6} }
@@ -2064,7 +2087,7 @@
\use:c { @@_generate_ #8 _form:wNNnnnnN }
\tl_if_empty:nF {#8}
{
- \msg_error:nnxx
+ \msg_error:nnee
{ kernel } { conditional-form-unknown }
{#8} { \token_to_str:c { #3 : #4 } }
}
@@ -2118,7 +2141,7 @@
{ #7 \@@_p_true:w \fi: \c_false_bool }
}
{
- \msg_error:nnx { kernel } { protected-predicate }
+ \msg_error:nne { kernel } { protected-predicate }
{ \token_to_str:c { #4 _p: #5 } }
}
}
@@ -2176,7 +2199,7 @@
{ \@@_set_eq_conditional:NNNn \cs_new_eq:cc }
\cs_set_protected:Npn \@@_set_eq_conditional:NNNn #1#2#3#4
{
- \use:x
+ \use:e
{
\exp_not:N \@@_set_eq_conditional:nnNnnNNw
\cs_split_function:N #2
@@ -2216,12 +2239,12 @@
\cs_set_protected:Npn \@@_set_eq_conditional:nnNnnNNw #1#2#3#4#5#6
{
\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:
\if_meaning:w \c_false_bool #6
- \msg_error:nnx { kernel } { missing-colon }
+ \msg_error:nne { kernel } { missing-colon }
{ \token_to_str:c {#4} }
\exp_after:wN \@@_use_none_delimit_by_q_recursion_stop:w
\fi:
@@ -2235,7 +2258,7 @@
\use:c { @@_set_eq_conditional_ #6 _form:wNnnnn }
\tl_if_empty:nF {#6}
{
- \msg_error:nnxx
+ \msg_error:nnee
{ kernel } { conditional-form-unknown }
{#6} { \token_to_str:c { #1 : #2 } }
}
@@ -2554,14 +2577,14 @@
% only temporary, they will be redefined later on.
%
% \begin{macro}
-% {\msg_error:nnxx, \msg_error:nnx, \msg_error:nn}
+% {\msg_error:nnee, \msg_error:nne, \msg_error:nn}
% If an internal error occurs before \LaTeX3 has loaded \pkg{l3msg} then
% the code should issue a usable if terse error message and halt. This
% can only happen if a coding error is made by the team, so this is
% a reasonable response. Setting the \tn{newlinechar} is needed, to
% turn |^^J| into a proper line break in plain \TeX{}.
% \begin{macrocode}
-\cs_set_protected:Npn \msg_error:nnxx #1#2#3#4
+\cs_set_protected:Npn \msg_error:nnee #1#2#3#4
{
\tex_newlinechar:D = `\^^J \scan_stop:
\tex_errmessage:D
@@ -2574,10 +2597,10 @@
}
\tex_end:D
}
-\cs_set_protected:Npn \msg_error:nnx #1#2#3
- { \msg_error:nnxx {#1} {#2} {#3} { } }
+\cs_set_protected:Npn \msg_error:nne #1#2#3
+ { \msg_error:nnee {#1} {#2} {#3} { } }
\cs_set_protected:Npn \msg_error:nn #1#2
- { \msg_error:nnxx {#1} {#2} { } { } }
+ { \msg_error:nnee {#1} {#2} { } { } }
% \end{macrocode}
% \end{macro}
%
@@ -2589,14 +2612,14 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[documented-as=\iow_log:n]{\iow_log:x, \iow_term:x}
+% \begin{macro}[documented-as=\iow_log:n]{\iow_log:e, \iow_term:e}
% We define a routine to write only to the log file. And a
% similar one for writing to both the log file and the terminal.
-% These will be redefined later by \pkg{l3io}.
+% These will be redefined later by \pkg{l3file}.
% \begin{macrocode}
-\cs_set_protected:Npn \iow_log:x
+\cs_set_protected:Npn \iow_log:e
{ \tex_immediate:D \tex_write:D -1 }
-\cs_set_protected:Npn \iow_term:x
+\cs_set_protected:Npn \iow_term:e
{ \tex_immediate:D \tex_write:D 16 }
% \end{macrocode}
% \end{macro}
@@ -2614,7 +2637,7 @@
{
\cs_if_free:NF #1
{
- \msg_error:nnxx { kernel } { command-already-defined }
+ \msg_error:nnee { kernel } { command-already-defined }
{ \token_to_str:N #1 } { \token_to_meaning:N #1 }
}
}
@@ -2631,10 +2654,10 @@
%
% \begin{macro}
% {
-% \cs_new_nopar:Npn , \cs_new_nopar:Npx ,
-% \cs_new:Npn , \cs_new:Npx ,
-% \cs_new_protected_nopar:Npn , \cs_new_protected_nopar:Npx ,
-% \cs_new_protected:Npn , \cs_new_protected:Npx
+% \cs_new_nopar:Npn , \cs_new_nopar:Npe , \cs_new_nopar:Npx ,
+% \cs_new:Npn , \cs_new:Npe , \cs_new:Npx ,
+% \cs_new_protected_nopar:Npn , \cs_new_protected_nopar:Npe , \cs_new_protected_nopar:Npx ,
+% \cs_new_protected:Npn , \cs_new_protected:Npe , \cs_new_protected:Npx
% }
% \begin{macro}{\@@_tmp:w}
% Function which check that the control sequence is free before
@@ -2649,12 +2672,16 @@
}
}
\@@_tmp:w \cs_new_nopar:Npn \cs_gset_nopar:Npn
+\@@_tmp:w \cs_new_nopar:Npe \cs_gset_nopar:Npe
\@@_tmp:w \cs_new_nopar:Npx \cs_gset_nopar:Npx
\@@_tmp:w \cs_new:Npn \cs_gset:Npn
+\@@_tmp:w \cs_new:Npe \cs_gset:Npe
\@@_tmp:w \cs_new:Npx \cs_gset:Npx
\@@_tmp:w \cs_new_protected_nopar:Npn \cs_gset_protected_nopar:Npn
+\@@_tmp:w \cs_new_protected_nopar:Npe \cs_gset_protected_nopar:Npe
\@@_tmp:w \cs_new_protected_nopar:Npx \cs_gset_protected_nopar:Npx
\@@_tmp:w \cs_new_protected:Npn \cs_gset_protected:Npn
+\@@_tmp:w \cs_new_protected:Npe \cs_gset_protected:Npe
\@@_tmp:w \cs_new_protected:Npx \cs_gset_protected:Npx
% \end{macrocode}
% \end{macro}
@@ -2662,9 +2689,9 @@
%
% \begin{macro}[documented-as=\cs_set_nopar:Npn]
% {
-% \cs_set_nopar:cpn , \cs_set_nopar:cpx ,
-% \cs_gset_nopar:cpn , \cs_gset_nopar:cpx ,
-% \cs_new_nopar:cpn , \cs_new_nopar:cpx
+% \cs_set_nopar:cpn , \cs_set_nopar:cpe , \cs_set_nopar:cpx ,
+% \cs_gset_nopar:cpn , \cs_gset_nopar:cpe , \cs_gset_nopar:cpx ,
+% \cs_new_nopar:cpn , \cs_new_nopar:cpe , \cs_new_nopar:cpx
% }
% Like \cs{cs_set_nopar:Npn} and \cs{cs_new_nopar:Npn}, except that the
% first argument consists of the sequence of characters that should
@@ -2680,64 +2707,76 @@
\cs_set:Npn \@@_tmp:w #1#2
{ \cs_new_protected_nopar:Npn #1 { \exp_args:Nc #2 } }
\@@_tmp:w \cs_set_nopar:cpn \cs_set_nopar:Npn
+\@@_tmp:w \cs_set_nopar:cpe \cs_set_nopar:Npe
\@@_tmp:w \cs_set_nopar:cpx \cs_set_nopar:Npx
\@@_tmp:w \cs_gset_nopar:cpn \cs_gset_nopar:Npn
+\@@_tmp:w \cs_gset_nopar:cpe \cs_gset_nopar:Npe
\@@_tmp:w \cs_gset_nopar:cpx \cs_gset_nopar:Npx
\@@_tmp:w \cs_new_nopar:cpn \cs_new_nopar:Npn
+\@@_tmp:w \cs_new_nopar:cpe \cs_new_nopar:Npe
\@@_tmp:w \cs_new_nopar:cpx \cs_new_nopar:Npx
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[documented-as=\cs_set:Npn]
% {
-% \cs_set:cpn , \cs_set:cpx ,
-% \cs_gset:cpn , \cs_gset:cpx ,
-% \cs_new:cpn , \cs_new:cpx
+% \cs_set:cpn , \cs_set:cpe , \cs_set:cpx ,
+% \cs_gset:cpn , \cs_gset:cpe , \cs_gset:cpx ,
+% \cs_new:cpn , \cs_new:cpe , \cs_new:cpx
% }
% Variants of the \cs{cs_set:Npn} versions which make a csname out
% of the first arguments. We may also do this globally.
% \begin{macrocode}
\@@_tmp:w \cs_set:cpn \cs_set:Npn
+\@@_tmp:w \cs_set:cpe \cs_set:Npe
\@@_tmp:w \cs_set:cpx \cs_set:Npx
\@@_tmp:w \cs_gset:cpn \cs_gset:Npn
+\@@_tmp:w \cs_gset:cpe \cs_gset:Npe
\@@_tmp:w \cs_gset:cpx \cs_gset:Npx
\@@_tmp:w \cs_new:cpn \cs_new:Npn
+\@@_tmp:w \cs_new:cpe \cs_new:Npe
\@@_tmp:w \cs_new:cpx \cs_new:Npx
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[documented-as=\cs_set_protected_nopar:Npn]
% {
-% \cs_set_protected_nopar:cpn , \cs_set_protected_nopar:cpx ,
-% \cs_gset_protected_nopar:cpn , \cs_gset_protected_nopar:cpx ,
-% \cs_new_protected_nopar:cpn , \cs_new_protected_nopar:cpx
+% \cs_set_protected_nopar:cpn , \cs_set_protected_nopar:cpe , \cs_set_protected_nopar:cpx ,
+% \cs_gset_protected_nopar:cpn , \cs_gset_protected_nopar:cpe , \cs_gset_protected_nopar:cpx ,
+% \cs_new_protected_nopar:cpn , \cs_new_protected_nopar:cpe , \cs_new_protected_nopar:cpx
% }
% Variants of the \cs{cs_set_protected_nopar:Npn} versions which make
% a csname out of the first arguments. We may also do this globally.
% \begin{macrocode}
\@@_tmp:w \cs_set_protected_nopar:cpn \cs_set_protected_nopar:Npn
+\@@_tmp:w \cs_set_protected_nopar:cpe \cs_set_protected_nopar:Npe
\@@_tmp:w \cs_set_protected_nopar:cpx \cs_set_protected_nopar:Npx
\@@_tmp:w \cs_gset_protected_nopar:cpn \cs_gset_protected_nopar:Npn
+\@@_tmp:w \cs_gset_protected_nopar:cpe \cs_gset_protected_nopar:Npe
\@@_tmp:w \cs_gset_protected_nopar:cpx \cs_gset_protected_nopar:Npx
\@@_tmp:w \cs_new_protected_nopar:cpn \cs_new_protected_nopar:Npn
+\@@_tmp:w \cs_new_protected_nopar:cpe \cs_new_protected_nopar:Npe
\@@_tmp:w \cs_new_protected_nopar:cpx \cs_new_protected_nopar:Npx
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[documented-as=\cs_set_protected:Npn]
% {
-% \cs_set_protected:cpn , \cs_set_protected:cpx ,
-% \cs_gset_protected:cpn , \cs_gset_protected:cpx ,
-% \cs_new_protected:cpn , \cs_new_protected:cpx
+% \cs_set_protected:cpn , \cs_set_protected:cpe , \cs_set_protected:cpx ,
+% \cs_gset_protected:cpn , \cs_gset_protected:cpe , \cs_gset_protected:cpx ,
+% \cs_new_protected:cpn , \cs_new_protected:cpe , \cs_new_protected:cpx
% }
% Variants of the \cs{cs_set_protected:Npn} versions which make a csname
% out of the first arguments. We may also do this globally.
% \begin{macrocode}
\@@_tmp:w \cs_set_protected:cpn \cs_set_protected:Npn
+\@@_tmp:w \cs_set_protected:cpe \cs_set_protected:Npe
\@@_tmp:w \cs_set_protected:cpx \cs_set_protected:Npx
\@@_tmp:w \cs_gset_protected:cpn \cs_gset_protected:Npn
+\@@_tmp:w \cs_gset_protected:cpe \cs_gset_protected:Npe
\@@_tmp:w \cs_gset_protected:cpx \cs_gset_protected:Npx
\@@_tmp:w \cs_new_protected:cpn \cs_new_protected:Npn
+\@@_tmp:w \cs_new_protected:cpe \cs_new_protected:Npe
\@@_tmp:w \cs_new_protected:cpx \cs_new_protected:Npx
% \end{macrocode}
% \end{macro}
@@ -2827,7 +2866,7 @@
% \begin{macrocode}
\cs_set_protected:Npn \__kernel_cs_parm_from_arg_count:nnF #1#2
{
- \exp_args:Nx \@@_parm_from_arg_count_test:nnF
+ \exp_args:Ne \@@_parm_from_arg_count_test:nnF
{
\exp_after:wN \exp_not:n
\if_case:w \int_eval:n {#2}
@@ -2914,7 +2953,7 @@
{
\__kernel_cs_parm_from_arg_count:nnF { \use:nnn #2 #1 } {#3}
{
- \msg_error:nnxx { kernel } { bad-number-of-arguments }
+ \msg_error:nnee { kernel } { bad-number-of-arguments }
{ \token_to_str:N #1 } { \int_eval:n {#3} }
\use_none:n
}
@@ -2944,18 +2983,18 @@
%
% \begin{macro}
% {
-% \cs_set:Nn , \cs_set:Nx ,
-% \cs_set_nopar:Nn , \cs_set_nopar:Nx ,
-% \cs_set_protected:Nn , \cs_set_protected:Nx ,
-% \cs_set_protected_nopar:Nn , \cs_set_protected_nopar:Nx ,
-% \cs_gset:Nn , \cs_gset:Nx ,
-% \cs_gset_nopar:Nn , \cs_gset_nopar:Nx ,
-% \cs_gset_protected:Nn , \cs_gset_protected:Nx ,
-% \cs_gset_protected_nopar:Nn , \cs_gset_protected_nopar:Nx ,
-% \cs_new:Nn , \cs_new:Nx ,
-% \cs_new_nopar:Nn , \cs_new_nopar:Nx ,
-% \cs_new_protected:Nn , \cs_new_protected:Nx ,
-% \cs_new_protected_nopar:Nn , \cs_new_protected_nopar:Nx ,
+% \cs_set:Nn , \cs_set:Ne , \cs_set:Nx ,
+% \cs_set_nopar:Nn , \cs_set_nopar:Ne , \cs_set_nopar:Nx ,
+% \cs_set_protected:Nn , \cs_set_protected:Ne , \cs_set_protected:Nx ,
+% \cs_set_protected_nopar:Nn , \cs_set_protected_nopar:Ne , \cs_set_protected_nopar:Nx ,
+% \cs_gset:Nn , \cs_gset:Ne , \cs_gset:Nx ,
+% \cs_gset_nopar:Nn , \cs_gset_nopar:Ne , \cs_gset_nopar:Nx ,
+% \cs_gset_protected:Nn , \cs_gset_protected:Ne , \cs_gset_protected:Nx ,
+% \cs_gset_protected_nopar:Nn , \cs_gset_protected_nopar:Ne , \cs_gset_protected_nopar:Nx ,
+% \cs_new:Nn , \cs_new:Ne , \cs_new:Nx ,
+% \cs_new_nopar:Nn , \cs_new_nopar:Ne , \cs_new_nopar:Nx ,
+% \cs_new_protected:Nn , \cs_new_protected:Ne , \cs_new_protected:Nx ,
+% \cs_new_protected_nopar:Nn , \cs_new_protected_nopar:Ne , \cs_new_protected_nopar:Nx ,
% }
% We want to define \cs{cs_set:Nn} as
% \begin{verbatim}
@@ -2980,7 +3019,7 @@
}
\cs_new_protected:Npn \@@_generate_from_signature:NNn #1#2
{
- \use:x
+ \use:e
{
\@@_generate_from_signature:nnNNNn
\cs_split_function:N #2
@@ -2995,14 +3034,14 @@
{ \tl_map_function:nN {#2} \@@_generate_from_signature:n }
\tl_if_empty:oF \@@_tmp:w
{
- \msg_error:nnxxx { kernel } { non-base-function }
+ \msg_error:nneee { kernel } { non-base-function }
{ \token_to_str:N #5 } {#2} { \@@_tmp:w }
}
\cs_generate_from_arg_count:NNnn
#5 #4 { \tl_count:n {#2} } {#6}
}
{
- \msg_error:nnx { kernel } { missing-colon }
+ \msg_error:nne { kernel } { missing-colon }
{ \token_to_str:N #5 }
}
}
@@ -3015,46 +3054,58 @@
% Then we define the 24 variants beginning with |N|.
% \begin{macrocode}
\@@_tmp:w { set } { Nn } { Npn }
+\@@_tmp:w { set } { Ne } { Npe }
\@@_tmp:w { set } { Nx } { Npx }
\@@_tmp:w { set_nopar } { Nn } { Npn }
+\@@_tmp:w { set_nopar } { Ne } { Npe }
\@@_tmp:w { set_nopar } { Nx } { Npx }
\@@_tmp:w { set_protected } { Nn } { Npn }
+\@@_tmp:w { set_protected } { Ne } { Npe }
\@@_tmp:w { set_protected } { Nx } { Npx }
\@@_tmp:w { set_protected_nopar } { Nn } { Npn }
+\@@_tmp:w { set_protected_nopar } { Ne } { Npe }
\@@_tmp:w { set_protected_nopar } { Nx } { Npx }
\@@_tmp:w { gset } { Nn } { Npn }
+\@@_tmp:w { gset } { Ne } { Npe }
\@@_tmp:w { gset } { Nx } { Npx }
\@@_tmp:w { gset_nopar } { Nn } { Npn }
+\@@_tmp:w { gset_nopar } { Ne } { Npe }
\@@_tmp:w { gset_nopar } { Nx } { Npx }
\@@_tmp:w { gset_protected } { Nn } { Npn }
+\@@_tmp:w { gset_protected } { Ne } { Npe }
\@@_tmp:w { gset_protected } { Nx } { Npx }
\@@_tmp:w { gset_protected_nopar } { Nn } { Npn }
+\@@_tmp:w { gset_protected_nopar } { Ne } { Npe }
\@@_tmp:w { gset_protected_nopar } { Nx } { Npx }
\@@_tmp:w { new } { Nn } { Npn }
+\@@_tmp:w { new } { Ne } { Npe }
\@@_tmp:w { new } { Nx } { Npx }
\@@_tmp:w { new_nopar } { Nn } { Npn }
+\@@_tmp:w { new_nopar } { Ne } { Npe }
\@@_tmp:w { new_nopar } { Nx } { Npx }
\@@_tmp:w { new_protected } { Nn } { Npn }
+\@@_tmp:w { new_protected } { Ne } { Npe }
\@@_tmp:w { new_protected } { Nx } { Npx }
\@@_tmp:w { new_protected_nopar } { Nn } { Npn }
+\@@_tmp:w { new_protected_nopar } { Ne } { Npe }
\@@_tmp:w { new_protected_nopar } { Nx } { Npx }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[documented-as=\cs_set:Nn]
% {
-% \cs_set:cn , \cs_set:cx ,
-% \cs_set_nopar:cn , \cs_set_nopar:cx ,
-% \cs_set_protected:cn , \cs_set_protected:cx ,
-% \cs_set_protected_nopar:cn , \cs_set_protected_nopar:cx ,
-% \cs_gset:cn , \cs_gset:cx ,
-% \cs_gset_nopar:cn , \cs_gset_nopar:cx ,
-% \cs_gset_protected:cn , \cs_gset_protected:cx ,
-% \cs_gset_protected_nopar:cn , \cs_gset_protected_nopar:cx ,
-% \cs_new:cn , \cs_new:cx ,
-% \cs_new_nopar:cn , \cs_new_nopar:cx ,
-% \cs_new_protected:cn , \cs_new_protected:cx ,
-% \cs_new_protected_nopar:cn , \cs_new_protected_nopar:cx ,
+% \cs_set:cn , \cs_set:ce , \cs_set:cx ,
+% \cs_set_nopar:cn , \cs_set_nopar:ce , \cs_set_nopar:cx ,
+% \cs_set_protected:cn , \cs_set_protected:ce , \cs_set_protected:cx ,
+% \cs_set_protected_nopar:cn , \cs_set_protected_nopar:ce , \cs_set_protected_nopar:cx ,
+% \cs_gset:cn , \cs_gset:ce , \cs_gset:cx ,
+% \cs_gset_nopar:cn , \cs_gset_nopar:ce , \cs_gset_nopar:cx ,
+% \cs_gset_protected:cn , \cs_gset_protected:ce , \cs_gset_protected:cx ,
+% \cs_gset_protected_nopar:cn , \cs_gset_protected_nopar:ce , \cs_gset_protected_nopar:cx ,
+% \cs_new:cn , \cs_new:ce , \cs_new:cx ,
+% \cs_new_nopar:cn , \cs_new_nopar:ce , \cs_new_nopar:cx ,
+% \cs_new_protected:cn , \cs_new_protected:ce , \cs_new_protected:cx ,
+% \cs_new_protected_nopar:cn , \cs_new_protected_nopar:ce , \cs_new_protected_nopar:cx ,
% }
% The 24 |c| variants simply use \cs{exp_args:Nc}.
% \begin{macrocode}
@@ -3067,28 +3118,40 @@
}
}
\@@_tmp:w { set } { n }
+\@@_tmp:w { set } { e }
\@@_tmp:w { set } { x }
\@@_tmp:w { set_nopar } { n }
+\@@_tmp:w { set_nopar } { e }
\@@_tmp:w { set_nopar } { x }
\@@_tmp:w { set_protected } { n }
+\@@_tmp:w { set_protected } { e }
\@@_tmp:w { set_protected } { x }
\@@_tmp:w { set_protected_nopar } { n }
+\@@_tmp:w { set_protected_nopar } { e }
\@@_tmp:w { set_protected_nopar } { x }
\@@_tmp:w { gset } { n }
+\@@_tmp:w { gset } { e }
\@@_tmp:w { gset } { x }
\@@_tmp:w { gset_nopar } { n }
+\@@_tmp:w { gset_nopar } { e }
\@@_tmp:w { gset_nopar } { x }
\@@_tmp:w { gset_protected } { n }
+\@@_tmp:w { gset_protected } { e }
\@@_tmp:w { gset_protected } { x }
\@@_tmp:w { gset_protected_nopar } { n }
+\@@_tmp:w { gset_protected_nopar } { e }
\@@_tmp:w { gset_protected_nopar } { x }
\@@_tmp:w { new } { n }
+\@@_tmp:w { new } { e }
\@@_tmp:w { new } { x }
\@@_tmp:w { new_nopar } { n }
+\@@_tmp:w { new_nopar } { e }
\@@_tmp:w { new_nopar } { x }
\@@_tmp:w { new_protected } { n }
+\@@_tmp:w { new_protected } { e }
\@@_tmp:w { new_protected } { x }
\@@_tmp:w { new_protected_nopar } { n }
+\@@_tmp:w { new_protected_nopar } { e }
\@@_tmp:w { new_protected_nopar } { x }
% \end{macrocode}
% \end{macro}
@@ -3133,7 +3196,7 @@
\cs_if_exist:NTF #1
{#2}
{
- \msg_error:nnx { kernel } { variable-not-defined }
+ \msg_error:nne { kernel } { variable-not-defined }
{ \token_to_str:N #1 }
}
}
@@ -3196,7 +3259,7 @@
{
\group_begin:
\int_set:Nn \tex_escapechar:D { `\\ }
- \exp_args:NNx
+ \exp_args:NNe
\group_end:
#1 { \token_to_str:N #2 = \cs_meaning:N #2 }
}
@@ -3214,7 +3277,7 @@
{ \@@_group_show:NN \int_zero:N 0 }
\cs_new_protected:Npn \@@_group_show:NN #1#2
{
- \use:x
+ \use:e
{
#1 \tex_interactionmode:D
\int_set:Nn \tex_tracingonline:D {#2}
@@ -3247,7 +3310,7 @@
% catcode~$12$. If the token in question isn't a macro, the token
% \cs{scan_stop:} is returned instead.
% \begin{macrocode}
-\use:x
+\use:e
{
\exp_not:n { \cs_new:Npn \@@_prefix_arg_replacement:wN #1 }
\tl_to_str:n { macro : } \exp_not:n { #2 -> #3 \s_@@_stop #4 }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
index aaa4333858e..e300bccc67e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -313,7 +313,7 @@ Type H <return> for immediate help}\def~{\errmessage{%
{
\bool_if:NF \l_@@_expl_bool
{
- \cs_set_protected:Npx \ExplSyntaxOff
+ \cs_set_protected:Npe \ExplSyntaxOff
{
\char_set_catcode:nn { 9 } { \char_value_catcode:n { 9 } }
\char_set_catcode:nn { 32 } { \char_value_catcode:n { 32 } }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
index 34b6ca44efd..dfa6b3c451e 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -1372,7 +1372,7 @@
\group_end:
}
{
- \msg_error:nnx { kernel } { variable-not-defined }
+ \msg_error:nne { kernel } { variable-not-defined }
{ \token_to_str:N #2 }
}
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
index f3a50214254..6e455b099c8 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -129,10 +129,10 @@
%
% \begin{function}[added = 2018-04-01]
% {
-% \tl_build_put_left:Nn, \tl_build_put_left:Nx,
-% \tl_build_gput_left:Nn, \tl_build_gput_left:Nx,
-% \tl_build_put_right:Nn, \tl_build_put_right:Nx,
-% \tl_build_gput_right:Nn, \tl_build_gput_right:Nx,
+% \tl_build_put_left:Nn, \tl_build_put_left:Ne,
+% \tl_build_gput_left:Nn, \tl_build_gput_left:Ne,
+% \tl_build_put_right:Nn, \tl_build_put_right:Ne,
+% \tl_build_gput_right:Nn, \tl_build_gput_right:Ne
% }
% \begin{syntax}
% \cs{tl_build_put_left:Nn} \meta{tl~var} \Arg{tokens}
@@ -198,9 +198,9 @@
% hence in the \texttt{x}-expanding assignment.
% \begin{macrocode}
\cs_new_protected:Npn \seq_set_filter:NNn
- { \@@_set_filter:NNNn \__kernel_tl_set:Nx }
+ { \@@_set_filter:NNNn \__kernel_tl_set:Ne }
\cs_new_protected:Npn \seq_gset_filter:NNn
- { \@@_set_filter:NNNn \__kernel_tl_gset:Nx }
+ { \@@_set_filter:NNNn \__kernel_tl_gset:Ne }
\cs_new_protected:Npn \@@_set_filter:NNNn #1#2#3#4
{
\@@_push_item_def:n { \bool_if:nT {#4} { \@@_wrap_item:n {##1} } }
@@ -231,8 +231,8 @@
% name is that of \meta{tl~var} followed by~|'|. There are between $0$
% and $4$ \cs{exp_end:} to keep track of when \meta{left} and
% \meta{right} should be put into the \meta{next~tl}. The
-% \meta{assignment} is \cs{cs_set_nopar:Npx} if the variable is local,
-% and \cs{cs_gset_nopar:Npx} if it is global.
+% \meta{assignment} is \cs{cs_set_nopar:Npe} if the variable is local,
+% and \cs{cs_gset_nopar:Npe} if it is global.
%
% \begin{macro}{\tl_build_begin:N, \tl_build_gbegin:N}
% \begin{macro}{\@@_build_begin:NN, \@@_build_begin:NNN}
@@ -241,7 +241,7 @@
% derived from |#1| without any external data such as a counter.
% Empty that \meta{next~tl} and setup the structure. The local and
% global versions only differ by a single function
-% \cs[no-index]{cs_(g)set_nopar:Npx} used for all assignments: this is
+% \cs[no-index]{cs_(g)set_nopar:Npe} used for all assignments: this is
% important because only that function is stored in the \meta{tl~var}
% and \meta{next~tl} for subsequent assignments. In principle
% \cs{@@_build_begin:NNN} could use \cs[no-index]{tl_(g)clear_new:N}
@@ -250,9 +250,9 @@
% clear it locally or globally as appropriate.
% \begin{macrocode}
\cs_new_protected:Npn \tl_build_begin:N #1
- { \@@_build_begin:NN \cs_set_nopar:Npx #1 }
+ { \@@_build_begin:NN \cs_set_nopar:Npe #1 }
\cs_new_protected:Npn \tl_build_gbegin:N #1
- { \@@_build_begin:NN \cs_gset_nopar:Npx #1 }
+ { \@@_build_begin:NN \cs_gset_nopar:Npe #1 }
\cs_new_protected:Npn \@@_build_begin:NN #1#2
{ \exp_args:Nc \@@_build_begin:NNN { \cs_to_str:N #2 ' } #2 #1 }
\cs_new_protected:Npn \@@_build_begin:NNN #1#2#3
@@ -283,8 +283,8 @@
%
% \begin{macro}
% {
-% \tl_build_put_right:Nn, \tl_build_put_right:Nx,
-% \tl_build_gput_right:Nn, \tl_build_gput_right:Nx,
+% \tl_build_put_right:Nn, \tl_build_put_right:Ne, \tl_build_put_right:Nx,
+% \tl_build_gput_right:Nn, \tl_build_gput_right:Ne, \tl_build_gput_right:Nx,
% \@@_build_last:NNn, \@@_build_put:nn, \@@_build_put:nw
% }
% Similar to \cs{tl_put_right:Nn}, but apply \cs{exp:w} to |#1|. Most
@@ -299,32 +299,24 @@
% place without ever becoming a macro argument). We use
% \cs{exp_after:wN} rather than some \cs{exp_args:No} to avoid reading
% arguments that are likely very long token lists. We use
-% \cs[no-index]{cs_(g)set_nopar:Npx} rather than
-% \cs[no-index]{tl_(g)set:Nx} partly for the same reason and partly
+% \cs[no-index]{cs_(g)set_nopar:Npe} rather than
+% \cs[no-index]{tl_(g)set:Ne} partly for the same reason and partly
% because the assignments are interrupted by brace tricks, which
% implies that the assignment does not simply set the token list to an
% |x|-expansion of the second argument.
% \begin{macrocode}
\cs_new_protected:Npn \tl_build_put_right:Nn #1#2
{
- \cs_set_nopar:Npx #1
+ \cs_set_nopar:Npe #1
{ \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 #2 } }
}
-\cs_new_protected:Npn \tl_build_put_right:Nx #1#2
- {
- \cs_set_nopar:Npx #1
- { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 } #2 }
- }
+\cs_generate_variant:Nn \tl_build_put_right:Nn { Ne , Nx }
\cs_new_protected:Npn \tl_build_gput_right:Nn #1#2
{
- \cs_gset_nopar:Npx #1
+ \cs_gset_nopar:Npe #1
{ \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 #2 } }
}
-\cs_new_protected:Npn \tl_build_gput_right:Nx #1#2
- {
- \cs_gset_nopar:Npx #1
- { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 } #2 }
- }
+\cs_generate_variant:Nn \tl_build_gput_right:Nn { Ne , Nx }
\cs_new_protected:Npn \@@_build_last:NNn #1#2
{
\if_false: { { \fi:
@@ -350,8 +342,9 @@
%
% \begin{macro}
% {
-% \tl_build_put_left:Nn, \tl_build_put_left:Nx,
-% \tl_build_gput_left:Nn, \tl_build_gput_left:Nx, \@@_build_put_left:NNn
+% \tl_build_put_left:Nn, \tl_build_put_left:Ne, \tl_build_put_left:Nx,
+% \tl_build_gput_left:Nn, \tl_build_gput_left:Ne, \tl_build_gput_left:Nx,
+% \@@_build_put_left:NNn
% }
% See \cs{tl_build_put_right:Nn} for all the machinery. We could
% easily provide \cs[no-index]{tl_build_put_left_right:Nnn}, by just
@@ -359,11 +352,11 @@
% |x|-expanding assignment.
% \begin{macrocode}
\cs_new_protected:Npn \tl_build_put_left:Nn #1
- { \@@_build_put_left:NNn \cs_set_nopar:Npx #1 }
-\cs_generate_variant:Nn \tl_build_put_left:Nn { Nx }
+ { \@@_build_put_left:NNn \cs_set_nopar:Npe #1 }
+\cs_generate_variant:Nn \tl_build_put_left:Nn { Ne , Nx }
\cs_new_protected:Npn \tl_build_gput_left:Nn #1
- { \@@_build_put_left:NNn \cs_gset_nopar:Npx #1 }
-\cs_generate_variant:Nn \tl_build_gput_left:Nn { Nx }
+ { \@@_build_put_left:NNn \cs_gset_nopar:Npe #1 }
+\cs_generate_variant:Nn \tl_build_gput_left:Nn { Ne , Nx }
\cs_new_protected:Npn \@@_build_put_left:NNn #1#2#3
{
#1 #2
@@ -389,7 +382,7 @@
% trick to wrap all the \meta{right} parts together.
% \begin{macrocode}
\cs_new_protected:Npn \tl_build_get:NN
- { \@@_build_get:NNN \__kernel_tl_set:Nx }
+ { \@@_build_get:NNN \__kernel_tl_set:Ne }
\cs_new_protected:Npn \@@_build_get:NNN #1#2#3
{ #1 #3 { \if_false: { \fi: \exp_after:wN \@@_build_get:w #2 } } }
\cs_new:Npn \@@_build_get:w #1 \@@_build_last:NNn #2#3#4
@@ -410,16 +403,16 @@
% Get the data then clear the \meta{next~tl} recursively until finding
% an empty one. It is perhaps wasteful to repeatedly use
% \cs{cs_to_str:N}. The local/global scope is checked by
-% \cs{tl_set:Nx} or \cs{tl_gset:Nx}.
+% \cs{tl_set:Ne} or \cs{tl_gset:Ne}.
% \begin{macrocode}
\cs_new_protected:Npn \tl_build_end:N #1
{
- \@@_build_get:NNN \__kernel_tl_set:Nx #1 #1
+ \@@_build_get:NNN \__kernel_tl_set:Ne #1 #1
\exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_clear:N
}
\cs_new_protected:Npn \tl_build_gend:N #1
{
- \@@_build_get:NNN \__kernel_tl_gset:Nx #1 #1
+ \@@_build_get:NNN \__kernel_tl_gset:Ne #1 #1
\exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_gclear:N
}
\cs_new_protected:Npn \@@_build_end_loop:NN #1#2
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx b/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
index fc9cdd9e927..4192ec029a3 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3cctab.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -543,7 +543,7 @@
{
\seq_gpop:NNF \g_@@_unused_seq \l_@@_internal_a_tl
{ \@@_begin_aux: }
- \exp_args:Nx \@@_chk_group_begin:n
+ \@@_chk_group_begin:e
{ \@@_nesting_number:N \l_@@_internal_a_tl }
\seq_gpush:NV \g_@@_stack_seq \l_@@_internal_a_tl
\exp_args:NV \@@_gset:n \l_@@_internal_a_tl
@@ -566,7 +566,7 @@
\seq_gpop:NNTF \g_@@_stack_seq \l_@@_internal_a_tl
{
\seq_gpush:NV \g_@@_unused_seq \l_@@_internal_a_tl
- \exp_args:Nx \@@_chk_group_end:n
+ \exp_args:Ne \@@_chk_group_end:n
{ \@@_nesting_number:N \l_@@_internal_a_tl }
\@@_select:N \l_@@_internal_a_tl
}
@@ -575,7 +575,8 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_chk_group_begin:n,\@@_chk_group_end:n}
+% \begin{macro}
+% {\@@_chk_group_begin:n,\@@_chk_group_begin:e, \@@_chk_group_end:n}
% Catcode tables are not allowed to be intermixed with groups, so here
% we check that they are properly nested regarding \TeX{} groups.
% \cs{@@_chk_group_begin:n} stores the current group level in a stack,
@@ -636,10 +637,11 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_chk_group_begin:n #1
{
- \seq_gpush:Nx \g_@@_group_seq
+ \seq_gpush:Ne \g_@@_group_seq
{ \int_use:N \tex_currentgrouplevel:D }
\cs_set_eq:cN { @@_group_ #1 _chk: } \prg_do_nothing:
}
+\cs_generate_variant:Nn \@@_chk_group_begin:n { e }
\cs_new_protected:Npn \@@_chk_group_end:n #1
{
\seq_gpop:NN \g_@@_group_seq \l_@@_internal_b_tl
@@ -650,7 +652,7 @@
}
{ \cs_if_exist_p:c { @@_group_ #1 _chk: } }
{
- \msg_error:nnx { cctab } { group-mismatch }
+ \msg_error:nne { cctab } { group-mismatch }
{
\int_sign:n
{ \tex_currentgrouplevel:D - \l_@@_internal_b_tl }
@@ -675,10 +677,10 @@
\exp_after:wN \exp_after:wN \exp_after:wN \@@_nesting_number:w
\exp_after:wN \token_to_str:N #1
}
- \use:x
+ \use:e
{
\cs_new:Npn \exp_not:N \@@_nesting_number:w
- ##1 \tl_to_str:n { g_@@_ } ##2 \tl_to_str:n { _cctab } {##2}
+ #1 \tl_to_str:n { g_@@_ } #2 \tl_to_str:n { _cctab } {#2}
}
}
% \end{macrocode}
@@ -754,13 +756,13 @@
\@@_chk_if_valid_aux:NTF #1
{ \prg_return_true: }
{
- \msg_error:nnx { cctab } { invalid-cctab }
+ \msg_error:nne { cctab } { invalid-cctab }
{ \token_to_str:N #1 }
\prg_return_false:
}
}
{
- \msg_error:nnx { kernel } { command-not-defined }
+ \msg_error:nne { kernel } { command-not-defined }
{ \token_to_str:N #1 }
\prg_return_false:
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
index 0eaac6a532c..8fc2f6870bd 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -123,8 +123,8 @@
%
% \begin{function}[added = 2014-07-05]
% {
-% \clist_const:Nn, \clist_const:Nx,
-% \clist_const:cn, \clist_const:cx
+% \clist_const:Nn, \clist_const:Ne,
+% \clist_const:cn, \clist_const:ce
% }
% \begin{syntax}
% \cs{clist_const:Nn} \meta{clist~var} \Arg{comma list}
@@ -216,14 +216,14 @@
%
% \begin{function}[added = 2011-09-06]
% {
-% \clist_set:Nn, \clist_set:NV,
-% \clist_set:No, \clist_set:Nx,
-% \clist_set:cn, \clist_set:cV,
-% \clist_set:co, \clist_set:cx,
-% \clist_gset:Nn, \clist_gset:NV,
-% \clist_gset:No, \clist_gset:Nx,
-% \clist_gset:cn, \clist_gset:cV,
-% \clist_gset:co, \clist_gset:cx
+% \clist_set:Nn, \clist_set:NV, \clist_set:Ne,
+% \clist_set:No,
+% \clist_set:cn, \clist_set:cV, \clist_set:ce,
+% \clist_set:co,
+% \clist_gset:Nn, \clist_gset:NV, \clist_gset:Ne,
+% \clist_gset:No,
+% \clist_gset:cn, \clist_gset:cV, \clist_gset:ce,
+% \clist_gset:co
% }
% \begin{syntax}
% \cs{clist_set:Nn} \meta{clist~var} |{|\meta{item_1},\ldots{},\meta{item_n}|}|
@@ -241,17 +241,17 @@
% \begin{function}[updated = 2011-09-05]
% {
% \clist_put_left:Nn, \clist_put_left:NV,
-% \clist_put_left:Nv,
-% \clist_put_left:No, \clist_put_left:Nx,
+% \clist_put_left:Nv, \clist_put_left:Ne,
+% \clist_put_left:No,
% \clist_put_left:cn, \clist_put_left:cV,
-% \clist_put_left:cv,
-% \clist_put_left:co, \clist_put_left:cx,
+% \clist_put_left:cv, \clist_put_left:ce,
+% \clist_put_left:co,
% \clist_gput_left:Nn, \clist_gput_left:NV,
-% \clist_gput_left:Nv,
-% \clist_gput_left:No, \clist_gput_left:Nx,
+% \clist_gput_left:Nv, \clist_gput_left:Ne,
+% \clist_gput_left:No,
% \clist_gput_left:cn, \clist_gput_left:cV,
-% \clist_gput_left:cv,
-% \clist_gput_left:co, \clist_gput_left:cx
+% \clist_gput_left:cv, \clist_gput_left:ce,
+% \clist_gput_left:co
% }
% \begin{syntax}
% \cs{clist_put_left:Nn} \meta{clist~var} |{|\meta{item_1},\ldots{},\meta{item_n}|}|
@@ -268,17 +268,17 @@
% \begin{function}[updated = 2011-09-05]
% {
% \clist_put_right:Nn, \clist_put_right:NV,
-% \clist_put_right:Nv,
-% \clist_put_right:No, \clist_put_right:Nx,
+% \clist_put_right:Nv, \clist_put_right:Ne,
+% \clist_put_right:No,
% \clist_put_right:cn, \clist_put_right:cV,
-% \clist_put_right:cv,
-% \clist_put_right:co, \clist_put_right:cx,
+% \clist_put_right:cv, \clist_put_right:ce,
+% \clist_put_right:co,
% \clist_gput_right:Nn, \clist_gput_right:NV,
-% \clist_gput_right:Nv,
-% \clist_gput_right:No, \clist_gput_right:Nx,
+% \clist_gput_right:Nv, \clist_gput_right:Ne,
+% \clist_gput_right:No,
% \clist_gput_right:cn, \clist_gput_right:cV,
-% \clist_gput_right:cv,
-% \clist_gput_right:co, \clist_gput_right:cx
+% \clist_gput_right:cv, \clist_gput_right:ce,
+% \clist_gput_right:co
% }
% \begin{syntax}
% \cs{clist_put_right:Nn} \meta{clist~var} |{|\meta{item_1},\ldots{},\meta{item_n}|}|
@@ -444,7 +444,7 @@
% \texttt{n}-type comma lists.
%
% \begin{function}[rEXP, updated = 2012-06-29]
-% {\clist_map_function:NN, \clist_map_function:cN, \clist_map_function:nN}
+% {\clist_map_function:NN, \clist_map_function:cN, \clist_map_function:nN, \clist_map_function:eN}
% \begin{syntax}
% \cs{clist_map_function:NN} \meta{clist~var} \meta{function}
% \end{syntax}
@@ -548,7 +548,7 @@
% \end{function}
%
% \begin{function}[EXP, added = 2012-07-13]
-% {\clist_count:N, \clist_count:c, \clist_count:n}
+% {\clist_count:N, \clist_count:c, \clist_count:n, \clist_count:e}
% \begin{syntax}
% \cs{clist_count:N} \meta{clist~var}
% \end{syntax}
@@ -706,10 +706,10 @@
%
% \begin{function}
% {
-% \clist_push:Nn, \clist_push:NV, \clist_push:No, \clist_push:Nx,
-% \clist_push:cn, \clist_push:cV, \clist_push:co, \clist_push:cx,
-% \clist_gpush:Nn, \clist_gpush:NV, \clist_gpush:No, \clist_gpush:Nx,
-% \clist_gpush:cn, \clist_gpush:cV, \clist_gpush:co, \clist_gpush:cx
+% \clist_push:Nn, \clist_push:NV, \clist_push:No,
+% \clist_push:cn, \clist_push:cV, \clist_push:co,
+% \clist_gpush:Nn, \clist_gpush:NV, \clist_gpush:No,
+% \clist_gpush:cn, \clist_gpush:cV, \clist_gpush:co,
% }
% \begin{syntax}
% \cs{clist_push:Nn} \meta{clist~var} \Arg{items}
@@ -722,7 +722,7 @@
% \section{Using a single item}
%
% \begin{function}[added = 2014-07-17, EXP]
-% {\clist_item:Nn, \clist_item:cn, \clist_item:nn}
+% {\clist_item:Nn, \clist_item:cn, \clist_item:nn, \clist_item:en}
% \begin{syntax}
% \cs{clist_item:Nn} \meta{clist~var} \Arg{int expr}
% \end{syntax}
@@ -984,15 +984,16 @@
%
% \begin{macro}
% {
-% \clist_const:Nn, \clist_const:cn,
-% \clist_const:Nx, \clist_const:cx
+% \clist_const:Nn, \clist_const:Ne, \clist_const:Nx,
+% \clist_const:cn, \clist_const:ce, \clist_const:cx
% }
% Creating and initializing a constant comma list is done by
% sanitizing all items (stripping spaces and braces).
% \begin{macrocode}
\cs_new_protected:Npn \clist_const:Nn #1#2
- { \tl_const:Nx #1 { \@@_sanitize:n {#2} } }
-\cs_generate_variant:Nn \clist_const:Nn { c , Nx , cx }
+ { \tl_const:Ne #1 { \@@_sanitize:n {#2} } }
+\cs_generate_variant:Nn \clist_const:Nn { Ne , c , ce }
+\cs_generate_variant:Nn \clist_const:Nn { Nx , cx }
% \end{macrocode}
% \end{macro}
%
@@ -1066,9 +1067,9 @@
% in the case of an empty comma-list.
% \begin{macrocode}
\cs_new_protected:Npn \clist_set_from_seq:NN
- { \@@_set_from_seq:NNNN \clist_clear:N \__kernel_tl_set:Nx }
+ { \@@_set_from_seq:NNNN \clist_clear:N \__kernel_tl_set:Ne }
\cs_new_protected:Npn \clist_gset_from_seq:NN
- { \@@_set_from_seq:NNNN \clist_gclear:N \__kernel_tl_gset:Nx }
+ { \@@_set_from_seq:NNNN \clist_gclear:N \__kernel_tl_gset:Ne }
\cs_new_protected:Npn \@@_set_from_seq:NNNN #1#2#3#4
{
\seq_if_empty:NTF #4
@@ -1107,9 +1108,9 @@
% a little work to do.
% \begin{macrocode}
\cs_new_protected:Npn \clist_concat:NNN
- { \@@_concat:NNNN \__kernel_tl_set:Nx }
+ { \@@_concat:NNNN \__kernel_tl_set:Ne }
\cs_new_protected:Npn \clist_gconcat:NNN
- { \@@_concat:NNNN \__kernel_tl_gset:Nx }
+ { \@@_concat:NNNN \__kernel_tl_gset:Ne }
\cs_new_protected:Npn \@@_concat:NNNN #1#2#3#4
{
#1 #2
@@ -1140,47 +1141,49 @@
%
% \begin{macro}
% {
-% \clist_set:Nn, \clist_set:NV,
-% \clist_set:No, \clist_set:Nx,
-% \clist_set:cn, \clist_set:cV,
-% \clist_set:co, \clist_set:cx
+% \clist_set:Nn, \clist_set:NV, \clist_set:Ne,
+% \clist_set:No, \clist_set:Nx,
+% \clist_set:cn, \clist_set:cV, \clist_set:ce,
+% \clist_set:co, \clist_set:cx
% }
% \begin{macro}
% {
-% \clist_gset:Nn, \clist_gset:NV,
+% \clist_gset:Nn, \clist_gset:NV, \clist_gset:Ne,
% \clist_gset:No, \clist_gset:Nx,
-% \clist_gset:cn, \clist_gset:cV,
-% \clist_gset:co, \clist_gset:cx
+% \clist_gset:cn, \clist_gset:cV, \clist_gset:ce,
+% \clist_gset:co, \clist_gset:cx,
% }
% \begin{macrocode}
\cs_new_protected:Npn \clist_set:Nn #1#2
- { \__kernel_tl_set:Nx #1 { \@@_sanitize:n {#2} } }
+ { \__kernel_tl_set:Ne #1 { \@@_sanitize:n {#2} } }
\cs_new_protected:Npn \clist_gset:Nn #1#2
- { \__kernel_tl_gset:Nx #1 { \@@_sanitize:n {#2} } }
-\cs_generate_variant:Nn \clist_set:Nn { NV , No , Nx , c , cV , co , cx }
-\cs_generate_variant:Nn \clist_gset:Nn { NV , No , Nx , c , cV , co , cx }
+ { \__kernel_tl_gset:Ne #1 { \@@_sanitize:n {#2} } }
+\cs_generate_variant:Nn \clist_set:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \clist_set:Nn { No , Nx , co , cx }
+\cs_generate_variant:Nn \clist_gset:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \clist_gset:Nn { No , Nx , co , cx }
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}
% {
-% \clist_put_left:Nn, \clist_put_left:NV,
-% \clist_put_left:Nv,
-% \clist_put_left:No, \clist_put_left:Nx,
-% \clist_put_left:cn, \clist_put_left:cV,
-% \clist_put_left:cv,
-% \clist_put_left:co, \clist_put_left:cx
+% \clist_put_left:Nn, \clist_put_left:NV,
+% \clist_put_left:Nv, \clist_put_left:Ne,
+% \clist_put_left:No, \clist_put_left:Nx,
+% \clist_put_left:cn, \clist_put_left:cV,
+% \clist_put_left:cv, \clist_put_left:ce,
+% \clist_put_left:co, \clist_put_left:cx,
% }
% \UnitTested
% \begin{macro}
% {
% \clist_gput_left:Nn, \clist_gput_left:NV,
-% \clist_gput_left:Nv,
+% \clist_gput_left:Nv, \clist_gput_left:Ne,
% \clist_gput_left:No, \clist_gput_left:Nx,
% \clist_gput_left:cn, \clist_gput_left:cV,
-% \clist_gput_left:cv,
-% \clist_gput_left:co, \clist_gput_left:cx
+% \clist_gput_left:cv, \clist_gput_left:ce,
+% \clist_gput_left:co, \clist_gput_left:cx,
% }
% \UnitTested
% \begin{macro}{\@@_put_left:NNNn}
@@ -1197,10 +1200,10 @@
#2 \l_@@_internal_clist {#4}
#1 #3 \l_@@_internal_clist #3
}
-\cs_generate_variant:Nn \clist_put_left:Nn { NV , Nv , No , Nx }
-\cs_generate_variant:Nn \clist_put_left:Nn { c , cV , cv , co , cx }
-\cs_generate_variant:Nn \clist_gput_left:Nn { NV , Nv , No , Nx }
-\cs_generate_variant:Nn \clist_gput_left:Nn { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \clist_put_left:Nn { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \clist_put_left:Nn { No , Nx , co , cx }
+\cs_generate_variant:Nn \clist_gput_left:Nn { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \clist_gput_left:Nn { No , Nx , co , cx }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1209,21 +1212,21 @@
% \begin{macro}
% {
% \clist_put_right:Nn, \clist_put_right:NV,
-% \clist_put_right:Nv,
+% \clist_put_right:Nv, \clist_put_right:Ne,
% \clist_put_right:No, \clist_put_right:Nx,
% \clist_put_right:cn, \clist_put_right:cV,
-% \clist_put_right:cv,
+% \clist_put_right:cv, \clist_put_right:ce,
% \clist_put_right:co, \clist_put_right:cx
% }
% \UnitTested
% \begin{macro}
% {
% \clist_gput_right:Nn, \clist_gput_right:NV,
-% \clist_gput_right:Nv,
+% \clist_gput_right:Nv, \clist_gput_right:Ne,
% \clist_gput_right:No, \clist_gput_right:Nx,
% \clist_gput_right:cn, \clist_gput_right:cV,
-% \clist_gput_right:cv,
-% \clist_gput_right:co, \clist_gput_right:cx
+% \clist_gput_right:cv, \clist_gput_right:ce,
+% \clist_gput_right:cx, \clist_gput_right:co
% }
% \UnitTested
% \begin{macro}{\@@_put_right:NNNn}
@@ -1237,10 +1240,14 @@
#2 \l_@@_internal_clist {#4}
#1 #3 #3 \l_@@_internal_clist
}
-\cs_generate_variant:Nn \clist_put_right:Nn { NV , Nv , No , Nx }
-\cs_generate_variant:Nn \clist_put_right:Nn { c , cV , cv , co , cx }
-\cs_generate_variant:Nn \clist_gput_right:Nn { NV , Nv , No , Nx }
-\cs_generate_variant:Nn \clist_gput_right:Nn { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \clist_put_right:Nn
+ { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \clist_put_right:Nn
+ { No , Nx , co , cx }
+\cs_generate_variant:Nn \clist_gput_right:Nn
+ { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \clist_gput_right:Nn
+ { No , Nx , co , cx }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1288,9 +1295,9 @@
% result can safely be an empty comma list.
% \begin{macrocode}
\cs_new_protected:Npn \clist_pop:NN
- { \@@_pop:NNN \__kernel_tl_set:Nx }
+ { \@@_pop:NNN \__kernel_tl_set:Ne }
\cs_new_protected:Npn \clist_gpop:NN
- { \@@_pop:NNN \__kernel_tl_gset:Nx }
+ { \@@_pop:NNN \__kernel_tl_gset:Ne }
\cs_new_protected:Npn \@@_pop:NNN #1#2#3
{
\if_meaning:w #2 \c_empty_clist
@@ -1335,9 +1342,9 @@
}
\prg_generate_conditional_variant:Nnn \clist_get:NN { c } { T , F , TF }
\prg_new_protected_conditional:Npnn \clist_pop:NN #1#2 { T , F , TF }
- { \@@_pop_TF:NNN \__kernel_tl_set:Nx #1 #2 }
+ { \@@_pop_TF:NNN \__kernel_tl_set:Ne #1 #2 }
\prg_new_protected_conditional:Npnn \clist_gpop:NN #1#2 { T , F , TF }
- { \@@_pop_TF:NNN \__kernel_tl_gset:Nx #1 #2 }
+ { \@@_pop_TF:NNN \__kernel_tl_gset:Ne #1 #2 }
\cs_new_protected:Npn \@@_pop_TF:NNN #1#2#3
{
\if_meaning:w #2 \c_empty_clist
@@ -1357,32 +1364,20 @@
%
% \begin{macro}{
% \clist_push:Nn, \clist_push:NV, \clist_push:No, \clist_push:Nx,
-% \clist_push:cn, \clist_push:cV, \clist_push:co, \clist_push:cx
+% \clist_push:cn, \clist_push:cV, \clist_push:co, \clist_push:cx,
% }
% \UnitTested
% \begin{macro}{
% \clist_gpush:Nn, \clist_gpush:NV, \clist_gpush:No, \clist_gpush:Nx,
-% \clist_gpush:cn, \clist_gpush:cV, \clist_gpush:co, \clist_gpush:cx
+% \clist_gpush:cn, \clist_gpush:cV, \clist_gpush:co, \clist_gpush:cx,
% }
% \UnitTested
% Pushing to a comma list is the same as adding on the left.
% \begin{macrocode}
\cs_new_eq:NN \clist_push:Nn \clist_put_left:Nn
-\cs_new_eq:NN \clist_push:NV \clist_put_left:NV
-\cs_new_eq:NN \clist_push:No \clist_put_left:No
-\cs_new_eq:NN \clist_push:Nx \clist_put_left:Nx
-\cs_new_eq:NN \clist_push:cn \clist_put_left:cn
-\cs_new_eq:NN \clist_push:cV \clist_put_left:cV
-\cs_new_eq:NN \clist_push:co \clist_put_left:co
-\cs_new_eq:NN \clist_push:cx \clist_put_left:cx
+\cs_generate_variant:Nn \clist_push:Nn { NV , No , Nx , c , cV , co , cx }
\cs_new_eq:NN \clist_gpush:Nn \clist_gput_left:Nn
-\cs_new_eq:NN \clist_gpush:NV \clist_gput_left:NV
-\cs_new_eq:NN \clist_gpush:No \clist_gput_left:No
-\cs_new_eq:NN \clist_gpush:Nx \clist_gput_left:Nx
-\cs_new_eq:NN \clist_gpush:cn \clist_gput_left:cn
-\cs_new_eq:NN \clist_gpush:cV \clist_gput_left:cV
-\cs_new_eq:NN \clist_gpush:co \clist_gput_left:co
-\cs_new_eq:NN \clist_gpush:cx \clist_gput_left:cx
+\cs_generate_variant:Nn \clist_gpush:Nn { NV , No , Nx , c , cV , co , cx }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1415,7 +1410,7 @@
{
\clist_if_in:NnF \l_@@_internal_remove_clist {##1}
{
- \tl_put_right:Nx \l_@@_internal_remove_clist
+ \tl_put_right:Ne \l_@@_internal_remove_clist
{
\clist_if_empty:NF \l_@@_internal_remove_clist { , }
\@@_if_wrap:nTF {##1} { \exp_not:n { {##1} } } { \exp_not:n {##1} }
@@ -1478,9 +1473,9 @@
% the second step removes it.
% \begin{macrocode}
\cs_new_protected:Npn \clist_remove_all:Nn
- { \@@_remove_all:NNNn \clist_set_from_seq:NN \__kernel_tl_set:Nx }
+ { \@@_remove_all:NNNn \clist_set_from_seq:NN \__kernel_tl_set:Ne }
\cs_new_protected:Npn \clist_gremove_all:Nn
- { \@@_remove_all:NNNn \clist_gset_from_seq:NN \__kernel_tl_gset:Nx }
+ { \@@_remove_all:NNNn \clist_gset_from_seq:NN \__kernel_tl_gset:Ne }
\cs_new_protected:Npn \@@_remove_all:NNNn #1#2#3#4
{
\@@_if_wrap:nTF {#4}
@@ -1534,9 +1529,9 @@
% \texttt{N}-type comma lists, but the slow-down is not too bad.
% \begin{macrocode}
\cs_new_protected:Npn \clist_reverse:N #1
- { \__kernel_tl_set:Nx #1 { \exp_args:No \clist_reverse:n {#1} } }
+ { \__kernel_tl_set:Ne #1 { \exp_args:No \clist_reverse:n {#1} } }
\cs_new_protected:Npn \clist_greverse:N #1
- { \__kernel_tl_gset:Nx #1 { \exp_args:No \clist_reverse:n {#1} } }
+ { \__kernel_tl_gset:Ne #1 { \exp_args:No \clist_reverse:n {#1} } }
\cs_generate_variant:Nn \clist_reverse:N { c }
\cs_generate_variant:Nn \clist_greverse:N { c }
% \end{macrocode}
@@ -1657,7 +1652,7 @@
{
\@@_if_wrap:nTF {#2}
{
- \cs_set:Npx \@@_tmp:w ##1
+ \cs_set:Npe \@@_tmp:w ##1
{
\exp_not:N \tl_if_eq:nnT {##1}
\exp_not:n
@@ -1726,7 +1721,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\clist_map_function:nN}
+% \begin{macro}{\clist_map_function:nN, \clist_map_function:eN}
% \UnitTested
% \begin{macro}{\@@_map_function_n:Nn}
% \begin{macro}{\@@_map_unbrace:wn}
@@ -1745,6 +1740,7 @@
\s_@@_stop \clist_map_break: ,
\prg_break_point:Nn \clist_map_break: { }
}
+\cs_generate_variant:Nn \clist_map_function:nN { e }
\cs_new:Npn \@@_map_function_n:Nn #1 #2
{
\@@_use_none_delimit_by_s_stop:w #2 \s_@@_stop
@@ -1893,7 +1889,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\clist_count:N, \clist_count:c, \clist_count:n}
+% \begin{macro}{\clist_count:N, \clist_count:c, \clist_count:n, \clist_count:e}
% \begin{macro}{\@@_count:n}
% \begin{macro}{\@@_count:w}
% Counting the items in a comma list is done using the same approach as for
@@ -1933,6 +1929,7 @@
}
}
\exp_args:No \@@_tmp:w \c_space_tl
+\cs_generate_variant:Nn \clist_count:n { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2110,7 +2107,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\clist_item:nn}
+% \begin{macro}{\clist_item:nn, \clist_item:en}
% \begin{macro}{
% \@@_item_n:nw,
% \@@_item_n_loop:nw,
@@ -2130,6 +2127,7 @@
{#1}
\@@_item_n:nw
}
+\cs_generate_variant:Nn \clist_item:nn { e }
\cs_new:Npn \@@_item_n:nw #1
{ \@@_item_n_loop:nw {#1} \prg_do_nothing: }
\cs_new:Npn \@@_item_n_loop:nw #1 #2,
@@ -2188,9 +2186,9 @@
% |#2| serving as a dummy code to prevent a check performed by this
% auxiliary.
% \begin{macrocode}
-\cs_new_protected:Npn \clist_show:N { \@@_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \clist_show:N { \@@_show:NN \msg_show:nneeee }
\cs_generate_variant:Nn \clist_show:N { c }
-\cs_new_protected:Npn \clist_log:N { \@@_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \clist_log:N { \@@_show:NN \msg_log:nneeee }
\cs_generate_variant:Nn \clist_log:N { c }
\cs_new_protected:Npn \@@_show:NN #1#2
{
@@ -2205,7 +2203,7 @@
{ } { }
}
{
- \msg_error:nnxx { clist } { non-clist }
+ \msg_error:nnee { clist } { non-clist }
{ \token_to_str:N #2 } { \tl_to_str:N #2 }
}
}
@@ -2217,8 +2215,8 @@
% A variant of the above: no existence check, empty first argument for
% the message.
% \begin{macrocode}
-\cs_new_protected:Npn \clist_show:n { \@@_show:Nn \msg_show:nnxxxx }
-\cs_new_protected:Npn \clist_log:n { \@@_show:Nn \msg_log:nnxxxx }
+\cs_new_protected:Npn \clist_show:n { \@@_show:Nn \msg_show:nneeee }
+\cs_new_protected:Npn \clist_log:n { \@@_show:Nn \msg_log:nneeee }
\cs_new_protected:Npn \@@_show:Nn #1#2
{
#1 { clist } { show }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
index 2269c6c6869..94824400de0 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -602,7 +602,7 @@
\coffin_if_exist:NTF #1
{ #2 }
{
- \msg_error:nnx { coffin } { unknown }
+ \msg_error:nne { coffin } { unknown }
{ \token_to_str:N #1 }
}
}
@@ -736,7 +736,7 @@
}
#5 #1
\vbox_set_top:Nn \l_@@_internal_box { \vbox_unpack:N #1 }
- \@@_set_pole:Nnx #1 { T }
+ \@@_set_pole:Nne #1 { T }
{
{ 0pt }
{
@@ -749,7 +749,7 @@
\box_clear:N \l_@@_internal_box
}
}
-\cs_new_protected:Npx \@@_set_vertical_aux:
+\cs_new_protected:Npe \@@_set_vertical_aux:
{
\bool_lazy_and:nnT
{ \cs_if_exist_p:N \fmtname }
@@ -834,7 +834,7 @@
#5
#6 #1
\vbox_set_top:Nn \l_@@_internal_box { \vbox_unpack:N #1 }
- \@@_set_pole:Nnx #1 { T }
+ \@@_set_pole:Nne #1 { T }
{
{ 0pt }
{
@@ -949,7 +949,7 @@
\prop_get:cnNF
{ coffin ~ \@@_to_value:N #1 ~ poles } {#2} #3
{
- \msg_error:nnxx { coffin } { unknown-pole }
+ \msg_error:nnee { coffin } { unknown-pole }
{ \exp_not:n {#2} } { \token_to_str:N #1 }
\tl_set:Nn #3 { { 0pt } { 0pt } { 0pt } { 0pt } }
}
@@ -989,17 +989,17 @@
% \coffin_gset_vertical_pole:Nnn, \coffin_gset_vertical_pole:cnn
% }
% \begin{macro}{\@@_set_vertical_pole:NnnN}
-% \begin{macro}{\@@_set_pole:Nnn, \@@_set_pole:Nnx}
+% \begin{macro}{\@@_set_pole:Nnn, \@@_set_pole:Nne}
% Setting the pole of a coffin at the user/designer level requires a
% bit more care. The idea here is to provide a reasonable interface to
% the system, then to do the setting with full expansion. The
% three-argument version is used internally to do a direct setting.
% \begin{macrocode}
\cs_new_protected:Npn \coffin_set_horizontal_pole:Nnn #1#2#3
- { \@@_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_put:cnx }
+ { \@@_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_put:cne }
\cs_generate_variant:Nn \coffin_set_horizontal_pole:Nnn { c }
\cs_new_protected:Npn \coffin_gset_horizontal_pole:Nnn #1#2#3
- { \@@_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_gput:cnx }
+ { \@@_set_horizontal_pole:NnnN #1 {#2} {#3} \prop_gput:cne }
\cs_generate_variant:Nn \coffin_gset_horizontal_pole:Nnn { c }
\cs_new_protected:Npn \@@_set_horizontal_pole:NnnN #1#2#3#4
{
@@ -1014,10 +1014,10 @@
}
}
\cs_new_protected:Npn \coffin_set_vertical_pole:Nnn #1#2#3
- { \@@_set_vertical_pole:NnnN #1 {#2} {#3} \prop_put:cnx }
+ { \@@_set_vertical_pole:NnnN #1 {#2} {#3} \prop_put:cne }
\cs_generate_variant:Nn \coffin_set_vertical_pole:Nnn { c }
\cs_new_protected:Npn \coffin_gset_vertical_pole:Nnn #1#2#3
- { \@@_set_vertical_pole:NnnN #1 {#2} {#3} \prop_gput:cnx }
+ { \@@_set_vertical_pole:NnnN #1 {#2} {#3} \prop_gput:cne }
\cs_generate_variant:Nn \coffin_gset_vertical_pole:Nnn { c }
\cs_new_protected:Npn \@@_set_vertical_pole:NnnN #1#2#3#4
{
@@ -1036,7 +1036,7 @@
\prop_put:cnn { coffin ~ \@@_to_value:N #1 ~ poles }
{#2} {#3}
}
-\cs_generate_variant:Nn \@@_set_pole:Nnn { Nnx }
+\cs_generate_variant:Nn \@@_set_pole:Nnn { Nne }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1070,9 +1070,9 @@
% of the underlying \TeX{} box.
% \begin{macrocode}
\cs_new_protected:Npn \@@_update_corners:N #1
- { \@@_update_corners:NN #1 \prop_put:Nnx }
+ { \@@_update_corners:NN #1 \prop_put:Nne }
\cs_new_protected:Npn \@@_gupdate_corners:N #1
- { \@@_update_corners:NN #1 \prop_gput:Nnx }
+ { \@@_update_corners:NN #1 \prop_gput:Nne }
\cs_new_protected:Npn \@@_update_corners:NN #1#2
{
\exp_args:Nc \@@_update_corners:NNN
@@ -1115,9 +1115,9 @@
% coffins.
% \begin{macrocode}
\cs_new_protected:Npn \@@_update_poles:N #1
- { \@@_update_poles:NN #1 \prop_put:Nnx }
+ { \@@_update_poles:NN #1 \prop_put:Nne }
\cs_new_protected:Npn \@@_gupdate_poles:N #1
- { \@@_update_poles:NN #1 \prop_gput:Nnx }
+ { \@@_update_poles:NN #1 \prop_gput:Nne }
\cs_new_protected:Npn \@@_update_poles:NN #1#2
{
\exp_args:Nc \@@_update_poles:NNN
@@ -1277,7 +1277,7 @@
% more complexity, we now work out both slopes and pass to an auxiliary.
% \begin{macrocode}
{
- \use:x
+ \use:e
{
\@@_calculate_intersection:nnnnnn
{ \dim_to_fp:n {#4} / \dim_to_fp:n {#3} }
@@ -1494,17 +1494,17 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_set_bounding:N #1
{
- \prop_put:Nnx \l_@@_bounding_prop { tl }
+ \prop_put:Nne \l_@@_bounding_prop { tl }
{ { 0pt } { \dim_eval:n { \box_ht:N #1 } } }
- \prop_put:Nnx \l_@@_bounding_prop { tr }
+ \prop_put:Nne \l_@@_bounding_prop { tr }
{
{ \dim_eval:n { \box_wd:N #1 } }
{ \dim_eval:n { \box_ht:N #1 } }
}
\dim_set:Nn \l_@@_internal_dim { -\box_dp:N #1 }
- \prop_put:Nnx \l_@@_bounding_prop { bl }
+ \prop_put:Nne \l_@@_bounding_prop { bl }
{ { 0pt } { \dim_use:N \l_@@_internal_dim } }
- \prop_put:Nnx \l_@@_bounding_prop { br }
+ \prop_put:Nne \l_@@_bounding_prop { br }
{
{ \dim_eval:n { \box_wd:N #1 } }
{ \dim_use:N \l_@@_internal_dim }
@@ -1523,13 +1523,13 @@
\cs_new_protected:Npn \@@_rotate_bounding:nnn #1#2#3
{
\@@_rotate_vector:nnNN {#2} {#3} \l_@@_x_dim \l_@@_y_dim
- \prop_put:Nnx \l_@@_bounding_prop {#1}
+ \prop_put:Nne \l_@@_bounding_prop {#1}
{ { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } }
}
\cs_new_protected:Npn \@@_rotate_corner:Nnnn #1#2#3#4
{
\@@_rotate_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim
- \prop_put:Nnx \l_@@_corners_prop {#2}
+ \prop_put:Nne \l_@@_corners_prop {#2}
{ { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } }
}
% \end{macrocode}
@@ -1546,7 +1546,7 @@
\@@_rotate_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim
\@@_rotate_vector:nnNN {#5} {#6}
\l_@@_x_prime_dim \l_@@_y_prime_dim
- \prop_put:Nnx \l_@@_poles_prop {#2}
+ \prop_put:Nne \l_@@_poles_prop {#2}
{
{ \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim }
{ \dim_use:N \l_@@_x_prime_dim }
@@ -1647,7 +1647,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_shift_corner:Nnnn #1#2#3#4
{
- \prop_put:Nnx \l_@@_corners_prop {#2}
+ \prop_put:Nne \l_@@_corners_prop {#2}
{
{ \dim_eval:n { #3 - \l_@@_left_corner_dim } }
{ \dim_eval:n { #4 - \l_@@_bottom_corner_dim } }
@@ -1655,7 +1655,7 @@
}
\cs_new_protected:Npn \@@_shift_pole:Nnnnnn #1#2#3#4#5#6
{
- \prop_put:Nnx \l_@@_poles_prop {#2}
+ \prop_put:Nne \l_@@_poles_prop {#2}
{
{ \dim_eval:n { #3 - \l_@@_left_corner_dim } }
{ \dim_eval:n { #4 - \l_@@_bottom_corner_dim } }
@@ -1821,13 +1821,13 @@
\cs_new_protected:Npn \@@_scale_corner:Nnnn #1#2#3#4
{
\@@_scale_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim
- \prop_put:Nnx \l_@@_corners_prop {#2}
+ \prop_put:Nne \l_@@_corners_prop {#2}
{ { \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim } }
}
\cs_new_protected:Npn \@@_scale_pole:Nnnnnn #1#2#3#4#5#6
{
\@@_scale_vector:nnNN {#3} {#4} \l_@@_x_dim \l_@@_y_dim
- \prop_put:Nnx \l_@@_poles_prop {#2}
+ \prop_put:Nne \l_@@_poles_prop {#2}
{
{ \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim }
{#5} {#6}
@@ -1844,14 +1844,14 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_x_shift_corner:Nnnn #1#2#3#4
{
- \prop_put:Nnx \l_@@_corners_prop {#2}
+ \prop_put:Nne \l_@@_corners_prop {#2}
{
{ \dim_eval:n { #3 + \box_wd:N #1 } } {#4}
}
}
\cs_new_protected:Npn \@@_x_shift_pole:Nnnnnn #1#2#3#4#5#6
{
- \prop_put:Nnx \l_@@_poles_prop {#2}
+ \prop_put:Nne \l_@@_poles_prop {#2}
{
{ \dim_eval:n { #3 + \box_wd:N #1 } } {#4}
{#5} {#6}
@@ -2068,7 +2068,7 @@
\tl_if_in:nnTF {#2} { - }
{ \tl_set:Nn \l_@@_internal_tl { {#2} } }
{ \tl_set:Nn \l_@@_internal_tl { { #1 - #2 } } }
- \exp_last_unbraced:NNo \@@_set_pole:Nnx \l_@@_aligned_coffin
+ \exp_last_unbraced:NNo \@@_set_pole:Nne \l_@@_aligned_coffin
{ \l_@@_internal_tl }
{
{ \dim_use:N \l_@@_x_dim } { \dim_use:N \l_@@_y_dim }
@@ -2092,7 +2092,7 @@
}
\cs_new_protected:Npn \@@_offset_corner:Nnnnn #1#2#3#4#5#6
{
- \prop_put:cnx
+ \prop_put:cne
{
coffin ~ \@@_to_value:N \l_@@_aligned_coffin
\c_space_tl corners
@@ -2130,11 +2130,11 @@
{
\dim_compare:nNnTF {#2} < {#6}
{
- \@@_set_pole:Nnx #9 { T }
+ \@@_set_pole:Nne #9 { T }
{ { 0pt } {#6} { 1000pt } { 0pt } }
}
{
- \@@_set_pole:Nnx #9 { T }
+ \@@_set_pole:Nne #9 { T }
{ { 0pt } {#2} { 1000pt } { 0pt } }
}
}
@@ -2142,11 +2142,11 @@
{
\dim_compare:nNnTF {#2} < {#6}
{
- \@@_set_pole:Nnx #9 { B }
+ \@@_set_pole:Nne #9 { B }
{ { 0pt } {#2} { 1000pt } { 0pt } }
}
{
- \@@_set_pole:Nnx #9 { B }
+ \@@_set_pole:Nne #9 { B }
{ { 0pt } {#6} { 1000pt } { 0pt } }
}
}
@@ -2490,10 +2490,10 @@
% structure then the code complains.
% \begin{macrocode}
\cs_new_protected:Npn \coffin_show_structure:N
- { \@@_show_structure:NN \msg_show:nnxxxx }
+ { \@@_show_structure:NN \msg_show:nneeee }
\cs_generate_variant:Nn \coffin_show_structure:N { c }
\cs_new_protected:Npn \coffin_log_structure:N
- { \@@_show_structure:NN \msg_log:nnxxxx }
+ { \@@_show_structure:NN \msg_log:nneeee }
\cs_generate_variant:Nn \coffin_log_structure:N { c }
\cs_new_protected:Npn \@@_show_structure:NN #1#2
{
@@ -2525,8 +2525,8 @@
% }
% Essentially a combination of \cs{coffin_show_structure:N} and
% \cs{box_show:Nnn}, but we need to avoid having two prompts, so we
-% use \cs{msg_term:nnxxxx} instead of
-% \cs{msg_show:nnxxxx} in the |show| case.
+% use \cs{msg_term:nneeee} instead of
+% \cs{msg_show:nneeee} in the |show| case.
% \begin{macrocode}
\cs_new_protected:Npn \coffin_show:N #1
{ \coffin_show:Nnn #1 \c_max_int \c_max_int }
@@ -2535,10 +2535,10 @@
{ \coffin_log:Nnn #1 \c_max_int \c_max_int }
\cs_generate_variant:Nn \coffin_log:N { c }
\cs_new_protected:Npn \coffin_show:Nnn
- { \@@_show:NNNnn \msg_term:nnxxxx \box_show:Nnn }
+ { \@@_show:NNNnn \msg_term:nneeee \box_show:Nnn }
\cs_generate_variant:Nn \coffin_show:Nnn { c }
\cs_new_protected:Npn \coffin_log:Nnn
- { \@@_show:NNNnn \msg_log:nnxxxx \box_show:Nnn }
+ { \@@_show:NNNnn \msg_log:nneeee \box_show:Nnn }
\cs_generate_variant:Nn \coffin_log:Nnn { c }
\cs_new_protected:Npn \@@_show:NNNnn #1#2#3#4#5
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
index 1453001a2ae..3d225b2d223 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -720,7 +720,7 @@
\cs_generate_variant:Nn \exp_last_unbraced:Nf { c }
\cs_new_protected:Npn \@@_convert:nnnN #1#2#3#4
{
- \tl_set:Nx #4
+ \tl_set:Ne #4
{
\cs_if_exist_use:cTF { @@_convert_ #1 _ #2 :w }
{ #3 \s_@@_stop }
@@ -850,11 +850,11 @@
% otherwise expands, then starts working through the expression itself.
% At the end, we apply the payload.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_parse:nN #1#2
+\cs_new_protected:Npe \@@_parse:nN #1#2
{
- \tl_set:Nx \exp_not:c { l_@@_named_ . _tl }
+ \tl_set:Ne \exp_not:c { l_@@_named_ . _tl }
{ \exp_not:N \@@_model:N \exp_not:N \l_@@_current_tl }
- \prop_put:NVx \exp_not:c { l_@@_named_ . _prop }
+ \prop_put:NVe \exp_not:c { l_@@_named_ . _prop }
\exp_not:c { l_@@_named_ . _tl }
{ \exp_not:N \@@_values:N \exp_not:N \l_@@_current_tl }
\exp_not:N \exp_args:Ne \exp_not:N \@@_parse_aux:nN
@@ -889,14 +889,14 @@
\prop_get:cnNTF
{ l_@@_named_ #3 _prop } {#1}
\l_@@_value_tl
- { \tl_set:Nx #2 { {#1} { \l_@@_value_tl } } }
+ { \tl_set:Ne #2 { {#1} { \l_@@_value_tl } } }
{
\tl_set_eq:Nc \l_@@_model_tl { l_@@_named_ #3 _tl }
\prop_get:cVN { l_@@_named_ #3 _prop } \l_@@_model_tl
\l_@@_value_tl
\@@_convert:nnN
\l_@@_model_tl {#1} \l_@@_value_tl
- \tl_set:Nx #2
+ \tl_set:Ne #2
{
{#1}
{ \l_@@_value_tl }
@@ -926,7 +926,7 @@
\group_begin:
\@@_extract:nNN {#2} \l_@@_model_tl \l_@@_value_tl
\@@_parse_loop:w #3 ! ! ! ! \s_@@_stop
- \tl_set:Nx \l_@@_internal_tl
+ \tl_set:Ne \l_@@_internal_tl
{ { \l_@@_model_tl } { \l_@@_value_tl } }
\exp_args:NNNV \group_end:
\tl_set:Nn #1 \l_@@_internal_tl
@@ -951,7 +951,7 @@
{ \fp_compare_p:nNn {#1} > { 0 } }
{ \fp_compare_p:nNn {#1} < { 100 } }
{
- \use:x
+ \use:e
{
\@@_parse_loop:nn {#1}
{ \tl_if_blank:nTF {#2} { white } {#2} }
@@ -1004,7 +1004,7 @@
{ \@@_parse_gray:n {#2} }
{ \@@_parse_std:n {#2} }
}
- \tl_set:Nx \l_@@_value_tl
+ \tl_set:Ne \l_@@_value_tl
{
\@@_parse_mix:NVVn
\l_@@_model_tl \l_@@_value_tl \l_@@_next_value_tl {#1}
@@ -1400,7 +1400,7 @@
\@@_convert:VVN \l_@@_model_tl \l_color_fixed_model_tl
\l_@@_value_tl
}
- \tl_set:Nx #1
+ \tl_set:Ne #1
{ { \l_color_fixed_model_tl } { \l_@@_value_tl } }
}
}
@@ -1419,12 +1419,12 @@
% will therefore always be available. The finalisation is separate from the
% main function so it can also be applied to \emph{e.g.}~page color.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_finalise_current:
+\cs_new_protected:Npe \@@_finalise_current:
{
- \tl_set:Nx \exp_not:c { l_@@_named_ . _tl }
+ \tl_set:Ne \exp_not:c { l_@@_named_ . _tl }
{ \exp_not:N \@@_model:N \exp_not:N \l_@@_current_tl }
\prop_clear:N \exp_not:c { l_@@_named_ . _prop }
- \prop_put:NVx \exp_not:c { l_@@_named_ . _prop }
+ \prop_put:NVe \exp_not:c { l_@@_named_ . _prop }
\exp_not:c { l_@@_named_ . _tl }
{ \exp_not:N \@@_values:N \exp_not:N \l_@@_current_tl }
}
@@ -1488,7 +1488,7 @@
{
\cs_if_exist:cTF { @@_parse_model_ #1 :w }
{
- \tl_set:Nx #3
+ \tl_set:Ne #3
{ \use:c { @@_parse_model_ #1 :w } #2 , 0 , 0 , 0 , 0 \s_@@_stop }
}
{ \msg_error:nnn { color } { unknown-model } {#1} }
@@ -1496,7 +1496,7 @@
\cs_new_protected:Npn \@@_select_swap:Nnn #1#2#3
{
\@@_convert:nVnN {#2} \l_color_fixed_model_tl {#3} \l_@@_value_tl
- \tl_set:Nx #1
+ \tl_set:Ne #1
{ { \l_color_fixed_model_tl } { \l_@@_value_tl } }
}
% \end{macrocode}
@@ -1781,10 +1781,10 @@
{
\@@_parse:nN {#2} \l_@@_named_tl
\tl_clear_new:c { l_@@_named_ #1 _tl }
- \tl_set:cx { l_@@_named_ #1 _tl }
+ \tl_set:ce { l_@@_named_ #1 _tl }
{ \@@_model:N \l_@@_named_tl }
\prop_clear_new:c { l_@@_named_ #1 _prop }
- \prop_put:cvx { l_@@_named_ #1 _prop } { l_@@_named_ #1 _tl }
+ \prop_put:cve { l_@@_named_ #1 _prop } { l_@@_named_ #1 _tl }
{ \@@_values:N \l_@@_named_tl }
\@@_set:nnw {#1} {#2} #2 ! \s_@@_stop
}
@@ -1811,7 +1811,7 @@
\@@_parse:nN {#2} \l_@@_internal_tl
\exp_args:NNNV \group_end:
\tl_set:Nn \l_@@_internal_tl \l_@@_internal_tl
- \prop_put:cxx { l_@@_named_ #1 _prop }
+ \prop_put:cee { l_@@_named_ #1 _prop }
{ \@@_model:N \l_@@_internal_tl }
{ \@@_values:N \l_@@_internal_tl }
}
@@ -1828,16 +1828,16 @@
{#1} {#3}
}
}
-\cs_new_protected:Npx \@@_set_aux:nnn #1#2#3
+\cs_new_protected:Npe \@@_set_aux:nnn #1#2#3
{
\exp_not:N \@@_set_colon:nnw {#2} {#3}
#1 \c_colon_str \c_colon_str \exp_not:N \s_@@_stop
}
-\use:x
+\use:e
{
\cs_new_protected:Npn \exp_not:N \@@_set_colon:nnw
- ##1##2 ##3 \c_colon_str ##4 \c_colon_str
- ##5 \exp_not:N \s_@@_stop
+ #1#2 #3 \c_colon_str #4 \c_colon_str
+ #5 \exp_not:N \s_@@_stop
}
{
\tl_if_blank:nTF {#4}
@@ -1851,10 +1851,10 @@
\tl_if_blank:nF {#2}
{
\@@_select:nnN {#2} {#4} \l_@@_named_tl
- \tl_set:Nx \l_@@_internal_tl { \@@_model:N \l_@@_named_tl }
+ \tl_set:Ne \l_@@_internal_tl { \@@_model:N \l_@@_named_tl }
\tl_if_empty:cT { l_@@_named_ #1 _tl }
{ \tl_set_eq:cN { l_@@_named_ #1 _tl } \l_@@_internal_tl }
- \prop_put:cVx { l_@@_named_ #1 _prop } \l_@@_internal_tl
+ \prop_put:cVe { l_@@_named_ #1 _prop } \l_@@_internal_tl
{ \@@_values:N \l_@@_named_tl }
\@@_set_loop:nw {#1} #3 \s_@@_mark #5 \s_@@_stop
}
@@ -1867,9 +1867,9 @@
\prop_clear_new:c { l_@@_named_ #1 _prop }
\str_if_eq:nnTF {#2} { . }
{
- \tl_set:cx { l_@@_named_ #1 _tl }
+ \tl_set:ce { l_@@_named_ #1 _tl }
{ \@@_model:N \l_@@_current_tl }
- \prop_put:cvx { l_@@_named_ #1 _prop } { l_@@_named_ #1 _tl }
+ \prop_put:cve { l_@@_named_ #1 _prop } { l_@@_named_ #1 _tl }
{ \@@_values:N \l_@@_current_tl }
}
{
@@ -1909,7 +1909,7 @@
% \begin{macrocode}
\prop_new:c { l_@@_named_._prop }
\tl_new:c { l_@@_named_._tl }
-\tl_set:cx { l_@@_named_._tl } { \@@_model:N \l_@@_current_tl }
+\tl_set:ce { l_@@_named_._tl } { \@@_model:N \l_@@_current_tl }
% \end{macrocode}
% \end{variable}
%
@@ -2005,7 +2005,7 @@
\group_begin:
\cs_set_protected:Npn \@@_tmp:w #1#2
{
- \cs_new_protected:cpx { @@_export_format_ #1 :nnN } ##1##2##3
+ \cs_new_protected:cpe { @@_export_format_ #1 :nnN } ##1##2##3
{
\exp_not:N \@@_export:nnnNN {#2} {##1} {##2} ##3
\exp_not:c { @@_export_ #1 :Nw }
@@ -2042,10 +2042,10 @@
% required, then do some simple maths.
% \begin{macrocode}
\cs_new_protected:cpn { @@_export_comma-sep-rgb:Nw } #1#2 ~ #3 ~ #4 \s_@@_stop
- { \tl_set:Nx #1 { #2 , #3 , #4 } }
+ { \tl_set:Ne #1 { #2 , #3 , #4 } }
\cs_new_protected:Npn \@@_export_HTML:Nw #1#2 ~ #3 ~ #4 \s_@@_stop
{
- \tl_set:Nx #1
+ \tl_set:Ne #1
{
\@@_export_HTML:n {#2}
\@@_export_HTML:n {#3}
@@ -2195,7 +2195,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_model_init:nnn, \@@_model_init:nnx}
+% \begin{macro}{\@@_model_init:nnn, \@@_model_init:nne}
% A shared auxiliary to do the basics of setting up a new model: reserve a
% number, create a white-equivalent, set up links to the backend.
% \begin{macrocode}
@@ -2204,13 +2204,13 @@
\int_gincr:N \g_@@_model_int
\clist_map_inline:nn { fill , stroke , select }
{
- \cs_new_protected:cpx { @@_backend_ ##1 _ #1 :n } ####1
+ \cs_new_protected:cpe { @@_backend_ ##1 _ #1 :n } ####1
{
\exp_not:c { @@_backend_ ##1 _ #2 :nn }
{ color \int_use:N \g_@@_model_int } {####1}
}
}
- \cs_new_protected:cpx { @@_model_ #1 _white: }
+ \cs_new_protected:cpe { @@_model_ #1 _white: }
{
\prop_put:Nnn \exp_not:N \l_@@_named_white_prop {#1}
{ \exp_not:n {#3} }
@@ -2219,7 +2219,7 @@
}
\use:c { @@_model_ #1 _white: }
}
-\cs_generate_variant:Nn \@@_model_init:nnn { nnx }
+\cs_generate_variant:Nn \@@_model_init:nnn { nne }
% \end{macrocode}
% \end{macro}
%
@@ -2309,7 +2309,7 @@
\use:c { @@_model_separation_ #8 :nnnnnn }
{#6} {#7} {#1} {#2} {#3} {#4}
\prop_gput:Nnn \g_@@_alternative_model_prop {#6} {#8}
- \prop_gput:Nnx \g_@@_colorants_prop {#6}
+ \prop_gput:Nne \g_@@_colorants_prop {#6}
{ \str_convert_pdfname:n {#7} }
}
\cs_new_protected:Npn \@@_model_separation_cmyk:nnnnnn #1#2#3#4#5#6
@@ -2355,7 +2355,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_model_convert:nnn #1#2#3
{
- \cs_new:cpx { @@_convert_ #1 _ #3 :w } ##1 \s_@@_stop
+ \cs_new:cpe { @@_convert_ #1 _ #3 :w } ##1 \s_@@_stop
{
\exp_not:N \exp_args:NNe \exp_not:N \use:nn
\exp_not:c { @@_convert_ #2 _ #3 :w }
@@ -2520,7 +2520,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_model_devicen:nnn #1#2#3
{
- \exp_args:Nx \@@_model_devicen:nnnn
+ \exp_args:Ne \@@_model_devicen:nnnn
{ \clist_count:n {#2} } {#1} {#2} {#3}
}
% \end{macrocode}
@@ -2531,7 +2531,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_model_devicen:nnnn #1#2#3#4
{
- \@@_model_init:nnx {#4} { devicen }
+ \@@_model_init:nne {#4} { devicen }
{
0 \prg_replicate:nn { #1 - 1 } { ~ 0 }
}
@@ -2539,7 +2539,7 @@
{ \@@_model_devicen_parse_generic:nn }
{#4} {#1}
\@@_model_devicen_init:nnn {#1} {#2} {#3}
- \@@_model_devicen_convert:nnnx {#4} {#2} {#3}
+ \@@_model_devicen_convert:nnne {#4} {#2} {#3}
{
1 \prg_replicate:nn { #1 - 1 } { ~ 1 }
}
@@ -2602,7 +2602,7 @@
{#1}
{ \@@_model_devicen_parse:nw {#2} ##1 , ##2 , \q_nil , \s_@@_stop }
}
- \cs_new:cpx { @@_parse_mix_ #1 :nw }
+ \cs_new:cpe { @@_parse_mix_ #1 :nw }
##1 ##2 \s_@@_mark ##3 \s_@@_stop
{
\exp_not:N \@@_model_devicen_mix:nw {##1}
@@ -2680,7 +2680,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_model_devicen_init:nnnn #1#2#3#4
{
- \tl_set:Nx \l_@@_internal_tl
+ \tl_set:Ne \l_@@_internal_tl
{ \prg_replicate:nn {#1} { 1.0 ~ } }
\int_zero:N \l_@@_internal_int
\clist_map_inline:nn {#4}
@@ -2691,7 +2691,7 @@
\exp_after:wN \@@_model_devicen_transform:w
\l_@@_value_tl , 0 , 0 , 0 , \s_@@_stop {#1} {#2}
}
- \tl_put_right:Nx \l_@@_internal_tl
+ \tl_put_right:Ne \l_@@_internal_tl
{
\prg_replicate:nn {#1}
{ neg ~ 1.0 ~ add ~ #1 ~ -1 ~ roll ~ }
@@ -2699,7 +2699,7 @@
\prg_replicate:nn {#2} { ~ pop } ~
#1 ~ 1 ~ roll
}
- \use:x
+ \use:e
{
\@@_backend_devicen_init:nnn
{
@@ -2737,7 +2737,7 @@
}
\cs_new_protected:Npn \@@_model_devicen_transform:nnn #1#2#3
{
- \tl_put_right:Nx \l_@@_internal_tl
+ \tl_put_right:Ne \l_@@_internal_tl
{
\fp_compare:nNnF {#3} = \c_zero_fp
{
@@ -2761,7 +2761,7 @@
{
\use:c { @@_model_devicen_convert_ #2 :nnn } {#1} {#3}
}
-\cs_generate_variant:Nn \@@_model_devicen_convert:nnnn { nnnx }
+\cs_generate_variant:Nn \@@_model_devicen_convert:nnnn { nnne }
\cs_new_protected:Npn \@@_model_devicen_convert_cmyk:nnn #1#2
{
\tl_const:cn { c_@@_fallback_ #1 _tl } { cmyk }
@@ -2780,7 +2780,7 @@
\cs_new_protected:Npn \@@_model_devicen_convert:nnnnn #1#2#3#4#5
{
\cs_new:cpn { @@_convert_ #2 _ #1 :w } ##1 \s_@@_stop {#5}
- \cs_new:cpx { @@_convert_ #1 _ #2 :w } ##1 \s_@@_stop
+ \cs_new:cpe { @@_convert_ #1 _ #2 :w } ##1 \s_@@_stop
{
\exp_not:c { @@_convert_devicen_ #2 : \prg_replicate:nn {#3} { n } w }
\prg_replicate:nn {#3} { { 1 } }
@@ -2963,7 +2963,7 @@
}
\cs_new_protected:Npn \@@_model_iccbased:nn #1#2
{
- \exp_args:NNx \prop_get:NnNTF \c_@@_icc_colorspace_signatures_prop
+ \prop_get:NeNTF \c_@@_icc_colorspace_signatures_prop
{ \file_hex_dump:nnn { #1 } { 17 } { 20 } } \l_@@_internal_tl
{
\exp_last_unbraced:NV \@@_model_iccbased_aux:nnnnnn
@@ -2986,7 +2986,7 @@
\cs_new:cpn { @@_convert_ #5 _gray:w } ##1 \s_@@_stop { 0 }
\cs_new:cpn { @@_convert_gray_ #5 :w } ##1 \s_@@_stop { #2 }
\use:c { @@_model_devicen_parse_ #1 :nn } {#5} {#1}
- \exp_args:Nx \@@_backend_iccbased_init:nnn
+ \exp_args:Ne \@@_backend_iccbased_init:nnn
{ \file_full_name:n {#6} } {#1} {#4}
}
% \end{macrocode}
@@ -3047,9 +3047,9 @@
% is similar to the keys module here.
% \begin{macrocode}
\cs_new_protected:Npn \color_show:n
- { \@@_show:Nn \msg_show:nnxxxx }
+ { \@@_show:Nn \msg_show:nneeee }
\cs_new_protected:Npn \color_log:n
- { \@@_show:Nn \msg_log:nnxxxx }
+ { \@@_show:Nn \msg_log:nneeee }
\cs_new_protected:Npn \@@_show:Nn #1#2
{
#1 { color } { show }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
index d700a0f0217..8efdc986ccc 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3debug.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -108,12 +108,12 @@
% \cs{flag_if_exist_p:n}, and if not raises a kernel-level error.
% \end{function}
%
-% \begin{function}{\__kernel_debug_log:x}
+% \begin{function}{\__kernel_debug_log:e}
% \begin{syntax}
-% \cs{__kernel_debug_log:x} \Arg{message text}
+% \cs{__kernel_debug_log:e} \Arg{message text}
% \end{syntax}
% If the \texttt{log-functions} option is active, this function writes
-% the \meta{message text} to the log file using \cs{iow_log:x}.
+% the \meta{message text} to the log file using \cs{iow_log:e}.
% Otherwise, the \meta{message text} is ignored using \cs{use_none:n}.
% This function is only created if debugging is enabled.
% \end{function}
@@ -220,7 +220,7 @@
}
\cs_set_protected:Npn \debug_resume:
{
- \__kernel_tl_set:Nx \l_@@_suspended_tl
+ \__kernel_tl_set:Ne \l_@@_suspended_tl
{ \tl_tail:N \l_@@_suspended_tl }
\tl_if_empty:NT \l_@@_suspended_tl
{
@@ -269,7 +269,7 @@
\@@_suspended:T \use_none:nnn
\cs_if_exist:NF ##1
{
- \msg_error:nnx { debug } { non-declared-variable }
+ \msg_error:nne { debug } { non-declared-variable }
{ \token_to_str:N ##1 }
}
}
@@ -278,7 +278,7 @@
\@@_suspended:T \use_none:nnn
\cs_if_exist:NF ##1
{
- \msg_error:nnx { kernel } { command-not-defined }
+ \msg_error:nne { kernel } { command-not-defined }
{ \token_to_str:N ##1 }
}
}
@@ -362,7 +362,7 @@
\if:w #1 \scan_stop:
\cs_gset_nopar:Npn #1 {#2}
\else:
- \msg_error:nnxxx { debug } { local-global }
+ \msg_error:nneee { debug } { local-global }
{#1} {#2} { \iow_char:N \\ #3 }
\fi:
\fi:
@@ -374,19 +374,19 @@
% \end{macro}
%
% \begin{macro}{\@@_log-functions_on:, \@@_log-functions_off:}
-% \begin{macro}{\__kernel_debug_log:x}
+% \begin{macro}{\__kernel_debug_log:e}
% These two functions (corresponding to the \pkg{expl3} option
-% \texttt{log-functions}) control whether \cs{__kernel_debug_log:x}
+% \texttt{log-functions}) control whether \cs{__kernel_debug_log:e}
% writes to the log file or not. By default, logging is off.
% \begin{macrocode}
\cs_new_protected:cpn { @@_log-functions_on: }
{
- \cs_set_protected:Npn \__kernel_debug_log:x
- { \@@_suspended:T \use_none:nn \iow_log:x }
+ \cs_set_protected:Npn \__kernel_debug_log:e
+ { \@@_suspended:T \use_none:nn \iow_log:e }
}
\cs_new_protected:cpn { @@_log-functions_off: }
- { \cs_set_protected:Npn \__kernel_debug_log:x { \use_none:n } }
-\cs_new_protected:Npn \__kernel_debug_log:x { \use_none:n }
+ { \cs_set_protected:Npn \__kernel_debug_log:e { \use_none:n } }
+\cs_new_protected:Npn \__kernel_debug_log:e { \use_none:n }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -510,11 +510,11 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_generate_parameter_list:NNN #1#2#3
{
- \__kernel_tl_set:Nx \l_@@_internal_tl
+ \__kernel_tl_set:Ne \l_@@_internal_tl
{ \exp_last_unbraced:Nf \use_ii:nnn \cs_split_function:N #1 }
- \__kernel_tl_set:Nx #2
+ \__kernel_tl_set:Ne #2
{ \exp_args:NV \@@_build_parm_text:n \l_@@_internal_tl }
- \__kernel_tl_set:Nx #3
+ \__kernel_tl_set:Ne #3
{ \exp_args:NV \@@_build_arg_list:n \l_@@_internal_tl }
}
\cs_new:Npn \@@_build_parm_text:n #1
@@ -658,7 +658,7 @@
{
\cs_gset_eq:cN { @@_ \cs_to_str:N #1 } #1
\@@_generate_parameter_list:NNN #1 \l_@@_tmpa_tl \l_@@_tmpb_tl
- \exp_args:Nx \tex_scantokens:D
+ \exp_args:Ne \tex_scantokens:D
{
\tex_global:D \cs_prefix_spec:N #1
\tex_def:D \exp_not:N #1
@@ -673,23 +673,23 @@
}
\cs_set_protected:Npn \@@_add_to_debug_code:Nnn #1#2#3
{
- \use:x
+ \use:e
{
\cs_set:Npn \exp_not:N \@@_tmp:w
- ####1 \tl_to_str:n { macro: }
- ####2 \tl_to_str:n { -> }
- ####3 \c_backslash_str \tl_to_str:n { @@_ }
+ ##1 \tl_to_str:n { macro: }
+ ##2 \tl_to_str:n { -> }
+ ##3 \c_backslash_str \tl_to_str:n { @@_ }
\cs_to_str:N #1
- ####4 \s_@@_stop
+ ##4 \s_@@_stop
{
- \exp_not:N \exp_args:Nx \exp_not:N \tex_scantokens:D
+ \exp_not:N \exp_args:Ne \exp_not:N \tex_scantokens:D
{
- \tex_global:D ####1
- \tex_def:D \exp_not:N #1 ####2
+ \tex_global:D ##1
+ \tex_def:D \exp_not:N #1 ##2
{
- ####3 \tl_to_str:n {#2}
+ ##3 \tl_to_str:n {#2}
\c_backslash_str @@_ \cs_to_str:N #1
- ####4 \tl_to_str:n {#3}
+ ##4 \tl_to_str:n {#3}
}
}
}
@@ -721,7 +721,7 @@
}
\cs_set_protected:Npn \@@_patch_weird:Nnn #1#2#3
{
- \use:x
+ \use:e
{
\tex_endlinechar:D -1 \scan_stop:
\exp_not:N \tex_scantokens:D
@@ -790,8 +790,8 @@
%
%
% \begin{macrocode}
-\cs_gset_protected:Npn \__kernel_tl_set:Nx { \cs_set_nopar:Npx }
-\cs_gset_protected:Npn \__kernel_tl_gset:Nx { \cs_gset_nopar:Npx }
+\cs_gset_protected:Npn \__kernel_tl_set:Ne { \cs_set_nopar:Npe }
+\cs_gset_protected:Npn \__kernel_tl_gset:Ne { \cs_gset_nopar:Npe }
% \end{macrocode}
%
% Patching where the first argument to a function needs scope-checking:
@@ -838,20 +838,21 @@
\skip_set_eq:NN
\skip_add:Nn
\skip_sub:Nn
- \__kernel_tl_set:Nx
+ \__kernel_tl_set:Ne
\tl_clear:N
\tl_set_eq:NN
\tl_put_left:Nn
\tl_put_left:NV
+ \tl_put_left:Nv
+ \tl_put_left:Ne
\tl_put_left:No
- \tl_put_left:Nx
\tl_put_right:Nn
\tl_put_right:NV
+ \tl_put_right:Nv
+ \tl_put_right:Ne
\tl_put_right:No
- \tl_put_right:Nx
\tl_build_begin:N
\tl_build_put_right:Nn
- \tl_build_put_right:Nx
\tl_build_put_left:Nn
\vbox_set:Nn
\vbox_set_top:Nn
@@ -902,20 +903,21 @@
\skip_gset_eq:NN
\skip_gadd:Nn
\skip_gsub:Nn
- \__kernel_tl_gset:Nx
+ \__kernel_tl_gset:Ne
\tl_gclear:N
\tl_gset_eq:NN
\tl_gput_left:Nn
\tl_gput_left:NV
+ \tl_gput_left:Nv
+ \tl_gput_left:Ne
\tl_gput_left:No
- \tl_gput_left:Nx
\tl_gput_right:Nn
\tl_gput_right:NV
+ \tl_gput_right:Nv
+ \tl_gput_right:Ne
\tl_gput_right:No
- \tl_gput_right:Nx
\tl_build_gbegin:N
\tl_build_gput_right:Nn
- \tl_build_gput_right:Nx
\tl_build_gput_left:Nn
\vbox_gset:Nn
\vbox_gset_top:Nn
@@ -940,7 +942,6 @@
\muskip_const:Nn
\skip_const:Nn
\tl_const:Nn
- \tl_const:Nx
}
% \end{macrocode}
%
@@ -991,7 +992,7 @@
\__kernel_patch:nnn
{ }
{
- \__kernel_debug_log:x
+ \__kernel_debug_log:e
{ Defining~\token_to_str:N #1~ \msg_line_context: }
}
{ \__kernel_chk_if_free_cs:N }
@@ -1000,7 +1001,7 @@
{
\cs_if_free:NF #4
{
- \__kernel_debug_log:x
+ \__kernel_debug_log:e
{
Variant~\token_to_str:N #4~%
already~defined;~ not~ changing~ it~ \msg_line_context:
@@ -1013,7 +1014,7 @@
\__kernel_patch:nnn
{
\cs_if_exist:cF { \c_@@_code_root_str #1 }
- { \__kernel_debug_log:x { Defining~key~#1~\msg_line_context: } }
+ { \__kernel_debug_log:e { Defining~key~#1~\msg_line_context: } }
}
{ }
{ \@@_cmd_set_direct:nn }
@@ -1021,7 +1022,7 @@
\__kernel_patch:nnn
{ }
{
- \__kernel_debug_log:x
+ \__kernel_debug_log:e
{ Defining~message~ #1 / #2 ~\msg_line_context: }
}
{ \@@_chk_free:nn }
@@ -1059,7 +1060,7 @@
{
\@@_trace_push:nnN { regex } { 1 } \@@_escape_use:nnnn
\group_begin:
- \__kernel_tl_set:Nx \l_@@_internal_a_tl
+ \__kernel_tl_set:Ne \l_@@_internal_a_tl
{ \@@_trace_pop:nnN { regex } { 1 } \@@_escape_use:nnnn }
\use_none:nnn
}
@@ -1081,7 +1082,7 @@
{ \@@_build_for_cs:n }
\__kernel_patch:nnn
{
- \@@_trace:nnx { regex } { 2 }
+ \@@_trace:nne { regex } { 2 }
{
regex~new~state~
L=\int_use:N \l_@@_left_state_int ~ -> ~
@@ -1103,24 +1104,24 @@
\__kernel_patch:nnn
{
\@@_trace_push:nnN { regex } { 1 } \@@_match:n
- \@@_trace:nnx { regex } { 1 } { analyzing~query~token~list }
+ \@@_trace:nne { regex } { 1 } { analyzing~query~token~list }
}
{ \@@_trace_pop:nnN { regex } { 1 } \@@_match:n }
{ \@@_match:n }
\__kernel_patch:nnn
{
\@@_trace_push:nnN { regex } { 1 } \@@_match_cs:n
- \@@_trace:nnx { regex } { 1 } { analyzing~query~token~list }
+ \@@_trace:nne { regex } { 1 } { analyzing~query~token~list }
}
{ \@@_trace_pop:nnN { regex } { 1 } \@@_match_cs:n }
{ \@@_match_cs:n }
\__kernel_patch:nnn
- { \@@_trace:nnx { regex } { 1 } { initializing } }
+ { \@@_trace:nne { regex } { 1 } { initializing } }
{ }
{ \@@_match_init: }
\__kernel_patch:nnn
{
- \@@_trace:nnx { regex } { 2 }
+ \@@_trace:nne { regex } { 2 }
{ state~\int_use:N \l_@@_curr_state_int }
}
{ }
@@ -1153,7 +1154,7 @@
{
\char_set_catcode_parameter:N \#
\tex_endlinechar:D -1 \scan_stop:
- \exp_args:Nx \tex_scantokens:D
+ \exp_args:Ne \tex_scantokens:D
{
\tex_global:D \cs_prefix_spec:N #1 \tex_def:D \exp_not:N #1
\cs_parameter_spec:N #1
@@ -1172,7 +1173,7 @@
{
\tl_map_inline:nn {#1}
{
- \exp_args:NNx \__kernel_patch:Nn ##1
+ \exp_args:NNe \__kernel_patch:Nn ##1
{
{ \c_hash_str 1 }
{
@@ -1238,7 +1239,7 @@
{
\tl_map_inline:nn {#1}
{
- \exp_args:NNx \__kernel_patch:Nn ##1
+ \exp_args:NNe \__kernel_patch:Nn ##1
{
{
\exp_not:N \__kernel_chk_expr:nNnN { \c_hash_str 1 }
@@ -1286,7 +1287,7 @@
{
\tl_map_inline:nn {#1}
{
- \exp_args:NNx \__kernel_patch:Nn ##1
+ \exp_args:NNe \__kernel_patch:Nn ##1
{
{
\exp_not:N \__kernel_chk_expr:nNnN { \c_hash_str 1 }
@@ -1325,7 +1326,7 @@
{
\clist_map_inline:nn { :nNnT , :nNnF , :nNnTF , _p:nNn }
{
- \exp_args:Ncx \__kernel_patch:Nn { #1 ##1 }
+ \exp_args:Nce \__kernel_patch:Nn { #1 ##1 }
{
{
\exp_not:N \__kernel_chk_expr:nNnN { \c_hash_str 1 }
@@ -1349,7 +1350,7 @@
{
\clist_map_inline:nn { :nT , :nF , :nTF , _p:n }
{
- \exp_args:Ncx \__kernel_patch:Nn { #1 ##1 }
+ \exp_args:Nce \__kernel_patch:Nn { #1 ##1 }
{
{
\exp_not:N \__kernel_chk_expr:nNnN { \c_hash_str 1 }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
index a60fe16ff48..c9564f4080a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -145,11 +145,11 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_warn_once:nnNnn #1#2#3#4#5
{
- \cs_gset_protected:Npx #3
+ \cs_gset_protected:Npe #3
{
\__kernel_if_debug:TF
{
- \exp_not:N \msg_warning:nnxxx
+ \exp_not:N \msg_warning:nneee
{ deprecation } { deprecated-command }
{#1}
{ \token_to_str:N #3 }
@@ -193,7 +193,7 @@
\exp_not:N \msg_expandable_error:nnnnn
{ deprecation } { deprecated-command }
{ \tl_to_str:n {#3} } { \token_to_str:N #1 } { \tl_to_str:n {#2} }
- \exp_not:N \msg_error:nnxxx
+ \exp_not:N \msg_error:nneee
{ deprecation } { deprecated-command }
{ \tl_to_str:n {#3} } { \token_to_str:N #1 } { \tl_to_str:n {#2} }
}
@@ -682,25 +682,25 @@
{ meaning } { meaning_remove }
}
{
- \use:x
+ \use:e
{
\__kernel_patch_deprecation:nnNNpn { 2022-01-11 } { \peek_remove_spaces:n }
- \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NTF } ####1####2####3
+ \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NTF } ##1##2##3
{
\peek_remove_spaces:n
- { \exp_not:c { peek_ #1 :NTF } ####1 {####2} {####3} }
+ { \exp_not:c { peek_ #1 :NTF } ##1 {##2} {##3} }
}
\__kernel_patch_deprecation:nnNNpn { 2022-01-11 } { \peek_remove_spaces:n }
- \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NT } ####1####2
+ \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NT } ##1##2
{
\peek_remove_spaces:n
- { \exp_not:c { peek_ #1 :NT } ####1 {####2} }
+ { \exp_not:c { peek_ #1 :NT } ##1 {##2} }
}
\__kernel_patch_deprecation:nnNNpn { 2022-01-11 } { \peek_remove_spaces:n }
- \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NF } ####1####2
+ \cs_gset_protected:Npn \exp_not:c { peek_ #1 _ignore_spaces:NF } ##1##2
{
\peek_remove_spaces:n
- { \exp_not:c { peek_ #1 :NF } ####1 {####2} }
+ { \exp_not:c { peek_ #1 :NF } ##1 {##2} }
}
}
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
index b1744b9f7bb..ed675106ba1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3doc.dtx
@@ -85,7 +85,7 @@ and all files in that bundle must be distributed together.
% require you to do updates, if the class changes.}}
%
% \author{\Team}
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
% \maketitle
% \tableofcontents
%
@@ -957,7 +957,7 @@ and all files in that bundle must be distributed together.
% \seq_set_split:NoV,
% \str_case:fn,
% \tl_count:f,
-% \tl_greplace_all:Nxn,
+% \tl_greplace_all:Nen,
% \tl_greplace_all:Nno,
% \tl_if_head_eq_charcode:oNTF,
% \tl_if_head_eq_charcode:oNT,
@@ -968,17 +968,14 @@ and all files in that bundle must be distributed together.
% \tl_if_in:NoTF,
% \tl_if_in:NoT,
% \tl_if_in:NoF,
-% \tl_remove_all:Nx,
-% \tl_replace_all:Nxn,
-% \tl_replace_all:Nnx,
+% \tl_remove_all:Ne,
+% \tl_replace_all:Nen,
+% \tl_replace_all:Nne,
% \tl_replace_all:Non,
% \tl_replace_all:Nno,
% \tl_replace_once:Noo,
% \tl_to_str:f,
% \tl_to_str:o,
-% \prop_get:NxNTF,
-% \prop_put:Nxn,
-% \prop_gput:NVx,
% }
% A few missing variants.
% \begin{macrocode}
@@ -1001,9 +998,6 @@ and all files in that bundle must be distributed together.
\cs_generate_variant:Nn \tl_replace_once:Nnn { Noo }
\cs_generate_variant:Nn \tl_set_rescan:Nnn { NnV }
\cs_generate_variant:Nn \tl_to_str:n { f , o }
-\cs_generate_variant:Nn \prop_get:NnNTF { Nx }
-\cs_generate_variant:Nn \prop_put:Nnn { Nx }
-\cs_generate_variant:Nn \prop_gput:Nnn { NVx }
% \end{macrocode}
% \end{macro}
%
@@ -1033,7 +1027,7 @@ and all files in that bundle must be distributed together.
\cs_new_protected:Npn \@@_trim_right:Nn #1#2
{
\cs_set:Npn \@@_tmp:w ##1 #2 ##2 \q_stop { \exp_not:n {##1} }
- \__kernel_tl_set:Nx #1 { \exp_after:wN \@@_tmp:w #1 #2 \q_stop }
+ \__kernel_tl_set:Ne #1 { \exp_after:wN \@@_tmp:w #1 #2 \q_stop }
}
\cs_generate_variant:Nn \@@_trim_right:Nn { No }
% \end{macrocode}
@@ -1076,7 +1070,7 @@ and all files in that bundle must be distributed together.
#1 \g_@@_module_name_tl
}
}
-\cs_new_protected:Npx \@@_replace_at_at_aux:Nn #1#2
+\cs_new_protected:Npe \@@_replace_at_at_aux:Nn #1#2
{
\tl_replace_all:Nnn #1 { \token_to_str:N @ } { @ }
\tl_replace_all:Nnn #1 { \token_to_str:N _ } { _ }
@@ -1130,7 +1124,7 @@ and all files in that bundle must be distributed together.
\@@_trim_right:Nn \l_@@_detect_internals_tl _
\@@_trim_right:Nn \l_@@_detect_internals_tl :
\@@_trim_right:No \l_@@_detect_internals_tl { \token_to_str:N : }
- \msg_warning:nnxxx { l3doc } { foreign-internal }
+ \msg_warning:nneee { l3doc } { foreign-internal }
{ \tl_to_str:N \l_@@_detect_internals_cs_tl }
{ \tl_to_str:N \l_@@_detect_internals_tl }
{ \tl_to_str:N \g_@@_module_name_tl }
@@ -1253,14 +1247,14 @@ and all files in that bundle must be distributed together.
\@@_if_almost_str:nTF {#1}
{
\@@_key_get_base_TF:nN {#1} \l_@@_tmpa_tl
- \__kernel_tl_set:Nx #2
+ \__kernel_tl_set:Ne #2
{ \@@_split_function_do:on \l_@@_tmpa_tl { \@@_base_form_aux:nnN } }
}
{ \tl_set:Nn #2 {#1} }
}
-\cs_new:Npx \@@_key_get_base_TF:nN #1#2
+\cs_new:Npe \@@_key_get_base_TF:nN #1#2
{
- \__kernel_tl_set:Nx #2 { \exp_not:N \tl_to_str:n {#1} }
+ \__kernel_tl_set:Ne #2 { \exp_not:N \tl_to_str:n {#1} }
\tl_if_in:NoF #2 { \tl_to_str:n {:} }
{ \exp_not:N \prg_break: }
\tl_if_in:onT { #2 z } { \tl_to_str:n {TF} z }
@@ -1312,7 +1306,7 @@ and all files in that bundle must be distributed together.
\tl_if_head_eq_charcode:nNTF {#4} :
{ #2 {#1} }
{
- \use:x
+ \use:e
{
\exp_not:n {#3}
{ \@@_base_form_aux:nnN {#4} {#5} #6 }
@@ -1602,7 +1596,7 @@ and all files in that bundle must be distributed together.
% \begin{macrocode}
\cs_set_protected:Npn \ifnot@excluded
{
- \exp_args:Nxx \expanded@notin
+ \exp_args:Nee \expanded@notin
{ \c_backslash_str \tl_to_str:N \macro@namepart , }
{ \exp_args:NV \tl_to_str:n \index@excludelist }
}
@@ -2016,7 +2010,7 @@ and all files in that bundle must be distributed together.
\verbatim@font
\@@_if_almost_str:VT \l_@@_cmd_tl
{
- \__kernel_tl_set:Nx \l_@@_cmd_tl { \tl_to_str:N \l_@@_cmd_tl }
+ \__kernel_tl_set:Ne \l_@@_cmd_tl { \tl_to_str:N \l_@@_cmd_tl }
\bool_if:NT \g_@@_cs_break_bool
{
\regex_replace_all:nnN
@@ -2038,13 +2032,13 @@ and all files in that bundle must be distributed together.
{
\quark_if_no_value:NF \l_@@_cmd_index_tl
{
- \__kernel_tl_set:Nx \l_@@_cmd_tl
+ \__kernel_tl_set:Ne \l_@@_cmd_tl
{ \c_backslash_str \exp_not:o { \l_@@_cmd_index_tl } }
}
\exp_args:No \@@_key_get:n { \l_@@_cmd_tl }
\quark_if_no_value:NF \l_@@_cmd_module_tl
{
- \__kernel_tl_set:Nx \l_@@_index_module_tl
+ \__kernel_tl_set:Ne \l_@@_index_module_tl
{ \tl_to_str:N \l_@@_cmd_module_tl }
}
\@@_special_index_module:ooonN
@@ -2153,19 +2147,19 @@ and all files in that bundle must be distributed together.
% \end{macro}
%
% \begin{macro}
-% {\@@_get_hyper_target:nN, \@@_get_hyper_target:oN, \@@_get_hyper_target:xN}
+% {\@@_get_hyper_target:nN, \@@_get_hyper_target:oN, \@@_get_hyper_target:eN}
% Create a \pkg{hyperref} anchor from a macro name~|#1| and stores it
% in the token list variable~|#2|. For instance, |\prg_replicate:nn|
% gives |doc/function//prg/replicate:nn|.
% \begin{macrocode}
\cs_new_protected:Npn \@@_get_hyper_target:nN #1#2
{
- \__kernel_tl_set:Nx #2 { \tl_to_str:n {#1} }
- \tl_replace_all:Nxn #2 { \c_underscore_str } { / }
- \tl_remove_all:Nx #2 { \c_backslash_str }
+ \__kernel_tl_set:Ne #2 { \tl_to_str:n {#1} }
+ \tl_replace_all:Nen #2 { \c_underscore_str } { / }
+ \tl_remove_all:Ne #2 { \c_backslash_str }
\tl_put_left:Nn #2 { doc/function// }
}
-\cs_generate_variant:Nn \@@_get_hyper_target:nN { o , x }
+\cs_generate_variant:Nn \@@_get_hyper_target:nN { o , e }
% \end{macrocode}
% \end{macro}
%
@@ -2183,21 +2177,21 @@ and all files in that bundle must be distributed together.
% \begin{macrocode}
\cs_new_protected:Npn \@@_names_get_seq:nN #1#2
{
- \__kernel_tl_set:Nx \l_@@_tmpa_tl { \tl_to_str:n {#1} }
+ \__kernel_tl_set:Ne \l_@@_tmpa_tl { \tl_to_str:n {#1} }
\bool_if:NTF \l_@@_names_verb_bool
{
\seq_clear:N #2
\seq_put_right:NV #2 \l_@@_tmpa_tl
}
{
- \tl_remove_all:Nx \l_@@_tmpa_tl
+ \tl_remove_all:Ne \l_@@_tmpa_tl
{ \iow_char:N \^^M \c_percent_str }
- \tl_remove_all:Nx \l_@@_tmpa_tl { \tl_to_str:n { ^ ^ A } }
- \tl_remove_all:Nx \l_@@_tmpa_tl { \iow_char:N \^^I }
- \tl_remove_all:Nx \l_@@_tmpa_tl { \iow_char:N \^^M }
+ \tl_remove_all:Ne \l_@@_tmpa_tl { \tl_to_str:n { ^ ^ A } }
+ \tl_remove_all:Ne \l_@@_tmpa_tl { \iow_char:N \^^I }
+ \tl_remove_all:Ne \l_@@_tmpa_tl { \iow_char:N \^^M }
\@@_detect_internals:N \l_@@_tmpa_tl
\@@_replace_at_at:N \l_@@_tmpa_tl
- \exp_args:NNx \seq_set_from_clist:Nn #2
+ \exp_args:NNe \seq_set_from_clist:Nn #2
{ \tl_to_str:N \l_@@_tmpa_tl }
}
}
@@ -2238,14 +2232,14 @@ and all files in that bundle must be distributed together.
\tl_if_head_eq_charcode:nNTF {#2} :
{ \@@_names_parse_aux:nnn {#4} {#4} { \scan_stop: } }
{
- \exp_args:Nx \@@_names_parse_aux:nnn
+ \exp_args:Ne \@@_names_parse_aux:nnn
{ \@@_base_form_aux:nnN {#1} {#2} #3 }
{#1} {#2}
}
}
{
\bool_if:NT \l_@@_macro_TF_bool
- { \msg_error:nnx { l3doc } { no-signature-TF } {#4} }
+ { \msg_error:nne { l3doc } { no-signature-TF } {#4} }
\@@_names_parse_aux:nnn {#4} {#4} { \scan_stop: }
}
}
@@ -2294,12 +2288,12 @@ and all files in that bundle must be distributed together.
\str_if_eq:VnTF \l_@@_tmpa_tl { \scan_stop: }
{
\seq_gclear:N \g_@@_variants_seq
- \@@_names_typeset_auxii:x { \g_@@_base_name_tl }
+ \@@_names_typeset_auxii:e { \g_@@_base_name_tl }
}
{
\seq_gset_eq:NN \g_@@_variants_seq #1
\seq_gpop:NN \g_@@_variants_seq \l_@@_tmpb_tl
- \@@_names_typeset_auxii:x
+ \@@_names_typeset_auxii:e
{ \g_@@_base_name_tl : \l_@@_tmpb_tl }
}
}
@@ -2308,7 +2302,7 @@ and all files in that bundle must be distributed together.
% \end{macro}
%
% \begin{macro}
-% {\@@_names_typeset_auxii:n, \@@_names_typeset_auxii:x}
+% {\@@_names_typeset_auxii:n, \@@_names_typeset_auxii:e}
% In case the option |pTF| was given, typeset predicates before the
% |TF| functions. In case the option |noTF| was given, typeset the
% non-|TF| function as well. Pass the relevant boolean in both cases
@@ -2318,7 +2312,7 @@ and all files in that bundle must be distributed together.
{
\bool_if:NT \l_@@_macro_pTF_bool
{
- \@@_names_typeset_block:xN
+ \@@_names_typeset_block:eN
{ \@@_predicate_from_base:n {#1} }
\c_false_bool
}
@@ -2326,11 +2320,11 @@ and all files in that bundle must be distributed together.
{ \@@_names_typeset_block:nN {#1} \c_false_bool }
\@@_names_typeset_block:nN {#1} \l_@@_macro_TF_bool
}
-\cs_generate_variant:Nn \@@_names_typeset_auxii:n { x }
+\cs_generate_variant:Nn \@@_names_typeset_auxii:n { e }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_names_typeset_block:nN, \@@_names_typeset_block:xN}
+% \begin{macro}{\@@_names_typeset_block:nN, \@@_names_typeset_block:eN}
% Names in \env{function} and \env{macro} environments are typeset
% differently. To distinguish the two note that
% \cs{l_@@_nested_macro_int} is at least one when in an \env{macro}
@@ -2343,7 +2337,7 @@ and all files in that bundle must be distributed together.
{ \@@_typeset_function_block:nN }
{ \@@_macro_typeset_block:nN }
}
-\cs_generate_variant:Nn \@@_names_typeset_block:nN { x }
+\cs_generate_variant:Nn \@@_names_typeset_block:nN { e }
% \end{macrocode}
% \end{macro}
%
@@ -2391,7 +2385,7 @@ and all files in that bundle must be distributed together.
\seq_set_eq:NN \l_@@_tmpa_seq ##1
\seq_pop:NN \l_@@_tmpa_seq \l_@@_tmpa_tl
\seq_get:NN \l_@@_tmpa_seq \l_@@_tmpb_tl
- \exp_args:NNx
+ \exp_args:NNe
\group_end:
#1
{
@@ -2479,7 +2473,7 @@ and all files in that bundle must be distributed together.
\exp_args:No \@@_date_compare:nNnT
{#1} > { \c_sys_year_int - \c_sys_month_int - \c_sys_day_int }
{
- \msg_error:nnxx { l3doc } { future-date }
+ \msg_error:nnee { l3doc } { future-date }
{ \tl_to_str:N \l_@@_macro_argument_tl }
{#1}
}
@@ -2707,15 +2701,15 @@ and all files in that bundle must be distributed together.
%
% ^^A TODO: collect all index targets from a given function environment in a box and stick it at the top.
% \begin{macro}
-% {\@@_typeset_function_block:nN, \@@_typeset_function_block:xN}
-% \begin{macro}{\@@_function_index:n, \@@_function_index:x}
+% {\@@_typeset_function_block:nN, \@@_typeset_function_block:eN}
+% \begin{macro}{\@@_function_index:n, \@@_function_index:e}
% |#1| is a csname, |#2| a boolean indicating whether to add |TF| or not.
% \begin{macrocode}
\cs_new_protected:Npn \@@_typeset_function_block:nN #1#2
{
- \@@_function_index:x
+ \@@_function_index:e
{ #1 \bool_if:NT #2 { \tl_to_str:n {TF} } }
- \@@_function_label:xN {#1} #2
+ \@@_function_label:eN {#1} #2
#1
\bool_if:NT #2 { \@@_typeset_TF: }
\@@_typeset_expandability:
@@ -2723,13 +2717,13 @@ and all files in that bundle must be distributed together.
{ \@@_typeset_variant_list:nN {#1} #2 }
\\
}
-\cs_generate_variant:Nn \@@_typeset_function_block:nN { x }
+\cs_generate_variant:Nn \@@_typeset_function_block:nN { e }
\cs_new_protected:Npn \@@_function_index:n #1
{
\seq_gput_right:Nn \g_doc_functions_seq {#1}
\@@_special_index:nn {#1} { usage }
}
-\cs_generate_variant:Nn \@@_function_index:n { x }
+\cs_generate_variant:Nn \@@_function_index:n { e }
% \end{macrocode}
%
% \begin{macrocode}
@@ -2796,7 +2790,7 @@ and all files in that bundle must be distributed together.
{
\bool_if:NF \l_@@_no_label_bool
{
- \@@_get_hyper_target:xN
+ \@@_get_hyper_target:eN
{
\exp_not:n {#1}
\bool_if:NT #2 { \tl_to_str:n {TF} }
@@ -2805,7 +2799,7 @@ and all files in that bundle must be distributed together.
\exp_args:No \label { \l_@@_tmpa_tl }
}
}
-\cs_generate_variant:Nn \@@_function_label:nN { x }
+\cs_generate_variant:Nn \@@_function_label:nN { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -3064,7 +3058,7 @@ and all files in that bundle must be distributed together.
\l_@@_macro_do_not_index_tl
\exp_args:NNV \seq_set_from_clist:Nn
\l_@@_tmpa_seq \l_@@_macro_do_not_index_tl
- \__kernel_tl_set:Nx \l_@@_macro_do_not_index_tl
+ \__kernel_tl_set:Ne \l_@@_macro_do_not_index_tl
{ \seq_use:Nn \l_@@_tmpa_seq { , } }
\exp_args:NV \DoNotIndex \l_@@_macro_do_not_index_tl
}
@@ -3105,7 +3099,7 @@ and all files in that bundle must be distributed together.
\@@_macro_single:nNN {#1} \c_true_bool #2
\seq_if_empty:NF \g_@@_variants_seq
{
- \@@_macro_typeset_variant_list:xN
+ \@@_macro_typeset_variant_list:eN
{ \@@_get_function_name:n {#1} } #2
}
}
@@ -3115,7 +3109,7 @@ and all files in that bundle must be distributed together.
\seq_map_inline:Nn \g_@@_variants_seq
{ \@@_macro_single:nNN { #1 : ##1 } \c_false_bool #2 }
}
-\cs_generate_variant:Nn \@@_macro_typeset_variant_list:nN { x }
+\cs_generate_variant:Nn \@@_macro_typeset_variant_list:nN { e }
% \end{macrocode}
% \end{macro}
%
@@ -3137,7 +3131,7 @@ and all files in that bundle must be distributed together.
\tl_set:Nn \saved@macroname {#1}
\@@_macro_typeset_one:nN {#1} #3
\bool_if:NT #3 { \DoNotIndex {#1} }
- \exp_args:Nx \@@_macro_index:nN
+ \exp_args:Ne \@@_macro_index:nN
{ #1 \bool_if:NT #3 { \tl_to_str:n { TF } } }
#2
}
@@ -3191,7 +3185,7 @@ and all files in that bundle must be distributed together.
\cs_new_protected:Npn \@@_print_macroname:nN #1#2
{
\strut
- \@@_get_hyper_target:xN
+ \@@_get_hyper_target:eN
{
\exp_not:n {#1}
\bool_if:NT #2 { \tl_to_str:n {TF} }
@@ -3295,7 +3289,7 @@ and all files in that bundle must be distributed together.
% \begin{macrocode}
\cs_new_protected:Npn \@@_test_missing:n #1
{
- \@@_test_missing_aux:Nxn
+ \@@_test_missing_aux:Nen
\g_@@_missing_tests_prop
{ \seq_use:Nn \l_@@_names_seq { , } }
{ { \g_file_curr_name_str \c_space_tl (#1) } }
@@ -3307,7 +3301,7 @@ and all files in that bundle must be distributed together.
{ \tl_set:Nn \l_@@_tmpa_tl {#3} }
\prop_put:Nno #1 {#2} \l_@@_tmpa_tl
}
-\cs_generate_variant:Nn \@@_test_missing_aux:Nnn { Nx }
+\cs_generate_variant:Nn \@@_test_missing_aux:Nnn { Ne }
% \end{macrocode}
% \end{macro}
%
@@ -3345,7 +3339,7 @@ and all files in that bundle must be distributed together.
{
\seq_set_filter:NNn \l_@@_tmpa_seq \l_@@_names_seq
{ ! \@@_if_macro_internal_p:n {##1} }
- \seq_gput_right:Nx \g_@@_not_tested_seq
+ \seq_gput_right:Ne \g_@@_not_tested_seq
{
\seq_use:Nn \l_@@_tmpa_seq { , }
\bool_if:NTF \l_@@_macro_pTF_bool {~(pTF)}
@@ -3415,10 +3409,10 @@ and all files in that bundle must be distributed together.
\bool_if:NTF \l_@@_macro_var_bool {variable} {function}
\int_compare:nNnTF \l_@@_tmpa_int = 1 {~is~} {s~are~}
documented~on~page~
- \@@_get_hyper_target:xN
+ \@@_get_hyper_target:eN
{ \seq_item:Nn \g_@@_nested_names_seq { 1 } }
\l_@@_tmpa_tl
- \exp_args:Nx \pageref { \l_@@_tmpa_tl } .
+ \exp_args:Ne \pageref { \l_@@_tmpa_tl } .
}
\seq_gclear:N \g_@@_nested_names_seq
}
@@ -3540,6 +3534,39 @@ and all files in that bundle must be distributed together.
% \end{macrocode}
% \end{environment}
%
+% \subsection{Footnote support}
+% The environments \env{function} and \env{variable} are boxes
+% and so looses footnotes. The following implements support.
+% It relies currently on an internal from hyperref to get the correct targets.
+%
+% \begin{macrocode}
+\providecommand\Hy@footnote@currentHref{}
+\prop_new:N\g_@@_fnmark_prop
+\cs_new_protected:Npn \@@_fn_store:
+ {
+ \prop_gput:Nee\g_@@_fnmark_prop
+ {fn\int_use:N\c@footnote}{{\Hy@footnote@currentHref}{\int_use:N\c@footnote}}
+ }
+\cs_new_protected:Npn \@@_fn_restore:n #1
+ {
+ \prop_get:NnN \g_@@_fnmark_prop {fn#1}\l_@@_tmpa_tl
+ \tl_gset:Ne\Hy@footnote@currentHref
+ {\exp_last_unbraced:NV\use_i:nn \l_@@_tmpa_tl }
+ \setcounter{footnote}{\exp_last_unbraced:NV\use_ii:nn \l_@@_tmpa_tl}
+ }
+
+\cs_generate_variant:Nn \hook_gput_next_code:nn {ne}
+\cs_new_protected:Npn \@@_fn_footnote:nn #1 #2
+ {
+ \footnotemark
+ \@@_fn_store:
+ \hook_gput_next_code:ne {env/#1/after}
+ {\exp_not:N\@@_fn_restore:n{\int_use:N\c@footnote}{\exp_not:n{\footnotetext{#2}}}}}
+
+\AddToHook{env/function/begin}{\def\footnote{\@@_fn_footnote:nn{function}}}
+\AddToHook{env/variable/begin}{\def\footnote{\@@_fn_footnote:nn{variable}}}
+% \end{macrocode}
+%
% \subsection{Documenting templates}
%
% \begin{macrocode}
@@ -3713,7 +3740,7 @@ and all files in that bundle must be distributed together.
\@tempswatrue
\if@partsw
\@tempswafalse
- \cs_set:Npx \@tempb {#1}
+ \cs_set:Npe \@tempb {#1}
\clist_map_inline:Nn \@partlist
{
\if_meaning:w \@tempa \@tempb
@@ -3734,7 +3761,7 @@ and all files in that bundle must be distributed together.
\part{\currentfile}
{
\cs_set_eq:NN \ttfamily\relax
- \cs_gset:Npx \filekey
+ \cs_gset:Npe \filekey
{ \filekey,~ \thepart = { \ttfamily \currentfile } }
}
\DocInput{\currentfile}
@@ -3920,6 +3947,8 @@ and all files in that bundle must be distributed together.
\tl_new:N \l_@@_doc_def_tl
\tl_new:N \l_@@_doc_undef_tl
\tl_new:N \l_@@_undoc_def_tl
+\tl_const:Nn \c_@@_iow_separator_tl { ---- }
+\tl_const:Nn \c_@@_iow_midrule_tl { -- }
% \end{macrocode}
%
% \begin{macrocode}
@@ -3928,7 +3957,7 @@ and all files in that bundle must be distributed together.
\bool_lazy_and:nnT
{ \g_@@_typeset_implementation_bool } { \g_@@_checkfunc_bool }
{
- \iow_term:x { \c_@@_iow_separator_tl \iow_newline: }
+ \iow_term:e { \c_@@_iow_separator_tl \iow_newline: }
\iow_open:Nn \g_@@_func_iow { \c_sys_jobname_str .cmds }
\tl_clear:N \l_@@_doc_def_tl
@@ -3938,12 +3967,12 @@ and all files in that bundle must be distributed together.
{
\seq_if_in:NnTF \g_doc_macros_seq {##1}
{
- \tl_put_right:Nx \l_@@_doc_def_tl
+ \tl_put_right:Ne \l_@@_doc_def_tl
{ ##1 \iow_newline: }
\iow_now:Nn \g_@@_func_iow { > ~ ##1 }
}
{
- \tl_put_right:Nx \l_@@_doc_undef_tl
+ \tl_put_right:Ne \l_@@_doc_undef_tl
{ ##1 \iow_newline: }
\iow_now:Nn \g_@@_func_iow { ! ~ ##1 }
}
@@ -3952,7 +3981,7 @@ and all files in that bundle must be distributed together.
{
\seq_if_in:NnF \g_doc_functions_seq {##1}
{
- \tl_put_right:Nx \l_@@_undoc_def_tl
+ \tl_put_right:Ne \l_@@_undoc_def_tl
{ ##1 \iow_newline: }
\iow_now:Nn \g_@@_func_iow { ? ~ ##1 }
}
@@ -3971,13 +4000,13 @@ and all files in that bundle must be distributed together.
\l_@@_undoc_def_tl
\iow_close:N \g_@@_func_iow
- \iow_term:x { \c_@@_iow_separator_tl }
+ \iow_term:e { \c_@@_iow_separator_tl }
}
}
\AtEndDocument { \@@_show_functions_defined: }
% \end{macrocode}
%
-% TODO: use \cs{iow_term:x}.
+% TODO: use \cs{iow_term:e}.
% \begin{macrocode}
\cs_new_protected:Npn \@@_functions_typeout:nN #1#2
{
@@ -4014,7 +4043,7 @@ and all files in that bundle must be distributed together.
\iow_newline:
\space\space\space\space\space\space * ~ ##1
}
- \tl_put_right:Nx \l_@@_tmpa_tl
+ \tl_put_right:Ne \l_@@_tmpa_tl
{
\iow_newline: \iow_newline:
The~ following~ macro(s)~ have~ incomplete~ tests:
@@ -4032,7 +4061,7 @@ and all files in that bundle must be distributed together.
\iow_newline:
\space\space\space\space ##1
}
- \tl_put_right:Nx \l_@@_tmpa_tl
+ \tl_put_right:Ne \l_@@_tmpa_tl
{
\iow_newline:
\iow_newline:
@@ -4073,7 +4102,7 @@ and all files in that bundle must be distributed together.
% \end{macrocode}
% Force targets on every code line.
% \begin{macrocode}
-\cs_set_nopar:Npx \theCodelineNo
+\cs_set_nopar:Npe \theCodelineNo
{
\group_begin:
\exp_not:N \HD@savedestfalse
@@ -4091,7 +4120,7 @@ and all files in that bundle must be distributed together.
% \begin{macrocode}
\bool_new:N \l_@@_allow_indexing_bool
\bool_set_true:N \l_@@_allow_indexing_bool
-\use:x
+\use:e
{
\exp_not:n { \cs_set_nopar:Npn \@starttoc #1 }
{
@@ -4162,7 +4191,7 @@ and all files in that bundle must be distributed together.
% \begin{macrocode}
\cs_gset_protected:Npn \it@is@a #1
{
- \use:x
+ \use:e
{
\@@_special_index_module:nnnnN
{#1}
@@ -4223,7 +4252,7 @@ and all files in that bundle must be distributed together.
% \end{arguments}
% \begin{macrocode}
{
- \use:x
+ \use:e
{
\exp_not:n { \@@_special_index_aux:nnnnnn {#1} {#2} }
\tl_if_empty:nTF {#3}
@@ -4297,7 +4326,7 @@ and all files in that bundle must be distributed together.
% \begin{macrocode}
\group_begin:
\char_set_active_eq:NN - \scan_stop:
-\tl_const:Nx \c_@@_active_minus_tl { \char_generate:nn { `- } { 13 } }
+\tl_const:Ne \c_@@_active_minus_tl { \char_generate:nn { `- } { 13 } }
\group_end:
\cs_new_eq:NN \@@_old_hdpindex:nn \hdpindex
\cs_new_eq:NN \@@_old_hdclindex:nnn \hdclindex
@@ -4308,7 +4337,7 @@ and all files in that bundle must be distributed together.
\cs_new_protected:Npn \@@_hdindex:nn #1#2
{
\tl_set:Nn \l_@@_tmpa_tl {#2}
- \tl_replace_all:Nxn \l_@@_tmpa_tl
+ \tl_replace_all:Nen \l_@@_tmpa_tl
{ \exp_not:V \c_@@_active_minus_tl \exp_not:V \c_@@_active_minus_tl }
{ -- }
\seq_set_split:NnV \l_@@_tmpa_seq { -- } \l_@@_tmpa_tl
@@ -4322,11 +4351,11 @@ and all files in that bundle must be distributed together.
\tl_replace_all:Nnn \l_@@_tmpa_tl { MMMM } { \use_none:nn }
\tl_if_in:NnT \l_@@_tmpa_tl { MMMD }
{
- \tl_replace_all:Nxn \l_@@_tmpa_tl
+ \tl_replace_all:Nen \l_@@_tmpa_tl
{ \exp_not:V \c_@@_active_minus_tl MMMD } { - MMMD }
\tl_replace_all:Nnn \l_@@_tmpa_tl { - MMMD } { \@@_hdindex_aux:w }
}
- \use:x { \exp_not:n {#1} { \exp_not:V \l_@@_tmpa_tl } }
+ \use:e { \exp_not:n {#1} { \exp_not:V \l_@@_tmpa_tl } }
}
\cs_new_protected:Npn \@@_hdindex_aux:w #1 M { }
% \end{macrocode}
@@ -4335,7 +4364,7 @@ and all files in that bundle must be distributed together.
% \begin{macrocode}
\cs_new_protected:Npn \@@_special_index_set:Nn #1#2
{
- \__kernel_tl_set:Nx #1 { \tl_to_str:n {#2} }
+ \__kernel_tl_set:Ne #1 { \tl_to_str:n {#2} }
\@@_if_almost_str:nTF {#2}
{
\tl_replace_all:Non #1 { \tl_to_str:n { __ } }
@@ -4344,7 +4373,7 @@ and all files in that bundle must be distributed together.
\token_to_str:N \_ \token_to_str:N \_
\token_to_str:N \verb * \verbatimchar
}
- \exp_args:Nx \tl_map_inline:nn
+ \exp_args:Ne \tl_map_inline:nn
{ \tl_to_str:N \verbatimchar \token_to_str:N _ }
{
\tl_replace_all:Nnn #1 {##1}
@@ -4353,7 +4382,7 @@ and all files in that bundle must be distributed together.
\token_to_str:N \verb * \verbatimchar
}
}
- \__kernel_tl_set:Nx #1
+ \__kernel_tl_set:Ne #1
{
\token_to_str:N \verb * \verbatimchar
#1 \verbatimchar
@@ -4377,7 +4406,7 @@ and all files in that bundle must be distributed together.
{
\tl_map_inline:nn { \quotechar \actualchar \encapchar \levelchar \bslash }
{
- \tl_replace_all:Nxn #1
+ \tl_replace_all:Nen #1
{ \tl_to_str:N ##1 } { \quotechar \tl_to_str:N ##1 }
}
}
@@ -4404,7 +4433,7 @@ and all files in that bundle must be distributed together.
\cs_new_protected:Npn \@@_key_get:n #1
{
\@@_key_get_base:nN {#1} \l_@@_index_macro_tl
- \__kernel_tl_set:Nx \l_@@_index_key_tl
+ \__kernel_tl_set:Ne \l_@@_index_key_tl
{ \tl_to_str:N \l_@@_index_macro_tl }
\tl_clear:N \l_@@_index_module_tl
\tl_if_in:NoTF \l_@@_index_key_tl { \tl_to_str:n { __ } }
@@ -4427,7 +4456,7 @@ and all files in that bundle must be distributed together.
}
\cs_new_protected:Npn \@@_key_pop:
{
- \__kernel_tl_set:Nx \l_@@_index_key_tl
+ \__kernel_tl_set:Ne \l_@@_index_key_tl
{ \tl_tail:N \l_@@_index_key_tl }
}
% \end{macrocode}
@@ -4442,7 +4471,7 @@ and all files in that bundle must be distributed together.
{
\cs_set:Npn \@@_tmpa:w ##1 #1 ##2 \q_stop
{ \exp_not:n {##1} }
- \__kernel_tl_set:Nx \l_@@_index_module_tl
+ \__kernel_tl_set:Ne \l_@@_index_module_tl
{ \exp_after:wN \@@_tmpa:w \l_@@_index_module_tl #1 \q_stop }
}
\cs_new_protected:Npn \@@_key_drop_underscores:
@@ -4495,7 +4524,7 @@ and all files in that bundle must be distributed together.
% \begin{macrocode}
\cs_new_protected:Npn \@@_key_var:
{
- \exp_args:Nx \tl_if_head_eq_charcode:nNTF
+ \exp_args:Ne \tl_if_head_eq_charcode:nNTF
{ \exp_args:No \str_tail:n \l_@@_index_key_tl } _
{
\str_case:fn { \str_head:N \l_@@_index_key_tl }
@@ -4535,7 +4564,7 @@ and all files in that bundle must be distributed together.
% sorted differently in an index.
% \begin{macrocode}
\clist_new:N \g_@@_non_modules_clist
-\clist_gset:Nx \g_@@_non_modules_clist
+\clist_gset:Ne \g_@@_non_modules_clist
{
\tl_to_str:n
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
index 2b40c56fc50..df2b7c63abe 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
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 } }
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
index 1c1401e3929..2d2ae6a183f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -448,7 +448,10 @@
% \subsection{Writing to files}
%
% \begin{function}[updated = 2012-06-05]
-% {\iow_now:Nn, \iow_now:NV, \iow_now:Nx, \iow_now:cn, \iow_now:cV, \iow_now:cx}
+% {
+% \iow_now:Nn, \iow_now:NV, \iow_now:Ne,
+% \iow_now:cn, \iow_now:cV, \iow_now:ce
+% }
% \begin{syntax}
% \cs{iow_now:Nn} \meta{stream} \Arg{tokens}
% \end{syntax}
@@ -457,7 +460,7 @@
% on expansion of \cs{iow_now:Nn}).
% \end{function}
%
-% \begin{function}{\iow_log:n, \iow_log:x}
+% \begin{function}{\iow_log:n, \iow_log:e}
% \begin{syntax}
% \cs{iow_log:n} \Arg{tokens}
% \end{syntax}
@@ -465,7 +468,7 @@
% file immediately: it is a dedicated version of \cs{iow_now:Nn}.
% \end{function}
%
-% \begin{function}{\iow_term:n, \iow_term:x}
+% \begin{function}{\iow_term:n, \iow_term:e}
% \begin{syntax}
% \cs{iow_term:n} \Arg{tokens}
% \end{syntax}
@@ -475,8 +478,8 @@
%
% \begin{function}
% {
-% \iow_shipout:Nn, \iow_shipout:Nx,
-% \iow_shipout:cn, \iow_shipout:cx
+% \iow_shipout:Nn, \iow_shipout:Ne,
+% \iow_shipout:cn, \iow_shipout:ce
% }
% \begin{syntax}
% \cs{iow_shipout:Nn} \meta{stream} \Arg{tokens}
@@ -486,7 +489,7 @@
% shipout). The \texttt{x}-type variants expand the \meta{tokens}
% at the point where the function is used but \emph{not} when the
% resulting tokens are written to the \meta{stream}
-% (\emph{cf.}~\cs{iow_shipout_x:Nn}).
+% (\emph{cf.}~\cs{iow_shipout_e:Nn}).
% \begin{texnote}
% When using \pkg{expl3} with a format other than \LaTeX{}, new line
% characters inserted using \cs{iow_newline:} or using the
@@ -496,13 +499,13 @@
% \end{texnote}
% \end{function}
%
-% \begin{function}[updated = 2012-09-08]
+% \begin{function}[updated = 2023-09-17]
% {
-% \iow_shipout_x:Nn, \iow_shipout_x:Nx,
-% \iow_shipout_x:cn, \iow_shipout_x:cx
+% \iow_shipout_e:Nn, \iow_shipout_e:Ne,
+% \iow_shipout_e:cn, \iow_shipout_e:ce
% }
% \begin{syntax}
-% \cs{iow_shipout_x:Nn} \meta{stream} \Arg{tokens}
+% \cs{iow_shipout_e:Nn} \meta{stream} \Arg{tokens}
% \end{syntax}
% This function writes \meta{tokens} to the specified
% \meta{stream} when the current page is finalised (\emph{i.e.}~at
@@ -528,7 +531,7 @@
% write difficult characters such as |%|, |{|, |}|,
% \emph{etc.}~in messages, for example:
% \begin{verbatim}
-% \iow_now:Nx \g_my_iow { \iow_char:N \{ text \iow_char:N \} }
+% \iow_now:Ne \g_my_iow { \iow_char:N \{ text \iow_char:N \} }
% \end{verbatim}
% The function has no effect if writing is taking place without
% expansion (\emph{e.g.}~in the second argument of \cs{iow_now:Nn}).
@@ -546,14 +549,14 @@
% character inserted by \cs{iow_newline:} is not recognized by
% \TeX{}, which may lead to the insertion of additional unwanted
% line-breaks. This issue only affects \cs{iow_shipout:Nn},
-% \cs{iow_shipout_x:Nn} and direct uses of primitive operations.
+% \cs{iow_shipout_e:Nn} and direct uses of primitive operations.
% \end{texnote}
% \end{function}
%
% \subsection{Wrapping lines in output}
%
% \begin{function}[added = 2012-06-28, updated = 2017-12-04]
-% {\iow_wrap:nnnN, \iow_wrap:nxnN}
+% {\iow_wrap:nnnN, \iow_wrap:nenN}
% \begin{syntax}
% \cs{iow_wrap:nnnN} \Arg{text} \Arg{run-on text} \Arg{set up} \meta{function}
% \end{syntax}
@@ -705,8 +708,10 @@
% \end{texnote}
% \end{variable}
%
-% \begin{function}[TF, updated = 2012-02-10]{\file_if_exist:n, \file_if_exist:V}
+% \begin{function}[EXP, pTF, updated = 2023-09-18]
+% {\file_if_exist:n, \file_if_exist:V}
% \begin{syntax}
+% \cs{file_if_exist_p:n} \Arg{file name}
% \cs{file_if_exist:nTF} \Arg{file name} \Arg{true code} \Arg{false code}
% \end{syntax}
% Searches for \meta{file name} using the current \TeX{} search
@@ -714,7 +719,8 @@
% \cs{l_file_search_path_seq}.
% \end{function}
%
-% \begin{function}[noTF, added = 2019-01-16, updated = 2019-02-16]{\file_get:nnN}
+% \begin{function}[noTF, added = 2019-01-16, updated = 2019-02-16]
+% {\file_get:nnN, \file_get:VnN}
% \begin{syntax}
% \cs{file_get:nnN} \Arg{filename} \Arg{setup} \meta{tl}
% \cs{file_get:nnNTF} \Arg{filename} \Arg{setup} \meta{tl} \Arg{true code} \Arg{false code}
@@ -782,7 +788,8 @@
% Quotes (|"|) are invalid in file names and are discarded from the input.
% \end{function}
%
-% \begin{function}[EXP, added = 2020-06-24]{\file_parse_full_name:n}
+% \begin{function}[EXP, added = 2020-06-24]
+% {\file_parse_full_name:n, \file_parse_full_name:V}
% \begin{syntax}
% \cs{file_parse_full_name:n} \Arg{full name}
% \end{syntax}
@@ -791,7 +798,8 @@
% each inside a pair of braces.
% \end{function}
%
-% \begin{function}[EXP, added = 2020-06-24]{\file_parse_full_name_apply:nN}
+% \begin{function}[EXP, added = 2020-06-24]
+% {\file_parse_full_name_apply:nN, \file_parse_full_name_apply:VN}
% \begin{syntax}
% \cs{file_parse_full_name_apply:nN} \Arg{full name} \meta{function}
% \end{syntax}
@@ -801,7 +809,10 @@
% \end{function}
%
% \begin{function}[rEXP, added = 2019-11-19]
-% {\file_hex_dump:n, \file_hex_dump:nnn}
+% {
+% \file_hex_dump:n, \file_hex_dump:V,
+% \file_hex_dump:nnn, \file_hex_dump:Vnn
+% }
% \begin{syntax}
% \cs{file_hex_dump:n} \Arg{file name}
% \cs{file_hex_dump:nnn} \Arg{file name} \Arg{start index} \Arg{end index}
@@ -819,7 +830,10 @@
% \end{function}
%
% \begin{function}[noTF, added = 2019-11-19]
-% {\file_get_hex_dump:nN, \file_get_hex_dump:nnnN}
+% {
+% \file_get_hex_dump:nN, \file_get_hex_dump:VN,
+% \file_get_hex_dump:nnnN, \file_get_hex_dump:VnnN
+% }
% \begin{syntax}
% \cs{file_get_hex_dump:nN} \Arg{file name} \meta{tl var}
% \cs{file_get_hex_dump:nnnN} \Arg{file name} \Arg{start index} \Arg{end index} \meta{tl var}
@@ -829,7 +843,8 @@
% If the file is not found, the \meta{tl var} will be set to \cs{q_no_value}.
% \end{function}
%
-% \begin{function}[rEXP, added = 2019-09-03]{\file_mdfive_hash:n}
+% \begin{function}[rEXP, added = 2019-09-03]
+% {\file_mdfive_hash:n, \file_mdfive_hash:V}
% \begin{syntax}
% \cs{file_mdfive_hash:n} \Arg{file name}
% \end{syntax}
@@ -845,7 +860,7 @@
% \end{function}
%
% \begin{function}[noTF, added = 2017-07-11, updated = 2019-02-16]
-% {\file_get_mdfive_hash:nN}
+% {\file_get_mdfive_hash:nN, \file_get_mdfive_hash:VN}
% \begin{syntax}
% \cs{file_get_mdfive_hash:nN} \Arg{file name} \meta{tl var}
% \end{syntax}
@@ -854,7 +869,7 @@
% the \meta{tl var} will be set to \cs{q_no_value}.
% \end{function}
%
-% \begin{function}[rEXP, added = 2019-09-03]{\file_size:n}
+% \begin{function}[rEXP, added = 2019-09-03]{\file_size:n, \file_size:V}
% \begin{syntax}
% \cs{file_size:n} \Arg{file name}
% \end{syntax}
@@ -865,7 +880,7 @@
% \end{function}
%
% \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16]
-% {\file_get_size:nN}
+% {\file_get_size:nN, \file_get_size:VN}
% \begin{syntax}
% \cs{file_get_size:nN} \Arg{file name} \meta{tl var}
% \end{syntax}
@@ -875,7 +890,8 @@
% This is not available in older versions of \XeTeX{}.
% \end{function}
%
-% \begin{function}[rEXP, added = 2019-09-03]{\file_timestamp:n}
+% \begin{function}[rEXP, added = 2019-09-03]
+% {\file_timestamp:n, \file_timestamp:V}
% \begin{syntax}
% \cs{file_timestamp:n} \Arg{file name}
% \end{syntax}
@@ -891,7 +907,7 @@
% \end{function}
%
% \begin{function}[noTF, added = 2017-07-09, updated = 2019-02-16]
-% {\file_get_timestamp:nN}
+% {\file_get_timestamp:nN, \file_get_timestamp:VN}
% \begin{syntax}
% \cs{file_get_timestamp:nN} \Arg{file name} \meta{tl var}
% \end{syntax}
@@ -902,7 +918,12 @@
% \end{function}
%
% \begin{function}[added = 2019-05-13, updated = 2019-09-20, pTF, EXP]
-% {\file_compare_timestamp:nNn}
+% {
+% \file_compare_timestamp:nNn,
+% \file_compare_timestamp:nNV,
+% \file_compare_timestamp:VNn,
+% \file_compare_timestamp:VNV
+% }
% \begin{syntax}
% \cs{file_compare_timestamp_p:nNn} \Arg{file-1} \meta{comparator} \Arg{file-2}
% \cs{file_compare_timestamp:nNnTF} \Arg{file-1} \meta{comparator} \Arg{file-2} \Arg{true code} \Arg{false code}
@@ -935,7 +956,8 @@
% function. An error is raised if the file is not found.
% \end{function}
%
-% \begin{function}[added = 2023-05-18, EXP]{\file_input_raw:n}
+% \begin{function}[added = 2023-05-18, EXP]
+% {\file_input_raw:n, \file_input_raw:V}
% \begin{syntax}
% \cs{file_input_raw:n} \Arg{file name}
% \end{syntax}
@@ -950,7 +972,13 @@
% \end{texnote}
% \end{function}
%
-% \begin{function}[added = 2014-07-02]{\file_if_exist_input:n, \file_if_exist_input:nF}
+% \begin{function}[added = 2014-07-02]
+% {
+% \file_if_exist_input:n,
+% \file_if_exist_input:V,
+% \file_if_exist_input:nF,
+% \file_if_exist_input:VF
+% }
% \begin{syntax}
% \cs{file_if_exist_input:n} \Arg{file name}
% \cs{file_if_exist_input:nF} \Arg{file name} \Arg{false code}
@@ -1169,7 +1197,7 @@
{ \@@_open_stream:Nn #1 {#2} }
{
\@@_new:N #1
- \__kernel_tl_set:Nx \l_@@_stream_tl { \int_eval:n {#1} }
+ \__kernel_tl_set:Ne \l_@@_stream_tl { \int_eval:n {#1} }
\@@_open_stream:Nn #1 {#2}
}
}
@@ -1178,7 +1206,7 @@
% Here, we act defensively in case \LuaTeX{} is in use with an
% extensionless file name.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_open_stream:Nn #1#2
+\cs_new_protected:Npe \@@_open_stream:Nn #1#2
{
\tex_global:D \tex_chardef:D #1 = \exp_not:N \l_@@_stream_tl \scan_stop:
\prop_gput:NVn \exp_not:N \g_@@_streams_prop #1 {#2}
@@ -1192,7 +1220,7 @@
% \end{macro}
%
% \begin{macro}{\ior_shell_open:Nn}
-% \begin{macro}{\@@_shell_open:nN}
+% \begin{macro}{\@@_shell_open:nN, \@@_shell_open:oN}
% Actually much easier than either the standard open or input versions!
% When calling \cs{__kernel_ior_open:Nn} the file the pipe is added to
% signal a shell command, but the quotes are not added yet---they are
@@ -1201,18 +1229,19 @@
\cs_new_protected:Npn \ior_shell_open:Nn #1#2
{
\sys_if_shell:TF
- { \exp_args:No \@@_shell_open:nN { \tl_to_str:n {#2} } #1 }
+ { \@@_shell_open:oN { \tl_to_str:n {#2} } #1 }
{ \msg_error:nn { kernel } { pipe-failed } }
}
\cs_new_protected:Npn \@@_shell_open:nN #1#2
{
\tl_if_in:nnTF {#1} { " }
{
- \msg_error:nnx
+ \msg_error:nne
{ kernel } { quote-in-shell } {#1}
}
{ \__kernel_ior_open:Nn #2 { |#1 } }
}
+\cs_generate_variant:Nn \@@_shell_open:nN { o }
\msg_new:nnnn { kernel } { pipe-failed }
{ Cannot~run~piped~system~commands. }
{
@@ -1259,10 +1288,10 @@
{
\prop_get:NVNTF \g_@@_streams_prop #2 \l_@@_internal_tl
{
- \exp_args:Nx #1
+ \exp_args:Ne #1
{ \token_to_str:N #2 ~ open: ~ \l_@@_internal_tl }
}
- { \exp_args:Nx #1 { \token_to_str:N #2 ~ closed } }
+ { \exp_args:Ne #1 { \token_to_str:N #2 ~ closed } }
}
}
% \end{macrocode}
@@ -1278,8 +1307,8 @@
% \texttt{show-streams} takes care of translating |ior|/|iow| to
% English.
% \begin{macrocode}
-\cs_new_protected:Npn \ior_show_list: { \@@_list:N \msg_show:nnxxxx }
-\cs_new_protected:Npn \ior_log_list: { \@@_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \ior_show_list: { \@@_list:N \msg_show:nneeee }
+\cs_new_protected:Npn \ior_log_list: { \@@_list:N \msg_log:nneeee }
\cs_new_protected:Npn \@@_list:N #1
{
#1 { kernel } { show-streams }
@@ -1643,14 +1672,14 @@
% \begin{macrocode}
\cs_new_protected:Npn \iow_open:Nn #1#2
{
- \__kernel_tl_set:Nx \l_@@_file_name_tl
+ \__kernel_tl_set:Ne \l_@@_file_name_tl
{ \__kernel_file_name_sanitize:n {#2} }
\iow_close:N #1
\seq_gpop:NNTF \g_@@_streams_seq \l_@@_stream_tl
{ \@@_open_stream:NV #1 \l_@@_file_name_tl }
{
\@@_new:N #1
- \__kernel_tl_set:Nx \l_@@_stream_tl { \int_eval:n {#1} }
+ \__kernel_tl_set:Ne \l_@@_stream_tl { \int_eval:n {#1} }
\@@_open_stream:NV #1 \l_@@_file_name_tl
}
}
@@ -1668,24 +1697,25 @@
% \end{macro}
%
% \begin{macro}{\iow_shell_open:Nn}
-% \begin{macro}{\@@_shell_open:nN}
+% \begin{macro}{\@@_shell_open:nN, \@@_shell_open:oN}
% Very similar to the \texttt{ior} version
% \begin{macrocode}
\cs_new_protected:Npn \iow_shell_open:Nn #1#2
{
\sys_if_shell:TF
- { \exp_args:No \@@_shell_open:nN { \tl_to_str:n {#2} } #1 }
+ { \@@_shell_open:oN { \tl_to_str:n {#2} } #1 }
{ \msg_error:nn { kernel } { pipe-failed } }
}
\cs_new_protected:Npn \@@_shell_open:nN #1#2
{
\tl_if_in:nnTF {#1} { " }
{
- \msg_error:nnx
+ \msg_error:nne
{ kernel } { quote-in-shell } {#1}
}
{ \__kernel_iow_open:Nn #2 { |#1 } }
}
+\cs_generate_variant:Nn \@@_shell_open:nN { o }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1725,10 +1755,10 @@
{
\prop_get:NVNTF \g_@@_streams_prop #2 \l_@@_internal_tl
{
- \exp_args:Nx #1
+ \exp_args:Ne #1
{ \token_to_str:N #2 ~ open: ~ \l_@@_internal_tl }
}
- { \exp_args:Nx #1 { \token_to_str:N #2 ~ closed } }
+ { \exp_args:Ne #1 { \token_to_str:N #2 ~ closed } }
}
}
% \end{macrocode}
@@ -1738,8 +1768,8 @@
% \begin{macro}{\@@_list:N}
% Done as for input, but with a copy of the auxiliary so the name is correct.
% \begin{macrocode}
-\cs_new_protected:Npn \iow_show_list: { \@@_list:N \msg_show:nnxxxx }
-\cs_new_protected:Npn \iow_log_list: { \@@_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \iow_show_list: { \@@_list:N \msg_show:nneeee }
+\cs_new_protected:Npn \iow_log_list: { \@@_list:N \msg_log:nneeee }
\cs_new_protected:Npn \@@_list:N #1
{
#1 { kernel } { show-streams }
@@ -1756,29 +1786,40 @@
%
% \subsubsection{Deferred writing}
%
-% \begin{macro}{\iow_shipout_x:Nn, \iow_shipout_x:Nx, \iow_shipout_x:cn, \iow_shipout_x:cx}
+% \begin{macro}
+% {
+% \iow_shipout_e:Nn, \iow_shipout_e:Ne,
+% \iow_shipout_e:cn, \iow_shipout_e:ce
+% }
% First the easy part, this is the primitive, which expects its
% argument to be braced.
% \begin{macrocode}
-\cs_new_protected:Npn \iow_shipout_x:Nn #1#2
+\cs_new_protected:Npn \iow_shipout_e:Nn #1#2
{ \tex_write:D #1 {#2} }
-\cs_generate_variant:Nn \iow_shipout_x:Nn { c, Nx, cx }
+\cs_generate_variant:Nn \iow_shipout_e:Nn { Ne , c, ce }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\iow_shipout:Nn, \iow_shipout:Nx, \iow_shipout:cn, \iow_shipout:cx}
+% \begin{macro}
+% {
+% \iow_shipout:Nn, \iow_shipout:Ne,
+% \iow_shipout:Nx,
+% \iow_shipout:cn, \iow_shipout:ce,
+% \iow_shipout:cx
+% }
% With \eTeX{} available deferred writing without expansion is easy.
% \begin{macrocode}
\cs_new_protected:Npn \iow_shipout:Nn #1#2
{ \tex_write:D #1 { \exp_not:n {#2} } }
-\cs_generate_variant:Nn \iow_shipout:Nn { c, Nx, cx }
+\cs_generate_variant:Nn \iow_shipout:Nn { Ne , c, ce }
+\cs_generate_variant:Nn \iow_shipout:Nn { Nx , cx }
% \end{macrocode}
% \end{macro}
%
% \subsubsection{Immediate writing}
%
% \begin{macro}{\__kernel_iow_with:Nnn}
-% \begin{macro}{\@@_with:nNnn}
+% \begin{macro}{\@@_with:nNnn, \@@_with:oNnn}
% If the integer~|#1| is equal to~|#2|, just leave~|#3| in the input
% stream. Otherwise, pass the old value to an auxiliary, which sets
% the integer to the new value, runs the code, and restores the
@@ -1788,7 +1829,7 @@
{
\int_compare:nNnTF {#1} = {#2}
{ \use:n }
- { \exp_args:No \@@_with:nNnn { \int_use:N #1 } #1 {#2} }
+ { \@@_with:oNnn { \int_use:N #1 } #1 {#2} }
}
\cs_new_protected:Npn \@@_with:nNnn #1#2#3#4
{
@@ -1796,14 +1837,17 @@
#4
\int_set:Nn #2 {#1}
}
+\cs_generate_variant:Nn \@@_with:nNnn { o }
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}
% {
-% \iow_now:Nn, \iow_now:NV, \iow_now:Nx,
-% \iow_now:cn, \iow_now:cV, \iow_now:cx
+% \iow_now:Nn, \iow_now:NV, \iow_now:Ne,
+% \iow_now:Nx,
+% \iow_now:cn, \iow_now:cV, \iow_now:ce,
+% \iow_now:cx
% }
% This routine writes the second argument onto the output stream without
% expansion. If this stream isn't open, the output goes to the terminal
@@ -1822,18 +1866,23 @@
\__kernel_iow_with:Nnn \tex_newlinechar:D { `\^^J }
{ \tex_immediate:D \tex_write:D #1 { \exp_not:n {#2} } }
}
-\cs_generate_variant:Nn \iow_now:Nn { NV , Nx , c , cV , cx }
+\cs_generate_variant:Nn \iow_now:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \iow_now:Nn { Nx , cx }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\iow_log:n, \iow_log:x}
-% \begin{macro}{\iow_term:n, \iow_term:x}
-% Writing to the log and the terminal directly are relatively easy.
+% \begin{macro}{\iow_log:n, \iow_log:e, \iow_log:x}
+% \begin{macro}{\iow_term:n, \iow_term:e, \iow_term:x}
+% Writing to the log and the terminal directly are relatively easy;
+% as we need the two \texttt{e}-type variants for bootstrapping,
+% they are redefinitions here.
% \begin{macrocode}
-\cs_set_protected:Npn \iow_log:x { \iow_now:Nx \c_log_iow }
\cs_new_protected:Npn \iow_log:n { \iow_now:Nn \c_log_iow }
-\cs_set_protected:Npn \iow_term:x { \iow_now:Nx \c_term_iow }
+\cs_set_protected:Npn \iow_log:e { \iow_now:Ne \c_log_iow }
+\cs_generate_variant:Nn \iow_log:n { x }
\cs_new_protected:Npn \iow_term:n { \iow_now:Nn \c_term_iow }
+\cs_set_protected:Npn \iow_term:e { \iow_now:Ne \c_term_iow }
+\cs_generate_variant:Nn \iow_term:n { x }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1902,14 +1951,14 @@
\cs_new:Npn \@@_unindent:w { }
\cs_new_protected:Npn \@@_set_indent:n #1
{
- \__kernel_tl_set:Nx \l_@@_one_indent_tl
+ \__kernel_tl_set:Ne \l_@@_one_indent_tl
{ \exp_args:No \__kernel_str_to_other_fast:n { \tl_to_str:n {#1} } }
\int_set:Nn \l_@@_one_indent_int
{ \str_count:N \l_@@_one_indent_tl }
\exp_last_unbraced:NNo
\cs_set:Npn \@@_unindent:w \l_@@_one_indent_tl { }
}
-\exp_args:Nx \@@_set_indent:n { \prg_replicate:nn { 4 } { ~ } }
+\exp_args:Ne \@@_set_indent:n { \prg_replicate:nn { 4 } { ~ } }
% \end{macrocode}
% \end{variable}
% \end{macro}
@@ -1968,13 +2017,13 @@
% \begin{macrocode}
\group_begin:
\int_set:Nn \tex_escapechar:D { -1 }
- \tl_const:Nx \c_@@_wrap_marker_tl
+ \tl_const:Ne \c_@@_wrap_marker_tl
{ \tl_to_str:n { \^^I \^^O \^^W \^^_ \^^W \^^R \^^A \^^P } }
\group_end:
\tl_map_inline:nn
{ { end } { newline } { allow_break } { indent } { unindent } }
{
- \tl_const:cx { c_@@_wrap_ #1 _marker_tl }
+ \tl_const:ce { c_@@_wrap_ #1 _marker_tl }
{
\c_@@_wrap_marker_tl
#1
@@ -1998,7 +2047,7 @@
\msg_error:nnnn { kernel } { iow-indent }
{ \iow_wrap:nnnN } { \iow_wrap_allow_break: }
}
-\cs_new:Npx \@@_wrap_allow_break: { \c_@@_wrap_allow_break_marker_tl }
+\cs_new:Npe \@@_wrap_allow_break: { \c_@@_wrap_allow_break_marker_tl }
\cs_new:Npn \@@_wrap_allow_break_error:
{
\msg_expandable_error:nnnn { kernel } { iow-indent }
@@ -2026,7 +2075,7 @@
{ \iow_wrap:nnnN } { \iow_indent:n } {#1}
#1
}
-\cs_new:Npx \@@_indent:n #1
+\cs_new:Npe \@@_indent:n #1
{
\c_@@_wrap_indent_marker_tl
#1
@@ -2043,7 +2092,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\iow_wrap:nnnN, \iow_wrap:nxnN}
+% \begin{macro}{\iow_wrap:nnnN, \iow_wrap:nenN}
% The main wrapping function works as follows. First give |\\|,
% \verb*|\ | and other formatting commands the correct definition for
% messages and perform the given setup~|#3|. The definition of
@@ -2059,11 +2108,11 @@
\group_begin:
\cs_if_exist_use:N \conditionally@traceoff
\int_set:Nn \tex_escapechar:D { -1 }
- \cs_set:Npx \{ { \token_to_str:N \{ }
- \cs_set:Npx \# { \token_to_str:N \# }
- \cs_set:Npx \} { \token_to_str:N \} }
- \cs_set:Npx \% { \token_to_str:N \% }
- \cs_set:Npx \~ { \token_to_str:N \~ }
+ \cs_set:Npe \{ { \token_to_str:N \{ }
+ \cs_set:Npe \# { \token_to_str:N \# }
+ \cs_set:Npe \} { \token_to_str:N \} }
+ \cs_set:Npe \% { \token_to_str:N \% }
+ \cs_set:Npe \~ { \token_to_str:N \~ }
\int_set:Nn \tex_escapechar:D { 92 }
\cs_set_eq:NN \\ \iow_newline:
\cs_set_eq:NN \ \c_catcode_other_space_tl
@@ -2079,7 +2128,7 @@
% \cs{iow_wrap:nnnN}.
% \begin{macrocode}
\cs_set_eq:NN \protect \token_to_str:N
- \__kernel_tl_set:Nx \l_@@_wrap_tl {#1}
+ \__kernel_tl_set:Ne \l_@@_wrap_tl {#1}
\cs_set_eq:NN \iow_wrap_allow_break: \@@_wrap_allow_break_error:
\cs_set_eq:NN \iow_indent:n \@@_indent_error:n
% \end{macrocode}
@@ -2087,8 +2136,8 @@
% then convert to a string) and initialize the target count for lines
% (the first line has target count \cs{l_iow_line_count_int} instead).
% \begin{macrocode}
- \__kernel_tl_set:Nx \l_@@_newline_tl { \iow_newline: #2 }
- \__kernel_tl_set:Nx \l_@@_newline_tl { \tl_to_str:N \l_@@_newline_tl }
+ \__kernel_tl_set:Ne \l_@@_newline_tl { \iow_newline: #2 }
+ \__kernel_tl_set:Ne \l_@@_newline_tl { \tl_to_str:N \l_@@_newline_tl }
\int_set:Nn \l_@@_line_target_int
{ \l_iow_line_count_int - \str_count:N \l_@@_newline_tl + 1 }
% \end{macrocode}
@@ -2112,7 +2161,7 @@
\exp_args:NNf \group_end:
#4 { \tl_to_str:N \l_@@_wrap_tl }
}
-\cs_generate_variant:Nn \iow_wrap:nnnN { nx }
+\cs_generate_variant:Nn \iow_wrap:nnnN { ne }
% \end{macrocode}
% \end{macro}
%
@@ -2128,12 +2177,12 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_wrap_do:
{
- \__kernel_tl_set:Nx \l_@@_wrap_tl
+ \__kernel_tl_set:Ne \l_@@_wrap_tl
{
\exp_args:No \__kernel_str_to_other_fast:n \l_@@_wrap_tl
\c_@@_wrap_end_marker_tl
}
- \__kernel_tl_set:Nx \l_@@_wrap_tl
+ \__kernel_tl_set:Ne \l_@@_wrap_tl
{
\exp_after:wN \@@_wrap_fix_newline:w \l_@@_wrap_tl
^^J \q_@@_nil ^^J \s_@@_stop
@@ -2397,7 +2446,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_wrap_allow_break:n #1
{
- \__kernel_tl_set:Nx \l_@@_line_tl
+ \__kernel_tl_set:Ne \l_@@_line_tl
{ \l_@@_line_tl \@@_wrap_trim:N \l_@@_line_part_tl }
\bool_set_false:N \l_@@_line_break_bool
\tl_if_empty:NTF \l_@@_line_part_tl
@@ -2417,7 +2466,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_wrap_indent:n #1
{
- \tl_put_right:Nx \l_@@_line_tl { \l_@@_line_part_tl }
+ \tl_put_right:Ne \l_@@_line_tl { \l_@@_line_part_tl }
\bool_set_false:N \l_@@_line_break_bool
\int_add:Nn \l_@@_indent_int { \l_@@_one_indent_int }
\tl_put_right:No \l_@@_indent_tl { \l_@@_one_indent_tl }
@@ -2425,10 +2474,10 @@
}
\cs_new_protected:Npn \@@_wrap_unindent:n #1
{
- \tl_put_right:Nx \l_@@_line_tl { \l_@@_line_part_tl }
+ \tl_put_right:Ne \l_@@_line_tl { \l_@@_line_part_tl }
\bool_set_false:N \l_@@_line_break_bool
\int_sub:Nn \l_@@_indent_int { \l_@@_one_indent_int }
- \__kernel_tl_set:Nx \l_@@_indent_tl
+ \__kernel_tl_set:Ne \l_@@_indent_tl
{ \exp_after:wN \@@_unindent:w \l_@@_indent_tl }
\@@_wrap_chunk:nw {#1}
}
@@ -2467,9 +2516,9 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_wrap_store_do:n #1
{
- \__kernel_tl_set:Nx \l_@@_line_tl
+ \__kernel_tl_set:Ne \l_@@_line_tl
{ \l_@@_line_tl \l_@@_line_part_tl }
- \__kernel_tl_set:Nx \l_@@_wrap_tl
+ \__kernel_tl_set:Ne \l_@@_wrap_tl
{
\l_@@_wrap_tl
\l_@@_newline_tl
@@ -2495,6 +2544,21 @@
% \end{macrocode}
% \end{macro}
%
+% \subsection{Deprecated functions}
+%
+% \begin{macro}
+% {
+% \iow_shipout_x:Nn, \iow_shipout_x:Nx,
+% \iow_shipout_x:cn, \iow_shipout_x:cx
+% }
+% Previously described as \texttt{x}-type, but the hash behaviour is really
+% \texttt{e}-type.
+% \begin{macrocode}
+\cs_new_eq:NN \iow_shipout_x:Nn \iow_shipout_e:Nn
+\cs_generate_variant:Nn \iow_shipout_x:Nn { Nx , c, cx }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macrocode}
%<@@=file>
% \end{macrocode}
@@ -2539,7 +2603,7 @@
{
\cs_set:Npn \@@_tmp:w ##1 " ##2 " ##3 \s_@@_stop
{ { } {##2} { } }
- \seq_gput_right:Nx \g_@@_stack_seq
+ \seq_gput_right:Ne \g_@@_stack_seq
{
\exp_after:wN \@@_tmp:w \tex_jobname:D
" \tex_jobname:D " \s_@@_stop
@@ -2811,11 +2875,11 @@
% The same idea as the marker for rescanning token lists: this pair of
% tokens cannot appear in a file that is being input.
% \begin{macrocode}
-\tl_const:Nx \c_@@_marker_tl { : \token_to_str:N : }
+\tl_const:Ne \c_@@_marker_tl { : \token_to_str:N : }
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}[TF]{\file_get:nnN}
+% \begin{macro}[TF]{\file_get:nnN, \file_get:VnN}
% \begin{macro}{\file_get:nnN,\@@_get_aux:nnN,\@@_get_do:Nw}
% The approach here is similar to that for \cs{tl_set_rescan:Nnn}.
% The file contents are grabbed as an argument delimited by
@@ -2830,6 +2894,7 @@
\file_get:nnNF {#1} {#2} #3
{ \tl_set:Nn #3 { \q_no_value } }
}
+\cs_generate_variant:Nn \file_get:nnN { V }
\prg_new_protected_conditional:Npnn \file_get:nnN #1#2#3 { T , F , TF }
{
\file_get_full_name:nNTF {#1} \l_@@_full_name_tl
@@ -2841,7 +2906,8 @@
}
{ \prg_return_false: }
}
-\cs_new_protected:Npx \@@_get_aux:nnN #1#2#3
+\prg_generate_conditional_variant:Nnn \file_get:nnN { V } { T , F , TF }
+\cs_new_protected:Npe \@@_get_aux:nnN #1#2#3
{
\exp_not:N \if_false: { \exp_not:N \fi:
\group_begin:
@@ -2901,6 +2967,7 @@
\exp_args:Ne \@@_full_name:n
{ \__kernel_file_name_sanitize:n {#1} }
}
+\cs_generate_variant:Nn \file_full_name:n { V }
% \end{macrocode}
% First, we check of the file is just here: no mapping so we do not
% need the break part of the broader auxiliary. We are using the fact
@@ -3011,7 +3078,7 @@
}
{ \@@_ext_check:nnw {#1} { #2 #3 / } #4 / #5 \s_@@_stop }
}
-\cs_new:Npx \@@_ext_check:nnnw #1#2#3#4 . #5 . #6 \s_@@_stop
+\cs_new:Npe \@@_ext_check:nnnw #1#2#3#4 . #5 . #6 \s_@@_stop
{
\exp_not:N \@@_quark_if_nil:nTF {#5}
{
@@ -3065,15 +3132,14 @@
\cs_generate_variant:Nn \file_get_full_name:nN { V }
\prg_new_protected_conditional:Npnn \file_get_full_name:nN #1#2 { T , F , TF }
{
- \__kernel_tl_set:Nx #2
+ \__kernel_tl_set:Ne #2
{ \file_full_name:n {#1} }
\tl_if_empty:NTF #2
{ \prg_return_false: }
{ \prg_return_true: }
}
-\cs_generate_variant:Nn \file_get_full_name:nNT { V }
-\cs_generate_variant:Nn \file_get_full_name:nNF { V }
-\cs_generate_variant:Nn \file_get_full_name:nNTF { V }
+\prg_generate_conditional_variant:Nnn \file_get_full_name:nN
+ { V } { T , F , TF }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -3086,7 +3152,12 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}[rEXP]{\file_mdfive_hash:n, \file_size:n, \file_timestamp:n}
+% \begin{macro}[rEXP]
+% {
+% \file_mdfive_hash:n, \file_mdfive_hash:V,
+% \file_size:n, \file_size:V,
+% \file_timestamp:n, \file_timestamp:V
+% }
% \begin{macro}[rEXP]{\@@_details:nn, \@@_details_aux:nn}
% \begin{macro}[rEXP]{\@@_mdfive_hash:n}
% Getting file details by expansion is relatively easy if a bit repetitive.
@@ -3095,8 +3166,10 @@
% \begin{macrocode}
\cs_new:Npn \file_size:n #1
{ \@@_details:nn {#1} { size } }
+\cs_generate_variant:Nn \file_size:n { V }
\cs_new:Npn \file_timestamp:n #1
{ \@@_details:nn {#1} { moddate } }
+\cs_generate_variant:Nn \file_timestamp:n { V }
\cs_new:Npn \@@_details:nn #1#2
{
\exp_args:Ne \@@_details_aux:nn
@@ -3109,6 +3182,7 @@
}
\cs_new:Npn \file_mdfive_hash:n #1
{ \exp_args:Ne \@@_mdfive_hash:n { \file_full_name:n {#1} } }
+\cs_generate_variant:Nn \file_mdfive_hash:n { V }
\cs_new:Npn \@@_mdfive_hash:n #1
{ \tex_mdfivesum:D file {#1} }
% \end{macrocode}
@@ -3116,10 +3190,10 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}[rEXP]{\file_hex_dump:nnn, \@@_hex_dump_auxi:nnn}
+% \begin{macro}[rEXP]{\file_hex_dump:nnn, \file_hex_dump:Vnn, \@@_hex_dump_auxi:nnn}
% \begin{macro}[rEXP]{\@@_hex_dump_auxii:nnnn, \@@_hex_dump_auxiii:nnnn}
% \begin{macro}[rEXP]{\@@_hex_dump_auxiiv:nnn}
-% \begin{macro}[rEXP]{\file_hex_dump:n, \@@_hex_dump:n}
+% \begin{macro}[rEXP]{\file_hex_dump:n, \file_hex_dump:V, \@@_hex_dump:n}
% These are separate as they need multiple arguments \emph{or} the
% file size. For \LuaTeX{}, the emulation does not need the file
% size so we save a little on expansion.
@@ -3131,6 +3205,7 @@
{ \int_eval:n {#2} }
{ \int_eval:n {#3} }
}
+\cs_generate_variant:Nn \file_hex_dump:nnn { V }
\cs_new:Npn \@@_hex_dump_auxi:nnn #1#2#3
{
\bool_lazy_any:nF
@@ -3174,6 +3249,7 @@
}
\cs_new:Npn \file_hex_dump:n #1
{ \exp_args:Ne \@@_hex_dump:n { \file_full_name:n {#1} } }
+\cs_generate_variant:Nn \file_hex_dump:n { V }
\sys_if_engine_luatex:TF
{
\cs_new:Npn \@@_hex_dump:n #1
@@ -3197,10 +3273,10 @@
%
% \begin{macro}[noTF]
% {
-% \file_get_hex_dump:nN,
-% \file_get_mdfive_hash:nN
-% \file_get_size:nN,
-% \file_get_timestamp:nN
+% \file_get_hex_dump:nN, \file_get_hex_dump:VN,
+% \file_get_mdfive_hash:nN, \file_get_mdfive_hash:VN,
+% \file_get_size:nN, \file_get_size:VN,
+% \file_get_timestamp:nN, \file_get_timestamp:VN
% }
% \begin{macro}{\@@_get_details:nnN}
% Non-expandable wrappers around the above in the case where appropriate
@@ -3208,23 +3284,35 @@
% \begin{macrocode}
\cs_new_protected:Npn \file_get_hex_dump:nN #1#2
{ \file_get_hex_dump:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\cs_generate_variant:Nn \file_get_hex_dump:nN { V }
\cs_new_protected:Npn \file_get_mdfive_hash:nN #1#2
{ \file_get_mdfive_hash:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\cs_generate_variant:Nn \file_get_mdfive_hash:nN { V }
\cs_new_protected:Npn \file_get_size:nN #1#2
{ \file_get_size:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\cs_generate_variant:Nn \file_get_size:nN { V }
\cs_new_protected:Npn \file_get_timestamp:nN #1#2
{ \file_get_timestamp:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\cs_generate_variant:Nn \file_get_timestamp:nN { V }
\prg_new_protected_conditional:Npnn \file_get_hex_dump:nN #1#2 { T , F , TF }
{ \@@_get_details:nnN {#1} { hex_dump } #2 }
+\prg_generate_conditional_variant:Nnn \file_get_hex_dump:nN
+ { V } { T , F , TF }
\prg_new_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 { T , F , TF }
{ \@@_get_details:nnN {#1} { mdfive_hash } #2 }
+\prg_generate_conditional_variant:Nnn \file_get_mdfive_hash:nN
+ { V } { T , F , TF }
\prg_new_protected_conditional:Npnn \file_get_size:nN #1#2 { T , F , TF }
{ \@@_get_details:nnN {#1} { size } #2 }
+\prg_generate_conditional_variant:Nnn \file_get_size:nN
+ { V } { T , F , TF }
\prg_new_protected_conditional:Npnn \file_get_timestamp:nN #1#2 { T , F , TF }
{ \@@_get_details:nnN {#1} { timestamp } #2 }
+\prg_generate_conditional_variant:Nnn \file_get_timestamp:nN
+ { V } { T , F , TF }
\cs_new_protected:Npn \@@_get_details:nnN #1#2#3
{
- \__kernel_tl_set:Nx #3
+ \__kernel_tl_set:Ne #3
{ \use:c { file_ #2 :n } {#1} }
\tl_if_empty:NTF #3
{ \prg_return_false: }
@@ -3234,7 +3322,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}[noTF]{\file_get_hex_dump:nnnN}
+% \begin{macro}[noTF]{\file_get_hex_dump:nnnN, \file_get_hex_dump:VnnN}
% Custom code due to the additional arguments.
% \begin{macrocode}
\cs_new_protected:Npn \file_get_hex_dump:nnnN #1#2#3#4
@@ -3242,15 +3330,18 @@
\file_get_hex_dump:nnnNF {#1} {#2} {#3} #4
{ \tl_set:Nn #4 { \q_no_value } }
}
+\cs_generate_variant:Nn \file_get_hex_dump:nnnN { V }
\prg_new_protected_conditional:Npnn \file_get_hex_dump:nnnN #1#2#3#4
{ T , F , TF }
{
- \__kernel_tl_set:Nx #4
+ \__kernel_tl_set:Ne #4
{ \file_hex_dump:nnn {#1} {#2} {#3} }
\tl_if_empty:NTF #4
{ \prg_return_false: }
{ \prg_return_true: }
}
+\prg_generate_conditional_variant:Nnn \file_get_hex_dump:nnnN
+ { V } { T , F , TF }
% \end{macrocode}
% \end{macro}
%
@@ -3262,7 +3353,13 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP, pTF]{\file_compare_timestamp:nNn}
+% \begin{macro}[EXP, pTF]
+% {
+% \file_compare_timestamp:nNn,
+% \file_compare_timestamp:nNV,
+% \file_compare_timestamp:VNn
+% \file_compare_timestamp:VNV
+% }
% \begin{macro}[EXP]{\@@_compare_timestamp:nnN}
% \begin{macro}[EXP]{\@@_timestamp:n}
% Comparison of file date can be done by using the low-level nature of the
@@ -3276,6 +3373,8 @@
{ \file_full_name:n {#3} }
#2
}
+\prg_generate_conditional_variant:Nnn \file_compare_timestamp:nNn
+ { nNV , V , VNV } { p , T , F , TF }
\cs_new:Npn \@@_compare_timestamp:nnN #1#2#3
{
\tl_if_blank:nTF {#1}
@@ -3320,17 +3419,23 @@
% something, whereas if the file was not located then the return value
% is empty.
% \begin{macrocode}
-\prg_new_protected_conditional:Npnn \file_if_exist:n #1 { T , F , TF }
+\prg_new_conditional:Npnn \file_if_exist:n #1 { p , T , F , TF }
{
- \file_get_full_name:nNTF {#1} \l_@@_full_name_tl
- { \prg_return_true: }
+ \tl_if_blank:eTF { \file_full_name:n {#1} }
{ \prg_return_false: }
+ { \prg_return_true: }
}
-\prg_generate_conditional_variant:Nnn \file_if_exist:n { V } { T , F , TF }
+\prg_generate_conditional_variant:Nnn \file_if_exist:n { V } { p , T , F , TF }
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\file_if_exist_input:n, \file_if_exist_input:nF}
+% \begin{macro}
+% {
+% \file_if_exist_input:n,
+% \file_if_exist_input:V,
+% \file_if_exist_input:nF,
+% \file_if_exist_input:VF
+% }
% Input of a file with a test for existence. We do not define the |T|
% or |TF| variants because the most useful place to place the
% \meta{true code} would be inconsistent with other conditionals.
@@ -3340,12 +3445,14 @@
\file_get_full_name:nNT {#1} \l_@@_full_name_tl
{ \@@_input:V \l_@@_full_name_tl }
}
+\cs_generate_variant:Nn \file_if_exist_input:n { V }
\cs_new_protected:Npn \file_if_exist_input:nF #1#2
{
\file_get_full_name:nNTF {#1} \l_@@_full_name_tl
{ \@@_input:V \l_@@_full_name_tl }
{#2}
}
+\cs_generate_variant:Nn \file_if_exist_input:nF { V }
% \end{macrocode}
% \end{macro}
%
@@ -3361,7 +3468,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \__kernel_file_missing:n #1
{
- \msg_error:nnx { kernel } { file-not-found }
+ \msg_error:nne { kernel } { file-not-found }
{ \__kernel_file_name_sanitize:n {#1} }
}
% \end{macrocode}
@@ -3384,7 +3491,7 @@
{ \__kernel_file_missing:n {#1} }
}
\cs_generate_variant:Nn \file_input:n { V }
-\cs_new_protected:Npx \@@_input:n #1
+\cs_new_protected:Npe \@@_input:n #1
{
\exp_not:N \clist_if_exist:NTF \exp_not:N \@filelist
{ \exp_not:N \@addtofilelist {#1} }
@@ -3403,7 +3510,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_input_push:n #1
{
- \seq_gpush:Nx \g_@@_stack_seq
+ \seq_gpush:Ne \g_@@_stack_seq
{
{ \g_file_curr_dir_str }
{ \g_file_curr_name_str }
@@ -3435,12 +3542,13 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\file_input_raw:n, \@@_input_raw:nn}
+% \begin{macro}{\file_input_raw:n, \file_input_raw:V, \@@_input_raw:nn}
% No error checking, no tracking.
% \begin{macrocode}
\cs_new:Npn \file_input_raw:n #1
{ \exp_args:Ne \@@_input_raw:nn { \file_full_name:n {#1} } {#1} }
-\cs_new:Npx \@@_input_raw:nn #1#2
+\cs_generate_variant:Nn \file_input_raw:n { V }
+\cs_new:Npe \@@_input_raw:nn #1#2
{
\exp_not:N \tl_if_blank:nTF {#1}
{
@@ -3459,7 +3567,8 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\file_parse_full_name:n, \file_parse_full_name_apply:nN}
+% \begin{macro}{\file_parse_full_name:n, \file_parse_full_name:nV}
+% \begin{macro}{\file_parse_full_name_apply:nN \file_parse_full_name_apply:VN}
% The main parsing macro \cs{file_parse_full_name_apply:nN} passes the
% file name |#1| through \cs{__kernel_file_name_sanitize:n} so that we
% have a single normalised way to treat files internally.
@@ -3472,11 +3581,13 @@
\file_parse_full_name_apply:nN {#1}
\prg_do_nothing:
}
+\cs_generate_variant:Nn \file_parse_full_name:n { V }
\cs_new:Npn \file_parse_full_name_apply:nN #1
{
\exp_args:Ne \@@_parse_full_name_auxi:nN
{ \__kernel_file_name_sanitize:n {#1} }
}
+\cs_generate_variant:Nn \file_parse_full_name_apply:nN { V }
% \end{macrocode}
%
% \begin{macro}{\@@_parse_full_name_auxi:nN}
@@ -3549,6 +3660,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\file_parse_full_name:nNNN, \file_parse_full_name:VNNN}
% \begin{macrocode}
@@ -3575,14 +3687,14 @@
% \cs{AtBeginDocument} into \cs{g_@@_record_seq}), turning it to a
% string (this does not affect the commas of this comma list).
% \begin{macrocode}
-\cs_new_protected:Npn \file_show_list: { \@@_list:N \msg_show:nnxxxx }
-\cs_new_protected:Npn \file_log_list: { \@@_list:N \msg_log:nnxxxx }
+\cs_new_protected:Npn \file_show_list: { \@@_list:N \msg_show:nneeee }
+\cs_new_protected:Npn \file_log_list: { \@@_list:N \msg_log:nneeee }
\cs_new_protected:Npn \@@_list:N #1
{
\seq_clear:N \l_@@_tmp_seq
\clist_if_exist:NT \@filelist
{
- \exp_args:NNx \seq_set_from_clist:Nn \l_@@_tmp_seq
+ \exp_args:NNe \seq_set_from_clist:Nn \l_@@_tmp_seq
{ \tl_to_str:N \@filelist }
}
\seq_concat:NNN \l_@@_tmp_seq \l_@@_tmp_seq \g_@@_record_seq
@@ -3605,7 +3717,7 @@
{
\AtBeginDocument
{
- \exp_args:NNx \seq_set_from_clist:Nn \l_@@_tmp_seq
+ \exp_args:NNe \seq_set_from_clist:Nn \l_@@_tmp_seq
{ \tl_to_str:N \@filelist }
\seq_gconcat:NNN
\g_@@_record_seq
@@ -3738,7 +3850,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_mismatched_dependency_error:nn #1 #2
{
- \exp_args:NNx \ior_shell_open:Nn \g_@@_internal_ior
+ \exp_args:NNe \ior_shell_open:Nn \g_@@_internal_ior
{
kpsewhich ~ --all ~
--engine = \c_sys_engine_exec_str
@@ -3869,7 +3981,7 @@
% \begin{macrocode}
\sys_if_engine_luatex:TF
{
- \str_const:Nx \c_sys_platform_str
+ \str_const:Ne \c_sys_platform_str
{ \tex_directlua:D { tex.print(os.type) } }
}
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
index 3fb39305353..637da52ee78 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -243,7 +243,7 @@
{
\exp_args:Nc \__kernel_chk_defined:NT { flag~#2 }
{
- \exp_args:Nx #1
+ \exp_args:Ne #1
{ \tl_to_str:n { flag~#2~height } = \flag_height:n {#2} }
}
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
index ecdd6ea31cd..da05eafa395 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-assign.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
% \maketitle
%
% \begin{documentation}
@@ -80,11 +80,11 @@
% assignments.
% \begin{macrocode}
\cs_new_protected:Npn \fp_set:Nn #1#2
- { \__kernel_tl_set:Nx #1 { \exp_not:f { \@@_parse:n {#2} } } }
+ { \__kernel_tl_set:Ne #1 { \exp_not:f { \@@_parse:n {#2} } } }
\cs_new_protected:Npn \fp_gset:Nn #1#2
- { \__kernel_tl_gset:Nx #1 { \exp_not:f { \@@_parse:n {#2} } } }
+ { \__kernel_tl_gset:Ne #1 { \exp_not:f { \@@_parse:n {#2} } } }
\cs_new_protected:Npn \fp_const:Nn #1#2
- { \tl_const:Nx #1 { \exp_not:f { \@@_parse:n {#2} } } }
+ { \tl_const:Ne #1 { \exp_not:f { \@@_parse:n {#2} } } }
\cs_generate_variant:Nn \fp_set:Nn {c}
\cs_generate_variant:Nn \fp_gset:Nn {c}
\cs_generate_variant:Nn \fp_const:Nn {c}
@@ -183,7 +183,7 @@
\s_@@ \@@_chk:w ??? ; \s_@@_stop
}
}
- { \exp_args:Nx #1 { \token_to_str:N #2 = \fp_to_tl:N #2 } }
+ { \exp_args:Ne #1 { \token_to_str:N #2 = \fp_to_tl:N #2 } }
}
\cs_new:Npn \@@_show_validate:w
#1 \s_@@ \@@_chk:w #2#3#4#5 ; #6 \s_@@_stop
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
index 1f6b3337610..3db65c9d29f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -226,7 +226,7 @@
% stream and its contents reach \TeX{}'s stomach.
% \begin{macrocode}
\cs_new_protected:Npn \@@_misused:n #1
- { \msg_error:nnx { fp } { misused } { \fp_to_tl:n {#1} } }
+ { \msg_error:nne { fp } { misused } { \fp_to_tl:n {#1} } }
% \end{macrocode}
% \end{macro}
%
@@ -338,7 +338,7 @@
% point numbers. This replaces infinities when converting to formats
% that do not support infinities.
% \begin{macrocode}
-\tl_const:Nx \c_@@_overflowing_fp
+\tl_const:Ne \c_@@_overflowing_fp
{
\s_@@ \@@_chk:w 1 0
{ \int_eval:n { \c_@@_max_exponent_int + 1 } }
@@ -596,7 +596,7 @@
\s_@@ { \@@_type_from_scan_other:N #1 }
\s_@@_stop
}
-\cs_new:Npx \@@_type_from_scan_other:N #1
+\cs_new:Npe \@@_type_from_scan_other:N #1
{
\exp_not:N \exp_after:wN \exp_not:N \@@_type_from_scan:w
\exp_not:N \token_to_str:N #1 \s_@@_mark
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
index 6a8d6376fbc..3c5ad9195bf 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-basics.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -129,7 +129,7 @@
% that \cs{@@_+_o:ww} can still perform the sanity check that it was
% followed by \cs{s_@@}.
% \begin{macrocode}
-\cs_new:cpx { @@_-_o:ww } \s_@@
+\cs_new:cpe { @@_-_o:ww } \s_@@
{
\exp_not:c { @@_+_o:ww }
\exp_not:n { \s_@@ \@@_neg_sign:N }
@@ -1429,11 +1429,11 @@
{
+ 5 * #1
\exp_after:wN \@@_div_significand_vi:Nw
- \int_value:w \@@_int_eval:w -20 + 2*#2#3 - #1*#6#7 +
+ \int_value:w \@@_int_eval:w -50 + 2*#2#3 - #1*#6#7 +
\exp_after:wN \@@_div_significand_v:NN
- \int_value:w \@@_int_eval:w 199980 + 2*#4 - #1*#8 +
+ \int_value:w \@@_int_eval:w 499950 + 2*#4 - #1*#8 +
\exp_after:wN \@@_div_significand_v:NN
- \int_value:w \@@_int_eval:w 200000 + 2*#5 - #1*#9 ;
+ \int_value:w \@@_int_eval:w 500000 + 2*#5 - #1*#9 ;
}
\cs_new:Npn \@@_div_significand_v:NN #1#2 { #1#2 \@@_int_eval_end: + }
\cs_new:Npn \@@_div_significand_vi:Nw #1#2;
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
index bce0ddc8fd0..835f9c43414 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
index d9c8cf5685b..5ac216bf4c4 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-expo.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
index 0a5ac448aac..b83b37335bd 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-extended.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
index 9f11464f295..2f439c2925b 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-logic.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -487,7 +487,7 @@
{
\int_gincr:N \g__kernel_prg_map_int
\exp_args:NNc \@@_step:NNnnnn
- \cs_gset_protected:Npx
+ \cs_gset_protected:Npe
{ @@_map_ \int_use:N \g__kernel_prg_map_int :w }
{#1} {#2} {#3}
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
index 86e2366f2dc..418974d8263 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-parse.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -864,7 +864,7 @@
\exp_after:wN \@@_parse_exponent:N
\exp:w \@@_parse_expand:w
}
-\cs_new:Npx \@@_parse_one_register_aux:Nw #1
+\cs_new:Npe \@@_parse_one_register_aux:Nw #1
{
\exp_not:n
{
@@ -1937,7 +1937,7 @@
\fi:
\@@_parse_expand:w
}
-\cs_new:Npx \@@_parse_lparen_after:NwN #1#2 @ #3
+\cs_new:Npe \@@_parse_lparen_after:NwN #1#2 @ #3
{
\exp_not:N \token_if_eq_meaning:NNTF #3
\exp_not:c { @@_parse_infix_):N }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
index bb0e4b12f01..3e3b5cfdfc2 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-random.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
index c0c656189ff..f0853f59995 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
index 9b59b1759d5..674ecdfd2db 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-traps.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
% \maketitle
%
% \begin{documentation}
@@ -127,11 +127,11 @@
{ invalid_operation , division_by_zero , overflow , underflow }
{#1}
{
- \msg_error:nnxx { fp }
+ \msg_error:nnee { fp }
{ unknown-fpu-trap-type } {#1} {#2}
}
{
- \msg_error:nnx
+ \msg_error:nne
{ fp } { unknown-fpu-exception } {#1}
}
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
index f4cc0513add..b7bc6c19cec 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp-trig.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -91,13 +91,13 @@
{cos} {cot} {csc} {sec} {sin} {tan}
}
{
- \cs_new:cpx { @@_parse_word_#1:N }
+ \cs_new:cpe { @@_parse_word_#1:N }
{
\exp_not:N \@@_parse_unary_function:NNN
\exp_not:c { @@_#1_o:w }
\exp_not:N \use_i:nn
}
- \cs_new:cpx { @@_parse_word_#1d:N }
+ \cs_new:cpe { @@_parse_word_#1d:N }
{
\exp_not:N \@@_parse_unary_function:NNN
\exp_not:c { @@_#1_o:w }
@@ -1201,7 +1201,7 @@
{ #1 { acot } { acotd } }
{ \@@_atan_default:w \@@_acotii_o:Nww #1 }
}
-\cs_new:Npx \@@_atan_default:w #1#2#3 @ { #1 #2 #3 \c_one_fp @ }
+\cs_new:Npe \@@_atan_default:w #1#2#3 @ { #1 #2 #3 \c_one_fp @ }
% \end{macrocode}
% \end{macro}
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
index 17193dd8aff..60a7b7534fd 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
index e3693f0a41e..9929135baa5 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -250,7 +250,7 @@
\cs_generate_variant:Nn \fparray_gset:Nnn { c }
\cs_new_protected:Npn \@@_array_gset:NNNNww #1#2#3#4#5 ; #6 ;
{
- \@@_array_bounds:NNnTF \msg_error:nnxxx #4 {#5}
+ \@@_array_bounds:NNnTF \msg_error:nneee #4 {#5}
{
\exp_after:wN \@@_change_func_type:NNN
\@@_use_i_until_s:nw #6 ;
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
index 5bb880ead35..e012e191d21 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -1353,7 +1353,7 @@
% \end{macro}
%
% \begin{macro}{\int_const:Nn, \int_const:cn}
-% \begin{macro}{\@@_const:nN}
+% \begin{macro}{\@@_const:nN, \@@_const:eN}
% \begin{macro}{\@@_constdef:Nw}
% \begin{variable}{\c_@@_max_constdef_int}
% \UnitTested
@@ -1365,7 +1365,8 @@
% enabled) this runs some checks that constants would fail.
% \begin{macrocode}
\cs_new_protected:Npn \int_const:Nn #1#2
- { \exp_args:Nx \@@_const:nN { \int_eval:n {#2} } #1 }
+ { \@@_const:eN { \int_eval:n {#2} } #1 }
+\cs_generate_variant:Nn \int_const:Nn { c }
\cs_new_protected:Npn \@@_const:nN #1#2
{
\int_compare:nNnTF {#1} < \c_zero_int
@@ -1386,7 +1387,7 @@
}
#2 = \@@_eval:w #1 \@@_eval_end:
}
-\cs_generate_variant:Nn \int_const:Nn { c }
+\cs_generate_variant:Nn \@@_const:nN { e }
\if_int_odd:w 0
\cs_if_exist:NT \tex_luatexversion:D { 1 }
\cs_if_exist:NT \tex_omathchardef:D { 1 }
@@ -2003,7 +2004,7 @@
{
\int_gincr:N \g__kernel_prg_map_int
\exp_args:NNc \@@_step:NNnnnn
- \cs_gset_protected:Npx
+ \cs_gset_protected:Npe
{ @@_map_ \int_use:N \g__kernel_prg_map_int :w }
{#1}{#2}{#3}
{
@@ -2035,7 +2036,7 @@
%
% \begin{macro}{\int_to_symbols:nnn}
% \UnitTested
-% \begin{macro}{\@@_to_symbols:nnnn}
+% \begin{macro}{\@@_to_symbols:nnnn, \@@_to_symbols:ennn}
% For conversion of integers to arbitrary symbols the method is in
% general as follows. The input number (|#1|) is compared to the total
% number of symbols available at each place (|#2|). If the input is larger
@@ -2050,7 +2051,7 @@
{
\int_compare:nNnTF {#1} > {#2}
{
- \exp_args:NNo \exp_args:No \@@_to_symbols:nnnn
+ \@@_to_symbols:ennn
{
\int_case:nn
{ 1 + \int_mod:nn { #1 - 1 } {#2} }
@@ -2066,6 +2067,7 @@
{ \int_div_truncate:nn { #2 - 1 } {#3} } {#3} {#4}
#1
}
+\cs_generate_variant:Nn \@@_to_symbols:nnnn { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
index cdbf71784c6..10458ad602f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -238,7 +238,7 @@ end, 'protected', 'global')
{
\__kernel_chk_if_free_cs:N #1
\int_gincr:N \g_@@_table_int
- \cs_gset_nopar:Npx #1 { \@@:w \int_use:N \g_@@_table_int \c_space_tl }
+ \cs_gset_nopar:Npe #1 { \@@:w \int_use:N \g_@@_table_int \c_space_tl }
}
\cs_new_protected:Npn \intarray_new:Nn #1#2
{
@@ -246,7 +246,7 @@ end, 'protected', 'global')
\@@_gset_count:Nw #1 \int_eval:n {#2} \scan_stop:
\int_compare:nNnT { \intarray_count:N #1 } < 0
{
- \msg_error:nnx { kernel } { negative-array-size }
+ \msg_error:nne { kernel } { negative-array-size }
{ \intarray_count:N #1 }
}
}
@@ -387,7 +387,7 @@ end, 'protected', 'global')
{
\@@_gset:wF \int_eval:n {#2} #1 \int_eval:n{#3}
{
- \msg_error:nnxxx { kernel } { out-of-bounds }
+ \msg_error:nneee { kernel } { out-of-bounds }
{ \token_to_str:N #1 } { \int_use:N \l_@@_bad_index_int } { \intarray_count:N #1 }
}
}
@@ -640,7 +640,7 @@ luacmd('@@_gset_range:w', function()
\@@_count:w #1 = \int_eval:n {#2} \scan_stop:
\int_compare:nNnT { \intarray_count:N #1 } < 0
{
- \msg_error:nnx { kernel } { negative-array-size }
+ \msg_error:nne { kernel } { negative-array-size }
{ \intarray_count:N #1 }
}
\int_compare:nNnT { \intarray_count:N #1 } > 0
@@ -716,7 +716,7 @@ luacmd('@@_gset_range:w', function()
\cs_generate_variant:Nn \intarray_gset:Nnn { c }
\cs_new_protected:Npn \@@_gset:Nww #1#2 ; #3 ;
{
- \@@_bounds:NNnTF \msg_error:nnxxx #1 {#2}
+ \@@_bounds:NNnTF \msg_error:nneee #1 {#2}
{
\@@_gset_overflow_test:nw {#3}
\__kernel_intarray_gset:Nnn #1 {#2} {#3}
@@ -742,7 +742,7 @@ luacmd('@@_gset_range:w', function()
}
\cs_new_protected:Npn \@@_gset_overflow:NNnn #1#2#3#4
{
- \msg_error:nnxxxx { kernel } { overflow }
+ \msg_error:nneeee { kernel } { overflow }
{ \token_to_str:N #2 } {#3} {#4} { \@@_signed_max_dim:n {#4} }
#1 #2 {#3} { \@@_signed_max_dim:n {#4} }
}
@@ -915,9 +915,9 @@ luacmd('@@_gset_range:w', function()
% \begin{macro}{\intarray_show:N, \intarray_show:c, \intarray_log:N, \intarray_log:c}
% Convert the list to a comma list (with spaces after each comma)
% \begin{macrocode}
-\cs_new_protected:Npn \intarray_show:N { \@@_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \intarray_show:N { \@@_show:NN \msg_show:nneeee }
\cs_generate_variant:Nn \intarray_show:N { c }
-\cs_new_protected:Npn \intarray_log:N { \@@_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \intarray_log:N { \@@_show:NN \msg_log:nneeee }
\cs_generate_variant:Nn \intarray_log:N { c }
\cs_new_protected:Npn \@@_show:NN #1#2
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
index c2d442f1832..d517f72a228 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -491,9 +491,9 @@
% only a single expansion.
% \end{function}
%
-% \begin{function}{\__kernel_tl_set:Nx, \__kernel_tl_gset:Nx}
+% \begin{function}{\__kernel_tl_set:Ne, \__kernel_tl_gset:Ne}
% \begin{syntax}
-% \cs{__kernel_tl_set:Nx} \meta{tl~var} \Arg{tokens}
+% \cs{__kernel_tl_set:Ne} \meta{tl~var} \Arg{tokens}
% \end{syntax}
% Fully expands \meta{tokens} and assigns the result to \meta{tl~var}.
% \meta{tokens} must be given in braces and there must be no token between
@@ -545,7 +545,7 @@
% {
% \__kernel_backend_literal:n,
% \__kernel_backend_literal:e,
-% \__kernel_backend_literal:x
+% \__kernel_backend_literal:e
% }
% \begin{syntax}
% \cs{__kernel_backend_literal:n} \Arg{content}
@@ -558,7 +558,7 @@
% \begin{function}
% {
% \__kernel_backend_literal_postscript:n,
-% \__kernel_backend_literal_postscript:x
+% \__kernel_backend_literal_postscript:e
% }
% \begin{syntax}
% \cs{__kernel_backend_literal_postscript:n} \Arg{PostScript}
@@ -570,7 +570,7 @@
% \begin{function}
% {
% \__kernel_backend_literal_pdf:n,
-% \__kernel_backend_literal_pdf:x
+% \__kernel_backend_literal_pdf:e
% }
% \begin{syntax}
% \cs{__kernel_backend_literal_pdf:n} \Arg{PDF instructions}
@@ -582,7 +582,7 @@
% \begin{function}
% {
% \__kernel_backend_literal_svg:n,
-% \__kernel_backend_literal_svg:x
+% \__kernel_backend_literal_svg:e
% }
% \begin{syntax}
% \cs{__kernel_backend_literal_svg:n} \Arg{SVG instructions}
@@ -594,7 +594,7 @@
% \begin{function}
% {
% \__kernel_backend_postscript:n,
-% \__kernel_backend_postscript:x
+% \__kernel_backend_postscript:e
% }
% \begin{syntax}
% \cs{__kernel_backend_postscript:n} \Arg{PostScript}
@@ -626,7 +626,7 @@
% \begin{function}
% {
% \__kernel_backend_matrix:n,
-% \__kernel_backend_matrix:x
+% \__kernel_backend_matrix:e
% }
% \begin{syntax}
% \cs{__kernel_backend_matrix:n} \Arg{matrix}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
index 8a78f8cd7c2..95ddcd0a383 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -124,7 +124,8 @@
%
% \section{Creating keys}
%
-% \begin{function}[updated = 2017-11-14]{\keys_define:nn}
+% \begin{function}[updated = 2017-11-14]
+% {\keys_define:nn, \keys_define:ne}
% \begin{syntax}
% \cs{keys_define:nn} \Arg{module} \Arg{keyval list}
% \end{syntax}
@@ -216,7 +217,7 @@
% \end{function}
%
% \begin{function}[added = 2011-08-21, updated = 2013-07-10]
-% {.choices:nn, .choices:Vn, .choices:on, .choices:xn}
+% {.choices:nn, .choices:Vn, .choices:en, .choices:on}
% \begin{syntax}
% \meta{key} .choices:nn = \Arg{choices} \Arg{code}
% \end{syntax}
@@ -263,7 +264,7 @@
% \end{function}
%
% \begin{function}[updated = 2013-07-09]
-% {.default:n, .default:V, .default:o, .default:x}
+% {.default:n, .default:V, .default:e, .default:o}
% \begin{syntax}
% \meta{key} .default:n = \Arg{default}
% \end{syntax}
@@ -355,7 +356,7 @@
% \end{function}
%
% \begin{function}[updated = 2013-07-09]
-% {.initial:n, .initial:V, .initial:o, .initial:x}
+% {.initial:n, .initial:V, .initial:e, .initial:o}
% \begin{syntax}
% \meta{key} .initial:n = \Arg{value}
% \end{syntax}
@@ -424,7 +425,7 @@
% \end{function}
%
% \begin{function}[added = 2011-08-21, updated = 2013-07-10]
-% {.multichoices:nn, .multichoices:Vn, .multichoices:on, .multichoices:xn}
+% {.multichoices:nn, .multichoices:Vn, .multichoices:en, .multichoices:on}
% \begin{syntax}
% \meta{key} .multichoices:nn \Arg{choices} \Arg{code}
% \end{syntax}
@@ -480,14 +481,14 @@
% at the point that the key is set up.
% \end{function}
%
-% \begin{function}[added = 2021-10-30]
-% {.str_set_x:N, .str_set_x:c, .str_gset_x:N, .str_gset_x:c}
+% \begin{function}[added = 2023-09-18]
+% {.str_set_e:N, .str_set_e:c, .str_gset_e:N, .str_gset_e:c}
% \begin{syntax}
-% \meta{key} .str_set_x:N = \meta{string variable}
+% \meta{key} .str_set_e:N = \meta{string variable}
% \end{syntax}
% Defines \meta{key} to set \meta{string variable} to \meta{value},
-% which will be subjected to an \texttt{x}-type expansion
-% (\emph{i.e.}~using \cs{str_set:Nx}). If the variable does not exist,
+% which will be subjected to an \texttt{e}-type expansion
+% (\emph{i.e.}~using \cs{str_set:Ne}). If the variable does not exist,
% it is created globally at the point that the key is set up.
% \end{function}
%
@@ -500,13 +501,14 @@
% at the point that the key is set up.
% \end{function}
%
-% \begin{function}{.tl_set_x:N, .tl_set_x:c, .tl_gset_x:N, .tl_gset_x:c}
+% \begin{function}[added = 2023-09-18]
+% {.tl_set_e:N, .tl_set_e:c, .tl_gset_e:N, .tl_gset_e:c}
% \begin{syntax}
-% \meta{key} .tl_set_x:N = \meta{token list variable}
+% \meta{key} .tl_set_e:N = \meta{token list variable}
% \end{syntax}
% Defines \meta{key} to set \meta{token list variable} to \meta{value},
-% which will be subjected to an \texttt{x}-type expansion
-% (\emph{i.e.}~using \cs{tl_set:Nx}). If the variable does not exist,
+% which will be subjected to an \texttt{e}-type expansion
+% (\emph{i.e.}~using \cs{tl_set:Ne}). If the variable does not exist,
% it is created globally at the point that the key is set up.
% \end{function}
%
@@ -637,7 +639,7 @@
% key / choice-b .code:n = code-b,
% key / choice-c .code:n = code-c,
% key / unknown .code:n =
-% \msg_error:nnxxx { mymodule } { unknown-choice }
+% \msg_error:nneee { mymodule } { unknown-choice }
% { key } % Name of choice key
% { choice-a , choice-b , choice-c } % Valid choices
% { \exp_not:n {#1} } % Invalid choice given
@@ -724,7 +726,10 @@
% \section{Setting keys}
%
% \begin{function}[updated = 2017-11-14]
-% {\keys_set:nn, \keys_set:nV, \keys_set:nv, \keys_set:no, \keys_set:nx}
+% {
+% \keys_set:nn, \keys_set:nV, \keys_set:nv, \keys_set:ne,
+% \keys_set:no,
+% }
% \begin{syntax}
% \cs{keys_set:nn} \Arg{module} \Arg{keyval list}
% \end{syntax}
@@ -782,11 +787,14 @@
% \begin{function}[added = 2011-08-23, updated = 2019-01-29]
% {
% \keys_set_known:nn, \keys_set_known:nV,
-% \keys_set_known:nv, \keys_set_known:no,
+% \keys_set_known:nv, \keys_set_known:ne,
+% \keys_set_known:no
% \keys_set_known:nnN, \keys_set_known:nVN,
-% \keys_set_known:nvN, \keys_set_known:noN,
+% \keys_set_known:nvN, \keys_set_known:neN,
+% \keys_set_known:noN
% \keys_set_known:nnnN, \keys_set_known:nVnN,
-% \keys_set_known:nvnN, \keys_set_known:nonN
+% \keys_set_known:nvnN, \keys_set_known:nenN,
+% \keys_set_known:nonN
% }
% \begin{syntax}
% \cs{keys_set_known:nn} \Arg{module} \Arg{keyval list}
@@ -1730,7 +1738,7 @@
%
% \subsection{The key defining mechanism}
%
-% \begin{macro}{\keys_define:nn}
+% \begin{macro}{\keys_define:nn, \keys_define:ne, \keys_define:nx}
% \begin{macro}{\@@_define:nnn, \@@_define:onn}
% The public function for definitions is just a wrapper for the lower
% level mechanism, more or less. The outer function is designed to
@@ -1739,9 +1747,10 @@
% \begin{macrocode}
\cs_new_protected:Npn \keys_define:nn
{ \@@_define:onn \l_@@_module_str }
+\cs_generate_variant:Nn \keys_define:nn { ne , nx }
\cs_new_protected:Npn \@@_define:nnn #1#2#3
{
- \str_set:Nx \l_@@_module_str { \@@_trim_spaces:n {#2} }
+ \str_set:Ne \l_@@_module_str { \@@_trim_spaces:n {#2} }
\keyval_parse:NNn \@@_define:n \@@_define:nn {#3}
\str_set:Nn \l_@@_module_str {#1}
}
@@ -1776,7 +1785,7 @@
{
\str_if_empty:NF \l_@@_property_str
{
- \msg_error:nnxx { keys } { property-unknown }
+ \msg_error:nnee { keys } { property-unknown }
\l_@@_property_str \l_keys_path_str
}
}
@@ -1798,12 +1807,12 @@
% and storing the text before and after it. Everything is turned into
% strings, so there is no problem using an \texttt{x}-type expansion. Since
% \cs{@@_trim_spaces:n} will turn its argument into a string anyway, this
-% function uses \cs{cs_set_nopar:Npx} instead of \cs{tl_set:Nx} to gain some
+% function uses \cs{cs_set_nopar:Npe} instead of \cs{tl_set:Ne} to gain some
% speed.
% \begin{macrocode}
\cs_new_protected:Npn \@@_property_find:n #1
{
- \cs_set_nopar:Npx \l_@@_property_str { \@@_trim_spaces:n { #1 } }
+ \cs_set_nopar:Npe \l_@@_property_str { \@@_trim_spaces:n { #1 } }
\exp_after:wN \@@_property_find_auxi:w \l_@@_property_str
\s_@@_nil \@@_property_find_auxii:w
. \s_@@_nil \@@_property_find_err:w
@@ -1816,22 +1825,22 @@
#1 \s_@@_mark #2 \s_@@_nil \@@_property_find_auxii:w . \s_@@_nil
\@@_property_find_err:w
{
- \cs_set_nopar:Npx \l_keys_path_str
+ \cs_set_nopar:Npe \l_keys_path_str
{ \str_if_empty:NF \l_@@_module_str { \l_@@_module_str / } #1 }
\@@_property_find_auxi:w #2 \s_@@_nil \@@_property_find_auxiii:w . \s_@@_nil
\@@_property_find_auxiv:w
}
\cs_new_protected:Npn \@@_property_find_auxiii:w #1 \s_@@_mark
{
- \cs_set_nopar:Npx \l_keys_path_str { \l_keys_path_str . #1 }
+ \cs_set_nopar:Npe \l_keys_path_str { \l_keys_path_str . #1 }
\@@_property_find_auxi:w
}
\cs_new_protected:Npn \@@_property_find_auxiv:w
#1 \s_@@_nil \@@_property_find_auxiii:w
\s_@@_mark \s_@@_nil \@@_property_find_auxiv:w
{
- \cs_set_nopar:Npx \l_@@_property_str { . #1 }
- \cs_set_nopar:Npx \l_keys_path_str
+ \cs_set_nopar:Npe \l_@@_property_str { . #1 }
+ \cs_set_nopar:Npe \l_keys_path_str
{ \exp_after:wN \@@_trim_spaces:n \exp_after:wN { \l_keys_path_str } }
\tl_set_eq:NN \l_keys_path_tl \l_keys_path_str
}
@@ -1861,7 +1870,7 @@
\l_@@_property_str \s_@@_stop
{ \use:c { \c_@@_props_root_str \l_@@_property_str } }
{
- \msg_error:nnxx { keys } { property-requires-value }
+ \msg_error:nnee { keys } { property-requires-value }
\l_@@_property_str \l_keys_path_str
}
}
@@ -1896,13 +1905,13 @@
{
\bool_if_exist:NF #1 { \bool_new:N #1 }
\@@_choice_make:
- \@@_cmd_set:nx { \l_keys_path_str / true }
+ \@@_cmd_set:ne { \l_keys_path_str / true }
{ \exp_not:c { bool_ #2 set_ #3 :N } \exp_not:N #1 }
- \@@_cmd_set:nx { \l_keys_path_str / false }
+ \@@_cmd_set:ne { \l_keys_path_str / false }
{ \exp_not:c { bool_ #2 set_ #4 :N } \exp_not:N #1 }
\@@_cmd_set_direct:nn { \l_keys_path_str / unknown }
{
- \msg_error:nnx { keys } { boolean-values-only }
+ \msg_error:nne { keys } { boolean-values-only }
\l_keys_path_str
}
\@@_default_set:n { true }
@@ -1932,7 +1941,7 @@
{ \c_@@_type_root_str \@@_parent:o \l_keys_path_str }
{ choice }
{
- \msg_error:nnxx { keys } { nested-choice-key }
+ \msg_error:nnee { keys } { nested-choice-key }
\l_keys_path_tl { \@@_parent:o \l_keys_path_str }
}
{ \@@_choice_make_aux:N #1 }
@@ -1946,7 +1955,7 @@
\@@_cmd_set_direct:nn \l_keys_path_str { #1 {##1} }
\@@_cmd_set_direct:nn { \l_keys_path_str / unknown }
{
- \msg_error:nnxx { keys } { choice-unknown }
+ \msg_error:nnee { keys } { choice-unknown }
\l_keys_path_str {##1}
}
}
@@ -1971,7 +1980,7 @@
\clist_map_inline:nn {#2}
{
\int_incr:N \l_keys_choice_int
- \@@_cmd_set:nx
+ \@@_cmd_set:ne
{ \l_keys_path_str / \@@_trim_spaces:n {##1} }
{
\tl_set:Nn \exp_not:N \l_keys_choice_tl {##1}
@@ -1987,7 +1996,7 @@
%
% \begin{macro}
% {
-% \@@_cmd_set:nn, \@@_cmd_set:nx, \@@_cmd_set:Vn, \@@_cmd_set:Vo,
+% \@@_cmd_set:nn, \@@_cmd_set:Vn, \@@_cmd_set:ne, \@@_cmd_set:Vo,
% \@@_cmd_set_direct:nn
% }
% Setting the code for a key first logs if appropriate that we are
@@ -1995,7 +2004,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_cmd_set:nn #1#2
{ \@@_cmd_set_direct:nn {#1} { \@@_precompile:n {#2} } }
-\cs_generate_variant:Nn \@@_cmd_set:nn { nx , Vn , Vo }
+\cs_generate_variant:Nn \@@_cmd_set:nn { ne , Vn , Vo }
\cs_new_protected:Npn \@@_cmd_set_direct:nn #1#2
{ \cs_set_protected:cpn { \c_@@_code_root_str #1 } ##1 {#2} }
% \end{macrocode}
@@ -2008,7 +2017,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_cs_set:NNpn #1#2#3#
{
- \cs_set_protected:cpx { \c_@@_code_root_str \l_keys_path_str } ##1
+ \cs_set_protected:cpe { \c_@@_code_root_str \l_keys_path_str } ##1
{
\@@_precompile:n
{ #1 \exp_not:N #2 \exp_not:n {#3} {##1} }
@@ -2020,7 +2029,7 @@
% \end{macro}
%
% \begin{macro}{\@@_default_set:n}
-% Setting a default value is easy. These are stored using \cs{cs_set_nopar:cpx} as this
+% Setting a default value is easy. These are stored using \cs{cs_set_nopar:cpe} as this
% avoids any worries about whether a token list exists.
% \begin{macrocode}
\cs_new_protected:Npn \@@_default_set:n #1
@@ -2032,7 +2041,7 @@
\tex_undefined:D
}
{
- \cs_set_nopar:cpx
+ \cs_set_nopar:cpe
{ \c_@@_default_root_str \l_keys_path_str }
{ \exp_not:n {#1} }
\@@_value_requirement:nn { required } { false }
@@ -2114,13 +2123,13 @@
\cs_new_protected:Npn \@@_legacy_if_set:nnnn #1#2#3#4
{
\@@_choice_make:
- \@@_cmd_set:nx { \l_keys_path_str / true }
+ \@@_cmd_set:ne { \l_keys_path_str / true }
{ \exp_not:c { legacy_if_#2 set_ #3 :n } { \exp_not:n {#1} } }
- \@@_cmd_set:nx { \l_keys_path_str / false }
+ \@@_cmd_set:ne { \l_keys_path_str / false }
{ \exp_not:c { legacy_if_#2 set_ #4 :n } { \exp_not:n {#1} } }
\@@_cmd_set:nn { \l_keys_path_str / unknown }
{
- \msg_error:nnx { keys } { boolean-values-only }
+ \msg_error:nne { keys } { boolean-values-only }
\l_keys_path_str
}
\@@_default_set:n { true }
@@ -2165,7 +2174,7 @@
\prop_if_exist:NF #1 { \prop_new:N #1 }
\exp_after:wN \@@_find_key_module:wNN \l_keys_path_str \s_@@_stop
\l_@@_tmpa_tl \l_@@_tmpb_tl
- \@@_cmd_set:nx \l_keys_path_str
+ \@@_cmd_set:ne \l_keys_path_str
{
\exp_not:c { prop_ #2 put:Nnn }
\exp_not:N #1
@@ -2225,7 +2234,7 @@
}
}
{
- \msg_error:nnx { keys }
+ \msg_error:nne { keys }
{ boolean-values-only }
{ .value_ #1 :n }
}
@@ -2234,7 +2243,7 @@
{
\bool_if:NF \l_@@_no_value_bool
{
- \msg_error:nnxx { keys } { value-forbidden }
+ \msg_error:nnee { keys } { value-forbidden }
\l_keys_path_str \l_keys_value_tl
\use_none:nnn
}
@@ -2243,7 +2252,7 @@
{
\bool_if:NT \l_@@_no_value_bool
{
- \msg_error:nnx { keys } { value-required }
+ \msg_error:nne { keys } { value-required }
\l_keys_path_str
\use_none:nnn
}
@@ -2294,7 +2303,7 @@
{
\prop_get:NVNF #1 \l_@@_module_str \l_@@_tmpa_tl
{ \tl_clear:N \l_@@_tmpa_tl }
- \tl_set:Nx \l_@@_tmpb_tl
+ \tl_set:Ne \l_@@_tmpb_tl
{ \exp_after:wN \@@_usage:w \l_keys_path_str \s_@@_stop }
\bool_if:NTF #2
{ \clist_put_right:NV \l_@@_tmpa_tl \l_@@_tmpb_tl }
@@ -2316,7 +2325,7 @@
\cs_new_protected:Npn \@@_variable_set:NnnN #1#2#3#4
{
\use:c { #2_if_exist:NF } #1 { \use:c { #2 _new:N } #1 }
- \@@_cmd_set:nx \l_keys_path_str
+ \@@_cmd_set:ne \l_keys_path_str
{
\exp_not:c { #2 _ #3 set:N #4 }
\exp_not:N #1
@@ -2386,8 +2395,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}
-% {.choices:nn, .choices:Vn, .choices:on, .choices:xn}
+% \begin{macro}{.choices:nn, .choices:Vn, .choices:en, .choices:on, .choices:xn}
% For auto-generation of a series of mutually-exclusive choices.
% Here, |#1| consists of two separate
% arguments, hence the slightly odd-looking implementation.
@@ -2396,6 +2404,8 @@
{ \@@_choices_make:nn #1 }
\cs_new_protected:cpn { \c_@@_props_root_str .choices:Vn } #1
{ \exp_args:NV \@@_choices_make:nn #1 }
+\cs_new_protected:cpn { \c_@@_props_root_str .choices:en } #1
+ { \exp_args:Ne \@@_choices_make:nn #1 }
\cs_new_protected:cpn { \c_@@_props_root_str .choices:on } #1
{ \exp_args:No \@@_choices_make:nn #1 }
\cs_new_protected:cpn { \c_@@_props_root_str .choices:xn } #1
@@ -2452,13 +2462,15 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{.default:n, .default:V, .default:o, .default:x}
+% \begin{macro}{.default:n, .default:V, .default:e, .default:o, .default:x}
% Expansion is left to the internal functions.
% \begin{macrocode}
\cs_new_protected:cpn { \c_@@_props_root_str .default:n } #1
{ \@@_default_set:n {#1} }
\cs_new_protected:cpn { \c_@@_props_root_str .default:V } #1
{ \exp_args:NV \@@_default_set:n #1 }
+\cs_new_protected:cpn { \c_@@_props_root_str .default:e } #1
+ { \exp_args:Ne \@@_default_set:n {#1} }
\cs_new_protected:cpn { \c_@@_props_root_str .default:o } #1
{ \exp_args:No \@@_default_set:n {#1} }
\cs_new_protected:cpn { \c_@@_props_root_str .default:x } #1
@@ -2514,13 +2526,15 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{.initial:n, .initial:V, .initial:o, .initial:x}
+% \begin{macro}{.initial:n, .initial:V, .initial:e, .initial:o, .initial:x}
% The standard hand-off approach.
% \begin{macrocode}
\cs_new_protected:cpn { \c_@@_props_root_str .initial:n } #1
{ \@@_initialise:n {#1} }
\cs_new_protected:cpn { \c_@@_props_root_str .initial:V } #1
{ \exp_args:NV \@@_initialise:n #1 }
+\cs_new_protected:cpn { \c_@@_props_root_str .initial:e } #1
+ { \exp_args:Ne \@@_initialise:n {#1} }
\cs_new_protected:cpn { \c_@@_props_root_str .initial:o } #1
{ \exp_args:No \@@_initialise:n {#1} }
\cs_new_protected:cpn { \c_@@_props_root_str .initial:x } #1
@@ -2579,11 +2593,7 @@
% \end{macro}
%
% \begin{macro}{.multichoice:}
-% \begin{macro}
-% {
-% .multichoices:nn, .multichoices:Vn, .multichoices:on,
-% .multichoices:xn,
-% }
+% \begin{macro}{.multichoices:nn, .multichoices:Vn, .multichoices:en, .multichoices:on, .multichoices:xn}
% The same idea as \texttt{.choice:} and \texttt{.choices:nn}, but
% where more than one choice is allowed.
% \begin{macrocode}
@@ -2593,6 +2603,8 @@
{ \@@_multichoices_make:nn #1 }
\cs_new_protected:cpn { \c_@@_props_root_str .multichoices:Vn } #1
{ \exp_args:NV \@@_multichoices_make:nn #1 }
+\cs_new_protected:cpn { \c_@@_props_root_str .multichoices:en } #1
+ { \exp_args:Ne \@@_multichoices_make:nn #1 }
\cs_new_protected:cpn { \c_@@_props_root_str .multichoices:on } #1
{ \exp_args:No \@@_multichoices_make:nn #1 }
\cs_new_protected:cpn { \c_@@_props_root_str .multichoices:xn } #1
@@ -2647,26 +2659,26 @@
%
% \begin{macro}{.str_set:N, .str_set:c}
% \begin{macro}{.str_gset:N, .str_gset:c}
-% \begin{macro}{.str_set_x:N, .str_set_x:c}
-% \begin{macro}{.str_gset_x:N, .str_gset_x:c}
+% \begin{macro}{.str_set_e:N, .str_set_e:c}
+% \begin{macro}{.str_gset_e:N, .str_gset_e:c}
% Setting a variable is very easy: just pass the data along.
% \begin{macrocode}
\cs_new_protected:cpn { \c_@@_props_root_str .str_set:N } #1
{ \@@_variable_set:NnnN #1 { str } { } n }
\cs_new_protected:cpn { \c_@@_props_root_str .str_set:c } #1
{ \@@_variable_set:cnnN {#1} { str } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_str .str_set_x:N } #1
- { \@@_variable_set:NnnN #1 { str } { } x }
-\cs_new_protected:cpn { \c_@@_props_root_str .str_set_x:c } #1
- { \@@_variable_set:cnnN {#1} { str } { } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .str_set_e:N } #1
+ { \@@_variable_set:NnnN #1 { str } { } e }
+\cs_new_protected:cpn { \c_@@_props_root_str .str_set_e:c } #1
+ { \@@_variable_set:cnnN {#1} { str } { } e }
\cs_new_protected:cpn { \c_@@_props_root_str .str_gset:N } #1
{ \@@_variable_set:NnnN #1 { str } { g } n }
\cs_new_protected:cpn { \c_@@_props_root_str .str_gset:c } #1
{ \@@_variable_set:cnnN {#1} { str } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_x:N } #1
- { \@@_variable_set:NnnN #1 { str } { g } x }
-\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_x:c } #1
- { \@@_variable_set:cnnN {#1} { str } { g } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_e:N } #1
+ { \@@_variable_set:NnnN #1 { str } { g } e }
+\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_e:c } #1
+ { \@@_variable_set:cnnN {#1} { str } { g } e }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2675,26 +2687,26 @@
%
% \begin{macro}{.tl_set:N, .tl_set:c}
% \begin{macro}{.tl_gset:N, .tl_gset:c}
-% \begin{macro}{.tl_set_x:N, .tl_set_x:c}
-% \begin{macro}{.tl_gset_x:N, .tl_gset_x:c}
+% \begin{macro}{.tl_set_e:N, .tl_set_e:c}
+% \begin{macro}{.tl_gset_e:N, .tl_gset_e:c}
% Setting a variable is very easy: just pass the data along.
% \begin{macrocode}
\cs_new_protected:cpn { \c_@@_props_root_str .tl_set:N } #1
{ \@@_variable_set:NnnN #1 { tl } { } n }
\cs_new_protected:cpn { \c_@@_props_root_str .tl_set:c } #1
{ \@@_variable_set:cnnN {#1} { tl } { } n }
-\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_x:N } #1
- { \@@_variable_set:NnnN #1 { tl } { } x }
-\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_x:c } #1
- { \@@_variable_set:cnnN {#1} { tl } { } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_e:N } #1
+ { \@@_variable_set:NnnN #1 { tl } { } e }
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_e:c } #1
+ { \@@_variable_set:cnnN {#1} { tl } { } e }
\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset:N } #1
{ \@@_variable_set:NnnN #1 { tl } { g } n }
\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset:c } #1
{ \@@_variable_set:cnnN {#1} { tl } { g } n }
-\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_x:N } #1
- { \@@_variable_set:NnnN #1 { tl } { g } x }
-\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_x:c } #1
- { \@@_variable_set:cnnN {#1} { tl } { g } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_e:N } #1
+ { \@@_variable_set:NnnN #1 { tl } { g } e }
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_e:c } #1
+ { \@@_variable_set:cnnN {#1} { tl } { g } e }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2732,7 +2744,8 @@
%
% \begin{macro}
% {
-% \keys_set:nn, \keys_set:nV, \keys_set:nv, \keys_set:no, \keys_set:nx,
+% \keys_set:nn, \keys_set:nV, \keys_set:nv, \keys_set:ne,
+% \keys_set:no, \keys_set:nx,
% \@@_set:nn
% }
% \begin{macro}{\@@_set:nnn}
@@ -2740,7 +2753,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \keys_set:nn #1#2
{
- \use:x
+ \use:e
{
\bool_set_false:N \exp_not:N \l_@@_only_known_bool
\bool_set_false:N \exp_not:N \l_@@_filtered_bool
@@ -2758,12 +2771,12 @@
{ \exp_not:o \l_@@_relative_tl }
}
}
-\cs_generate_variant:Nn \keys_set:nn { nV , nv , no , nx }
+\cs_generate_variant:Nn \keys_set:nn { nV , nv , ne , no , nx }
\cs_new_protected:Npn \@@_set:nn #1#2
{ \exp_args:No \@@_set:nnn \l_@@_module_str {#1} {#2} }
\cs_new_protected:Npn \@@_set:nnn #1#2#3
{
- \str_set:Nx \l_@@_module_str { \@@_trim_spaces:n {#2} }
+ \str_set:Ne \l_@@_module_str { \@@_trim_spaces:n {#2} }
\keyval_parse:NNn \@@_set_keyval:n \@@_set_keyval:nn {#3}
\str_set:Nn \l_@@_module_str {#1}
}
@@ -2774,18 +2787,21 @@
% \begin{macro}
% {
% \keys_set_known:nnN, \keys_set_known:nVN,
-% \keys_set_known:nvN, \keys_set_known:noN
+% \keys_set_known:nvN, \keys_set_known:neN,
+% \keys_set_known:noN
% }
% \begin{macro}
% {
% \keys_set_known:nnnN, \keys_set_known:nVnN,
-% \keys_set_known:nvnN, \keys_set_known:nonN
+% \keys_set_known:nvnN, \keys_set_known:nenN,
+% \keys_set_known:nonN
% }
% \begin{macro}{\@@_set_known:nnnnN}
% \begin{macro}
% {
% \keys_set_known:nn, \keys_set_known:nV,
-% \keys_set_known:nv, \keys_set_known:no
+% \keys_set_known:nv, \keys_set_known:ne,
+% \keys_set_known:no
% }
% \begin{macro}{\@@_set_known:nnn}
% Setting known keys simply means setting the appropriate flag, then
@@ -2799,26 +2815,26 @@
\exp_args:No \@@_set_known:nnnnN
\l_@@_unused_clist \q_@@_no_value {#1} {#2} #3
}
-\cs_generate_variant:Nn \keys_set_known:nnN { nV , nv , no }
+\cs_generate_variant:Nn \keys_set_known:nnN { nV , nv , ne , no }
\cs_new_protected:Npn \keys_set_known:nnnN #1#2#3#4
{
\exp_args:No \@@_set_known:nnnnN
\l_@@_unused_clist {#3} {#1} {#2} #4
}
-\cs_generate_variant:Nn \keys_set_known:nnnN { nV , nv , no }
+\cs_generate_variant:Nn \keys_set_known:nnnN { nV , nv , ne , no }
\cs_new_protected:Npn \@@_set_known:nnnnN #1#2#3#4#5
{
\clist_clear:N \l_@@_unused_clist
\@@_set_known:nnn {#2} {#3} {#4}
- \__kernel_tl_set:Nx #5 { \exp_not:o \l_@@_unused_clist }
+ \__kernel_tl_set:Ne #5 { \exp_not:o \l_@@_unused_clist }
\tl_set:Nn \l_@@_unused_clist {#1}
}
\cs_new_protected:Npn \keys_set_known:nn #1#2
{ \@@_set_known:nnn \q_@@_no_value {#1} {#2} }
-\cs_generate_variant:Nn \keys_set_known:nn { nV , nv , no }
+\cs_generate_variant:Nn \keys_set_known:nn { nV , nv , ne , no }
\cs_new_protected:Npn \@@_set_known:nnn #1#2#3
{
- \use:x
+ \use:e
{
\bool_set_true:N \exp_not:N \l_@@_only_known_bool
\bool_set_false:N \exp_not:N \l_@@_filtered_bool
@@ -2888,7 +2904,7 @@
{
\clist_clear:N \l_@@_unused_clist
\@@_set_filter:nnnn {#2} {#3} {#4} {#5}
- \__kernel_tl_set:Nx #6 { \exp_not:o \l_@@_unused_clist }
+ \__kernel_tl_set:Ne #6 { \exp_not:o \l_@@_unused_clist }
\tl_set:Nn \l_@@_unused_clist {#1}
}
\cs_new_protected:Npn \keys_set_filter:nnn #1#2#3
@@ -2896,7 +2912,7 @@
\cs_generate_variant:Nn \keys_set_filter:nnn { nnV , nnv , nno }
\cs_new_protected:Npn \@@_set_filter:nnnn #1#2#3#4
{
- \use:x
+ \use:e
{
\bool_set_false:N \exp_not:N \l_@@_only_known_bool
\bool_set_true:N \exp_not:N \l_@@_filtered_bool
@@ -2915,7 +2931,7 @@
}
\cs_new_protected:Npn \keys_set_groups:nnn #1#2#3
{
- \use:x
+ \use:e
{
\bool_set_false:N \exp_not:N \l_@@_only_known_bool
\bool_set_false:N \exp_not:N \l_@@_filtered_bool
@@ -3001,7 +3017,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_set_keyval:nnn #1#2#3
{
- \__kernel_tl_set:Nx \l_keys_path_str
+ \__kernel_tl_set:Ne \l_keys_path_str
{
\tl_if_blank:nF {#1}
{ #1 / }
@@ -3020,7 +3036,7 @@
}
\cs_generate_variant:Nn \@@_set_keyval:nnn { o }
% \end{macrocode}
-% This function uses \cs{cs_set_nopar:Npx} internally for performance reasons,
+% This function uses \cs{cs_set_nopar:Npe} internally for performance reasons,
% the argument |#1| is already a string in every usage, so turning it into a
% string again seems unnecessary.
% \begin{macrocode}
@@ -3036,12 +3052,12 @@
\cs_new_protected:Npn \@@_find_key_module_auxii:Nw
#1 #2 \s_@@_mark #3 \s_@@_nil \@@_find_key_module_auxii:Nw
{
- \cs_set_nopar:Npx #1 { \tl_if_empty:NF #1 { #1 / } #2 }
+ \cs_set_nopar:Npe #1 { \tl_if_empty:NF #1 { #1 / } #2 }
\@@_find_key_module_auxi:Nw #1 #3 \s_@@_nil \@@_find_key_module_auxiii:Nw
}
\cs_new_protected:Npn \@@_find_key_module_auxiii:Nw #1 #2 \s_@@_mark
{
- \cs_set_nopar:Npx #1 { \tl_if_empty:NF #1 { #1 / } #2 }
+ \cs_set_nopar:Npe #1 { \tl_if_empty:NF #1 { #1 / } #2 }
\@@_find_key_module_auxi:Nw #1
}
\cs_new_protected:Npn \@@_find_key_module_auxiv:Nw
@@ -3209,7 +3225,7 @@
{ \c_@@_code_root_str \l_@@_module_str / unknown }
{ \@@_execute:no { \l_@@_module_str / unknown } \l_keys_value_tl }
{
- \msg_error:nnxx { keys } { unknown }
+ \msg_error:nnee { keys } { unknown }
\l_keys_path_str \l_@@_module_str
}
}
@@ -3248,7 +3264,7 @@
{
\@@_quark_if_no_value:NTF \l_@@_relative_tl
{
- \clist_put_right:Nx \l_@@_unused_clist
+ \clist_put_right:Ne \l_@@_unused_clist
{
\l_keys_key_str
\bool_if:NF \l_@@_no_value_bool
@@ -3258,7 +3274,7 @@
{
\tl_if_empty:NTF \l_@@_relative_tl
{
- \clist_put_right:Nx \l_@@_unused_clist
+ \clist_put_right:Ne \l_@@_unused_clist
{
\l_keys_path_str
\bool_if:NF \l_@@_no_value_bool
@@ -3270,30 +3286,30 @@
}
\cs_new_protected:Npn \@@_store_unused_aux:
{
- \__kernel_tl_set:Nx \l_@@_relative_tl
+ \__kernel_tl_set:Ne \l_@@_relative_tl
{ \exp_args:No \@@_trim_spaces:n \l_@@_relative_tl }
- \use:x
+ \use:e
{
\cs_set_protected:Npn \@@_store_unused:w
- ####1 \l_@@_relative_tl /
- ####2 \l_@@_relative_tl /
- ####3 \s_@@_stop
+ ##1 \l_@@_relative_tl /
+ ##2 \l_@@_relative_tl /
+ ##3 \s_@@_stop
}
{
\tl_if_blank:nF {##1}
{
- \msg_error:nnxx { keys } { bad-relative-key-path }
+ \msg_error:nnee { keys } { bad-relative-key-path }
\l_keys_path_str
\l_@@_relative_tl
}
- \clist_put_right:Nx \l_@@_unused_clist
+ \clist_put_right:Ne \l_@@_unused_clist
{
\exp_not:n {##2}
\bool_if:NF \l_@@_no_value_bool
{ = { \exp_not:o \l_keys_value_tl } }
}
}
- \use:x
+ \use:e
{
\@@_store_unused:w \l_keys_path_str
\l_@@_relative_tl / \l_@@_relative_tl /
@@ -3458,9 +3474,9 @@
% To show a key, show its code using a message.
% \begin{macrocode}
\cs_new_protected:Npn \keys_show:nn
- { \@@_show:Nnn \msg_show:nnxxxx }
+ { \@@_show:Nnn \msg_show:nneeee }
\cs_new_protected:Npn \keys_log:nn
- { \@@_show:Nnn \msg_log:nnxxxx }
+ { \@@_show:Nnn \msg_log:nneeee }
\cs_new_protected:Npn \@@_show:Nnn #1#2#3
{
#1 { keys } { show-key }
@@ -3483,7 +3499,7 @@
}
{ } { }
}
-\cs_new:Npx \@@_show:n #1
+\cs_new:Npe \@@_show:n #1
{
\exp_not:N \@@_show:w
#1
@@ -3492,21 +3508,21 @@
\tl_to_str:n { \@@_precompile:n }
\exp_not:N \s_@@_stop
}
-\use:x
+\use:e
{
\cs_new:Npn \exp_not:N \@@_show:w
- ##1 \tl_to_str:n { \@@_precompile:n }
- ##2 \tl_to_str:n { \@@_precompile:n }
- ##3 \exp_not:N \s_@@_stop
+ #1 \tl_to_str:n { \@@_precompile:n }
+ #2 \tl_to_str:n { \@@_precompile:n }
+ #3 \exp_not:N \s_@@_stop
}
{
\tl_if_blank:nTF {#2}
{#1}
{ \@@_show:Nw #2 \s_@@_stop }
}
-\use:x
+\use:e
{
- \cs_new:Npn \exp_not:N \@@_show:Nw ##1##2
+ \cs_new:Npn \exp_not:N \@@_show:Nw #1#2
\c_right_brace_str \exp_not:N \s_@@_stop
}
{#2}
@@ -3568,6 +3584,38 @@
\prop_gput:Nnn \g_msg_module_type_prop { keys } { }
% \end{macrocode}
%
+% \subsection{Deprecated functions}
+%
+% \begin{macro}{.str_set_x:N, .str_set_x:c}
+% \begin{macro}{.str_gset_x:N, .str_gset_x:c}
+% \begin{macrocode}
+\cs_new_protected:cpn { \c_@@_props_root_str .str_set_x:N } #1
+ { \@@_variable_set:NnnN #1 { str } { } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .str_set_x:c } #1
+ { \@@_variable_set:cnnN {#1} { str } { } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_x:N } #1
+ { \@@_variable_set:NnnN #1 { str } { g } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .str_gset_x:c } #1
+ { \@@_variable_set:cnnN {#1} { str } { g } x }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{.tl_set_x:N, .tl_set_x:c}
+% \begin{macro}{.tl_gset_x:N, .tl_gset_x:c}
+% \begin{macrocode}
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_x:N } #1
+ { \@@_variable_set:NnnN #1 { tl } { } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_set_x:c } #1
+ { \@@_variable_set:cnnN {#1} { tl } { } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_x:N } #1
+ { \@@_variable_set:NnnN #1 { tl } { g } x }
+\cs_new_protected:cpn { \c_@@_props_root_str .tl_gset_x:c } #1
+ { \@@_variable_set:cnnN {#1} { tl } { g } x }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
% \begin{macrocode}
%</package>
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
index 4142ac4658f..92b8cdb971f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
index 4e1f6a5bb83..c7832c892df 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
index 82092523fa1..4feb4115a10 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -105,8 +105,8 @@
%
% \begin{function}[updated = 2011-08-16]
% {
-% \msg_new:nnnn, \msg_new:nnxx,
-% \msg_new:nnn, \msg_new:nnx
+% \msg_new:nnnn, \msg_new:nnee,
+% \msg_new:nnn, \msg_new:nne
% }
% \begin{syntax}
% \cs{msg_new:nnnn} \Arg{module} \Arg{message} \Arg{text} \Arg{more text}
@@ -320,12 +320,12 @@
% \msg_fatal:nnVn ,
% \msg_fatal:nnnV ,
% \msg_fatal:nnV ,
-% \msg_fatal:nnxxxx ,
-% \msg_fatal:nnxxx ,
-% \msg_fatal:nnnxx ,
-% \msg_fatal:nnxx ,
-% \msg_fatal:nnnx ,
-% \msg_fatal:nnx
+% \msg_fatal:nneeee ,
+% \msg_fatal:nneee ,
+% \msg_fatal:nnnee ,
+% \msg_fatal:nnee ,
+% \msg_fatal:nnne ,
+% \msg_fatal:nne
% }
% \begin{syntax}
% \cs{msg_fatal:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
@@ -347,12 +347,12 @@
% \msg_critical:nnVn ,
% \msg_critical:nnnV ,
% \msg_critical:nnV ,
-% \msg_critical:nnxxxx ,
-% \msg_critical:nnxxx ,
-% \msg_critical:nnnxx ,
-% \msg_critical:nnxx ,
-% \msg_critical:nnnx ,
-% \msg_critical:nnx
+% \msg_critical:nneeee ,
+% \msg_critical:nneee ,
+% \msg_critical:nnnee ,
+% \msg_critical:nnee ,
+% \msg_critical:nnne ,
+% \msg_critical:nne
% }
% \begin{syntax}
% \cs{msg_critical:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
@@ -380,12 +380,12 @@
% \msg_error:nnVn ,
% \msg_error:nnnV ,
% \msg_error:nnV ,
-% \msg_error:nnxxxx ,
-% \msg_error:nnxxx ,
-% \msg_error:nnnxx ,
-% \msg_error:nnxx ,
-% \msg_error:nnnx ,
-% \msg_error:nnx
+% \msg_error:nneeee ,
+% \msg_error:nneee ,
+% \msg_error:nnnee ,
+% \msg_error:nnee ,
+% \msg_error:nnne ,
+% \msg_error:nne
% }
% \begin{syntax}
% \cs{msg_error:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
@@ -402,21 +402,20 @@
% \msg_warning:nnnnn ,
% \msg_warning:nnnn ,
% \msg_warning:nnn ,
-% \msg_warning:nnn ,
% \msg_warning:nn ,
% \msg_warning:nnVV ,
% \msg_warning:nnVn ,
% \msg_warning:nnnV ,
% \msg_warning:nnV ,
-% \msg_warning:nnxxxx ,
-% \msg_warning:nnxxx ,
-% \msg_warning:nnnxx ,
-% \msg_warning:nnxx ,
-% \msg_warning:nnnx ,
-% \msg_warning:nnx
+% \msg_warning:nneeee ,
+% \msg_warning:nneee ,
+% \msg_warning:nnnee ,
+% \msg_warning:nnee ,
+% \msg_warning:nnne ,
+% \msg_warning:nne
% }
% \begin{syntax}
-% \cs{msg_warning:nnxxxx} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
+% \cs{msg_warning:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
% \end{syntax}
% Issues \meta{module} warning \meta{message}, passing \meta{arg one}
% to \meta{arg four} to the text-creating functions. The warning text
@@ -435,12 +434,12 @@
% \msg_note:nnVn ,
% \msg_note:nnnV ,
% \msg_note:nnV ,
-% \msg_note:nnxxxx ,
-% \msg_note:nnxxx ,
-% \msg_note:nnnxx ,
-% \msg_note:nnxx ,
-% \msg_note:nnnx ,
-% \msg_note:nnx ,
+% \msg_note:nneeee ,
+% \msg_note:nneee ,
+% \msg_note:nnnee ,
+% \msg_note:nnee ,
+% \msg_note:nnne ,
+% \msg_note:nne ,
% \msg_info:nnnnnn ,
% \msg_info:nnnnn ,
% \msg_info:nnnn ,
@@ -450,12 +449,12 @@
% \msg_info:nnVn ,
% \msg_info:nnnV ,
% \msg_info:nnV ,
-% \msg_info:nnxxxx ,
-% \msg_info:nnxxx ,
-% \msg_info:nnnxx ,
-% \msg_info:nnxx ,
-% \msg_info:nnnx ,
-% \msg_info:nnx
+% \msg_info:nneeee ,
+% \msg_info:nneee ,
+% \msg_info:nnnee ,
+% \msg_info:nnee ,
+% \msg_info:nnne ,
+% \msg_info:nne
% }
% \begin{syntax}
% \cs{msg_note:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
@@ -480,12 +479,12 @@
% \msg_term:nnVn ,
% \msg_term:nnnV ,
% \msg_term:nnV ,
-% \msg_term:nnxxxx ,
-% \msg_term:nnxxx ,
-% \msg_term:nnnxx ,
-% \msg_term:nnxx ,
-% \msg_term:nnnx ,
-% \msg_term:nnx ,
+% \msg_term:nneeee ,
+% \msg_term:nneee ,
+% \msg_term:nnnee ,
+% \msg_term:nnee ,
+% \msg_term:nnne ,
+% \msg_term:nne ,
% \msg_log:nnnnnn ,
% \msg_log:nnnnn ,
% \msg_log:nnnn ,
@@ -495,12 +494,12 @@
% \msg_log:nnVn ,
% \msg_log:nnnV ,
% \msg_log:nnV ,
-% \msg_log:nnxxxx ,
-% \msg_log:nnxxx ,
-% \msg_log:nnnxx ,
-% \msg_log:nnxx ,
-% \msg_log:nnnx ,
-% \msg_log:nnx
+% \msg_log:nneeee ,
+% \msg_log:nneee ,
+% \msg_log:nnnee ,
+% \msg_log:nnee ,
+% \msg_log:nnne ,
+% \msg_log:nne
% }
% \begin{syntax}
% \cs{msg_term:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
@@ -525,12 +524,12 @@
% \msg_none:nnVn ,
% \msg_none:nnnV ,
% \msg_none:nnV ,
-% \msg_none:nnxxxx ,
-% \msg_none:nnxxx ,
-% \msg_none:nnnxx ,
-% \msg_none:nnxx ,
-% \msg_none:nnnx ,
-% \msg_none:nnx
+% \msg_none:nneeee ,
+% \msg_none:nneee ,
+% \msg_none:nnnee ,
+% \msg_none:nnee ,
+% \msg_none:nnne ,
+% \msg_none:nne
% }
% \begin{syntax}
% \cs{msg_none:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
@@ -552,12 +551,12 @@
% \msg_show:nnVn ,
% \msg_show:nnnV ,
% \msg_show:nnV ,
-% \msg_show:nnxxxx ,
-% \msg_show:nnxxx ,
-% \msg_show:nnnxx ,
-% \msg_show:nnxx ,
-% \msg_show:nnnx ,
-% \msg_show:nnx
+% \msg_show:nneeee ,
+% \msg_show:nneee ,
+% \msg_show:nnnee ,
+% \msg_show:nnee ,
+% \msg_show:nnne ,
+% \msg_show:nne
% }
% \begin{syntax}
% \cs{msg_show:nnnnnn} \Arg{module} \Arg{message} \Arg{arg one} \Arg{arg two} \Arg{arg three} \Arg{arg four}
@@ -579,7 +578,7 @@
% \cs{seq_map_function:NN} \meta{seq} \cs{msg_show_item:n}
% \cs{prop_map_function:NN} \meta{prop} \cs{msg_show_item:nn}
% \end{syntax}
-% Used in the text of messages for \cs{msg_show:nnxxxx} to show or log
+% Used in the text of messages for \cs{msg_show:nnnnnn} to show or log
% a list of items or key--value pairs. The output of
% \cs{msg_show_item:n} produces a newline, the prefix |>|, two spaces,
% then the braced string representation of its argument.
@@ -798,14 +797,18 @@
{
\msg_if_exist:nnT {#1} {#2}
{
- \msg_error:nnxx { msg } { already-defined }
+ \msg_error:nnnn { msg } { already-defined }
{#1} {#2}
}
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\msg_new:nnnn, \msg_new:nnxx, \msg_new:nnn, \msg_new:nnx}
+% \begin{macro}
+% {
+% \msg_new:nnnn, \msg_new:nnee, \msg_new:nnxx,
+% \msg_new:nnn, \msg_new:nne, \msg_new:nnx
+% }
% \begin{macro}{\msg_gset:nnnn, \msg_gset:nnn}
% \begin{macro}{\msg_set:nnnn, \msg_set:nnn}
% Setting a message simply means saving the appropriate text
@@ -816,10 +819,10 @@
\@@_chk_free:nn {#1} {#2}
\msg_gset:nnnn {#1} {#2}
}
-\cs_generate_variant:Nn \msg_new:nnnn { nnxx }
+\cs_generate_variant:Nn \msg_new:nnnn { nnee , nnxx }
\cs_new_protected:Npn \msg_new:nnn #1#2#3
{ \msg_new:nnnn {#1} {#2} {#3} { } }
-\cs_generate_variant:Nn \msg_new:nnn { nnx }
+\cs_generate_variant:Nn \msg_new:nnn { nne , nnx }
\cs_new_protected:Npn \msg_set:nnnn #1#2#3#4
{
\cs_set:cpn { \c_@@_text_prefix_tl #1 / #2 }
@@ -923,8 +926,8 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_interrupt:NnnnN #1#2#3#4#5
{
- \str_set:Nx \l_@@_text_str { #1 {#2} }
- \str_set:Nx \l_@@_name_str { \msg_module_name:n {#2} }
+ \str_set:Ne \l_@@_text_str { #1 {#2} }
+ \str_set:Ne \l_@@_name_str { \msg_module_name:n {#2} }
\cs_if_eq:cNTF
{ \c_@@_more_text_prefix_tl #2 / #3 }
\@@_no_more_text:nnnn
@@ -972,7 +975,7 @@
\iow_wrap:nnnN { \\ #3 } { } { } \@@_interrupt_more_text:n
\group_begin:
\int_sub:Nn \l_iow_line_count_int { 2 }
- \iow_wrap:nxnN { \l_@@_text_str : ~ #1 }
+ \iow_wrap:nenN { \l_@@_text_str : ~ #1 }
{
( \l_@@_name_str )
\prg_replicate:nn
@@ -993,7 +996,7 @@
\tl_set:Nn \l_@@_internal_tl {#1}
}
\cs_new_protected:Npn \@@_interrupt_more_text:n #1
- { \exp_args:Nx \tex_errhelp:D { #1 \iow_newline: } }
+ { \exp_args:Ne \tex_errhelp:D { #1 \iow_newline: } }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1165,39 +1168,28 @@
##1##2##3##4##5##6 {#2}
\cs_new_protected:cpn { msg_ #1 :nnnnnn } ##1##2##3##4##5##6
{
- \use:x
+ \use:e
{
\exp_not:n { \@@_use:nnnnnnn {#1} {##1} {##2} }
{ \tl_to_str:n {##3} } { \tl_to_str:n {##4} }
{ \tl_to_str:n {##5} } { \tl_to_str:n {##6} }
}
}
- \cs_new_protected:cpx { msg_ #1 :nnnnn } ##1##2##3##4##5
+ \cs_new_protected:cpe { msg_ #1 :nnnnn } ##1##2##3##4##5
{ \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} {##4} {##5} { } }
- \cs_new_protected:cpx { msg_ #1 :nnnn } ##1##2##3##4
+ \cs_new_protected:cpe { msg_ #1 :nnnn } ##1##2##3##4
{ \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} {##4} { } { } }
- \cs_new_protected:cpx { msg_ #1 :nnn } ##1##2##3
+ \cs_new_protected:cpe { msg_ #1 :nnn } ##1##2##3
{ \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} {##3} { } { } { } }
- \cs_new_protected:cpx { msg_ #1 :nn } ##1##2
+ \cs_new_protected:cpe { msg_ #1 :nn } ##1##2
{ \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} { } { } { } { } }
- \cs_generate_variant:cn { msg_ #1 :nnn } { nnV }
- \cs_generate_variant:cn { msg_ #1 :nnnn } { nnVV , nnVn , nnnV , nnnx }
- \cs_generate_variant:cn { msg_ #1 :nnnnn } { nnnxx }
- \cs_new_protected:cpx { msg_ #1 :nnxxxx } ##1##2##3##4##5##6
- {
- \use:x
- {
- \exp_not:N \exp_not:n
- { \exp_not:c { msg_ #1 :nnnnnn } {##1} {##2} }
- {##3} {##4} {##5} {##6}
- }
- }
- \cs_new_protected:cpx { msg_ #1 :nnxxx } ##1##2##3##4##5
- { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} {##4} {##5} { } }
- \cs_new_protected:cpx { msg_ #1 :nnxx } ##1##2##3##4
- { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} {##4} { } { } }
- \cs_new_protected:cpx { msg_ #1 :nnx } ##1##2##3
- { \exp_not:c { msg_ #1 :nnxxxx } {##1} {##2} {##3} { } { } { } }
+ \cs_generate_variant:cn { msg_ #1 :nnn }
+ { nnV , nne , nnx }
+ \cs_generate_variant:cn { msg_ #1 :nnnn }
+ { nnVV , nnVn , nnnV , nnne , nnnx , nnee , nnxx }
+ \cs_generate_variant:cn { msg_ #1 :nnnnn }
+ { nnnee , nnnxx , nneee , nnxxx }
+ \cs_generate_variant:cn { msg_ #1 :nnnnnn } { nneeee , nnxxxx }
}
% \end{macrocode}
% \end{macro}
@@ -1213,11 +1205,17 @@
% \msg_fatal:nnVn ,
% \msg_fatal:nnnV ,
% \msg_fatal:nnV ,
+% \msg_fatal:nneeee ,
+% \msg_fatal:nneee ,
% \msg_fatal:nnxxxx ,
% \msg_fatal:nnxxx ,
+% \msg_fatal:nnnee ,
+% \msg_fatal:nnee ,
% \msg_fatal:nnnxx ,
% \msg_fatal:nnxx ,
% \msg_fatal:nnnx ,
+% \msg_fatal:nnne ,
+% \msg_fatal:nne ,
% \msg_fatal:nnx
% }
% \begin{macro}{\@@_fatal_exit:}
@@ -1253,11 +1251,17 @@
% \msg_critical:nnVn ,
% \msg_critical:nnnV ,
% \msg_critical:nnV ,
+% \msg_critical:nneeee ,
+% \msg_critical:nneee ,
% \msg_critical:nnxxxx ,
% \msg_critical:nnxxx ,
+% \msg_critical:nnnee ,
+% \msg_critical:nnee ,
% \msg_critical:nnnxx ,
% \msg_critical:nnxx ,
% \msg_critical:nnnx ,
+% \msg_critical:nnne ,
+% \msg_critical:nne ,
% \msg_critical:nnx
% }
% Not quite so bad: just end the current file.
@@ -1284,11 +1288,17 @@
% \msg_error:nnVn ,
% \msg_error:nnnV ,
% \msg_error:nnV ,
+% \msg_error:nneeee ,
+% \msg_error:nneee ,
% \msg_error:nnxxxx ,
% \msg_error:nnxxx ,
+% \msg_error:nnnee ,
+% \msg_error:nnee ,
% \msg_error:nnnxx ,
% \msg_error:nnxx ,
% \msg_error:nnnx ,
+% \msg_error:nnne ,
+% \msg_error:nne ,
% \msg_error:nnx
% }
% For an error, the interrupt routine is called. We check if there is
@@ -1296,8 +1306,8 @@
% permanently empty text. We have to undefine the bootstrap versions
% here.
% \begin{macrocode}
- \cs_undefine:N \msg_error:nnxx
- \cs_undefine:N \msg_error:nnx
+ \cs_undefine:N \msg_error:nnee
+ \cs_undefine:N \msg_error:nne
\cs_undefine:N \msg_error:nn
\@@_class_new:nn { error }
{
@@ -1321,11 +1331,17 @@
% \msg_warning:nnVn ,
% \msg_warning:nnnV ,
% \msg_warning:nnV ,
+% \msg_warning:nneeee ,
+% \msg_warning:nneee ,
% \msg_warning:nnxxxx ,
% \msg_warning:nnxxx ,
+% \msg_warning:nnnee ,
+% \msg_warning:nnee ,
% \msg_warning:nnnxx ,
% \msg_warning:nnxx ,
% \msg_warning:nnnx ,
+% \msg_warning:nnne ,
+% \msg_warning:nne ,
% \msg_warning:nnx ,
% \msg_note:nnnnnn ,
% \msg_note:nnnnn ,
@@ -1336,11 +1352,17 @@
% \msg_note:nnVn ,
% \msg_note:nnnV ,
% \msg_note:nnV ,
+% \msg_note:nneeee ,
+% \msg_note:nneee ,
% \msg_note:nnxxxx ,
% \msg_note:nnxxx ,
+% \msg_note:nnnee ,
+% \msg_note:nnee ,
% \msg_note:nnnxx ,
% \msg_note:nnxx ,
% \msg_note:nnnx ,
+% \msg_note:nnne ,
+% \msg_note:nne ,
% \msg_note:nnx ,
% \msg_info:nnnnnn ,
% \msg_info:nnnnn ,
@@ -1351,12 +1373,18 @@
% \msg_info:nnVn ,
% \msg_info:nnnV ,
% \msg_info:nnV ,
+% \msg_info:nneeee ,
+% \msg_info:nneee ,
% \msg_info:nnxxxx ,
% \msg_info:nnxxx ,
+% \msg_info:nnnee ,
+% \msg_info:nnee ,
% \msg_info:nnnxx ,
% \msg_info:nnxx ,
% \msg_info:nnnx ,
-% \msg_info:nnx ,
+% \msg_info:nnne ,
+% \msg_info:nne ,
+% \msg_info:nnx
% }
% Warnings and information messages have no decoration. Warnings are
% printed to the terminal while information can either go to the log
@@ -1364,10 +1392,10 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_info_aux:NNnnnnnn #1#2#3#4#5#6#7#8
{
- \str_set:Nx \l_@@_text_str { #2 {#3} }
- \str_set:Nx \l_@@_name_str { \msg_module_name:n {#3} }
+ \str_set:Ne \l_@@_text_str { #2 {#3} }
+ \str_set:Ne \l_@@_name_str { \msg_module_name:n {#3} }
#1 { }
- \iow_wrap:nxnN
+ \iow_wrap:nenN
{
\l_@@_text_str : ~
\use:c { \c_@@_text_prefix_tl #3 / #4 } {#5} {#6} {#7} {#8}
@@ -1404,21 +1432,6 @@
%
% \begin{macro}
% {
-% \msg_log:nnnnnn ,
-% \msg_log:nnnnn ,
-% \msg_log:nnnn ,
-% \msg_log:nnn ,
-% \msg_log:nn ,
-% \msg_log:nnVV ,
-% \msg_log:nnVn ,
-% \msg_log:nnnV ,
-% \msg_log:nnV ,
-% \msg_log:nnxxxx ,
-% \msg_log:nnxxx ,
-% \msg_log:nnnxx ,
-% \msg_log:nnxx ,
-% \msg_log:nnnx ,
-% \msg_log:nnx ,
% \msg_term:nnnnnn ,
% \msg_term:nnnnn ,
% \msg_term:nnnn ,
@@ -1428,12 +1441,39 @@
% \msg_term:nnVn ,
% \msg_term:nnnV ,
% \msg_term:nnV ,
+% \msg_term:nneeee ,
+% \msg_term:nneee ,
% \msg_term:nnxxxx ,
% \msg_term:nnxxx ,
+% \msg_term:nnnee ,
+% \msg_term:nnee ,
% \msg_term:nnnxx ,
% \msg_term:nnxx ,
% \msg_term:nnnx ,
+% \msg_term:nnne ,
+% \msg_term:nne ,
% \msg_term:nnx ,
+% \msg_log:nnnnnn ,
+% \msg_log:nnnnn ,
+% \msg_log:nnnn ,
+% \msg_log:nnn ,
+% \msg_log:nn ,
+% \msg_log:nnVV ,
+% \msg_log:nnVn ,
+% \msg_log:nnnV ,
+% \msg_log:nnV ,
+% \msg_log:nneeee ,
+% \msg_log:nneee ,
+% \msg_log:nnxxxx ,
+% \msg_log:nnxxx ,
+% \msg_log:nnnee ,
+% \msg_log:nnee ,
+% \msg_log:nnnxx ,
+% \msg_log:nnxx ,
+% \msg_log:nnnx ,
+% \msg_log:nnne ,
+% \msg_log:nne ,
+% \msg_log:nnx
% }
% \enquote{Log} data is very similar to information, but with no extras
% added.
@@ -1467,11 +1507,17 @@
% \msg_none:nnVn ,
% \msg_none:nnnV ,
% \msg_none:nnV ,
+% \msg_none:nneeee ,
+% \msg_none:nneee ,
% \msg_none:nnxxxx ,
% \msg_none:nnxxx ,
+% \msg_none:nnnee ,
+% \msg_none:nnee ,
% \msg_none:nnnxx ,
% \msg_none:nnxx ,
% \msg_none:nnnx ,
+% \msg_none:nnne ,
+% \msg_none:nne ,
% \msg_none:nnx
% }
% The \texttt{none} message type is needed so that input can be gobbled.
@@ -1491,11 +1537,17 @@
% \msg_show:nnVn ,
% \msg_show:nnnV ,
% \msg_show:nnV ,
+% \msg_show:nneeee ,
+% \msg_show:nneee ,
% \msg_show:nnxxxx ,
% \msg_show:nnxxx ,
+% \msg_show:nnnee ,
+% \msg_show:nnee ,
% \msg_show:nnnxx ,
% \msg_show:nnxx ,
-% \msg_show:nnx ,
+% \msg_show:nnnx ,
+% \msg_show:nnne ,
+% \msg_show:nne ,
% \msg_show:nnx
% }
% \begin{macro}{\@@_show:n, \@@_show:w, \@@_show_dot:w, \@@_show:nn}
@@ -1563,18 +1615,18 @@
% the messages. We need to use |^^J| here directly as \pkg{l3file} is
% not yet loaded.
% \begin{macrocode}
-\cs_new:Npx \msg_show_item:n #1
+\cs_new:Npe \msg_show_item:n #1
{ ^^J > ~ \c_space_tl \exp_not:N \tl_to_str:n { {#1} } }
-\cs_new:Npx \msg_show_item_unbraced:n #1
+\cs_new:Npe \msg_show_item_unbraced:n #1
{ ^^J > ~ \c_space_tl \exp_not:N \tl_to_str:n {#1} }
-\cs_new:Npx \msg_show_item:nn #1#2
+\cs_new:Npe \msg_show_item:nn #1#2
{
^^J > \use:nn { ~ } { ~ }
\exp_not:N \tl_to_str:n { {#1} }
\use:nn { ~ } { ~ } => \use:nn { ~ } { ~ }
\exp_not:N \tl_to_str:n { {#2} }
}
-\cs_new:Npx \msg_show_item_unbraced:nn #1#2
+\cs_new:Npe \msg_show_item_unbraced:nn #1#2
{
^^J > \use:nn { ~ } { ~ }
\exp_not:N \tl_to_str:n {#1}
@@ -1595,7 +1647,7 @@
\cs_new:Npn \@@_class_chk_exist:nT #1
{
\cs_if_free:cTF { @@_ #1 _code:nnnnnn }
- { \msg_error:nnx { msg } { class-unknown } {#1} }
+ { \msg_error:nnn { msg } { class-unknown } {#1} }
}
% \end{macrocode}
% \end{macro}
@@ -1654,7 +1706,7 @@
\@@_class_chk_exist:nT {#1}
{
\tl_set:Nn \l_@@_current_class_tl {#1}
- \cs_set_protected:Npx \@@_use_code:
+ \cs_set_protected:Npe \@@_use_code:
{
\exp_not:n
{
@@ -1665,7 +1717,7 @@
\@@_use_redirect_name:n { #2 / #3 }
}
}
- { \msg_error:nnxx { msg } { unknown } {#2} {#3} }
+ { \msg_error:nnnn { msg } { unknown } {#2} {#3} }
\cs_if_exist_use:N \conditionally@traceon
}
\cs_new_protected:Npn \@@_use_code: { }
@@ -1815,7 +1867,7 @@
\tl_if_eq:NNTF \l_@@_class_tl \l_@@_current_class_tl
{
\prop_put:cnn { l_@@_redirect_ #2 _prop } {#3} {#2}
- \msg_warning:nnxxxx
+ \msg_warning:nneeee
{ msg } { redirect-loop }
{ \seq_item:Nn \l_@@_class_loop_seq { 1 } }
{ \seq_item:Nn \l_@@_class_loop_seq { 2 } }
@@ -1871,26 +1923,26 @@
%
% \begin{macro}
% {
-% \__kernel_msg_info:nnxx ,
-% \__kernel_msg_warning:nnx ,
-% \__kernel_msg_warning:nnxx ,
-% \__kernel_msg_error:nnx ,
-% \__kernel_msg_error:nnxx ,
-% \__kernel_msg_error:nnxxx
+% \__kernel_msg_info:nnee ,
+% \__kernel_msg_warning:nne ,
+% \__kernel_msg_warning:nnee ,
+% \__kernel_msg_error:nne ,
+% \__kernel_msg_error:nnee ,
+% \__kernel_msg_error:nneee
% }
% \begin{macrocode}
-\cs_new_protected:Npn \__kernel_msg_info:nnxx #1
- { \msg_info:nnxx { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_warning:nnx #1
- { \msg_warning:nnx { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_warning:nnxx #1
- { \msg_warning:nnxx { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_error:nnx #1
- { \msg_error:nnx { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_error:nnxx #1
- { \msg_error:nnxx { LaTeX / #1 } }
-\cs_new_protected:Npn \__kernel_msg_error:nnxxx #1
- { \msg_error:nnxxx { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_info:nnee #1
+ { \msg_info:nnee { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_warning:nne #1
+ { \msg_warning:nne { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_warning:nnee #1
+ { \msg_warning:nnee { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_error:nne #1
+ { \msg_error:nne { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_error:nnee #1
+ { \msg_error:nnee { LaTeX / #1 } }
+\cs_new_protected:Npn \__kernel_msg_error:nneee #1
+ { \msg_error:nneee { LaTeX / #1 } }
% \end{macrocode}
% \end{macro}
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
index f3f56f7f723..f299b215791 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx b/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
index ebfdc9115b7..f583b393ca4 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -60,7 +60,7 @@
% \end{function}
%
% \begin{function}[added = 2022-08-23]
-% {\pdf_object_write:nnn, \pdf_object_write:nnx}
+% {\pdf_object_write:nnn, \pdf_object_write:nne}
% \begin{syntax}
% \cs{pdf_object_write:nn} \Arg{object} \Arg{type} \Arg{content}
% \end{syntax}
@@ -87,7 +87,7 @@
% \end{function}
%
% \begin{function}[added = 2021-02-10]
-% {\pdf_object_unnamed_write:nn, \pdf_object_unnamed_write:nx}
+% {\pdf_object_unnamed_write:nn, \pdf_object_unnamed_write:ne}
% \begin{syntax}
% \cs{pdf_object_unnamed_write:nn} \Arg{type} \Arg{content}
% \end{syntax}
@@ -312,9 +312,14 @@
% \subsection{Objects}
%
% \begin{macro}{\pdf_object_new:n}
-% \begin{macro}{\pdf_object_write:nnn, \pdf_object_write:nnx}
+% \begin{macro}
+% {\pdf_object_write:nnn, \pdf_object_write:nne, \pdf_object_write:nnx}
% \begin{macro}{\pdf_object_ref:n}
-% \begin{macro}{\pdf_object_unnamed_write:nn, \pdf_object_unnamed_write:nx}
+% \begin{macro}
+% {
+% \pdf_object_unnamed_write:nn, \pdf_object_unnamed_write:ne,
+% \pdf_object_unnamed_write:nx
+% }
% \begin{macro}{\pdf_object_ref_last:}
% \begin{macro}[pTF]{\pdf_object_if_exist:n}
% Simple to do: all objects create a constant |int| so it is not a
@@ -332,14 +337,14 @@
\@@_backend_object_write:nnn {#1} {#2} {#3}
\bool_gset_true:N \g_@@_init_bool
}
-\cs_generate_variant:Nn \pdf_object_write:nnn { nnx }
+\cs_generate_variant:Nn \pdf_object_write:nnn { nne , nnx }
\cs_new:Npn \pdf_object_ref:n #1 { \@@_backend_object_ref:n {#1} }
\cs_new_protected:Npn \pdf_object_unnamed_write:nn #1#2
{
\@@_backend_object_now:nn {#1} {#2}
\bool_gset_true:N \g_@@_init_bool
}
-\cs_generate_variant:Nn \pdf_object_unnamed_write:nn { nx }
+\cs_generate_variant:Nn \pdf_object_unnamed_write:nn { ne , nx }
\cs_new:Npn \pdf_object_ref_last: { \@@_backend_object_last: }
\prg_new_conditional:Npnn \pdf_object_if_exist:n #1 { p , T , F , TF }
{
@@ -536,7 +541,7 @@
}
\cs_new_protected:Npn \pdf_object_write:nn #1#2
{
- \exp_args:Nnx \@@_backend_object_write:nnn
+ \exp_args:Nne \@@_backend_object_write:nnn
{#1} { \prop_item:Nn \g_@@_object_prop {#1} } {#2}
\bool_gset_true:N \g_@@_init_bool
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
index ec778817d3d..e3f09d90d31 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -1079,11 +1079,11 @@
{
\token_case_meaning:NnF #2
{
- \c_true_bool { \exp_args:Nx #1 { \token_to_str:N #2 = true } }
- \c_false_bool { \exp_args:Nx #1 { \token_to_str:N #2 = false } }
+ \c_true_bool { \exp_args:Ne #1 { \token_to_str:N #2 = true } }
+ \c_false_bool { \exp_args:Ne #1 { \token_to_str:N #2 = false } }
}
{
- \msg_error:nnxxx { kernel } { bad-type }
+ \msg_error:nneee { kernel } { bad-type }
{ \token_to_str:N #2 } { \token_to_meaning:N #2 } { bool }
}
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
index 2d5fc3edccf..69cafe1cff4 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -165,18 +165,28 @@
%
% \begin{function}[updated = 2012-07-09]
% {
-% \prop_put:Nnn, \prop_put:NnV, \prop_put:Nno, \prop_put:Nne, \prop_put:Nnx,
-% \prop_put:NVn, \prop_put:NVV, \prop_put:NVx, \prop_put:Nvx,
-% \prop_put:Non, \prop_put:Nxn, \prop_put:NxV, \prop_put:Noo, \prop_put:Nxx,
-% \prop_put:cnn, \prop_put:cnV, \prop_put:cno, \prop_put:cne, \prop_put:cnx,
-% \prop_put:cVn, \prop_put:cVV, \prop_put:cVx, \prop_put:cvx,
-% \prop_put:con, \prop_put:cxn, \prop_put:cxV, \prop_put:coo, \prop_put:cxx,
-% \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nno, \prop_gput:Nne, \prop_gput:Nnx,
-% \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVx, \prop_gput:Nvx,
-% \prop_gput:Non, \prop_gput:Nxn, \prop_gput:NxV, \prop_gput:Noo, \prop_gput:Nxx,
-% \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cno, \prop_gput:cne, \prop_gput:cnx,
-% \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVx, \prop_gput:cvx,
-% \prop_gput:con, \prop_gput:cxn, \prop_gput:cxV, \prop_gput:coo, \prop_gput:cxx
+% \prop_put:Nnn, \prop_put:NnV, \prop_put:Nnv, \prop_put:Nne,
+% \prop_put:NVn, \prop_put:NVV, \prop_put:NVv, \prop_put:NVe,
+% \prop_put:Nvn, \prop_put:NvV, \prop_put:Nvv, \prop_put:Nve,
+% \prop_put:Nen, \prop_put:NeV, \prop_put:Nev, \prop_put:Nee,
+% \prop_put:Nno, \prop_put:Non, \prop_put:Noo,
+% \prop_put:cnn, \prop_put:cnV, \prop_put:cnv, \prop_put:cne,
+% \prop_put:cno,
+% \prop_put:cVn, \prop_put:cVV, \prop_put:cVv, \prop_put:cVe,
+% \prop_put:cvn, \prop_put:cvV, \prop_put:cvv, \prop_put:cve,
+% \prop_put:cen, \prop_put:ceV, \prop_put:cev, \prop_put:cee,
+% \prop_put:con, \prop_put:coo,
+% \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nnv, \prop_gput:Nne,
+% \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVv, \prop_gput:NVe,
+% \prop_gput:Nvn, \prop_gput:NvV, \prop_gput:Nvv, \prop_gput:Nve,
+% \prop_gput:Nen, \prop_gput:NeV, \prop_gput:Nev, \prop_gput:Nee,
+% \prop_gput:Nno, \prop_gput:Non, \prop_gput:Noo,
+% \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cnv, \prop_gput:cne,
+% \prop_gput:cno,
+% \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVv, \prop_gput:cVe,
+% \prop_gput:cvn, \prop_gput:cvV, \prop_gput:cvv, \prop_gput:cve,
+% \prop_gput:cen, \prop_gput:ceV, \prop_gput:cev, \prop_gput:cee,
+% \prop_gput:con, \prop_gput:coo
% }
% \begin{syntax}
% \cs{prop_put:Nnn} \meta{property list} \Arg{key} \Arg{value}
@@ -192,8 +202,10 @@
%
% \begin{function}
% {
-% \prop_put_if_new:Nnn, \prop_put_if_new:cnn,
-% \prop_gput_if_new:Nnn, \prop_gput_if_new:cnn
+% \prop_put_if_new:Nnn, \prop_put_if_new:NVn, \prop_put_if_new:NnV,
+% \prop_put_if_new:cnn, \prop_put_if_new:cVn, \prop_put_if_new:cnV,
+% \prop_gput_if_new:Nnn, \prop_gput_if_new:NVn, \prop_gput_if_new:NnV,
+% \prop_gput_if_new:cnn, \prop_gput_if_new:cVn, \prop_gput_if_new:cnV
% }
% \begin{syntax}
% \cs{prop_put_if_new:Nnn} \meta{property list} \Arg{key} \Arg{value}
@@ -250,8 +262,10 @@
%
% \begin{function}[updated = 2011-08-28]
% {
-% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN,
-% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN,
+% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NeN,
+% \prop_get:NoN,
+% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:ceN,
+% \prop_get:coN,
% \prop_get:cnc
% }
% \begin{syntax}
@@ -267,7 +281,12 @@
% \end{function}
%
% \begin{function}[updated = 2011-08-18]
-% {\prop_pop:NnN, \prop_pop:NoN, \prop_pop:cnN, \prop_pop:coN}
+% {
+% \prop_pop:NnN, \prop_pop:NVN,
+% \prop_pop:NoN,
+% \prop_pop:cnN, \prop_pop:cVN,
+% \prop_pop:coN
+% }
% \begin{syntax}
% \cs{prop_pop:NnN} \meta{property list} \Arg{key} \meta{tl var}
% \end{syntax}
@@ -281,7 +300,12 @@
% \end{function}
%
% \begin{function}[updated = 2011-08-18]
-% {\prop_gpop:NnN, \prop_gpop:NoN, \prop_gpop:cnN, \prop_gpop:coN}
+% {
+% \prop_gpop:NnN, \prop_gpop:NVN,
+% \prop_gpop:NoN,
+% \prop_gpop:cnN, \prop_gpop:cVN,
+% \prop_gpop:coN
+% }
% \begin{syntax}
% \cs{prop_gpop:NnN} \meta{property list} \Arg{key} \meta{tl var}
% \end{syntax}
@@ -297,8 +321,8 @@
%
% \begin{function}[added = 2014-07-17, EXP]
% {
-% \prop_item:Nn, \prop_item:NV, \prop_item:No, \prop_item:Ne,
-% \prop_item:cn, \prop_item:cV, \prop_item:co, \prop_item:ce
+% \prop_item:Nn, \prop_item:NV, \prop_item:Ne, \prop_item:No,
+% \prop_item:cn, \prop_item:cV, \prop_item:ce, \prop_item:co
% }
% \begin{syntax}
% \cs{prop_item:Nn} \meta{property list} \Arg{key}
@@ -343,8 +367,10 @@
%
% \begin{function}[added = 2012-05-12]
% {
-% \prop_remove:Nn, \prop_remove:NV, \prop_remove:cn, \prop_remove:cV,
-% \prop_gremove:Nn, \prop_gremove:NV, \prop_gremove:cn, \prop_gremove:cV
+% \prop_remove:Nn, \prop_remove:NV, \prop_remove:Ne,
+% \prop_remove:cn, \prop_remove:cV, \prop_remove:ce,
+% \prop_gremove:Nn, \prop_gremove:NV, \prop_gremove:Ne,
+% \prop_gremove:cn, \prop_gremove:cV, \prop_gremove:ce,
% }
% \begin{syntax}
% \cs{prop_remove:Nn} \meta{property list} \Arg{key}
@@ -378,8 +404,8 @@
%
% \begin{function}[updated = 2011-09-15, EXP, pTF]
% {
-% \prop_if_in:Nn, \prop_if_in:NV, \prop_if_in:No,
-% \prop_if_in:cn, \prop_if_in:cV, \prop_if_in:co
+% \prop_if_in:Nn, \prop_if_in:NV, \prop_if_in:Ne, \prop_if_in:No,
+% \prop_if_in:cn, \prop_if_in:cV, \prop_if_in:ce, \prop_if_in:co
% }
% \begin{syntax}
% \cs{prop_if_in_p:Nn} \meta{property list} \Arg{key}
@@ -404,8 +430,10 @@
%
% \begin{function}[updated = 2012-05-19, TF]
% {
-% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN,
-% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN,
+% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NeN,
+% \prop_get:NoN,
+% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:ceN,
+% \prop_get:coN,
% \prop_get:cnc
% }
% \begin{syntax}
@@ -423,7 +451,12 @@
% \end{function}
%
% \begin{function}[TF, added = 2011-08-18, updated = 2012-05-19]
-% {\prop_pop:NnN, \prop_pop:cnN}
+% {
+% \prop_pop:NnN, \prop_pop:NVN,
+% \prop_pop:NoN,
+% \prop_pop:cnN, \prop_pop:cVN,
+% \prop_pop:coN
+% }
% \begin{syntax}
% \cs{prop_pop:NnNTF} \meta{property list} \Arg{key} \meta{token list variable} \Arg{true code} \Arg{false code}
% \end{syntax}
@@ -439,7 +472,12 @@
% \end{function}
%
% \begin{function}[TF, added = 2011-08-18, updated = 2012-05-19]
-% {\prop_gpop:NnN, \prop_gpop:cnN}
+% {
+% \prop_gpop:NnN, \prop_gpop:NVN,
+% \prop_gpop:NoN,
+% \prop_gpop:cnN, \prop_gpop:cVN,
+% \prop_gpop:coN
+% }
% \begin{syntax}
% \cs{prop_gpop:NnNTF} \meta{property list} \Arg{key} \meta{token list variable} \Arg{true code} \Arg{false code}
% \end{syntax}
@@ -874,7 +912,7 @@
\cs_new_protected:Npn \prop_const_from_keyval:Nn #1#2
{
\prop_set_from_keyval:Nn \l_@@_internal_prop {#2}
- \tl_const:Nx #1 { \exp_not:o \l_@@_internal_prop }
+ \tl_const:Ne #1 { \exp_not:o \l_@@_internal_prop }
\prop_clear:N \l_@@_internal_prop
}
\cs_generate_variant:Nn \prop_const_from_keyval:Nn { c }
@@ -959,9 +997,15 @@
% \end{macro}
%
% \begin{macro}[tested = m3prop002]
-% {\prop_remove:Nn, \prop_remove:NV, \prop_remove:cn, \prop_remove:cV}
+% {
+% \prop_remove:Nn, \prop_remove:NV, \prop_remove:Ne,
+% \prop_remove:cn, \prop_remove:cV, \prop_remove:ce
+% }
% \begin{macro}[tested = m3prop002]
-% {\prop_gremove:Nn, \prop_gremove:NV, \prop_gremove:cn, \prop_gremove:cV}
+% {
+% \prop_gremove:Nn, \prop_gremove:NV, \prop_gremove:Ne,
+% \prop_gremove:cn, \prop_gremove:cV, \prop_gremove:ce
+% }
% Deleting from a property starts by splitting the list.
% If the key is present in the property list, the returned value is ignored.
% If the key is missing, nothing happens.
@@ -978,18 +1022,18 @@
{ \tl_gset:Nn #1 { ##1 ##3 } }
{ }
}
-\cs_generate_variant:Nn \prop_remove:Nn { NV }
-\cs_generate_variant:Nn \prop_remove:Nn { c , cV }
-\cs_generate_variant:Nn \prop_gremove:Nn { NV }
-\cs_generate_variant:Nn \prop_gremove:Nn { c , cV }
+\cs_generate_variant:Nn \prop_remove:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \prop_gremove:Nn { NV , Ne , c , cV , ce }
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}[tested = m3prop002]
% {
-% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN,
-% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN,
+% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NeN,
+% \prop_get:NoN, \prop_get:NxN,
+% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:ceN,
+% \prop_get:coN, \prop_get:cxN,
% \prop_get:cnc
% }
% Getting an item from a list is very easy: after splitting,
@@ -1002,15 +1046,26 @@
{ \tl_set:Nn #3 {##2} }
{ \tl_set:Nn #3 { \q_no_value } }
}
-\cs_generate_variant:Nn \prop_get:NnN { NV , Nv , No , Nx }
-\cs_generate_variant:Nn \prop_get:NnN { c , cV , cv , co , cx , cnc }
+\cs_generate_variant:Nn \prop_get:NnN { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \prop_get:NnN { No , Nx , co , cx }
+\cs_generate_variant:Nn \prop_get:NnN { cnc }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[tested = m3prop002]
-% {\prop_pop:NnN, \prop_pop:NoN, \prop_pop:cnN, \prop_pop:coN}
+% {
+% \prop_pop:NnN, \prop_pop:NVN,
+% \prop_pop:NoN,
+% \prop_pop:cnN, \prop_pop:cVN,
+% \prop_pop:coN,
+% }
% \begin{macro}[tested = m3prop002]
-% {\prop_gpop:NnN, \prop_gpop:NoN, \prop_gpop:cnN, \prop_gpop:coN}
+% {
+% \prop_gpop:NnN, \prop_gpop:NVN,
+% \prop_gpop:NoN,
+% \prop_gpop:cnN, \prop_gpop:cVN,
+% \prop_gpop:coN,
+% }
% Popping a value also starts by doing the split.
% If the key is present, save the value in the token list and update the
% property list as when deleting.
@@ -1034,10 +1089,10 @@
}
{ \tl_set:Nn #3 { \q_no_value } }
}
-\cs_generate_variant:Nn \prop_pop:NnN { No }
-\cs_generate_variant:Nn \prop_pop:NnN { c , co }
-\cs_generate_variant:Nn \prop_gpop:NnN { No }
-\cs_generate_variant:Nn \prop_gpop:NnN { c , co }
+\cs_generate_variant:Nn \prop_pop:NnN { NV , No }
+\cs_generate_variant:Nn \prop_pop:NnN { c , cV , co }
+\cs_generate_variant:Nn \prop_gpop:NnN { NV , No }
+\cs_generate_variant:Nn \prop_gpop:NnN { c , cV , co }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1129,7 +1184,13 @@
% \end{macro}
%
% \begin{macro}[TF, tested = m3prop004]
-% {\prop_pop:NnN, \prop_pop:cnN, \prop_gpop:NnN, \prop_gpop:cnN}
+% {
+% \prop_pop:NnN, \prop_pop:NVN,
+% \prop_pop:cnN, \prop_pop:cVN,
+% \prop_gpop:NnN, \prop_gpop:NVN,
+% \prop_gpop:NoN,
+% \prop_gpop:cnN, \prop_gpop:cVN,
+% }
% Popping an item from a property list, keeping track of whether
% the key was present or not, is implemented as a conditional.
% If the key was missing, neither the property list, nor the token
@@ -1156,28 +1217,40 @@
}
{ \prg_return_false: }
}
-\prg_generate_conditional_variant:Nnn \prop_pop:NnN { c } { T , F , TF }
-\prg_generate_conditional_variant:Nnn \prop_gpop:NnN { c } { T , F , TF }
+\prg_generate_conditional_variant:Nnn \prop_pop:NnN { NV , c , cV } { T , F , TF }
+\prg_generate_conditional_variant:Nnn \prop_gpop:NnN { NV , c , cV } { T , F , TF }
% \end{macrocode}
% \end{macro}
%
% \begin{macro}[tested = m3prop002]
% {
-% \prop_put:Nnn, \prop_put:NnV, \prop_put:Nno, \prop_put:Nne, \prop_put:Nnx,
-% \prop_put:NVn, \prop_put:NVV, \prop_put:NVx, \prop_put:Nvx,
-% \prop_put:Non, \prop_put:Nxn, \prop_put:NxV, \prop_put:Noo, \prop_put:Nxx,
-% \prop_put:cnn, \prop_put:cnV, \prop_put:cno, \prop_put:cne, \prop_put:cnx,
-% \prop_put:cVn, \prop_put:cVV, \prop_put:cVx, \prop_put:cvx,
-% \prop_put:con, \prop_put:cxn, \prop_put:cxV, \prop_put:coo, \prop_put:cxx
+% \prop_put:Nnn, \prop_put:NnV, \prop_put:Nnv, \prop_put:Nne,
+% \prop_put:NVn, \prop_put:NVV, \prop_put:NVv, \prop_put:NVe,
+% \prop_put:Nvn, \prop_put:NvV, \prop_put:Nvv, \prop_put:Nve,
+% \prop_put:Nen, \prop_put:NeV, \prop_put:Nev, \prop_put:Nee,
+% \prop_put:Nno, \prop_put:Nnx, \prop_put:NVx,
+% \prop_put:Non, \prop_put:Noo, \prop_put:NxV, \prop_put:Nxx,
+% \prop_put:cnn, \prop_put:cnV, \prop_put:cnv, \prop_put:cne,
+% \prop_put:cno, \prop_put:cnx,
+% \prop_put:cVn, \prop_put:cVV, \prop_put:cVv, \prop_put:cVe,
+% \prop_put:cvn, \prop_put:cvV, \prop_put:cvv, \prop_put:cve,
+% \prop_put:cen, \prop_put:ceV, \prop_put:cev, \prop_put:cee,
+% \prop_put:con, \prop_put:coo, \prop_put:cxV, \prop_put:cxx
% }
% \begin{macro}[tested = m3prop002]
% {
-% \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nno, \prop_gput:Nne, \prop_gput:Nnx,
-% \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVx, \prop_hput:Nvx,
-% \prop_gput:Non, \prop_gput:Nxn, \prop_pgut:NxV, \prop_gput:Noo, \prop_gput:Nxx,
-% \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cno, \prop_gput:cne, \prop_gput:cnx,
-% \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVx, \prop_gput:cvx,
-% \prop_gput:con, \prop_gput:cxn, \prop_gput:cxV, \prop_gput:coo, \prop_gput:cxx
+% \prop_gput:Nnn, \prop_gput:NnV, \prop_gput:Nnv, \prop_gput:Nne,
+% \prop_gput:NVn, \prop_gput:NVV, \prop_gput:NVv, \prop_gput:NVe,
+% \prop_gput:Nvn, \prop_gput:NvV, \prop_gput:Nvv, \prop_gput:Nve,
+% \prop_gput:Nen, \prop_gput:NeV, \prop_gput:Nev, \prop_gput:Nee,
+% \prop_gput:Nno, \prop_gput:Non, \prop_gput:Noo,
+% \prop_gput:Nnx, \prop_gput:NVx, \prop_gput:Nxn, \prop_gput:Nxx,
+% \prop_gput:cnn, \prop_gput:cnV, \prop_gput:cnv, \prop_gput:cne,
+% \prop_gput:cno, \prop_gput:cnx,
+% \prop_gput:cVn, \prop_gput:cVV, \prop_gput:cVv, \prop_gput:cVe,
+% \prop_gput:cvn, \prop_gput:cvV, \prop_gput:cvv, \prop_gput:cve,
+% \prop_gput:cen, \prop_gput:ceV, \prop_gput:cev, \prop_gput:cee,
+% \prop_gput:cno, \prop_gput:con, \prop_gput:cxn, \prop_gput:cxx
% }
% \begin{macro}{\@@_put:NNnn}
% Since the branches of \cs{@@_split:NnTF} are used as the replacement
@@ -1193,8 +1266,8 @@
% updated entry is placed at the same spot as the original \meta{key}
% in the property list, preserving the order of entries.
% \begin{macrocode}
-\cs_new_protected:Npn \prop_put:Nnn { \@@_put:NNnn \__kernel_tl_set:Nx }
-\cs_new_protected:Npn \prop_gput:Nnn { \@@_put:NNnn \__kernel_tl_gset:Nx }
+\cs_new_protected:Npn \prop_put:Nnn { \@@_put:NNnn \__kernel_tl_set:Ne }
+\cs_new_protected:Npn \prop_gput:Nnn { \@@_put:NNnn \__kernel_tl_gset:Ne }
\cs_new_protected:Npn \@@_put:NNnn #1#2#3#4
{
\tl_set:Nn \l_@@_internal_tl
@@ -1207,22 +1280,48 @@
{ #1 #2 { \exp_not:o {#2} \l_@@_internal_tl } }
}
\cs_generate_variant:Nn \prop_put:Nnn
- { NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , NxV , Noo , Nxx }
+ {
+ NnV , Nnv , Nne , NV , NVV , NVv , NVe ,
+ Nv , NvV , Nvv , Nve , Ne , NeV , Nev , Nee
+ }
+\cs_generate_variant:Nn \prop_put:Nnn
+ { Nno , No , Noo , Nnx , NVx , NxV , Nxx }
+\cs_generate_variant:Nn \prop_put:Nnn
+ {
+ c , cnV , cnv , cne , cV , cVV , cVv , cVe ,
+ cv , cvV , cvv , cve , ce , ceV , cev , cee
+ }
\cs_generate_variant:Nn \prop_put:Nnn
- { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , cxV , coo , cxx }
+ { cno , co , coo , cnx , cVx , cxV , cxx }
+\cs_generate_variant:Nn \prop_gput:Nnn
+ {
+ NnV , Nnv , Nne , NV , NVV , NVv , NVe ,
+ Nv , NvV , Nvv , Nve , Ne , NeV , Nev , Nee
+ }
\cs_generate_variant:Nn \prop_gput:Nnn
- { NnV , Nno , Nne , Nnx , NV , NVV , NVx , Nvx , No , Nx , NxV , Noo , Nxx }
+ { Nno , No , Noo , Nnx , NVx , NxV , Nxx }
\cs_generate_variant:Nn \prop_gput:Nnn
- { c , cnV , cno , cne , cnx , cV , cVV , cVx , cvx , co , cx , cxV , coo , cxx }
+ {
+ c , cnV , cnv , cne , cV , cVV , cVv , cVe ,
+ cv , cvV , cvv , cve , ce , ceV , cev , cee
+ }
+\cs_generate_variant:Nn \prop_gput:Nnn
+ { cno , co , coo , cnx , cVx , cxV , cxx }
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}[tested = m3prop002]
-% {\prop_put_if_new:Nnn, \prop_put_if_new:cnn}
+% {
+% \prop_put_if_new:Nnn, \prop_put_if_new:NVn, \prop_put_if_new:NnV,
+% \prop_put_if_new:cnn, \prop_put_if_new:cVn, \prop_put_if_new:cnV
+% }
% \begin{macro}[tested = m3prop002]
-% {\prop_gput_if_new:Nnn, \prop_gput_if_new:cnn}
+% {
+% \prop_gput_if_new:Nnn, \prop_gput_if_new:NVn, \prop_gput_if_new:NnV,
+% \prop_gput_if_new:cnn, \prop_gput_if_new:cVn, \prop_gput_if_new:cnV
+% }
% \begin{macro}{\@@_put_if_new:NNnn}
% Adding conditionally also splits. If the key is already present,
% the three brace groups given by \cs{@@_split:NnTF} are removed.
@@ -1230,9 +1329,9 @@
% convert the key to a string using \cs{tl_to_str:n}.
% \begin{macrocode}
\cs_new_protected:Npn \prop_put_if_new:Nnn
- { \@@_put_if_new:NNnn \__kernel_tl_set:Nx }
+ { \@@_put_if_new:NNnn \__kernel_tl_set:Ne }
\cs_new_protected:Npn \prop_gput_if_new:Nnn
- { \@@_put_if_new:NNnn \__kernel_tl_gset:Nx }
+ { \@@_put_if_new:NNnn \__kernel_tl_gset:Ne }
\cs_new_protected:Npn \@@_put_if_new:NNnn #1#2#3#4
{
\tl_set:Nn \l_@@_internal_tl
@@ -1244,8 +1343,10 @@
{ }
{ #1 #2 { \exp_not:o {#2} \l_@@_internal_tl } }
}
-\cs_generate_variant:Nn \prop_put_if_new:Nnn { c }
-\cs_generate_variant:Nn \prop_gput_if_new:Nnn { c }
+\cs_generate_variant:Nn \prop_put_if_new:Nnn
+ { NnV , NV , cnV , cV }
+\cs_generate_variant:Nn \prop_gput_if_new:Nnn
+ { NnV , NV , cnV , cV }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1278,8 +1379,8 @@
%
% \begin{macro}[pTF, tested = m3prop003]
% {
-% \prop_if_in:Nn, \prop_if_in:NV, \prop_if_in:No,
-% \prop_if_in:cn, \prop_if_in:cV, \prop_if_in:co
+% \prop_if_in:Nn, \prop_if_in:NV, \prop_if_in:Ne, \prop_if_in:No,
+% \prop_if_in:cn, \prop_if_in:cV, \prop_if_in:ce, \prop_if_in:co
% }
% \begin{macro}[EXP]{\@@_if_in:nnn}
% Testing expandably if a key is in a property list
@@ -1309,7 +1410,7 @@
{ \prop_map_break:n { \use_i:nn \prg_return_true: } }
}
\prg_generate_conditional_variant:Nnn \prop_if_in:Nn
- { NV , No , c , cV , co } { p , T , F , TF }
+ { NV , Ne , No , c , cV , ce , co } { p , T , F , TF }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1318,8 +1419,10 @@
%
% \begin{macro}[TF, tested = m3prop004]
% {
-% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NoN, \prop_get:NxN,
-% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:coN, \prop_get:cxN,
+% \prop_get:NnN, \prop_get:NVN, \prop_get:NvN, \prop_get:NeN,
+% \prop_get:NoN, \prop_get:NxN,
+% \prop_get:cnN, \prop_get:cVN, \prop_get:cvN, \prop_get:ceN,
+% \prop_get:coN, \prop_get:cxN,
% \prop_get:cnc
% }
% Getting the value corresponding to a key, keeping track of whether
@@ -1336,7 +1439,11 @@
{ \prg_return_false: }
}
\prg_generate_conditional_variant:Nnn \prop_get:NnN
- { NV , Nv , No , Nx , c , cV , cv , co , cx , cnc } { T , F , TF }
+ { NV , Nv , Ne , c , cV , cv , ce } { T , F , TF }
+\prg_generate_conditional_variant:Nnn \prop_get:NnN
+ { No , Nx , co , cx } { T , F , TF }
+\prg_generate_conditional_variant:Nnn \prop_get:NnN
+ { cnc } { T , F , TF }
% \end{macrocode}
% \end{macro}
%
@@ -1471,9 +1578,9 @@
% we use \cs{msg_show_item:nn} to format both the key and the value
% for each pair.
% \begin{macrocode}
-\cs_new_protected:Npn \prop_show:N { \@@_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \prop_show:N { \@@_show:NN \msg_show:nneeee }
\cs_generate_variant:Nn \prop_show:N { c }
-\cs_new_protected:Npn \prop_log:N { \@@_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \prop_log:N { \@@_show:NN \msg_log:nneeee }
\cs_generate_variant:Nn \prop_log:N { c }
\cs_new_protected:Npn \@@_show:NN #1#2
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
index e05b5369e11..1a1e1aaf1ff 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3quark.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -633,21 +633,21 @@
%
% \begin{macro}{\@@_new_test:NNNn, \@@_new_test:Nccn,
% \@@_new_test_aux:nnNNnnnn}
-% \begin{macro}{\@@_new_conditional:Nnnn, \@@_new_conditional:Nxxn}
+% \begin{macro}{\@@_new_conditional:Nnnn, \@@_new_conditional:Neen}
% \begin{macrocode}
\cs_new_protected:Npn \__kernel_quark_new_test:N #1
- { \@@_new_test_aux:Nx #1 { \@@_module_name:N #1 } }
+ { \@@_new_test_aux:Ne #1 { \@@_module_name:N #1 } }
\cs_new_protected:Npn \@@_new_test_aux:Nn #1 #2
{
\if_meaning:w \q_nil #2 \q_nil
- \msg_error:nnx { quark } { invalid-function }
+ \msg_error:nne { quark } { invalid-function }
{ \token_to_str:N #1 }
\else:
\@@_new_test:Nccn #1
{ q__#2_recursion_tail } { q__#2_recursion_stop } { __#2 }
\fi:
}
-\cs_generate_variant:Nn \@@_new_test_aux:Nn { Nx }
+\cs_generate_variant:Nn \@@_new_test_aux:Nn { Ne }
\cs_new_protected:Npn \@@_new_test:NNNn #1
{
\exp_last_unbraced:Nf \@@_new_test_aux:nnNNnnnn
@@ -657,18 +657,18 @@
\cs_generate_variant:Nn \@@_new_test:NNNn { Ncc }
\cs_new_protected:Npn \__kernel_quark_new_conditional:Nn #1
{
- \@@_new_conditional:Nxxn #1
+ \@@_new_conditional:Neen #1
{ \@@_quark_conditional_name:N #1 }
{ \@@_module_name:N #1 }
}
\cs_new_protected:Npn \@@_new_conditional:Nnnn #1#2#3#4
{
\if_meaning:w \q_nil #2 \q_nil
- \msg_error:nnx { quark } { invalid-function }
+ \msg_error:nne { quark } { invalid-function }
{ \token_to_str:N #1 }
\else:
\if_meaning:w \q_nil #3 \q_nil
- \msg_error:nnx { quark } { invalid-function }
+ \msg_error:nne { quark } { invalid-function }
{ \token_to_str:N #1 }
\else:
\exp_last_unbraced:Nf \@@_new_test_aux:nnNNnnnn
@@ -678,12 +678,12 @@
\fi:
\fi:
}
-\cs_generate_variant:Nn \@@_new_conditional:Nnnn { Nxx }
+\cs_generate_variant:Nn \@@_new_conditional:Nnnn { Nee }
\cs_new_protected:Npn \@@_new_test_aux:nnNNnnnn #1 #2 #3 #4 #5
{
\cs_if_exist_use:cTF { @@_new_#5_#2:Nnnn } { #4 }
{
- \msg_error:nnxx { quark } { invalid-function }
+ \msg_error:nnee { quark } { invalid-function }
{ \token_to_str:N #4 } {#2}
\use_none:nnn
}
@@ -951,7 +951,7 @@
{
\tl_if_in:NnTF \g_@@_marks_tl { #1 }
{
- \msg_error:nnx { scanmark } { already-defined }
+ \msg_error:nne { scanmark } { already-defined }
{ \token_to_str:N #1 }
}
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
index 3d342960ac9..87dfcec47b1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -1158,24 +1158,24 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_toks_put_left:Nx}
-% \begin{macro}{\@@_toks_put_right:Nx, \@@_toks_put_right:Nn}
+% \begin{macro}{\@@_toks_put_left:Ne}
+% \begin{macro}{\@@_toks_put_right:Ne, \@@_toks_put_right:Nn}
% During the building phase we wish to add \texttt{x}-expanded
% material to \tn{toks}, either to the left or to the right. The
% expansion is done \enquote{by hand} for optimization (these
% operations are used quite a lot). The \texttt{Nn} version of
-% \cs{@@_toks_put_right:Nx} is provided because it is more
+% \cs{@@_toks_put_right:Ne} is provided because it is more
% efficient than \texttt{x}-expanding with \cs{exp_not:n}.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_toks_put_left:Nx #1#2
+\cs_new_protected:Npn \@@_toks_put_left:Ne #1#2
{
- \cs_set_nopar:Npx \@@_tmp:w { #2 }
+ \cs_set_nopar:Npe \@@_tmp:w { #2 }
\tex_toks:D #1 \exp_after:wN \exp_after:wN \exp_after:wN
{ \exp_after:wN \@@_tmp:w \tex_the:D \tex_toks:D #1 }
}
-\cs_new_protected:Npn \@@_toks_put_right:Nx #1#2
+\cs_new_protected:Npn \@@_toks_put_right:Ne #1#2
{
- \cs_set_nopar:Npx \@@_tmp:w {#2}
+ \cs_set_nopar:Npe \@@_tmp:w {#2}
\tex_toks:D #1 \exp_after:wN
{ \tex_the:D \tex_toks:D \exp_after:wN #1 \@@_tmp:w }
}
@@ -1541,7 +1541,7 @@
{
\int_compare:nNnTF \l_@@_curr_catcode_int = 0
{
- \__kernel_tl_set:Nx \l_@@_internal_a_tl
+ \__kernel_tl_set:Ne \l_@@_internal_a_tl
{ \scan_stop: \@@_curr_cs_to_str: \scan_stop: }
\tl_if_in:noTF { \scan_stop: #1 \scan_stop: }
\l_@@_internal_a_tl
@@ -1568,7 +1568,7 @@
\@@_build_for_cs:n {#1}
\bool_set_eq:NN \l_@@_saved_success_bool
\g_@@_success_bool
- \exp_args:Nx \@@_match_cs:n { \@@_curr_cs_to_str: }
+ \exp_args:Ne \@@_match_cs:n { \@@_curr_cs_to_str: }
\if_meaning:w \c_true_bool \g_@@_success_bool
\group_insert_after:N \@@_break_true:w
\fi:
@@ -1729,9 +1729,9 @@
\cs_set:Npn \@@_escape_escaped:N ##1 { #2 }
\cs_set:Npn \@@_escape_raw:N ##1 { #3 }
\@@_standard_escapechar:
- \__kernel_tl_gset:Nx \g_@@_internal_tl
+ \__kernel_tl_gset:Ne \g_@@_internal_tl
{ \__kernel_str_to_other_fast:n {#4} }
- \tl_put_right:Nx \l_@@_internal_a_tl
+ \tl_put_right:Ne \l_@@_internal_a_tl
{
\exp_after:wN \@@_escape_loop:N \g_@@_internal_tl
\scan_stop: \prg_break_point:
@@ -1797,17 +1797,17 @@
\prg_break:
}
\cs_new:cpn { @@_escape_~:w } { }
-\cs_new:cpx { @@_escape_/a:w }
+\cs_new:cpe { @@_escape_/a:w }
{ \exp_not:N \@@_escape_raw:N \iow_char:N \^^G }
-\cs_new:cpx { @@_escape_/t:w }
+\cs_new:cpe { @@_escape_/t:w }
{ \exp_not:N \@@_escape_raw:N \iow_char:N \^^I }
-\cs_new:cpx { @@_escape_/n:w }
+\cs_new:cpe { @@_escape_/n:w }
{ \exp_not:N \@@_escape_raw:N \iow_char:N \^^J }
-\cs_new:cpx { @@_escape_/f:w }
+\cs_new:cpe { @@_escape_/f:w }
{ \exp_not:N \@@_escape_raw:N \iow_char:N \^^L }
-\cs_new:cpx { @@_escape_/r:w }
+\cs_new:cpe { @@_escape_/r:w }
{ \exp_not:N \@@_escape_raw:N \iow_char:N \^^M }
-\cs_new:cpx { @@_escape_/e:w }
+\cs_new:cpe { @@_escape_/e:w }
{ \exp_not:N \@@_escape_raw:N \iow_char:N \^^[ }
% \end{macrocode}
% \end{macro}
@@ -2421,7 +2421,7 @@
}
{ }
\if_int_compare:w \l_@@_group_level_int > \c_zero_int
- \msg_error:nnx { regex } { missing-rparen }
+ \msg_error:nne { regex } { missing-rparen }
{ \int_use:N \l_@@_group_level_int }
\prg_replicate:nn
{ \l_@@_group_level_int }
@@ -2440,7 +2440,7 @@
\fi:
\tl_build_put_right:Nn \l_@@_build_tl { \if_false: { \fi: } }
\tl_build_end:N \l_@@_build_tl
- \exp_args:NNNx
+ \exp_args:NNNe
\group_end:
\tl_set:Nn \l_@@_internal_regex { \l_@@_build_tl }
}
@@ -2550,7 +2550,7 @@
\tl_build_put_right:Nn \l_@@_build_tl
{ \@@_class:NnnnN \c_true_bool { \if_false: } \fi: }
}
- \tl_build_put_right:Nx \l_@@_build_tl
+ \tl_build_put_right:Ne \l_@@_build_tl
{
\if_int_compare:w \l_@@_catcodes_int <
\c_@@_all_catcodes_int
@@ -2567,19 +2567,19 @@
% \end{macro}
%
% \begin{macro}
-% {\@@_compile_abort_tokens:n, \@@_compile_abort_tokens:x}
+% {\@@_compile_abort_tokens:n, \@@_compile_abort_tokens:e}
% This function places the collected tokens back in the input stream,
% each as a raw character. Spaces are not preserved.
% \begin{macrocode}
\cs_new_protected:Npn \@@_compile_abort_tokens:n #1
{
- \use:x
+ \use:e
{
\exp_args:No \tl_map_function:nN { \tl_to_str:n {#1} }
\@@_compile_raw:N
}
}
-\cs_generate_variant:Nn \@@_compile_abort_tokens:n { x }
+\cs_generate_variant:Nn \@@_compile_abort_tokens:n { e }
% \end{macrocode}
% \end{macro}
%
@@ -2617,7 +2617,7 @@
% \end{macro}
%
% \begin{macro}{\@@_compile_quantifier_none:}
-% \begin{macro}{\@@_compile_quantifier_abort:xNN}
+% \begin{macro}{\@@_compile_quantifier_abort:eNN}
% Those functions are called whenever there is no quantifier, or a
% braced construction is invalid (equivalent to no quantifier, and
% whatever characters were grabbed are left raw).
@@ -2627,11 +2627,11 @@
\tl_build_put_right:Nn \l_@@_build_tl
{ \if_false: { \fi: } { 1 } { 0 } \c_false_bool }
}
-\cs_new_protected:Npn \@@_compile_quantifier_abort:xNN #1#2#3
+\cs_new_protected:Npn \@@_compile_quantifier_abort:eNN #1#2#3
{
\@@_compile_quantifier_none:
- \msg_warning:nnxx { regex } { invalid-quantifier } {#1} {#3}
- \@@_compile_abort_tokens:x {#1}
+ \msg_warning:nnee { regex } { invalid-quantifier } {#1} {#3}
+ \@@_compile_abort_tokens:e {#1}
#2 #3
}
% \end{macrocode}
@@ -2703,7 +2703,7 @@
{
\@@_get_digits:NTFw \l_@@_internal_a_int
{ \@@_compile_quantifier_braced_auxi:w }
- { \@@_compile_quantifier_abort:xNN { \c_left_brace_str } }
+ { \@@_compile_quantifier_abort:eNN { \c_left_brace_str } }
}
\cs_new_protected:Npn \@@_compile_quantifier_braced_auxi:w #1#2
{
@@ -2722,7 +2722,7 @@
}
}
{
- \@@_compile_quantifier_abort:xNN
+ \@@_compile_quantifier_abort:eNN
{ \c_left_brace_str \int_use:N \l_@@_internal_a_int }
#1 #2
}
@@ -2735,7 +2735,7 @@
{ \int_use:N \l_@@_internal_a_int } { -1 }
}
{
- \@@_compile_quantifier_abort:xNN
+ \@@_compile_quantifier_abort:eNN
{ \c_left_brace_str \int_use:N \l_@@_internal_a_int , }
#1 #2
}
@@ -2746,7 +2746,7 @@
{
\if_int_compare:w \l_@@_internal_a_int >
\l_@@_internal_b_int
- \msg_error:nnxx { regex } { backwards-quantifier }
+ \msg_error:nnee { regex } { backwards-quantifier }
{ \int_use:N \l_@@_internal_a_int }
{ \int_use:N \l_@@_internal_b_int }
\int_zero:N \l_@@_internal_b_int
@@ -2758,7 +2758,7 @@
{ \int_use:N \l_@@_internal_b_int }
}
{
- \@@_compile_quantifier_abort:xNN
+ \@@_compile_quantifier_abort:eNN
{
\c_left_brace_str
\int_use:N \l_@@_internal_a_int ,
@@ -2780,7 +2780,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_compile_raw_error:N #1
{
- \msg_error:nnx { regex } { bad-escape } {#1}
+ \msg_error:nne { regex } { bad-escape } {#1}
\@@_compile_raw:N #1
}
% \end{macrocode}
@@ -2839,9 +2839,9 @@
\@@_if_end_range:NNTF #2 #3
{
\if_int_compare:w `#1 > `#3 \exp_stop_f:
- \msg_error:nnxx { regex } { range-backwards } {#1} {#3}
+ \msg_error:nnee { regex } { range-backwards } {#1} {#3}
\else:
- \tl_build_put_right:Nx \l_@@_build_tl
+ \tl_build_put_right:Ne \l_@@_build_tl
{
\if_int_compare:w `#1 = `#3 \exp_stop_f:
\@@_item_equal:n
@@ -2853,9 +2853,9 @@
\fi:
}
{
- \msg_warning:nnxx { regex } { range-missing-end }
+ \msg_warning:nnee { regex } { range-missing-end }
{#1} { \c_backslash_str #3 }
- \tl_build_put_right:Nx \l_@@_build_tl
+ \tl_build_put_right:Ne \l_@@_build_tl
{
\@@_item_equal:n { \int_value:w `#1 \exp_stop_f: }
\@@_item_equal:n { \int_value:w `- \exp_stop_f: }
@@ -2873,7 +2873,7 @@
% \cs{@@_prop_.:}, which matches any character or control
% sequence, and refuses $-2$ (end-marker).
% \begin{macrocode}
-\cs_new_protected:cpx { @@_compile_.: }
+\cs_new_protected:cpe { @@_compile_.: }
{
\exp_not:N \@@_if_in_class:TF
{ \@@_compile_raw:N . }
@@ -2904,9 +2904,9 @@
% \begin{macrocode}
\cs_set_protected:Npn \@@_tmp:w #1#2
{
- \cs_new_protected:cpx { @@_compile_/#1: }
+ \cs_new_protected:cpe { @@_compile_/#1: }
{ \@@_compile_one:n \exp_not:c { @@_prop_#1: } }
- \cs_new_protected:cpx { @@_compile_/#2: }
+ \cs_new_protected:cpe { @@_compile_/#2: }
{
\@@_compile_one:n
{ \@@_item_reverse:n { \exp_not:c { @@_prop_#1: } } }
@@ -2967,8 +2967,8 @@
}
}
}
-\exp_args:Nx \@@_tmp:w { \iow_char:N \^ } { \@@_A_test: }
-\exp_args:Nx \@@_tmp:w { \iow_char:N \$ } { \@@_Z_test: }
+\exp_args:Ne \@@_tmp:w { \iow_char:N \^ } { \@@_A_test: }
+\exp_args:Ne \@@_tmp:w { \iow_char:N \$ } { \@@_Z_test: }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -3117,11 +3117,11 @@
{
: { \@@_compile_class_posix:NNNNw }
= {
- \msg_warning:nnx { regex }
+ \msg_warning:nne { regex }
{ posix-unsupported } { = }
}
. {
- \msg_warning:nnx { regex }
+ \msg_warning:nne { regex }
{ posix-unsupported } { . }
}
}
@@ -3133,12 +3133,12 @@
\@@_two_if_eq:NNNNTF #5 #6 \@@_compile_special:N ^
{
\bool_set_false:N \l_@@_internal_bool
- \__kernel_tl_set:Nx \l_@@_internal_a_tl { \if_false: } \fi:
+ \__kernel_tl_set:Ne \l_@@_internal_a_tl { \if_false: } \fi:
\@@_compile_class_posix_loop:w
}
{
\bool_set_true:N \l_@@_internal_bool
- \__kernel_tl_set:Nx \l_@@_internal_a_tl { \if_false: } \fi:
+ \__kernel_tl_set:Ne \l_@@_internal_a_tl { \if_false: } \fi:
\@@_compile_class_posix_loop:w #5 #6
}
}
@@ -3163,9 +3163,9 @@
}
}
{
- \msg_warning:nnx { regex } { posix-unknown }
+ \msg_warning:nne { regex } { posix-unknown }
{ \l_@@_internal_a_tl }
- \@@_compile_abort_tokens:x
+ \@@_compile_abort_tokens:e
{
[: \bool_if:NF \l_@@_internal_bool { ^ }
\l_@@_internal_a_tl :]
@@ -3173,9 +3173,9 @@
}
}
{
- \msg_error:nnxx { regex } { posix-missing-close }
+ \msg_error:nnee { regex } { posix-missing-close }
{ [: \l_@@_internal_a_tl } { #2 #4 }
- \@@_compile_abort_tokens:x { [: \l_@@_internal_a_tl }
+ \@@_compile_abort_tokens:e { [: \l_@@_internal_a_tl }
#1 #2 #3 #4
}
}
@@ -3213,7 +3213,7 @@
\if_int_compare:w \l_@@_group_level_int > \c_zero_int
\tl_build_put_right:Nn \l_@@_build_tl { \if_false: { \fi: } }
\tl_build_end:N \l_@@_build_tl
- \exp_args:NNNx
+ \exp_args:NNNe
\group_end:
\tl_build_put_right:Nn \l_@@_build_tl { \l_@@_build_tl }
\int_set_eq:NN \l_@@_catcodes_int \l_@@_default_catcodes_int
@@ -3252,7 +3252,7 @@
\cs_if_exist_use:cF
{ @@_compile_special_group_\token_to_str:N #4 :w }
{
- \msg_warning:nnx { regex } { special-group-unknown }
+ \msg_warning:nne { regex } { special-group-unknown }
{ (? #4 }
\@@_compile_group_begin:N \@@_group:nnnN
\@@_compile_raw:N ? #3 #4
@@ -3321,7 +3321,7 @@
{ \@@_item_caseless_range:nn }
}
{
- \msg_warning:nnx { regex } { unknown-option } { (?i #2 }
+ \msg_warning:nne { regex } { unknown-option } { (?i #2 }
\@@_compile_raw:N (
\@@_compile_raw:N ?
\@@_compile_raw:N i
@@ -3340,7 +3340,7 @@
{ \@@_item_caseful_range:nn }
}
{
- \msg_warning:nnx { regex } { unknown-option } { (?-#2#4 }
+ \msg_warning:nne { regex } { unknown-option } { (?-#2#4 }
\@@_compile_raw:N (
\@@_compile_raw:N ?
\@@_compile_raw:N -
@@ -3379,7 +3379,7 @@
}
{ \cs_if_exist_use:cF { @@_compile_c_#2:w } }
{
- \msg_error:nnx { regex } { c-missing-category } {#2}
+ \msg_error:nne { regex } { c-missing-category } {#2}
#1 #2
}
}
@@ -3453,7 +3453,7 @@
{ \@@_compile_c_lbrack_end: }
}
{
- \msg_error:nnx { regex } { c-missing-rbrack } {#2}
+ \msg_error:nne { regex } { c-missing-rbrack } {#2}
\@@_compile_c_lbrack_end:
#1 #2
}
@@ -3534,12 +3534,12 @@
{
\@@_compile_end:
\flag_clear:n { @@_cs }
- \__kernel_tl_set:Nx \l_@@_internal_a_tl
+ \__kernel_tl_set:Ne \l_@@_internal_a_tl
{
\exp_after:wN \@@_compile_cs_aux:Nn \l_@@_internal_regex
\q_@@_nil \q_@@_nil \q_@@_recursion_stop
}
- \exp_args:Nx \@@_compile_one:n
+ \exp_args:Ne \@@_compile_one:n
{
\flag_if_raised:nTF { @@_cs }
{ \@@_item_cs:n { \exp_not:o \l_@@_internal_regex } }
@@ -3622,7 +3622,7 @@
\@@_two_if_eq:NNNNTF #2 #3 \@@_compile_special:N \c_left_brace_str
{
\tl_set:Nn \l_@@_internal_b_tl {#1}
- \__kernel_tl_set:Nx \l_@@_internal_a_tl { \if_false: } \fi:
+ \__kernel_tl_set:Ne \l_@@_internal_a_tl { \if_false: } \fi:
\@@_compile_u_loop:NN
}
{
@@ -3665,7 +3665,7 @@
}
{
\if_false: { \fi: }
- \msg_error:nnx { regex } { u-missing-rbrace } {#2}
+ \msg_error:nne { regex } { u-missing-rbrace } {#2}
\l_@@_internal_b_tl
#1 #2
}
@@ -3691,7 +3691,7 @@
\group_begin:
\cs_set:Npn \@@_group:nnnN { \@@_group_no_capture:nnnN }
\cs_set:Npn \@@_group_resetting:nnnN { \@@_group_no_capture:nnnN }
- \exp_args:NNx
+ \exp_args:NNe
\group_end:
\@@_compile_ur:n { \use:c { \l_@@_internal_a_tl } }
}
@@ -3756,12 +3756,12 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_compile_u_in_cs:
{
- \__kernel_tl_gset:Nx \g_@@_internal_tl
+ \__kernel_tl_gset:Ne \g_@@_internal_tl
{
\exp_args:No \__kernel_str_to_other_fast:n
{ \l_@@_internal_a_tl }
}
- \tl_build_put_right:Nx \l_@@_build_tl
+ \tl_build_put_right:Ne \l_@@_build_tl
{
\tl_map_function:NN \g_@@_internal_tl
\@@_compile_u_in_cs_aux:n
@@ -3786,7 +3786,7 @@
{
\tl_analysis_map_inline:Nn \l_@@_internal_a_tl
{
- \tl_build_put_right:Nx \l_@@_build_tl
+ \tl_build_put_right:Ne \l_@@_build_tl
{
\@@_class:NnnnN \c_true_bool
{
@@ -4096,7 +4096,7 @@
\cs_new_protected:Npn \@@_show_one:n #1
{
\int_incr:N \l_@@_show_lines_int
- \tl_build_put_right:Nx \l_@@_build_tl
+ \tl_build_put_right:Ne \l_@@_build_tl
{
\exp_not:N \iow_newline:
\seq_map_function:NN \l_@@_show_prefix_seq \use:n
@@ -4113,7 +4113,7 @@
% second argument in a deeper level of nesting.
% \begin{macrocode}
\cs_new_protected:Npn \@@_show_push:n #1
- { \seq_put_right:Nx \l_@@_show_prefix_seq { #1 ~ } }
+ { \seq_put_right:Ne \l_@@_show_prefix_seq { #1 ~ } }
\cs_new_protected:Npn \@@_show_pop:
{ \seq_pop_right:NN \l_@@_show_prefix_seq \l_@@_internal_a_tl }
\cs_new_protected:Npn \@@_show_scope:nn #1#2
@@ -4186,7 +4186,7 @@
\bool_if:NTF #1 { Match } { Don't~match }
\@@_msg_repeated:nnN {#3} {#4} #5
}
- \tl_build_put_right:Nx \l_@@_build_tl
+ \tl_build_put_right:Ne \l_@@_build_tl
{ \exp_not:o \l_@@_internal_a_tl }
}
}
@@ -4367,7 +4367,7 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\@@_case_build:n, \@@_case_build:x, \@@_case_build_aux:Nn, \@@_case_build_loop:n}
+% \begin{macro}{\@@_case_build:n, \@@_case_build:e, \@@_case_build_aux:Nn, \@@_case_build_loop:n}
% See \cs{@@_build:n}, but with a loop.
% \begin{macrocode}
\cs_new_protected:Npn \@@_case_build:n #1
@@ -4375,7 +4375,7 @@
\@@_case_build_aux:Nn \c_true_bool {#1}
\int_gzero:N \g_@@_case_int
}
-\cs_generate_variant:Nn \@@_case_build:n { x }
+\cs_generate_variant:Nn \@@_case_build:n { e }
\cs_new_protected:Npn \@@_case_build_aux:Nn #1#2
{
\@@_standard_escapechar:
@@ -4386,7 +4386,7 @@
{ \@@_action_start_wildcard:N #1 }
%
\@@_build_new_state:
- \@@_toks_put_left:Nx \l_@@_left_state_int
+ \@@_toks_put_left:Ne \l_@@_left_state_int
{ \@@_action_submatch:nN { 0 } < }
\@@_push_lr_states:
\int_zero:N \l_@@_case_max_group_int
@@ -4410,7 +4410,7 @@
}
\seq_pop:NN \l_@@_right_state_seq \l_@@_internal_a_tl
\int_set:Nn \l_@@_right_state_int \l_@@_internal_a_tl
- \@@_toks_put_left:Nx \l_@@_right_state_int
+ \@@_toks_put_left:Ne \l_@@_right_state_int
{
\@@_action_submatch:nN { 0 } >
\int_gset:Nn \g_@@_case_int
@@ -4498,9 +4498,9 @@
% differing usage later on. Both functions could be optimized.
% \begin{macrocode}
\cs_new_protected:Npn \@@_build_transition_left:NNN #1#2#3
- { \@@_toks_put_left:Nx #2 { #1 { \int_eval:n { #3 - #2 } } } }
+ { \@@_toks_put_left:Ne #2 { #1 { \int_eval:n { #3 - #2 } } } }
\cs_new_protected:Npn \@@_build_transition_right:nNn #1#2#3
- { \@@_toks_put_right:Nx #2 { #1 { \int_eval:n { #3 - #2 } } } }
+ { \@@_toks_put_right:Ne #2 { #1 { \int_eval:n { #3 - #2 } } } }
% \end{macrocode}
% \end{macro}
%
@@ -4529,7 +4529,7 @@
\cs_new_protected:Npn \@@_build_transitions_lazyness:NNNNN #1#2#3#4#5
{
\@@_build_new_state:
- \@@_toks_put_right:Nx \l_@@_left_state_int
+ \@@_toks_put_right:Ne \l_@@_left_state_int
{
\if_meaning:w \c_true_bool #1
#2 { \int_eval:n { #3 - \l_@@_left_state_int } }
@@ -4557,7 +4557,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_class:NnnnN #1#2#3#4#5
{
- \cs_set:Npx \@@_tests_action_cost:n ##1
+ \cs_set:Npe \@@_tests_action_cost:n ##1
{
\exp_not:n { \exp_not:n {#2} }
\bool_if:NTF #1
@@ -4791,8 +4791,8 @@
\cs_new_protected:Npn \@@_group_submatches:nNN #1#2#3
{
\if_int_compare:w #1 > - \c_one_int
- \@@_toks_put_left:Nx #2 { \@@_action_submatch:nN {#1} < }
- \@@_toks_put_left:Nx #3 { \@@_action_submatch:nN {#1} > }
+ \@@_toks_put_left:Ne #2 { \@@_action_submatch:nN {#1} < }
+ \@@_toks_put_left:Ne #3 { \@@_action_submatch:nN {#1} > }
\fi:
}
% \end{macrocode}
@@ -4953,7 +4953,7 @@
\cs_new_protected:Npn \@@_assertion:Nn #1#2
{
\@@_build_new_state:
- \@@_toks_put_right:Nx \l_@@_left_state_int
+ \@@_toks_put_right:Ne \l_@@_left_state_int
{
\exp_not:n {#2}
\@@_break_point:TF
@@ -5005,7 +5005,7 @@
\cs_new_protected:Npn \@@_command_K:
{
\@@_build_new_state:
- \@@_toks_put_right:Nx \l_@@_left_state_int
+ \@@_toks_put_right:Ne \l_@@_left_state_int
{
\@@_action_submatch:nN { 0 } <
\bool_set_true:N \l_@@_fresh_thread_bool
@@ -5347,7 +5347,7 @@
\fi:
\int_set_eq:NN \l_@@_start_pos_int \l_@@_success_pos_int
\bool_set_false:N \l_@@_match_success_bool
- \tl_set:Nx \l_@@_curr_submatches_tl
+ \tl_set:Ne \l_@@_curr_submatches_tl
{ \prg_replicate:nn { 2 * \l_@@_capturing_group_int } { 0 , } }
\int_set_eq:NN \l_@@_max_thread_int \l_@@_min_thread_int
\@@_store_state:n { \l_@@_min_state_int }
@@ -5423,10 +5423,10 @@
\tl_set:Nn \l_@@_curr_token_tl {#1}
\int_set:Nn \l_@@_curr_char_int {#2}
\int_set:Nn \l_@@_curr_catcode_int { "#3 }
- \tl_build_put_right:Nx \l_@@_matched_analysis_tl
+ \tl_build_put_right:Ne \l_@@_matched_analysis_tl
{ \exp_not:o \l_@@_curr_analysis_tl }
\tl_set:Nn \l_@@_curr_analysis_tl { { {#1} {#2} #3 } }
- \use:x
+ \use:e
{
\int_set_eq:NN \l_@@_max_thread_int \l_@@_min_thread_int
\int_step_function:nnN
@@ -5539,7 +5539,7 @@
{ \@@_action_free_aux:nn { < \l_@@_step_int } }
\cs_new_protected:Npn \@@_action_free_aux:nn #1#2
{
- \use:x
+ \use:e
{
\int_add:Nn \l_@@_curr_state_int {#2}
\exp_not:n
@@ -5569,7 +5569,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_action_cost:n #1
{
- \exp_args:Nx \@@_store_state:n
+ \exp_args:Ne \@@_store_state:n
{ \int_eval:n { \l_@@_curr_state_int + #1 } }
}
% \end{macrocode}
@@ -5627,7 +5627,7 @@
}
\cs_new_protected:Npn \@@_action_submatch_aux:w #1 ; #2#3
{
- \tl_set:Nx \l_@@_curr_submatches_tl
+ \tl_set:Ne \l_@@_curr_submatches_tl
{
\prg_replicate:nn
{ #2 \if_meaning:w > #3 + \l_@@_capturing_group_int \fi: }
@@ -5844,7 +5844,7 @@
%
% \subsubsection{Framework}
%
-% \begin{macro}{\@@_replacement:n, \@@_replacement:x}
+% \begin{macro}{\@@_replacement:n, \@@_replacement:e}
% \begin{macro}{\@@_replacement_apply:Nn, \@@_replacement_set:n}
% The replacement text is built incrementally. We keep track in
% \cs{l_@@_balance_int} of the balance of explicit begin- and
@@ -5882,25 +5882,25 @@
{#2}
\prg_do_nothing: \prg_do_nothing:
\if_int_compare:w \l_@@_replacement_csnames_int > \c_zero_int
- \msg_error:nnx { regex } { replacement-missing-rbrace }
+ \msg_error:nne { regex } { replacement-missing-rbrace }
{ \int_use:N \l_@@_replacement_csnames_int }
- \tl_build_put_right:Nx \l_@@_build_tl
+ \tl_build_put_right:Ne \l_@@_build_tl
{ \prg_replicate:nn \l_@@_replacement_csnames_int \cs_end: }
\fi:
\seq_if_empty:NF \l_@@_replacement_category_seq
{
- \msg_error:nnx { regex } { replacement-missing-rparen }
+ \msg_error:nne { regex } { replacement-missing-rparen }
{ \seq_count:N \l_@@_replacement_category_seq }
\seq_clear:N \l_@@_replacement_category_seq
}
- \tl_gput_right:Nx \g_@@_balance_tl
+ \tl_gput_right:Ne \g_@@_balance_tl
{ + \int_use:N \l_@@_balance_int }
\tl_build_end:N \l_@@_build_tl
\exp_args:NNo
\group_end:
#1 \l_@@_build_tl
}
-\cs_generate_variant:Nn \@@_replacement:n { x }
+\cs_generate_variant:Nn \@@_replacement:n { e }
\cs_new_protected:Npn \@@_replacement_set:n #1
{
\cs_set:Npn \@@_replacement_do_one_match:n ##1
@@ -5927,7 +5927,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_case_replacement:n, \@@_case_replacement:x}
+% \begin{macro}{\@@_case_replacement:n, \@@_case_replacement:e}
% \begin{macrocode}
\tl_new:N \g_@@_case_replacement_tl
\tl_new:N \g_@@_case_balance_tl
@@ -5947,7 +5947,7 @@
\exp_args:No \@@_replacement_set:n
{ \g_@@_case_replacement_tl \fi: }
}
-\cs_generate_variant:Nn \@@_case_replacement:n { x }
+\cs_generate_variant:Nn \@@_case_replacement:n { e }
\cs_new_protected:Npn \@@_case_replacement_aux:n #1
{
\tl_gput_right:Nn \g_@@_case_replacement_tl { \or: #1 }
@@ -6458,7 +6458,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_replacement_error:NNN #1#2#3
{
- \msg_error:nnx { regex } { replacement-#1 } {#3}
+ \msg_error:nne { regex } { replacement-#1 } {#3}
#2 #3
}
% \end{macrocode}
@@ -6502,7 +6502,7 @@
\cs_new_protected:Npn \regex_const:Nn #1#2
{
\@@_compile:n {#2}
- \tl_const:Nx #1 { \exp_not:o \l_@@_internal_regex }
+ \tl_const:Ne #1 { \exp_not:o \l_@@_internal_regex }
}
% \end{macrocode}
% \end{macro}
@@ -6516,8 +6516,8 @@
% Then show the variable with some appropriate text. The auxiliary
% \cs{@@_show:N} is defined in a different section.
% \begin{macrocode}
-\cs_new_protected:Npn \regex_show:n { \@@_show:Nn \msg_show:nnxxxx }
-\cs_new_protected:Npn \regex_log:n { \@@_show:Nn \msg_log:nnxxxx }
+\cs_new_protected:Npn \regex_show:n { \@@_show:Nn \msg_show:nneeee }
+\cs_new_protected:Npn \regex_log:n { \@@_show:Nn \msg_log:nneeee }
\cs_new_protected:Npn \@@_show:Nn #1#2
{
\@@_compile:n {#2}
@@ -6526,8 +6526,8 @@
{ \tl_to_str:n {#2} } { }
{ \l_@@_internal_a_tl } { }
}
-\cs_new_protected:Npn \regex_show:N { \@@_show:NN \msg_show:nnxxxx }
-\cs_new_protected:Npn \regex_log:N { \@@_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \regex_show:N { \@@_show:NN \msg_show:nneeee }
+\cs_new_protected:Npn \regex_log:N { \@@_show:NN \msg_log:nneeee }
\cs_new_protected:Npn \@@_show:NN #1#2
{
\__kernel_chk_tl_type:NnnT #2 { regex }
@@ -6663,15 +6663,15 @@
{
\int_if_odd:nTF { \tl_count:n {#1} }
{
- \msg_error:nnxxxx { regex } { case-odd }
+ \msg_error:nneeee { regex } { case-odd }
{ \token_to_str:N \regex_replace_case_once:nN(TF) } { code }
{ \tl_count:n {#1} } { \tl_to_str:n {#1} }
\use_ii:nn
}
{
\@@_replace_once_aux:nnN
- { \@@_case_build:x { \@@_tl_odd_items:n {#1} } }
- { \@@_replacement:x { \tl_item:nn {#1} { 2 * \g_@@_case_int } } }
+ { \@@_case_build:e { \@@_tl_odd_items:n {#1} } }
+ { \@@_replacement:e { \tl_item:nn {#1} { 2 * \g_@@_case_int } } }
#2
\bool_if:NTF \g_@@_success_bool
}
@@ -6695,15 +6695,15 @@
{
\int_if_odd:nTF { \tl_count:n {#1} }
{
- \msg_error:nnxxxx { regex } { case-odd }
+ \msg_error:nneeee { regex } { case-odd }
{ \token_to_str:N \regex_replace_case_all:nN(TF) } { code }
{ \tl_count:n {#1} } { \tl_to_str:n {#1} }
\use_ii:nn
}
{
\@@_replace_all_aux:nnN
- { \@@_case_build:x { \@@_tl_odd_items:n {#1} } }
- { \@@_case_replacement:x { \@@_tl_even_items:n {#1} } }
+ { \@@_case_build:e { \@@_tl_odd_items:n {#1} } }
+ { \@@_case_replacement:e { \@@_tl_even_items:n {#1} } }
#2
\bool_if:NTF \g_@@_success_bool
}
@@ -6857,14 +6857,14 @@
{
\int_if_odd:nTF { \tl_count:n {#1} }
{
- \msg_error:nnxxxx { regex } { case-odd }
+ \msg_error:nneeee { regex } { case-odd }
{ \token_to_str:N \regex_match_case:nn(TF) } { code }
{ \tl_count:n {#1} } { \tl_to_str:n {#1} }
\use_ii:nn
}
{
\@@_if_match:nn
- { \@@_case_build:x { \@@_tl_odd_items:n {#1} } }
+ { \@@_case_build:e { \@@_tl_odd_items:n {#1} } }
{#2}
\bool_if:NTF \g_@@_success_bool
}
@@ -7001,7 +7001,7 @@
\flag_clear:n { @@_begin }
\flag_clear:n { @@_end }
\cs_set_eq:NN \@@_tmp:w \scan_stop:
- \__kernel_tl_gset:Nx \g_@@_internal_tl
+ \__kernel_tl_gset:Ne \g_@@_internal_tl
{
\int_step_function:nnN { \l_@@_min_submatch_int }
{ \l_@@_submatch_int - 1 } \@@_extract_seq_aux:n
@@ -7012,12 +7012,12 @@
\int_set:Nn \l_@@_added_end_int
{ \flag_height:n { @@_end } }
\tex_afterassignment:D \@@_extract_check:w
- \__kernel_tl_gset:Nx \g_@@_internal_tl
+ \__kernel_tl_gset:Ne \g_@@_internal_tl
{ \g_@@_internal_tl \if_false: { \fi: } }
\int_compare:nNnT
{ \l_@@_added_begin_int + \l_@@_added_end_int } > 0
{
- \msg_error:nnxxx { regex } { result-unbalanced }
+ \msg_error:nneee { regex } { result-unbalanced }
{ splitting~or~extracting~submatches }
{ \int_use:N \l_@@_added_begin_int }
{ \int_use:N \l_@@_added_end_int }
@@ -7087,17 +7087,17 @@
% In \cs{@@_group_end_extract_seq:N} we had to expand
% \cs{g_@@_internal_tl} to turn \cs{if_false:} constructions into
% actual begin-group and end-group tokens. This is done with a
-% \cs{__kernel_tl_gset:Nx} assignment, and \cs{@@_extract_check:w} is
+% \cs{__kernel_tl_gset:Ne} assignment, and \cs{@@_extract_check:w} is
% run immediately after this assignment ends, thanks to the
% \tn{afterassignment} primitive. If all of the items were properly
% balanced (enough begin-group tokens before end-group tokens, so |}{|
% is not) then \cs{@@_extract_check:w} is called just before the
-% closing brace of the \cs{__kernel_tl_gset:Nx} (thanks to our sneaky
+% closing brace of the \cs{__kernel_tl_gset:Ne} (thanks to our sneaky
% \cs{if_false:} |{| \cs{fi:} |}| construction), and finds that there
% is nothing left to expand. If any of the items is unbalanced, the
% assignment gets ended early by an extra end-group token, and our
% check finds more tokens needing to be expanded in a new
-% \cs{__kernel_tl_gset:Nx} assignment. We need to add a begin-group
+% \cs{__kernel_tl_gset:Ne} assignment. We need to add a begin-group
% and an end-group tokens to the unbalanced item, namely to the last
% item found so far, which we reach through a loop.
% \begin{macrocode}
@@ -7113,7 +7113,7 @@
\int_incr:N \l_@@_added_begin_int
\int_incr:N \l_@@_added_end_int
\tex_afterassignment:D \@@_extract_check:w
- \__kernel_tl_gset:Nx \g_@@_internal_tl
+ \__kernel_tl_gset:Ne \g_@@_internal_tl
{
\exp_after:wN \@@_extract_check_loop:w
\g_@@_internal_tl
@@ -7234,7 +7234,7 @@
\@@_replacement_balance_one_match:n
{ \l_@@_zeroth_submatch_int }
}
- \__kernel_tl_set:Nx \l_@@_internal_a_tl
+ \__kernel_tl_set:Ne \l_@@_internal_a_tl
{
\@@_replacement_do_one_match:n
{ \l_@@_zeroth_submatch_int }
@@ -7283,7 +7283,7 @@
{ \l_@@_submatch_int - 1 }
\@@_replacement_balance_one_match:n
}
- \__kernel_tl_set:Nx \l_@@_internal_a_tl
+ \__kernel_tl_set:Ne \l_@@_internal_a_tl
{
\int_step_function:nnnN
{ \l_@@_min_submatch_int }
@@ -7327,7 +7327,7 @@
\@@_group_end_replace_try:
\int_compare:nNnT { \l_@@_added_begin_int + \l_@@_added_end_int } > 0
{
- \msg_error:nnxxx { regex } { result-unbalanced }
+ \msg_error:nneee { regex } { result-unbalanced }
{ replacing } { \int_use:N \l_@@_added_begin_int }
{ \int_use:N \l_@@_added_end_int }
}
@@ -7337,7 +7337,7 @@
\cs_new_protected:Npn \@@_group_end_replace_try:
{
\tex_afterassignment:D \@@_group_end_replace_check:w
- \__kernel_tl_gset:Nx \g_@@_internal_tl
+ \__kernel_tl_gset:Ne \g_@@_internal_tl
{
\prg_replicate:nn { \l_@@_added_begin_int } { { \if_false: } \fi: }
\l_@@_internal_a_tl
@@ -7592,11 +7592,11 @@
% \cs{@@_replacement:n}, which as usual defines
% \cs{@@_replacement_do_one_match:n} to insert the tokens from the
% start of the match attempt to the beginning of the match, followed
-% by the replacement text. The \cs{use:x} expands for instance the
+% by the replacement text. The \cs{use:e} expands for instance the
% trailing \cs{@@_query_range:nn} down to a sequence of
% \cs{@@_reinsert_item:n} \Arg{tokens} where \meta{tokens}
% \texttt{o}-expand to a single token that we want to insert. After
-% \texttt{x}-expansion, \cs{use:x} does \cs{use:n}, so we have
+% \texttt{e}-expansion, \cs{use:e} does \cs{use:n}, so we have
% \cs{exp_after:wN} \cs{l_@@_peek_true_tl} \cs{exp:w} \ldots{}
% \cs{exp_end:}. This is set up such as to obtain
% \cs{l_@@_peek_true_tl} followed by the replaced tokens (possibly
@@ -7615,7 +7615,7 @@
\cs_set_eq:NN \@@_replacement_exp_not:N \@@_peek_replacement_token:n
\cs_set_eq:NN \@@_replacement_exp_not:V \@@_peek_replacement_var:N
\exp_args:No \@@_replacement:n { \l_@@_replacement_tl }
- \use:x
+ \use:e
{
\exp_not:n { \exp_after:wN \l_@@_peek_true_tl \exp:w }
\@@_replacement_do_one_match:n
@@ -7736,7 +7736,7 @@
%
% Messages for the preparsing phase.
% \begin{macrocode}
-\use:x
+\use:e
{
\msg_new:nnn { regex } { trailing-backslash }
{ Trailing~'\iow_char:N\\'~in~regex~or~replacement. }
@@ -8107,20 +8107,20 @@
% be merged.
%
% \begin{macro}
-% {\@@_trace_push:nnN, \@@_trace_pop:nnN, \@@_trace:nnx}
+% {\@@_trace_push:nnN, \@@_trace_pop:nnN, \@@_trace:nne}
% Here |#1| is the module name (\texttt{regex}) and |#2| is
% typically~1. If the module's current tracing level is less than
% |#2| show nothing, otherwise write |#3| to the terminal.
% \begin{macrocode}
\cs_new_protected:Npn \@@_trace_push:nnN #1#2#3
- { \@@_trace:nnx {#1} {#2} { entering~ \token_to_str:N #3 } }
+ { \@@_trace:nne {#1} {#2} { entering~ \token_to_str:N #3 } }
\cs_new_protected:Npn \@@_trace_pop:nnN #1#2#3
- { \@@_trace:nnx {#1} {#2} { leaving~ \token_to_str:N #3 } }
-\cs_new_protected:Npn \@@_trace:nnx #1#2#3
+ { \@@_trace:nne {#1} {#2} { leaving~ \token_to_str:N #3 } }
+\cs_new_protected:Npn \@@_trace:nne #1#2#3
{
\int_compare:nNnF
{ \int_use:c { g_@@_trace_#1_int } } < {#2}
- { \iow_term:x { Trace:~#3 } }
+ { \iow_term:e { Trace:~#3 } }
}
% \end{macrocode}
% \end{macro}
@@ -8143,7 +8143,7 @@
\l_@@_min_state_int
{ \l_@@_max_state_int - 1 }
{
- \@@_trace:nnx { regex } {#1}
+ \@@_trace:nne { regex } {#1}
{ \iow_char:N \\toks ##1 = { \@@_toks_use:w ##1 } }
}
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
index d523320f4e5..9572261d466 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -128,10 +128,10 @@
% {
% \seq_set_split:Nnn ,
% \seq_set_split:NVn , \seq_set_split:NnV , \seq_set_split:NVV ,
-% \seq_set_split:Nnx , \seq_set_split:Nxx ,
+% \seq_set_split:Nne , \seq_set_split:Nee ,
% \seq_gset_split:Nnn,
% \seq_gset_split:NVn , \seq_gset_split:NnV, \seq_gset_split:NVV,
-% \seq_gset_split:Nnx , \seq_gset_split:Nxx
+% \seq_gset_split:Nne , \seq_gset_split:Nee
% }
% \begin{syntax}
% \cs{seq_set_split:Nnn} \meta{seq~var} \Arg{delimiter} \Arg{token list}
@@ -196,14 +196,14 @@
% \section{Appending data to sequences}
%
% \begin{function}{
-% \seq_put_left:Nn, \seq_put_left:NV, \seq_put_left:Nv,
-% \seq_put_left:No, \seq_put_left:Nx,
-% \seq_put_left:cn, \seq_put_left:cV, \seq_put_left:cv,
-% \seq_put_left:co, \seq_put_left:cx,
-% \seq_gput_left:Nn, \seq_gput_left:NV, \seq_gput_left:Nv,
-% \seq_gput_left:No, \seq_gput_left:Nx,
-% \seq_gput_left:cn, \seq_gput_left:cV, \seq_gput_left:cv,
-% \seq_gput_left:co, \seq_gput_left:cx
+% \seq_put_left:Nn, \seq_put_left:NV, \seq_put_left:Nv, \seq_put_left:Ne,
+% \seq_put_left:No,
+% \seq_put_left:cn, \seq_put_left:cV, \seq_put_left:cv, \seq_put_left:ce,
+% \seq_put_left:co,
+% \seq_gput_left:Nn, \seq_gput_left:NV, \seq_gput_left:Nv, \seq_gput_left:Ne,
+% \seq_gput_left:No,
+% \seq_gput_left:cn, \seq_gput_left:cV, \seq_gput_left:cv, \seq_gput_left:ce,
+% \seq_gput_left:co
% }
% \begin{syntax}
% \cs{seq_put_left:Nn} \meta{seq~var} \Arg{item}
@@ -212,14 +212,14 @@
% \end{function}
%
% \begin{function}{
-% \seq_put_right:Nn, \seq_put_right:NV, \seq_put_right:Nv,
-% \seq_put_right:No, \seq_put_right:Nx,
-% \seq_put_right:cn, \seq_put_right:cV, \seq_put_right:cv,
-% \seq_put_right:co, \seq_put_right:cx,
-% \seq_gput_right:Nn, \seq_gput_right:NV, \seq_gput_right:Nv,
-% \seq_gput_right:No, \seq_gput_right:Nx,
-% \seq_gput_right:cn, \seq_gput_right:cV, \seq_gput_right:cv,
-% \seq_gput_right:co, \seq_gput_right:cx
+% \seq_put_right:Nn, \seq_put_right:NV, \seq_put_right:Nv, \seq_put_right:Ne,
+% \seq_put_right:No,
+% \seq_put_right:cn, \seq_put_right:cV, \seq_put_right:cv, \seq_put_right:ce,
+% \seq_put_right:co,
+% \seq_gput_right:Nn, \seq_gput_right:NV, \seq_gput_right:Nv, \seq_gput_right:Ne,
+% \seq_gput_right:No,
+% \seq_gput_right:cn, \seq_gput_right:cV, \seq_gput_right:cv, \seq_gput_right:ce,
+% \seq_gput_right:co,
% }
% \begin{syntax}
% \cs{seq_put_right:Nn} \meta{seq~var} \Arg{item}
@@ -471,10 +471,10 @@
%
% \begin{function}
% {
-% \seq_remove_all:Nn, \seq_remove_all:NV, \seq_remove_all:Nx,
-% \seq_remove_all:cn, \seq_remove_all:cV, \seq_remove_all:cx,
-% \seq_gremove_all:Nn, \seq_gremove_all:NV, \seq_gremove_all:Nx,
-% \seq_gremove_all:cn, \seq_gremove_all:cV, \seq_gremove_all:cx
+% \seq_remove_all:Nn, \seq_remove_all:NV, \seq_remove_all:Ne,
+% \seq_remove_all:cn, \seq_remove_all:cV, \seq_remove_all:ce,
+% \seq_gremove_all:Nn, \seq_gremove_all:NV, \seq_gremove_all:Ne,
+% \seq_gremove_all:cn, \seq_gremove_all:cV, \seq_gremove_all:ce
% }
% \begin{syntax}
% \cs{seq_remove_all:Nn} \meta{seq~var} \Arg{item}
@@ -554,8 +554,10 @@
%
% \begin{function}[TF]
% {
-% \seq_if_in:Nn, \seq_if_in:NV, \seq_if_in:Nv, \seq_if_in:No, \seq_if_in:Nx,
-% \seq_if_in:cn, \seq_if_in:cV, \seq_if_in:cv, \seq_if_in:co, \seq_if_in:cx
+% \seq_if_in:Nn, \seq_if_in:NV, \seq_if_in:Nv, \seq_if_in:Ne,
+% \seq_if_in:No,
+% \seq_if_in:cn, \seq_if_in:cV, \seq_if_in:cv, \seq_if_in:ce,
+% \seq_if_in:co,
% }
% \begin{syntax}
% \cs{seq_if_in:NnTF} \meta{seq~var} \Arg{item} \Arg{true code} \Arg{false code}
@@ -905,12 +907,14 @@
%
% \begin{function}
% {
-% \seq_push:Nn, \seq_push:NV, \seq_push:Nv, \seq_push:No, \seq_push:Nx,
-% \seq_push:cn, \seq_push:cV, \seq_push:cv, \seq_push:co, \seq_push:cx,
-% \seq_gpush:Nn, \seq_gpush:NV, \seq_gpush:Nv,
-% \seq_gpush:No, \seq_gpush:Nx,
-% \seq_gpush:cn, \seq_gpush:cV, \seq_gpush:cv,
-% \seq_gpush:co, \seq_gpush:cx
+% \seq_push:Nn, \seq_push:NV, \seq_push:Nv, \seq_push:Ne,
+% \seq_push:No,
+% \seq_push:cn, \seq_push:cV, \seq_push:cv, \seq_push:ce,
+% \seq_push:co,
+% \seq_gpush:Nn, \seq_gpush:NV, \seq_gpush:Nv, \seq_gpush:Ne,
+% \seq_gpush:No,
+% \seq_gpush:cn, \seq_gpush:cV, \seq_gpush:cv, \seq_gpush:ce,
+% \seq_gpush:co
% }
% \begin{syntax}
% \cs{seq_push:Nn} \meta{seq~var} \Arg{item}
@@ -1083,7 +1087,7 @@
% raised. The definition should always be set globally.
% \end{function}
%
-% \begin{function}{\@@_push_item_def:n, \@@_push_item_def:x}
+% \begin{function}{\@@_push_item_def:n, \@@_push_item_def:e}
% \begin{syntax}
% \cs{@@_push_item_def:n} \Arg{code}
% \end{syntax}
@@ -1234,22 +1238,22 @@
% \begin{macrocode}
\cs_new_protected:Npn \seq_set_from_clist:NN #1#2
{
- \__kernel_tl_set:Nx #1
+ \__kernel_tl_set:Ne #1
{ \s_@@ \clist_map_function:NN #2 \@@_wrap_item:n }
}
\cs_new_protected:Npn \seq_set_from_clist:Nn #1#2
{
- \__kernel_tl_set:Nx #1
+ \__kernel_tl_set:Ne #1
{ \s_@@ \clist_map_function:nN {#2} \@@_wrap_item:n }
}
\cs_new_protected:Npn \seq_gset_from_clist:NN #1#2
{
- \__kernel_tl_gset:Nx #1
+ \__kernel_tl_gset:Ne #1
{ \s_@@ \clist_map_function:NN #2 \@@_wrap_item:n }
}
\cs_new_protected:Npn \seq_gset_from_clist:Nn #1#2
{
- \__kernel_tl_gset:Nx #1
+ \__kernel_tl_gset:Ne #1
{ \s_@@ \clist_map_function:nN {#2} \@@_wrap_item:n }
}
\cs_generate_variant:Nn \seq_set_from_clist:NN { Nc }
@@ -1267,7 +1271,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \seq_const_from_clist:Nn #1#2
{
- \tl_const:Nx #1
+ \tl_const:Ne #1
{ \s_@@ \clist_map_function:nN {#2} \@@_wrap_item:n }
}
\cs_generate_variant:Nn \seq_const_from_clist:Nn { c }
@@ -1278,9 +1282,11 @@
% {
% \seq_set_split:Nnn ,
% \seq_set_split:NVn , \seq_set_split:NnV , \seq_set_split:NVV ,
+% \seq_set_split:Nne , \seq_set_split:Nee ,
% \seq_set_split:Nnx , \seq_set_split:Nxx ,
% \seq_gset_split:Nnn,
-% \seq_gset_split:NVn , \seq_gset_split:NnV, \seq_gset_split:NVV,
+% \seq_gset_split:NVn, \seq_gset_split:NnV, \seq_gset_split:NVV,
+% \seq_gset_split:Nne, \seq_gset_split:Nee,
% \seq_gset_split:Nnx, \seq_gset_split:Nxx
% }
% \begin{macro}
@@ -1316,13 +1322,13 @@
% braces which are outermost after space trimming.
% \begin{macrocode}
\cs_new_protected:Npn \seq_set_split:Nnn
- { \@@_set_split:NNNnn \__kernel_tl_set:Nx \tl_trim_spaces:n }
+ { \@@_set_split:NNNnn \__kernel_tl_set:Ne \tl_trim_spaces:n }
\cs_new_protected:Npn \seq_gset_split:Nnn
- { \@@_set_split:NNNnn \__kernel_tl_gset:Nx \tl_trim_spaces:n }
+ { \@@_set_split:NNNnn \__kernel_tl_gset:Ne \tl_trim_spaces:n }
\cs_new_protected:Npn \seq_set_split_keep_spaces:Nnn
- { \@@_set_split:NNNnn \__kernel_tl_set:Nx \exp_not:n }
+ { \@@_set_split:NNNnn \__kernel_tl_set:Ne \exp_not:n }
\cs_new_protected:Npn \seq_gset_split_keep_spaces:Nnn
- { \@@_set_split:NNNnn \__kernel_tl_gset:Nx \exp_not:n }
+ { \@@_set_split:NNNnn \__kernel_tl_gset:Ne \exp_not:n }
\cs_new_protected:Npn \@@_set_split:NNNnn #1#2#3#4#5
{
\tl_if_empty:nTF {#4}
@@ -1342,7 +1348,7 @@
\@@_set_split_end:
\@@_set_split:Nw #2 \prg_do_nothing:
}
- \__kernel_tl_set:Nx \l_@@_internal_a_tl { \l_@@_internal_a_tl }
+ \__kernel_tl_set:Ne \l_@@_internal_a_tl { \l_@@_internal_a_tl }
}
#1 #3 { \s_@@ \l_@@_internal_a_tl }
}
@@ -1354,8 +1360,10 @@
}
\cs_new:Npn \@@_set_split:w #1 \@@_set_split_end:
{ \@@_wrap_item:n {#1} }
-\cs_generate_variant:Nn \seq_set_split:Nnn { NV , NnV , NVV , Nnx , Nxx }
-\cs_generate_variant:Nn \seq_gset_split:Nnn { NV , NnV , NVV , Nnx , Nxx }
+\cs_generate_variant:Nn \seq_set_split:Nnn { NV , NnV , NVV , Nne , Nee }
+\cs_generate_variant:Nn \seq_set_split:Nnn { Nnx , Nxx }
+\cs_generate_variant:Nn \seq_gset_split:Nnn { NV , NnV , NVV , Nne , Nee }
+\cs_generate_variant:Nn \seq_gset_split:Nnn { Nnx , Nxx }
\cs_generate_variant:Nn \seq_set_split_keep_spaces:Nnn { NnV }
\cs_generate_variant:Nn \seq_gset_split_keep_spaces:Nnn { NnV }
% \end{macrocode}
@@ -1395,17 +1403,17 @@
% \subsection{Appending data to either end}
%
% \begin{macro}{
-% \seq_put_left:Nn, \seq_put_left:NV, \seq_put_left:Nv,
+% \seq_put_left:Nn, \seq_put_left:NV, \seq_put_left:Nv, \seq_put_left:Ne,
% \seq_put_left:No, \seq_put_left:Nx,
-% \seq_put_left:cn, \seq_put_left:cV, \seq_put_left:cv,
+% \seq_put_left:cn, \seq_put_left:cV, \seq_put_left:cv,\seq_put_left:ce,
% \seq_put_left:co, \seq_put_left:cx
% }
% \UnitTested
% \begin{macro}{
-% \seq_gput_left:Nn, \seq_gput_left:NV, \seq_gput_left:Nv,
+% \seq_gput_left:Nn, \seq_gput_left:NV, \seq_gput_left:Nv, \seq_gput_left:Ne,
% \seq_gput_left:No, \seq_gput_left:Nx,
-% \seq_gput_left:cn, \seq_gput_left:cV, \seq_gput_left:cv,
-% \seq_gput_left:co, \seq_gput_left:cx
+% \seq_gput_left:cn, \seq_gput_left:cV, \seq_gput_left:cv, \seq_gput_left:ce,
+% \seq_gput_left:co, \seq_put_left:cx
% }
% \begin{macro}[EXP]{\@@_put_left_aux:w}
% When adding to the left of a sequence, remove \cs{s_@@}. This is
@@ -1414,7 +1422,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \seq_put_left:Nn #1#2
{
- \__kernel_tl_set:Nx #1
+ \__kernel_tl_set:Ne #1
{
\exp_not:n { \s_@@ \@@_item:n {#2} }
\exp_not:f { \exp_after:wN \@@_put_left_aux:w #1 }
@@ -1422,17 +1430,17 @@
}
\cs_new_protected:Npn \seq_gput_left:Nn #1#2
{
- \__kernel_tl_gset:Nx #1
+ \__kernel_tl_gset:Ne #1
{
\exp_not:n { \s_@@ \@@_item:n {#2} }
\exp_not:f { \exp_after:wN \@@_put_left_aux:w #1 }
}
}
\cs_new:Npn \@@_put_left_aux:w \s_@@ { \exp_stop_f: }
-\cs_generate_variant:Nn \seq_put_left:Nn { NV , Nv , No , Nx }
-\cs_generate_variant:Nn \seq_put_left:Nn { c , cV , cv , co , cx }
-\cs_generate_variant:Nn \seq_gput_left:Nn { NV , Nv , No , Nx }
-\cs_generate_variant:Nn \seq_gput_left:Nn { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \seq_put_left:Nn { NV , Nv , Ne , No , Nx }
+\cs_generate_variant:Nn \seq_put_left:Nn { c , cV , cv , ce , co ,cx }
+\cs_generate_variant:Nn \seq_gput_left:Nn { NV , Nv , Ne , No , Nx }
+\cs_generate_variant:Nn \seq_gput_left:Nn { c , cV , cv , ce , co , cx }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1440,17 +1448,17 @@
%
% \begin{macro}
% {
-% \seq_put_right:Nn, \seq_put_right:NV, \seq_put_right:Nv,
+% \seq_put_right:Nn, \seq_put_right:NV, \seq_put_right:Nv, \seq_put_right:Ne,
% \seq_put_right:No, \seq_put_right:Nx,
-% \seq_put_right:cn, \seq_put_right:cV, \seq_put_right:cv,
+% \seq_put_right:cn, \seq_put_right:cV, \seq_put_right:cv, \seq_put_right:cx,
% \seq_put_right:co, \seq_put_right:cx
% }
% \UnitTested
% \begin{macro}
% {
-% \seq_gput_right:Nn, \seq_gput_right:NV, \seq_gput_right:Nv,
+% \seq_gput_right:Nn, \seq_gput_right:NV, \seq_gput_right:Nv, \seq_gput_right:Ne,
% \seq_gput_right:No, \seq_gput_right:Nx,
-% \seq_gput_right:cn, \seq_gput_right:cV, \seq_gput_right:cv,
+% \seq_gput_right:cn, \seq_gput_right:cV, \seq_gput_right:cv, \seq_gput_right:ce,
% \seq_gput_right:co, \seq_gput_right:cx
% }
% Since there is no trailing marker, adding an item to the right of a
@@ -1460,10 +1468,10 @@
{ \tl_put_right:Nn #1 { \@@_item:n {#2} } }
\cs_new_protected:Npn \seq_gput_right:Nn #1#2
{ \tl_gput_right:Nn #1 { \@@_item:n {#2} } }
-\cs_generate_variant:Nn \seq_gput_right:Nn { NV , Nv , No , Nx }
-\cs_generate_variant:Nn \seq_gput_right:Nn { c , cV , cv , co , cx }
-\cs_generate_variant:Nn \seq_put_right:Nn { NV , Nv , No , Nx }
-\cs_generate_variant:Nn \seq_put_right:Nn { c , cV , cv , co , cx }
+\cs_generate_variant:Nn \seq_put_right:Nn { NV , Nv , Ne , No , Nx }
+\cs_generate_variant:Nn \seq_put_right:Nn { c , cV , cv , ce , co , cx }
+\cs_generate_variant:Nn \seq_gput_right:Nn { NV , Nv , Ne , No , Nx }
+\cs_generate_variant:Nn \seq_gput_right:Nn { c , cV , cv , ce , co , cx }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1515,14 +1523,18 @@
%
% \begin{macro}
% {
-% \seq_remove_all:Nn, \seq_remove_all:NV, \seq_remove_all:Nx,
-% \seq_remove_all:cn, \seq_remove_all:cV, \seq_remove_all:cx
+% \seq_remove_all:Nn, \seq_remove_all:NV, \seq_remove_all:Ne,
+% \seq_remove_all:Nx,
+% \seq_remove_all:cn, \seq_remove_all:cV, \seq_remove_all:ce
+% \seq_remove_all:cx,
% }
% \UnitTested
% \begin{macro}
% {
-% \seq_gremove_all:Nn, \seq_gremove_all:NV, \seq_gremove_all:Nx,
-% \seq_gremove_all:cn, \seq_gremove_all:cV, \seq_gremove_all:cx
+% \seq_gremove_all:Nn, \seq_gremove_all:NV, \seq_gremove_all:Ne,
+% \seq_gremove_all:Nx,
+% \seq_gremove_all:cn, \seq_gremove_all:cV, \seq_gremove_all:ce,
+% \seq_gremove_all:Nx
% }
% \UnitTested
% \begin{macro}{\@@_remove_all_aux:NNn}
@@ -1541,9 +1553,9 @@
% \texttt{x}-type expansion (|#1 #2 {#2}|) ensures that nothing is lost.
% \begin{macrocode}
\cs_new_protected:Npn \seq_remove_all:Nn
- { \@@_remove_all_aux:NNn \__kernel_tl_set:Nx }
+ { \@@_remove_all_aux:NNn \__kernel_tl_set:Ne }
\cs_new_protected:Npn \seq_gremove_all:Nn
- { \@@_remove_all_aux:NNn \__kernel_tl_gset:Nx }
+ { \@@_remove_all_aux:NNn \__kernel_tl_gset:Ne }
\cs_new_protected:Npn \@@_remove_all_aux:NNn #1#2#3
{
\@@_push_item_def:n
@@ -1564,8 +1576,10 @@
#1 #2 {#2}
\@@_pop_item_def:
}
-\cs_generate_variant:Nn \seq_remove_all:Nn { NV , Nx , c , cV , cx }
-\cs_generate_variant:Nn \seq_gremove_all:Nn { NV , Nx , c , cV , cx }
+\cs_generate_variant:Nn \seq_remove_all:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \seq_remove_all:Nn { Nx , cx }
+\cs_generate_variant:Nn \seq_gremove_all:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \seq_gremove_all:Nn { Nx , cx }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1585,15 +1599,15 @@
% last argument \cs{use_ii:nn} vs \cs{use_i:nn}.
% \begin{macrocode}
\cs_new_protected:Npn \seq_set_item:Nnn #1#2#3
- { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_i:nn }
+ { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Ne \use_i:nn }
\cs_new_protected:Npn \seq_gset_item:Nnn #1#2#3
- { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_i:nn }
+ { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Ne \use_i:nn }
\cs_generate_variant:Nn \seq_set_item:Nnn { c }
\cs_generate_variant:Nn \seq_gset_item:Nnn { c }
\prg_new_protected_conditional:Npnn \seq_set_item:Nnn #1#2#3 { TF , T , F }
- { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Nx \use_ii:nn }
+ { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_set:Ne \use_ii:nn }
\prg_new_protected_conditional:Npnn \seq_gset_item:Nnn #1#2#3 { TF , T , F }
- { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Nx \use_ii:nn }
+ { \@@_set_item:NnnNN #1 {#2} {#3} \__kernel_tl_gset:Ne \use_ii:nn }
\prg_generate_conditional_variant:Nnn \seq_set_item:Nnn { c } { TF , T , F }
\prg_generate_conditional_variant:Nnn \seq_gset_item:Nnn { c } { TF , T , F }
% \end{macrocode}
@@ -1629,7 +1643,7 @@
{
#6
{
- \msg_error:nnxxx { seq } { item-too-large }
+ \msg_error:nneee { seq } { item-too-large }
{ \token_to_str:N #3 } {#2} {#1}
}
{ \prg_return_false: }
@@ -1715,9 +1729,9 @@
% from the stack, and the memory consumption becomes linear.
% \begin{macrocode}
\cs_new_protected:Npn \seq_reverse:N
- { \@@_reverse:NN \__kernel_tl_set:Nx }
+ { \@@_reverse:NN \__kernel_tl_set:Ne }
\cs_new_protected:Npn \seq_greverse:N
- { \@@_reverse:NN \__kernel_tl_gset:Nx }
+ { \@@_reverse:NN \__kernel_tl_gset:Ne }
\cs_new_protected:Npn \@@_reverse:NN #1 #2
{
\cs_set_eq:NN \@@_tmp:w \@@_item:n
@@ -1780,7 +1794,7 @@
{
\int_compare:nNnTF { \seq_count:N #2 } > \c_max_register_int
{
- \msg_error:nnx { seq } { shuffle-too-large }
+ \msg_error:nne { seq } { shuffle-too-large }
{ \token_to_str:N #2 }
}
{
@@ -1793,7 +1807,7 @@
\seq_gclear:N \g_@@_internal_seq
\int_step_inline:nn \l_@@_internal_a_int
{
- \seq_gput_right:Nx \g_@@_internal_seq
+ \seq_gput_right:Ne \g_@@_internal_seq
{ \tex_the:D \tex_toks:D ##1 }
}
\group_end:
@@ -1820,8 +1834,10 @@
%
% \begin{macro}[TF]
% {
-% \seq_if_in:Nn, \seq_if_in:NV, \seq_if_in:Nv, \seq_if_in:No, \seq_if_in:Nx,
-% \seq_if_in:cn, \seq_if_in:cV, \seq_if_in:cv, \seq_if_in:co, \seq_if_in:cx
+% \seq_if_in:Nn, \seq_if_in:NV, \seq_if_in:Nv, \seq_if_in:Ne,
+% \seq_if_in:No, \seq_if_in:Nx,
+% \seq_if_in:cn, \seq_if_in:cV, \seq_if_in:cv,\seq_if_in:ce,
+% \seq_if_in:co, \seq_if_in:cx
% }
% \UnitTested
% \begin{macro}{\@@_if_in:}
@@ -1854,7 +1870,7 @@
\cs_new:Npn \@@_if_in:
{ \prg_break:n { \group_end: \prg_return_true: } }
\prg_generate_conditional_variant:Nnn \seq_if_in:Nn
- { NV , Nv , No , Nx , c , cV , cv , co , cx } { T , F , TF }
+ { NV , Nv , Ne , No , Nx , c , cV , cv , ce , co , cx } { T , F , TF }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1896,7 +1912,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \seq_get_left:NN #1#2
{
- \__kernel_tl_set:Nx #2
+ \__kernel_tl_set:Ne #2
{
\exp_after:wN \@@_get_left:wnw
#1 \@@_item:n { \q_no_value } \s_@@_stop
@@ -1948,7 +1964,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \seq_get_right:NN #1#2
{
- \__kernel_tl_set:Nx #2
+ \__kernel_tl_set:Ne #2
{
\exp_after:wN \use_i_ii:nnn
\exp_after:wN \@@_get_right_loop:nw
@@ -1989,9 +2005,9 @@
% finally stops the loop.
% \begin{macrocode}
\cs_new_protected:Npn \seq_pop_right:NN
- { \@@_pop:NNNN \@@_pop_right:NNN \__kernel_tl_set:Nx }
+ { \@@_pop:NNNN \@@_pop_right:NNN \__kernel_tl_set:Ne }
\cs_new_protected:Npn \seq_gpop_right:NN
- { \@@_pop:NNNN \@@_pop_right:NNN \__kernel_tl_gset:Nx }
+ { \@@_pop:NNNN \@@_pop_right:NNN \__kernel_tl_gset:Ne }
\cs_new_protected:Npn \@@_pop_right:NNN #1#2#3
{
\cs_set_eq:NN \@@_tmp:w \@@_item:n
@@ -2003,7 +2019,7 @@
#2
{
\if_false: { \fi: }
- \__kernel_tl_set:Nx #3
+ \__kernel_tl_set:Ne #3
}
{ } \use_none:nn
\cs_set_eq:NN \@@_item:n \@@_tmp:w
@@ -2051,10 +2067,10 @@
{ \@@_pop_TF:NNNN \@@_pop_left:NNN \tl_gset:Nn #1 #2 }
\prg_new_protected_conditional:Npnn \seq_pop_right:NN #1#2
{ T , F , TF }
- { \@@_pop_TF:NNNN \@@_pop_right:NNN \__kernel_tl_set:Nx #1 #2 }
+ { \@@_pop_TF:NNNN \@@_pop_right:NNN \__kernel_tl_set:Ne #1 #2 }
\prg_new_protected_conditional:Npnn \seq_gpop_right:NN #1#2
{ T , F , TF }
- { \@@_pop_TF:NNNN \@@_pop_right:NNN \__kernel_tl_gset:Nx #1 #2 }
+ { \@@_pop_TF:NNNN \@@_pop_right:NNN \__kernel_tl_gset:Ne #1 #2 }
\prg_generate_conditional_variant:Nnn \seq_pop_left:NN { c }
{ T , F , TF }
\prg_generate_conditional_variant:Nnn \seq_gpop_left:NN { c }
@@ -2174,7 +2190,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_push_item_def:n, \@@_push_item_def:x}
+% \begin{macro}{\@@_push_item_def:n, \@@_push_item_def:e}
% \begin{macro}{\@@_push_item_def:}
% \begin{macro}{\@@_pop_item_def:}
% The definition of \cs{@@_item:n} needs to be saved and restored at
@@ -2186,10 +2202,10 @@
\@@_push_item_def:
\cs_gset:Npn \@@_item:n ##1
}
-\cs_new_protected:Npn \@@_push_item_def:x
+\cs_new_protected:Npn \@@_push_item_def:e
{
\@@_push_item_def:
- \cs_gset:Npx \@@_item:n ##1
+ \cs_gset:Npe \@@_item:n ##1
}
\cs_new_protected:Npn \@@_push_item_def:
{
@@ -2269,7 +2285,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \seq_map_variable:NNn #1#2#3
{
- \@@_push_item_def:x
+ \@@_push_item_def:e
{
\tl_set:Nn \exp_not:N #2 {##1}
\exp_not:n {#3}
@@ -2380,9 +2396,9 @@
% semantics.
% \begin{macrocode}
\cs_new_protected:Npn \seq_set_map_x:NNn
- { \@@_set_map_x:NNNn \__kernel_tl_set:Nx }
+ { \@@_set_map_x:NNNn \__kernel_tl_set:Ne }
\cs_new_protected:Npn \seq_gset_map_x:NNn
- { \@@_set_map_x:NNNn \__kernel_tl_gset:Nx }
+ { \@@_set_map_x:NNNn \__kernel_tl_gset:Ne }
\cs_new_protected:Npn \@@_set_map_x:NNNn #1#2#3#4
{
\@@_push_item_def:n { \exp_not:N \@@_item:n {#4} }
@@ -2399,9 +2415,9 @@
% <inline function>.
% \begin{macrocode}
\cs_new_protected:Npn \seq_set_map:NNn
- { \@@_set_map:NNNn \__kernel_tl_set:Nx }
+ { \@@_set_map:NNNn \__kernel_tl_set:Ne }
\cs_new_protected:Npn \seq_gset_map:NNn
- { \@@_set_map:NNNn \__kernel_tl_gset:Nx }
+ { \@@_set_map:NNNn \__kernel_tl_gset:Ne }
\cs_new_protected:Npn \@@_set_map:NNNn #1#2#3#4
{
\@@_push_item_def:n { \exp_not:n { \@@_item:n {#4} } }
@@ -2507,37 +2523,27 @@
% The same functions as for sequences, but with the correct naming.
%
% \begin{macro}{
-% \seq_push:Nn, \seq_push:NV, \seq_push:Nv, \seq_push:No, \seq_push:Nx,
-% \seq_push:cn, \seq_push:cV, \seq_push:cV, \seq_push:co, \seq_push:cx
+% \seq_push:Nn, \seq_push:NV, \seq_push:Nv, \seq_push:Ne,
+% \seq_push:No, \seq_push:Nx,
+% \seq_push:cn, \seq_push:cV, \seq_push:cv, \seq_push:ce,
+% \seq_push:co, \seq_push:cx
% }
% \UnitTested
% \begin{macro}{
-% \seq_gpush:Nn, \seq_gpush:NV, \seq_gpush:Nv, \seq_gpush:No, \seq_gpush:Nx,
-% \seq_gpush:cn, \seq_gpush:cV, \seq_gpush:cv, \seq_gpush:co, \seq_gpush:cx
+% \seq_gpush:Nn, \seq_gpush:NV, \seq_gpush:Nv, \seq_gpush:Ne,
+% \seq_gpush:No, \seq_gpush:Nx,
+% \seq_gpush:cn, \seq_gpush:cV, \seq_gpush:cv, \seq_gpush:ce,
+% \seq_gpush:co, \seq_gpush:cx
% }
% \UnitTested
% Pushing to a sequence is the same as adding on the left.
% \begin{macrocode}
-\cs_new_eq:NN \seq_push:Nn \seq_put_left:Nn
-\cs_new_eq:NN \seq_push:NV \seq_put_left:NV
-\cs_new_eq:NN \seq_push:Nv \seq_put_left:Nv
-\cs_new_eq:NN \seq_push:No \seq_put_left:No
-\cs_new_eq:NN \seq_push:Nx \seq_put_left:Nx
-\cs_new_eq:NN \seq_push:cn \seq_put_left:cn
-\cs_new_eq:NN \seq_push:cV \seq_put_left:cV
-\cs_new_eq:NN \seq_push:cv \seq_put_left:cv
-\cs_new_eq:NN \seq_push:co \seq_put_left:co
-\cs_new_eq:NN \seq_push:cx \seq_put_left:cx
+\cs_new_eq:NN \seq_push:Nn \seq_put_left:Nn
+\cs_generate_variant:Nn \seq_push:Nn { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \seq_push:Nn { No , Nx , co , cx }
\cs_new_eq:NN \seq_gpush:Nn \seq_gput_left:Nn
-\cs_new_eq:NN \seq_gpush:NV \seq_gput_left:NV
-\cs_new_eq:NN \seq_gpush:Nv \seq_gput_left:Nv
-\cs_new_eq:NN \seq_gpush:No \seq_gput_left:No
-\cs_new_eq:NN \seq_gpush:Nx \seq_gput_left:Nx
-\cs_new_eq:NN \seq_gpush:cn \seq_gput_left:cn
-\cs_new_eq:NN \seq_gpush:cV \seq_gput_left:cV
-\cs_new_eq:NN \seq_gpush:cv \seq_gput_left:cv
-\cs_new_eq:NN \seq_gpush:co \seq_gput_left:co
-\cs_new_eq:NN \seq_gpush:cx \seq_gput_left:cx
+\cs_generate_variant:Nn \seq_gpush:Nn { NV , Nv , Ne , c , cV , cv , ce }
+\cs_generate_variant:Nn \seq_gpush:Nn { No , Nx , co , cx }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2585,9 +2591,9 @@
% \UnitTested
% Apply the general \cs{__kernel_chk_tl_type:NnnT}.
% \begin{macrocode}
-\cs_new_protected:Npn \seq_show:N { \@@_show:NN \msg_show:nnxxxx }
+\cs_new_protected:Npn \seq_show:N { \@@_show:NN \msg_show:nneeee }
\cs_generate_variant:Nn \seq_show:N { c }
-\cs_new_protected:Npn \seq_log:N { \@@_show:NN \msg_log:nnxxxx }
+\cs_new_protected:Npn \seq_log:N { \@@_show:NN \msg_log:nneeee }
\cs_generate_variant:Nn \seq_log:N { c }
\cs_new_protected:Npn \@@_show:NN #1#2
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
index 7ce22afb7ea..0371b7ecad4 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -189,7 +189,7 @@
% between two integers, with all distances converted to scaled points.
% Thus
% \begin{verbatim}
-% \tl_set:Nx \l_my_tl { \dim_ratio:nn { 5 pt } { 10 pt } }
+% \tl_set:Ne \l_my_tl { \dim_ratio:nn { 5 pt } { 10 pt } }
% \tl_show:N \l_my_tl
% \end{verbatim}
% displays |327680/655360| on the terminal.
@@ -1654,7 +1654,7 @@
{
\int_gincr:N \g__kernel_prg_map_int
\exp_args:NNc \@@_step:NNnnnn
- \cs_gset_protected:Npx
+ \cs_gset_protected:Npe
{ @@_map_ \int_use:N \g__kernel_prg_map_int :w }
{#1}{#2}{#3}
{
@@ -1733,10 +1733,10 @@
\exp_after:wN
\@@_to_decimal:w \dim_use:N \@@_eval:w #1 \@@_eval_end:
}
-\use:x
+\use:e
{
\cs_new:Npn \exp_not:N \@@_to_decimal:w
- ##1 . ##2 \tl_to_str:n { pt }
+ #1 . #2 \tl_to_str:n { pt }
}
{
\int_compare:nNnTF {#2} > \c_zero_int
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
index b92eddbb350..6837e7fb0ea 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -124,8 +124,8 @@
% \begin{variable}{\g_@@_internal_seq, \g_@@_internal_tl}
% Sorting happens in a group; the result is stored in those global
% variables before being copied outside the group to the proper
-% places. For seq and tl this is more efficient than using \cs{use:x}
-% (or some \cs{exp_args:NNNx}) to smuggle the definition outside the
+% places. For seq and tl this is more efficient than using \cs{use:e}
+% (or some \cs{exp_args:NNNe}) to smuggle the definition outside the
% group since \TeX{} does not need to re-read tokens. For clist we
% don't gain anything since the result is converted from seq to clist
% anyways.
@@ -376,7 +376,7 @@
{
\group_begin:
\@@_main:NNNn \tl_map_inline:Nn \tl_map_break:n #2 {#3}
- \__kernel_tl_gset:Nx \g_@@_internal_tl
+ \__kernel_tl_gset:Ne \g_@@_internal_tl
{ \@@_tl_toks:w \l_@@_min_int ; }
\group_end:
#1 #2 \g_@@_internal_tl
@@ -432,7 +432,7 @@
\int_step_inline:nnn
\l_@@_min_int { \l_@@_top_int - 1 }
{
- \seq_gput_right:Nx \g_@@_internal_seq
+ \seq_gput_right:Ne \g_@@_internal_seq
{ \tex_the:D \tex_toks:D ##1 }
}
\group_end:
@@ -591,14 +591,14 @@
\cs_new_protected:Npn \@@_return_mark:w #1 \s_@@_mark { }
\cs_new_protected:Npn \@@_return_none_error:
{
- \msg_error:nnxx { sort } { return-none }
+ \msg_error:nnee { sort } { return-none }
{ \tex_the:D \tex_toks:D \l_@@_A_int }
{ \tex_the:D \tex_toks:D \l_@@_C_int }
\@@_return_same:w \@@_return_none_error:
}
\cs_new_protected:Npn \@@_return_two_error:
{
- \msg_error:nnxx { sort } { return-two }
+ \msg_error:nnee { sort } { return-two }
{ \tex_the:D \tex_toks:D \l_@@_A_int }
{ \tex_the:D \tex_toks:D \l_@@_C_int }
}
@@ -1026,7 +1026,7 @@
{ \cs_set_eq:NN \toksdef \@@_disabled_toksdef:n }
\cs_new_protected:Npn \@@_disabled_toksdef:n #1
{
- \msg_error:nnx { sort } { toksdef }
+ \msg_error:nne { sort } { toksdef }
{ \token_to_str:N #1 }
\@@_error:
\tex_toksdef:D #1
@@ -1050,7 +1050,7 @@
\cs_new_protected:Npn \@@_too_long_error:NNw #1#2 \fi:
{
\fi:
- \msg_error:nnxxx { sort } { too-large }
+ \msg_error:nneee { sort } { too-large }
{ \token_to_str:N #2 }
{ \int_eval:n { \l_@@_true_max_int - \l_@@_min_int } }
{ \int_eval:n { \l_@@_top_int - \l_@@_min_int } }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
index 6c0b2145e25..f4bfaf2c2c1 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3str-convert.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -468,12 +468,12 @@
% an empty result for the input $-1$.
% \begin{macrocode}
\group_begin:
- \__kernel_tl_set:Nx \l_@@_internal_tl { \tl_to_str:n { 0123456789ABCDEF } }
+ \__kernel_tl_set:Ne \l_@@_internal_tl { \tl_to_str:n { 0123456789ABCDEF } }
\tl_map_inline:Nn \l_@@_internal_tl
{
\tl_map_inline:Nn \l_@@_internal_tl
{
- \tl_const:cx { c_@@_byte_ \int_eval:n {"#1##1} _tl }
+ \tl_const:ce { c_@@_byte_ \int_eval:n {"#1##1} _tl }
{ \char_generate:nn { "#1##1 } { 12 } #1 ##1 }
}
}
@@ -554,7 +554,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_convert_gmap:N #1
{
- \__kernel_tl_gset:Nx \g_@@_result_tl
+ \__kernel_tl_gset:Ne \g_@@_result_tl
{
\exp_after:wN \@@_convert_gmap_loop:NN
\exp_after:wN #1
@@ -579,7 +579,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_convert_gmap_internal:N #1
{
- \__kernel_tl_gset:Nx \g_@@_result_tl
+ \__kernel_tl_gset:Ne \g_@@_result_tl
{
\exp_after:wN \@@_convert_gmap_internal_loop:Nww
\exp_after:wN #1
@@ -599,8 +599,8 @@
%
% \subsubsection{Error-reporting during conversion}
%
-% \begin{macro}{\@@_if_flag_error:nnx}
-% \begin{macro}{\@@_if_flag_no_error:nnx}
+% \begin{macro}{\@@_if_flag_error:nne}
+% \begin{macro}{\@@_if_flag_no_error:nne}
% When converting using the function \cs{str_set_convert:Nnnn}, errors
% should be reported to the user after each step in the
% conversion. Errors are signalled by raising some flag (typically
@@ -608,16 +608,16 @@
% give the user an error, otherwise remove the arguments. On the other
% hand, in the conditional functions \cs{str_set_convert:NnnnTF},
% errors should be suppressed. This is done by changing
-% \cs{@@_if_flag_error:nnx} into \cs{@@_if_flag_no_error:nnx}
+% \cs{@@_if_flag_error:nne} into \cs{@@_if_flag_no_error:nne}
% locally.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_if_flag_error:nnx #1
+\cs_new_protected:Npn \@@_if_flag_error:nne #1
{
\flag_if_raised:nTF {#1}
- { \msg_error:nnx { str } }
+ { \msg_error:nne { str } }
{ \use_none:nn }
}
-\cs_new_protected:Npn \@@_if_flag_no_error:nnx #1#2#3
+\cs_new_protected:Npn \@@_if_flag_no_error:nne #1#2#3
{ \flag_if_raised:nT {#1} { \bool_gset_true:N \g_@@_error_bool } }
% \end{macrocode}
% \end{macro}
@@ -675,7 +675,7 @@
% unescape and decode; encode and escape; exit the group and store the
% result in the user's variable. The various conversion functions all
% act on \cs{g_@@_result_tl}. Errors are silenced for the conditional
-% functions by redefining \cs{@@_if_flag_error:nnx} locally.
+% functions by redefining \cs{@@_if_flag_error:nne} locally.
% \begin{macrocode}
\cs_new_protected:Npn \str_set_convert:Nnnn
{ \@@_convert:nNNnnn { } \tl_set_eq:NN }
@@ -686,7 +686,7 @@
{
\bool_gset_false:N \g_@@_error_bool
\@@_convert:nNNnnn
- { \cs_set_eq:NN \@@_if_flag_error:nnx \@@_if_flag_no_error:nnx }
+ { \cs_set_eq:NN \@@_if_flag_error:nne \@@_if_flag_no_error:nne }
\tl_set_eq:NN #1 {#2} {#3} {#4}
\bool_if:NTF \g_@@_error_bool \prg_return_false: \prg_return_true:
}
@@ -695,7 +695,7 @@
{
\bool_gset_false:N \g_@@_error_bool
\@@_convert:nNNnnn
- { \cs_set_eq:NN \@@_if_flag_error:nnx \@@_if_flag_no_error:nnx }
+ { \cs_set_eq:NN \@@_if_flag_error:nne \@@_if_flag_no_error:nne }
\tl_gset_eq:NN #1 {#2} {#3} {#4}
\bool_if:NTF \g_@@_error_bool \prg_return_false: \prg_return_true:
}
@@ -703,7 +703,7 @@
{
\group_begin:
#1
- \__kernel_tl_gset:Nx \g_@@_result_tl { \__kernel_str_to_other_fast:n {#4} }
+ \__kernel_tl_gset:Ne \g_@@_result_tl { \__kernel_str_to_other_fast:n {#4} }
\exp_after:wN \@@_convert:wwwnn
\tl_to_str:n {#5} /// \s_@@_stop
{ decode } { unescape }
@@ -758,7 +758,7 @@
{
\if_meaning:w #1 #5
\tl_if_empty:nF {#3}
- { \msg_error:nnx { str } { native-escaping } {#3} }
+ { \msg_error:nne { str } { native-escaping } {#3} }
#1
\else:
#4 #2 #1
@@ -808,7 +808,7 @@
{
\cs_if_exist:cF { @@_convert_#2_#3: }
{
- \exp_args:Nx \@@_convert:nnnn
+ \exp_args:Ne \@@_convert:nnnn
{ \@@_convert_lowercase_alphanum:n {#3} }
{#1} {#2} {#3}
}
@@ -830,7 +830,7 @@
}
{
\tl_clear:N \l_@@_internal_tl
- \msg_error:nnxx { str } { unknown-#2 } {#4} {#1}
+ \msg_error:nnee { str } { unknown-#2 } {#4} {#1}
}
}
\cs_if_exist:cF { @@_convert_#3_#1: }
@@ -936,9 +936,9 @@
\cs_new_protected:Npn \@@_convert_unescape_:
{
\flag_clear:n { str_byte }
- \__kernel_tl_gset:Nx \g_@@_result_tl
+ \__kernel_tl_gset:Ne \g_@@_result_tl
{ \exp_args:No \@@_filter_bytes:n \g_@@_result_tl }
- \@@_if_flag_error:nnx { str_byte } { non-byte } { bytes }
+ \@@_if_flag_error:nne { str_byte } { non-byte } { bytes }
}
}
{ \cs_new_protected:Npn \@@_convert_unescape_: { } }
@@ -997,7 +997,7 @@
{
\flag_clear:n { str_error }
\@@_convert_gmap_internal:N \@@_encode_native_char:n
- \@@_if_flag_error:nnx { str_error }
+ \@@_if_flag_error:nne { str_error }
{ native-overflow } { }
}
\cs_new:Npn \@@_encode_native_char:n #1
@@ -1032,7 +1032,7 @@
\cs_new_protected:Npn \@@_convert_decode_clist:
{
\clist_gset:No \g_@@_result_tl \g_@@_result_tl
- \__kernel_tl_gset:Nx \g_@@_result_tl
+ \__kernel_tl_gset:Ne \g_@@_result_tl
{
\exp_args:No \clist_map_function:nN
\g_@@_result_tl \@@_decode_clist_char:n
@@ -1055,7 +1055,7 @@
\cs_new_protected:Npn \@@_convert_encode_clist:
{
\@@_convert_gmap_internal:N \@@_encode_clist_char:n
- \__kernel_tl_gset:Nx \g_@@_result_tl { \tl_tail:N \g_@@_result_tl }
+ \__kernel_tl_gset:Ne \g_@@_result_tl { \tl_tail:N \g_@@_result_tl }
}
\cs_new:Npn \@@_encode_clist_char:n #1 { , #1 }
% \end{macrocode}
@@ -1179,14 +1179,14 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_convert_decode_eight_bit:n #1
{
- \cs_set:Npx \@@_tmp:w
+ \cs_set:Npe \@@_tmp:w
{
\exp_not:N \@@_decode_eight_bit_aux:Nn
\exp_not:c { g_@@_decode_#1_intarray }
}
\flag_clear:n { str_error }
\@@_convert_gmap:N \@@_tmp:w
- \@@_if_flag_error:nnx { str_error } { decode-8-bit } {#1}
+ \@@_if_flag_error:nne { str_error } { decode-8-bit } {#1}
}
\cs_new:Npn \@@_decode_eight_bit_aux:Nn #1#2
{
@@ -1222,7 +1222,7 @@
\int_new:N \l_@@_modulo_int
\cs_new_protected:Npn \@@_convert_encode_eight_bit:n #1
{
- \cs_set:Npx \@@_tmp:w
+ \cs_set:Npe \@@_tmp:w
{
\exp_not:N \@@_encode_eight_bit_aux:NNn
\exp_not:c { g_@@_encode_#1_intarray }
@@ -1230,7 +1230,7 @@
}
\flag_clear:n { str_error }
\@@_convert_gmap_internal:N \@@_tmp:w
- \@@_if_flag_error:nnx { str_error } { encode-8-bit } {#1}
+ \@@_if_flag_error:nne { str_error } { encode-8-bit } {#1}
}
\cs_new:Npn \@@_encode_eight_bit_aux:NNn #1#2#3
{
@@ -1349,7 +1349,7 @@
\group_begin:
\flag_clear:n { str_error }
\int_set:Nn \tex_escapechar:D { 92 }
- \__kernel_tl_gset:Nx \g_@@_result_tl
+ \__kernel_tl_gset:Ne \g_@@_result_tl
{
\@@_output_byte:w "
\exp_last_unbraced:Nf \@@_unescape_hex_auxi:N
@@ -1358,7 +1358,7 @@
\prg_break_point:
\@@_output_end:
}
- \@@_if_flag_error:nnx { str_error } { unescape-hex } { }
+ \@@_if_flag_error:nne { str_error } { unescape-hex } { }
\group_end:
}
\cs_new:Npn \@@_unescape_hex_auxi:N #1
@@ -1428,14 +1428,14 @@
\flag_clear:n { str_byte }
\flag_clear:n { str_error }
\int_set:Nn \tex_escapechar:D { 92 }
- \__kernel_tl_gset:Nx \g_@@_result_tl
+ \__kernel_tl_gset:Ne \g_@@_result_tl
{
\exp_after:wN #3 \g_@@_result_tl
#1 ? { ? \prg_break: }
\prg_break_point:
}
- \@@_if_flag_error:nnx { str_byte } { non-byte } { #2 }
- \@@_if_flag_error:nnx { str_error } { unescape-#2 } { }
+ \@@_if_flag_error:nne { str_byte } { non-byte } { #2 }
+ \@@_if_flag_error:nne { str_error } { unescape-#2 } { }
\group_end:
}
\cs_new:Npn #3 ##1#1##2##3
@@ -1514,20 +1514,20 @@
\flag_clear:n { str_byte }
\flag_clear:n { str_error }
\int_set:Nn \tex_escapechar:D { 92 }
- \__kernel_tl_gset:Nx \g_@@_result_tl
+ \__kernel_tl_gset:Ne \g_@@_result_tl
{
\exp_after:wN \@@_unescape_string_newlines:wN
\g_@@_result_tl \prg_break: ^^M ?
\prg_break_point:
}
- \__kernel_tl_gset:Nx \g_@@_result_tl
+ \__kernel_tl_gset:Ne \g_@@_result_tl
{
\exp_after:wN \@@_unescape_string_loop:wNNN
\g_@@_result_tl #1 ?? { ? \prg_break: }
\prg_break_point:
}
- \@@_if_flag_error:nnx { str_byte } { non-byte } { string }
- \@@_if_flag_error:nnx { str_error } { unescape-string } { }
+ \@@_if_flag_error:nne { str_byte } { non-byte } { string }
+ \@@_if_flag_error:nne { str_error } { unescape-string } { }
\group_end:
}
}
@@ -1664,7 +1664,7 @@
% (and including) \texttt{del}, are converted to octal. One backslash
% is added before each parenthesis and backslash.
% \begin{macrocode}
-\str_const:Nx \c_@@_escape_string_str
+\str_const:Ne \c_@@_escape_string_str
{ \c_backslash_str ( ) }
\cs_new_protected:Npn \@@_convert_escape_string:
{ \@@_convert_gmap:N \@@_escape_string_char:N }
@@ -1973,13 +1973,13 @@
\flag_clear:n { str_extra }
\flag_clear:n { str_overlong }
\flag_clear:n { str_overflow }
- \__kernel_tl_gset:Nx \g_@@_result_tl
+ \__kernel_tl_gset:Ne \g_@@_result_tl
{
\exp_after:wN \@@_decode_utf_viii_start:N \g_@@_result_tl
{ \prg_break: \@@_decode_utf_viii_end: }
\prg_break_point:
}
- \@@_if_flag_error:nnx { str_error } { utf8-decode } { }
+ \@@_if_flag_error:nne { str_error } { utf8-decode } { }
}
\cs_new:Npn \@@_decode_utf_viii_start:N #1
{
@@ -2109,7 +2109,7 @@
\cs_new_protected:cpn { @@_convert_encode_utf16: }
{
\@@_encode_utf_xvi_aux:N \@@_output_byte_pair_be:n
- \tl_gput_left:Nx \g_@@_result_tl { ^^fe ^^ff }
+ \tl_gput_left:Ne \g_@@_result_tl { ^^fe ^^ff }
}
\cs_new_protected:cpn { @@_convert_encode_utf16be: }
{ \@@_encode_utf_xvi_aux:N \@@_output_byte_pair_be:n }
@@ -2120,7 +2120,7 @@
\flag_clear:n { str_error }
\cs_set_eq:NN \@@_tmp:w #1
\@@_convert_gmap_internal:N \@@_encode_utf_xvi_char:n
- \@@_if_flag_error:nnx { str_error } { utf16-encode } { }
+ \@@_if_flag_error:nne { str_error } { utf16-encode } { }
}
\cs_new:Npn \@@_encode_utf_xvi_char:n #1
{
@@ -2263,13 +2263,13 @@
\flag_clear:n { str_extra }
\flag_clear:n { str_end }
\cs_set:Npn \@@_tmp:w ##1 ##2 { ` ## #1 }
- \__kernel_tl_gset:Nx \g_@@_result_tl
+ \__kernel_tl_gset:Ne \g_@@_result_tl
{
\exp_after:wN \@@_decode_utf_xvi_pair:NN
#2 \q_@@_nil \q_@@_nil
\prg_break_point:
}
- \@@_if_flag_error:nnx { str_error } { utf16-decode } { }
+ \@@_if_flag_error:nne { str_error } { utf16-decode } { }
}
% \end{macrocode}
% \end{macro}
@@ -2422,7 +2422,7 @@
\cs_new_protected:cpn { @@_convert_encode_utf32: }
{
\@@_convert_gmap_internal:N \@@_encode_utf_xxxii_be:n
- \tl_gput_left:Nx \g_@@_result_tl { ^^00 ^^00 ^^fe ^^ff }
+ \tl_gput_left:Ne \g_@@_result_tl { ^^00 ^^00 ^^fe ^^ff }
}
\cs_new_protected:cpn { @@_convert_encode_utf32be: }
{ \@@_convert_gmap_internal:N \@@_encode_utf_xxxii_be:n }
@@ -2551,13 +2551,13 @@
\flag_clear:n { str_end }
\flag_clear:n { str_error }
\cs_set:Npn \@@_tmp:w ##1 ##2 { ` ## #1 }
- \__kernel_tl_gset:Nx \g_@@_result_tl
+ \__kernel_tl_gset:Ne \g_@@_result_tl
{
\exp_after:wN \@@_decode_utf_xxxii_loop:NNNN
#2 \s_@@_stop \s_@@_stop \s_@@_stop \s_@@_stop
\prg_break_point:
}
- \@@_if_flag_error:nnx { str_error } { utf32-decode } { }
+ \@@_if_flag_error:nne { str_error } { utf32-decode } { }
}
\cs_new:Npn \@@_decode_utf_xxxii_loop:NNNN #1#2#3#4
{
@@ -2639,7 +2639,7 @@
}
\cs_new:Npn \@@_convert_pdfname_bytes_aux:n #1
{ \@@_convert_pdfname_bytes_aux:nnnn #1 }
- \cs_new:Npx \@@_convert_pdfname_bytes_aux:nnnn #1#2#3#4
+ \cs_new:Npe \@@_convert_pdfname_bytes_aux:nnnn #1#2#3#4
{
\c_hash_str \exp_not:N \@@_output_hexadecimal:n {#1}
\c_hash_str \exp_not:N \@@_output_hexadecimal:n {#2}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
index c2498436cba..300a779bd1f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -108,8 +108,8 @@
%
% \begin{function}[added = 2015-09-18, updated = 2018-07-28]
% {
-% \str_const:Nn, \str_const:NV, \str_const:Nx,
-% \str_const:cn, \str_const:cV, \str_const:cx
+% \str_const:Nn, \str_const:NV, \str_const:Ne,
+% \str_const:cn, \str_const:cV, \str_const:ce
% }
% \begin{syntax}
% \cs{str_const:Nn} \meta{str~var} \Arg{token list}
@@ -178,10 +178,10 @@
%
% \begin{function}[added = 2015-09-18, updated = 2018-07-28]
% {
-% \str_set:Nn, \str_set:NV, \str_set:Nx,
-% \str_set:cn, \str_set:cV, \str_set:cx,
-% \str_gset:Nn, \str_gset:NV, \str_gset:Nx,
-% \str_gset:cn, \str_gset:cV, \str_gset:cx
+% \str_set:Nn, \str_set:NV, \str_set:Ne,
+% \str_set:cn, \str_set:cV, \str_set:ce,
+% \str_gset:Nn, \str_gset:NV, \str_gset:Ne,
+% \str_gset:cn, \str_gset:cV, \str_gset:ce
% }
% \begin{syntax}
% \cs{str_set:Nn} \meta{str var} \Arg{token list}
@@ -192,10 +192,10 @@
%
% \begin{function}[added = 2015-09-18, updated = 2018-07-28]
% {
-% \str_put_left:Nn, \str_put_left:NV, \str_put_left:Nx,
-% \str_put_left:cn, \str_put_left:cV, \str_put_left:cx,
-% \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Nx,
-% \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:cx
+% \str_put_left:Nn, \str_put_left:NV, \str_put_left:Ne,
+% \str_put_left:cn, \str_put_left:cV, \str_put_left:ce,
+% \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Ne,
+% \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:ce
% }
% \begin{syntax}
% \cs{str_put_left:Nn} \meta{str var} \Arg{token list}
@@ -207,10 +207,10 @@
%
% \begin{function}[added = 2015-09-18, updated = 2018-07-28]
% {
-% \str_put_right:Nn, \str_put_right:NV, \str_put_right:Nx,
-% \str_put_right:cn, \str_put_right:cV, \str_put_right:cx,
-% \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Nx,
-% \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:cx
+% \str_put_right:Nn, \str_put_right:NV, \str_put_right:Ne,
+% \str_put_right:cn, \str_put_right:cV, \str_put_right:Ne,
+% \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Ne,
+% \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:ce
% }
% \begin{syntax}
% \cs{str_put_right:Nn} \meta{str var} \Arg{token list}
@@ -595,18 +595,18 @@
% at positions $s$ for $s\le0$ or $s>l$.
% For instance,
% \begin{verbatim}
-% \iow_term:x { \str_range:nnn { abcdef } { 2 } { 5 } }
-% \iow_term:x { \str_range:nnn { abcdef } { -4 } { -1 } }
-% \iow_term:x { \str_range:nnn { abcdef } { -2 } { -1 } }
-% \iow_term:x { \str_range:nnn { abcdef } { 0 } { -1 } }
+% \iow_term:e { \str_range:nnn { abcdef } { 2 } { 5 } }
+% \iow_term:e { \str_range:nnn { abcdef } { -4 } { -1 } }
+% \iow_term:e { \str_range:nnn { abcdef } { -2 } { -1 } }
+% \iow_term:e { \str_range:nnn { abcdef } { 0 } { -1 } }
% \end{verbatim}
% prints \texttt{bcde}, \texttt{cdef}, \texttt{ef}, and an empty
% line to the terminal. The \meta{start index} must always be smaller than
% or equal to the \meta{end index}: if this is not the case then no output
% is generated. Thus
% \begin{verbatim}
-% \iow_term:x { \str_range:nnn { abcdef } { 5 } { 2 } }
-% \iow_term:x { \str_range:nnn { abcdef } { -1 } { -4 } }
+% \iow_term:e { \str_range:nnn { abcdef } { 5 } { 2 } }
+% \iow_term:e { \str_range:nnn { abcdef } { -1 } { -4 } }
% \end{verbatim}
% both yield empty strings.
% \end{function}
@@ -617,25 +617,25 @@
% The behavior of \cs{str_range_ignore_spaces:nnn} is similar, but spaces
% are removed before starting the job. The input
% \begin{verbatim}
-% \iow_term:x { \str_range:nnn { abcdefg } { 2 } { 5 } }
-% \iow_term:x { \str_range:nnn { abcdefg } { 2 } { -3 } }
-% \iow_term:x { \str_range:nnn { abcdefg } { -6 } { 5 } }
-% \iow_term:x { \str_range:nnn { abcdefg } { -6 } { -3 } }
-%
-% \iow_term:x { \str_range:nnn { abc~efg } { 2 } { 5 } }
-% \iow_term:x { \str_range:nnn { abc~efg } { 2 } { -3 } }
-% \iow_term:x { \str_range:nnn { abc~efg } { -6 } { 5 } }
-% \iow_term:x { \str_range:nnn { abc~efg } { -6 } { -3 } }
-%
-% \iow_term:x { \str_range_ignore_spaces:nnn { abcdefg } { 2 } { 5 } }
-% \iow_term:x { \str_range_ignore_spaces:nnn { abcdefg } { 2 } { -3 } }
-% \iow_term:x { \str_range_ignore_spaces:nnn { abcdefg } { -6 } { 5 } }
-% \iow_term:x { \str_range_ignore_spaces:nnn { abcdefg } { -6 } { -3 } }
-%
-% \iow_term:x { \str_range_ignore_spaces:nnn { abcd~efg } { 2 } { 5 } }
-% \iow_term:x { \str_range_ignore_spaces:nnn { abcd~efg } { 2 } { -3 } }
-% \iow_term:x { \str_range_ignore_spaces:nnn { abcd~efg } { -6 } { 5 } }
-% \iow_term:x { \str_range_ignore_spaces:nnn { abcd~efg } { -6 } { -3 } }
+% \iow_term:e { \str_range:nnn { abcdefg } { 2 } { 5 } }
+% \iow_term:e { \str_range:nnn { abcdefg } { 2 } { -3 } }
+% \iow_term:e { \str_range:nnn { abcdefg } { -6 } { 5 } }
+% \iow_term:e { \str_range:nnn { abcdefg } { -6 } { -3 } }
+%
+% \iow_term:e { \str_range:nnn { abc~efg } { 2 } { 5 } }
+% \iow_term:e { \str_range:nnn { abc~efg } { 2 } { -3 } }
+% \iow_term:e { \str_range:nnn { abc~efg } { -6 } { 5 } }
+% \iow_term:e { \str_range:nnn { abc~efg } { -6 } { -3 } }
+%
+% \iow_term:e { \str_range_ignore_spaces:nnn { abcdefg } { 2 } { 5 } }
+% \iow_term:e { \str_range_ignore_spaces:nnn { abcdefg } { 2 } { -3 } }
+% \iow_term:e { \str_range_ignore_spaces:nnn { abcdefg } { -6 } { 5 } }
+% \iow_term:e { \str_range_ignore_spaces:nnn { abcdefg } { -6 } { -3 } }
+%
+% \iow_term:e { \str_range_ignore_spaces:nnn { abcd~efg } { 2 } { 5 } }
+% \iow_term:e { \str_range_ignore_spaces:nnn { abcd~efg } { 2 } { -3 } }
+% \iow_term:e { \str_range_ignore_spaces:nnn { abcd~efg } { -6 } { 5 } }
+% \iow_term:e { \str_range_ignore_spaces:nnn { abcd~efg } { -6 } { -3 } }
% \end{verbatim}
% will print four instances of |bcde|, four instances of |bc e| and eight
% instances of |bcde|.
@@ -973,20 +973,20 @@
%
% \begin{macro}
% {
-% \str_set:Nn, \str_set:NV, \str_set:Nx,
-% \str_set:cn, \str_set:cV, \str_set:cx,
-% \str_gset:Nn, \str_gset:NV, \str_gset:Nx,
-% \str_gset:cn, \str_gset:cV, \str_gset:cx,
-% \str_const:Nn, \str_const:NV, \str_const:Nx,
-% \str_const:cn, \str_const:cV, \str_const:cx,
-% \str_put_left:Nn, \str_put_left:NV, \str_put_left:Nx,
-% \str_put_left:cn, \str_put_left:cV, \str_put_left:cx,
-% \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Nx,
-% \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:cx,
-% \str_put_right:Nn, \str_put_right:NV, \str_put_right:Nx,
-% \str_put_right:cn, \str_put_right:cV, \str_put_right:cx,
-% \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Nx,
-% \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:cx
+% \str_set:Nn, \str_set:NV, \str_set:Ne, \str_set:Nx,
+% \str_set:cn, \str_set:cV, \str_set:ce, \str_set:cx,
+% \str_gset:Nn, \str_gset:NV, \str_gset:Ne, \str_gset:Nx,
+% \str_gset:cn, \str_gset:cV, \str_gset:ce, \str_gset:cx,
+% \str_const:Nn, \str_const:NV, \str_const:Ne, \str_const:Nx,
+% \str_const:cn, \str_const:cV, \str_const:ce, \str_const:cx,
+% \str_put_left:Nn, \str_put_left:NV, \str_put_left:Ne, \str_put_left:Nx,
+% \str_put_left:cn, \str_put_left:cV, \str_put_left:ce, \str_put_left:cx,
+% \str_gput_left:Nn, \str_gput_left:NV, \str_gput_left:Ne, \str_gput_left:Nx,
+% \str_gput_left:cn, \str_gput_left:cV, \str_gput_left:ce, \str_gput_left:cx,
+% \str_put_right:Nn, \str_put_right:NV, \str_put_right:Ne, \str_put_right:Nx,
+% \str_put_right:cn, \str_put_right:cV, \str_put_right:ce, \str_put_right:cx,
+% \str_gput_right:Nn, \str_gput_right:NV, \str_gput_right:Ne, \str_gput_right:Nx,
+% \str_gput_right:cn, \str_gput_right:cV, \str_gput_right:ce, \str_gput_right:cx
% }
% Simply convert the token list inputs to \meta{strings}.
% \begin{macrocode}
@@ -995,12 +995,13 @@
{
\tl_if_blank:nF {#1}
{
- \cs_new_protected:cpx { str_ #1 :Nn } ##1##2
+ \cs_new_protected:cpe { str_ #1 :Nn } ##1##2
{
- \exp_not:c { tl_ #1 :Nx } ##1
+ \exp_not:c { tl_ #1 :Ne } ##1
{ \exp_not:N \tl_to_str:n {##2} }
}
- \cs_generate_variant:cn { str_ #1 :Nn } { NV , Nx , cn , cV , cx }
+ \cs_generate_variant:cn { str_ #1 :Nn }
+ { NV , Ne , Nx , cn , cV , ce , cx }
\@@_tmp:n
}
}
@@ -1041,13 +1042,13 @@
% hide in braces.
% \begin{macrocode}
\cs_new_protected:Npn \str_replace_once:Nnn
- { \@@_replace:NNNnn \prg_do_nothing: \__kernel_tl_set:Nx }
+ { \@@_replace:NNNnn \prg_do_nothing: \__kernel_tl_set:Ne }
\cs_new_protected:Npn \str_greplace_once:Nnn
- { \@@_replace:NNNnn \prg_do_nothing: \__kernel_tl_gset:Nx }
+ { \@@_replace:NNNnn \prg_do_nothing: \__kernel_tl_gset:Ne }
\cs_new_protected:Npn \str_replace_all:Nnn
- { \@@_replace:NNNnn \@@_replace_next:w \__kernel_tl_set:Nx }
+ { \@@_replace:NNNnn \@@_replace_next:w \__kernel_tl_set:Ne }
\cs_new_protected:Npn \str_greplace_all:Nnn
- { \@@_replace:NNNnn \@@_replace_next:w \__kernel_tl_gset:Nx }
+ { \@@_replace:NNNnn \@@_replace_next:w \__kernel_tl_gset:Ne }
\cs_generate_variant:Nn \str_replace_once:Nnn { c }
\cs_generate_variant:Nn \str_greplace_once:Nnn { c }
\cs_generate_variant:Nn \str_replace_all:Nnn { c }
@@ -1056,10 +1057,10 @@
{
\tl_if_empty:nTF {#4}
{
- \msg_error:nnx { kernel } { empty-search-pattern } {#5}
+ \msg_error:nne { kernel } { empty-search-pattern } {#5}
}
{
- \use:x
+ \use:e
{
\exp_not:n { \@@_replace_aux:NNNnnn #1 #2 #3 }
{ \tl_to_str:N #3 }
@@ -1215,7 +1216,7 @@
% \begin{macrocode}
\prg_new_protected_conditional:Npnn \str_if_in:Nn #1#2 { T , F , TF }
{
- \use:x
+ \use:e
{ \tl_if_in:nnTF { \tl_to_str:N #1 } { \tl_to_str:n {#2} } }
{ \prg_return_true: } { \prg_return_false: }
}
@@ -1223,7 +1224,7 @@
{ c } { T , F , TF }
\prg_new_protected_conditional:Npnn \str_if_in:nn #1#2 { T , F , TF }
{
- \use:x
+ \use:e
{ \tl_if_in:nnTF { \tl_to_str:n {#1} } { \tl_to_str:n {#2} } }
{ \prg_return_true: } { \prg_return_false: }
}
@@ -1369,7 +1370,7 @@
\int_gincr:N \g__kernel_prg_map_int
\cs_gset_protected:cpn
{ @@_map_ \int_use:N \g__kernel_prg_map_int :w } ##1 {#2}
- \use:x
+ \use:e
{
\exp_not:N \@@_map_inline:NN
\exp_not:c { @@_map_ \int_use:N \g__kernel_prg_map_int :w }
@@ -1390,7 +1391,7 @@
}
\cs_new_protected:Npn \str_map_variable:nNn #1#2#3
{
- \use:x
+ \use:e
{
\exp_not:n { \@@_map_variable:NnN #2 {#3} }
\__kernel_str_to_other_fast:n {#1}
@@ -1992,7 +1993,7 @@
\cs_new:Npn \@@_change_case_codepoint:nN #1#2
{ \@@_change_case_char:fnn { \int_eval:n {`#2} } {#1} {#2} }
\else:
- \cs_new:Npx \@@_change_case_codepoint:nN #1#2
+ \cs_new:Npe \@@_change_case_codepoint:nN #1#2
{
\exp_not:N \int_compare:nNnTF {`#2} > { "80 }
{
@@ -2121,19 +2122,19 @@
% For all of those strings, use \cs{cs_to_str:N} to get characters with
% the correct category code without worries
% \begin{macrocode}
-\str_const:Nx \c_ampersand_str { \cs_to_str:N \& }
-\str_const:Nx \c_atsign_str { \cs_to_str:N \@ }
-\str_const:Nx \c_backslash_str { \cs_to_str:N \\ }
-\str_const:Nx \c_left_brace_str { \cs_to_str:N \{ }
-\str_const:Nx \c_right_brace_str { \cs_to_str:N \} }
-\str_const:Nx \c_circumflex_str { \cs_to_str:N \^ }
-\str_const:Nx \c_colon_str { \cs_to_str:N \: }
-\str_const:Nx \c_dollar_str { \cs_to_str:N \$ }
-\str_const:Nx \c_hash_str { \cs_to_str:N \# }
-\str_const:Nx \c_percent_str { \cs_to_str:N \% }
-\str_const:Nx \c_tilde_str { \cs_to_str:N \~ }
-\str_const:Nx \c_underscore_str { \cs_to_str:N \_ }
-\str_const:Nx \c_zero_str { 0 }
+\str_const:Ne \c_ampersand_str { \cs_to_str:N \& }
+\str_const:Ne \c_atsign_str { \cs_to_str:N \@ }
+\str_const:Ne \c_backslash_str { \cs_to_str:N \\ }
+\str_const:Ne \c_left_brace_str { \cs_to_str:N \{ }
+\str_const:Ne \c_right_brace_str { \cs_to_str:N \} }
+\str_const:Ne \c_circumflex_str { \cs_to_str:N \^ }
+\str_const:Ne \c_colon_str { \cs_to_str:N \: }
+\str_const:Ne \c_dollar_str { \cs_to_str:N \$ }
+\str_const:Ne \c_hash_str { \cs_to_str:N \# }
+\str_const:Ne \c_percent_str { \cs_to_str:N \% }
+\str_const:Ne \c_tilde_str { \cs_to_str:N \~ }
+\str_const:Ne \c_underscore_str { \cs_to_str:N \_ }
+\str_const:Ne \c_zero_str { 0 }
% \end{macrocode}
% \end{variable}
%
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
index 5717e60e731..5e57590767f 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -148,7 +148,7 @@
% where the |u| part is only present for \upTeX{}.
% \end{variable}
%
-% \begin{function}[added = 2020-09-24, EXP]{\sys_timer:}
+% \begin{function}[added = 2021-05-12, EXP]{\sys_timer:}
% \begin{syntax}
% \cs{sys_timer:}
% \end{syntax}
@@ -159,6 +159,14 @@
% scaled seconds ($2^{-16}$ seconds).
% \end{function}
%
+% \begin{function}[added = 2021-05-12, EXP, pTF]{\sys_if_timer_exist:}
+% \begin{syntax}
+% \cs{sys_if_timer_exist_p:}
+% \cs{sys_if_timer_exist:TF} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Tests whether current engine has timer support.
+% \end{function}
+%
% \section{Output format}
%
% \begin{function}[added = 2015-09-19, EXP, pTF]
@@ -249,8 +257,8 @@
% \cs{q_no_value} in the non-branching version.
% Note that quote characters (|"|) \emph{cannot} be used inside the
% \meta{shell command}. The \cs{sys_get_shell:nnNTF} conditional
-% inserts the \texttt{true code} if the shell is available and no quote is
-% detected, and the \texttt{false code} otherwise.
+% inserts the \meta{true code} if the shell is available and no quote is
+% detected, and the \meta{false code} otherwise.
% \end{function}
%
% \begin{variable}[added = 2017-05-27]{\c_sys_shell_escape_int}
@@ -294,14 +302,16 @@
% shell escape is enabled use \cs{sys_if_shell:}.
% \end{function}
%
-% \begin{function}[added = 2017-05-27]{\sys_shell_now:n, \sys_shell_now:x}
+% \begin{function}[added = 2017-05-27]
+% {\sys_shell_now:n, \sys_shell_now:e}
% \begin{syntax}
% \cs{sys_shell_now:n} \Arg{tokens}
% \end{syntax}
% Execute \meta{tokens} through shell escape immediately.
% \end{function}
%
-% \begin{function}[added = 2017-05-27]{\sys_shell_shipout:n, \sys_shell_shipout:x}
+% \begin{function}[added = 2017-05-27]
+% {\sys_shell_shipout:n, \sys_shell_shipout:e}
% \begin{syntax}
% \cs{sys_shell_shipout:n} \Arg{tokens}
% \end{syntax}
@@ -411,7 +421,7 @@
% Set up the engine tests on the basis exactly one test should be true.
% Mainly a case of looking for the appropriate marker primitive.
% \begin{macrocode}
-\str_const:Nx \c_sys_engine_str
+\str_const:Ne \c_sys_engine_str
{
\cs_if_exist:NT \tex_luatexversion:D { luatex }
\cs_if_exist:NT \tex_pdftexversion:D { pdftex }
@@ -448,7 +458,7 @@
% \begin{macrocode}
\group_begin:
\cs_set_eq:NN \lua_now:e \tex_directlua:D
- \str_const:Nx \c_sys_engine_exec_str
+ \str_const:Ne \c_sys_engine_exec_str
{
\sys_if_engine_pdftex:T { pdf }
\sys_if_engine_xetex:T { xe }
@@ -466,7 +476,7 @@
tex
}
\group_end:
-\str_const:Nx \c_sys_engine_format_str
+\str_const:Ne \c_sys_engine_format_str
{
\cs_if_exist:NTF \fmtname
{
@@ -505,7 +515,7 @@
% Various different engines, various different ways to extract the
% data!
% \begin{macrocode}
-\str_const:Nx \c_sys_engine_version_str
+\str_const:Ne \c_sys_engine_version_str
{
\str_case:on \c_sys_engine_str
{
@@ -594,7 +604,7 @@
\tl_if_blank:nF {#1}
{ \tl_gset:Nn \g_@@_backend_tl {#1} }
\@@_load_backend_check:N \g_@@_backend_tl
- \str_const:Nx \c_sys_backend_str { \g_@@_backend_tl }
+ \str_const:Ne \c_sys_backend_str { \g_@@_backend_tl }
\__kernel_sys_configuration_load:n
{ l3backend- \c_sys_backend_str }
}
@@ -610,7 +620,7 @@
{ xetex } { }
}
{
- \msg_error:nnxx { sys } { wrong-backend }
+ \msg_error:nnee { sys } { wrong-backend }
#1 { xetex }
\tl_gset:Nn #1 { xetex }
}
@@ -629,7 +639,7 @@
{ \str_if_eq_p:Vn #1 { luatex } }
{ \str_if_eq_p:Vn #1 { pdftex } }
{
- \msg_error:nnxx { sys } { wrong-backend }
+ \msg_error:nnee { sys } { wrong-backend }
#1 { \sys_if_engine_luatex:TF { luatex } { pdftex } }
\sys_if_engine_luatex:TF
{ \tl_gset:Nn #1 { luatex } }
@@ -645,7 +655,7 @@
{ dvisvgm } { }
}
{
- \msg_error:nnxx { sys } { wrong-backend }
+ \msg_error:nnee { sys } { wrong-backend }
#1 { dvips }
\tl_gset:Nn #1 { dvips }
}
@@ -697,7 +707,7 @@
% \begin{variable}{\c_@@_marker_tl}
% The same idea as the marker for rescanning token lists.
% \begin{macrocode}
-\tl_const:Nx \c_@@_marker_tl { : \token_to_str:N : }
+\tl_const:Ne \c_@@_marker_tl { : \token_to_str:N : }
% \end{macrocode}
% \end{variable}
%
@@ -721,7 +731,7 @@
{
\tl_if_in:nnTF {#1} { " }
{
- \msg_error:nnx
+ \msg_error:nne
{ kernel } { quote-in-shell } {#1}
\prg_return_false:
}
@@ -759,7 +769,7 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\sys_shell_now:n}
+% \begin{macro}{\sys_shell_now:n, \sys_shell_now:e, \sys_shell_now:x}
% \begin{macro}{\@@_shell_now:e}
% Execute commands through shell escape immediately.
%
@@ -797,13 +807,13 @@ do
\cs_new_protected:Npn \sys_shell_now:n #1
{ \iow_now:Nn \c_@@_shell_stream_int {#1} }
}
-\cs_generate_variant:Nn \sys_shell_now:n { x }
+\cs_generate_variant:Nn \sys_shell_now:n { e, x }
%</tex>
% \end{macrocode}
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\sys_shell_shipout:n}
+% \begin{macro}{\sys_shell_shipout:n, \sys_shell_shipout:e, \sys_shell_shipout:x}
% \begin{macro}{\@@_shell_shipout:e}
% Execute commands through shell escape at shipout.
%
@@ -843,7 +853,7 @@ end
\cs_new_protected:Npn \sys_shell_shipout:n #1
{ \iow_shipout:Nn \c_@@_shell_stream_int {#1} }
}
-\cs_generate_variant:Nn \sys_shell_shipout:n { x }
+\cs_generate_variant:Nn \sys_shell_shipout:n { e , x }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -940,7 +950,7 @@ end
% \begin{macrocode}
\@@_everyjob:n
{
- \str_const:Nx \c_sys_timestamp_str
+ \str_const:Ne \c_sys_timestamp_str
{
\cs_if_exist:NTF \tex_directlua:D
{ \tex_directlua:D { tex.print(pdf.getcreationdate()) } }
@@ -1101,7 +1111,7 @@ end
% \begin{macrocode}
\@@_finalise:n
{
- \str_const:Nx \c_sys_output_str
+ \str_const:Ne \c_sys_output_str
{
\int_compare:nNnTF
{ \cs_if_exist_use:NF \tex_pdfoutput:D { 0 } } > { 0 }
@@ -1126,7 +1136,7 @@ end
\tl_new:N \g_@@_backend_tl
\@@_finalise:n
{
- \__kernel_tl_gset:Nx \g_@@_backend_tl
+ \__kernel_tl_gset:Ne \g_@@_backend_tl
{
\sys_if_engine_xetex:TF
{ xetex }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
index 07a79e2bb02..0e20a797f09 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3text-case.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -243,15 +243,15 @@
}
\cs_new:Npn \@@_change_case_auxi:nnn #1#2#3
{ \exp_args:No \@@_change_case_BCP:nnn { \tl_to_str:n {#3} } {#1} {#2} }
-\cs_new:Npx \@@_change_case_BCP:nnn #1#2#3
+\cs_new:Npe \@@_change_case_BCP:nnn #1#2#3
{
\exp_not:N \@@_change_case_BCP:nnw
{#2} {#3} #1 \tl_to_str:n { -x- -x- } \exp_not:N \q_@@_stop
}
-\use:x
+\use:e
{
\cs_new:Npn \exp_not:N \@@_change_case_BCP:nnw
- ##1##2##3 \tl_to_str:n { -x- } ##4 \tl_to_str:n { -x- } ##5
+ #1#2#3 \tl_to_str:n { -x- } #4 \tl_to_str:n { -x- } #5
\exp_not:N \q_@@_stop
}
{ \@@_change_case_BCP:nnnnw {#1} {#2} {#4} {#3} #3 - - \q_@@_stop }
@@ -353,9 +353,9 @@
}
\@@_change_case_break:w
}
-\use:x
+\use:e
{
- \cs_new:Npn \exp_not:N \@@_change_case_space:nnw ##1##2 \c_space_tl
+ \cs_new:Npn \exp_not:N \@@_change_case_space:nnw #1#2 \c_space_tl
}
{
\@@_change_case_store:n { ~ }
@@ -427,9 +427,9 @@
\@@_change_case_store:n { {#4} }
\@@_change_case_math_loop:nnNw {#1} {#2} #3
}
-\use:x
+\use:e
{
- \cs_new:Npn \exp_not:N \@@_change_case_math_space:nnNw ##1##2##3
+ \cs_new:Npn \exp_not:N \@@_change_case_math_space:nnNw #1#2#3
\c_space_tl
}
{
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
index b2372d446f7..8b3ac6098c5 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3text-map.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -168,8 +168,8 @@
}
\@@_map_loop:Nnw #1 { }
}
-\use:x
- { \cs_new:Npn \exp_not:N \@@_map_space:Nnw ##1##2 \c_space_tl }
+\use:e
+ { \cs_new:Npn \exp_not:N \@@_map_space:Nnw #1#2 \c_space_tl }
{
\@@_map_output:Nn #1 {#2}
#1 { ~ }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
index 35d180d0421..075b3707379 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3text-purify.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -349,7 +349,7 @@
% \begin{macro}
% {
% \text_declare_purify_equivalent:Nn,
-% \text_declare_purify_equivalent:Nx
+% \text_declare_purify_equivalent:Ne
% }
% \begin{macrocode}
\cs_new_protected:Npn \text_declare_purify_equivalent:Nn #1#2
@@ -357,7 +357,7 @@
\tl_clear_new:c { l_@@_purify_ \token_to_str:N #1 _tl }
\tl_set:cn { l_@@_purify_ \token_to_str:N #1 _tl } {#2}
}
-\cs_generate_variant:Nn \text_declare_purify_equivalent:Nn { Nx }
+\cs_generate_variant:Nn \text_declare_purify_equivalent:Nn { Ne }
% \end{macrocode}
% \end{macro}
%
@@ -436,7 +436,7 @@
\text_declare_purify_equivalent:Nn \\ { }
\tl_map_inline:nn
{ \{ \} \# \$ \% \_ }
- { \text_declare_purify_equivalent:Nx #1 { \cs_to_str:N #1 } }
+ { \text_declare_purify_equivalent:Ne #1 { \cs_to_str:N #1 } }
% \end{macrocode}
% Cross-referencing.
% \begin{macrocode}
@@ -449,7 +449,7 @@
\use:n
{
\group_end:
- \text_declare_purify_equivalent:Nx ~ { \c_space_tl }
+ \text_declare_purify_equivalent:Ne ~ { \c_space_tl }
}
\text_declare_purify_equivalent:Nn \nobreakspace { ~ }
\text_declare_purify_equivalent:Nn \ { ~ }
@@ -471,7 +471,7 @@
\cs_set_protected:Npn \@@_loop:Nn #1#2
{
\quark_if_recursion_tail_stop:N #1
- \text_declare_purify_equivalent:Nx #1
+ \text_declare_purify_equivalent:Ne #1
{
\codepoint_generate:nn {"#2}
{ \char_value_catcode:n {"#2} }
@@ -535,7 +535,7 @@
\cs_set_protected:Npn \@@_loop:Nn #1#2
{
\quark_if_recursion_tail_stop:N #1
- \tl_const:cx { c_@@_purify_ \token_to_str:N #1 _tl }
+ \tl_const:ce { c_@@_purify_ \token_to_str:N #1 _tl }
{ \codepoint_generate:nn {"#2} { \char_value_catcode:n { "#2 } } }
\@@_loop:Nn
}
@@ -569,7 +569,7 @@
\cs_set_protected:Npn \@@_loop:NNn #1#2#3
{
\quark_if_recursion_tail_stop:N #1
- \tl_const:cx
+ \tl_const:ce
{ c_@@_purify_ \token_to_str:N #1 _ \token_to_str:N #2 _tl }
{ \codepoint_generate:nn {"#3} { \char_value_catcode:n { "#3 } } }
\@@_loop:NNn
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
index 016c5579a19..8df534cc84a 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3text.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -268,7 +268,7 @@
% \begin{function}[added = 2020-03-05]
% {
% \text_declare_purify_equivalent:Nn ,
-% \text_declare_purify_equivalent:Nx
+% \text_declare_purify_equivalent:Ne
% }
% \begin{syntax}
% \cs{text_declare_purify_equivalent:Nn} \meta{cmd} \Arg{replacement}
@@ -673,7 +673,7 @@
\cs_new:Npn \@@_codepoint_process:nN #1#2 { #1 {#2} }
}
{
- \cs_new:Npx \@@_codepoint_process:nN #1#2
+ \cs_new:Npe \@@_codepoint_process:nN #1#2
{
\exp_not:N \int_compare:nNnTF {`#2} > { "80 }
{
@@ -742,7 +742,7 @@
#2 {#3}
\prg_return_true: \prg_return_false:
}
- \cs_new:Npx \@@_codepoint_from_chars:Nw #1
+ \cs_new:Npe \@@_codepoint_from_chars:Nw #1
{
\exp_not:N \if_int_compare:w `#1 > "80 \exp_not:N \exp_stop_f:
\sys_if_engine_pdftex:TF
@@ -817,7 +817,7 @@
% applied to \cs{cite}.
% \begin{macrocode}
\tl_new:N \l_text_case_exclude_arg_tl
-\tl_set:Nx \l_text_case_exclude_arg_tl
+\tl_set:Ne \l_text_case_exclude_arg_tl
{
\exp_not:n { \begin \cite \end \label \ref }
\exp_not:c { cite ~ }
@@ -1230,7 +1230,7 @@
% token. There is also the case of a straight \tn{@protected@testopt} to
% cover.
% \begin{macrocode}
-\cs_new:Npx \@@_expand_cs:N #1
+\cs_new:Npe \@@_expand_cs:N #1
{
\exp_not:N \str_if_eq:nnTF {#1} { \exp_not:N \protect }
{ \exp_not:N \@@_expand_protect:w }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
index 385b3db8ac6..9cadf04e878 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -233,7 +233,7 @@
% \begin{macrocode}
\group_begin:
\char_set_active_eq:NN \ \scan_stop:
-\tl_const:Nx \c_@@_peek_catcodes_tl
+\tl_const:Ne \c_@@_peek_catcodes_tl
{
\char_generate:nn { 32 } { 3 } 3
\char_generate:nn { 32 } { 4 } 4
@@ -773,7 +773,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_analysis_b:n #1
{
- \__kernel_tl_gset:Nx \g_@@_analysis_result_tl
+ \__kernel_tl_gset:Ne \g_@@_analysis_result_tl
{
\@@_analysis_b_loop:w 0; #1
\prg_break_point:
@@ -837,7 +837,7 @@
% in the input stream, and call \cs{@@_analysis_b_normals:ww}
% with its first argument decremented.
% \begin{macrocode}
-\cs_new:Npx \@@_analysis_b_char:Nn #1#2
+\cs_new:Npe \@@_analysis_b_char:Nn #1#2
{
\exp_not:N \if_meaning:w #2 \exp_not:N \tex_undefined:D
\token_to_str:N D \exp_not:N \else:
@@ -1004,9 +1004,9 @@
% as \cs{tl_show:N} by simply calling that function.
% \begin{macrocode}
\cs_new_protected:Npn \tl_analysis_show:N
- { \@@_analysis_show:NNN \msg_show:nnxxxx \tl_show:N }
+ { \@@_analysis_show:NNN \msg_show:nneeee \tl_show:N }
\cs_new_protected:Npn \tl_analysis_log:N
- { \@@_analysis_show:NNN \msg_log:nnxxxx \tl_log:N }
+ { \@@_analysis_show:NNN \msg_log:nneeee \tl_log:N }
\cs_new_protected:Npn \@@_analysis_show:NNN #1#2#3
{
\tl_if_exist:NTF #3
@@ -1024,9 +1024,9 @@
% No existence test needed here.
% \begin{macrocode}
\cs_new_protected:Npn \tl_analysis_show:n
- { \@@_analysis_show:Nn \msg_show:nnxxxx }
+ { \@@_analysis_show:Nn \msg_show:nneeee }
\cs_new_protected:Npn \tl_analysis_log:n
- { \@@_analysis_show:Nn \msg_log:nnxxxx }
+ { \@@_analysis_show:Nn \msg_log:nneeee }
\cs_new_protected:Npn \@@_analysis_show:Nn #1#2
{
\@@_analysis:n {#2}
@@ -1234,7 +1234,7 @@
\cs_new_protected:Npn \@@_peek_analysis_loop:NNn #1#2#3
{
\group_begin:
- \tl_set:Nx \l_@@_peek_code_tl
+ \tl_set:Ne \l_@@_peek_code_tl
{
\exp_not:c
{ @@_analysis_map_ \int_use:N \g__kernel_prg_map_int :nnN }
@@ -1266,8 +1266,8 @@
% \tn{outer} macros, hence the need for \cs{exp_after:wN} and
% \cs{exp_not:N} in the code above, which allows the next function to
% safely grab the token as an argument. We run some code that is
-% expanded using the primitive \cs{cs_set_nopar:Npx} rather than
-% \cs{tl_set:Nx} to avoid grabbing it as an argument as |#1| may be
+% expanded using the primitive \cs{cs_set_nopar:Npe} rather than
+% \cs{tl_set:Ne} to avoid grabbing it as an argument as |#1| may be
% \tn{outer}. To allow~|#1| as an argument of the user's function
% (stored in \cs{l_@@_peek_code_tl}), we set it equal to
% \cs{scan_stop:}, but we do it at the last minute because |#1|
@@ -1293,7 +1293,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_peek_analysis_exp:N #1
{
- \cs_set_nopar:Npx \l_@@_peek_code_tl
+ \cs_set_nopar:Npe \l_@@_peek_code_tl
{
\tex_let:D \exp_not:N #1 \scan_stop:
\exp_not:o \l_@@_peek_code_tl
@@ -1315,7 +1315,7 @@
}
\l_@@_peek_code_tl
}
-\cs_new:Npx \@@_peek_analysis_exp_active:N #1
+\cs_new:Npe \@@_peek_analysis_exp_active:N #1
{ { \exp_not:N \int_value:w `#1 } \token_to_str:N D }
% \end{macrocode}
% For normal non-expandable tokens we must distinguish characters
@@ -1366,7 +1366,7 @@
% \begin{macrocode}
\group_begin:
\char_set_active_eq:NN \ \scan_stop:
-\cs_new_protected:Npx \@@_peek_analysis_char:N #1
+\cs_new_protected:Npe \@@_peek_analysis_char:N #1
{
\cs_set_eq:NN
\char_generate:nn { 32 } { 13 }
@@ -1374,7 +1374,7 @@
\tex_lccode:D `#1 = 32 \exp_stop_f:
\tex_lowercase:D
{
- \tl_put_right:Nx \exp_not:N \l_@@_peek_code_tl
+ \tl_put_right:Ne \exp_not:N \l_@@_peek_code_tl
{ \exp_not:n { \@@_analysis_b_char:Nn \use_none:n } {#1} }
}
\exp_not:n
@@ -1501,7 +1501,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_peek_analysis_active_str:n #1
{
- \tl_put_right:Nx \l_@@_peek_code_tl
+ \tl_put_right:Ne \l_@@_peek_code_tl
{
{ \char_generate:nn { `#1 } { 13 } }
{ \int_value:w `#1 }
@@ -1521,7 +1521,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_peek_analysis_explicit:n #1
{
- \tl_put_right:Nx \l_@@_peek_code_tl
+ \tl_put_right:Ne \l_@@_peek_code_tl
{
\if_meaning:w \l_peek_token \c_space_token
{ ~ } { 32 } \token_to_str:N A
@@ -1601,7 +1601,7 @@
\cs_new_protected:Npn \@@_peek_analysis_collect_end:NNN #1#2#3
{
#1 #2
- \tl_put_right:Nx \l_@@_peek_code_tl
+ \tl_put_right:Ne \l_@@_peek_code_tl
{
{ \exp_not:N \exp_not:n { \exp_not:c { \l_@@_internal_a_tl } } }
{ -1 }
@@ -1619,7 +1619,7 @@
% and its meaning are too long to fit in one line
% of the terminal, the end is replaced by this token list.
% \begin{macrocode}
-\tl_const:Nx \c_@@_analysis_show_etc_str % (
+\tl_const:Ne \c_@@_analysis_show_etc_str % (
{ \token_to_str:N \ETC.) }
% \end{macrocode}
% \end{variable}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
index 06226fd7bad..e606c3c5587 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -97,7 +97,11 @@
% \meta{tl~var} is initially empty.
% \end{function}
%
-% \begin{function}{\tl_const:Nn, \tl_const:Nx, \tl_const:cn, \tl_const:cx}
+% \begin{function}
+% {
+% \tl_const:Nn, \tl_const:Ne,
+% \tl_const:cn, \tl_const:ce
+% }
% \begin{syntax}
% \cs{tl_const:Nn} \meta{tl~var} \Arg{token list}
% \end{syntax}
@@ -161,12 +165,12 @@
%
% \begin{function}
% {
-% \tl_set:Nn, \tl_set:NV, \tl_set:Nv, \tl_set:No, \tl_set:Ne, \tl_set:Nf, \tl_set:Nx,
-% \tl_set:cn, \tl_set:cV, \tl_set:cv, \tl_set:co, \tl_set:ce, \tl_set:cf, \tl_set:cx,
+% \tl_set:Nn, \tl_set:NV, \tl_set:Nv, \tl_set:No, \tl_set:Ne, \tl_set:Nf,
+% \tl_set:cn, \tl_set:cV, \tl_set:cv, \tl_set:co, \tl_set:ce, \tl_set:cf,
% \tl_gset:Nn, \tl_gset:NV, \tl_gset:Nv,
-% \tl_gset:No, \tl_gset:Ne, \tl_gset:Nf, \tl_gset:Nx,
+% \tl_gset:No, \tl_gset:Ne, \tl_gset:Nf,
% \tl_gset:cn, \tl_gset:cV, \tl_gset:cv,
-% \tl_gset:co, \tl_gset:ce, \tl_gset:cf, \tl_gset:cx
+% \tl_gset:co, \tl_gset:ce, \tl_gset:cf
% }
% \begin{syntax}
% \cs{tl_set:Nn} \meta{tl~var} \Arg{tokens}
@@ -177,10 +181,14 @@
%
% \begin{function}
% {
-% \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:Nv, \tl_put_left:No, \tl_put_left:Nx,
-% \tl_put_left:cn, \tl_put_left:cV, \tl_put_left:cv, \tl_put_left:co, \tl_put_left:cx,
-% \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:No, \tl_gput_left:Nx,
-% \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:co, \tl_gput_left:cx
+% \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:Nv, \tl_put_left:Ne,
+% \tl_put_left:No,
+% \tl_put_left:cn, \tl_put_left:cV, \tl_put_left:cv, \tl_put_left:ce,
+% \tl_put_left:co,
+% \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:Ne,
+% \tl_gput_left:No,
+% \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:ce
+% \tl_gput_left:co
% }
% \begin{syntax}
% \cs{tl_put_left:Nn} \meta{tl~var} \Arg{tokens}
@@ -191,10 +199,14 @@
%
% \begin{function}
% {
-% \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:Nv, \tl_put_right:No, \tl_put_right:Nx,
-% \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:cv, \tl_put_right:co, \tl_put_right:cx,
-% \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv, \tl_gput_right:No, \tl_gput_right:Nx,
-% \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:co, \tl_gput_right:cx
+% \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:Nv, \tl_put_right:Ne,
+% \tl_put_right:No,
+% \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:cv, \tl_put_right:ce,
+% \tl_put_right:co,
+% \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv, \tl_gput_right:Ne,
+% \tl_gput_right:No,
+% \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:ce
+% \tl_gput_right:co
% }
% \begin{syntax}
% \cs{tl_put_right:Nn} \meta{tl~var} \Arg{tokens}
@@ -249,7 +261,7 @@
% contain and the category codes of those characters). Thus for example
% \begin{verbatim}
% \tl_set:Nn \l_tmpa_tl { abc }
-% \tl_set:Nx \l_tmpb_tl { \tl_to_str:n { abc } }
+% \tl_set:Ne \l_tmpb_tl { \tl_to_str:n { abc } }
% \tl_if_eq:NNTF \l_tmpa_tl \l_tmpb_tl { true } { false }
% \end{verbatim}
% yields \texttt{false}.
@@ -269,7 +281,10 @@
% \end{function}
%
% \begin{function}[TF]
-% {\tl_if_eq:nn, \tl_if_eq:Vn, \tl_if_eq:nV, \tl_if_eq:xn, \tl_if_eq:nx}
+% {
+% \tl_if_eq:nn, \tl_if_eq:nV, \tl_if_eq:ne, \tl_if_eq:Vn, \tl_if_eq:en,
+% \tl_if_eq:ee
+% }
% \begin{syntax}
% \cs{tl_if_eq:nnTF} \Arg{token list_1} \Arg{token list_2} \Arg{true code} \Arg{false code}
% \end{syntax}
@@ -594,7 +609,11 @@
% \end{function}
%
% \begin{function}[added = 2011-07-09, updated = 2012-06-25, EXP]
-% {\tl_trim_spaces:n, \tl_trim_spaces:o}
+% {
+% \tl_trim_spaces:n, \tl_trim_spaces:V, \tl_trim_spaces:v,
+% \tl_trim_spaces:e,
+% \tl_trim_spaces:o
+% }
% \begin{syntax}
% \cs{tl_trim_spaces:n} \Arg{token list}
% \end{syntax}
@@ -646,7 +665,7 @@
% \end{texnote}
% \end{function}
%
-% \begin{function}[updated = 2015-08-07]{\tl_show:n, \tl_show:x}
+% \begin{function}[updated = 2015-08-07]{\tl_show:n, \tl_show:e}
% \begin{syntax}
% \cs{tl_show:n} \Arg{token list}
% \end{syntax}
@@ -665,7 +684,8 @@
% \cs{tl_show:N} which displays the result in the terminal.
% \end{function}
%
-% \begin{function}[added = 2014-08-22, updated = 2015-08-07]{\tl_log:n, \tl_log:x}
+% \begin{function}[added = 2014-08-22, updated = 2015-08-07]
+% {\tl_log:n, \tl_log:e, \tl_log:x}
% \begin{syntax}
% \cs{tl_log:n} \Arg{token list}
% \end{syntax}
@@ -997,17 +1017,17 @@
% \end{verbatim}
% Here are some more interesting examples. The calls
% \begin{verbatim}
-% \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { 2 } { 5 } }
-% \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { 2 } { -3 } }
-% \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { -6 } { 5 } }
-% \iow_term:x { \tl_range:nnn { abcd{e{}}fg } { -6 } { -3 } }
+% \iow_term:e { \tl_range:nnn { abcd{e{}}fg } { 2 } { 5 } }
+% \iow_term:e { \tl_range:nnn { abcd{e{}}fg } { 2 } { -3 } }
+% \iow_term:e { \tl_range:nnn { abcd{e{}}fg } { -6 } { 5 } }
+% \iow_term:e { \tl_range:nnn { abcd{e{}}fg } { -6 } { -3 } }
% \end{verbatim}
% are all equivalent and will print |bcd{e{}}| on the terminal; similarly
% \begin{verbatim}
-% \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { 2 } { 5 } }
-% \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { 2 } { -3 } }
-% \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { -6 } { 5 } }
-% \iow_term:x { \tl_range:nnn { abcd~{e{}}fg } { -6 } { -3 } }
+% \iow_term:e { \tl_range:nnn { abcd~{e{}}fg } { 2 } { 5 } }
+% \iow_term:e { \tl_range:nnn { abcd~{e{}}fg } { 2 } { -3 } }
+% \iow_term:e { \tl_range:nnn { abcd~{e{}}fg } { -6 } { 5 } }
+% \iow_term:e { \tl_range:nnn { abcd~{e{}}fg } { -6 } { -3 } }
% \end{verbatim}
% are all equivalent and will print |bcd {e{}}| on the
% terminal (note the space in the middle). To the contrary,
@@ -1074,13 +1094,13 @@
% \begin{function}[updated = 2011-08-11]
% {
% \tl_replace_once:Nnn, \tl_replace_once:NVn, \tl_replace_once:NnV,
-% \tl_replace_once:Nxn, \tl_replace_once:Nnx, \tl_replace_once:Nxx,
+% \tl_replace_once:Nen, \tl_replace_once:Nne, \tl_replace_once:Nee,
% \tl_replace_once:cnn, \tl_replace_once:cVn, \tl_replace_once:cnV,
-% \tl_replace_once:cxn, \tl_replace_once:cnx, \tl_replace_once:cxx,
-% \tl_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_rgeplace_once:NnV,
-% \tl_greplace_once:Nxn, \tl_greplace_once:Nnx, \tl_greplace_once:Nxx,
+% \tl_replace_once:cen, \tl_replace_once:cne, \tl_replace_once:cee,
+% \tl_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_greplace_once:NnV,
+% \tl_greplace_once:Nen, \tl_greplace_once:Nne, \tl_greplace_once:Nee,
% \tl_greplace_once:cnn, \tl_greplace_once:cVn, \tl_greplace_once:cnV,
-% \tl_greplace_once:cxn, \tl_greplace_once:cnx, \tl_greplace_once:cxx
+% \tl_greplace_once:cen, \tl_greplace_once:cne, \tl_greplace_once:cee
% }
% \begin{syntax}
% \cs{tl_replace_once:Nnn} \meta{tl~var} \Arg{old tokens} \Arg{new tokens}
@@ -1094,14 +1114,14 @@
%
% \begin{function}[updated = 2011-08-11]
% {
-% \tl_replace_all:Nnn, \tl_replace_all:NVn, \tl_replace_all:NnV,
-% \tl_replace_all:Nxn, \tl_replace_all:Nnx, \tl_replace_all:Nxx,
-% \tl_replace_all:cnn, \tl_replace_all:cVn, \tl_replace_all:cnV,
-% \tl_replace_all:cxn, \tl_replace_all:cnx, \tl_replace_all:cxx,
-% \tl_greplace_all:Nnn, \tl_greplace_all:NVn, \tl_greplace_all:cnV,
-% \tl_greplace_all:Nxn, \tl_greplace_all:Nnx, \tl_greplace_all:Nxx,
-% \tl_greplace_all:cnn, \tl_greplace_all:cVn, \tl_greplace_all:cnV,
-% \tl_greplace_all:cxn, \tl_greplace_all:cnx, \tl_greplace_all:cxx
+% \tl_replace_all:Nnn, \tl_replace_all:NVn, \tl_replace_all:NnV,
+% \tl_replace_all:Nen, \tl_replace_all:Nne, \tl_replace_all:Nee,
+% \tl_replace_all:cnn, \tl_replace_all:cVn, \tl_replace_all:cnV,
+% \tl_replace_all:cen, \tl_replace_all:cne, \tl_replace_all:cee,
+% \tl_greplace_all:Nnn, \tl_greplace_all:NVn, \tl_greplace_all:NnV,
+% \tl_greplace_all:Nen, \tl_greplace_all:Nne, \tl_greplace_all:Nee,
+% \tl_greplace_all:cnn, \tl_greplace_all:cVn, \tl_greplace_all:cnV,
+% \tl_greplace_all:cen, \tl_greplace_all:cne, \tl_greplace_all:cee
% }
% \begin{syntax}
% \cs{tl_replace_all:Nnn} \meta{tl~var} \Arg{old tokens} \Arg{new tokens}
@@ -1119,10 +1139,10 @@
%
% \begin{function}[updated = 2011-08-11]
% {
-% \tl_remove_once:Nn, \tl_remove_once:NV, \tl_remove_once:Nx,
-% \tl_remove_once:cn, \tl_remove_once:cV, \tl_remove_once:cx,
-% \tl_gremove_once:Nn, \tl_gremove_once:NV, \tl_gremove_once:Nx
-% \tl_gremove_once:cn, \tl_gremove_once:cV, \tl_gremove_once:cx
+% \tl_remove_once:Nn, \tl_remove_once:NV, \tl_remove_once:Ne,
+% \tl_remove_once:cn, \tl_remove_once:cV, \tl_remove_once:ce,
+% \tl_gremove_once:Nn, \tl_gremove_once:NV, \tl_gremove_once:Ne,
+% \tl_gremove_once:cn, \tl_gremove_once:cV, \tl_gremove_once:ce
% }
% \begin{syntax}
% \cs{tl_remove_once:Nn} \meta{tl~var} \Arg{tokens}
@@ -1135,10 +1155,10 @@
%
% \begin{function}[updated = 2011-08-11]
% {
-% \tl_remove_all:Nn, \tl_remove_all:NV, \tl_remove_all:Nx,
-% \tl_remove_all:cn, \tl_remove_all:cV, \tl_remove_all:cx,
-% \tl_gremove_all:Nn, \tl_gremove_all:NV, \tl_gremove_all:Nx
-% \tl_gremove_all:cn, \tl_gremove_all:cV, \tl_gremove_all:cx
+% \tl_remove_all:Nn, \tl_remove_all:NV, \tl_remove_all:Ne,
+% \tl_remove_all:cn, \tl_remove_all:cV, \tl_remove_all:ce,
+% \tl_gremove_all:Nn, \tl_gremove_all:NV, \tl_gremove_all:Ne,
+% \tl_gremove_all:cn, \tl_gremove_all:cV, \tl_gremove_all:ce,
% }
% \begin{syntax}
% \cs{tl_remove_all:Nn} \meta{tl~var} \Arg{tokens}
@@ -1169,10 +1189,14 @@
%
% \begin{function}[updated = 2015-08-11]
% {
-% \tl_set_rescan:Nnn, \tl_set_rescan:NnV, \tl_set_rescan:Nno, \tl_set_rescan:Nnx,
-% \tl_set_rescan:cnn, \tl_set_rescan:cnV, \tl_set_rescan:cno, \tl_set_rescan:cnx,
-% \tl_gset_rescan:Nnn, \tl_gset_rescan:NnV, \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx,
-% \tl_gset_rescan:cnn, \tl_gset_rescan:cnV, \tl_gset_rescan:cno, \tl_gset_rescan:cnx
+% \tl_set_rescan:Nnn, \tl_set_rescan:NnV, \tl_set_rescan:Nne,
+% \tl_set_rescan:Nno,
+% \tl_set_rescan:cnn, \tl_set_rescan:cnV, \tl_set_rescan:cne,
+% \tl_set_rescan:cno,
+% \tl_gset_rescan:Nnn, \tl_gset_rescan:NnV, \tl_gset_rescan:Nne,
+% \tl_gset_rescan:Nno,
+% \tl_gset_rescan:cnn, \tl_gset_rescan:cnV, \tl_gset_rescan:cne,
+% \tl_gset_rescan:cno,
% }
% \begin{syntax}
% \cs{tl_set_rescan:Nnn} \meta{tl~var} \Arg{setup} \Arg{tokens}
@@ -1300,12 +1324,12 @@
%
% \subsection{Functions}
%
-% \begin{macro}{\__kernel_tl_set:Nx,\__kernel_tl_gset:Nx}
+% \begin{macro}{\__kernel_tl_set:Ne,\__kernel_tl_gset:Ne}
% These two are supplied to get better performance for macros which would
-% otherwise use \cs{tl_set:Nx} or \cs{tl_gset:Nx} internally.
+% otherwise use \cs{tl_set:Ne} or \cs{tl_gset:Ne} internally.
% \begin{macrocode}
-\cs_new_eq:NN \__kernel_tl_set:Nx \cs_set_nopar:Npx
-\cs_new_eq:NN \__kernel_tl_gset:Nx \cs_gset_nopar:Npx
+\cs_new_eq:NN \__kernel_tl_set:Ne \cs_set_nopar:Npe
+\cs_new_eq:NN \__kernel_tl_gset:Ne \cs_gset_nopar:Npe
% \end{macrocode}
% \end{macro}
%
@@ -1322,23 +1346,22 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\tl_const:Nn, \tl_const:Nx, \tl_const:cn, \tl_const:cx}
-% Constants are also easy to generate. They use \cs{cs_gset_nopar:Npx} instead
-% of \cs{__kernel_tl_gset:Nx} so that the correct scope checking is applied if
+% \begin{macro}
+% {
+% \tl_const:Nn, \tl_const:Ne, \tl_const:Nx,
+% \tl_const:cn, \tl_const:ce, \tl_const:cx
+% }
+% Constants are also easy to generate. They use \cs{cs_gset_nopar:Npe} instead
+% of \cs{__kernel_tl_gset:Ne} so that the correct scope checking is applied if
% \pkg{l3debug} is used.
% \begin{macrocode}
\cs_new_protected:Npn \tl_const:Nn #1#2
{
\__kernel_chk_if_free_cs:N #1
- \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w {#2} }
- }
-\cs_new_protected:Npn \tl_const:Nx #1#2
- {
- \__kernel_chk_if_free_cs:N #1
- \cs_gset_nopar:Npx #1 {#2}
+ \cs_gset_nopar:Npe #1 { \__kernel_exp_not:w {#2} }
}
-\cs_generate_variant:Nn \tl_const:Nn { c }
-\cs_generate_variant:Nn \tl_const:Nx { c }
+\cs_generate_variant:Nn \tl_const:Nn { Ne , c , ce }
+\cs_generate_variant:Nn \tl_const:Nn { Nx , cx }
% \end{macrocode}
% \end{macro}
%
@@ -1396,7 +1419,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \tl_concat:NNN #1#2#3
{
- \__kernel_tl_set:Nx #1
+ \__kernel_tl_set:Ne #1
{
\__kernel_exp_not:w \exp_after:wN {#2}
\__kernel_exp_not:w \exp_after:wN {#3}
@@ -1404,7 +1427,7 @@
}
\cs_new_protected:Npn \tl_gconcat:NNN #1#2#3
{
- \__kernel_tl_gset:Nx #1
+ \__kernel_tl_gset:Ne #1
{
\__kernel_exp_not:w \exp_after:wN {#2}
\__kernel_exp_not:w \exp_after:wN {#3}
@@ -1439,7 +1462,7 @@
% \begin{macrocode}
\group_begin:
\tex_catcode:D `- = 11 ~
-\tl_const:Nx \c_novalue_tl { - NoValue \token_to_str:N - }
+\tl_const:Ne \c_novalue_tl { - NoValue \token_to_str:N - }
\group_end:
% \end{macrocode}
% \end{variable}
@@ -1471,173 +1494,203 @@
% by hand as it is used quite a lot.
% \begin{macrocode}
\cs_new_protected:Npn \tl_set:Nn #1#2
- { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w {#2} } }
+ { \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w {#2} } }
\cs_new_protected:Npn \tl_set:No #1#2
- { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
-\cs_new_protected:Npn \tl_set:Nx #1#2
- { \__kernel_tl_set:Nx #1 {#2} }
+ { \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
\cs_new_protected:Npn \tl_gset:Nn #1#2
- { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w {#2} } }
+ { \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w {#2} } }
\cs_new_protected:Npn \tl_gset:No #1#2
- { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
-\cs_new_protected:Npn \tl_gset:Nx #1#2
- { \__kernel_tl_gset:Nx #1 {#2} }
+ { \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
\cs_generate_variant:Nn \tl_set:Nn { NV , Nv , Ne , Nf }
\cs_generate_variant:Nn \tl_set:Nn { c, cV , cv , ce , cf }
-\cs_generate_variant:Nn \tl_set:Nx { c }
\cs_generate_variant:Nn \tl_set:No { c }
+\cs_generate_variant:Nn \tl_set:Nn { Nx , cx }
\cs_generate_variant:Nn \tl_gset:Nn { NV , Nv , Ne , Nf }
\cs_generate_variant:Nn \tl_gset:Nn { c, cV , cv , ce , cf }
-\cs_generate_variant:Nn \tl_gset:Nx { c }
\cs_generate_variant:Nn \tl_gset:No { c }
+\cs_generate_variant:Nn \tl_gset:Nn { Nx , cx }
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}
% {
-% \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:Nv, \tl_put_left:No, \tl_put_left:Nx,
-% \tl_put_left:cn, \tl_put_left:cV, \tl_put_left:cv, \tl_put_left:co, \tl_put_left:cx
+% \tl_put_left:Nn, \tl_put_left:NV, \tl_put_left:Nv, \tl_put_left:Ne,
+% \tl_put_left:No, \tl_put_left:Nx,
+% \tl_put_left:cn, \tl_put_left:cV, \tl_put_left:cv, \tl_put_left:ce,
+% \tl_put_left:co, \tl_put_left:cx
% }
% \begin{macro}
% {
-% \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:No, \tl_gput_left:Nx,
-% \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:co, \tl_gput_left:cx
+% \tl_gput_left:Nn, \tl_gput_left:NV, \tl_gput_left:Nv, \tl_gput_left:Ne,
+% \tl_gput_left:No, \tl_gput_left:Nx,
+% \tl_gput_left:cn, \tl_gput_left:cV, \tl_gput_left:cv, \tl_gput_left:ce,
+% \tl_gput_left:co, \tl_gput_left:cx
% }
% Adding to the left is done directly to gain a little performance.
% \begin{macrocode}
\cs_new_protected:Npn \tl_put_left:Nn #1#2
{
- \__kernel_tl_set:Nx #1
+ \__kernel_tl_set:Ne #1
{ \__kernel_exp_not:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
}
\cs_new_protected:Npn \tl_put_left:NV #1#2
{
- \__kernel_tl_set:Nx #1
+ \__kernel_tl_set:Ne #1
{ \exp_not:V #2 \__kernel_exp_not:w \exp_after:wN {#1} }
}
\cs_new_protected:Npn \tl_put_left:Nv #1#2
{
- \__kernel_tl_set:Nx #1
+ \__kernel_tl_set:Ne #1
{ \exp_not:v {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
}
+\cs_new_protected:Npn \tl_put_left:Ne #1#2
+ {
+ \__kernel_tl_set:Ne #1
+ {
+ \__kernel_exp_not:w \tex_expanded:D { {#2} }
+ \__kernel_exp_not:w \exp_after:wN {#1}
+ }
+ }
\cs_new_protected:Npn \tl_put_left:No #1#2
{
- \__kernel_tl_set:Nx #1
+ \__kernel_tl_set:Ne #1
{
\__kernel_exp_not:w \exp_after:wN {#2}
\__kernel_exp_not:w \exp_after:wN {#1}
}
}
-\cs_new_protected:Npn \tl_put_left:Nx #1#2
- { \__kernel_tl_set:Nx #1 { #2 \__kernel_exp_not:w \exp_after:wN {#1} } }
\cs_new_protected:Npn \tl_gput_left:Nn #1#2
{
- \__kernel_tl_gset:Nx #1
+ \__kernel_tl_gset:Ne #1
{ \__kernel_exp_not:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
}
\cs_new_protected:Npn \tl_gput_left:NV #1#2
{
- \__kernel_tl_gset:Nx #1
+ \__kernel_tl_gset:Ne #1
{ \exp_not:V #2 \__kernel_exp_not:w \exp_after:wN {#1} }
}
\cs_new_protected:Npn \tl_gput_left:Nv #1#2
{
- \__kernel_tl_gset:Nx #1
+ \__kernel_tl_gset:Ne #1
{ \exp_not:v {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
}
+\cs_new_protected:Npn \tl_gput_left:Ne #1#2
+ {
+ \__kernel_tl_gset:Ne #1
+ {
+ \__kernel_exp_not:w \tex_expanded:D { {#2} }
+ \__kernel_exp_not:w \exp_after:wN {#1}
+ }
+ }
\cs_new_protected:Npn \tl_gput_left:No #1#2
{
- \__kernel_tl_gset:Nx #1
+ \__kernel_tl_gset:Ne #1
{
\__kernel_exp_not:w \exp_after:wN {#2}
\__kernel_exp_not:w \exp_after:wN {#1}
}
}
-\cs_new_protected:Npn \tl_gput_left:Nx #1#2
- { \__kernel_tl_gset:Nx #1 { #2 \__kernel_exp_not:w \exp_after:wN {#1} } }
\cs_generate_variant:Nn \tl_put_left:Nn { c }
\cs_generate_variant:Nn \tl_put_left:NV { c }
\cs_generate_variant:Nn \tl_put_left:Nv { c }
+\cs_generate_variant:Nn \tl_put_left:Ne { c }
\cs_generate_variant:Nn \tl_put_left:No { c }
-\cs_generate_variant:Nn \tl_put_left:Nx { c }
+\cs_generate_variant:Nn \tl_put_left:Nn { Nx, cx }
\cs_generate_variant:Nn \tl_gput_left:Nn { c }
\cs_generate_variant:Nn \tl_gput_left:NV { c }
-\cs_generate_variant:Nn \tl_gput_left:NV { c }
+\cs_generate_variant:Nn \tl_gput_left:Nv { c }
+\cs_generate_variant:Nn \tl_gput_left:Ne { c }
\cs_generate_variant:Nn \tl_gput_left:No { c }
-\cs_generate_variant:Nn \tl_gput_left:Nx { c }
+\cs_generate_variant:Nn \tl_gput_left:Nn { Nx , cx }
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}
% {
-% \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:Nv, \tl_put_right:No, \tl_put_right:Nx,
-% \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:cv, \tl_put_right:co, \tl_put_right:cx
+% \tl_put_right:Nn, \tl_put_right:NV, \tl_put_right:Nv, \tl_put_right:Ne,
+% \tl_put_right:No, \tl_put_right:Nx,
+% \tl_put_right:cn, \tl_put_right:cV, \tl_put_right:cv, \tl_put_right:ce,
+% \tl_put_right:co, \tl_put_right:cx
% }
% \begin{macro}
% {
-% \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv, \tl_gput_right:No,
-% \tl_gput_right:Nx,
-% \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:co,
-% \tl_gput_right:cx
+% \tl_gput_right:Nn, \tl_gput_right:NV, \tl_gput_right:Nv, \tl_gput_right:Ne,
+% \tl_gput_right:No, \tl_gput_right:Nx,
+% \tl_gput_right:cn, \tl_gput_right:cV, \tl_gput_right:cv, \tl_gput_right:ce,
+% \tl_gput_right:co, \tl_gput_right:cx
% }
% The same on the right.
% \begin{macrocode}
\cs_new_protected:Npn \tl_put_right:Nn #1#2
- { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
+ { \__kernel_tl_set:Ne #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
\cs_new_protected:Npn \tl_put_right:NV #1#2
{
- \__kernel_tl_set:Nx #1
+ \__kernel_tl_set:Ne #1
{ \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:V #2 }
}
\cs_new_protected:Npn \tl_put_right:Nv #1#2
{
- \__kernel_tl_set:Nx #1
+ \__kernel_tl_set:Ne #1
{ \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:v {#2} }
}
+\cs_new_protected:Npn \tl_put_right:Ne #1#2
+ {
+ \__kernel_tl_set:Ne #1
+ {
+ \__kernel_exp_not:w \exp_after:wN {#1}
+ \__kernel_exp_not:w \tex_expanded:D { {#2} }
+ }
+ }
\cs_new_protected:Npn \tl_put_right:No #1#2
{
- \__kernel_tl_set:Nx #1
+ \__kernel_tl_set:Ne #1
{
\__kernel_exp_not:w \exp_after:wN {#1}
\__kernel_exp_not:w \exp_after:wN {#2}
}
}
-\cs_new_protected:Npn \tl_put_right:Nx #1#2
- { \__kernel_tl_set:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#1} #2 } }
\cs_new_protected:Npn \tl_gput_right:Nn #1#2
- { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
+ { \__kernel_tl_gset:Ne #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
\cs_new_protected:Npn \tl_gput_right:NV #1#2
{
- \__kernel_tl_gset:Nx #1
+ \__kernel_tl_gset:Ne #1
{ \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:V #2 }
}
\cs_new_protected:Npn \tl_gput_right:Nv #1#2
{
- \__kernel_tl_gset:Nx #1
+ \__kernel_tl_gset:Ne #1
{ \__kernel_exp_not:w \exp_after:wN {#1} \exp_not:v {#2} }
}
+\cs_new_protected:Npn \tl_gput_right:Ne #1#2
+ {
+ \__kernel_tl_gset:Ne #1
+ {
+ \__kernel_exp_not:w \exp_after:wN {#1}
+ \__kernel_exp_not:w \tex_expanded:D { {#2} }
+ }
+ }
\cs_new_protected:Npn \tl_gput_right:No #1#2
{
- \__kernel_tl_gset:Nx #1
+ \__kernel_tl_gset:Ne #1
{
\__kernel_exp_not:w \exp_after:wN {#1}
\__kernel_exp_not:w \exp_after:wN {#2}
}
}
-\cs_new_protected:Npn \tl_gput_right:Nx #1#2
- { \__kernel_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN {#1} #2 } }
\cs_generate_variant:Nn \tl_put_right:Nn { c }
\cs_generate_variant:Nn \tl_put_right:NV { c }
\cs_generate_variant:Nn \tl_put_right:Nv { c }
+\cs_generate_variant:Nn \tl_put_right:Ne { c }
\cs_generate_variant:Nn \tl_put_right:No { c }
-\cs_generate_variant:Nn \tl_put_right:Nx { c }
+\cs_generate_variant:Nn \tl_put_right:Nn { Nx , cx }
\cs_generate_variant:Nn \tl_gput_right:Nn { c }
\cs_generate_variant:Nn \tl_gput_right:NV { c }
\cs_generate_variant:Nn \tl_gput_right:Nv { c }
+\cs_generate_variant:Nn \tl_gput_right:Ne { c }
\cs_generate_variant:Nn \tl_gput_right:No { c }
-\cs_generate_variant:Nn \tl_gput_right:Nx { c }
+\cs_generate_variant:Nn \tl_gput_right:Nn { Nx, cx }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1679,19 +1732,23 @@
% codes: it cannot appear in the tokens being rescanned since all
% colons have the same category code.
% \begin{macrocode}
-\tl_const:Nx \c_@@_rescan_marker_tl { : \token_to_str:N : }
+\tl_const:Ne \c_@@_rescan_marker_tl { : \token_to_str:N : }
% \end{macrocode}
% \end{variable}
%
% \begin{macro}
% {
-% \tl_set_rescan:Nnn, \tl_set_rescan:NnV, \tl_set_rescan:Nno, \tl_set_rescan:Nnx,
-% \tl_set_rescan:cnn, \tl_set_rescan:cnV, \tl_set_rescan:cno, \tl_set_rescan:cnx
+% \tl_set_rescan:Nnn, \tl_set_rescan:NnV, \tl_set_rescan:Nne,
+% \tl_set_rescan:Nno, \tl_set_rescan:Nnx,
+% \tl_set_rescan:cnn, \tl_set_rescan:cnV, \tl_set_rescan:cne,
+% \tl_set_rescan:cno, \tl_set_rescan:cnx,
% }
% \begin{macro}
% {
-% \tl_gset_rescan:Nnn, \tl_gset_rescan:NnV, \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx,
-% \tl_gset_rescan:cnn, \tl_gset_rescan:cnV, \tl_gset_rescan:cno, \tl_gset_rescan:cnx
+% \tl_gset_rescan:Nnn, \tl_gset_rescan:NnV, \tl_gset_rescan:Nne,
+% \tl_gset_rescan:Nno, \tl_gset_rescan:Nnx,
+% \tl_gset_rescan:cnn, \tl_gset_rescan:cnV, \tl_gset_rescan:cne,
+% \tl_gset_rescan:cno, \tl_gset_rescan:cnx
% }
% \begin{macro}{\tl_rescan:nn, \tl_rescan:nV}
% \begin{macro}{\@@_rescan_aux:}
@@ -1790,10 +1847,10 @@
\group_end:
#1 #2 {#3}
}
-\cs_generate_variant:Nn \tl_set_rescan:Nnn { NnV , Nno , Nnx }
-\cs_generate_variant:Nn \tl_set_rescan:Nnn { c , cnV , cno , cnx }
-\cs_generate_variant:Nn \tl_gset_rescan:Nnn { NnV , Nno , Nnx }
-\cs_generate_variant:Nn \tl_gset_rescan:Nnn { c , cnV , cno , cnx }
+\cs_generate_variant:Nn \tl_set_rescan:Nnn { NnV , Nne , c , cnV , cne }
+\cs_generate_variant:Nn \tl_set_rescan:Nnn { Nno , Nnx , cno , cnx }
+\cs_generate_variant:Nn \tl_gset_rescan:Nnn { NnV , Nne , c , cnV , cne }
+\cs_generate_variant:Nn \tl_gset_rescan:Nnn { Nno , Nnx , cno , cnx }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1913,59 +1970,75 @@
%
% \begin{macro}
% {
-% \tl_replace_all:Nnn, \tl_replace_all:NVn, \tl_replace_all:NnV,
-% \tl_replace_all:Nxn, \tl_replace_all:Nnx, \tl_replace_all:Nxx,
-% \tl_replace_all:cnn, \tl_replace_all:cVn, \tl_replace_all:cnV,
-% \tl_replace_all:cxn, \tl_replace_all:cnx, \tl_replace_all:cxx
+% \tl_replace_once:Nnn, \tl_replace_once:NVn, \tl_replace_once:NnV,
+% \tl_replace_once:Nen, \tl_replace_once:Nne, \tl_replace_once:Nee,
+% \tl_replace_once:Nxn, \tl_replace_once:Nnx, \tl_replace_once:Nxx,
+% \tl_replace_once:cnn, \tl_replace_once:cVn, \tl_replace_once:cnV,
+% \tl_replace_once:cen, \tl_replace_once:cne, \tl_replace_once:cee,
+% \tl_replace_once:cxn, \tl_replace_once:cnx, \tl_replace_once:cxx
% }
% \begin{macro}
% {
-% \tl_greplace_all:Nnn, \tl_greplace_all:NVn, \tl_greplace_all:NnV,
-% \tl_greplace_all:Nxn, \tl_greplace_all:Nnx, \tl_greplace_all:Nxx,
-% \tl_greplace_all:cnn, \tl_greplace_all:cVn, \tl_greplace_all:cnV,
-% \tl_greplace_all:cxn, \tl_greplace_all:cnx, \tl_greplace_all:cxx
+% \tl_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_greplace_once:NnV,
+% \tl_greplace_once:Nen, \tl_greplace_once:Nne, \tl_greplace_once:Nee,
+% \tl_greplace_once:Nxn, \tl_greplace_once:Nnx, \tl_greplace_once:Nxx,
+% \tl_greplace_once:cnn, \tl_greplace_once:cVn, \tl_greplace_once:cnV,
+% \tl_greplace_once:cen, \tl_greplace_once:cne, \tl_greplace_once:cee,
+% \tl_greplace_once:cxn, \tl_greplace_once:cnx, \tl_greplace_once:cxx
% }
% \begin{macro}
% {
-% \tl_replace_once:Nnn, \tl_replace_once:NVn, \tl_replace_once:NnV,
-% \tl_replace_once:Nxn, \tl_replace_once:Nnx, \tl_replace_once:Nxx,
-% \tl_replace_once:cnn, \tl_replace_once:cVn, \tl_replace_once:cnV,
-% \tl_replace_once:cxn, \tl_replace_once:cnx, \tl_replace_once:cxx
+% \tl_replace_all:Nnn, \tl_replace_all:NVn, \tl_replace_all:NnV,
+% \tl_replace_all:Nen, \tl_replace_all:Nne, \tl_replace_all:Nee,
+% \tl_replace_all:Nxn, \tl_replace_all:Nnx, \tl_replace_all:Nxx,
+% \tl_replace_all:cnn, \tl_replace_all:cVn, \tl_replace_all:cnV,
+% \tl_replace_all:cen, \tl_replace_all:cne, \tl_replace_all:cee,
+% \tl_replace_all:cxn, \tl_replace_all:cnx, \tl_replace_all:cxx
% }
% \begin{macro}
% {
-% \tl_greplace_once:Nnn, \tl_greplace_once:NVn, \tl_replace_once:NnV,
-% \tl_greplace_once:Nxn, \tl_greplace_once:Nnx, \tl_greplace_once:Nxx,
-% \tl_greplace_once:cnn, \tl_greplace_once:cVn, \tl_replace_once:cnV,
-% \tl_greplace_once:cxn, \tl_greplace_once:cnx, \tl_greplace_once:cxx
+% \tl_greplace_all:Nnn, \tl_greplace_all:NVn, \tl_greplace_all:NnV,
+% \tl_greplace_all:Nen, \tl_greplace_all:Nne, \tl_greplace_all:Nee,
+% \tl_greplace_all:Nxn, \tl_greplace_all:Nnx, \tl_greplace_all:Nxx,
+% \tl_greplace_all:cnn, \tl_greplace_all:cVn, \tl_greplace_all:cnV,
+% \tl_greplace_all:cen, \tl_greplace_all:cne, \tl_greplace_all:cee,
+% \tl_greplace_all:cxn, \tl_greplace_all:cnx, \tl_greplace_all:cxx
% }
% All of the \texttt{replace} functions call \cs{@@_replace:NnNNNnn}
% with appropriate arguments. The first two arguments are explained
% later. The next controls whether the replacement function calls
% itself (\cs{@@_replace_next:w}) or stops (\cs{@@_replace_wrap:w})
-% after the first replacement. Next comes an \texttt{x}-type
-% assignment function \cs{tl_set:Nx} or \cs{tl_gset:Nx} for local or
+% after the first replacement. Next comes an \texttt{e}-type
+% assignment function \cs{tl_set:Ne} or \cs{tl_gset:Ne} for local or
% global replacements. Finally, the three arguments \meta{tl~var}
% \Arg{pattern} \Arg{replacement} provided by the user. When
% describing the auxiliary functions below, we denote the contents of
% the \meta{tl~var} by \meta{token list}.
% \begin{macrocode}
\cs_new_protected:Npn \tl_replace_once:Nnn
- { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_wrap:w \__kernel_tl_set:Nx }
+ { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_wrap:w \__kernel_tl_set:Ne }
\cs_new_protected:Npn \tl_greplace_once:Nnn
- { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_wrap:w \__kernel_tl_gset:Nx }
+ { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_wrap:w \__kernel_tl_gset:Ne }
\cs_new_protected:Npn \tl_replace_all:Nnn
- { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_set:Nx }
+ { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_set:Ne }
\cs_new_protected:Npn \tl_greplace_all:Nnn
- { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_gset:Nx }
+ { \@@_replace:NnNNNnn \q_@@_mark ? \@@_replace_next:w \__kernel_tl_gset:Ne }
+\cs_generate_variant:Nn \tl_replace_once:Nnn
+ { NnV , Nne , NV , Ne , Nee , c , cnV , cne , cV , ce , cee }
\cs_generate_variant:Nn \tl_replace_once:Nnn
- { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+ { Nx , Nnx , Nxx , cxn , cnx , cxx }
\cs_generate_variant:Nn \tl_greplace_once:Nnn
- { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+ { NnV , Nne , NV , Ne , Nee , c , cnV , cne , cV , ce , cee }
+\cs_generate_variant:Nn \tl_greplace_once:Nnn
+ { Nx , Nnx , Nxx , cxn , cnx , cxx }
+\cs_generate_variant:Nn \tl_replace_all:Nnn
+ { NnV , Nne , NV , Ne , Nee , c , cnV , cne , cV , ce , cee }
\cs_generate_variant:Nn \tl_replace_all:Nnn
- { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+ { Nx , Nnx , Nxx , cxn , cnx , cxx }
\cs_generate_variant:Nn \tl_greplace_all:Nnn
- { NV , NnV , Nx , Nnx , Nxx , c , cV , cnV , cx , cnx , cxx }
+ { NnV , Nne , NV , Ne , Nee , c , cnV , cne , cV , ce , cee }
+\cs_generate_variant:Nn \tl_greplace_all:Nnn
+ { Nx , Nnx , Nxx , cxn , cnx , cxx }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2046,7 +2119,7 @@
{
\tl_if_empty:nTF {#6}
{
- \msg_error:nnx { kernel } { empty-search-pattern }
+ \msg_error:nne { kernel } { empty-search-pattern }
{ \tl_to_str:n {#7} }
}
{
@@ -2124,7 +2197,7 @@
\group_align_safe_begin:
\cs_set:Npn \@@_replace_wrap:w ##1 #1 ##2
{ \__kernel_exp_not:w \exp_after:wN { \use_none:nn ##1 } ##2 }
- \cs_set:Npx \@@_replace_next:w ##1 #5
+ \cs_set:Npe \@@_replace_next:w ##1 #5
{
\exp_not:N \@@_replace_wrap:w ##1
\exp_not:n { #1 }
@@ -2152,13 +2225,13 @@
%
% \begin{macro}
% {
-% \tl_remove_once:Nn, \tl_remove_once:NV, \tl_remove_once:Nx,
-% \tl_remove_once:cn, \tl_remove_once:cV, \tl_remove_once:cx
+% \tl_remove_once:Nn, \tl_remove_once:NV, \tl_remove_once:Ne,
+% \tl_remove_once:cn, \tl_remove_once:cV, \tl_remove_once:ce
% }
% \begin{macro}
% {
-% \tl_gremove_once:Nn, \tl_gremove_once:NV, \tl_gremove_once:Nx,
-% \tl_gremove_once:cn, \tl_gremove_once:cV, \tl_gremove_once:cx
+% \tl_gremove_once:Nn, \tl_gremove_once:NV,
+% \tl_gremove_once:cn, \tl_gremove_once:cV,
% }
% Removal is just a special case of replacement.
% \begin{macrocode}
@@ -2166,21 +2239,25 @@
{ \tl_replace_once:Nnn #1 {#2} { } }
\cs_new_protected:Npn \tl_gremove_once:Nn #1#2
{ \tl_greplace_once:Nnn #1 {#2} { } }
-\cs_generate_variant:Nn \tl_remove_once:Nn { NV , Nx , c , cV , cx }
-\cs_generate_variant:Nn \tl_gremove_once:Nn { NV , Nx , c , cV , cx }
+\cs_generate_variant:Nn \tl_remove_once:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \tl_gremove_once:Nn { NV , Ne , c , cV , ce }
% \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}
% {
-% \tl_remove_all:Nn, \tl_remove_all:NV, \tl_remove_all:Nx,
-% \tl_remove_all:cn, \tl_remove_all:cV, \tl_remove_all:cx
+% \tl_remove_all:Nn, \tl_remove_all:NV, \tl_remove_all:Ne,
+% \tl_remove_all:Nx,
+% \tl_remove_all:cn, \tl_remove_all:cV, \tl_remove_all:ce,
+% \tl_remove_all:cx,
% }
% \begin{macro}
% {
-% \tl_gremove_all:Nn, \tl_gremove_all:NV, \tl_gremove_all:Nx,
-% \tl_gremove_all:cn, \tl_gremove_all:cV, \tl_gremove_all:cx
+% \tl_gremove_all:Nn, \tl_gremove_all:NV, \tl_gremove_all:Ne,
+% \tl_gremove_all:Nx,
+% \tl_gremove_all:cn, \tl_gremove_all:cV, \tl_gremove_all:ce,
+% \tl_gremove_all:cx,
% }
% Removal is just a special case of replacement.
% \begin{macrocode}
@@ -2188,8 +2265,10 @@
{ \tl_replace_all:Nnn #1 {#2} { } }
\cs_new_protected:Npn \tl_gremove_all:Nn #1#2
{ \tl_greplace_all:Nnn #1 {#2} { } }
-\cs_generate_variant:Nn \tl_remove_all:Nn { NV , Nx , c , cV , cx }
-\cs_generate_variant:Nn \tl_gremove_all:Nn { NV , Nx , c , cV , cx }
+\cs_generate_variant:Nn \tl_remove_all:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \tl_remove_all:Nn { Nx , cx }
+\cs_generate_variant:Nn \tl_gremove_all:Nn { NV , Ne , c , cV , ce }
+\cs_generate_variant:Nn \tl_gremove_all:Nn { Nx , cx }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2328,7 +2407,12 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[TF]{\tl_if_eq:nn, \tl_if_eq:Vn, \tl_if_eq:nV, \tl_if_eq:xn, \tl_if_eq:nx}
+% \begin{macro}[TF]
+% {
+% \tl_if_eq:nn, \tl_if_eq:nV, \tl_if_eq:ne, \tl_if_eq:Vn, \tl_if_eq:en,
+% \tl_if_eq:ee,
+% \tl_if_eq:xn, \tl_if_eq:nx, \tl_if_eq:xx,
+% }
% A simple store and compare routine.
% \begin{macrocode}
\prg_new_protected_conditional:Npnn \tl_if_eq:nn #1#2 { T , F , TF }
@@ -2344,7 +2428,9 @@
\prg_return_false:
\fi:
}
-\prg_generate_conditional_variant:Nnn \tl_if_eq:nn { V , nV , x , nx } { TF , T , F }
+\prg_generate_conditional_variant:Nnn \tl_if_eq:nn
+ { nV , ne , nx , e , ee , x , xx }
+ { TF , T , F }
% \end{macrocode}
% \end{macro}
%
@@ -2423,13 +2509,14 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}[EXP,pTF]{\tl_if_single:N}
+% \begin{macro}[EXP,pTF]{\tl_if_single:N, \tl_if_single:c}
% Expand the token list and feed it to \cs{tl_if_single:nTF}.
% \begin{macrocode}
\cs_new:Npn \tl_if_single_p:N { \exp_args:No \tl_if_single_p:n }
\cs_new:Npn \tl_if_single:NT { \exp_args:No \tl_if_single:nT }
\cs_new:Npn \tl_if_single:NF { \exp_args:No \tl_if_single:nF }
\cs_new:Npn \tl_if_single:NTF { \exp_args:No \tl_if_single:nTF }
+\prg_generate_conditional_variant:Nnn \tl_if_single:N {c} { p , T , F , TF }
% \end{macrocode}
% \end{macro}
%
@@ -2751,7 +2838,12 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\tl_trim_spaces:n, \tl_trim_spaces:o}
+% \begin{macro}
+% {
+% \tl_trim_spaces:n, \tl_trim_spaces:V, \tl_trim_spaces:v,
+% \tl_trim_spaces:e,
+% \tl_trim_spaces:o,
+% }
% \begin{macro}{\tl_trim_spaces_apply:nN, \tl_trim_spaces_apply:oN}
% \begin{macro}
% {
@@ -2774,14 +2866,14 @@
{ \@@_trim_mark: #1 }
{ \__kernel_exp_not:w \exp_after:wN }
}
-\cs_generate_variant:Nn \tl_trim_spaces:n { o }
+\cs_generate_variant:Nn \tl_trim_spaces:n { V , v , e , o }
\cs_new:Npn \tl_trim_spaces_apply:nN #1#2
{ \@@_trim_spaces:nn { \@@_trim_mark: #1 } { \exp_args:No #2 } }
\cs_generate_variant:Nn \tl_trim_spaces_apply:nN { o }
\cs_new_protected:Npn \tl_trim_spaces:N #1
- { \__kernel_tl_set:Nx #1 { \exp_args:No \tl_trim_spaces:n {#1} } }
+ { \__kernel_tl_set:Ne #1 { \exp_args:No \tl_trim_spaces:n {#1} } }
\cs_new_protected:Npn \tl_gtrim_spaces:N #1
- { \__kernel_tl_gset:Nx #1 { \exp_args:No \tl_trim_spaces:n {#1} } }
+ { \__kernel_tl_gset:Ne #1 { \exp_args:No \tl_trim_spaces:n {#1} } }
\cs_generate_variant:Nn \tl_trim_spaces:N { c }
\cs_generate_variant:Nn \tl_gtrim_spaces:N { c }
% \end{macrocode}
@@ -3237,7 +3329,7 @@
% or with a space, making sure that
% \cs{@@_act_space:wwNNN} gobbles the space.
% \begin{macrocode}
-\exp_args:Nnx \use:n { \cs_new:Npn \@@_act_loop:w #1 \s_@@_act_stop }
+\exp_args:Nne \use:n { \cs_new:Npn \@@_act_loop:w #1 \s_@@_act_stop }
{
\exp_not:o { \@@_act_if_head_is_space:nTF {#1} }
\exp_not:N \@@_act_space:wwNNN
@@ -3346,9 +3438,9 @@
% which stops the \texttt{f}-expansion.
% \begin{macrocode}
\cs_new_protected:Npn \tl_reverse:N #1
- { \__kernel_tl_set:Nx #1 { \exp_args:No \tl_reverse:n { #1 } } }
+ { \__kernel_tl_set:Ne #1 { \exp_args:No \tl_reverse:n { #1 } } }
\cs_new_protected:Npn \tl_greverse:N #1
- { \__kernel_tl_gset:Nx #1 { \exp_args:No \tl_reverse:n { #1 } } }
+ { \__kernel_tl_gset:Ne #1 { \exp_args:No \tl_reverse:n { #1 } } }
\cs_generate_variant:Nn \tl_reverse:N { c }
\cs_generate_variant:Nn \tl_greverse:N { c }
% \end{macrocode}
@@ -3563,7 +3655,7 @@
{ \token_to_str:N #2 = \__kernel_exp_not:w \exp_after:wN {#2} }
}
{
- \msg_error:nnxxx { kernel } { bad-type }
+ \msg_error:nneee { kernel } { bad-type }
{ \token_to_str:N #2 } { \token_to_meaning:N #2 } { tl }
}
}
@@ -3571,7 +3663,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\tl_show:n, \tl_show:x, \@@_show:n}
+% \begin{macro}{\tl_show:n, \tl_show:e, \tl_show:x, \@@_show:n}
% \begin{macro}[EXP]{\@@_show:w}
% Many |show| functions are based on \cs{tl_show:n}.
% The argument of \cs{tl_show:n} is line-wrapped using
@@ -3591,7 +3683,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \tl_show:n #1
{ \iow_wrap:nnnN { >~ \tl_to_str:n {#1} . } { } { } \@@_show:n }
-\cs_generate_variant:Nn \tl_show:n { x }
+\cs_generate_variant:Nn \tl_show:n { e , x }
\cs_new_protected:Npn \@@_show:n #1
{
\tl_set:Nf \l_@@_internal_a_tl { \@@_show:w #1 \s_@@_stop }
@@ -3609,13 +3701,13 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\tl_log:n, \tl_log:x}
+% \begin{macro}{\tl_log:n, \tl_log:e, \tl_log:x}
% Logging is much easier, simply line-wrap. The |>~| and trailing
% period is there to match the output of \cs{tl_show:n}.
% \begin{macrocode}
\cs_new_protected:Npn \tl_log:n #1
{ \iow_wrap:nnnN { > ~ \tl_to_str:n {#1} . } { } { } \iow_log:n }
-\cs_generate_variant:Nn \tl_log:n { x }
+\cs_generate_variant:Nn \tl_log:n { e , x }
% \end{macrocode}
% \end{macro}
%
@@ -3635,17 +3727,17 @@
\exp_args:Nf \tl_if_empty:nTF
{ \cs_prefix_spec:N #1 \cs_parameter_spec:N #1 }
{
- \tl_set:Nx \l_@@_internal_a_tl {#3}
+ \tl_set:Ne \l_@@_internal_a_tl {#3}
\tl_if_eq:NNTF #1 \l_@@_internal_a_tl
{#4}
{
- \msg_error:nnxxxx { kernel } { bad-type }
+ \msg_error:nneeee { kernel } { bad-type }
{ \token_to_str:N #1 } { \tl_to_str:N #1 }
{#2} { \tl_to_str:N \l_@@_internal_a_tl }
}
}
{
- \msg_error:nnxxx { kernel } { bad-type }
+ \msg_error:nneee { kernel } { bad-type }
{ \token_to_str:N #1 } { \token_to_meaning:N #1 } {#2}
}
}
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
index ce274f9583d..aedde780987 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -1490,7 +1490,7 @@
\char_set_lccode:nn { `\^^@ } { ##1 }
\tex_lowercase:D { \group_end: #2 ^^@ }
}
- \cs_new_protected:cpx { #1 :NN } ##1
+ \cs_new_protected:cpe { #1 :NN } ##1
{ \exp_not:c { #1 : nN } { `##1 } }
}
\@@_tmp:nN { char_set_active_eq } \cs_set_eq:NN
@@ -1614,7 +1614,7 @@
\char_set_catcode_math_superscript:n { 0 }
\tl_put_right:Nn \l_@@_tmp_tl { ^^@ \exp_not:N \or: }
\char_set_catcode_parameter:n { 0 }
- \tl_put_right:Nn \l_@@_tmp_tl { ^^@^^@ \exp_not:N \or: }
+ \tl_put_right:Nn \l_@@_tmp_tl { ^^@ \exp_not:N \or: }
\tl_put_right:Nn \l_@@_tmp_tl { { \if_false: } \fi: \exp_not:N \or: }
\char_set_catcode_alignment:n { 0 }
\tl_put_right:Nn \l_@@_tmp_tl { ^^@ \exp_not:N \or: }
@@ -1627,16 +1627,16 @@
% \end{macrocode}
% Convert the above temporary list into a series of constant token
% lists, one for each character code, using \cs{tex_lowercase:D} to
-% convert |^^@| in each case. The \texttt{x}-type expansion ensures
+% convert |^^@| in each case. The \texttt{e}-type expansion ensures
% that \cs{tex_lowercase:D} receives the contents of the token list.
% \begin{macrocode}
\cs_set_protected:Npn \@@_tmp:n #1
{
\char_set_lccode:nn { 0 } {#1}
\char_set_lccode:nn { 32 } {#1}
- \exp_args:Nx \tex_lowercase:D
+ \exp_args:Ne \tex_lowercase:D
{
- \tl_const:Nx
+ \tl_const:Ne
\exp_not:c { c_@@_ \@@_int_to_roman:w #1 _tl }
{ \exp_not:o \l_@@_tmp_tl }
}
@@ -1848,7 +1848,7 @@
% \begin{macro}{\c_catcode_other_space_tl}
% Create a space with category code $12$: an \enquote{other} space.
% \begin{macrocode}
-\tl_const:Nx \c_catcode_other_space_tl { \char_generate:nn { `\ } { 12 } }
+\tl_const:Ne \c_catcode_other_space_tl { \char_generate:nn { `\ } { 12 } }
% \end{macrocode}
% \end{macro}
%
@@ -2127,17 +2127,17 @@
% detokenized.
%
% \begin{macrocode}
-\use:x
+\use:e
{
- \prg_new_conditional:Npnn \exp_not:N \token_if_macro:N ##1
+ \prg_new_conditional:Npnn \exp_not:N \token_if_macro:N #1
{ p , T , F , TF }
{
\exp_not:N \exp_after:wN \exp_not:N \@@_if_macro_p:w
- \exp_not:N \token_to_meaning:N ##1 \tl_to_str:n { ma : }
+ \exp_not:N \token_to_meaning:N #1 \tl_to_str:n { ma : }
\s_@@_stop
}
\cs_new:Npn \exp_not:N \@@_if_macro_p:w
- ##1 \tl_to_str:n { ma } ##2 \c_colon_str ##3 \s_@@_stop
+ #1 \tl_to_str:n { ma } #2 \c_colon_str #3 \s_@@_stop
}
{
\str_if_eq:nnTF { #2 } { cro }
@@ -2208,11 +2208,11 @@
\group_begin:
\cs_set_protected:Npn \@@_tmp:w #1
{
- \use:x
+ \use:e
{
\cs_new:Npn \exp_not:c { @@_delimit_by_ #1 :w }
- ####1 \tl_to_str:n {#1} ####2 \s_@@_stop
- { ####1 \tl_to_str:n {#1} }
+ ##1 \tl_to_str:n {#1} ##2 \s_@@_stop
+ { ##1 \tl_to_str:n {#1} }
}
}
\@@_tmp:w { char" }
@@ -2283,17 +2283,17 @@
\group_begin:
\cs_set_protected:Npn \@@_tmp:w #1#2#3
{
- \use:x
+ \use:e
{
- \prg_new_conditional:Npnn \exp_not:c { token_if_ #1 :N } ####1
+ \prg_new_conditional:Npnn \exp_not:c { token_if_ #1 :N } ##1
{ p , T , F , TF }
{
\cs_if_exist:cT { tex_ #2 :D }
{
- \exp_not:N \if_meaning:w ####1 \exp_not:c { tex_ #2 :D }
+ \exp_not:N \if_meaning:w ##1 \exp_not:c { tex_ #2 :D }
\exp_not:N \prg_return_false:
\exp_not:N \else:
- \exp_not:N \if_meaning:w ####1 \exp_not:c { tex_ #2 def:D }
+ \exp_not:N \if_meaning:w ##1 \exp_not:c { tex_ #2 def:D }
\exp_not:N \prg_return_false:
\exp_not:N \else:
}
@@ -2301,7 +2301,7 @@
{
\exp_not:N \exp_after:wN
\exp_not:c { @@_delimit_by_ #2 :w }
- \exp_not:N \token_to_meaning:N ####1
+ \exp_not:N \token_to_meaning:N ##1
? \tl_to_str:n {#2} \s_@@_stop
}
{ \exp_not:n {#3} }
@@ -2464,26 +2464,26 @@ end
}
{
\tex_chardef:D \c_@@_A_int = `A ~ %
- \use:x
+ \use:e
{
- \prg_new_conditional:Npnn \exp_not:N \token_if_primitive:N ##1
+ \prg_new_conditional:Npnn \exp_not:N \token_if_primitive:N #1
{ p , T , F , TF }
{
- \exp_not:N \token_if_macro:NTF ##1
+ \exp_not:N \token_if_macro:NTF #1
\exp_not:N \prg_return_false:
{
\exp_not:N \exp_after:wN \exp_not:N \@@_if_primitive:NNw
- \exp_not:N \token_to_meaning:N ##1
- \tl_to_str:n { : : : } \s_@@_stop ##1
+ \exp_not:N \token_to_meaning:N #1
+ \tl_to_str:n { : : : } \s_@@_stop #1
}
}
\cs_new:Npn \exp_not:N \@@_if_primitive:NNw
- ##1##2 ##3 \c_colon_str ##4 \s_@@_stop
+ #1#2 #3 \c_colon_str #4 \s_@@_stop
{
\exp_not:N \tl_if_empty:oTF
- { \exp_not:N \@@_if_primitive_space:w ##3 ~ }
+ { \exp_not:N \@@_if_primitive_space:w #3 ~ }
{
- \exp_not:N \@@_if_primitive_loop:N ##3
+ \exp_not:N \@@_if_primitive_loop:N #3
\c_colon_str \s_@@_stop
}
{ \exp_not:N \@@_if_primitive_nullfont:N }
@@ -2694,7 +2694,7 @@ end
% \begin{macrocode}
\cs_new_protected:Npn \peek_remove_spaces:n #1
{
- \cs_set:Npx \@@_false:w { \exp_not:n {#1} }
+ \cs_set:Npe \@@_false:w { \exp_not:n {#1} }
\group_align_safe_begin:
\cs_set:Npn \@@_true_aux:w { \peek_after:Nw \@@_remove_spaces: }
\@@_true_aux:w
@@ -2723,7 +2723,7 @@ end
\cs_new_protected:Npn \peek_remove_filler:n #1
{
\cs_set:Npn \@@_true_aux:w { \@@_remove_filler:w }
- \cs_set:Npx \@@_false:w
+ \cs_set:Npe \@@_false:w
{
\exp_not:N \group_align_safe_end:
\exp_not:n {#1}
@@ -2786,13 +2786,13 @@ end
\group_align_safe_begin:
\cs_set_eq:NN \l_@@_search_token #3
\tl_set:Nn \l_@@_search_tl {#3}
- \cs_set:Npx \@@_true_aux:w
+ \cs_set:Npe \@@_true_aux:w
{
\exp_not:N \group_align_safe_end:
\exp_not:n {#4}
}
\cs_set_eq:NN \@@_true:w #1
- \cs_set:Npx \@@_false:w
+ \cs_set:Npe \@@_false:w
{
\exp_not:N \group_align_safe_end:
\exp_not:n {#5}
@@ -2928,7 +2928,7 @@ end
{
\tl_map_inline:nn { { TF } { T } { F } }
{
- \cs_new_protected:cpx { peek_ #1 ##1 :N ####1 }
+ \cs_new_protected:cpe { peek_ #1 ##1 :N ####1 }
{
\exp_not:c { @@_token ##1 _generic:NN ####1 }
\exp_not:c { @@_execute_branches_ #1 : }
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
index f79fc63e5a3..2161e0963ef 100644
--- a/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
+++ b/Master/texmf-dist/source/latex/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -549,7 +549,7 @@
}
\cs_set_protected:Npn \@@_data_auxii:w #1 ; #2 ~ #3 \q_stop
{
- \tl_const:cx
+ \tl_const:ce
{ c_@@_nfd_ \codepoint_str_generate:n {"#1} _tl }
{
{"#2}
@@ -607,11 +607,11 @@
\@@_add:nn { lowercase } {#5}
\int_compare:nNnF {#4} = { \@@_data_offset:nn {#1} {#6} }
{
- \tl_const:cx
+ \tl_const:ce
{ c_@@_titlecase_ \codepoint_str_generate:n {"#1} _tl }
{ {"#6} { } { } }
}
- \tl_set:Nx \l_@@_next_codepoint_fint_tl
+ \tl_set:Ne \l_@@_next_codepoint_fint_tl
{ \int_eval:n { "#1 + 1 } }
}
\cs_set_protected:Npn \@@_add:nn #1#2
@@ -626,7 +626,7 @@
% The general category for unassigned characters is \texttt{Cn}, so we
% find the correct value once and then use that.
% \begin{macrocode}
- \cs_set_protected:Npx \@@_data_auxv:nnnnw #1#2#3#4#5 Last> #6 \q_stop
+ \cs_set_protected:Npe \@@_data_auxv:nnnnw #1#2#3#4#5 Last> #6 \q_stop
{
\exp_not:N \tl_if_blank:nTF {#6}
{
@@ -679,7 +679,7 @@
\int_compare:nNnF
{ \int_div_truncate:nn { #2 - #1 } \c_@@_block_size_int } = 0
{
- \tl_set:cx { l_@@_ #3 _block_clist }
+ \tl_set:ce { l_@@_ #3 _block_clist }
{
\exp_args:NNe \use:nn \use_none:n
{ \prg_replicate:nn { \c_@@_block_size_int } { , #4 } }
@@ -689,7 +689,7 @@
}
\prg_replicate:nn
{ \int_mod:nn { #2 - #1 } \c_@@_block_size_int }
- { \clist_put_right:cx { l_@@_ #3 _block_clist } {#4} }
+ { \clist_put_right:ce { l_@@_ #3 _block_clist } {#4} }
}
% \end{macrocode}
% To allow rapid comparison, each completed block is stored locally as a
@@ -716,12 +716,12 @@
\tl_use:c { l_@@_ #1 _block_tl } _clist
}
{ l_@@_ #1 _block_clist }
- \tl_set:cx { l_@@_ #1 _block_tl }
+ \tl_set:ce { l_@@_ #1 _block_tl }
{ \int_eval:n { \tl_use:c { l_@@_ #1 _block_tl } + 1 } }
}
\prg_replicate:nn {#2}
{
- \tl_set:cx { l_@@_ #1 _pos_tl }
+ \tl_set:ce { l_@@_ #1 _pos_tl }
{ \int_eval:n { \tl_use:c { l_@@_ #1 _pos_tl } + 1 } }
\exp_args:Nc \__kernel_intarray_gset:Nnn
{ g_@@_ #1 _index_intarray }
@@ -846,7 +846,7 @@
\reverse_if:N \if_int_compare:w
\int_eval:n { \__kernel_codepoint_data:nn { lowercase } {"#1} + "#1 }
= "#3 ~
- \tl_const:cx
+ \tl_const:ce
{ c_@@_casefold_ \codepoint_str_generate:n {"#1} _tl }
{ {"#3} { } { } }
\fi:
@@ -862,7 +862,7 @@
% \begin{macrocode}
\cs_set_protected:Npn \@@_data_auxii:w #1 ~ #2 ~ #3 ~ #4 \q_stop
{
- \tl_const:cx { c_@@_casefold_ \codepoint_str_generate:n {"#1} _tl }
+ \tl_const:ce { c_@@_casefold_ \codepoint_str_generate:n {"#1} _tl }
{
{"#2}
{"#3}
@@ -895,7 +895,7 @@
{
\tl_if_empty:nF {#4}
{
- \tl_const:cx { c_@@_ #2 case_ \codepoint_str_generate:n {"#1} _tl }
+ \tl_const:ce { c_@@_ #2 case_ \codepoint_str_generate:n {"#1} _tl }
{
{"#3}
{"#4}
@@ -994,7 +994,7 @@
{
\str_if_empty:NF \l_@@_tmpb_str
{
- \clist_const:cx { c_@@_grapheme_ \l_@@_tmpb_str _clist }
+ \clist_const:ce { c_@@_grapheme_ \l_@@_tmpb_str _clist }
{ \exp_after:wN \use_none:n \l_@@_tmpa_str }
\cs_set_nopar:Npn \l_@@_tmpa_str { }
}
@@ -1004,7 +1004,7 @@
}
\cs_set_protected:Npn \@@_data_auxii:w #1 .. #2 .. #3 \q_stop
{
- \cs_set_nopar:Npx \l_@@_tmpa_str
+ \cs_set_nopar:Npe \l_@@_tmpa_str
{
\l_@@_tmpa_str ,
\tl_trim_spaces:n {#1} .. \tl_trim_spaces:n {#2}
diff --git a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
index 13fd652eaa2..376cb136acb 100644
--- a/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/l3keys2e/l3keys2e.dtx
@@ -62,7 +62,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -154,7 +154,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3keys2e}{2023-08-29}{}
+\ProvidesExplPackage{l3keys2e}{2023-10-10}{}
{LaTeX2e option processing using LaTeX3 keys}
% \end{macrocode}
%
@@ -206,7 +206,7 @@
{
unknown .code:n =
{
- \msg_error:nnxx { keyvalue } { option-unknown }
+ \msg_error:nnee { keyvalue } { option-unknown }
{ \l_keys_key_str } { \@currname }
}
}
@@ -264,7 +264,7 @@
{
\clist_map_inline:cn { opt@ \@currname . \@currext }
{
- \keys_if_exist:nxTF {#1} { \@@_latexe_remove_equals:n {##1} }
+ \keys_if_exist:neTF {#1} { \@@_latexe_remove_equals:n {##1} }
{ \clist_put_right:Nn \l_@@_latexe_options_clist {##1} }
{ \clist_put_right:Nn \@unusedoptionlist {##1} }
}
@@ -284,7 +284,7 @@
{
\clist_map_inline:Nn \@classoptionslist
{
- \keys_if_exist:nxT {#1} { \@@_latexe_remove_equals:n {##1} }
+ \keys_if_exist:neT {#1} { \@@_latexe_remove_equals:n {##1} }
{
\clist_put_right:Nn \l_@@_latexe_options_clist {##1}
\clist_remove_all:Nn \@unusedoptionlist {##1}
diff --git a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
index 44fccd9271f..2c3a5bf7329 100644
--- a/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xfp/xfp.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -171,7 +171,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfp}{2023-08-29}{}
+\ProvidesExplPackage{xfp}{2023-10-10}{}
{L3 Floating point unit}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx
index 70981e871a7..6bce5f93ee9 100644
--- a/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xfrac/xfrac.dtx
@@ -65,7 +65,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -535,7 +535,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfrac}{2023-08-29}{}
+\ProvidesExplPackage{xfrac}{2023-10-10}{}
{L3 Experimental split-level fractions}
% \end{macrocode}
%
@@ -784,11 +784,11 @@
\mode_if_math:TF
{
\cs_set_eq:NN \@@_text_or_math:n \text
- \cs_set:Npx \@@_denominator_font_change:
+ \cs_set:Npe \@@_denominator_font_change:
{ \tex_fam:D \l_@@_denominator_font_tl }
- \cs_set:Npx \@@_numerator_font_change:
+ \cs_set:Npe \@@_numerator_font_change:
{ \tex_fam:D \l_@@_numerator_font_tl }
- \cs_set:Npx \@@_slash_symbol_font_change:
+ \cs_set:Npe \@@_slash_symbol_font_change:
{ \tex_fam:D \l_@@_slash_symbol_font_tl }
}
{
diff --git a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
index 72a31e68718..ba98987d7fe 100644
--- a/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xparse/xparse.dtx
@@ -67,7 +67,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -1064,7 +1064,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xparse}{2023-08-29}{}
+\ProvidesExplPackage{xparse}{2023-10-10}{}
{L3 Experimental document command parser}
% \end{macrocode}
%
@@ -1091,7 +1091,7 @@
{ \msg_redirect_module:nnn {#1} { info } { none } }
\cs_new_protected:Npn \@@_unknown_argument_type_error:n ##1
{
- \msg_error:nnxx {#1} { unknown-argument-type }
+ \msg_error:nnee {#1} { unknown-argument-type }
{ \@@_environment_or_command: } { \tl_to_str:n {##1} }
}
}
@@ -1126,7 +1126,7 @@
% These argument types are aliases of more general ones, for example
% with the default argument |-NoValue-|.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_normalize_type_g:w
+\cs_new_protected:Npe \@@_normalize_type_g:w
{ \exp_not:N \@@_normalize_type_G:w { \exp_not:V \c_novalue_tl } }
% \end{macrocode}
% \end{macro}
@@ -1399,7 +1399,7 @@
\cs_gset_protected:Npn \@@_get_arg_spec_error:n #1
{
\bool_set_true:N \l_@@_environment_bool
- \str_set:Nx \l_@@_environment_str {#1}
+ \str_set:Ne \l_@@_environment_str {#1}
\@@_get_arg_spec_error_aux:n
{ \cs_if_exist:cTF { \l_@@_environment_str } }
}
@@ -1407,11 +1407,11 @@
{
#1
{
- \msg_error:nnx { cmd } { non-xparse }
+ \msg_error:nne { cmd } { non-xparse }
{ \@@_environment_or_command: }
}
{
- \msg_error:nnx { cmd } { unknown }
+ \msg_error:nne { cmd } { unknown }
{ \@@_environment_or_command: }
}
}
@@ -1427,7 +1427,7 @@
{
\__kernel_cmd_if_xparse:NTF #1
{
- \tl_set:Nx \ArgumentSpecification { \tl_item:Nn #1 { 2 } }
+ \tl_set:Ne \ArgumentSpecification { \tl_item:Nn #1 { 2 } }
#2
}
{#3}
diff --git a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
index 8386be5d984..5080d94b0fd 100644
--- a/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
+++ b/Master/texmf-dist/source/latex/l3packages/xtemplate/xtemplate.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2023-08-29}
+% \date{Released 2023-10-10}
%
% \maketitle
%
@@ -711,15 +711,10 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xtemplate}{2023-08-29}{}
+\ProvidesExplPackage{xtemplate}{2023-10-10}{}
{L3 Experimental prototype document functions}
% \end{macrocode}
%
-% \begin{macrocode}
-\cs_generate_variant:Nn \keys_define:nn { nx }
-\cs_generate_variant:Nn \tl_trim_spaces:n { e }
-% \end{macrocode}
-%
% \subsection{Variables and constants}
%
% \begin{variable}{\c_@@_code_root_tl}
@@ -943,7 +938,7 @@
\int_compare:nNnTF {#2} = \l_@@_tmp_tl
{#3}
{
- \msg_error:nnxxx { xtemplate }
+ \msg_error:nneee { xtemplate }
{ argument-number-mismatch } {#1} { \l_@@_tmp_tl } {#2}
}
}
@@ -959,7 +954,7 @@
\cs_if_exist:cTF { \c_@@_code_root_tl #1 / #2 }
{#3}
{
- \msg_error:nnxx { xtemplate } { no-template-code }
+ \msg_error:nnee { xtemplate } { no-template-code }
{#1} {#2}
}
}
@@ -976,7 +971,7 @@
{
\cs_if_exist:cTF { @@_store_value_ #1 :n }
{#2}
- { \msg_error:nnx { xtemplate } { unknown-keytype } {#1} }
+ { \msg_error:nne { xtemplate } { unknown-keytype } {#1} }
}
\cs_generate_variant:Nn \@@_execute_if_keytype_exist:nT { o }
% \end{macrocode}
@@ -990,7 +985,7 @@
{
\prop_if_in:NnTF \g_@@_object_type_prop {#1}
{#2}
- { \msg_error:nnx { xtemplate } { unknown-object-type } {#1} }
+ { \msg_error:nne { xtemplate } { unknown-object-type } {#1} }
}
% \end{macrocode}
% \end{macro}
@@ -1005,7 +1000,7 @@
\cs_if_exist:cTF { \c_@@_keytypes_root_tl #1 / #2 }
{#3}
{
- \msg_error:nnxx { xtemplate } { unknown-template }
+ \msg_error:nnee { xtemplate } { unknown-template }
{#1} {#2}
}
}
@@ -1191,13 +1186,13 @@
\int_set:Nn \l_@@_tmp_int {#2}
\int_compare:nTF { 0 <= \l_@@_tmp_int <= 9 }
{
- \msg_info:nnxx { xtemplate } { declare-object-type }
- {#1} { \exp_not:V \l_@@_tmp_int }
+ \msg_info:nnnV { xtemplate } { declare-object-type }
+ {#1} \l_@@_tmp_int
\prop_gput:NnV \g_@@_object_type_prop {#1}
\l_@@_tmp_int
}
{
- \msg_error:nnxx { xtemplate } { bad-number-of-arguments }
+ \msg_error:nnee { xtemplate } { bad-number-of-arguments }
{#1} { \exp_not:V \l_@@_tmp_int }
}
}
@@ -1266,7 +1261,7 @@
\seq_if_in:NoTF \l_@@_key_order_seq
\l_@@_key_name_tl
{
- \msg_error:nnx { xtemplate }
+ \msg_error:nne { xtemplate }
{ duplicate-key-interface }
{ \l_@@_key_name_tl }
}
@@ -1281,7 +1276,7 @@
{
\tl_if_empty:NT \l_@@_keytype_arg_tl
{
- \msg_error:nnx { xtemplate }
+ \msg_error:nne { xtemplate }
{ keytype-requires-argument } {#1}
\bool_set_true:N \l_@@_error_bool
\seq_map_break:
@@ -1290,7 +1285,7 @@
}
\cs_new:Npn \@@_parse_keys_elt_aux:
{
- \tl_set:Nx \l_@@_tmp_tl
+ \tl_set:Ne \l_@@_tmp_tl
{
\l_@@_keytype_tl
\tl_if_empty:NF \l_@@_keytype_arg_tl
@@ -1331,7 +1326,7 @@
% that, the standard delimited argument method is used to separate the
% two parts.
% \begin{macrocode}
-\cs_new_protected:Npx \@@_split_keytype:n #1
+\cs_new_protected:Npe \@@_split_keytype:n #1
{
\exp_not:N \bool_set_false:N \exp_not:N \l_@@_error_bool
\tl_set:Nn \exp_not:N \l_@@_tmp_tl {#1}
@@ -1347,32 +1342,32 @@
}
{
\exp_not:N \bool_set_true:N \exp_not:N \l_@@_error_bool
- \msg_error:nnx { xtemplate } { missing-keytype } {#1}
+ \msg_error:nne { xtemplate } { missing-keytype } {#1}
}
}
-\use:x
+\use:e
{
\cs_new_protected:Npn \exp_not:N \@@_split_keytype_aux:w
- ##1 \token_to_str:N : ##2 \s_@@_stop
+ #1 \token_to_str:N : #2 \s_@@_stop
{
- \tl_put_right:Nx \exp_not:N \l_@@_key_name_tl
+ \tl_put_right:Ne \exp_not:N \l_@@_key_name_tl
{
\exp_not:N \tl_trim_spaces:e
- { \exp_not:N \tl_to_str:n {##1} }
+ { \exp_not:N \tl_to_str:n {#1} }
}
- \tl_if_in:nnTF {##2} { \token_to_str:N : }
+ \tl_if_in:nnTF {#2} { \token_to_str:N : }
{
\tl_put_right:Nn \exp_not:N \l_@@_key_name_tl
{ \token_to_str:N : }
- \exp_not:N \@@_split_keytype_aux:w ##2 \s_@@_stop
+ \exp_not:N \@@_split_keytype_aux:w #2 \s_@@_stop
}
{
\exp_not:N \tl_if_empty:NTF \exp_not:N \l_@@_key_name_tl
{
- \msg_error:nnx { xtemplate } { empty-key-name }
- { \token_to_str:N : ##2 }
+ \msg_error:nne { xtemplate } { empty-key-name }
+ { \token_to_str:N : #2 }
}
- { \exp_not:N \@@_split_keytype_arg:n {##2} }
+ { \exp_not:N \@@_split_keytype_arg:n {#2} }
}
}
}
@@ -1395,7 +1390,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_split_keytype_arg:n #1
{
- \tl_set:Nx \l_@@_keytype_tl { \tl_trim_spaces:n {#1} }
+ \tl_set:Ne \l_@@_keytype_tl { \tl_trim_spaces:n {#1} }
\tl_clear:N \l_@@_keytype_arg_tl
\cs_set_protected:Npn \@@_split_keytype_arg_aux:n ##1
{
@@ -1406,11 +1401,11 @@
{
\tl_if_blank:nT {####1}
{
- \tl_set:Nx \l_@@_keytype_tl
+ \tl_set:Ne \l_@@_keytype_tl
{ \tl_trim_spaces:n {##1} }
\tl_if_blank:nF {####2}
{
- \tl_set:Nx \l_@@_keytype_arg_tl
+ \tl_set:Ne \l_@@_keytype_arg_tl
{ \use:n ####2 }
}
\seq_map_break:
@@ -1548,7 +1543,7 @@
\@@_store_restrictions:n { #1 / #2 }
\prop_map_inline:Nn \l_@@_keytypes_prop
{
- \msg_error:nnxxx { xtemplate } { key-not-implemented }
+ \msg_error:nneee { xtemplate } { key-not-implemented }
{##1} {#2} {#1}
}
}
@@ -1560,7 +1555,7 @@
% this is an error function.
% \begin{macrocode}
\cs_new_protected:Npn \@@_parse_vars_elt:n #1
- { \msg_error:nnx { xtemplate } { key-no-variable } {#1} }
+ { \msg_error:nne { xtemplate } { key-no-variable } {#1} }
% \end{macrocode}
% \end{macro}
%
@@ -1572,7 +1567,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_parse_vars_elt:nnn #1#2#3
{
- \tl_set:Nx \l_@@_key_name_tl
+ \tl_set:Ne \l_@@_key_name_tl
{ \tl_trim_spaces:e { \tl_to_str:n {#2} } }
\prop_get:NoNTF
\l_@@_keytypes_prop
@@ -1583,7 +1578,7 @@
\@@_parse_vars_elt_aux:nn {#1} {#3}
\prop_remove:NV \l_@@_keytypes_prop \l_@@_key_name_tl
}
- { \msg_error:nnx { xtemplate } { unknown-key } {#2} }
+ { \msg_error:nne { xtemplate } { unknown-key } {#2} }
}
% \end{macrocode}
% \end{macro}
@@ -1606,7 +1601,7 @@
{
\tl_if_blank:nTF {#2}
{
- \exp_args:Nnnx \@@_parse_vars_elt_aux:nnn
+ \exp_args:Nnne \@@_parse_vars_elt_aux:nnn
{#1} { global } { \tl_trim_spaces:n {#3} }
}
{ \msg_error:nnn { xtemplate } { bad-variable } { #2 global #3 } }
@@ -1630,7 +1625,7 @@
\exp_not:c
{ cs_ \str_if_eq:nnT {#1} { global } { g } set:Npn }
{ \exp_not:o \l_@@_keytype_arg_tl }
- {####1}
+ {##1}
}
}
\prop_put:Non \l_@@_vars_prop
@@ -1644,7 +1639,7 @@
{
\exp_not:c
{ cs_ \str_if_eq:nnT {#1} { global } { g } set:Npn }
- \exp_not:N #3 { \UseInstance {####1} }
+ \exp_not:N #3 { \UseInstance {##1} }
}
}
\prop_put:Non \l_@@_vars_prop
@@ -1665,12 +1660,12 @@
\prop_put:Non \l_@@_vars_prop
\l_@@_key_name_tl {#2#3}
}
- { \msg_error:nnx { xtemplate } { bad-variable } { #2#3 } }
+ { \msg_error:nne { xtemplate } { bad-variable } { #2#3 } }
}
}
\cs_new_protected:Npn \@@_parse_vars_elt_key:nn #1#2
{
- \keys_define:nx { template / #1 }
+ \keys_define:ne { template / #1 }
{ \l_@@_key_name_tl #2 }
}
% \end{macrocode}
@@ -1708,7 +1703,7 @@
{
\clist_set:No \l_@@_tmp_clist { \l_@@_keytype_arg_tl }
\prop_put:Non \l_@@_vars_prop \l_@@_key_name_tl { }
- \keys_define:nx { template / #1 } { \l_@@_key_name_tl .choice: }
+ \keys_define:ne { template / #1 } { \l_@@_key_name_tl .choice: }
\keyval_parse:nnn
{ \@@_implement_choice_elt:n }
{ \@@_implement_choice_elt:nnn {#1} }
@@ -1720,7 +1715,7 @@
{
\clist_map_inline:Nn \l_@@_tmp_clist
{
- \msg_error:nnx { xtemplate } { choice-not-implemented }
+ \msg_error:nne { xtemplate } { choice-not-implemented }
{##1}
}
}
@@ -1731,11 +1726,11 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_implement_choices_default:
{
- \tl_set:Nx \l_@@_tmp_tl
+ \tl_set:Ne \l_@@_tmp_tl
{ \l_@@_key_name_tl \c_space_tl \l_@@_tmp_tl }
\prop_if_in:NoF \l_@@_vars_prop \l_@@_tmp_tl
{
- \tl_set:Nx \l_@@_tmp_tl
+ \tl_set:Ne \l_@@_tmp_tl
{ \l_@@_key_name_tl \c_space_tl \l_@@_tmp_tl }
\prop_if_in:NoF \l_@@_vars_prop \l_@@_tmp_tl
{
@@ -1744,7 +1739,7 @@
\@@_split_keytype_arg:o \l_@@_tmp_tl
\prop_get:NoN \l_@@_values_prop \l_@@_key_name_tl
\l_@@_tmp_tl
- \msg_error:nnxxx { xtemplate } { unknown-default-choice }
+ \msg_error:nneee { xtemplate } { unknown-default-choice }
{ \l_@@_key_name_tl } { \l_@@_key_name_tl }
{ \l_@@_keytype_arg_tl }
}
@@ -1772,7 +1767,7 @@
\prop_get:NoN \l_@@_keytypes_prop \l_@@_key_name_tl
\l_@@_tmp_tl
\@@_split_keytype_arg:o \l_@@_tmp_tl
- \msg_error:nnxxx { xtemplate } { unknown-choice }
+ \msg_error:nneee { xtemplate } { unknown-choice }
{ \l_@@_key_name_tl } {#2}
{ \l_@@_keytype_arg_tl }
}
@@ -1787,7 +1782,7 @@
\prop_get:NoN \l_@@_keytypes_prop \l_@@_key_name_tl
\l_@@_tmp_tl
\@@_split_keytype_arg:o \l_@@_tmp_tl
- \msg_error:nnxxx { xtemplate } { unknown-choice }
+ \msg_error:nneee { xtemplate } { unknown-choice }
{ \l_@@_key_name_tl } {#2}
{ \l_@@_keytype_arg_tl }
}
@@ -1795,15 +1790,15 @@
}
\cs_new_protected:Npn \@@_implement_choice_elt_aux:nnn #1#2#3
{
- \keys_define:nx { template / #1 }
+ \keys_define:ne { template / #1 }
{ \l_@@_key_name_tl / #2 .code:n = { \exp_not:n {#3} } }
- \tl_set:Nx \l_@@_tmp_tl
+ \tl_set:Ne \l_@@_tmp_tl
{ \l_@@_key_name_tl \c_space_tl #2 }
\prop_put:Non \l_@@_vars_prop \l_@@_tmp_tl {#3}
}
\cs_new_protected:Npn \@@_implement_choice_elt:n #1
{
- \msg_error:nnxxx { xtemplate } { choice-requires-code }
+ \msg_error:nneee { xtemplate } { choice-requires-code }
{ \l_@@_key_name_tl } {#1}
}
% \end{macrocode}
@@ -1886,7 +1881,7 @@
\cs_new_protected:Npn \@@_parse_values_elt:n #1
{
\bool_set_true:N \l_@@_error_bool
- \msg_error:nnx { xtemplate } { key-no-value } {#1}
+ \msg_error:nne { xtemplate } { key-no-value } {#1}
}
% \end{macrocode}
% \end{macro}
@@ -1900,7 +1895,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_parse_values_elt:nn #1#2
{
- \tl_set:Nx \l_@@_key_name_tl
+ \tl_set:Ne \l_@@_key_name_tl
{ \tl_trim_spaces:e { \tl_to_str:n {#1} } }
\prop_get:NoNTF \l_@@_keytypes_prop \l_@@_key_name_tl
\l_@@_tmp_tl
@@ -1914,7 +1909,7 @@
{ \@@_parse_values_elt_aux:n {#2} }
}
{
- \msg_error:nnx { xtemplate } { unknown-key }
+ \msg_error:nne { xtemplate } { unknown-key }
{ \l_@@_key_name_tl }
}
}
@@ -1978,7 +1973,7 @@
\prop_put:Nnn \l_@@_values_prop { from~template } {#2}
\@@_store_values:n { #1 / #3 / #4 }
\@@_convert_to_assignments:
- \cs_set_protected:cpx { \c_@@_instances_root_tl #1 / #3 / #4 }
+ \cs_set_protected:cpe { \c_@@_instances_root_tl #1 / #3 / #4 }
{
\exp_not:N \@@_assignments_push:n
{ \exp_not:o \l_@@_assignments_tl }
@@ -2009,7 +2004,7 @@
{ \c_@@_instances_root_tl #1 / #2 / #3 }
}
{
- \msg_error:nnxx { xtemplate } { unknown-instance }
+ \msg_error:nnee { xtemplate } { unknown-instance }
{#1} {#3}
}
}
@@ -2035,7 +2030,7 @@
{#2} {#3} {#4}
}
{
- \msg_error:nnxx { xtemplate } { unknown-instance }
+ \msg_error:nnee { xtemplate } { unknown-instance }
{#1} {#3}
}
}
@@ -2094,7 +2089,7 @@
\tl_set:Nn \l_@@_key_name_tl {#1}
\use:c { @@_assign_ \l_@@_keytype_tl : }
}
- { \msg_error:nnx { xtemplate } { unknown-attribute } {#1} }
+ { \msg_error:nne { xtemplate } { unknown-attribute } {#1} }
}
}
\cs_generate_variant:Nn \@@_convert_to_assignments_aux:nn { no }
@@ -2170,7 +2165,7 @@
\@@_if_key_value:oTF \l_@@_value_tl
{
\@@_key_to_value:
- \tl_put_right:Nx \l_@@_assignments_tl
+ \tl_put_right:Ne \l_@@_assignments_tl
{
\exp_not:c { #1 _eq:NN }
\exp_not:o \l_@@_var_tl
@@ -2178,7 +2173,7 @@
}
}
{
- \tl_put_right:Nx \l_@@_assignments_tl
+ \tl_put_right:Ne \l_@@_assignments_tl
{
\exp_not:c { #1 _ \l_@@_value_tl :N }
\exp_not:o \l_@@_var_tl
@@ -2197,16 +2192,16 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_assign_choice:
{
- \@@_assign_choice_aux:xF
+ \@@_assign_choice_aux:eF
{ \l_@@_key_name_tl \c_space_tl \l_@@_value_tl }
{
- \@@_assign_choice_aux:xF
+ \@@_assign_choice_aux:eF
{ \l_@@_key_name_tl \c_space_tl unknown }
{
\prop_get:NoN \l_@@_keytypes_prop \l_@@_key_name_tl
\l_@@_tmp_tl
\@@_split_keytype_arg:o \l_@@_tmp_tl
- \msg_error:nnxxx { xtemplate } { unknown-choice }
+ \msg_error:nneee { xtemplate } { unknown-choice }
{ \l_@@_key_name_tl } { \l_@@_value_tl }
{ \l_@@_keytype_arg_tl }
}
@@ -2220,7 +2215,7 @@
\l_@@_tmp_tl
{ \tl_put_right:No \l_@@_assignments_tl \l_@@_tmp_tl }
}
-\cs_generate_variant:Nn \@@_assign_choice_aux:nF { x }
+\cs_generate_variant:Nn \@@_assign_choice_aux:nF { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2237,7 +2232,7 @@
}
\cs_new_protected:Npn \@@_assign_function_aux:N #1
{
- \tl_put_right:Nx \l_@@_assignments_tl
+ \tl_put_right:Ne \l_@@_assignments_tl
{
\cs_generate_from_arg_count:NNnn
\exp_not:o \l_@@_var_tl
@@ -2264,7 +2259,7 @@
}
\cs_new_protected:Npn \@@_assign_instance_aux:N #1
{
- \tl_put_right:Nx \l_@@_assignments_tl
+ \tl_put_right:Ne \l_@@_assignments_tl
{
\exp_not:N #1 \exp_not:o \l_@@_var_tl
{
@@ -2340,14 +2335,14 @@
\@@_if_key_value:oTF \l_@@_value_tl
{
\@@_key_to_value:
- \tl_put_right:Nx \l_@@_assignments_tl
+ \tl_put_right:Ne \l_@@_assignments_tl
{
#1 \exp_not:o \l_@@_var_tl
\exp_not:o \l_@@_value_tl
}
}
{
- \tl_put_right:Nx \l_@@_assignments_tl
+ \tl_put_right:Ne \l_@@_assignments_tl
{
#2 \exp_not:o \l_@@_var_tl
{ \exp_not:o \l_@@_value_tl }
@@ -2379,7 +2374,7 @@
{
\@@_if_key_value:oT \l_@@_value_tl
{ \@@_key_to_value: }
- \tl_put_right:Nx \l_@@_assignments_tl
+ \tl_put_right:Ne \l_@@_assignments_tl
{
#1 \exp_not:o \l_@@_var_tl
{ \exp_not:o \l_@@_value_tl }
@@ -2403,7 +2398,7 @@
{ \exp_after:wN \@@_key_to_value_auxi:w \l_@@_value_tl }
\cs_new_protected:Npn \@@_key_to_value_auxi:w \KeyValue #1
{
- \tl_set:Nx \l_@@_tmp_tl { \tl_trim_spaces:e { \tl_to_str:n {#1} } }
+ \tl_set:Ne \l_@@_tmp_tl { \tl_trim_spaces:e { \tl_to_str:n {#1} } }
\prop_get:NoNTF
\l_@@_vars_prop
\l_@@_tmp_tl
@@ -2413,7 +2408,7 @@
\s_@@_mark global \q_@@_nil \s_@@_stop
}
{
- \msg_error:nnx { xtemplate } { unknown-attribute }
+ \msg_error:nne { xtemplate } { unknown-attribute }
{ \l_@@_tmp_tl }
}
}
@@ -2450,7 +2445,7 @@
{
\str_if_eq:nnTF {#1} {#3}
{ \@@_use_template:nnn {#3} {#4} {#5} }
- { \msg_error:nnxx { xtemplate } { type-mismatch } {#1} {#3} }
+ { \msg_error:nnee { xtemplate } { type-mismatch } {#1} {#3} }
}
\cs_new_protected:Npn \@@_use_instance_aux:nn #1#2
{
@@ -2468,7 +2463,7 @@
\@@_if_instance_exist:nnnTF {#1} { } {#2}
{ \use:c { \c_@@_instances_root_tl #1 / / #2 } }
{
- \msg_error:nnxx { xtemplate } { unknown-instance }
+ \msg_error:nnee { xtemplate } { unknown-instance }
{#1} {#2}
}
}
@@ -2570,7 +2565,7 @@
}
\cs_new_protected:Npn \@@_show:Nnnn #1#2#3#4
{
- \msg_show:nnxxxx { xtemplate } { show-attribute }
+ \msg_show:nneeee { xtemplate } { show-attribute }
{ \tl_to_str:n {#2} }
{ \tl_to_str:n {#3} }
{ \tl_to_str:n {#4} }
@@ -2589,7 +2584,7 @@
\@@_if_instance_exist:nnnT {#1} {#2} {#3}
{
\@@_recover_values:n { #1 / #2 / #3 }
- \msg_show:nnxxxx { xtemplate } { show-values }
+ \msg_show:nneeee { xtemplate } { show-values }
{ \tl_to_str:n {#1} }
{ \tl_to_str:n {#2} }
{ \tl_to_str:n {#3} }