在 LaTeX3 中,有一些函数,如\use:n
和\use:nn
等。在文档中,它们将删除每个参数周围的括号,并将剩余的标记保留在输入流中。所以
\use:n { some code }
导致输入流包含
some code
这和简单的使用有什么区别some code
?
答案1
与任何 TeX 编程一样,代码中需要吸收和重新发出标记expl3
。我们可能至少有两个原因想要这样做。第一个原因是,当参数被吸收时会发生标记化。因此,我们可能想要切换类别代码设置并读取文件:
\use:n { \ExplSyntaxOff \file_input:n {#1} }
在上面,\file_input:n
是单个标记,但在文件中,然后读取两者_
并且:
是不是字母。
我们需要做的第二件常见事情是,处理一些无操作或类似操作的情况\use:n
:为了方便起见,我们需要一个带括号的组,但不希望括号影响输出。因此
\if_meaning:w #1 #2
\exp_after:wN \use_none:n
\else:
\exp_after:wN \use:n
\fi:
{ tokens-here }
当测试为假时,将插入不带任何周围组的标记,否则将完全删除它们。