\DeclareMathOperator 内のフォントを変更するにはどうすればいいですか?

\DeclareMathOperator 内のフォントを変更するにはどうすればいいですか?

LaTeX の皆さん。 内のフォントを変更する必要があります\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}

編集: このフォント変更は 1 つの演算子に対してのみ行い、\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}十分ではないことに注意してください。定理ステートメントのコンテキスト (斜体を使用) では、演算子名は斜めになります。

関連情報