如何使用变量文本调整节点的宽度

如何使用变量文本调整节点的宽度

我想为我的定义或属性创建一个环境,如下所示:

在此处输入图片描述

\noindent
\begin{tikzpicture}
\matrix [anchor=west,inner xsep=0pt] at (0,0)
    {
    \node
        [text width=4cm,inner xsep=0ex,inner ysep=1ex,text=Maroon,fill=Tan] (titre)
        {\quad {Définition 1} : a long title }; \\
    \node
        [anchor=north west,fill=white!40!Tan,draw=none,text justified,inner xsep=1em, inner ysep=1em,
        text width=\columnwidth-2em-1pt,text=Maroon] (texte)
        {some text} ;\\
    };
    \draw [line width=1pt, color=Maroon,rounded corners=5pt](titre.south west)--(titre.north west)--(titre.north east)--(titre.south east);
    \draw [line width=1pt, color=Maroon,rounded corners=0pt](titre.south east)--(texte.north east)--(texte.south east)--
    (texte.south east)--(texte.south west)--(titre.south west);
\end{tikzpicture}

我想将第一个节点的宽度调整为标题的宽度,因为长标题会发生类似的事情:

在此处输入图片描述

我尝试了\widthof命令、\def命令、widthtikz 中的选项……无论如何,都没有用。我的环境是这样的:

\newcounter{definition}
\NewEnviron{definition}[1]{
\stepcounter{definition}
\noindent
\begin{tikzpicture}[x=1.0cm,y=1.0cm, scale=1, every node/.style={scale=1}]
\matrix [anchor=west,inner xsep=0pt] at (0,0)
    {
    \node
        [text width={width("\quad \textbf{Définition} \thedefinition #1")},inner xsep=0ex,inner ysep=1ex,text=Maroon,fill=Tan] (titre)
        {\quad \textbf{Définition} \thedefinition\ #1}; \\
    \node
        [anchor=north west,fill=white!40!Tan,draw=none,text justified,inner xsep=1em, inner ysep=1em,
        text width=\columnwidth-2em-1pt,text=Maroon] (texte)
        {\BODY};
    };
    \draw [line width=1pt, color=Maroon,rounded corners=5pt](titre.south west)--(titre.north west)--(titre.north east)--(titre.south east);
    \draw [line width=1pt, color=Maroon,rounded corners=0pt](titre.south east)--(texte.north east)--(texte.south east)--
    (texte.south east)--(texte.south west)--(titre.south west);
\end{tikzpicture}
}

多谢。

答案1

不过,看起来 OPtcolorbox对这种格式的版本不感兴趣,也许其他人想要它。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{lmodern}
\usepackage[dvipsnames]{xcolor}
\usepackage[most]{tcolorbox}

\tcbset{
    defstyle/.style={
        enhanced, 
        colback=Tan!40, 
        colbacktitle=Tan, 
        colframe=Maroon, 
        colupper=Maroon, 
        coltitle=Maroon,
        sharp corners, 
        attach boxed title to top left={yshift=-.5mm}, 
        boxed title style={
            skin=enhancedfirst jigsaw,
            boxrule=.5mm,
            bottom=-.5mm}, 
        }
    }

\newtcbtheorem{Definition}{Définition}{defstyle}{def}

\begin{document}

\begin{Definition}{My title}{}
Some text
\end{Definition}

\begin{Definition}{This is a longer title}{}
Some text
\end{Definition}
\end{document}

在此处输入图片描述

相关内容