为什么不需要关闭这个括号?

为什么不需要关闭这个括号?

当我编译以下文档时,没有出现任何错误

\documentclass{article}

\newcommand{\foo}{foo}

\begin{document}
Why is \foo{ indifferent about its closing brace?
\end{document}

但没有}for \foo。使用\newcommand*没有区别。文档的编译结果与存在右括号时相同。

答案1

\foo定义时没有参数,因此 TeX 不会查找任何参数。通常,{}<space>用于“终止”没有参数的宏的控制序列(例如\foo{}<space>:),从而产生宏的扩展加上尾随空格,但这绝不是必需的,并且\foo\<space>完成相同的操作。

从那时起,由于括号没有用于分隔参数,因此{进入一个组,该组在日志文件中报告:

### simple group (level 1) entered at line 6 ({)

然后,文档在组关闭之前结束(这不是错误),这也在日志文件中报告:

(\end occurred inside a group at level 1)

由于某种原因,此处的内联代码片段中未显示尾随空格,因此我将其标记为 ,<space>因为它们对于当前的讨论很重要。当然,在实际代码中,<space>是一个空格字符。

相关内容