5 如何构造适当的例子区分expl3中的`x`和`f`参数...

发布于 2024-08-07 16:38:14

在文档中对参数xf的说明如下:
image1.png

对其中f参数给的例子我对代码进行了如下尝试

image2.png

\documentclass{article}
\usepackage[margin=2cm]{geometry}
\usepackage{amsmath}
\usepackage{ctex}
\pagestyle{empty}
\begin{document}
\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_use: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_use:N \l_myc_tl \par
\ExplSyntaxOff
\end{document}

我的问题是:
对于f中的效果,为何不像文档中体现的只解析第一个参数然后停下?是否是因为\tl_use:N也有解析参数的功能导致没有体现这两个参数类型的差别?

查看更多

关注者
0
被浏览
465
鱼香肉丝没有鱼先生
脾气不好,别来惹我!!!

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 .
1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览