Petri-Net是用于描述事件和条件关系的模型,一个Petri-Net由位置、迁移、 关系组成。在tikz中绘制Petri-Net,要用到“petri”库,所以请在LaTeX导言中加入
\usetikzlibrary{petri}
在tikz中一个位置就是一个节点,只是要在节点的选项中加入风格
place还可以在图形选项或范围选项中加入
every place比如
\begin{tikzpicture}
[every place/.style={draw=blue,fill=blue!20,thick,minimum size=9mm}]
\node[place,tokens=7,label=above:$p_1$] (p1) {};
\node[place,structured tokens={3,2,9},
label=below:$p_2\ge1$,right=of p1] (p2) {};
\end{tikzpicture}
迁移也是节点,只是要在节点的选项中加入风格
transition还可以在图形选项或范围选项中加入
every transition比如
\begin{tikzpicture}迁移的前置和后置集合由风格
\node[place,tokens=2,label=above:$p_1$] (p1) {};
\node[place,label=above:$p_2\ge1$,right=of p1] (p2) {};
\node[transition,below right=of p1,label=below:$t_1$] {}
edge[pre] (p1)
edge[post] node[auto] {2} (p2);
\end{tikzpicture}
pre设置。
post
pre and post
令牌仍然是节点,所以要在节点的选项中加入风格
token还可以在图形选项或范围选项中加入
every token比如
\begin{tikzpicture}
\node[place,label=above:$p_1$] (p1) {};
\node[token] at (p1) {};
\node[place,label=above:$p_2$,right=of p1] (p2) {};
\node[token] at (p2) {$y$};
\end{tikzpicture}
放置令牌有一个简单的方法,是使用风格
children are tokens比如
\begin{tikzpicture}令牌间距由选项
\node[place,label=above:$p_1$] {}
[children are tokens]
child {node [token] {1}}
child {node [token] {2}}
child {node [token] {3}};
\end{tikzpicture}
token distance=距离设置。实际上你还可以简单地指定令牌的数量
tokens=数量比如
\tikz \node[place,tokens=3] {};
你可以用选项
colored tokens={颜色表达式列表}为每一个令牌指定颜色。比如
\tikz \node[place,colored tokens={black,black,red,blue}] {};
指定令牌文本可以用选项
structured tokens={文本列表}比如
\tikz \node[place,structured tokens={$x$,$y$,$z$}] {};