Why isn't \ddots working while \vdots works?

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$ \

?

• 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 Dec 30 '18 at 1:48
• @marmot LOL fixed it – Ovi Dec 30 '18 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 Dec 30 '18 at 1:54
• You might want to replace $$...$$ by $..$, add a documentclass, \begin{document} and \end{document}. – marmot Dec 30 '18 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 Dec 30 '18 at 2:01 2 Answers 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}  • Curious indeed: perhaps the LaTeX team should consider a correction to the implementation of \vdots. – GuM Dec 30 '18 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 Dec 30 '18 at 13:13 Once you use \[...$, you're in display math mode and therefore don't need to supply in-line $...$ around math content:

\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}