使用 \over 與 \frac 的實際後果?

使用 \over 與 \frac 的實際後果?

這個問題\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 回答了一個關於\overVS\frac和 類似的問題:

問題與解答 芭芭拉(比頓)還要求我回答三個問題,她說這些問題“在各種論壇上不斷出現”,這樣如果這些問題再次出現,她可以為人們指出答案。

[…]

(2) 如果你今天在設計 TeX,當後者可以避免使用and的必要性時,你還會使用\overand 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來閱讀它),你會發現它是:

<code>\frac</code> 的定義

(您也可以找到這個定義

\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可能會為您帶來不需要的輸出。

總結一下:您的選擇可以歸結為兩個選項:

  1. 你喜歡這個\frac語法。然後使用它,並慶幸自己不必擔心意外得到錯誤的輸出,並且與冗長的 LaTeX 語法約定「一致」。

  2. 你喜歡這個\over語法。然後使用它,並祝賀自己有了更簡單的語法(Knuth 也喜歡),如果您不小心得到了錯誤的輸出,只需注意它並修復它,告訴自己這沒什麼大不了的。

當你問“實際後果”並說你

無法想像使用會導致僅使用該實例\over無法解決的問題的上下文\frac

我不知道你在尋找什麼樣的答案,因為不存在任何這樣的上下文,根據定義(of \frac):如果在某些情況下\over給出了錯誤的輸出,您始終可以通過添加大括號或組來修復它,實際上也可以使用\frac.這就是它的用途。

答案2

\over在 LaTeX 文件中使用沒有任何優勢。

LaTeX 的一個主要目標是為基於 tex 的標記提供一致的語法,在{}可選參數中包含強制參數[],所以\rule{2pt}{3pt}不是\hrule width 2pt height 3pt。使用\over完全打破了這一點。

如果您使用\overloadamsmath則會收到警告

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}

相關內容