绘制具有彩色背景和换行符的框,以适应文本宽度?

绘制具有彩色背景和换行符的框,以适应文本宽度?

我想在照片上绘制标签。标签只包含 1 到 3 个单词,有时需要换行,例如

Big House \newline
(empty)

是否可以创建一个框,在文本下方绘制一个白色矩形,并适应文本的宽度?

我可以使用\colorbox{white}{Big House \newline (empty)},但它不允许换行。

如果我使用\parbox{},我必须手动定义宽度。

是否有一个带有彩色背景的框,它本身可以根据最长的文本调整宽度并包含换行符或段落?

答案1

您可以使用varwidth同名包提供的环境;此环境与 类似minipage,但其生成的宽度是其内容的自然宽度。举个小例子:

\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}

在此处输入图片描述

答案2

\newcommand{\overbox}[2][l]{%
  \colorbox{white}{\begin{tabular}{@{}#1@{}}#2\end{tabular}}%
}

\overbox{Big House \\ (empty)}

也可以说

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

使线条彼此居中。

例子

在此处输入图片描述

相关内容