乳膠朋友們。我需要更改裡面的字體\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}
不夠:在定理陳述的上下文中(使用斜體),運算子名稱將是傾斜的。