\newcommand\foo{} 和 \newcommand{\foo}{} ([lua]latex)之间是否有首选方法

\newcommand\foo{} 和 \newcommand{\foo}{} ([lua]latex)之间是否有首选方法

我读这个答案其中写道:

LaTeX 并没有采取任何特殊措施来允许这两种形式,只是根据一般的 TeX 宏语法规则,如果宏参数是一个单个标记,则可以省略括号。

我只是好奇,有没有“最佳实践”或者“更安全”如果我们谈论的是 (lua)latex,那么两者之间有什么区别?因为我看到很多命令定义中人们在命令名称周围使用花括号,而有些则不使用。或者这只是个人喜好,仅此而已?

答案是否会因\newenvironment或等定义而改变\NewDocumentCommand

PS:我对一些东西还很陌生,所以更具体地说,我说的是 LaTeX2e(但我不知道与 LaTeX 的区别)。

答案1

两者之间没有真正的区别

\newcommand{\foo}{...}

\newcommand\foo{...}

但通常我坚持使用前者,因为它符合 Lamport 手册中的语法。是否使用 LuaLaTeX 并不重要。

因为\NewDocumentCommand它完全一样。当然,你不能

\newenvironment foo{...}{...}

因为参数通常是一个包含多个字符的字符串。

类似地,\setlength\foo{...}与 相同\setlength{\foo}{...},但是

\setcounter foo{...}

会让 TeX 厌恶地尖叫。

答案2

这个问题与这个

我知道在数学中,可能会有歧义的命令,例如\frac110我绝对必须使用花括号,但对于我询问的命令,根本没有区别。具体来说,当提供一个像这样的单个标记参数时\mycommandname。所以这确实取决于你的喜好。我们都知道唯一应该存在的是一致性,也就是说,你应该坚持一种做事方式。当然,可读性也是你应该牢记的事情。

相关内容