如何更改 \DeclareMathOperator 中的字體?

如何更改 \DeclareMathOperator 中的字體?

乳膠朋友們。我需要更改裡面的字體\DeclareMathOperator,但我最初的嘗試失敗了,如下例所示。我怎樣才能達到預期的結果?

\documentclass{article}
\usepackage{amsmath}

% change to Courier font family
\newcommand\myfont[1]{{\fontfamily{pcr}\selectfont#1}}
\DeclareMathOperator\Mod{Mod}
\DeclareMathOperator\FMod{\myfont{Mod}}

\begin{document}

$\Mod A$% regular DeclareMathFont

$\FMod A$% attempt to change the font. No joy!
 
$\text{\myfont{Mod}}\,A$% the desired result. This has to be achieved using \DeclareMathFont

\end{document}

編輯:我只想為一個運算符更改字體,並且我需要由\DeclareMathOperator(限制的可能性、運算符和操作數之間的間距等)提供的相同功能

答案1

當您這樣做時,\DeclareMathOperator{\foo}{foo}您實際上是在定義 的簡寫\operatorname{foo}

嗯,實際上是

\qopname\relax o{foo}

反過來又是

\mathop {\relax\kern\z@\operator@font foo}\csname nolimits@\endcsname

現在我們想看看\operator@font會發生什麼:

\mathgroup\symoperators

因此,字體選擇是數學字體,而不是文字字體。並且\fontfamily什麼都不做。

在你的情況下,你可能想要

\DeclareMathOperator{\FMod}{\mathtt{Mod}}

您已指派pcr為 的字體的位置\mathtt。 LaTeX 核心確實

\DeclareMathAlphabet{\mathtt}{OT1}{cmtt}{m}{n}

你可能想要

\DeclareMathAlphabet{\mathtt}{OT1}{pcr}{m}{n}

如果您不想更改預設值\mathtt,可以使用\text

\DeclareMathOperator{\FMod}{\text{\usefont{OT1}{pcr}{m}{n}Mod}}

完整範例:

\documentclass{article}
\usepackage{amsmath}

% change to Courier font family
\newcommand\myfont{\usefont{OT1}{pcr}{m}{n}}
\DeclareMathOperator\Mod{Mod}
\DeclareMathOperator\FMod{\text{\myfont Mod}}

\begin{document}

$\Mod A$% regular DeclareMathFont

$\FMod A$% attempt to change the font: good!

\end{document}

在此輸入影像描述

請注意,這還\fontfamily{pcr}不夠:在定理陳述的上下文中(使用斜體),運算子名稱將是傾斜的。

相關內容