从分割节点部分绘制路径

从分割节点部分绘制路径

我想要绘制如下内容:

+-------+
| Alpha |
+-------+      +---------+
| betas |----->| Beta    |
+-------+      +---------+      +--------+
| foo   |      | gammas  |----->| Gamma  |
+-------+      +---------+      +--------+
| bar   |      | foo     |      | deltas |
+-------+      +---------+      +--------+
               | bar     |      | foo    |
               +---------+      +--------+
                                | bar    |
                                +--------+

事实上,它一直持续到Epsilon

到目前为止我有以下信息:

\documentclass[tikz,border=1cm]{standalone}
\usetikzlibrary{positioning,shapes.multipart}

\begin{document}

\begin{tikzpicture}[%
    mod/.style={%
        draw,%
        rectangle split,rectangle split parts=4,%
        minimum height=3cm,minimum width=2cm}%
]
    \node[mod] (a) {%
        Alpha
        \nodepart{two} betas
        \nodepart{three} foo
        \nodepart{four} bar
    };
    \node[mod,right=of a] (b) {%
        Beta
        \nodepart{two} gammas
        \nodepart{three} foo
        \nodepart{four} bar
    };
    \node[mod,right=of b] (c) {%
        Gamma
        \nodepart{two} deltas
        \nodepart{three} foo
        \nodepart{four} bar
    };
\end{tikzpicture}

\end{document}

输出结果如下:

MWE 的输出

betas例如,我如何从分割节点部分绘制路径?我的意思是我如何指定该坐标?

我想知道上述问题的答案也可以解决按照我上面展示的方式排列这些节点的问题。

最后一个问题:有没有一种简单的方法可以应用于\bfseries所有人第一的节点部分?那么对于AlphaBetaGamma

答案1

您可以使用锚点two easttext west来进行定位和箭头。

\documentclass[tikz,border=1cm]{standalone}
\usetikzlibrary{positioning,shapes.multipart}

\begin{document}

\begin{tikzpicture}[>=stealth,%
    mod/.style={%
        draw,%
        rectangle split,rectangle split parts=4,%
        minimum height=3cm,minimum width=2cm}%
]
    \node[mod] (a) {%
        Alpha
        \nodepart{two} betas
        \nodepart{three} foo
        \nodepart{four} bar
    };
    \node[mod,right=of a.two east,anchor=text west] (b) {%
        Beta
        \nodepart{two} gammas
        \nodepart{three} foo
        \nodepart{four} bar
    };
    \node[mod,right=of b.two east,anchor=text west] (c) {%
        Gamma
        \nodepart{two}  deltas
        \nodepart{three} foo
        \nodepart{four} bar
    };
    \draw[->] (a.two east) -- (b.text west);
    \draw[->] (b.two east) -- (c.text west);
\end{tikzpicture}

\end{document}

在此处输入图片描述

至于只将第一个文本加粗,恐怕没有超级简单的解决方案。您可以将其全部替换\nodepart\nodepart[font=\normalfont]并添加font=\bfseries到节点的定义中。

\documentclass[tikz,border=1cm]{standalone}
\usetikzlibrary{positioning,shapes.multipart}

\begin{document}

\begin{tikzpicture}[>=stealth,%
    mod/.style={%
        draw,%
        font=\bfseries,%
        rectangle split,rectangle split parts=4,%
        minimum height=3cm,minimum width=2cm}%
]
    \node[mod] (a) {%
        Alpha
        \nodepart[font=\normalfont]{two} betas
        \nodepart[font=\normalfont]{three} foo
        \nodepart[font=\normalfont]{four} bar
    };
    \node[mod,right=of a.two east,anchor=one west] (b) {%
        Beta
        \nodepart[font=\normalfont]{two} gammas
        \nodepart[font=\normalfont]{three} foo
        \nodepart[font=\normalfont]{four} bar
    };
    \node[mod,right=of b.two east,anchor=one west] (c) {%
        Gamma
        \nodepart[font=\normalfont]{two}  deltas
        \nodepart[font=\normalfont]{three} foo
        \nodepart[font=\normalfont]{four} bar
    };
    \draw[->] (a.two east) -- (b.text west);
    \draw[->] (b.two east) -- (c.text west);
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容