我想在照片上绘制标签。标签只包含 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)}
使线条彼此居中。
例子