Tikz:如何拆分节点并在其中定位文本

Tikz:如何拆分节点并在其中定位文本

我有一个很大的问题:

我需要一个如下所示的 TikZ 节点:

https://dl.dropbox.com/u/79761558/nodeproblem.png

但我不知道如何像那样分割节点。特别是“更多文本”是一个大问题。我尝试的所有方法都以错误告终。所以我又从头开始。有人能帮我吗?

我的最后一段代码确实看起来像那样,但没有起作用......

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{shapes}
\usetikzlibrary{arrows}
\usetikzlibrary{calc,positioning}

\begin{document}
\begin{tikzpicture}
  \node[name=data, rectangle split, rectangle split horizontal, rectangle split draw    splits=false, draw, rounded corners=5pt] {1 \nodepart{two} 2 \nodepart{three} 3    \nodepart{four} 4 \nodepart{five} 5 \nodepart{six} 6};
  \foreach \subnode in {1,...,5}% counter goes 1 to number_of_subnodes-1
  {\draw[dashed] ($(data.north east)!{\subnode*0.25}!(data.north west)$) -- ($(data.south east)!{\subnode*0.25}!(data.south west)$);}
\end{tikzpicture}
\end{document}

还有一个问题:为什么CMD没有居中???

\node[name=data, rectangle split, very thick,
    rectangle split horizontal, 
    rectangle split parts=6, 
    rectangle split draw splits=true, 
    draw, rounded corners=2pt,
    label={[fill=white,inner sep=0pt,font=\tiny]center:Daten/Parameter},
    align=center,
    text width=2.5em,
    inner sep=2pt,
    font=\tiny] at (mega88) 
    {CMD\nodepart{two} ~ 
        \nodepart{three} ~    
        \nodepart{four} ~
        \nodepart{five} ~ 
        \nodepart{six}CS};

答案1

默认情况下rectangle split有 4 个部分,因此如果您需要更多,则必须使用 明确修复它们rectangle split parts=number_you_want

第二个问题是more text。我在分割的节点上使用了另一个节点。 \node[fill=white,inner sep=1pt]绘制一个白色背景节点,比前一个节点小一点。结果是:

在此处输入图片描述

完整的代码如下:

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{shapes}
\usetikzlibrary{arrows}
\usetikzlibrary{calc,positioning}

\begin{document}
\begin{tikzpicture}
  \node[name=data, rectangle split, 
         rectangle split horizontal, 
         rectangle split parts=6, 
         rectangle split draw splits=true, 
         draw, rounded corners=5pt] (main) 
        {text \nodepart{two} 2 
              \nodepart{three} 3    
              \nodepart{four} 4 
              \nodepart{five} 5 
              \nodepart{six} text};

\node[fill=white,inner sep=1pt] at (main.center) {more text};

\end{tikzpicture}
\end{document}

您不需要在第 2 部分到第 5 部分中写任何内容,但我留在那里向您展示more text节点如何覆盖它们。

编辑:more text作为label

另一个选择是使用label选项而不是第二个节点。事实上,label它们就像节点,所以你可以修复它们的选项。在这种情况下,你必须修复它的宽度(通过minimum sizetext width)以确保覆盖空白部分。如果你想对已填充和空白部分使用不同的大小,请text width对已填充部分和rectangle split empty part width空白部分使用选项。空白部分未声明,textpart{two} ~不是空白部分,而是~内部有(不可破坏空间)的部分。如果text width比里面的文本更宽,它将向左对齐,因此添加align=center以将其放置在其空间的中心。

现在包含所有这些建议的代码

\begin{tikzpicture}
  \node[name=data, rectangle split, 
    rectangle split horizontal, 
    rectangle split parts=6, 
    rectangle split draw splits=true, 
    draw, rounded corners=5pt,
    text width=2cm,
    align=center,
    rectangle split empty part width=5mm,
    label={[fill=white,
            inner sep=1pt,
            text width=2.5cm,
            align=center]center:more text \dots},
    ] (main)    
    {CMD 
%   \nodepart{two} ~
%   \nodepart{three} ~     
%   \nodepart{four} ~
%   \nodepart{five} ~
    \nodepart{six} CS};
\end{tikzpicture}

结果

在此处输入图片描述

相关内容