\DeclareMathOperator adds spaces after the periods contained in its second argument (name text)
\DeclareMathOperator{\limone}{l{.}i{.}m{.}}
will fix the excess space in row 1, making it like row 2. Note that while the l.i.m.
will still line up with your \text
case, there will be a gap following the last .
, because l.i.m.
(in the form of \limone
or \limtwo
) is now an operator, whereas \text{l.i.m.}
is a math atom.
\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}
Compare with
$l\mathpunct{.}i\mathpunct{.}m$
Indeed, your \limone
gives \qopname \newmcodes@ o{l.i.m.}
and \newmcodes
assigns \mathpunct
category to the dot (which will be taken in letters font, not operators...). Another strangeness of \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
You will have same \mathpunct
spacing with :
.
What to do? You can always define your own \newmcodes@
to replace above definition.