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}
编辑:我只希望为一个运算符更改此字体,并且我需要提供的相同功能\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}
不够:在定理陈述(使用斜体)的上下文中,运算符名称会倾斜。