如何在LaTeX數學模式中更好地使用粗體?
那句話怎麼說來著?不問是不是而先問為什麼都是耍流氓。LaTeX 當然不會把數學模式中的黑體全搞成 poor man"s bold,只不過你自己(在不清楚的情況下)用了專門生成 poor man"s bold 的命令,然後回頭來問為什麼這個命令會產生它應該產生的功能。對吧?回到問題本身。真正應該問的,應該是「如何正確地在 LaTeX 數學公式中使用粗體」。當然,這還是一個字體選擇的問題。下面只考慮相對傳統的數學字體,也就是不使用 unicode-math 的情形,後者用法比較特別,僅用於 XeTeX 和 LuaTeX 的引擎,你可以自己讀它的手冊。
一、基本機制
在 LaTeX 中,選擇字體通常都是通過 NFSS 機制完成的,數學字體也不例外。基本的切換為數學粗體的命令是 oldmath,它通常被定義為 mathversion{bold},意思是全局地把當前的數學字體設置為粗體,並且它應該在數學環境外面使用。(與之相對的恢復正常粗細是 unboldmath 即 mathversion{normal}。)因此我們有:documentclass{article}
egin{document}
oldmath $a^2 + b^2 = c^2$
end{document}
documentclass{article}
usepackage{amsmath}
egin{document}
[
a+b imes c
e oldsymbol{a+b imes c}
]
end{document}
那麼如果沒有粗體形式呢?amsmath 還提供了 pmb 命令來提供偽粗體(poor man"s bold)的符號。偽粗體的表現形式就是連續輸出三個的相同符號,三個符號相互重疊而略有錯位,形式偽粗體的效果。如圖所示:
documentclass{article}
usepackage{bm}
egin{document}
[
int k,mathrm{d}x
e
m{int k,mathrm{d}x}
]
end{document}
在高質量的排版輸出中,應該避免使用偽粗體。而要避免偽粗體,沒有其他路子可走,就是選用字重齊全的高質量數學字體。TeX 系統自帶的 CM 字體缺少部分粗體符號,但可以使用符號更為齊全的 newtxmath(Times 風格,配合 newtxtext 使用,前身是 txfonts)、stix(Times 風格,STIX 系列字體以大而全著稱)、pxfonts(Palatino 風格)、mathdesign(本身只包含符號,有不同選項用來配合 Utopia、Garamond、Charter 字體)、MnSymbol(只包含符號)、fdsymbol(只包含符號)、lucidabr(Lucida Bright 商業字體)等字體包。一些專業的商業字體,如 MathTime Pro 的兩個版本,甚至有 normal、bold、heavy 三種粗細可以使用(bm 宏包為最後一種粗細提供了 hm 命令)。在排版時可以優先選擇這類字體。下面是 newtxmath 的效果:
documentclass{article}
usepackage{newtxtext,newtxmath}
usepackage{bm}
egin{document}
[
sum int (koplus j) ,mathrm{d}x
e
m{sum int (koplus j) ,mathrm{d}x}
]
end{document}
defoldmath{%
PackageWarning%
{mathptmx}%
{There are no bold math fonts}%
globalletoldmath=
elax
}
因此,如果你使用了 mathptmx 這樣不包含任何粗體形式的低質量的字體包,而又採用 bm 包的 m 命令來產生粗體,那麼很自然,所有加粗的字元就都被作為偽粗體輸出了。仍沿用前面 newtxmath 字體包的例子:
documentclass{article}
usepackage{mathptmx}
usepackage{bm}
egin{document}
[
sum int (koplus pi) ,mathrm{d}x
e
m{sum int (koplus pi) ,mathrm{d}x}
]
end{document}
效果非常之嚇人:
給劉海洋的回答補充一點:
XeLaTeX可以用TrueType/OpenType數學字體,因此微軟/Ascender的Cambria Math就可以用了。
此外,開源的TrueType/OpenType數學字體還有Asana Math (用的是URW Paladio)和另外幾個基於URW開源字體製作的數學字體,以及Computer Modern本身的otf化,以及STIX。補充一下,newtxtext有時候會有問題,我也不知道具體咋回事。干可以用garamondx搭配newtxmath
usepackage{garamondx}
usepackage[garamondx,cmbraces]{newtxmath}
usepackage{bm}
新手需要注意的是,garamondx不是默認安裝。使用tex live平台的朋友,必須用getnonfreefonts工具(getnonfreefonts)在線安裝非默認字體。 據說garamondx 已經被包括在Mitex ,我沒有去確認。
推薦閱讀:
※手機上怎麼使用LaTeX編輯呢?
※LaTex怎麼下載?該下什麼版本
※MathType 如何做出 LaTeX 的公式效果?
※有了 MathType,為什麼還要用 LaTeX ?
※使用 LaTeX 有什麼比較好的編寫技巧或習慣?
TAG:LaTeX |