仅为一位操作员更改操作员字体

仅为一位操作员更改操作员字体

我想声明一个op应该使用无衬线字体的自定义运算符。其他运算符(\sin等)都不应使用无衬线字体。


我尝试使用\DeclareMathOperator它来产生正确的间距,但似乎无法仅为这一个操作员更改字体。

我也尝试了一种简单的方法\newcommand,它允许我使用无衬线字体,但却弄乱了间距。

在此处输入图片描述

我怎样才能结合这两种方法来获得具有正确运算符间距的无衬线运算符,同时不改变所有运算符的字体?


\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{amsmath}

\DeclareMathOperator{\op}{op}
\newcommand\opsans{\mathsf{op}}

\begin{document}
\noindent
Correct spacing: \[a \op_k b\]
Wrong spacing: \[a \opsans_k b\]

\end{document}

答案1

尝试

\documentclass{article}
\usepackage[utf8]{inputenc}

\usepackage{amsmath}

\DeclareMathOperator{\op}{op}
\DeclareMathOperator{\opp}{\mathsf{op}}

\begin{document}
\noindent
\[a \op_k b\]

\noindent
\[a \opp_k b\]

\end{document}

在这里工作正常。

在此处输入图片描述

答案2

TeX\mathop基元声明运算符。\nolimits基元将索引和指数保留在运算符的右侧。因此,您可以定义

\def\op{\mathop{operator-name}\nolimits}

字体选择(数学中的无衬线)取决于使用的格式。例如,在带有 Unicode 数学的 OpTeX 中,我们可以这样定义它:

\fontfam[lm]
\def\op{\mathop{\_sansvariables op}\nolimits}

$a \op_k b$

\bye

答案3

使用 \kern 代替 \hspace 来更好地修复数学问题

\documentclass{文章} \usepackage[utf8]{inputenc}

\usepackage{amsmath}

\DeclareMathOperator{\op}{op} \newcommand\opsans{\mathsf{op}}

\begin{document} \noindent 正确的间距:[a \op_k b] 错误的间距:[a\hspace{0.5mm}\opsans_k\kern.5mm b]

\结束{文档}

相关内容