以下 MCE 指出\DeclareMathOperator
,如果其第二个参数(名称文本)包含句点,则在这些句点后添加空格:
\documentclass{article}
\usepackage{amsmath}
%
\DeclareMathOperator{\limone}{l.i.m.}
\newcommand\limtwo{\mathop{\mathrm{l.i.m.}}}
%
\begin{document}
\begin{align*}
A_t & =\limone A_{n,t} \\
A_t & =\limtwo A_{n,t} \\
A_t & =\text{l.i.m.} A_{n,t}
\end{align*}
\end{document}
您知道为何以及如何摆脱这些空间吗?
答案1
与之比较
$l\mathpunct{.}i\mathpunct{.}m$
事实上,你的\limone
给予\qopname \newmcodes@ o{l.i.m.}
和\newmcodes
分配\mathpunct
类别到点(这将被采取字母字体,不是运算符...). 另一个奇怪之处\newmcodes@
。
\newmcodes@ ->\mathcode `\'39\mathcode `\*42\mathcode `\."613A\ifnum \mathcode
`\-=45 \else \mathchardef \std@minus \mathcode `\-\relax \fi \mathcode `\-45\ma
thcode `\/47\mathcode `\:"603A\relax
该怎么办?您可以随时定义自己的定义\newmcodes@
来替换上述定义。
答案2
\DeclareMathOperator{\limone}{l{.}i{.}m{.}}
将修复第 1 行的多余空间,使其与第 2 行相似。请注意,虽然仍将l.i.m.
与您的情况一致\text
,但在最后一个后面会有一个间隙.
,因为(以或 的l.i.m.
形式)现在是一个运算符,而是一个数学原子。\limone
\limtwo
\text{l.i.m.}
\documentclass{article}
\usepackage{amsmath}
%
\DeclareMathOperator{\limone}{l{.}i{.}m{.}}
\newcommand\limtwo{\mathop{\mathrm{l.i.m.}}}
%
\begin{document}
\begin{align*}
A_t & =\limone A_{n,t} \\
A_t & =\limtwo A_{n,t} \\
A_t & =\text{l.i.m.} A_{n,t}
\end{align*}
\end{document}