在下面发布的代码中,我使用 varwidth 将 tcolorbox 缩小到短文本行的文本宽度。但是,我也有一些环绕文本行,在这种情况下 tcolorbox 太大了。如何在更改 tcolorbox 的最大边距的同时保留短文本片段的缩小以适应行为?我希望灰色区域的最大边距略小于两侧的常规段落边距,但我还希望在文本长度小于该边距时保持缩小以适应。
\documentclass[preprint]{revtex4-2}
\usepackage{lipsum}
\usepackage{setspace}
\usepackage{varwidth}
\usepackage{tcolorbox}
\tcbuselibrary{breakable}
\newsavebox{\myboxbox}
\NewDocumentEnvironment{mybox}{+b}% find a better name
{%
\centering
\setlength{\parindent}{0pt}%
% measure the text width
\sbox{\myboxbox}{\begin{varwidth}{\columnwidth}#1\end{varwidth}}%
\begin{tcolorbox}[
breakable,
width=\dimexpr\wd\myboxbox+8mm,
top=3mm,
bottom=4mm,
]
#1
\end{tcolorbox}%
}{}
\begin{document}
\lipsum[1]\\
\begin{mybox}
\begin{singlespace}
\lipsum[1]
\end{singlespace}
\end{mybox}
\begin{mybox}
\begin{singlespace}
Just a few words here. Just a few words here.
\end{singlespace}
\end{mybox}
\end{document}
答案1
将 设置varwidth
为\dimexpr\columnwidth-8mm
以减去稍后添加回 的width
内容tcolorbox
。
\documentclass[preprint]{revtex4-2}
\usepackage{lipsum}
\usepackage{setspace}
\usepackage{varwidth}
\usepackage{tcolorbox}
\tcbuselibrary{breakable}
\newsavebox{\myboxbox}
\NewDocumentEnvironment{mybox}{+b}% find a better name
{%
\centering
\setlength{\parindent}{0pt}%
% measure the text width
\sbox{\myboxbox}{\begin{varwidth}{\dimexpr\columnwidth-8mm}#1\end{varwidth}}%
\begin{tcolorbox}[
breakable,
width=\dimexpr\wd\myboxbox+8mm,
top=3mm,
bottom=4mm,
]
#1
\end{tcolorbox}%
}{}
\begin{document}
\lipsum[1]\\
\begin{mybox}
\begin{singlespace}
\lipsum[1]
\end{singlespace}
\end{mybox}
\begin{mybox}
\begin{singlespace}
Just a few words here. Just a few words here.
\end{singlespace}
\end{mybox}
\end{document}