Highlight an equation within an align environment
The mathtools
package provides an Aboxed
command, that allows one to make a box across an alignment. By redefining that slightly, you can get the desired effect:
\documentclass[11pt]{article}
\usepackage{color}
\usepackage{mathtools}
\usepackage{amssymb}
\usepackage{amsfonts}
\makeatletter
\def\@Aboxed#1\ENDDNE{%
\settowidth\@tempdima{$\displaystyle#1{}$}%
\addtolength\@tempdima{\fboxsep}%
\addtolength\@tempdima{\fboxrule}%
\global\@tempdima=\@tempdima
\kern\@tempdima
&
\kern-\@tempdima
\fcolorbox{red}{yellow}{$\displaystyle #1#2$}
}
\makeatother
\begin{document}
\begin{align*}
\Aboxed{a &= b} & c &= d \\
c & = d & \Aboxed{i &= k} \\
e & = f & g &= h
\end{align*}
\end{document}
I basically copied the definition of Aboxed
from mathtools.dtx
and changed the last line of the definition from \boxed
to \fcolorbox{...
.
(I wasn't sure if the following should be added as a new answer or as an edit. Please advise if I should make it a new answer.)
When looking at some lecture notes I wrote a while ago, I found that I had a command for this purpose in my preamble, and it came to me that I had copied it from LaTeXcommunity.org, but never used it. So here is another solution, based on this post at LaTeX Community by daleif:
\documentclass{article}
\usepackage{calc}
\usepackage{amsmath}
\usepackage{xcolor}
\newlength\dlf
\newcommand\alignedbox[2]{
% #1 = before alignment
% #2 = after alignment
&
\begingroup
\settowidth\dlf{$\displaystyle #1$}
\addtolength\dlf{\fboxsep+\fboxrule}
\hspace{-\dlf}
\fcolorbox{red}{yellow}{$\displaystyle #1 #2$}
\endgroup
}
\begin{document}
\begin{align*}
\alignedbox{a}{=b} & c &= d \\
c & = d & \alignedbox{i}{=k} \\
e & = f & g &= h
\end{align*}
\end{document}
This yields:
This does not have the problem of overwriting an existing command, but requires the calc
package.
This is rather an ugly hack: I used tikz
package to create a node around the left and right side of the equation in align, using remember picture
option to remember the size and location of the nodes. Then I drew the box with another tikz picture with the overlay
option.
The problem with that is tikz
will draw the box over the text in the equation, so I had to use the remembered position of the nodes to recreate the nodes again. There must be a better way to do that.
\documentclass[11pt]{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{tikz}
\usetikzlibrary{calc}
\tikzstyle{nd} = [anchor=base, inner sep=0pt]
\tikzstyle{ndpic} = [remember picture, baseline, every node/.style={nd}]
\begin{document}
\begin{align*}
\tikz[ndpic]{\node(left) {$a$};} &= \tikz[ndpic]{\node (right) {$b$};} \\
c & = d \\
e & = f \\
\tikz[ndpic]{\node(left1) {$\displaystyle \lim_{x\to 0}\frac{\sin x}{x}$};} &= \tikz[ndpic]{\node (right1)
{$\displaystyle \int_{-\pi}^\pi \frac{\sqrt{x^2 - 1}}{2x}\;dx$};} \\
\end{align*}
\begin{tikzpicture}[overlay, remember picture]
\draw[very thick, red, fill=yellow] ($ (left.south west)+(-.1,-.1) $)
rectangle ($ (right.north east)+(.1,.1) $);
\node[nd] at (left.base) {$a$};
\node[nd] at (right.base) {$b$};
\node[nd] at ($ (right.base)!.5!(left.base) $) {$=$};
\end{tikzpicture}
\begin{tikzpicture}[overlay, remember picture]
\draw[very thick, red, fill=yellow] ($ (left1.south west)+(-.1,-.2) $)
rectangle ($ (right1.north east)+(.1,.1) $);
\node[nd] at (left1.base) {$\displaystyle \lim_{x\to 0}\frac{\sin x}{x}$};
\node[nd] at (right1.base) {$\displaystyle \int_{-\pi}^\pi \frac{\sqrt{x^2 - 1}}{2x}\;dx$};
\node[nd] at ($ (right1.base west)!.5!(left1.base east) $) {$=$};
\end{tikzpicture}
\end{document}