Друзья 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}
недостаточно: в контексте утверждения теоремы (с использованием курсива) имя оператора будет наклонено.