[latex3-commits] [l3svn] branch master updated: l3candidates: Add preliminary shell-escape to l3sys
noreply at latex-project.org
noreply at latex-project.org
Sat May 27 20:02:34 CEST 2017
This is an automated email from the git hooks/post-receive script.
joseph pushed a commit to branch master
in repository l3svn.
The following commit(s) were added to refs/heads/master by this push:
new 547b1c2 l3candidates: Add preliminary shell-escape to l3sys
547b1c2 is described below
commit 547b1c2ec89348c5ffbafd74de6b3513c9158cdf
Author: Henri Menke <henri at icp.uni-stuttgart.de>
Date: Mon May 22 16:52:59 2017 +1200
l3candidates: Add preliminary shell-escape to l3sys
---
l3kernel/l3candidates.dtx | 172 +++++++++++++++++++++++++++++++
l3kernel/testfiles/m3expl001.luatex.tlg | 17 +++
l3kernel/testfiles/m3expl001.ptex.tlg | 17 +++
l3kernel/testfiles/m3expl001.tlg | 17 +++
l3kernel/testfiles/m3expl001.uptex.tlg | 17 +++
l3kernel/testfiles/m3expl001.xetex.tlg | 17 +++
l3kernel/testfiles/m3expl003.luatex.tlg | 17 +++
l3kernel/testfiles/m3expl003.ptex.tlg | 17 +++
l3kernel/testfiles/m3expl003.tlg | 17 +++
l3kernel/testfiles/m3expl003.uptex.tlg | 17 +++
l3kernel/testfiles/m3expl003.xetex.tlg | 17 +++
11 files changed, 342 insertions(+)
diff --git a/l3kernel/l3candidates.dtx b/l3kernel/l3candidates.dtx
index 627f4eb..55f44a5 100644
--- a/l3kernel/l3candidates.dtx
+++ b/l3kernel/l3candidates.dtx
@@ -506,6 +506,61 @@
% random number support this produces an error.
% \end{function}
%
+% \begin{variable}[added = 2017-05-22]{\c_sys_shell_escape_int}
+% This variable exposes the internal triple of the shell escape
+% status. The possible values are
+% \begin{description}
+% \item[0] Shell escape is disabled
+% \item[1] Unrestricted shell escape is enabled
+% \item[2] Restricted shell escape is enabled
+% \end{description}
+% \end{variable}
+%
+% \begin{function}[added = 2017-05-22, EXP, pTF]{\sys_if_shell:}
+% \begin{syntax}
+% \cs{sys_if_shell_p:}
+% \cs{sys_if_shell:TF} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Performs a check for whether shell escape is enabled. This will
+% return true if either of restricted or unrestircted shell escape
+% is enabled.
+% \end{function}
+%
+% \begin{function}[added = 2017-05-22, EXP, pTF]{\sys_if_shell_unrestricted:}
+% \begin{syntax}
+% \cs{sys_if_shell_unrestricted_p:}
+% \cs{sys_if_shell_unrestricted:TF} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Performs a check for whether \emph{unrestricted} shell escape is
+% enabled.
+% \end{function}
+%
+% \begin{function}[added = 2017-05-22, EXP, pTF]{\sys_if_shell_restricted:}
+% \begin{syntax}
+% \cs{sys_if_shell_restricted_p:}
+% \cs{sys_if_shell_restricted:TF} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Performs a check for whether \emph{restricted} shell escape is
+% enabled. This will return false if unrestricted shell escape is
+% enabled. Unrestricted shell escape is not considered a superset
+% of restricted shell escape in this case. To find whether any
+% shell escape is enabled use \cs{sys_if_shell:}.
+% \end{function}
+%
+% \begin{function}[added = 2017-05-22]{\sys_shell_now:n, \sys_shell_now:x}
+% \begin{syntax}
+% \cs{sys_shell_now:n} \Arg{tokens}
+% \end{syntax}
+% Execute \meta{tokens} through shell escape immediately.
+% \end{macro}
+%
+% \begin{function}[added = 2017-05-22]{\sys_shell_shipout:n, \sys_shell_shipout:x}
+% \begin{syntax}
+% \cs{sys_shell_shipout:n} \Arg{tokens}
+% \end{syntax}
+% Execute \meta{tokens} through shell escape at shipout.
+% \end{function}
+%
% \section{Additions to \pkg{l3tl}}
%
% \begin{function}[EXP,pTF]{\tl_if_single_token:n}
@@ -2006,6 +2061,123 @@
% \end{macrocode}
% \end{macro}
%
+%
+% \begin{variable}{\c_sys_shell_escape_int}
+% Expose the engine's shell escape status to the user.
+% \begin{macrocode}
+\int_const:Nn \c_sys_shell_escape_int
+ {
+ \sys_if_engine_luatex:TF
+ {
+ \luatex_directlua:D
+ {
+ tex.sprint((status.shell_escape~or~os.execute()) .. " ")
+ }
+ }
+ {
+ \pdftex_shellescape:D
+ }
+ }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}[EXP, pTF]{\sys_if_shell:}
+% Performs a check for whether shell escape is enabled. This will
+% return true if either of restricted or unrestricted shell escape
+% is enabled.
+% \begin{macrocode}
+\prg_new_conditional:Nnn \sys_if_shell: { p , T , F , TF }
+ {
+ \if_int_compare:w \c_sys_shell_escape_int = 0 ~
+ \prg_return_false:
+ \else:
+ \prg_return_true:
+ \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP, pTF]{\sys_if_shell_unrestricted:}
+% Performs a check for whether \emph{unrestricted} shell escape is
+% enabled.
+% \begin{macrocode}
+\prg_new_conditional:Nnn \sys_if_shell_unrestricted: { p , T , F , TF }
+ {
+ \if_int_compare:w \c_sys_shell_escape_int = 1 ~
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP, pTF]{\sys_if_shell_unrestricted:}
+% Performs a check for whether \emph{restricted} shell escape is
+% enabled. This will return false if unrestricted shell escape is
+% enabled. Unrestricted shell escape is not considered a superset
+% of restricted shell escape in this case. To find whether any
+% shell escape is enabled use \cs{sys_if_shell:}.
+% \begin{macrocode}
+\prg_new_conditional:Nnn \sys_if_shell_restricted: { p , T , F , TF }
+ {
+ \if_int_compare:w \c_sys_shell_escape_int = 2 ~
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\tex_chardef:D \c__sys_eighteen = 18 ~
+% \end{macrocode}
+%
+% \begin{macro}{\sys_shell_now:n}
+% Execute commands through shell escape immediately.
+% \begin{macrocode}
+\sys_if_engine_luatex:TF
+ {
+ \cs_new_protected:Npn \sys_shell_now:n #1
+ {
+ \luatex_directlua:D { os.execute(" \luatex_luaescapestring:D { #1 } ") }
+ }
+ }
+ {
+ \cs_new_protected:Npn \sys_shell_now:n #1
+ {
+ \iow_now:Nn \c__sys_eighteen { #1 }
+ }
+ }
+\cs_generate_variant:Nn \sys_shell_now:n { x }
+% \end{macrocode}
+% \emph{Note:} We could do this fully-expandably in \LuaTeX, but not
+% in \pdfTeX. This should be discussed.
+% \end{macro}
+%
+% \begin{macro}{\sys_shell_shipout:n}
+% Execute commands through shell escape at shipout.
+% \begin{macrocode}
+\sys_if_engine_luatex:TF
+ {
+ \cs_new_protected:Npn \sys_shell_shipout:n #1
+ {
+ \luatex_latelua:D { os.execute(" \luatex_luaescapestring:D { #1 } ") }
+ }
+ }
+ {
+ \cs_new_protected:Npn \sys_shell_shipout:n #1
+ {
+ \iow_shipout:Nn \c__sys_eighteen { #1 }
+ }
+ }
+\cs_generate_variant:Nn \sys_shell_shipout:n { x }
+% \end{macrocode}
+% \emph{Note:} We could do this fully-expandably in \LuaTeX, but not
+% in \pdfTeX. This should be discussed.
+% \end{macro}
+%
% \subsection{Additions to \pkg{l3tl}}
%
% \begin{macrocode}
diff --git a/l3kernel/testfiles/m3expl001.luatex.tlg b/l3kernel/testfiles/m3expl001.luatex.tlg
index 27c2cfc..b485837 100644
--- a/l3kernel/testfiles/m3expl001.luatex.tlg
+++ b/l3kernel/testfiles/m3expl001.luatex.tlg
@@ -5427,6 +5427,23 @@ Defining \sys_if_rand_exist:F on line ...
Defining \sys_if_rand_exist:TF on line ...
Defining \sys_rand_seed: on line ...
Defining \sys_gset_rand_seed:n on line ...
+Defining \c_sys_shell_escape_int on line ...
+Defining \sys_if_shell_p: on line ...
+Defining \sys_if_shell:T on line ...
+Defining \sys_if_shell:F on line ...
+Defining \sys_if_shell:TF on line ...
+Defining \sys_if_shell_unrestricted_p: on line ...
+Defining \sys_if_shell_unrestricted:T on line ...
+Defining \sys_if_shell_unrestricted:F on line ...
+Defining \sys_if_shell_unrestricted:TF on line ...
+Defining \sys_if_shell_restricted_p: on line ...
+Defining \sys_if_shell_restricted:T on line ...
+Defining \sys_if_shell_restricted:F on line ...
+Defining \sys_if_shell_restricted:TF on line ...
+Defining \sys_shell_now:n on line ...
+Defining \sys_shell_now:x on line ...
+Defining \sys_shell_shipout:n on line ...
+Defining \sys_shell_shipout:x on line ...
Defining \tl_if_single_token_p:n on line ...
Defining \tl_if_single_token:nT on line ...
Defining \tl_if_single_token:nF on line ...
diff --git a/l3kernel/testfiles/m3expl001.ptex.tlg b/l3kernel/testfiles/m3expl001.ptex.tlg
index 73766f3..52b1b71 100644
--- a/l3kernel/testfiles/m3expl001.ptex.tlg
+++ b/l3kernel/testfiles/m3expl001.ptex.tlg
@@ -5392,6 +5392,23 @@ Defining \sys_if_rand_exist:F on line ...
Defining \sys_if_rand_exist:TF on line ...
Defining \sys_rand_seed: on line ...
Defining \sys_gset_rand_seed:n on line ...
+Defining \c_sys_shell_escape_int on line ...
+Defining \sys_if_shell_p: on line ...
+Defining \sys_if_shell:T on line ...
+Defining \sys_if_shell:F on line ...
+Defining \sys_if_shell:TF on line ...
+Defining \sys_if_shell_unrestricted_p: on line ...
+Defining \sys_if_shell_unrestricted:T on line ...
+Defining \sys_if_shell_unrestricted:F on line ...
+Defining \sys_if_shell_unrestricted:TF on line ...
+Defining \sys_if_shell_restricted_p: on line ...
+Defining \sys_if_shell_restricted:T on line ...
+Defining \sys_if_shell_restricted:F on line ...
+Defining \sys_if_shell_restricted:TF on line ...
+Defining \sys_shell_now:n on line ...
+Defining \sys_shell_now:x on line ...
+Defining \sys_shell_shipout:n on line ...
+Defining \sys_shell_shipout:x on line ...
Defining \tl_if_single_token_p:n on line ...
Defining \tl_if_single_token:nT on line ...
Defining \tl_if_single_token:nF on line ...
diff --git a/l3kernel/testfiles/m3expl001.tlg b/l3kernel/testfiles/m3expl001.tlg
index d89918e..9922068 100644
--- a/l3kernel/testfiles/m3expl001.tlg
+++ b/l3kernel/testfiles/m3expl001.tlg
@@ -5417,6 +5417,23 @@ Defining \sys_if_rand_exist:F on line ...
Defining \sys_if_rand_exist:TF on line ...
Defining \sys_rand_seed: on line ...
Defining \sys_gset_rand_seed:n on line ...
+Defining \c_sys_shell_escape_int on line ...
+Defining \sys_if_shell_p: on line ...
+Defining \sys_if_shell:T on line ...
+Defining \sys_if_shell:F on line ...
+Defining \sys_if_shell:TF on line ...
+Defining \sys_if_shell_unrestricted_p: on line ...
+Defining \sys_if_shell_unrestricted:T on line ...
+Defining \sys_if_shell_unrestricted:F on line ...
+Defining \sys_if_shell_unrestricted:TF on line ...
+Defining \sys_if_shell_restricted_p: on line ...
+Defining \sys_if_shell_restricted:T on line ...
+Defining \sys_if_shell_restricted:F on line ...
+Defining \sys_if_shell_restricted:TF on line ...
+Defining \sys_shell_now:n on line ...
+Defining \sys_shell_now:x on line ...
+Defining \sys_shell_shipout:n on line ...
+Defining \sys_shell_shipout:x on line ...
Defining \tl_if_single_token_p:n on line ...
Defining \tl_if_single_token:nT on line ...
Defining \tl_if_single_token:nF on line ...
diff --git a/l3kernel/testfiles/m3expl001.uptex.tlg b/l3kernel/testfiles/m3expl001.uptex.tlg
index 003f864..2354c87 100644
--- a/l3kernel/testfiles/m3expl001.uptex.tlg
+++ b/l3kernel/testfiles/m3expl001.uptex.tlg
@@ -5390,6 +5390,23 @@ Defining \sys_if_rand_exist:F on line ...
Defining \sys_if_rand_exist:TF on line ...
Defining \sys_rand_seed: on line ...
Defining \sys_gset_rand_seed:n on line ...
+Defining \c_sys_shell_escape_int on line ...
+Defining \sys_if_shell_p: on line ...
+Defining \sys_if_shell:T on line ...
+Defining \sys_if_shell:F on line ...
+Defining \sys_if_shell:TF on line ...
+Defining \sys_if_shell_unrestricted_p: on line ...
+Defining \sys_if_shell_unrestricted:T on line ...
+Defining \sys_if_shell_unrestricted:F on line ...
+Defining \sys_if_shell_unrestricted:TF on line ...
+Defining \sys_if_shell_restricted_p: on line ...
+Defining \sys_if_shell_restricted:T on line ...
+Defining \sys_if_shell_restricted:F on line ...
+Defining \sys_if_shell_restricted:TF on line ...
+Defining \sys_shell_now:n on line ...
+Defining \sys_shell_now:x on line ...
+Defining \sys_shell_shipout:n on line ...
+Defining \sys_shell_shipout:x on line ...
Defining \tl_if_single_token_p:n on line ...
Defining \tl_if_single_token:nT on line ...
Defining \tl_if_single_token:nF on line ...
diff --git a/l3kernel/testfiles/m3expl001.xetex.tlg b/l3kernel/testfiles/m3expl001.xetex.tlg
index 7476ac1..c7d3b53 100644
--- a/l3kernel/testfiles/m3expl001.xetex.tlg
+++ b/l3kernel/testfiles/m3expl001.xetex.tlg
@@ -5400,6 +5400,23 @@ Defining \sys_if_rand_exist:F on line ...
Defining \sys_if_rand_exist:TF on line ...
Defining \sys_rand_seed: on line ...
Defining \sys_gset_rand_seed:n on line ...
+Defining \c_sys_shell_escape_int on line ...
+Defining \sys_if_shell_p: on line ...
+Defining \sys_if_shell:T on line ...
+Defining \sys_if_shell:F on line ...
+Defining \sys_if_shell:TF on line ...
+Defining \sys_if_shell_unrestricted_p: on line ...
+Defining \sys_if_shell_unrestricted:T on line ...
+Defining \sys_if_shell_unrestricted:F on line ...
+Defining \sys_if_shell_unrestricted:TF on line ...
+Defining \sys_if_shell_restricted_p: on line ...
+Defining \sys_if_shell_restricted:T on line ...
+Defining \sys_if_shell_restricted:F on line ...
+Defining \sys_if_shell_restricted:TF on line ...
+Defining \sys_shell_now:n on line ...
+Defining \sys_shell_now:x on line ...
+Defining \sys_shell_shipout:n on line ...
+Defining \sys_shell_shipout:x on line ...
Defining \tl_if_single_token_p:n on line ...
Defining \tl_if_single_token:nT on line ...
Defining \tl_if_single_token:nF on line ...
diff --git a/l3kernel/testfiles/m3expl003.luatex.tlg b/l3kernel/testfiles/m3expl003.luatex.tlg
index 1292d5c..df299a0 100644
--- a/l3kernel/testfiles/m3expl003.luatex.tlg
+++ b/l3kernel/testfiles/m3expl003.luatex.tlg
@@ -5428,6 +5428,23 @@ Defining \sys_if_rand_exist:F on line ...
Defining \sys_if_rand_exist:TF on line ...
Defining \sys_rand_seed: on line ...
Defining \sys_gset_rand_seed:n on line ...
+Defining \c_sys_shell_escape_int on line ...
+Defining \sys_if_shell_p: on line ...
+Defining \sys_if_shell:T on line ...
+Defining \sys_if_shell:F on line ...
+Defining \sys_if_shell:TF on line ...
+Defining \sys_if_shell_unrestricted_p: on line ...
+Defining \sys_if_shell_unrestricted:T on line ...
+Defining \sys_if_shell_unrestricted:F on line ...
+Defining \sys_if_shell_unrestricted:TF on line ...
+Defining \sys_if_shell_restricted_p: on line ...
+Defining \sys_if_shell_restricted:T on line ...
+Defining \sys_if_shell_restricted:F on line ...
+Defining \sys_if_shell_restricted:TF on line ...
+Defining \sys_shell_now:n on line ...
+Defining \sys_shell_now:x on line ...
+Defining \sys_shell_shipout:n on line ...
+Defining \sys_shell_shipout:x on line ...
Defining \tl_if_single_token_p:n on line ...
Defining \tl_if_single_token:nT on line ...
Defining \tl_if_single_token:nF on line ...
diff --git a/l3kernel/testfiles/m3expl003.ptex.tlg b/l3kernel/testfiles/m3expl003.ptex.tlg
index f2bcfdc..e7c5af4 100644
--- a/l3kernel/testfiles/m3expl003.ptex.tlg
+++ b/l3kernel/testfiles/m3expl003.ptex.tlg
@@ -5393,6 +5393,23 @@ Defining \sys_if_rand_exist:F on line ...
Defining \sys_if_rand_exist:TF on line ...
Defining \sys_rand_seed: on line ...
Defining \sys_gset_rand_seed:n on line ...
+Defining \c_sys_shell_escape_int on line ...
+Defining \sys_if_shell_p: on line ...
+Defining \sys_if_shell:T on line ...
+Defining \sys_if_shell:F on line ...
+Defining \sys_if_shell:TF on line ...
+Defining \sys_if_shell_unrestricted_p: on line ...
+Defining \sys_if_shell_unrestricted:T on line ...
+Defining \sys_if_shell_unrestricted:F on line ...
+Defining \sys_if_shell_unrestricted:TF on line ...
+Defining \sys_if_shell_restricted_p: on line ...
+Defining \sys_if_shell_restricted:T on line ...
+Defining \sys_if_shell_restricted:F on line ...
+Defining \sys_if_shell_restricted:TF on line ...
+Defining \sys_shell_now:n on line ...
+Defining \sys_shell_now:x on line ...
+Defining \sys_shell_shipout:n on line ...
+Defining \sys_shell_shipout:x on line ...
Defining \tl_if_single_token_p:n on line ...
Defining \tl_if_single_token:nT on line ...
Defining \tl_if_single_token:nF on line ...
diff --git a/l3kernel/testfiles/m3expl003.tlg b/l3kernel/testfiles/m3expl003.tlg
index b021fa3..4a4dee6 100644
--- a/l3kernel/testfiles/m3expl003.tlg
+++ b/l3kernel/testfiles/m3expl003.tlg
@@ -5418,6 +5418,23 @@ Defining \sys_if_rand_exist:F on line ...
Defining \sys_if_rand_exist:TF on line ...
Defining \sys_rand_seed: on line ...
Defining \sys_gset_rand_seed:n on line ...
+Defining \c_sys_shell_escape_int on line ...
+Defining \sys_if_shell_p: on line ...
+Defining \sys_if_shell:T on line ...
+Defining \sys_if_shell:F on line ...
+Defining \sys_if_shell:TF on line ...
+Defining \sys_if_shell_unrestricted_p: on line ...
+Defining \sys_if_shell_unrestricted:T on line ...
+Defining \sys_if_shell_unrestricted:F on line ...
+Defining \sys_if_shell_unrestricted:TF on line ...
+Defining \sys_if_shell_restricted_p: on line ...
+Defining \sys_if_shell_restricted:T on line ...
+Defining \sys_if_shell_restricted:F on line ...
+Defining \sys_if_shell_restricted:TF on line ...
+Defining \sys_shell_now:n on line ...
+Defining \sys_shell_now:x on line ...
+Defining \sys_shell_shipout:n on line ...
+Defining \sys_shell_shipout:x on line ...
Defining \tl_if_single_token_p:n on line ...
Defining \tl_if_single_token:nT on line ...
Defining \tl_if_single_token:nF on line ...
diff --git a/l3kernel/testfiles/m3expl003.uptex.tlg b/l3kernel/testfiles/m3expl003.uptex.tlg
index 9109005..355e0cb 100644
--- a/l3kernel/testfiles/m3expl003.uptex.tlg
+++ b/l3kernel/testfiles/m3expl003.uptex.tlg
@@ -5391,6 +5391,23 @@ Defining \sys_if_rand_exist:F on line ...
Defining \sys_if_rand_exist:TF on line ...
Defining \sys_rand_seed: on line ...
Defining \sys_gset_rand_seed:n on line ...
+Defining \c_sys_shell_escape_int on line ...
+Defining \sys_if_shell_p: on line ...
+Defining \sys_if_shell:T on line ...
+Defining \sys_if_shell:F on line ...
+Defining \sys_if_shell:TF on line ...
+Defining \sys_if_shell_unrestricted_p: on line ...
+Defining \sys_if_shell_unrestricted:T on line ...
+Defining \sys_if_shell_unrestricted:F on line ...
+Defining \sys_if_shell_unrestricted:TF on line ...
+Defining \sys_if_shell_restricted_p: on line ...
+Defining \sys_if_shell_restricted:T on line ...
+Defining \sys_if_shell_restricted:F on line ...
+Defining \sys_if_shell_restricted:TF on line ...
+Defining \sys_shell_now:n on line ...
+Defining \sys_shell_now:x on line ...
+Defining \sys_shell_shipout:n on line ...
+Defining \sys_shell_shipout:x on line ...
Defining \tl_if_single_token_p:n on line ...
Defining \tl_if_single_token:nT on line ...
Defining \tl_if_single_token:nF on line ...
diff --git a/l3kernel/testfiles/m3expl003.xetex.tlg b/l3kernel/testfiles/m3expl003.xetex.tlg
index 5bd89aa..5b15c71 100644
--- a/l3kernel/testfiles/m3expl003.xetex.tlg
+++ b/l3kernel/testfiles/m3expl003.xetex.tlg
@@ -5401,6 +5401,23 @@ Defining \sys_if_rand_exist:F on line ...
Defining \sys_if_rand_exist:TF on line ...
Defining \sys_rand_seed: on line ...
Defining \sys_gset_rand_seed:n on line ...
+Defining \c_sys_shell_escape_int on line ...
+Defining \sys_if_shell_p: on line ...
+Defining \sys_if_shell:T on line ...
+Defining \sys_if_shell:F on line ...
+Defining \sys_if_shell:TF on line ...
+Defining \sys_if_shell_unrestricted_p: on line ...
+Defining \sys_if_shell_unrestricted:T on line ...
+Defining \sys_if_shell_unrestricted:F on line ...
+Defining \sys_if_shell_unrestricted:TF on line ...
+Defining \sys_if_shell_restricted_p: on line ...
+Defining \sys_if_shell_restricted:T on line ...
+Defining \sys_if_shell_restricted:F on line ...
+Defining \sys_if_shell_restricted:TF on line ...
+Defining \sys_shell_now:n on line ...
+Defining \sys_shell_now:x on line ...
+Defining \sys_shell_shipout:n on line ...
+Defining \sys_shell_shipout:x on line ...
Defining \tl_if_single_token_p:n on line ...
Defining \tl_if_single_token:nT on line ...
Defining \tl_if_single_token:nF on line ...
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the latex3-commits
mailing list