我在 TeXLive 的 pdflatex 中使用newtx
和newtxmath
,但我想使用\mathcal{O}
拉丁现代符号。以下这个答案,我可以访问中期版本。在序言中,我添加了
\DeclareSymbolFont{LMletters}{OMS}{lmsy}{m}{n}
\DeclareMathSymbol{\lmO}{\mathbin}{LMletters}{79}
然后在文档中,我可以使用例如$\lmO (N^{2})$
。
但我也想使用该符号的粗体版本。最好它应该自动与 配合使用\bm
,但如果这太难,我不介意只为其创建一个宏,例如\lmBO
。然而,以下尝试
\DeclareSymbolFont{LMBletters}{OMS}{lmbsy}{b}{n}
返回警告
LaTeX Font Warning: Font shape `OMS/lmbsy/b/n' undefined
(Font) using `OMS/cmsy/m/n' instead on input line 30.
请注意\fonttable{lmbsy10}
,在我的系统上,确实会打印出所有预期的符号,包括粗体的数学符号 O。
如何从 Latin Modern 访问粗体数学 O(同时用于newtxmath
所有其他数学)?如果可能,如何使此 Latim Modern 数学 O 与之配合使用\bm
?
答案1
用于\SetSymbolFont
声明数学版本的字体bold
。
\documentclass{article}
\usepackage{amsmath}
\usepackage{newtxtext, newtxmath}
\DeclareSymbolFont{LMletters}{OMS}{lmsy}{m}{n}
\SetSymbolFont{LMletters}{bold}{OMS}{lmsy}{b}{n}
\DeclareMathSymbol{\mscrO}{\mathalpha}{LMletters}{79}
\begin{document}
\[ O \quad \mathcal{O} \quad \mscrO \quad \boldsymbol{\mscrO}
\]
\end{document}
您也可以\newcommand\mbfscrO{\boldsymbol{\mscrO}}
为了方便和兼容性而声明。我不确定是否故意给这个符号加上二元运算符的间距,但如果是的话,您可以轻松将其改回来。您可以\usepackage{bm}
在所有其他数学命令之后选择声明。
在 中,您可以使用选项覆盖和的unicode-math
此符号,因此:\mathcal
\mathbfcal
range=
\setmathfont
\setmathfont{TeX Gyre Termes Math}[Scale=MatchUppercase]
\setmathfont{Latin Modern Math}[Scale=MatchUppercase,
range={\mscrO,\mbfscrO}]
然后您可以使用\mbfscrO
、\mathbfcal{O}
和一些其他同义词。