使用 pdflatex 替换 stix2 字体与 bm

使用 pdflatex 替换 stix2 字体与 bm

这个问题来自对这个问题,说明stix2不提供粗体\mathcal。由于我无论如何都喜欢默认设置\mathcal,因此我想更改字母表。

我找到了解决方案这里使用mathalpha。不幸的是,与bm此结合使用太多数学字体。我曾考虑切换到unicode-math因为那里的字体选择真的很容易(并且没有字体限制)。但(据我所知)没有统一的加粗命令,例如,必须bm使用等,即不可能执行类似 的操作。因此,我想坚持使用。\symbf\smybfcal\bm{ A \mathcal{A} \mathscr{A} }pdflatex

我目前正在使用以下 MWE 来解决数学字体过多的问题

\documentclass[preview]{standalone}

\usepackage{stix2}
\usepackage[cal=cm]{mathalpha}
\usepackage{amsmath,amsthm}
\newcommand\bmmax{0}
\usepackage{bm}

\newcommand{\ABC}{ABCDEFGHIJKLMNOPQRSTUVWXYZ}

\begin{document}
\begin{gather*}
\ABC\\
\bm{\ABC}\\
\mathcal{\ABC}\\
\bm{\mathcal{\ABC}}\\
\mathscr{\ABC}\\
\bm{\mathscr{\ABC}}
\end{gather*}

\end{document}

带输出

在此处输入图片描述

除了已经提到的警告之外其他问题这可行。但我不确定这是否是理想的方法。

我的问题:

stix2使用时替换字体的“最佳”方法是什么bm

  1. 使用\newcommand\bmmax{0}解决方法,或者该 \newcommand\bmmax{0}命令是否有问题并且应尽可能避免?
  2. 有没有其他方法可以替换一种或多种sitx2字体而不需要定义太多的字母,也许用不同的方法 mathalfa
  3. 我可以编辑该文件的本地副本stix2.sty吗?(我已经尝试stix2用 使用的字母替换有问题的字母 stix。除了我不太喜欢这两个stix 版本之外\mathcal,我还在这样做的同时替换了积分符号,这是我想避免的。)
  4. 我是否应该bm完全清除该包并使用boldsymbol 呢?

答案1

bm正如我对您上一个问题的评论一样,使用with是没有意义的stix(2)

bm尝试将粗体数学版本的字体添加到普通数学版本中,但 stix 在粗体版本中没有其他字体,并且已经有超过 16 个可用字体插槽,因此没有空闲插槽可供 bm 使用,即使有空闲插槽也没有字体可供添加。

只需声明用于书法的计算机现代字体:

在此处输入图片描述

\documentclass[preview]{standalone}

\usepackage{stix2}
%\usepackage[cal=cm]{mathalpha}
\usepackage{amsmath,amsthm}
%\newcommand\bmmax{0}
%\usepackage{bm}
\DeclareMathAlphabet      {\mathcmcal}{OMS}{cmsy}{m}{n}
\DeclareMathAlphabet      {\mathcmbfcal}{OMS}{cmsy}{b}{n}
\newcommand{\ABC}{ABCDEFGHIJKLMNOPQRSTUVWXYZ}

\begin{document}
\begin{gather*}
1 \ABC\\
2 \mathbfit{\ABC}\\
3 \mathcal{\ABC}\\
4 \mathcmcal{\ABC}\\
5 \mathcmbfcal{\ABC}\\
6 \mathscr{\ABC}\\
7 \mathbfscr{\ABC}
\end{gather*}

\end{document}

请注意,stix 声明了大约 18 种数学字体,而这又添加了两种,因此远远超过了 TeX 允许的 16 种。如果你有旧版 LaTeX,这是可以的,但你不能使用超过 16 种在文档中。自去年起,这一限制已经放宽,你可以使用所有声明的字体,只要你在每个字体中使用的字体不超过 16 种数学表达式

答案2

组合这个答案另一个问题答案David Carlisle 的诀窍是:如果我使用LuaLaTexXeLaTex

\documentclass[preview]{standalone}

\usepackage{stix2}
\usepackage{amsmath,amsthm}
\usepackage{bm}

\DeclareMathAlphabet{\mathcal}      {OMS}{cmsy}{m}{n}
\SetMathAlphabet    {\mathcal}{bold}{OMS}{cmsy}{b}{n}

\newcommand{\ABC}{ABCDEFGHIJKLMNOPQRSTUVWXYZ}

\begin{document}
\begin{gather*}
\ABC\\
\bm{\ABC}\\
\mathcal{\ABC}\\
\bm{\mathcal{\ABC}}\\
\mathscr{\ABC}\\
\bm{\mathscr{\ABC}}
\end{gather*}

\end{document}

输出

在此处输入图片描述

或者,我可以使用\DeclareMathAlphabet{\mathcmcal}{OMS}{cmsy}{m}{n}\SetMathAlphabet{\mathcmcal}{bold}{OMS}{cmsy}{b}{n}来声明一个完整的新字母表并保持stix2不变。

相关内容