TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm trying to create a pmatrix whose components are rather complicated fractions (Christoffel symbols), and the line spacing is too small making the whole thing a bit cramped and hard to read.

Is there any easy way to increase the spacing (about 1.5 the default would be perfect)?

share|improve this question
up vote 43 down vote accepted

You could redefine \arraystretch. This can be made locally, within a group or environment. For example:

\begingroup
\renewcommand*{\arraystretch}{1.5}
% your pmatrix expression
\endgroup

But you could do it in the preamble too, then it would have effect on all matrices and arrays.

Here's a redefinition of an internal amsmath LaTeX macro for customizing line spacing in specific matrices arbitrarily as desired:

\makeatletter
\renewcommand*\env@matrix[1][\arraystretch]{%
  \edef\arraystretch{#1}%
  \hskip -\arraycolsep
  \let\@ifnextchar\new@ifnextchar
  \array{*\c@MaxMatrixCols c}}
\makeatother

After putting this in your preamble, you can write

\begin{pmatrix}[1.5]
...

vary the value as you like, with pmatrix, vmatrix, bmatrix and alike, or use it without the optional argument as usually.

I used it similar in my blog some years ago.

Complete small example to show the difference:

\documentclass{article}
\usepackage{amsmath}
\makeatletter
\renewcommand*\env@matrix[1][\arraystretch]{%
  \edef\arraystretch{#1}%
  \hskip -\arraycolsep
  \let\@ifnextchar\new@ifnextchar
  \array{*\c@MaxMatrixCols c}}
\makeatother
\begin{document}
\[
  \begin{pmatrix}
    1 & 0 \\
    0 & 1
  \end{pmatrix}
  =
  \begin{pmatrix}[1.5]
    1 & 0 \\
    0 & 1
  \end{pmatrix}
\]
\end{document}

matrices in two sizes

share|improve this answer
    
Thanks so much, that was so helpful! Marie – user17708 Aug 17 '12 at 16:09
    
How can one change the stretching in the preamble and have it done? Do one have to write \begin{pmatrix}[1.5] to stretch it?: EDIT: OK I found it: just add "\renewcommand*{\arraystretch}{1.5}" in the preamble and you're good to go. – Faq May 1 '14 at 18:14

By redefining \arraystretch you can change the vertical space between the all rows; using the optional argument for \\ you can control the vertical space for individual lines:

\documentclass{article}
\usepackage{amsmath}

\begin{document}

\[
\begin{pmatrix}
  \dfrac{a}{b} & c\\
  \dfrac{a}{b} & d\\
  \dfrac{a}{b} & e
\end{pmatrix}
\]

\[
\renewcommand\arraystretch{2}
\begin{pmatrix}
  \dfrac{a}{b} & c\\
  \dfrac{a}{b} & d\\
  \dfrac{a}{b} & e
\end{pmatrix}
\]

\[
\begin{pmatrix}
  \dfrac{a}{b} & c \\[1em]
  \dfrac{a}{b} & d\\[2em]
  \dfrac{a}{b} & e
\end{pmatrix}
\]

\end{document}
share|improve this answer
    
\[1em] This is very helpful, thanks. – Rafael Wörner May 21 '14 at 19:25
    
+1 for \\[1em] – Wauzl Nov 25 '15 at 8:44

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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