x
型展开是递归展开至不可展开为止, f
型展开类似于 x
型展开,但是它会在展开至(遇到)第一个不可展开的 token 时停止.
这里你不应该使用 \tl_use:N
因为它会直接显示该 token 的值.
你可以使用 \cs_meaning:N
或者 \tl_log:N
等函数.
\ExplSyntaxOn
\tl_set:Nn \l_mya_tl { A }
\tl_set:Nn \l_myb_tl { B }
\tl_set:Nx \l_mya_tl { text1 \l_mya_tl text2 \l_myb_tl text3 }
\tl_log:N \l_mya_tl \par
\tl_set:Nn \l_myc_tl { C }
\tl_set:Nn \l_myd_tl { D }
% \tl_set:Nf \l_myc_tl { text\l_myc_tltext\l_myd_tl} % error
\tl_set:Nf \l_myc_tl { \l_myc_tl text\l_myd_tl }
% 体现不出来区别,也不是很明白什么叫<space token>
\tl_log:N \l_myc_tl \par
\ExplSyntaxOff
在日志中可看到
> \l_mya_tl=text1Atext2Btext3.
> \l_myc_tl=Ctext\l_myd_tl .
问 如何构造适当的例子区分expl3中的`x`和`f`参数...