将所有操作员名称设置为无衬线字体的正确方法是什么?
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\def\operator@font{\sf}
\makeatother
\DeclareMathOperator\operator{operator}
\begin{document}
An $\operator 1$.
\end{document}
似乎可以解决问题,但amsopn.sty
定义
\def\operator@font{\mathgroup\symoperators}
似乎做得更多……
@
顺便说一句,如果有一种免费的方式来做到这一点就太好了。
答案1
您可以定义一个新的符号字体,也可以重新定义\mathsf
使用它,否则您会浪费一个数学组,而且只有 16 个:
\DeclareSymbolFont{sfoperators}{OT1}{cmss}{m}{n}
\DeclareSymbolFontAlphabet{\mathsf}{sfoperators}
\makeatletter
\def\operator@font{\mathgroup\symsfoperators}
\makeatother
答案2
你在评论中询问如何让它工作unicode-math
,并被要求发布一个新问题。为了任何寻找答案(或标记重复问题)的人的利益:
要将 operatorfont 设置为 以外的其他字体\mathrm
,请使用例如:
\setoperatorfont\mathsf
这也适用于您用 定义的数学字体\setmathfontface
,而不仅仅是内置的数学字母。
要更改\mathrm
字体,请使用\setmathrm
。如果您要在 中使用它\boldmath
,您可能还需要\setboldmathrm
。