我正在寻找一个看起来与 相同的类似日志的运算符$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
(虽然它是默认设置)但它无论如何是“一种”字体,因此我在上面的段落中删除了编辑。)