在 (La)TeX 中输入数学时,我经常省略宏的第一个参数周围的括号\frac
,至少在它是 时是这样1
,写的东西像\frac1{1+x^2}
。我最初是在阅读别人写的文档时遇到这种用法的,并认为它是一个不同的宏(可能定义为 )\newcommand{\frac1}[1]{\frac{1}{#1}}
。
尽管我现在明白了这种工作方式\frac1
,但我仍然想知道:这是一种可接受的用法,还是普遍不被认可?
答案1
对你的问题的简短回答:不,至少原则上不是。
较长的答案:这是 LaTeX 命令的实际定义\frac
:
\def\frac#1#2{{\begingroup#1\endgroup\over#2}}
这表明 LaTeX 的\frac
命令是 TeX 命令的 (设计非常精良的) 包装器\over
。根据 TeX 的语法规则,如果命令的“参数”\frac
未括在花括号中,TeX 会很乐意将之后遇到的第一个非空白项/字符视为 ,\frac
将#1
第二个项视为#2
。因此,\frac12
(对于 TeX 的解析器而言) 与 相同\frac{1}{2}
,并且——请注意和\frac xy
之间的空格——与 相同。c
x
\frac{x}{y}
话虽如此,我怀疑如果你养成了在分子和分母都由单个字母或数字组成时省略括号的习惯,你很快就会忘记你正在使用一种简写方法。那么,迟早你会写出类似的东西,\frac 1 12
并开始想知道为什么它没有被渲染成\frac{1}{12}
...
附录:你提到了尝试创建单参数宏的想法
\newcommand{\frac1}[1]{\frac{1}{#1}}
不幸的是,这行不通,因为 TeX 不允许你在宏名称中混合字母和数字(除非你求助于\cs
...\endcs
绕道)。但是,为什么还要费心创建这种单参数版本的\frac
宏呢?请注意,这\frac1{<denominator>}
是一个完全有效的 LaTeX 表达式:1
后面的\frac
将\frac1
被 TeX 解释为#1
双参数宏的一部分——这正是你想要的,对吗?
答案2
不知道这应该是一个答案还是一个评论......
对于 TeX 编译器来说,省略花括号是完全可以接受的,但如果你使用Latexdiff。或者,一般来说,所有试图解析 LaTeX 代码而不是 LaTeX 本身的东西,例如许多编辑器的语法高亮器。
这本身并不是一个大问题,但我个人认为 Latexdiff 非常有用,并建议您将其集成到您的正常工作流程中,特别是当您与其他人合作编写 TeX 文档时。
答案3
TeX 中不存在语法错误,只要它能正常工作。在以纯 TeX 为主的文件中,以这种方式编写是很常见的。如果您使用 LaTeX,最好将它们括在花括号中,以保持一致性和良好的风格,更不用说对可能不像您那样熟悉 TeX/LaTeX 的审阅者的礼貌了。
在 LaTeX 内核源代码中,团队没有使用括号(可能是为了节省标记),例如:
\DeclareTextCommandDefault{\textonequarter}{\ensuremath {\frac14}}
我个人的偏好是在所有情况下都使用大括号。