7

How to highlight maths environments (in-line mode excluded) with a coloured rectangular background e.g. grey?

A \textwidth rectangular behind the {equation} environment.

Tobi
  • 56,353
M.O.
  • 551

2 Answers2

11

It is possible to use mdframed and surround the equation environments.

equation

\documentclass{article}

\usepackage{mdframed}
\usepackage{xcolor}
\surroundwithmdframed[
    hidealllines=true,
    backgroundcolor=black!20,
    skipbelow=\baselineskip,
    skipabove=\baselineskip
]{equation}

\begin{document}
Text
\begin{equation}
1+1=2
\end{equation}
Text
\end{document}

Extended version

To add the background also to \[ … \] some more code is necessary:

\documentclass{article}

\usepackage{mdframed}
\usepackage{xcolor}
\usepackage{etoolbox}

% define a style
\mdfdefinestyle{mathbackground}{
    hidealllines=true,
    backgroundcolor=black!20,
    skipbelow=\baselineskip,
    skipabove=\baselineskip,
    innertopmargin=1pt,
}

% add it to {equation}
\surroundwithmdframed[style=mathbackground]{equation}
% ... similar for other environments

% add the environment to \[\] (needs etoolbox)
\preto{\[}{%
    \begin{mdframed}[style=mathbackground]%
    \vspace{-\baselineskip}%
}
\appto{\]}{%
    \end{mdframed}%
}

\begin{document}
Text
\begin{equation}
    1+1=2
\end{equation}
Text

Text
\[
1+1=2
\]
Text
\end{document}

But use this with care I’m not sure if there are any drawbacks. Take it as a quick & dirty solution …

Tobi
  • 56,353
  • Thanks Tobi. This is exactly what I meant, but I'm writing my report in book class. I tried your code. It seems it doesn't work in this class. – M.O. Oct 19 '12 at 07:49
  • @MilO: Sorry but I can’t reproduce your errer. If I just replace article with book everything works fine. What’s the error message you get? – Tobi Oct 19 '12 at 14:44
  • Is there a way I could use this as in a shortcut equation like \[ a = 1 \]? – hoeni Aug 22 '14 at 10:58
  • 1
    @hoeni: See my edit. But I’m not sure if this has any drawbacks or fuses other problems … – Tobi Aug 22 '14 at 14:06
  • @Tobi works fine! Had to do some space tuning due to my LaTex Beamer Environment, but I can see the principle, thank you! – hoeni Aug 27 '14 at 14:10
0

I think I really didn't follow

The rectangular is expected to be below the equation and also the equation counter. In better words \textwidth.

Hence this answer ;) I don't know to what extent this will be useful to anybody. But for the sake of it, I present the following:

This solution uses etoolbox with its \AfterEndEnvironment macro.

\documentclass{article}
\usepackage{tikz,lipsum}
\usepackage{etoolbox}
\AfterEndEnvironment{equation}{{\tikz\draw[fill=black!20,draw=none] (0,0) rectangle (\textwidth, .3);}\par}


\begin{document}
\lipsum[1]
\begin{equation}
1+1=2
\end{equation}
\lipsum[2]
\begin{equation}
1+1=2
\end{equation}
\lipsum[3]
\end{document}

enter image description here

  • 3
    I suspect that the "below" in the question should be "behind" – egreg Oct 15 '12 at 17:36
  • 1
    @egreg: hehe. If that is the case Tobi has already answered it. Let this answer be for fun ;) –  Oct 15 '12 at 17:38
  • Also "empheq" (http://www.tex.ac.uk/tex-archive/help/Catalogue/entries/empheq.html) from the "mh" bundle er useful for something like this. – Svend Tveskæg Oct 15 '12 at 19:28
  • Do you know that you can use \fill[black!20] instead of \draw[fill=black!20,draw=none] ;-) – Tobi Oct 15 '12 at 22:42
  • 'er' --> 'is' ... I hate it when I mix Danish and English! – Svend Tveskæg Oct 17 '12 at 08:14
  • Thanks you mentioned Egreg. Honestly speaking I carelessly wrote the word 'below' instead of the correct word 'behind' which might have caused to a misunderstandings. – M.O. Oct 19 '12 at 07:45