使用 TikZ 的状态图

使用 TikZ 的状态图

我还没有找到任何使用 TikZ 绘制 Harel 状态图符号的示例。有限状态自动机的示例有很多,但由于两个原因,它们不能应用于状态图:没有层次结构和没有正交性。有人能告诉我绘制像这样简单的东西的最佳方法是什么吗:

(A)-->(B(D)| C(E)),

其中有两个顶层状态:A 和 B|C(具有两个正交区域 B 和 C 的状态,由状态中间的虚线分隔);B 具有嵌套状态 D,而 C 具有嵌套状态 E;应该可以进行层间连接,即 A 和 C 之间的有向连接。

已编辑:这是图片

在此处输入图片描述

答案1

代码

\documentclass[parskip]{scrartcl}
\usepackage[margin=15mm]{geometry}
\usepackage{tikz}
\usetikzlibrary{fit,arrows,calc}

\begin{document}

\begin{tikzpicture}
[   round/.style={rounded corners=1.5mm,minimum width=1cm,inner sep=2mm,above right,draw,align=left,text width=7mm}
]
    \node[round] (D) at (0,0) {D};
    \node[round] (E) at (2,0) {E};
    \node[above right,inner sep=2mm] (B) at (0,1) {B};
    \node[above right,inner sep=2mm] (C) at (2,1) {C};
    \node[round,fit=(B)(C)(D)(E)] (BC) {};
        \draw[densely dashed] (BC.north) -- (BC.south);
    \node[round] (A) at (2.5,2.5) {A};
    \draw[-latex] (A) to[out=180, in=90] (D);
    \draw[-latex] ($(BC.north east)+(-0.3,-0.3)$) coordinate (temp) to[out=180,in=90] (E);
        \fill (temp) circle (0.05);
\end{tikzpicture}

\end{document}

输出

在此处输入图片描述

相关内容