106

I have the following equation, where there is a lot of stuff under the sum symbol:

\begin{equation}
d(\vec{x},\vec{y})=
  \sum_{Z_{xy}\in\vec{Z}_{xy},\forall x\in\vec{x},\forall y\in\vec{y}} 
    f(Z_{xy})
\end{equation}

In the resulting document, I find it kind of hard to read. Is there a way to write the equation to make the result more readable, e.g. putting the stuff under the sum symbol on different lines?

  • Why write under Sum, when mathematical correct is write to right. \begin{equation} d(\vec{x},\vec{y})= \sum_{Z_{xy}\in\vec{Z}_{xy}} f(Z_{xy}),\forall x\in\vec{x},\forall y\in\vec{y} \end{equation} – MiMo Jun 10 '12 at 10:34
  • 1
    I agree with you but without the correct spacing, it is as bad as OP's. To be super-picky about it, forall is not the same as over all. With forall the author is relying on the reader's understanding for bad notation. – percusse Jun 10 '12 at 13:18
  • 5
    This is mathematically incorrect (if the notation has not introduced formally). But the \forall is definitely misused. – egreg Jun 10 '12 at 13:33
125

You can use the \substack command from the amsmath package, like this:

\begin{equation}
  d(\vec{x},\vec{y}) =
  \sum_{\substack{Z_{xy}\in\vec{Z}_{xy}\\
                  \forall x\in\vec{x}\\
                  \forall y\in\vec{y}}}
        f(Z_{xy}) 
\end{equation}

However, the result still doesn’t look good, because of the extra spacing around the sum symbol:

Image showing the result of the ‘\substack’ command

To fix this, you can use the \mathclap command from the mathtools package, like this:

\begin{equation}
 d(\vec{x},\vec{y}) =
    \sum_{\mathclap{\substack{Z_{xy}\in\vec{Z}_{xy}\\
                              \forall x\in\vec{x}\\
                               \forall y\in\vec{y}}}}
          f(Z_{xy}) 
\end{equation}

Image showing the result of the ‘\mathclap’ and ‘\substack’ commands

But perhaps you might be happy using only \mathclap, and not \substack. The result looks good as long as the subscript is not too wide.

\begin{equation}
  d(\vec{x},\vec{y}) =
    \sum_{\mathclap{{Z_{xy}\in\vec{Z}_{xy},
          \forall x\in\vec{x},
          \forall y\in\vec{y}}}} f(Z_{xy})
\end{equation}

Image showing the result of the ‘\mathclap’ command

The mathtools package also have several other useful commands for typesetting mathematics, including more commands for improving the display of subscripts and superscripts. I very much recommend taking a look at its documentation.

  • 13
    The \forall symbols should be omitted. – egreg Jun 10 '12 at 13:34
  • 4
    @egreg: Maybe one should just write three sums in total, the first two over x\in\vec{x} and y\in\vec{y}? – Hendrik Vogt Jun 10 '12 at 13:51
  • 1
    @HendrikVogt I'd use a two line \substack: \sum_{\substack{Z_{xy}\in\vec{Z}_{xy}\\x\in\vec{x},y\in\vec{y}}} – egreg Jun 10 '12 at 13:56
  • @KarlOveHufthammer You forgot ` \\ `. – Karlo Mar 22 '17 at 14:13
  • Looks good, but seems not to work in rmarkdown's beamer_presentations. Can that be confirmed? – jay.sf Oct 29 '17 at 15:26
16

Try the \substack command from the amsmath package, details of which are found here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.