Tikzpicture匹配框宽度和列宽度

Tikzpicture匹配框宽度和列宽度

我找不到方法来匹配 tikzpicture 的框宽度和列宽度。

以下是代码:

\tikzstyle{mybox} = [draw=primary_shade3, fill=white, thick,
rectangle, rounded corners, inner ysep=10pt]
\tikzstyle{fancytitle} =[fill=white, text=primary_shade3]

\noindent \begin{tikzpicture}
\node [mybox] (box){%
\begin{minipage}{\linewidth}
\begin{itemize}
        \item[$\bullet$] De plus en plus de patients et de moins en moins de personnel
        \item[$\bullet$] Perte d'information lors du suivi à partir d'observations visuelles
        \item[$\bullet$] Contraintes de coût, de portabilité et d'utilisabilité des nouvelles \\
                         plate-formes
    \end{itemize}
\end{minipage} 
};
\node[fancytitle, right=10pt] at (box.north west) {Problématique};
\end{tikzpicture}

结果如下: 在此处输入图片描述

如您所见,框的右侧超出了列宽……您知道如何解决这个问题吗?

最好的

答案1

您不应该在 tikz 节点中使用 minipages。问题是添加了 inner 和 outer ,sep这导致框超出范围。编辑:我添加了一个输出,稍微显示了所做的事情。(当然,必须减去这些值两次,它们在左右两边相加。是的,tcolorbox正如 Ignasi 在他的回答为您做所有这些,尽管如此,我认为问题是为什么会发生这种情况。;-)

\documentclass{article}
\usepackage{tikz,lipsum}
\begin{document}
\definecolor{primary_shade3}{rgb}{0.66,0.0,0.66} 
\tikzset{mybox/.style={draw=primary_shade3, fill=white, thick,
rectangle, rounded corners, inner ysep=10pt},
fancytitle/.style={fill=white, text=primary_shade3}}
\lipsum[1]

\noindent \begin{tikzpicture}
\pgfmathsetmacro{\mywidth}{\linewidth-2*\pgfkeysvalueof{/pgf/inner xsep}-2*\pgfkeysvalueof{/pgf/outer xsep}
-\pgflinewidth}
\typeout{the\space line\space width\space is\space\the\linewidth,\space and\space
the\space text\space width\space is\space\mywidth}
\node [mybox,text width=\linewidth-2*\pgfkeysvalueof{/pgf/inner xsep}-2*\pgfkeysvalueof{/pgf/outer xsep}
-\pgflinewidth] (box){%
\begin{itemize}
        \item[$\bullet$] De plus en plus de patients et de moins en moins de personnel
        \item[$\bullet$] Perte d'information lors du suivi à partir d'observations visuelles
        \item[$\bullet$] Contraintes de coût, de portabilité et d'utilisabilité des nouvelles \\
                         plate-formes
    \end{itemize}
};
\node[fancytitle, right=10pt] at (box.north west) {Problématique};
\end{tikzpicture}

\lipsum[2]
\end{document}

在此处输入图片描述

答案2

更简单的解决方案是使用tcolorbox。它的默认大小始终调整为\linewidth

\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}
\usepackage[french]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}
\usetikzlibrary{babel}
\definecolor{primary_shade3}{rgb}{0.66,0.0,0.66} 

\newtcolorbox{mybox}[2][]{
    enhanced,
    colback=white,
    colframe=primary_shade3,
    coltitle=primary_shade3,
    fonttitle=\bfseries,
    attach boxed title to top left={xshift=3mm,yshift*=-\tcboxedtitleheight/2},
    boxed title style={
        colframe=white,
        colback=white,
        size=fbox
    },
    title=#2,
    #1
}

\begin{document}

\lipsum[1]

\begin{mybox}{Problématique}
\begin{itemize}
    \item[$\bullet$] De plus en plus de patients et de moins en moins de personnel
   \item[$\bullet$] Perte d'information lors du suivi à partir d'observations visuelles
   \item[$\bullet$] Contraintes de coût, de portabilité et d'utilisabilité des nouvelles plate-formes
    \end{itemize}
\end{mybox}

\lipsum[2]
\end{document}

在此处输入图片描述

相关内容