這個問題\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
VS\frac
和 類似的問題:
問題與解答 芭芭拉(比頓)還要求我回答三個問題,她說這些問題“在各種論壇上不斷出現”,這樣如果這些問題再次出現,她可以為人們指出答案。
[…]
(2) 如果你今天在設計 TeX,當後者可以避免使用and的必要性時,你還會使用
\over
and Friends,而不是像 , 之類的東西 嗎?\frac{...}{...}
\mathchoice
\mathpalette
這個問題,來自
tex.stackexchange.com
,也引用自[的第151頁教材]:
\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
loadamsmath
則會收到警告
Package amsmath Warning: Foreign command \over;
(amsmath) \frac or \genfrac should be used instead
(amsmath) on input line 6.
從很多方面來說,這只是一個警告而不是錯誤,這是一種恥辱,我們和 AMS 當時不夠勇敢:-)
實際上,\over
在大多數情況下,TeX 中當然可以工作,除非某些包確實變得更勇敢並且未定義它,但是它不遵守相同語法規則的事實確實會產生成本,特別是在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}