Have a look at the mdframed
package:
\documentclass{article}
\usepackage[framemethod=tikz]{mdframed}
\usepackage{lipsum}
\definecolor{mycolor}{rgb}{0.122, 0.435, 0.698}
\newmdenv[innerlinewidth=0.5pt, roundcorner=4pt,linecolor=mycolor,innerleftmargin=6pt,
innerrightmargin=6pt,innertopmargin=6pt,innerbottommargin=6pt]{mybox}
\begin{document}
\lipsum[2]
\begin{mybox}
\lipsum[4]
\end{mybox}
\lipsum[2]
\end{document}

A solution with hf-tikz
(requires two compilation runs):
\documentclass[dvipsnames]{article}
\usepackage{amsmath}
\usepackage[customcolors]{hf-tikz}
\definecolor{My}{RGB}{0,31,63}
\definecolor{MyConst}{RGB}{128,128,128}
\definecolor{MyFunc}{RGB}{0,75,107}
\definecolor{MyIndep}{RGB}{127,55,0}
\definecolor{MySubst}{RGB}{250,230,230}
\newcommand{\const}[1]{{\color{MyConst}\mathrm{#1}}} % normal constant
\newcommand{\uconst}[1]{\mathrm{#1}} % universal mathematical constant
\newcommand{\var}[1]{{\color{MyIndep}#1}} % independent variable
\newcommand{\subst}[1]{{\colorbox{MySubst}#1}} % substitution
\hfsetfillcolor{Lavender!50}
\hfsetbordercolor{white}
\begin{document}
\[
\color{My}
{\color{MyFunc}\Psi} =
\const{\Psi_{_0}}\;
\uconst{e}^{\uconst{i} \left(
\tikzmarkin{a}(0.01,-0.175)(-0.015,0.3)\frac{p}{\const{\hbar}}\tikzmarkend{a}
\var{x} - \tikzmarkin{b}(0.01,-0.175)(-0.015,0.3)\frac{E}{\const{\hbar}}\tikzmarkend{b}\var{t} \right) }
\]
\end{document}
The result:

Remarks:
- it is better to use
\[ \]
rather than $$ $$
;
- the package allows you to not set in math mode the text inside a
\colorbox
: one just have to declare where the delimiters of the box should be positioned.
From version 0.3 of the package, things are a bit more user-friendly as shown in hf-tikz doesn't box around equation. The above code can be written thanks to styles as:
\documentclass[dvipsnames]{article}
\usepackage{amsmath}
\usepackage[customcolors]{hf-tikz}
\definecolor{My}{RGB}{0,31,63}
\definecolor{MyConst}{RGB}{128,128,128}
\definecolor{MyFunc}{RGB}{0,75,107}
\definecolor{MyIndep}{RGB}{127,55,0}
\definecolor{MySubst}{RGB}{250,230,230}
\newcommand{\const}[1]{{\color{MyConst}\mathrm{#1}}} % normal constant
\newcommand{\uconst}[1]{\mathrm{#1}} % universal mathematical constant
\newcommand{\var}[1]{{\color{MyIndep}#1}} % independent variable
\newcommand{\subst}[1]{{\colorbox{MySubst}#1}} % substitution
% available from version 0.3
\tikzset{offset def/.style={
above left offset={-0.015,0.3},
below right offset={0.01,-0.175},
},
hl/.style={
offset def,
set fill color=Lavender!50,
set border color=white,
}
}
\begin{document}
\[
\color{My}
{\color{MyFunc}\Psi} =
\const{\Psi_{_0}}\;
\uconst{e}^{\uconst{i} \left(
\tikzmarkin[hl]{a}\frac{p}{\const{\hbar}}\tikzmarkend{a}
\var{x} - \tikzmarkin[hl]{b}\frac{E}{\const{\hbar}}\tikzmarkend{b}\var{t} \right) }
\]
\end{document}
Procedure to get .png output
After reading the comments below, here is a way to get a .png
. The standalone
class here really helps since it has a png
class option.
Save as test.tex
:
\documentclass[dvipsnames,png, border=2pt]{standalone}
\usepackage{amsmath}
\usepackage[customcolors]{hf-tikz}
\definecolor{My}{RGB}{0,31,63}
\definecolor{MyConst}{RGB}{128,128,128}
\definecolor{MyFunc}{RGB}{0,75,107}
\definecolor{MyIndep}{RGB}{127,55,0}
\definecolor{MySubst}{RGB}{250,230,230}
\newcommand{\const}[1]{{\color{MyConst}\mathrm{#1}}} % normal constant
\newcommand{\uconst}[1]{\mathrm{#1}} % universal mathematical constant
\newcommand{\var}[1]{{\color{MyIndep}#1}} % independent variable
\newcommand{\subst}[1]{{\colorbox{MySubst}#1}} % substitution
\hfsetfillcolor{Lavender!50}
\hfsetbordercolor{white}
\begin{document}
$
\color{My}
{\color{MyFunc}\Psi} =
\const{\Psi_{_0}}\;
\uconst{e}^{\uconst{i} \left(
\tikzmarkin{a}(0.01,-0.175)(-0.015,0.3)\frac{p}{\const{\hbar}}\tikzmarkend{a}
\var{x} - \tikzmarkin{b}(0.01,-0.175)(-0.015,0.3)\frac{E}{\const{\hbar}}\tikzmarkend{b}\var{t} \right) }
$
\end{document}
and compile with:
pdflatex -shell-escape test.tex
This will create
- test.pdf
- test.png
perfectly cropped.
Best Answer
Here's a method that doesn't require loading TikZ explicitly. (Although
mdframed
uses tikz behind the scenes. This is, however, the package for framing boxes.If you don't even want to use TikZ as a backend, you could use PSTricks:
[Note this doesn't seem to be working for me at the moment.]