[Tex/LaTex] Draw box with colored background and linebreaks which adjusts to the text width

boxescolor

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?

Best Answer

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}

enter image description here