使用 varwidth 环境更改 tcolorbox 的边距

使用 varwidth 环境更改 tcolorbox 的边距

在下面发布的代码中,我使用 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}

在此处输入图片描述

相关内容