# Example: Highlighting elements in matrices

Published 2012-01-08 | Author: Stefan Kottwitz

A submatrix within a matrix should be highlightened. Instead of simply drawing a rectangle, we can use TikZ for

• producing a rectangle node,
• using the fit library for fitting the desired area,
• defining a style for the highlighted node, so separated from the code and easy to change,
• using the TikZ options overlay and remember picture, for later referring to those nodes, for example for drawing arrows and annotations later.

Several compiler runs are required.

Written for answering a question on TeX.SX.

Do you have a question regarding this example, TikZ or LaTeX in general? Just ask in the LaTeX Forum.
Oder frag auf Deutsch auf TeXwelt.de. En français: TeXnique.fr.

% Highlighting elements in matrices
% Author: Stefan Kottwitz
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fit}
\tikzset{%
highlight/.style={rectangle,rounded corners,fill=red!15,draw,fill opacity=0.5,thick,inner sep=0pt}
}
\newcommand{\tikzmark}[2]{\tikz[overlay,remember picture,baseline=(#1.base)] \node (#1) {#2};}
%
\newcommand{\Highlight}[1][submatrix]{%
\tikz[overlay,remember picture]{
\node[highlight,fit=(left.north west) (right.south east)] (#1) {};}
}
\begin{document}
$M = \left(\begin{array}{*5{c}} \tikzmark{left}{1} & 2 & 3 & 4 & 5\\ 6 & 7 & 8 & 9 & 10 \\ 11 & 12 & \tikzmark{right}{13} & 14 & 15 \\ 16 & 17 & 18 & 19 & 20 \end{array}\right) \Highlight[first] \qquad M^T = \left(\begin{array}{*5{c}} \tikzmark{left}{1} & 6 & 11 & 16 \\ 2 & 7 & 12 & 17 \\ 3 & 8 & \tikzmark{right}{13} & 18 \\ 4 & 9 & 14 & 19 \\ 5 & 10 & 15 & 20 \end{array}\right)$
\Highlight[second]

\tikz[overlay,remember picture] {
\draw[->,thick,red,dashed] (first) -- (second) node [pos=0.66,above] {Transpose};
\node[above of=first] {$N$};
\node[above of=second] {$N^T$};
}
\end{document}​