# Cramping up overset and underset

When typesetting inline equations, I used to force display style to get limits below, because I deemed the inline style with sub/superscript limits to be absolutely appalling, which I still do, and because I was totally unaware of the \limits command. Right now, I still do that because it enlarges symbols like \sum, making them look better. However, it has been pointed out to me that this distorts line spacing, and I've come to agree the effect is almost as bad-looking as the inline style. An example I'm dealing with right now is the following, with a \bigoplus:

So my idea has been to use \underset, reduce the size of the limits by \scriptscriptstyle and then raise it, so as to cramp it up with the \oplus as much as I can without getting too much "side effect" from the cramping. With the code:

Va bene. Per quanto riguarda il viceversa, è chiaro\vsp{-8.5pt} che se
$M\simeq\!\!\!\raisebox{3pt}{$\underset{\raisebox{6pt}{\scb{0.9}[0.9]{$\ssst t\text{ volte}$}}}{\raisebox{-2pt}{$\bigoplus$}}$}\!\!_RR=(_RR)^t$,
poi scriveremo anche $R^t$, la somma diretta di $t$ copie di $_RR$ è libera sulla base
$\br{e_i:i\leq t}$, perché? Ad esempio


where \scb is \scalebox, \vsp is \vspace, \ssst is \scriptscriptstyle and \br{…} is \left\lbrace…\right\rbrace, I get the following:

I'm sure you'll agree it's already much better, but I want to make it even better. Trouble is:

1. Raising the limit actually lowers the line below;

2. Trying to lower the plus and then raise the whole increases the space between the "Va bene" line and what is above.

The code above does that, only because I tried that, and raising the whole by 3pt and lowering the \bigoplus by 2 gets the \bigoplus a little higher which I like, and removing the raising of the limit would require fixing the \vspace, so I'm giving the code typesetting exactly to the picture. So naturally the question is: why do the things in points 1) and 2) happen and how can I get the limit actually closer to the \bigoplus?

PS I'm fully aware that having an ascender below the limit messes the whole thing up, but that's something I'll get to later.

• The only thing that makes sense here is to put “t volte” to the side of the \bigoplus symbol. Trust me: $M\simeq\bigoplus_{\text{$t$volte}}{}_RR=({}_RR)^t$. Don't forget the empty group before the “prescript”. Apr 4 '14 at 17:37
• "I'm sure who will agree it's much better"? As Heiko's answer shows, the default layout is the the only acceptable version of the possibilities shown here. Apr 5 '14 at 10:57

Of course, the subscript can be moved to the symbol, but it still affects the line spacing, because the depth remains too large. The following example compares three variants:

• with \limits, subscript below,
• subscript below without space inbetween,
• default with subscript to the right.
\documentclass{article}
\usepackage{amsmath}
\newcommand*{\lipsum}{ %
\noindent
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu
libero, nonummy eget, consectetuer id, vulputate a, magna. %
}
\newcommand*{\formula}[1]{$M\simeq #1 {}_RR=({}_RR)^t$}

\newcommand*{\scriptbelow}[3][0pt]{%
\begingroup
\renewcommand*{\arraystretch}{0}%
\begin{array}[t]{@{}c@{}}%
#2\\[{#1}]%
\scriptstyle #3%
\end{array}%
\endgroup
}

\begin{document}
\lipsum\formula{\bigoplus\limits_{\text{$t$ volte}}}\lipsum

\bigskip
\lipsum\formula{\scriptbelow{\bigoplus}{\text{$t$ volte}}}\lipsum

\bigskip
\lipsum\formula{\bigoplus_{\text{$t$ volte}}}\lipsum
\end{document}


Remarks:

• \arraystretch is a factor for a vertical strut inserted in tabular and array environments. It is used to simulate a uniform line spacing. But in macro \scriptbelow the additional contributions to the height and depths of the two lines are undesirable and defeats the purpose having no space between the operator and its subscript.

Because the change of \arraystretch should be kept local, the code is put into a group with \begingroup and \endgroup.


• Optional option t for environment array takes the baseline of the first line as reference line for the whole array. That keeps \bigoplus in the first line at the same vertical position as without array.

• There should be no doubt which one is the best. Apr 4 '14 at 18:14