當 bm 套件中使用 \hm 時,如何在不改變間距和符號選擇的情況下聲明重數學版本?

當 bm 套件中使用 \hm 時,如何在不改變間距和符號選擇的情況下聲明重數學版本?

考慮以下 MWE,其修改自我的回答在這裡:

\documentclass{article}
\newcommand\gmfamily{\fontfamily{mdugm}\selectfont}

\DeclareMathVersion{varnormal}
\DeclareMathVersion{heavy}
\newcommand\mdmath{\mathversion{varnormal}}
\newcommand\mdboldmath{\mathversion{heavy}}
\newcommand\heavymath{\mathversion{heavy}}

\SetSymbolFont{letters}{varnormal}{OML}{mdugm}{m}{it}
\SetSymbolFont{letters}{heavy}{OML}{mdugm}{b}{it}
\SetSymbolFont{operators}{varnormal}{OT1}{mdugm}{m}{n}
\SetSymbolFont{operators}{heavy}{OT1}{mdugm}{b}{n}
\SetSymbolFont{symbols}{varnormal}{OMS}{mdugm}{m}{n}
\SetSymbolFont{symbols}{heavy}{OMS}{mdugm}{b}{n}
\SetSymbolFont{largesymbols}{varnormal}{OMX}{mdugm}{m}{n}
\SetSymbolFont{largesymbols}{heavy}{OMX}{mdugm}{b}{n}
\SetMathAlphabet{\mathrm}{varnormal}{OT1}{mdugm}{m}{n}
\SetMathAlphabet{\mathrm}{heavy}{OT1}{mdugm}{b}{n}

\SetMathAlphabet{\mathit}{varnormal}{OT1}{mdugm}{m}{it}
\SetMathAlphabet{\mathit}{heavy}{OT1}{mdugm}{b}{it}

\usepackage{bm}

\begin{document}

\gmfamily\mdmath
This is Garamond font. $a^2 + b^2 = c^2$. Math font
\[
  \sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0
\]
and bold math font
{\mdboldmath\[
  \sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0
\]}
\[
  \hm{\sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0}
\]

\end{document}

這會產生以下意想不到的(對我來說)結果:

意想不到的結果

問題:我如何修改這個範例,以便數學版本的組合varnormalheavy激活\mdmath\hm產生預期的結果,即,以便正確排版(圓)括號和限制?

請注意,該問題並非字體本身所固有的。也不是使用的效果BM 本身。下面的程式碼工作正常:

\documentclass{article}
\renewcommand\rmdefault{mdugm}

\DeclareSymbolFont{letters}{OML}{mdugm}{m}{it}
\SetSymbolFont{letters}{bold}{OML}{mdugm}{b}{it}
\DeclareSymbolFont{operators}{OT1}{mdugm}{m}{n}
\SetSymbolFont{operators}{bold}{OT1}{mdugm}{b}{n}
\DeclareSymbolFont{symbols}{OMS}{mdugm}{m}{n}
\SetSymbolFont{symbols}{bold}{OMS}{mdugm}{b}{n}
\DeclareSymbolFont{largesymbols}{OMX}{mdugm}{m}{n}
\SetSymbolFont{largesymbols}{bold}{OMX}{mdugm}{b}{n}
\DeclareMathAlphabet{\mathrm}{OT1}{mdugm}{m}{n}
\SetMathAlphabet{\mathrm}{bold}{OT1}{mdugm}{b}{n}
\DeclareMathAlphabet{\mathit}{OT1}{mdugm}{m}{it}
\SetMathAlphabet{\mathit}{bold}{OT1}{mdugm}{b}{it}

\usepackage{bm}

\begin{document}

This is Garamond font.
$a^2 + b^2 = c^2$.
Maths font
\[
  \sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0
\]
and bold maths font
\[
  \bm{\sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0}
\]

\end{document}

這按預期工作:

預期成績

重要的:在我原來的答案中,我使用常規 Garamond 作為varnormal版本,使用粗體 Garamond 作為heavy版本,並為不同的字體系列保留normal和maths 版本。bold因此,簡單地不聲明heavyvarnormal數學版本並不是解決方案,儘管這顯然是 MWE 中顯而易見的答案。

可以透過定義第二個套件來解決這個問題,瓦伯姆,這varbm.sty就是數學版本varbold什麼bm.sty是數學版本bold。 (當然,在這種情況下,heavy根本不需要使用。)這工作正常,並且是我在我修改後的答案。然而,這似乎有點矯枉過正,因為它涉及複製幾乎所有的bm.sty.即使事實上這是最好的解決方案,我仍然想確切地知道這種情況下出了什麼問題。

答案1

如果你聲明一個沉重的數學版本,你需要為其定義一些字體,這裡我只是將它們設置為與粗體相同(這只是意味著你或多或少肯定會用完16 個數學fam,但你會得到粗體括號)

\documentclass{article}
\DeclareMathVersion{heavy}
\renewcommand\rmdefault{mdugm}
 \newcommand\heavymath{\mathversion{heavy}}

\DeclareSymbolFont{letters}{OML}{mdugm}{m}{it}
\SetSymbolFont{letters}{bold}{OML}{mdugm}{b}{it}
\SetSymbolFont{letters}{heavy}{OML}{mdugm}{b}{it}
\DeclareSymbolFont{operators}{OT1}{mdugm}{m}{n}
\SetSymbolFont{operators}{bold}{OT1}{mdugm}{b}{n}
\SetSymbolFont{operators}{heavy}{OT1}{mdugm}{b}{n}
\DeclareSymbolFont{symbols}{OMS}{mdugm}{m}{n}
\SetSymbolFont{symbols}{bold}{OMS}{mdugm}{b}{n}
\DeclareSymbolFont{largesymbols}{OMX}{mdugm}{m}{n}
\SetSymbolFont{largesymbols}{bold}{OMX}{mdugm}{b}{n}
\SetSymbolFont{largesymbols}{heavy}{OMX}{mdugm}{b}{n}
\DeclareMathAlphabet{\mathrm}{OT1}{mdugm}{m}{n}
\SetMathAlphabet{\mathrm}{bold}{OT1}{mdugm}{b}{n}
\SetMathAlphabet{\mathrm}{heavy}{OT1}{mdugm}{b}{n}
\DeclareMathAlphabet{\mathit}{OT1}{mdugm}{m}{it}
\SetMathAlphabet{\mathit}{bold}{OT1}{mdugm}{b}{it}
\SetMathAlphabet{\mathit}{heavy}{OT1}{mdugm}{b}{it}

\usepackage{bm}


\begin{document}


This is Garamond font.
$a^2 + b^2 = c^2$.
Maths font
\[
  \sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0
\]
and bold maths font
\[
  \bm{\sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0}
\]
and heavy maths font (which should just be bold?)
\[
  \hm{\sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0}
\]

\end{document}

相關內容