3

I have the following matrix

\usepackage{amsmath}
\usepackage{amssymb}

$$
M=\begin{bmatrix}
\frac{\partial f_1}{\partial x_1}(p) & \frac{\partial f_1}{\partial x_2}(p) & \cdots & \frac{\partial f_1}{\partial x_n}(p) \\
 \frac{\partial f_2}{\partial x_1}(p) & \frac{\partial f_2}{\partial x_2}(p) & \cdots & \frac{\partial f_2}{\partial x_n}(p) \\
$\vdots$ & $\vdots$ & $\vdots$ & $\vdots$ \\
 \frac{\partial f_m}{\partial x_1}(p) & \frac{\partial f_m}{\partial x_2}(p) & \cdots & \frac{\partial f_m}{\partial x_n}(p) \\

\end{bmatrix}$$

which complies nicely. However, in the third line of the matrix, I would like to change the third "\vdots" to a "\ddots". If I do so, I get the following error:

LaTex Warning: No \author given.

(The directory on my computer)

!Missing $ inserted.

< inserted text >

$

I.72 $\vdots$ & $\vdots$ & $\ddots

$ & $\vdots$ \

?

Could anybody help please?

6
  • 1
    It only "compiles nicely" if you ignore the error messages. Everything between $$…$$ is already in math mode, so you don't need more $...$ around the \vdots
    – alephzero
    Commented Dec 30, 2018 at 1:48
  • 1
    @marmot LOL fixed it
    – Ovi
    Commented Dec 30, 2018 at 1:52
  • @alephzero Ah thanks got it; unfortunately I am using TexWorks and when it complies it does not open the window with the error messages, so I was not aware I had any.
    – Ovi
    Commented Dec 30, 2018 at 1:54
  • You might want to replace $$ ... $$ by \[ .. \], add a documentclass, \begin{document} and \end{document}.
    – user121799
    Commented Dec 30, 2018 at 1:58
  • @marmot I have the begin/end document and document class; I just wanted to show the packages I was using in case it affected the answer. That's interesting, I didn't know that \[ could replace $$. I am used to the latter from math.stackexchange. Is there any benefit to using the former?
    – Ovi
    Commented Dec 30, 2018 at 2:01

2 Answers 2

4

Curiously enough, \vdots is also legal in text mode, because it is defined as

\DeclareRobustCommand{\vdots}{%
  \vbox{%
    \baselineskip4\p@ \lineskiplimit\z@
    \kern6\p@\hbox{.}\hbox{.}\hbox{.}%
  }%
}

This fact should not be exploited, better use \vdots only in math mode.

On the contrary, \ddots is surrounded by \mathinner, so it has to appear in math mode:

\DeclareRobustCommand{\ddots}{%
  \mathinner{%
    \mkern1mu
    \raise7\p@\vbox{\kern7\p@\hbox{.}}%
    \mkern2mu
    \raise4\p@\hbox{.}%
    \mkern2mu
    \raise\p@\hbox{.}
    \mkern1mu
  }%
}

What happens with your input can be understood once you realize that bmatrix internally uses array, where each cell implicitly has $ at the beginning and $ at the end. Thus in

 $\vdots$

the first $ exits from math mode, producing an empty formula; then \vdots is typeset in text mode and finally another empty formula is produced from the trailing $ and the implicit $ at the end.

With $\ddots$ it is the same, but now TeX finds \mathinner in text mode and raises an error.

How to cure this? Just don't use $ inside bmatrix or anything that's already in math mode.

Caveat 1. I've seen several pieces of MathJax code where $ seems to be used as a mean to produce “weird” symbols: something like $\alpha$ = $\beta$ or worse. The code should be $\alpha=\beta$, of course.

Caveat 2. Never use $$ in a LaTeX document. See Why is \[ ... \] preferable to $$ ... $$?

You may also want to increase the vertical spacing between the first two rows.

\documentclass{article}

\usepackage{amsmath}
\usepackage{amssymb}

\begin{document}

\begin{equation*}
M=\begin{bmatrix}
  \frac{\partial f_1}{\partial x_1}(p) &
  \frac{\partial f_1}{\partial x_2}(p) &
  \cdots &
  \frac{\partial f_1}{\partial x_n}(p) \\[1.5ex]
  \frac{\partial f_2}{\partial x_1}(p) &
  \frac{\partial f_2}{\partial x_2}(p) &
  \cdots &
  \frac{\partial f_2}{\partial x_n}(p) \\
  \vdots & \vdots & \ddots & \vdots \\
  \frac{\partial f_m}{\partial x_1}(p) &
  \frac{\partial f_m}{\partial x_2}(p) &
  \cdots &
  \frac{\partial f_m}{\partial x_n}(p)
\end{bmatrix}
\end{equation*}

\end{document}

enter image description here

2
  • Curious indeed: perhaps the LaTeX team should consider a correction to the implementation of \vdots.
    – GuM
    Commented Dec 30, 2018 at 12:33
  • Thank you very much for the thorough response! I was also wondering how to make my entries further apart in the matrix and I got it now
    – Ovi
    Commented Dec 30, 2018 at 13:13
4

Once you use \[...\], you're in display math mode and therefore don't need to supply in-line $...$ around math content:

enter image description here

\documentclass{article}

\usepackage{amsmath,amssymb}

\begin{document}

\[
  M = \begin{bmatrix}
    \frac{\partial f_1}{\partial x_1}(p) & \frac{\partial f_1}{\partial x_2}(p) & \cdots & \frac{\partial f_1}{\partial x_n}(p) \\
    \frac{\partial f_2}{\partial x_1}(p) & \frac{\partial f_2}{\partial x_2}(p) & \cdots & \frac{\partial f_2}{\partial x_n}(p) \\
                 \vdots                  &              \vdots                  & \ddots &              \vdots                  \\
    \frac{\partial f_m}{\partial x_1}(p) & \frac{\partial f_m}{\partial x_2}(p) & \cdots & \frac{\partial f_m}{\partial x_n}(p)
  \end{bmatrix}
\]

\end{document}

You must log in to answer this question.

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