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?

  • 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 Dec 30 '18 at 1:48
  • 1
    @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
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

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

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.