这个问题来自对这个问题,说明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
?
- 使用
\newcommand\bmmax{0}
解决方法,或者该\newcommand\bmmax{0}
命令是否有问题并且应尽可能避免? - 有没有其他方法可以替换一种或多种
sitx2
字体而不需要定义太多的字母,也许用不同的方法mathalfa
? - 我可以编辑该文件的本地副本
stix2.sty
吗?(我已经尝试stix2
用 使用的字母替换有问题的字母stix
。除了我不太喜欢这两个stix
版本之外\mathcal
,我还在这样做的同时替换了积分符号,这是我想避免的。) - 我是否应该
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 的诀窍是:如果我使用LuaLaTex
或XeLaTex
与
\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
不变。