align latex 使用_LaTeX系列笔记(9)-数学模式下的间距及align等环境的实现
上一篇文章中第二個問題我一直知道但是沒有細想是什么原因,今天正好探索了一下。孫孟越:LaTeX系列筆記(8)-常見排版細節(jié)問題?zhuanlan.zhihu.com此處小于號之后的空格太小了
1. TeX 是如何給數(shù)學(xué)符號正確的間距的
強烈建議大家閱讀 Knuth 的著作 The TeXbook,下面的知識都是從這本書 17, 18 章節(jié)學(xué)來的。
數(shù)學(xué)模式下 TeX 生成的東西叫 math list,而 math list 里面的主要對象是 atom,TeX 把 atom 又分成如下幾類。普通(Ord),如
大的運算符(Op),如
二元運算符(Bin),如
關(guān)系符(Rel),如
開始(Open),如
結(jié)束(Close),如
標點符號(Punct),如
(Inner),如
等等
TeX 會在這些東西之間加入正確的間距,有如下表格,來自書 The TeXbook。表格中單位是 math unit
這樣就能計算出合適的空格距離了。
比如 | 和 \mid 都是單豎線 | ,他們的差別就在于前者是 Ord(普通),而后者是 Rel(關(guān)系)。
\| 和 \parallel 都是雙豎線
,區(qū)別就在于前者是 Ord(普通),而后者是 Rel(關(guān)系)。
: 和 \colon 都是冒號
,區(qū)別就在于前者是 Rel(關(guān)系),而后者是 Punct(標點)。
所以你在表示函數(shù)的時候,請用
$f\colonX\toY$
2. 怎么樣定義一個 ord/rel/bin/open/close 等
利用 \mathop 可以定義一個 Op 類型,正如我們在孫孟越:LaTeX系列筆記(3)-數(shù)學(xué)運算符 Math Operator?zhuanlan.zhihu.com
所做的那樣。而
\bigl( \bigr)
的命令實際上分別定義了 \mathopen 和 \mathclose 類型的左右括號,確保間距合適。從上面的表格可以看出,確實有些許差別。
剩下幾個可以通過 \mathrel,\mathbin 實現(xiàn),\mathord 一般不會使用,因為默認就是 Ord 類型。
\mod 也有很多種,\pmod 表示被括號括起來的,\bmod 是二元運算符號,還有 \pod,示例如下。
a\equiv b\mod c,a\equiv b\pmod c,a\bmod b,a\equiv b\pod{c}
3. align 等數(shù)學(xué)環(huán)境中 & 的對齊機制
amsmath 提供了 split、align、align* 等多種對齊的數(shù)學(xué)模式。這些數(shù)學(xué)模式(注意:eqnarry 是與他們不同的)做到對齊的方式比較神奇。舉個例子,當你輸入
\begin{align*}
A & B \\
C & D
\end{align*}
的時候,實際上輸出的是一個表格,是
所以而當?shù)忍柗旁?$ = $ 的結(jié)尾處,= 后面就沒有空格了,除非在 = 后面加上一個 { }。
可以試驗如下代碼驗證一下,也確實證實了我的猜測。
$A=$${}B$ % 等號后面沒有空格$A={}$${}B$ % 等號后面有空格
所以就有了上篇文章中,在 = 和 & 之間加入 = {} & 的解決方案。
前面不加 { },后面加 { },這個設(shè)計是在 Plain TeX 年代就定型的,amsmath 繼承了下來。前后都加 { } 的話,有時候空格會太大了(如下圖第四行相比第一行,等號后面空格大了很多)。
實際上,把等號放在左邊會有奇怪的問題。
比如在下面這個例子里面,只有把等號放在右邊,才能正確的把“負號”識別為 Ord 類型
考慮到 Rel 左邊一般都是 Ord 類型,Rel 右邊可能是 Ord/Op/Bin 多種類型,所以我們應(yīng)該把 Rel 和右邊的東西連在一起,以獲取正確的空格。
手冊中也寫了,沒有特殊情況的話,一定要把 Rel 放在 & 之后!
4. 如果想第一行不放等號
可以利用 \phantom 空出想要的距離(一個等號加兩個 \; ),代碼如下:
\begin{align*}
&\phantom{\;=\;} A \\
& = B \\
& = C.
\end{align*}
參考^因為 Rel 后面不能跟著 Bin 類型,強制識別為 Ord 類型,見 Knuth 的 The TeXbook 18 章
總結(jié)
以上是生活随笔為你收集整理的align latex 使用_LaTeX系列笔记(9)-数学模式下的间距及align等环境的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 全国计算机等级考试二级 Python 语
- 下一篇: U盘出现“文件或目录损坏且无法读取”怎么