\tl_set:Nf 删除其 #2 中的起始空格

\tl_set:Nf 删除其 #2 中的起始空格

在语法上

\tl_set:Nf <tl var> {<tokens>}

如果<tokens>以空格开头(输入~),则该空格不会出现在 的定义中<tl var>。如果 的中间或末尾出现空格<tokens>,则保留在 中<tl var>

版本信息:

latex2e 2019-10-01
expl3   2020-01-12

例子

\documentclass{article}
\usepackage{expl3}

\begin{document}
\ExplSyntaxOn
\tl_new:N \l_test_tl

% \l_test_tl is set to "text", the beginning space is removed
\tl_set:Nf \l_test_tl { ~ text }
\verb|\tl_set:Nf|:~ |\l_test_tl| \par

% \l_test_tl is set to " text"
\edef \l_test_tl { ~ text }
\verb|\edef|:~ |\l_test_tl|

\ExplSyntaxOff
\end{document}

答案1

f类型扩展被记录为删除前导空格:这是不可避免的,因为它是使用 实现的\romannumeral。对于新的代码中,e内部使用\expanded(或模拟)-type 变体避免了这个问题,并且可以f在过去使用 -type 扩展的几乎所有情况下使用。

答案2

从文档texdoc interface3第 I.1 节中,f第一次引入了 -type 扩展(感谢@frougon 在评论中指出这一点):

如果此标记是<space token>,它将被吞噬,因此不会成为结果参数的一部分。

因此,f-type 扩展总是会吞噬第一个空间标记。

相关内容