summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3tl.dtx')
-rw-r--r--Master/texmf-dist/source/latex/l3kernel/l3tl.dtx38
1 files changed, 37 insertions, 1 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx
index a5eae16dbb9..c9d8c8b4825 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 2019-03-26}
+% \date{Released 2019-04-06}
%
% \maketitle
%
@@ -469,6 +469,16 @@
% token count $1$ according to \cs{tl_count:n}.
% \end{function}
%
+% \begin{function}[EXP,pTF]{\tl_if_single_token:n}
+% \begin{syntax}
+% \cs{tl_if_single_token_p:n} \Arg{token list}
+% \cs{tl_if_single_token:nTF} \Arg{token list} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Tests if the token list consists of exactly one token, \emph{i.e.}~is
+% either a single space character or a single \enquote{normal} token.
+% Token groups (|{|\ldots|}|) are not single tokens.
+% \end{function}
+%
% \begin{function}[added = 2013-07-24, EXP, noTF]{\tl_case:Nn, \tl_case:cn}
% \begin{syntax}
% \cs{tl_case:NnTF} \meta{test token list variable} \\
@@ -2224,6 +2234,32 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}[EXP,pTF]{\tl_if_single_token:n}
+% There are four cases: empty token list, token list starting with a
+% normal token, with a brace group, or with a space token. If the
+% token list starts with a normal token, remove it and check for
+% emptiness. For the next case, an empty token list is not a single
+% token. Finally, we have a non-empty token list starting with a
+% space or a brace group. Applying \texttt{f}-expansion yields an
+% empty result if and only if the token list is a single space.
+% \begin{macrocode}
+\prg_new_conditional:Npnn \tl_if_single_token:n #1 { p , T , F , TF }
+ {
+ \tl_if_head_is_N_type:nTF {#1}
+ { \@@_if_empty_if:o { \use_none:n #1 } }
+ {
+ \tl_if_empty:nTF {#1}
+ { \if_false: }
+ { \@@_if_empty_if:o { \exp:w \exp_end_continue_f:w #1 } }
+ }
+ \prg_return_true:
+ \else:
+ \prg_return_false:
+ \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}[EXP, noTF]{\tl_case:Nn, \tl_case:cn}
% \begin{macro}[EXP]{\@@_case:nnTF}
% \begin{macro}[EXP]{\@@_case:Nw}