如何根据 tcolorbox 所含文本的长度来限制其宽度

如何根据 tcolorbox 所含文本的长度来限制其宽度

我已经创建了一个(如3.40 版手册第 155 页tcolorbox所述)tcolorbox

LaTeX 代码:

\tcbset{
        enhanced,
        colback=red!5!white,
        boxrule=0.1pt,
        colframe=red!75!black,
        fonttitle=\bfseries
       }
       My own shadow
       \begin{tcolorbox}[title=My own shadow,
       lifted shadow={1mm}{-2mm}{3mm}{0.1mm}%
       {black!50!white}]
       This is a tcolorbox.
       \end{tcolorbox}

电流输出: 在此处输入图片描述

预期输出(通过明确设置产生:width=\linewidth/3):

在此处输入图片描述

我的问题是:

此框仅包含少量文本,但占据整个文本宽度

我在这里提到了一个相关问题: 如何根据里面的文字设置 tcbox 的适合高度和宽度?

minimal但诸如:这样的选项tight会扭曲盒子。

是否有任何选项可以使此框的宽度根据其中包含的文本的宽度自动增加?

注意:对于普通文本,添加 \hbox 可以解决此问题,但是对于项目符号列表,会导致编译错误。

例子:

\tcbset
    {
        enhanced,
        left=8mm,
        right=8mm,
        boxrule=0.4pt,
        colback=red!5!white,
        boxrule=0.1pt,
        colframe=red!75!black,fonttitle=\bfseries,
    }
    \begin{tcolorbox}[
                        title=\begin{center}Sample Title\end{center},
                        hbox,
                        lifted shadow={1mm}{-2mm}{3mm}{0.1mm}{black!50!white}
                     ]
    \begin{itemize}
    \item First Line
    \item Second Line
    \end{itemize}
    \end{tcolorbox}

编译错误:LaTeX 错误:出现问题 - 可能缺少 \item

仅供参考 - 更新后的答案显示了如何解决此问题(使用 varwidth)

答案1

您可以使用hbox

\documentclass{article}

\usepackage[most]{tcolorbox}

\begin{document}


\tcbset{
        enhanced,
        colback=red!5!white,
        boxrule=0.1pt,
        colframe=red!75!black,
        fonttitle=\bfseries
       }
       My own shadow
       \begin{tcolorbox}[title=My own shadow,hbox,    %%<<---- here
       lifted shadow={1mm}{-2mm}{3mm}{0.1mm}%
       {black!50!white}]
       This is a tcolor box
       \end{tcolorbox}


\end{document}

在此处输入图片描述

对于修订版问题,您可能需要varwidth包来插入itemize。此外,要使标题居中,请使用 选项center title而不是\begin{center}

\documentclass{article}

\usepackage[most]{tcolorbox}
\usepackage{varwidth}   %% provides varwidth environment

\begin{document}


\tcbset{
        enhanced,
        colback=red!5!white,
        boxrule=0.1pt,
        colframe=red!75!black,
        fonttitle=\bfseries
       }
       My own shadow
       \begin{tcolorbox}[title=My own shadow,center title,hbox,    %%<<---- here
       lifted shadow={1mm}{-2mm}{3mm}{0.1mm}%
       {black!50!white}]
       \begin{varwidth}{\textwidth}
       This is a tcolor box.
       \begin{itemize}
         \item First Line
         \item Second Line
       \end{itemize}
       \end{varwidth}
       \end{tcolorbox}


\end{document}

在此处输入图片描述

答案2

也许有natural width选项,我没有找到。

一个小的解决方法:将文本包装到一个框中并获取它的宽度:

\documentclass{article}

\usepackage[most]{tcolorbox}

\begin{document}

\newsavebox{\mybox}
\savebox{\mybox}{This is a tcolorbox}


\tcbset{
        enhanced,
        colback=red!5!white,
        boxrule=0.1pt,
        colframe=red!75!black,
        fonttitle=\bfseries
       }
       My own shadow
       \begin{tcolorbox}[title=My own shadow,
       lifted shadow={1mm}{-2mm}{3mm}{0.1mm}%
       {black!50!white},text width=\wd\mybox]
       \usebox{\mybox}  % Release it ;-)
       \end{tcolorbox}


\end{document}

由于文本的宽度相关,因此应该使用(新)text width选项,而不是完整width选项。

在此处输入图片描述

相关内容