標籤:

為什麼 LaTeX 中要用 igl, igr 等命令來處理定界符,而儘可能避免 left 和 ight?


left 和
ight,還有 middle 只是機械地根據 left 和
ight 內的內容高度縮放定界符;縮放的高度保持與內容相同。然而事實上,有一些情況我們需要的並不是完全相等的高度。

比如,對於大型運算符的運算上下限,比較好的效果是讓括弧的高度比大型運算符的高度稍微多一點,比上下限的位置稍微少一點。(這個好難描述,姑且這麼說吧)

documentclass{article}
egin{document}
[
left(sum_{n=1}^{infty}a_{n}
ight)^{2}quad
iggl(sum_{n=1}^{infty}a_{n}iggr)^{2}
]
end{document}

&" dw="678" dh="266" class="origin_image zh-lightbox-thumb lazy" w="678" data-original="https://pic4.zhimg.com/3fe73910c43a331f3fb7695769f9d6f2_r.jpg" data-actualsrc="//i1.wp.com/pic4.zhimg.com/50/3fe73910c43a331f3fb7695769f9d6f2_hd.jpg">

又比如,處理多個層次的定界符的時候,left 和
ight 可能沒有辦法通過縮放定界符的大小來體現層次——要麼不足,要麼過頭。

documentclass{article}
usepackage{amsmath}
usepackage{amssymb}

egin{document}
[
fleft(left(x + y
ight), y
ight)quad
figl((x + y), yigr)
]
[
A = left{x in mathbb{R}mid left(x + 1
ight)^{3} &> 0
ight}quad
A = igl{x in mathbb{R}mid (x + 1)^{3} &> 0igr}quad
]
end{document}

&" dw="1346" dh="246" class="origin_image zh-lightbox-thumb lazy" w="1346" data-original="https://pic3.zhimg.com/4ede757582f8f4fc9d116aa794afe214_r.jpg" data-actualsrc="//i1.wp.com/pic3.zhimg.com/50/4ede757582f8f4fc9d116aa794afe214_hd.jpg">

再比如,left 和
ight 很難處理跨行的內容。

% 注釋掉的部分會報錯
documentclass{article}
usepackage{amsmath}
egin{document}
% egin{multline}
% S^{2} = left(frac12 + frac23 + frac34 + cdots\
% + frac{k}{k + 1} + frac{k + 1}{k + 2} + cdots
ight)
% end{multline}
egin{multline}
S^{2} = iggl(frac12 + frac23 + frac34 + cdots\
+ frac{k}{k + 1} + frac{k + 1}{k + 2} + cdotsiggr)
end{multline}
end{document}

諸如此類吧。由於機制的原因,left 和
ight 在很多場合都會很尷尬;具體為什麼,可以期待阿姨的 primitives 系列專欄。


第一個區別是left和
ight根據定界符的大小自動縮放,ig等允許手動縮放。第二點,在長公式編輯時,left和
ight必須處於同一行,斷行無法編譯,但是ig等命令可以單獨編譯。


推薦閱讀:

hyperref 與 unicode-math 衝突如何解決?
國外教授的講義都是自己用 LaTeX 打出來的嗎?
在重新定義LaTeX環境的時候,為何很少用到 patchcmd 一類的命令?
求推薦 LaTeX 編輯器?
上古時期的 TeX Users 都有哪些當今 TeX Users 無法想像的神級操作?

TAG:LaTeX |