在命令末尾添加 {} 与 xspace

在命令末尾添加 {} 与 xspace

我已阅读

LaTeX 命令后的空格

但我目前使用的替代方案没有被提及:

\newcommand{\arnold}{Arnold Schwarzenegger{}}

这当然比在调用命令后添加更少的输入,也更不容易出错{}。到目前为止,我还没有遇到任何问题;相反,我注意到,在一些\xspace插入不需要的空格的复杂情况下,{}一切都会好起来。

所以我只是想知道为什么显然没有其他人使用它,以及它是否会导致我不知道的问题。

编辑:在评论之后,我意识到我总是使用这种方法与带有参数的命令,所以我的例子应该是

\newcommand{\arnold}[1]{Arnold #1 Schwarzenegger}

这将教会我始终检查我的示例,无论它们看起来与我的代码有多么相似。

因此,实际上是参数而不是 {} 导致了正确的间距。如果有人能向我解释为什么参数会产生影响,我会非常高兴。

答案1

问题是为什么源中的空格不会在输出中产生空格。后面的空格\arnold用于结束命令名称,并且没有被标记,因此不会产生任何输出。因此在无参数形式中

\arnold text

扩展为

Arnold Schwarzenegger{}text

它将排版为“Arnold Schwarzeneggertext”,但{}没有任何用处。

相反,在带有参数的形式中,后面的空格仍然\arnold没有被标记,因此

\arnold {} text

\arnold{} text

解析方式相同,均扩展为

 Arnold␣␣Schwarzenegger␣text

因此,参数后的空格仅被视为普通的单词空格,但您会在 Arnold 和 Schwarzenegger 之间得到两个空格标记空格。

相关内容