这个问题\over
解释了和之间的区别\frac
,似乎最有经验的成员一致认为它\over
是较差的(如果不是完全后悔的话);但是,egreg 的例子虽然说明了一个潜在的问题,但还不足以阻止我对它的实用性\over
。
我刚刚发现这个命令,还没有在任何地方实现它,但是发现在实用性方面不必到处使用分隔符(特别是当我对表达式进行大量颜色编码时,这也会成倍增加分隔符)。
我相信这个社区的经验,但如果可能的话,我想了解什么样的实际的\over
我在处理简单表达式时偶尔使用时可能遇到哪些问题?
因为实际的是主观的,我将尝试用 egreg 的例子来说明预期的衡量标准:他说明了以下两者之间的渲染差异:
\[
\fam0 a \over b
\]
和
\[
\frac{\fam0 a}{b}
\]
就我的目的而言,如果出现这样的问题,可以很容易地通过使用\frac
和轻松解决,因此,虽然这个例子说明了一个缺点 以及\over
对更强大的东西的需求,\over
当它确实产生所需的输出时,它并没有向我说明任何要避免的理由。
答案1
在2014 年 TeX 调整(TUGboat,第 35 卷(2014 年),第 1 期),其中讨论了根据 2008 年至 2013 年收到的评论对 TeX 所做的所有更改(所有更改 = 单个更改:看到这个问题),Donald Knuth 回答了一个关于\over
versus\frac
和 similar 的问题:
问题与解答 芭芭拉(Beeton)还请我回答三个问题,她说这些问题“不断出现在各种论坛上”,这样,如果这些问题再次出现,她就可以为人们指出答案。
[…]
(2)如果您现在设计 TeX,您是否仍会使用
\over
和 朋友,而不是 之类的东西\frac{...}{...}
,因为后者可以避免使用\mathchoice
和的必要性\mathpalette
?这个问题,来自
tex.stackexchange.com
,也引用自[TeXbook]:
\mathchoice
在时间和空间方面有点昂贵,只有当您愿意付出代价时才应该使用它。好吧,我想这句话暗示了我的答案。因为我在 1982 年显然愿意付出代价,所以今天我当然愿意付出零代价!
我想世界上有些人更喜欢像“sum(2, 3)”这样的表达式,而不是“2 + 3”;但我肯定不在其中。自从 TeX 诞生以来,我一直很高兴能够写出“
2\over3
”或“n\choose k
”或“p\atop q
”或···,而不是被迫写出像“frac{2}{3}
”这样会分散我对手头任务注意力的东西。提问者似乎想将负担放在所有用户身上,而不是放在少数宏观开发者的身上。
如果你看一下 LaTeX 的定义\frac
(你可以调用texdoc source2e
它来阅读它),你会看到它是:
(您还可以找到这个定义
\def\frac#1#2{{\begingroup#1\endgroup\over#2}}
在 中texmf-dist/source/latex/base/ltmath.dtx
,或与\show
,或其他。)
因此,每当您键入\frac{a}{b}
文档时,就好像您键入了以下内容:
{\begingroup a \endgroup\over b}
使用 并没有什么特别或神奇之处\frac
。如果在给定的(典型)上下文中不需要\begingroup
和\endgroup
(即,没有它们也会产生相同的输出),则可以删除它们,外括号也类似,这样就相当于a \over b
在这种情况下写作。
就你的问题而言:
就我的目的而言,如果出现这样的问题,可以很容易地通过使用
\frac
和轻松解决,因此,虽然这个例子说明了一个缺点以及\over
对更强大的东西的需求,\over
当它确实产生所需的输出时,它并没有向我说明任何要避免的理由。
根本没有您所寻找的实际差异:当\over
产生所需的输出时,它们是等效的;唯一的使用要点\frac
是有时它们并不等效并且\over
可能会给您不想要的输出。
总结一下:您的选择可以归结为两个选项:
你喜欢这个
\frac
语法。那就使用它吧,然后庆幸自己不必担心意外得到错误的输出,并且可以“符合”冗长的 LaTeX 语法约定。你喜欢这个
\over
语法。那就使用它吧,然后庆幸自己有了这个更简单的语法(Knuth 也喜欢这个语法),如果你不小心得到了错误的输出,只要注意到它并修复它,告诉自己这不是什么大问题。
当你要求“实际后果”并说你
无法想象在什么情况下使用会
\over
导致无法通过仅使用来解决的问题\frac
我不知道你在寻找什么样的答案,因为不存在这样的背景,根据定义(of \frac
):如果在某些情况下\over
给出了错误的输出,您可以随时通过添加括号或组来修复它,实际上也可以通过使用 来修复它\frac
。这就是它的用途。
答案2
\over
在 LaTeX 文档中使用没有任何优势。
LaTeX 的一个主要目标是为基于 tex 的标记提供一致的语法,在{}
可选参数中包括强制参数[]
等。因此,\rule{2pt}{3pt}
使用\hrule width 2pt height 3pt
可以\over
完全打破这种局面。
如果你使用\over
with amsmath
loaded 你会收到警告
Package amsmath Warning: Foreign command \over;
(amsmath) \frac or \genfrac should be used instead
(amsmath) on input line 6.
从很多方面来说,这很遗憾,这只是一个警告,而不是错误,我们和 AMS 当时还不够勇敢 :-)
实际上,TeX 在\over
大多数情况下都可以工作,除非某些包变得更大胆并取消定义它,但它不遵循相同的语法规则这一事实确实有代价,尤其是在 TeX 到 html 和其他转换器上。如果不使用完整的 TeX 执行引擎,很难知道参数是什么\over
,因此它使转换器的工作变得复杂,这些转换器可能根本不支持它,或者只支持简单的情况。
如果您认为\over
语法更简单,请在运行示例之前回答以下问题。
上述每种情况的分数是多少?
\documentclass{article}
\begin{document}
$ 1 + \begingroup a \over b \endgroup + 2$
$ 1 + \bgroup a \over b \egroup + 2$
$ 1 + { a \over b \egroup + 2$
$ 1 + \bgroup a \over b } + 2$
\end{document}