下面的代码显示了我想要得到的结果和遇到的障碍:
\documentclass{l3doc}
\usepackage{expl3}
\ExplSyntaxOn
\cs_set:Npn \__foo:n #1
{
(#1)
}
\ExplSyntaxOff
\begin{document}
\ExplSyntaxOn
\tl_map_function:nN
{{a}{b}}
\__foo:n % (a)(b) %OK
\tl_set:Nn \l_tmpa_tl
{
\int_step_inline:nnnn{1}{1}{2}
{
%{ % inner braces
\int_to_alph:n{#1}
%}
}
}
\\\tl_map_function:nN
\l_tmpa_tl
\__foo:n % wanted (a)(b), getting (ab), including with inner braces
% \tl_map_function:nN
%{
% \int_step_inline:nnnn{1}{1}{2}
% {
% \int_to_alph:n{#1}
% } % wanted: (a)(b)
%% Getting:
%%! Missing number, treated as zero.
%%<to be read again>
%% )
%% l.N } \__foo:n
%%} \__foo:n
%% Same error for:
%\tl_set:Nx \l_tmpa_tl
%{
% \int_step_inline:nnnn{1}{1}{2}
% {
% %{
% \int_to_alph:n{#1}
% %}
% }
%}
\ExplSyntaxOff
\end{document}
答案1
如果你看着\tl_show:N \l_tmpa_tl
这个值,你会发现它是不是 ab
,但与之有很大不同。
您必须使用\tl_set:Nx
和\int_step_function:nnnN
才能获取ab
的内容\l_tmpa_tl
。接下来,您需要\tl_map_function:NN
使用 的值\l_tmpa_tl
,而不是像 那样使用令牌本身\tl_map_function:nN
。
\documentclass{article}
\usepackage{expl3}
\begin{document}
\ExplSyntaxOn
\cs_set:Npn \__foo:n #1
{
(#1)
}
First:~\tl_map_function:nN {{a}{b}} \__foo:n
\par
\tl_set:Nx \l_tmpa_tl
{
\int_step_function:nnnN{1}{1}{2} \int_to_alph:n
}
Second:~\tl_map_function:NN \l_tmpa_tl \__foo:n
\ExplSyntaxOff
\end{document}