[latex3-commits] [latex3/latex3] main: Switch from x- to e-type in l3keys (dcc11cf4c)
github at latex-project.org
github at latex-project.org
Tue Oct 10 12:59:28 CEST 2023
Repository : https://github.com/latex3/latex3
On branch : main
Link : https://github.com/latex3/latex3/commit/dcc11cf4c564745dbf453e054e8f7c309c39c3c8
>---------------------------------------------------------------
commit dcc11cf4c564745dbf453e054e8f7c309c39c3c8
Author: Joseph Wright <joseph.wright at morningstar2.co.uk>
Date: Tue Sep 26 13:42:39 2023 +0100
Switch from x- to e-type in l3keys
This requires a reasonable number of e-type
additions to l3str.
>---------------------------------------------------------------
dcc11cf4c564745dbf453e054e8f7c309c39c3c8
l3kernel/CHANGELOG.md | 2 +
l3kernel/l3keys.dtx | 218 ++++++++++++++++++--------------
l3kernel/l3str.dtx | 59 ++++-----
l3kernel/testfiles/m3keys001.lvt | 4 +-
l3kernel/testfiles/m3keys002.lvt | 40 +++---
l3kernel/testfiles/m3keys002.tlg | 8 +-
l3kernel/testfiles/m3keys008.lvt | 2 +-
l3kernel/testfiles/m3keys008.tlg | 2 +-
l3kernel/testfiles/m3show002.luatex.tlg | 2 +-
l3kernel/testfiles/m3show002.lvt | 2 +-
l3kernel/testfiles/m3show002.tlg | 2 +-
l3kernel/testfiles/m3show003.lvt | 2 +-
l3kernel/testfiles/m3show003.tlg | 2 +-
l3packages/xtemplate/xtemplate.dtx | 6 +-
14 files changed, 190 insertions(+), 161 deletions(-)
diff --git a/l3kernel/CHANGELOG.md b/l3kernel/CHANGELOG.md
index a3666fbd7..d2b0b2c46 100644
--- a/l3kernel/CHANGELOG.md
+++ b/l3kernel/CHANGELOG.md
@@ -13,6 +13,7 @@ this project uses date-based 'snapshot' version identifiers.
They were supported since l3kernel 2021-05-25, along with `\sys_timer:`.
- l3doc.dtx: Support for footnotes in the function and variable environment
- Variants `\tl_if_single:c(TF)` and `\tl_if_single_p:c` (issue \#1272)
+- Key properties `.str_(g)set_e:N` and `.tl_(g)set_e:N`
### Changed
- Convert `\file_if_exist:n(TF)` to expandable status,
@@ -24,6 +25,7 @@ this project uses date-based 'snapshot' version identifiers.
### Deprecated
- `\iow_shipout_x:Nn` in favor of `e`-type naming
+- Key properties `.str_(g)set_x:N` and `.tl_(g)set_x:N`
### Fixed
- Rare rounding error in divisions (issue \#1264)
diff --git a/l3kernel/l3keys.dtx b/l3kernel/l3keys.dtx
index aaa48b9b1..fbaf20b8f 100644
--- a/l3kernel/l3keys.dtx
+++ b/l3kernel/l3keys.dtx
@@ -124,7 +124,8 @@
%
% \section{Creating keys}
%
-% \begin{function}[updated = 2017-11-14]{\keys_define:nn, \keys_define:nx}
+% \begin{function}[updated = 2017-11-14]
+% {\keys_define:nn, \keys_define:ne, \keys_define:nx}
% \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}
% \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, .initial:x}
% \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}
% \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}
%
@@ -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, \keys_set:nx
+% }
% \begin{syntax}
% \cs{keys_set:nn} \Arg{module} \Arg{keyval list}
% \end{syntax}
@@ -782,14 +787,13 @@
% \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:nx,
-% \keys_set_known:no,
+% \keys_set_known:nv, \keys_set_known:ne,
+% \keys_set_known:no, \keys_set_known:nx,
% \keys_set_known:nnN, \keys_set_known:nVN,
% \keys_set_known:nvN, \keys_set_known:nxN,
-% \keys_set_known:noN,
+% \keys_set_known:noN, \keys_set_known:neN,
% \keys_set_known:nnnN, \keys_set_known:nVnN,
-% \keys_set_known:nvnN, \keys_set_known:nxnN,
-% \keys_set_known:nonN
+% \keys_set_known:nvnN, \keys_set_known:nenN
% }
% \begin{syntax}
% \cs{keys_set_known:nn} \Arg{module} \Arg{keyval list}
@@ -1733,7 +1737,7 @@
%
% \subsection{The key defining mechanism}
%
-% \begin{macro}{\keys_define:nn, \keys_define:nx}
+% \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
@@ -1742,7 +1746,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \keys_define:nn
{ \@@_define:onn \l_@@_module_str }
-\cs_generate_variant:Nn \keys_define:nn { nx }
+\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} }
@@ -1802,7 +1806,7 @@
% 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
@@ -1900,9 +1904,9 @@
{
\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 }
{
@@ -1975,7 +1979,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}
@@ -1991,7 +1995,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
@@ -1999,7 +2003,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}
@@ -2118,9 +2122,9 @@
\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 }
{
@@ -2169,7 +2173,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
@@ -2320,7 +2324,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
@@ -2390,8 +2394,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}
-% {.choices:nn, .choices:Vn, .choices:on, .choices:xn}
+% \begin{macro}{.choices:nn, .choices:Vn}
% For auto-generation of a series of mutually-exclusive choices.
% Here, |#1| consists of two separate
% arguments, hence the slightly odd-looking implementation.
@@ -2400,10 +2403,6 @@
{ \@@_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:on } #1
- { \exp_args:No \@@_choices_make:nn #1 }
-\cs_new_protected:cpn { \c_@@_props_root_str .choices:xn } #1
- { \exp_args:Nx \@@_choices_make:nn #1 }
% \end{macrocode}
% \end{macro}
%
@@ -2456,17 +2455,17 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{.default:n, .default:V, .default:o, .default:x}
+% \begin{macro}{.default:n, .default:V, .default:e, .default:o}
% 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
- { \exp_args:Nx \@@_default_set:n {#1} }
% \end{macrocode}
% \end{macro}
%
@@ -2518,17 +2517,19 @@
% \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
- { \exp_args:Nx \@@_initialise:n {#1} }
+ { \exp_args:Ne \@@_initialise:n {#1} }
% \end{macrocode}
% \end{macro}
%
@@ -2583,11 +2584,7 @@
% \end{macro}
%
% \begin{macro}{.multichoice:}
-% \begin{macro}
-% {
-% .multichoices:nn, .multichoices:Vn, .multichoices:on,
-% .multichoices:xn,
-% }
+% \begin{macro}{.multichoices:nn, .multichoices:Vn}
% The same idea as \texttt{.choice:} and \texttt{.choices:nn}, but
% where more than one choice is allowed.
% \begin{macrocode}
@@ -2597,10 +2594,6 @@
{ \@@_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:on } #1
- { \exp_args:No \@@_multichoices_make:nn #1 }
-\cs_new_protected:cpn { \c_@@_props_root_str .multichoices:xn } #1
- { \exp_args:Nx \@@_multichoices_make:nn #1 }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2651,26 +2644,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}
@@ -2679,26 +2672,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}
@@ -2736,7 +2729,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}
@@ -2762,7 +2756,7 @@
{ \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
@@ -2778,21 +2772,21 @@
% \begin{macro}
% {
% \keys_set_known:nnN, \keys_set_known:nVN,
-% \keys_set_known:nvN, \keys_set_known:nxN,
+% \keys_set_known:nvN, \keys_set_known:neN,
+% \keys_set_known:nxN,
% \keys_set_known:noN
% }
% \begin{macro}
% {
% \keys_set_known:nnnN, \keys_set_known:nVnN,
-% \keys_set_known:nvnN, \keys_set_known:nxnN,
-% \keys_set_known:nonN
+% \keys_set_known:nvnN, \keys_set_known:nenN
% }
% \begin{macro}{\@@_set_known:nnnnN}
% \begin{macro}
% {
% \keys_set_known:nn, \keys_set_known:nV,
-% \keys_set_known:nv, \keys_set_known:nx,
-% \keys_set_known:no
+% \keys_set_known:nv, \keys_set_known:ne,
+% \keys_set_known:nx, \keys_set_known:no
% }
% \begin{macro}{\@@_set_known:nnn}
% Setting known keys simply means setting the appropriate flag, then
@@ -2806,13 +2800,13 @@
\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 , nx , no }
+\cs_generate_variant:Nn \keys_set_known:nnN { nV , nv , ne , nx , 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 , nx , no }
+\cs_generate_variant:Nn \keys_set_known:nnnN { nV , nv , ne }
\cs_new_protected:Npn \@@_set_known:nnnnN #1#2#3#4#5
{
\clist_clear:N \l_@@_unused_clist
@@ -2822,10 +2816,10 @@
}
\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 , nx , no }
+\cs_generate_variant:Nn \keys_set_known:nn { nV , nv , ne , nx , 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
@@ -2903,7 +2897,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
@@ -2922,7 +2916,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
@@ -3279,12 +3273,12 @@
{
\__kernel_tl_set:Nx \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}
@@ -3300,7 +3294,7 @@
{ = { \exp_not:o \l_keys_value_tl } }
}
}
- \use:x
+ \use:e
{
\@@_store_unused:w \l_keys_path_str
\l_@@_relative_tl / \l_@@_relative_tl /
@@ -3499,21 +3493,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}
@@ -3575,6 +3569,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/l3kernel/l3str.dtx b/l3kernel/l3str.dtx
index 3af078a83..7f79b1663 100644
--- a/l3kernel/l3str.dtx
+++ b/l3kernel/l3str.dtx
@@ -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:Nx,
+% \str_const:cn, \str_const:cV, \str_const:ce, \str_const:cx
% }
% \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: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
% }
% \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: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
% }
% \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:Nx,
+% \str_put_right:cn, \str_put_right:cV, \str_put_right:Ne, \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
% }
% \begin{syntax}
% \cs{str_put_right:Nn} \meta{str var} \Arg{token list}
@@ -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}
@@ -1000,7 +1000,8 @@
\exp_not:c { tl_ #1 :Nx } ##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
}
}
diff --git a/l3kernel/testfiles/m3keys001.lvt b/l3kernel/testfiles/m3keys001.lvt
index 934a21142..7eba8f939 100644
--- a/l3kernel/testfiles/m3keys001.lvt
+++ b/l3kernel/testfiles/m3keys001.lvt
@@ -88,7 +88,7 @@
\keys_define:nn { module }
{
key-one .code:n = { \TYPE { "#1" } } ,
- key-one .default:x = \l_tmpa_tl
+ key-one .default:e = \l_tmpa_tl
}
\keys_set:nn { module }
{
@@ -156,7 +156,7 @@
\keys_define:nn { module }
{
key-one .tl_set:N = \l_tmpa_tl ,
- key-one .initial:x = \l_tmpb_tl
+ key-one .initial:e = \l_tmpb_tl
}
\tl_log:N \l_tmpa_tl
\keys_set:nn { module }
diff --git a/l3kernel/testfiles/m3keys002.lvt b/l3kernel/testfiles/m3keys002.lvt
index bc5e43461..7f2c77ab3 100644
--- a/l3kernel/testfiles/m3keys002.lvt
+++ b/l3kernel/testfiles/m3keys002.lvt
@@ -471,17 +471,17 @@
\str_log:N \g_myb_str
}
-\TEST { .str_set_x:N }
+\TEST { .str_set_e:N }
{
\OMIT
\str_set:Nn \l_tmpb_str { foo }
\TIMO
\keys_define:nn { module }
{
- key-one .str_set_x:N = \l_tmpa_str ,
- key-two .str_set_x:N = \l_mya_str ,
- key-three .str_gset_x:N = \g_tmpa_str ,
- key-four .str_gset_x:N = \g_mya_str ,
+ key-one .str_set_e:N = \l_tmpa_str ,
+ key-two .str_set_e:N = \l_mya_str ,
+ key-three .str_gset_e:N = \g_tmpa_str ,
+ key-four .str_gset_e:N = \g_mya_str ,
}
\group_begin:
\keys_set:nn { module }
@@ -502,17 +502,17 @@
\str_log:N \g_mya_str
}
-\TEST { .str_set_x:c }
+\TEST { .str_set_e:c }
{
\OMIT
\str_set:Nn \l_tmpb_str { foo bar }
\TIMO
\keys_define:nn { module }
{
- key-one .str_set_x:c = { l_tmpa_str } ,
- key-two .str_set_x:c = { l_myb_str } ,
- key-three .str_gset_x:c = { g_tmpa_str } ,
- key-four .str_gset_x:c = { g_myb_str } ,
+ key-one .str_set_e:c = { l_tmpa_str } ,
+ key-two .str_set_e:c = { l_myb_str } ,
+ key-three .str_gset_e:c = { g_tmpa_str } ,
+ key-four .str_gset_e:c = { g_myb_str } ,
}
\group_begin:
\keys_set:nn { module }
@@ -595,17 +595,17 @@
\tl_log:N \g_mya_tl
}
-\TEST { .tl_set_x:N }
+\TEST { .tl_set_e:N }
{
\OMIT
\tl_set:Nn \l_tmpb_tl { foo }
\TIMO
\keys_define:nn { module }
{
- key-one .tl_set_x:N = \l_tmpa_tl ,
- key-two .tl_set_x:N = \l_mya_tl ,
- key-three .tl_gset_x:N = \g_tmpa_tl ,
- key-four .tl_gset_x:N = \g_mya_tl ,
+ key-one .tl_set_e:N = \l_tmpa_tl ,
+ key-two .tl_set_e:N = \l_mya_tl ,
+ key-three .tl_gset_e:N = \g_tmpa_tl ,
+ key-four .tl_gset_e:N = \g_mya_tl ,
}
\group_begin:
\keys_set:nn { module }
@@ -626,17 +626,17 @@
\tl_log:N \g_mya_tl
}
-\TEST { .tl_set_x:c }
+\TEST { .tl_set_e:c }
{
\OMIT
\tl_set:Nn \l_tmpb_tl { foo bar }
\TIMO
\keys_define:nn { module }
{
- key-one .tl_set_x:c = { l_tmpa_tl } ,
- key-two .tl_set_x:c = { l_mya_tl } ,
- key-three .tl_gset_x:c = { g_tmpa_tl } ,
- key-four .tl_gset_x:c = { g_mya_tl } ,
+ key-one .tl_set_e:c = { l_tmpa_tl } ,
+ key-two .tl_set_e:c = { l_mya_tl } ,
+ key-three .tl_gset_e:c = { g_tmpa_tl } ,
+ key-four .tl_gset_e:c = { g_mya_tl } ,
}
\group_begin:
\keys_set:nn { module }
diff --git a/l3kernel/testfiles/m3keys002.tlg b/l3kernel/testfiles/m3keys002.tlg
index 5460a9fa3..b3e14addc 100644
--- a/l3kernel/testfiles/m3keys002.tlg
+++ b/l3kernel/testfiles/m3keys002.tlg
@@ -348,7 +348,7 @@ Defining key module/key-four on line ...
> \g_myb_str=bar.
============================================================
============================================================
-TEST 17: .str_set_x:N
+TEST 17: .str_set_e:N
============================================================
Defining key module/key-one on line ...
Defining key module/key-two on line ...
@@ -364,7 +364,7 @@ Defining key module/key-four on line ...
> \g_mya_str=foo.
============================================================
============================================================
-TEST 18: .str_set_x:c
+TEST 18: .str_set_e:c
============================================================
Defining key module/key-one on line ...
Defining key module/key-two on line ...
@@ -414,7 +414,7 @@ Defining key module/key-four on line ...
> \g_mya_tl=barbar.
============================================================
============================================================
-TEST 21: .tl_set_x:N
+TEST 21: .tl_set_e:N
============================================================
Defining key module/key-one on line ...
Defining key module/key-two on line ...
@@ -430,7 +430,7 @@ Defining key module/key-four on line ...
> \g_mya_tl=foo.
============================================================
============================================================
-TEST 22: .tl_set_x:c
+TEST 22: .tl_set_e:c
============================================================
Defining key module/key-one on line ...
Defining key module/key-two on line ...
diff --git a/l3kernel/testfiles/m3keys008.lvt b/l3kernel/testfiles/m3keys008.lvt
index c012f88d1..e127f5024 100644
--- a/l3kernel/testfiles/m3keys008.lvt
+++ b/l3kernel/testfiles/m3keys008.lvt
@@ -32,7 +32,7 @@
key-nine .skip_set:N = \l_tmpa_skip ,
key-ten .str_set:N = \l_tmpa_str ,
key-eleven .tl_set:N = \l_tmpa_tl ,
- key-twelve .tl_set_x:N = \l_tmpb_tl
+ key-twelve .tl_set_e:N = \l_tmpb_tl
}
\TIMO
\keys_precompile:nnN
diff --git a/l3kernel/testfiles/m3keys008.tlg b/l3kernel/testfiles/m3keys008.tlg
index fc76f6098..7a5f5ca1e 100644
--- a/l3kernel/testfiles/m3keys008.tlg
+++ b/l3kernel/testfiles/m3keys008.tlg
@@ -8,7 +8,7 @@ TEST 1: Key precompilation of settings
{a,b}foo\cs_set:Npn \foo ##1##2{##1:##2}\dim_set:Nn \l_tmpa_dim
{0.3pt}\fp_set:Nn \l_tmpa_fp {2*0.3}\int_set:Nn \l_tmpa_int
{123}\muskip_set:Nn \l_tmpa_muskip {0.4mu}\skip_set:Nn \l_tmpa_skip
-{0.66pt}\str_set:Nn \l_tmpa_str {foo}\tl_set:Nn \l_tmpa_tl {footoo}\tl_set:Nx
+{0.66pt}\str_set:Nn \l_tmpa_str {foo}\tl_set:Nn \l_tmpa_tl {footoo}\tl_set:Ne
\l_tmpb_tl {\l_tmpa_tl }.
<recently read> }
l. ... }
diff --git a/l3kernel/testfiles/m3show002.luatex.tlg b/l3kernel/testfiles/m3show002.luatex.tlg
index 50d79103b..0f30b54e7 100644
--- a/l3kernel/testfiles/m3show002.luatex.tlg
+++ b/l3kernel/testfiles/m3show002.luatex.tlg
@@ -179,7 +179,7 @@ TEST 7: KEYS
The key test/text has the properties:
> code => \tl_set:Nn \l_tmpa_tl {#1}.
The key test/expanded has the properties:
-> code => \tl_gset:Nx \l_tmpb_tl {#1}.
+> code => \tl_gset:Ne \l_tmpb_tl {#1}.
============================================================
============================================================
TEST 8: CHAR
diff --git a/l3kernel/testfiles/m3show002.lvt b/l3kernel/testfiles/m3show002.lvt
index 1ffe2f8f4..451682190 100644
--- a/l3kernel/testfiles/m3show002.lvt
+++ b/l3kernel/testfiles/m3show002.lvt
@@ -101,7 +101,7 @@
\keys_define:nn { test }
{
text .tl_set:c = { l_tmpa_tl } ,
- expanded .tl_gset_x:N = \l_tmpb_tl ,
+ expanded .tl_gset_e:N = \l_tmpb_tl ,
}
\TIMO
diff --git a/l3kernel/testfiles/m3show002.tlg b/l3kernel/testfiles/m3show002.tlg
index 3c217bc1d..bd50eacca 100644
--- a/l3kernel/testfiles/m3show002.tlg
+++ b/l3kernel/testfiles/m3show002.tlg
@@ -179,7 +179,7 @@ TEST 7: KEYS
The key test/text has the properties:
> code => \tl_set:Nn \l_tmpa_tl {#1}.
The key test/expanded has the properties:
-> code => \tl_gset:Nx \l_tmpb_tl {#1}.
+> code => \tl_gset:Ne \l_tmpb_tl {#1}.
============================================================
============================================================
TEST 8: CHAR
diff --git a/l3kernel/testfiles/m3show003.lvt b/l3kernel/testfiles/m3show003.lvt
index 2708067ac..d5b7c5995 100644
--- a/l3kernel/testfiles/m3show003.lvt
+++ b/l3kernel/testfiles/m3show003.lvt
@@ -131,7 +131,7 @@
\keys_define:nn { test }
{
text .tl_set:c = { l_tmpa_tl } ,
- expanded .tl_gset_x:N = \l_tmpb_tl ,
+ expanded .tl_gset_e:N = \l_tmpb_tl ,
}
\TIMO
diff --git a/l3kernel/testfiles/m3show003.tlg b/l3kernel/testfiles/m3show003.tlg
index 8c77293f3..a07b038e7 100644
--- a/l3kernel/testfiles/m3show003.tlg
+++ b/l3kernel/testfiles/m3show003.tlg
@@ -158,7 +158,7 @@ TEST 9: keys
The key test/text has the properties:
> code => \tl_set:Nn \l_tmpa_tl {#1}.
The key test/expanded has the properties:
-> code => \tl_gset:Nx \l_tmpb_tl {#1}.
+> code => \tl_gset:Ne \l_tmpb_tl {#1}.
============================================================
============================================================
TEST 10: muskip
diff --git a/l3packages/xtemplate/xtemplate.dtx b/l3packages/xtemplate/xtemplate.dtx
index 848329d30..edd7a5d1e 100644
--- a/l3packages/xtemplate/xtemplate.dtx
+++ b/l3packages/xtemplate/xtemplate.dtx
@@ -1665,7 +1665,7 @@
}
\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}
@@ -1703,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} }
@@ -1790,7 +1790,7 @@
}
\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
{ \l_@@_key_name_tl \c_space_tl #2 }
More information about the latex3-commits
mailing list.