13

How I get this equation with vertical arrows that help describe some of its terms?

\begin{equation*}
0 \leq F = \underbrace{\sum\limits_{i=1}^{n}(y_i - \overline{y})^2}_{(n-1)s_y^2} 
- 2b \underbrace{\sum\limits_{i=1}^{n}(x_i - \overline{x})(y_i - \overline{y})}_{(n-1)s_{xy} = (n-1)rs_xs_y}
+b^2 \underbrace{\sum\limits_{i=1}^{n}(x_i - \overline{x})^2}_{(n-1)s_x^2}
\end{equation*}

enter image description here

  • 3
    welcome to tex.se! please make your code snippet complete and than extend it to small document with your equation. – Zarko Sep 4 '18 at 19:38
18

The command \uparrow makes an extensible arrow.

\documentclass{article}
\usepackage{mathtools}

\newcommand\vertarrowbox[3][6ex]{%
  \begin{array}[t]{@{}c@{}} #2 \\
  \left\uparrow\vcenter{\hrule height #1}\right.\kern-\nulldelimiterspace\\
  \makebox[0pt]{\scriptsize#3}
  \end{array}%
}
\begin{document}

\begin{equation*}
0 \leq F = 
{\underbrace{\sum_{i=1}^{n}(y_i-\bar{y})^2}_{(n-1)s_y^2}}
-\vertarrowbox{2b}{text}
{\underbrace{{}\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})}_{(n-1)s_{xy} = (n-1)rs_xs_y}}
+\vertarrowbox{b^2}{More text}
{\underbrace{{}\sum_{i=1}^{n}(x_i-\bar{x})^2}_{(n-1)s_x^2}}
\end{equation*}

\begin{equation*}
0 \leq F = 
\sum_{i=1}^{n}(y_i-\bar{y})^2
-2b
\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})
+b^2
\sum_{i=1}^{n}(x_i-\bar{x})^2
\end{equation*}

\end{document} 

The strange braces can be easily explained: \underbrace makes an Op atom, which conflicts with the spacing of binary operations, so it's best to brace it. However, if \sum is preceded by an ordinary symbol, a thin space should appear, which is produced by the empty subformula {} inside \underbrace when necessary.

The second display shows the standard spacing without \underbrace and the arrows, just for checking the spaces are the same.

The \vertarrowbox has an optional argument for the desired height of the arrow, default 6ex. Call it as \vertarrowbox[12ex]{<symbol>}{<text>} if you want to double the height (its size should depend on context).

enter image description here

| improve this answer | |
  • I didn't aware, until I saw your solution, of the fact that \uparrow is extensible and thus can be resized using the \left and \right machinery. Good stuff! – Mico Sep 5 '18 at 14:06
  • Can this be used to describe an exponent somehow? Such as e^{-\vertarrowbox{\lambda}{Some text}t}. Without any changes this moves up the exponent instead of moving down the text – blenderfreaky Jan 21 at 10:09
  • 1
    @blenderfreaky If it's not the only description, then e^{-\smash{\!\vertarrowbox{\scriptstyle\lambda}{Some text}\!}t} should do. – egreg Jan 21 at 11:23
8

Something like this? Observe that the solution sets a macro called \vertarrowbox, which takes two arguments: (a) the stuff to be placed on the main line of the equation, and (b) the text to be placed below the long vertical arrow.

enter image description here

\documentclass{article}
\usepackage{mathtools,graphicx}
\newcommand\vertarrowbox[2]{%
    \begin{array}[t]{@{}c@{}} #1 \\
    \rotatebox{90}{$\xrightarrow{\hphantom{abcdefgh}}$} \\[-1ex]
    \mathclap{\scriptstyle\text{#2}}%
    \end{array}}
\begin{document}
\begin{equation*}
0 \leq F = 
\underbrace{\sum_{i=1}^{n}(y_i-\bar{y})^2}%
       _{(n-1)s_y^2}  
{}-{}\vertarrowbox{2b}{text}
\underbrace{\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})}%
       _{(n-1)s_{xy} = (n-1)rs_xs_y} 
{}+{}\vertarrowbox{b^2}{More text}
\underbrace{\sum_{i=1}^{n}(x_i-\bar{x})^2}%
       _{(n-1)s_x^2}
\end{equation*}
\end{document} 
| improve this answer | |
  • what a competition! you overtook me for 12 seconds. i obviously need a new, faster PC :-). +1 for nice answer – Zarko Sep 4 '18 at 19:59
  • @Zarko - Thanks!! I've upvoted your answer in the meantime too. :-) – Mico Sep 4 '18 at 20:01
  • To the OP: Note that I've also replaced all instances of \overline with \bar. – Mico Sep 4 '18 at 20:09
  • 1
    \phantom{\smash{...}}? Why not \hphantom? But rotating is just wrong. ;-) – egreg Sep 4 '18 at 20:43
  • @egreg - Good observation about replacing \phantom{\smash{...}} with \hphantom{...} ;-) – Mico Sep 4 '18 at 20:56
6

one possibilities is use of the package tikz and its tikzmark library:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark}

\usepackage{lipsum}% for dummy text

\begin{document}
\lipsum*[11]
\[
0 \leq F =  \underbrace{\sum_{i=1}^{n}(y_i - \overline{y})^2}_{(n-1)s_y^2}
            - \tikzmark{A}2b
            \underbrace{\sum_{i=1}^{n}(x_i - \overline{x})(y_i - \overline{y})}_{(n-1)s_{xy} = (n-1)rs_xs_y}
            + \tikzmark{B}b^2
            \underbrace{\sum_{i=1}^{n}(x_i - \overline{x})^2}_{(n-1)s_x^2}
\begin{tikzpicture}[overlay, remember picture,shorten <=1mm,font=\footnotesize]
\draw[<-] ([xshift=1.0ex] pic cs:A) -- ++ (0,-1.2) node[below] {text};
\draw[<-] ([xshift=0.5ex] pic cs:B) -- ++ (0,-1.2) node[below] {text};
\end{tikzpicture}
\bigskip
\]
\lipsum*[12]
\end{document}

enter image description here

| improve this answer | |
  • +1. Purely aesthetically, I think it's desirable to typeset the explanatory text blocks with \footnotesize or even \scriptsize. – Mico Sep 4 '18 at 20:00
  • 1
    @Mico, thank you for suggestion. corrected now. – Zarko Sep 4 '18 at 20:36
5

A short code with pstricks and auto-pst-pdf:

\documentclass{article}
\usepackage{amsmath}
\usepackage{pst-node, auto-pst-pdf}

\begin{document}

\begin{postscript}
\begin{equation*}
0 \leq F = \underbrace{\sum\limits_{i=1}^{n}(y_i - \overline{y})^2}_{(n-1)s_y^2}
{}-\rnode{B}{2b} \underbrace{\sum\limits_{i=1}^{n}(x_i - \overline{x})(y_i - \overline{y})}_{(n-1)s_{xy} = (n-1)rs_xs_y}
{}+\rnode{b2}{b^2} \underbrace{\sum\limits_{i=1}^{n}(x_i - \overline{x})^2}_{(n-1)s_x^2}
 \end{equation*}
 \psset{arrowinset=0.12, arrows=->, nodesep=4pt}
\uput{12ex}[d](B){\rnode[t]{T1}{\textsf{Text}}}\ncline{T1}{B}
\uput{12ex}[d](b2){\rnode[t]{T2}{\textsf{Text}}}\ncline{T2}{b2}
 \end{postscript}

\end{document} 

enter image description here

| improve this answer | |
  • +1. To make the - and + terms between the summands act like binary rather than as unary operators, I think it's a good idea to surround them with pairs of curly braces, i.e., to write them as {}-{} and {}+{}, resp. Also, the three \limits directives aren't needed. – Mico Sep 4 '18 at 20:06
  • 1
    @Mico: One pair of braces for each node will do. Actually, it has nothing to do with the pstricks nodes (never noticed it previously): it seems to come from the \underbraces. – Bernard Sep 4 '18 at 20:18
  • I only ever noticed the spacing issue after coming across a comment by @egreg on this topic, i.e., the presence of \underbrace directives.... – Mico Sep 4 '18 at 20:24

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.