summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/l3kernel/l3tl.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-07 03:00:49 +0000
committerNorbert Preining <norbert@preining.info>2019-09-07 03:00:49 +0000
commit7345b8683c7cbeaedf53e992fda0b3fa6141084e (patch)
tree3246f6574e0921c2111b93b76720f54034238185 /macros/latex/contrib/l3kernel/l3tl.dtx
parentbd3ecfd29a422ad4d7f8f1e119ddc518494e567a (diff)
CTAN sync 201909070300
Diffstat (limited to 'macros/latex/contrib/l3kernel/l3tl.dtx')
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx67
1 files changed, 56 insertions, 11 deletions
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index 77444e6d13..d0325848e3 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-08-25}
+% \date{Released 2019-09-05}
%
% \maketitle
%
@@ -353,7 +353,8 @@
%
% \section{Token list conditionals}
%
-% \begin{function}[EXP,pTF]{\tl_if_blank:n, \tl_if_blank:V, \tl_if_blank:o}
+% \begin{function}[EXP,pTF, updated = 2019-09-04]
+% {\tl_if_blank:n, \tl_if_blank:e, \tl_if_blank:V, \tl_if_blank:o}
% \begin{syntax}
% \cs{tl_if_blank_p:n} \Arg{token list}
% \cs{tl_if_blank:nTF} \Arg{token list} \Arg{true code} \Arg{false code}
@@ -551,6 +552,25 @@
% receives the \meta{item} as |#1|. See also \cs{tl_map_function:nN}.
% \end{function}
%
+% \begin{function}[rEXP, added = 2019-09-02]
+% {\tl_map_tokens:Nn, \tl_map_tokens:cn, \tl_map_tokens:nn}
+% \begin{syntax}
+% \cs{tl_map_tokens:Nn} \meta{tl~var} \Arg{code}
+% \cs{tl_map_tokens:nn} \meta{tokens} \Arg{code}
+% \end{syntax}
+% Analogue of \cs{tl_map_function:NN} which maps several tokens
+% instead of a single function. The \meta{code} receives each item in
+% the \meta{tl~var} or \meta{tokens} as two trailing brace groups. For
+% instance,
+% \begin{verbatim}
+% \tl_map_tokens:Nn \l_my_tl { \prg_replicate:nn { 2 } }
+% \end{verbatim}
+% expands to twice each item in the \meta{sequence}: for each item in
+% |\l_my_tl| the function \cs{prg_replicate:nn} receives |2| and
+% \meta{item} as its two arguments. The function
+% \cs{tl_map_inline:Nn} is typically faster but is not expandable.
+% \end{function}
+%
% \begin{function}[updated = 2012-06-29]
% {\tl_map_variable:NNn, \tl_map_variable:cNn}
% \begin{syntax}
@@ -1065,12 +1085,11 @@
% Leaves in the input stream the items from the \meta{start index} to the
% \meta{end index} inclusive. Spaces and braces are preserved between
% the items returned (but never at either end of the list).
-%
% Here \meta{start index} and \meta{end index} should be integer denotations.
% For describing in detail the functions' behavior, let $m$ and $n$ be the start
% and end index respectively. If either is $0$, the result is empty. A positive
-% index means `start counting from the left end', a negative index means
-% `start counting from the right end'. Let $l$ be the count of the token list.
+% index means `start counting from the left end', and a negative index means
+% `from the right end'. Let $l$ be the count of the token list.
%
% The \emph{actual start point} is determined as $M=m$ if~$m>0$ and as $M=l+m+1$
% if~$m<0$. Similarly the \emph{actual end point} is $N=n$ if~$n>0$ and $N=l+n+1$
@@ -1110,16 +1129,17 @@
% \begin{verbatim}
% \tl_range:nnn { abcd~{e{}}f } { 2 } { 4 }
% \end{verbatim}
-% will discard the space after `d`.
+% will discard the space after `d'.
%
-% If we want to get the items from the third to the last, the call
+% If we want to get the items from, say, the third to the last in a token
+% list |<tl>|, the call
% is |\tl_range:nnn { <tl> } { 3 } { -1 }|. Similarly, for discarding
% the last item, we can do |\tl_range:nnn { <tl> } { 1 } { -2 }|.
%
-% The behavior of \cs{tl_range:Nnn} is exactly the same, acting on the
-% contents of the tl variable.
+%^^A The behavior of \cs{tl_range:Nnn} is exactly the same, acting on the
+%^^A contents of the tl variable.
%
-% For improved performance, see \cs{tl_range_braced:nnn} and
+% For better performance, see \cs{tl_range_braced:nnn} and
% \cs{tl_range_unbraced:nnn}.
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
@@ -2033,7 +2053,7 @@
\fi:
}
\prg_generate_conditional_variant:Nnn \tl_if_blank:n
- { V , o } { p , T , F , TF }
+ { e , V , o } { p , T , F , TF }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2408,6 +2428,31 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\tl_map_tokens:nn}
+% \begin{macro}{\tl_map_tokens:Nn, \tl_map_tokens:cn}
+% \begin{macro}{\@@_map_tokens:nn}
+% Much like the function mapping.
+% \begin{macrocode}
+\cs_new:Npn \tl_map_tokens:nn #1#2
+ {
+ \@@_map_tokens:nn {#2} #1
+ \q_recursion_tail
+ \prg_break_point:Nn \tl_map_break: { }
+ }
+\cs_new:Npn \tl_map_tokens:Nn
+ { \exp_args:No \tl_map_tokens:nn }
+\cs_generate_variant:Nn \tl_map_tokens:Nn { c }
+\cs_new:Npn \@@_map_tokens:nn #1#2
+ {
+ \quark_if_recursion_tail_break:nN {#2} \tl_map_break:
+ \use:n {#1} {#2}
+ \@@_map_tokens:nn {#1}
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}{\tl_map_variable:nNn}
% \begin{macro}{\tl_map_variable:NNn, \tl_map_variable:cNn}
% \begin{macro}{\@@_map_variable:Nnn}