Take the 2-minute tour ×
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.

I've never quite been pleased with the options for aligning matrices in TeX when there is a preceding unary minus in some of the rows (but not all). I'd like to implement an environment that automatically detects a preceding unary minus and adds a \phantom{-} to each row not containing one. I'm not sure how to go about this but also willing to accept other solution ideas. My main parameter is that it needs to be just as simple of an environment to use as the ams bmatrix environment.

Here is the output demonstrating why I believe \phantom{-} is the way to go \phantom{-} is better

Here is the code to demonstration:

\documentclass{article}


\usepackage{mathtools} %for minus signes in matrices

\usepackage{amsmath,amsfonts,amssymb,amsthm} % For math equations, theorems, sy

\begin{document}

\begin{tabular}{cc}
Usual & \\ \hline
 & \\
$
\begin{bmatrix}
1 & 2 & 12345\\
-5 & 2 & -5 \\
0 & -1 & 1
\end{bmatrix}
$
&
$
\begin{bmatrix}
1-\lambda & 2         & 12345\\
-5        & 2-\lambda & -5 \\
0         & -1        & 1-\lambda
\end{bmatrix}
$\\[1cm]

Right Aligned &\\  \hline
 & \\
$
\begin{bmatrix*}[r]
1 & 2 & 12345\\
-5 & 2 & -5 \\
0 & -1 & 1
\end{bmatrix*}
$
&
$
\begin{bmatrix*}[r]
1-\lambda & 2         & 12345\\
-5        & 2-\lambda & -5 \\
0         & -1        & 1-\lambda
\end{bmatrix*}
$\\[1cm]

Phantom Minues & \\  \hline
 & \\

$
\begin{bmatrix}
\phantom{-}1 & \phantom{-}2 & \phantom{-}12345\\
-5           & \phantom{-}2 & -5 \\
\phantom{-}0 & -1 & \phantom{-}1
\end{bmatrix}
$
&
$
\begin{bmatrix}
\phantom{-}1-\lambda & \phantom{-}2         & \phantom{-}12345\\
-5                   & \phantom{-}2-\lambda & -5 \\
\phantom{-}0         & -1                   & \phantom{-}1-\lambda
\end{bmatrix}
$
\end{tabular}
\end{document}
share|improve this question
    
not related to your question but notice that amssymb loads amsfonts automatically. –  jfbu May 17 at 20:09

1 Answer 1

up vote 8 down vote accepted

enter image description here

You can declare a column type that looks for -

\documentclass{article}

\usepackage{array}
\usepackage{mathtools} %for minus signes in matrices

\usepackage{amsmath,amsfonts,amssymb,amsthm} % For math equations, theorems, sy
\makeatletter
\def\zz\ignorespaces{\@ifnextchar-{}{\phantom{-}}}
\newcolumntype{C}{>{\zz}{c}}
\makeatother

\begin{document}

\begin{tabular}{cc}
Usual & \\ \hline
 & \\
$
\begin{bmatrix*}[C]
1 & 2 & 12345\\
-5 & 2 & -5 \\
0 & -1 & 1
\end{bmatrix*}
$
&
$
\begin{bmatrix*}[C]
1-\lambda & 2         & 12345\\
-5        & 2-\lambda & -5 \\
0         & -1        & 1-\lambda
\end{bmatrix*}
$\\[1cm]
$
\begin{bmatrix*}[C]
1 & 2 & 12345\\
5 & 2 & -5 \\
0 & -1 & 1
\end{bmatrix*}
$
&
$
\begin{bmatrix*}[C]
1-\lambda & 2         & 12345\\
5        & 2-\lambda & -5 \\
0         & -1        & 1-\lambda
\end{bmatrix*}
$\\[1cm]

$
\begin{bmatrix}
\phantom{-}1 & \phantom{-}2 & \phantom{-}12345\\
-5           & \phantom{-}2 & -5 \\
\phantom{-}0 & -1 & \phantom{-}1
\end{bmatrix}
$
&
$
\begin{bmatrix}
\phantom{-}1-\lambda & \phantom{-}2         & \phantom{-}12345\\
-5                   & \phantom{-}2-\lambda & -5 \\
\phantom{-}0         & -1                   & \phantom{-}1-\lambda
\end{bmatrix}
$
\end{tabular}
\end{document}
share|improve this answer
    
Hmm I wouldn't have guessed that adding a \phantom{-} on every row that didn't have a {-} would have goofed the column placement, but it is imperceivable in these examples at least. Thanks :) –  Nate Iverson May 17 at 16:21
    
@NateIverson "goofed" ? –  David Carlisle May 17 at 16:23
    
change the first column to be 1 5 0 instead, the column is then placed in a different position. Maybe not such a good working example. This is 99% of what I was hoping for, I'll certainly use it unless there is something slightly better. –  Nate Iverson May 17 at 16:28
    
@NateIverson I updated the example with a 5 and showed the image it is as far as I can see identical spacing to the code you suggested with \phantom added explicitly. The column is of course wider than the column would be in a standard bmatrix as there is space left for a - in each entry, Perhaps what you really wanted was a 2-pass system that only adds the phantom- in columns where one cell starts with - but that's a lot more complicated (and not what you asked for:-) –  David Carlisle May 17 at 16:37
    
David: You would have to remove the explicitly added \phantom{-} also in the example without minuses on the column. yes agreed what I wanted was far more complicated and I didn't communicate that very well. I didn't think it would necessarily take 2 passes, but maybe that's a byproduct of using environments. –  Nate Iverson May 17 at 16:47

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.