我还没有找到任何使用 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}