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:
- http://tex.stackexchange.com/a/40333/213
Edit and compile if you like:
% 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}
Click to download: highlighting-matrix.tex • highlighting-matrix.pdf
Open in Overleaf: highlighting-matrix.tex