# Draw box with colored background and linebreaks which adjusts to the text width?

I want to draw labels on a photograph. The labels will only contain 1..3 words, and sometimes there shall be a linebreak, e. g.

Big House \newline
(empty)


Is it possible to create a box which draws a white rectangle below this text and which adapts to the width of the text?

I could use \colorbox{white}{Big House \newline (empty)}, but it does not allow the linebreak.

If I use a \parbox{}, I have to define the width by hand.

Is there a box with a colored background, which can itself adapt its width to the longest text and contain linebreaks or paragraphs?

-

You could use the varwidth environment provided by the homonymous package; this environment is an analogue of minipage, but its resulting width is the natural width of its contents. A little example:

\documentclass{article}
\usepackage{varwidth}
\usepackage{xcolor}
\usepackage{lipsum}

\newcommand\MyCBox[1]{%
\colorbox{red!60}{\begin{varwidth}{\dimexpr\linewidth-2\fboxsep}#1\end{varwidth}}}

\begin{document}

\noindent\MyCBox{Big House\\ (empty)}

\noindent\MyCBox{Big House and some more text\\ (empty)}

\noindent\MyCBox{Big\\ (empty)}

\noindent\MyCBox{\lipsum[1]}

\end{document}


-
\newcommand\MyCBox[1]{% \colorbox{red!60}{\begin{varwidth}{\dimexpr\linewidth-2\fboxsep}#1\end{varwidth}‌​}} While compiling we are getting the error as ! Undefined control sequence. <argument> \dimexpr  Please suggest me how to avoid this error. –  CR20001 May 27 '13 at 5:39
\newcommand{\overbox}[2][l]{%
\colorbox{white}{\begin{tabular}{@{}#1@{}}#2\end{tabular}}%
}

\overbox{Big House \\ (empty)}


One can also say

\overbox[c]{Big House \\ (empty)}


to get lines centered with respect to one another.

Example

-
very creative solution! Thanks! –  MostlyHarmless Oct 26 '11 at 21:00
You can also use {@{}c@{}} as the argument to tabular if you prefer centered lines. But see the edited answer for a slightly different approach. –  egreg Oct 26 '11 at 21:01