Typesetting a limit from below correctly

Is there a nice way to typeset

(not in red, but with the spaces left and right). What I first tried is

\documentclass{amsart}

\begin{document}
$$\lim_{R \uparrow 1} f_R(\varphi)$$
\end{document}


which produces no spaces. I hope there is something like \to.

• Add \> for a medskip or \, for a thinskip. – Johannes_B Sep 1 '16 at 7:39
• I encountered \nearrow for such limits as well. IMHO that one looks better than \uparrow and doesn't cause the spacing problems mentioned here. – JBantje Sep 1 '16 at 8:18
• part of this effect is due to the shape of the digit "1" -- tabular (uniform width) digits are used, so there's always more space around "1" than around any other digit. this applies to all answers given here. – barbara beeton Sep 1 '16 at 13:05

3 Answers

As others have already explained, TeX doesn't add mathrel spacing when in subscripts and there are good reasons for this. However, due to the fact that normal letters are italic in math mode, the \uparrow symbol seems to clash with them.

You can define a new symbol for “limit from below”:

\documentclass{article}
\usepackage{amsmath}

\newcommand{\toup}{%
\mathrel{\nonscript\mkern-1.2mu\mkern1.2mu{\uparrow}}%
}

\begin{document}

\begin{gather*}
R\uparrow 1 \qquad \lim_{R\uparrow 1} \\
R\toup 1 \qquad \lim_{R\toup 1}
\end{gather*}

\end{document}


What does the strange \nonscript\mkern-1.2mu\mkern1.2mu do? The spacing after \nonscript is only inserted when TeX is in display or text style; so, in these cases, the negative kern compensates for the positive kern and the net amount is zero; in script or scriptscript styles the negative kern will not be considered, so only the positive kern will act.

You can clearly see how such a seemingly small space (1mu is 1/18 of an em, so, at 10pt size with Computer Modern, 1.2mu is just 2/3 of a point) becomes quite visible in the output. Never be too generous with kerns.

• +1 for the \nonscript macro. I wasn't familiar with it until just now. :-) – Mico Sep 1 '16 at 9:10

The problem here is that this approach is actually correct. I have prepared an example which shows you that the behavior of \to and \uparrow is the same here. The only problem is that this looks stupid due to the shape of the italic R and the up pointing arrow.

% arara: lualatex

\documentclass{amsart}
\usepackage{lua-visual-debug}

\begin{document}
\begin{gather}
\lim_{R\mathrel{\uparrow} 1}\\
\lim_{R\mathrel{\to} 1}\\
R\mathrel{\uparrow} 1\\
R\mathrel{\to} 1
\end{gather}
\end{document}


I have put the relational symbols in \mathrel. this is kind of doubled but shows you the little boxes in the following screenshot.

As there is nothing to "correct" here, there is just something to tweak: As shown in Johannes' comment, you could add a little space here. In my eyes, \lim_{R\mkern 1.8mu\uparrow 1} looks ok. Make sure to define a command for this as you might want to change it afterwords.

• +1 for "there is nothing to correct here, there is just something to tweak". – Mico Sep 1 '16 at 9:01

Just to expand a bit on @LaRiFaRi's answer: What you're encountering -- the lack of whitespace around the \uparrow symbol in the argument of \lim -- is actually a deliberate setting of TeX. To wit, the parameter \thickmuskip, which governs the amount of whitespace that's inserted around a math atom of type mathrel, is applied only if the math atom occurs in textstyle or displaystyle math mode. In contrast, in scriptstyle and scriptscriptstyle math settings -- think of first-order and second-order subscripts and superscripts -- \thickmuskip (and \medmuskip, of relevance for math atoms of type mathrel) is not inserted by default.

I assume this setting was chosen because it's almost always a good idea, typographically speaking, to minimize the amount of space that's taken up by the arguments of operators such as \lim, \max and \min.

If you insist on inserting some whitespace on either side of \uparrow when it occurs in the argument of \lim, I would insert no more than \,, i.e., a so-called "thinspace"; check out the final line of the following screenshot. (Better still, insert only \mkern1.5mu, i.e., half a thinspace.)

\documentclass{article}
\begin{document}
\obeylines % just for this example

% textstyle is default for inline math
$R\uparrow1$
$R{\uparrow}1$
$R\mathrel{\uparrow}1$ % note restoration of whitespace

\smallskip % scriptstyle: first-order subscript mode
$\scriptstyle R\uparrow1$
$\scriptstyle R{\uparrow}1$
$\scriptstyle R\,\uparrow\,1$ % explicit thinspaces on both sides of \uparrow

\smallskip % scriptscriptstyle: second-order subscript mode
$\scriptscriptstyle R\uparrow1$
$\scriptscriptstyle R{\uparrow}1$
$\scriptscriptstyle R\mathrel{\uparrow}1$ % no restoration of whitespace

$\displaystyle\lim_{R\uparrow1}$ vs.\ $\displaystyle\lim_{R\,\uparrow\,1}$
\end{document}

• The values of \thickmuskip (the one relevant for \mathrel) and \medmuskip don't change; the glue is simply not inserted in script styles. – egreg Sep 1 '16 at 9:11
• @egreg - Thanks for pointing out this issue. I will rewrite the passage in question. – Mico Sep 1 '16 at 9:15