diff options
author | Karl Berry <karl@freefriends.org> | 2019-09-06 21:14:35 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-09-06 21:14:35 +0000 |
commit | eb76e93af3b7c53f70f6fd840a6923541250b1ba (patch) | |
tree | c2a22c1fab23169e2bd4aaa0e1b6facdfac80a6c /Master/texmf-dist/source/latex/l3kernel/l3tl.dtx | |
parent | 672ea6ad9ccdaf9dd827a8a0d9c41e18a07cc6ab (diff) |
l3 (6sep19)
git-svn-id: svn://tug.org/texlive/trunk@52041 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/l3kernel/l3tl.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/l3kernel/l3tl.dtx | 67 |
1 files changed, 56 insertions, 11 deletions
diff --git a/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx b/Master/texmf-dist/source/latex/l3kernel/l3tl.dtx index 77444e6d13c..d0325848e36 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-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} |