带有数学运算的对数类运算符(例如 p-lim)

带有数学运算的对数类运算符(例如 p-lim)

我正在寻找一个看起来与 相同的类似日志的运算符$p \text{-lim}$

到目前为止我发现最好的方法是

  • \DeclareMathOperator*{\plim}{\text{$p$-lim}}

问题:这是实现这一目标的最好方法吗?

这似乎有点儿像黑客行为。如果我删除它\text{...},它就不起作用了。

(另外,我知道我可以用来\operatorname*提供更灵活的实现,例如

  • \newcommand{\plog}[1]{\operatorname*{\text{$#1$-lim}}

现在我可以在需要时将 p 更改为 p+q。)

答案1

的参数\DeclareMathOperator在数学模式下处理,但使用特殊设置使连字符不会显示为减号。但是字母将以罗马直立字体显示。但我们拥有所有可用的数学模式工具:

\DeclareMathOperator*{\plim}{\mathnormal{p}\mkern2mu-lim}

\mkern2mu是因为离连字符太近了。

“可变参数”版本可能是

\newcommand{\plim}[1]{\operatorname*{\mathnormal{#1}\mkern2mu-lim}}

如果在参数中还需要一个实数减号,那么您必须恢复其数学代码:

\AtBeginDocument{\edef\minusmathcode{\the\mathcode`- }}
\newcommand{\restoreminusinop}{\mathcode`-=\minusmathcode\relax}
\newcommand{\plim}[1]{%
  \operatorname*{\mathnormal{\restoreminusinop#1}\mkern2mu-lim}
}

答案2

您可以实现与 egreg 的答案相同的目的,无需amsmath任何AtBeginDocument技巧:

\documentclass{article}

\newcommand\plim{\mathop{p\mkern2mu\mathrm{\mathchar"702D lim}}}

\begin{document}
$\plim_{a\to\infty}$

$\displaystyle\plim_{a\to\infty}$
\end{document}

有时数学字母表命令\mathrm使用的字体与运算符名称中使用的字体不同。因此,以下稍微复杂一些的解决方案可以做到这一点:

\makeatletter
\newcommand\plim{\mathop{p\mkern2mu{\operator@font\mathchar"702D lim}}}
\makeatother

至于文本连字符槽的硬编码,...如果有人想绕过这个问题,那么他可以让代码复杂化。顺便说一句,我不确定我是否正确理解了原帖,因为在这里我尽力使用文本字体(通常比减号短)中的连字符槽(ascii 代码 45)而不是看起来\textendash更像减号的 a。

(抱歉,我的解释有点混乱,因为数学符号字体operators​​(使用 - 如果没有被修改 - \operator@font)不一定是“文档”“文本”字体,也不一定是使用的字体\mathrm(虽然它是默认设置)但它无论如何是“一种”字体,因此我在上面的段落中删除了编辑。)

相关内容