我試圖弄清楚如何對文件的排版進行細微控制。我一直在看這個pdf但我似乎無法弄清楚如何將“()、+、-、=、...”等符號設定為輕微地比數學的其餘部分更重。這可能嗎?我還知道 unicode math 破壞了許多其他軟體包的選項,但我用它來實現拉丁和希臘字元的不同字體。如果我可以在沒有 unicode 的情況下實現相同的事情,我願意刪除對 unicode 的依賴,但我更喜歡一個記住這個套件的解決方案。
答案1
這裡有兩個問題:第一個是找到一個實際上包含您想要的字形的字體,第二是讓它們出現在您想要的位置。
以下是目前可用的 OpenType 數學字體,它們提供多種粗細:
- Lucida Bright Math 提供 Regular 和 Demibold
- Minion Math 提供常規、中等、半粗體和粗體(每種都有五種光學尺寸)
- XITS Math 提供 常規 和 粗體
假設您使用 Minion Math Regular 作為主要數學字體,並決定 Minion Math Semibold 按照您喜歡的方式「稍微」粗一些(我猜比粗體數學版本更輕?)。然後,如果您希望給定的符號顯示為半粗體自始至終您的文件中,您可以在序言中使用range
的關鍵字\setmathfont
,例如如下:
% Ignoring optical sizes
\setmathfont{MinionMath-Regular.otf}
\setmathfont[
range = { "002B,"2212,"003C,"003E,"003D,"007B,"007D,"007C,"0028,"0029 } % +-<>={}|()
]{MinionMath-Semibold.otf}
您可以在 中找到其他 Unicode 插槽或範圍的代碼unimath-symbols.pdf
。
如果你想應用效果僅針對某些部分在文檔中,您每次都必須重新映射字元。你可以這樣做:
\documentclass{article}
\usepackage{unicode-math}
\setmathfont{MinionMath-Regular.otf}
\NewDocumentCommand\applysemi{}{%
\setmathfont[
range = { "002B,"2212,"003C,"003E,"003D,"007B,"007D,"007C,"0028,"0029 }
]{MinionMath-Semibold.otf}%
}
\NewDocumentCommand\removesemi{}{%
\setmathfont[
range = { "002B,"2212,"003C,"003E,"003D,"007B,"007D,"007C,"0028,"0029 }
]{MinionMath-Regular.otf}%
}
\begin{document}
$ a + ( b - c ) = x $
\applysemi
$ a + ( b - c ) = x $
\removesemi
$ a + ( b - c ) = x $
\end{document}
如果您使用的是 XeLaTeX,您也可以使用 鍵FakeBold
來扭曲缺少給定設計粗細的字體的外觀,如fontspec
文件第 9.3 節所述。例如對於坎布里亞數學你可以做
\setmathfont[
range = { "002B,"2212,"003C,"003E,"003D,"007B,"007D,"007C,"0028,"0029 } ,
FakeBold = 2
]{Cambria Math}
然而,這並不是真正值得推薦的:結果在美學上無法與正確設計的字體相符。
答案2
您問題的最終答案是:當您對可用字體的外觀不滿意時,請設計自己的字體!但字體設計是一項艱苦而乏味的工作,考慮到生活中的其他職責,您可能沒有足夠的時間。
有一個快捷方式:當你想混合不同字體的字元時,你可以創建一個虛擬字體並使用它。有關如何執行此操作的提示,請參閱此問題:如何建立虛擬字體?