# Draw a line through one column of a matrix

I'd like to "cancel" (draw a line through) a column of a matrix (using \begin{pmatrix}..\end{pmatrix}). How can I do this?

-

The usual TikZ answer using \tikzmark to mark the top and bottom points where you want the line to be drawn:

## Notes:

• This does require two runs. First one to determine the locations, and the second to do the drawing.

## Code:

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}

\newcommand{\tikzmark}[2]{\tikz[overlay,remember picture,baseline] \node [anchor=base] (#1) {$#2$};}

\newcommand{\DrawLine}[3][]{%
\begin{tikzpicture}[overlay,remember picture]
\draw[#1] (#2.north) -- (#3.south);
\end{tikzpicture}
}

\begin{document}
$\begin{pmatrix} \tikzmark{topA}{a} & \tikzmark{topB}b & {0} \\ a & b & 0 \\ a & b & 0 \\ \tikzmark{bottomA}{c} & \tikzmark{bottomB}d & {1} \end{pmatrix}$
\DrawLine[red, thick, opacity=0.5]{topA}{bottomA}
\end{document}

-
\documentclass{article}
\usepackage{amsmath}
\begin{document}

$\begin{pmatrix} a & b & c \\ d & e & f\makebox(-6,0){\rule[1ex]{0.4pt}{3\normalbaselineskip}}\\ g & h & i \end{pmatrix}$

\end{document}


-
\documentclass[a4paper]{article}
\usepackage{amsmath}
\begin{document}
$\settodepth{\dimen0}{\begin{array}[t]{l}1\\2\\3\\4\end{array}} \addtolength{\dimen0}{2ex} \begin{pmatrix} a & b & 0 \\ a & b & 0 \\ a & b & 0 \\ \smash{\makebox[0pt][l]{\kern2pt\rule[-.8ex]{0.4pt}{\dimen0}}} c & d & 1 \end{pmatrix}$
\end{document}


-

Here is a rudimentary way to do this with a regular array:

\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\begin{document}
$\begin{pmatrix} a & b & c \\ d & e & f \\ g & h & i \end{pmatrix}$

$\left(\begin{array}{@{}cc@{\hspace{2\tabcolsep}}|@{\hspace{-.5\tabcolsep}}c@{}} a & b & c \\ d & e & f \\ g & h & i \end{array}\right)$
\end{document}


This works well for single-entry columns. If you have wider columns, more modification of the lengths are required.

-