在分割矩形的一部分内引入(子)节点(使用 tikz-pgf,用于显示内存数据结构)

在分割矩形的一部分内引入(子)节点(使用 tikz-pgf,用于显示内存数据结构)

我正在尝试将一个节点(或者说一个链)放在分割矩形形状的节点部分之一内。到目前为止,我还没能让它工作。本质上,我试图在内存中表示一个简单的数据结构。似乎没有现成的库支持这些,所以大多数时候,只要有意义,我都会使用分割矩形形状。

\begin{tikzpicture}
    \node (mysplitrectangle) [rectangle split, rectangle split parts=5,
        draw, text width=3.75cm,
        rounded corners]
        { %
            \textbf{Nice split rectangle}
            \nodepart{two}
            \texttt{XYZ}
            \nodepart{three}
            XXX
            \nodepart{four}
            XXX
            \nodepart{five}
            \begin{tikzpicture}
            \node (pewp) [draw] {foo};
            \end{tikzpicture}
        };
\end{tikzpicture}

答案1

我不太确定您想要使用哪种图表或链,但一个可能的选择是使用一个盒子来存储链,然后在多部分矩形内使用这个盒子:

\documentclass{article}
\usepackage{pdfpages}
\usepackage{tikz}
\usetikzlibrary{shapes.multipart,chains}

\begin{document}

\newbox\boxa
\savebox\boxa{%
\begin{tikzpicture}[start chain=1 going right,
start chain=2 going below,
node distance=5mm,
every node/.style={draw,fill=blue!30}]
\node [on chain=1] {A};
\node [on chain=1] {B};
\node [on chain=1] {C};
\node [on chain=2] at (0.5,-.5) {0};
\node [on chain=2] {1};
\node [on chain=2] {2};
\node [on chain=1] {D};
\node [on chain=1] {E};
\node [on chain=1] {F};
\node [on chain=1] {G};
\end{tikzpicture}%
}

\begin{tikzpicture}
    \node (mysplitrectangle) [rectangle split, rectangle split parts=5,
        draw,rectangle split part align=left,
        rounded corners]
        { %
            \textbf{Nice split rectangle}
            \nodepart{two}
            \texttt{XYZ}
            \nodepart{three}
            XXX
            \nodepart{four}
            XXX
            \nodepart{five}
            \usebox\boxa
        };
\node[xshift=5pt,anchor=west] at (mysplitrectangle.text east) {label1};
\node[xshift=5pt,anchor=west] at (mysplitrectangle.two east) {label2};
\node[xshift=5pt,anchor=west] at (mysplitrectangle.three east) {label3};
\node[xshift=5pt,anchor=west] at (mysplitrectangle.four east) {label4};
\node[xshift=5pt,anchor=west] at (mysplitrectangle.five east) {label5};
\end{tikzpicture}

\end{document}

要添加标签,您可以使用多部分矩形的锚点(请参阅 pgf 手册第 453 页)。注释中提到的另一个问题(内容溢出到右侧)是由您用 声明的固定宽度引起的;可以通过增加 的值或不指定固定值(如我在修改的示例中所做的那样)text width=3,75来解决。text width

在此处输入图片描述

相关内容