使特定的數學符號更重

使特定的數學符號更重

我試圖弄清楚如何對文件的排版進行細微控制。我一直在看這個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

您問題的最終答案是:當您對可用字體的外觀不滿意時,請設計自己的字體!但字體設計是一項艱苦而乏味的工作,考慮到生活中的其他職責,您可能沒有足夠的時間。

有一個快捷方式:當你想混合不同字體的字元時,你可以創建一個虛擬字體並使用它。有關如何執行此操作的提示,請參閱此問題:如何建立虛擬字體?

相關內容