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期待される結果を生成するように、つまり (丸い) 括弧と制限が正しくタイプセットされるように、この例を変更するにはどうすればよいでしょうか。

この問題はフォント自体に固有のものではなく、またフォントの使用による影響でもありません。んんん それ自体次のコードは正常に動作します:

\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 を使用し、および数学バージョンは別のフォント ファミリ用に予約されています。したがって、 MWE では明らかに明白な回答であるにもかかわらず、単にまたは数学バージョンを宣言しないことは解決策にはなりません。heavynormalboldheavyvarnormal

この問題を回避するには、2番目のパッケージを定義します。ヴァームvarbm.styは数学バージョンとvarbold等しくなります。(もちろん、その場合は をまったく使用する必要はありません。)これはうまく機能し、私が で行ったことです。bm.styboldheavy私の修正した回答ただし、 のほぼすべてを複製する必要があるため、やり過ぎのように思えますbm.sty。たとえそれが実際に最善の解決策であったとしても、この場合に何が問題なのかを正確に知りたいと思います。

答え1

重い数式バージョンを宣言する場合は、そのためのフォントをいくつか定義する必要があります。ここでは、太字のフォントと同じにします (つまり、16 個の数式ファミリが不足することになりますが、太字の括弧が表示されます)。

\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}

関連情報