5

I'm having some small spacing glitches with this stack, and I'm wondering about the best way to do this:

\documentclass[11pt,letterpaper,twoside]{book}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[total={6in,10in},left=1.5in,top=0.5in,includehead,includefoot]{geometry}
\usepackage{microtype}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{mathtools}
\usepackage{tensor}

\begin{document}

    \begin{equation}
        A_{\mu \nu \lambda} +
    \left[ \: \substack{
        \mu \; \rightarrow \; \lambda \\
        \nu \; \rightarrow \; \mu \\
        \lambda \; \rightarrow \; \nu
    } \: \right] +
    \left[ \: \substack{
        \mathstrut \smash{\mu \; \rightarrow \; \nu} \\
        \mathstrut \smash{\nu \; \rightarrow \; \lambda} \\
        \mathstrut \smash{\lambda \; \rightarrow \; \mu}
    } \: \right]
    \end{equation}

\end{document}

Preview:

enter image description here

As you can see on the preview, the second part has variable vertical spacings (mostly because of the lambda symbol), which I find very ugly. I hacked it (last part) by smashing everything and added a phantom vertical space (using \mathstrut). But is there a better or simpler way of doing this? How can I get a better result?

3
  • Is there a reason to use \substack instead of something like an array?
    – Vincent
    Jul 24, 2020 at 17:14
  • @Vincent, No. Array could do it too. Maybe I should try it.
    – Cham
    Jul 24, 2020 at 17:17
  • Hmmm, array gives something too big. I need all the indices to stay of the same size
    – Cham
    Jul 24, 2020 at 17:20

3 Answers 3

4

I think you're abusing the \substack machinery by employing it in a situation it clearly wasn't meant to be used in.

I suggest you employ either a bmatrix environment or a bsmallmatrix environment; if you choose the latter, be sure to employ \mathstrut directives in all rows too.

enter image description here

\documentclass[11pt,letterpaper,twoside]{book}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[total={6in,10in},
   left=1.5in,top=0.5in,
   includehead,includefoot]{geometry}
\usepackage{microtype}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{mathtools}% for 'bsmallmatrix' env.
\usepackage{tensor}

\begin{document}
\begin{gather*}
%% Row 1: \left[ \substac{ ... } \right]
    A_{\mu \nu \lambda} +
    \left[ \: \substack{
        \mu \; \rightarrow \; \lambda \\
        \nu \; \rightarrow \; \mu \\
        \lambda \; \rightarrow \; \nu
    } \: \right] +
    \left[ \: \substack{
        \mathstrut \smash{\mu \; \rightarrow \; \nu} \\
        \mathstrut \smash{\nu \; \rightarrow \; \lambda} \\
        \mathstrut \smash{\lambda \; \rightarrow \; \mu}
    } \: \right]\\ 
%% Row 2: bmatrix environment
    A_{\mu \nu \lambda} +
    \begin{bmatrix}
        \mu \to \lambda \\
        \nu \to \mu \\
        \lambda \to \nu
    \end{bmatrix} +
    \begin{bmatrix}
        \mu \to \nu \\
        \nu \to \lambda \\
        \lambda \to \mu
    \end{bmatrix}\\ 
%% Row 3: bsmallmatrix environment
    A_{\mu \nu \lambda} +
    \begin{bsmallmatrix} 
        \mu \to \lambda \mathstrut\\
        \nu \to \mu \mathstrut\\
        \lambda \to \nu\mathstrut
    \end{bsmallmatrix} +
    \begin{bsmallmatrix}
        \mu \to \nu \mathstrut\\
        \nu \to \lambda \mathstrut\\
        \lambda \to \mu \mathstrut
    \end{bsmallmatrix}
\end{gather*}

\end{document}
3

You could use an array where the entries are in \scriptstyle.

\documentclass[11pt]{article}
\usepackage{lmodern}
\usepackage{mathtools}
\usepackage{array}
\begin{document}
\[
\renewcommand{\arraystretch}{0.55}
A_{\mu \nu \lambda} +
\biggl[ \begin{array}{@{\,}>{\scriptstyle}c@{\,}}
    \mu \; \rightarrow \; \lambda \\
    \nu \; \rightarrow \; \mu \\
    \lambda \; \rightarrow \; \nu
\end{array} \biggr]
\]
\end{document}
3

You can use an array in \scriptsize.

\documentclass[11pt,letterpaper,twoside]{book}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[total={6in,10in},left=1.5in,top=0.5in,includehead,includefoot]{geometry}
\usepackage{microtype}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{mathtools}
\usepackage{tensor}

\newenvironment{scriptarray}[2][c]
 {%
  \mathord{}% just to ensure this is used in math
  \hbox\bgroup\scriptsize$\begin{array}[#1]{#2}%
 }
 {%
  \end{array}$\egroup
 }

\begin{document}

\begin{equation}
A_{\mu \nu \lambda} +
  \left[ \begin{scriptarray}{@{}c@{}}
    \mu \rightarrow \lambda \\
    \nu \rightarrow \mu \\
    \lambda \rightarrow \nu
  \end{scriptarray} \right]
\end{equation}

\end{document}

enter image description here

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .