我想声明一个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
答案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]
\结束{文档}