我读这个答案其中写道:
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
。所以这确实取决于你的喜好。我们都知道唯一应该存在的是一致性,也就是说,你应该坚持一种做事方式。当然,可读性也是你应该牢记的事情。