標籤:

怎樣更換 LaTeX 中的數學字體?

發現MathType裡面有個Euclid Symbol字體很漂亮,想用在文章中,但是沒有方法,劉先生的書中提到過換特定的字體,採用宏包的形式,如果是我這樣的情況,能否處理,應該怎樣處理?


(忽然發覺這個問題標題很大而內容很具體。)

一般地說,並不是你看到一套數學符號字體就能簡單用幾條命令拿給 LaTeX 用的。用 Unicode 編碼數學符號、帶有 math-table 的 OpenType 字體(可能是 OTF 也可能是 TTF),才能簡單地使用 unicode-math 宏包調用。其他情況不行。

所以你可以方便地使用 Office 系統帶給你的 Cambria Math 字體,你購買的 Lucida New Math Opentype 字體,或是 TeX 系統自帶的 Asana Math 字體,等等,但也僅限於那麼幾種。

------------------------------------- 具體問題的分界線 ---------------------------------------

Euclid 一套字體並非帶有 math-table 的 OpenType 格式,因此訪問各個符號容易,但要讓各個字母、符號的上下標、上下限之類與數學公式相關的位置能正確放對,就無法完全自動做到,這會影響輸出質量。因此我不建議使用它。

當然,在 LaTeX 中也確實有一些宏包是不大考慮字母和符號位置,即使造成輸出質量下降也沒關係的,mathptmx 就是一例,我們也不建議使用它。(即使這樣 mathptmx 也主要使用 CM 的數學符號,不會造成太嚴重的符號錯位問題。)

訪問 Unicode 編碼的符號可以使用 unicode-math 宏包,如果只是改數學字母可以用 mathspec 包。Euclid 字體中大概只有基本拉丁字母和數字能這樣設定。

而對於 Euclid 符號這種不按 Unicode 編碼的字體,本身符號排布在字體中又自成一系,訪問數學符號就需要對每個符號單獨指定命令。簡單粗暴的方法可以見 xetex - How to access Webdings OpenType font in XeLaTeX 。更精緻的方式則需要你深入了解 NFSS 後像新建一個數學字體包一樣定義好各個字元,這種東西你可以去模仿 mathabx 這樣的宏包的源代碼實現;效果需要更好的話還要單獨定義各個符號的 metrics,生成虛擬字體,這裡就不多說了——反正也不會有人做的。

BTW,LaTeX 的數學字體很缺么?先看看傳統字體吧。

http://tug.org/pracjourn/2006-1/hartke/hartke.pdf


推薦閱讀:

有關英文字體的所謂「支架襯線」和「非支架襯線」該如何理解?
為什麼10號宋體比12號清晰,網頁字體有臨界值?
為什麼微軟雅黑在小字型大小時位置不穩定?
微軟雅黑自從推出後有沒有過改變?
微軟雅黑在平面設計(尤其是不專業的平面設計)中是否被濫用了?

TAG:字體 | LaTeX |