\begin{tikzpicture}[shorten >=1pt,node distance=2cm,on grid,auto]
\node[state,initial] (q_0,q_2) {$q_0,q_2$};
\node[state] (q_1) [above right=of q_0,q_2] {$q_1$};
\node[state] (q_3) [right=of q_1] {$q_3$};
\node[state,accepting] (q_4) [below right=of q_0,q_2] {$q_4$};
\path[->] (q_0,q_2) edge node {a} (q_1)
(q_0) edge node {b} (q_2)
(q_1) edge [loop above] node {a} (q_1)
(q_1) edge node {b} (q_3)
(q_3) edge [bend right=40] node {a} (q_1)
(q_3) edge node {b} (q_4)
(q_4) edge node {b} (q_2)
(q_4) edge node {a} (q_1);
\end{tikzpicture}\\
答案1
引用手册:
您的节点名称不应包含任何标点符号,如点、逗号或冒号,因为这些符号用于检测引用节点时所指的坐标类型。
引文取自name
第 17.2.1 节中对密钥的描述节点命令的语法,第 215 页底部,第 216 页顶部。(在 2015 年 8 月 29 日的 TikZ 3.0.1a 手册中。)
因此,您不能使用q_0,q_2
作为节点名称,但q_0q_2
可以正常工作。您还需要指定名为q_0
和 的节点q_2
。我在下面使用这两个节点名称注释了这些行。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,automata}
\begin{document}
\begin{tikzpicture}[shorten >=1pt,node distance=2cm,on grid,auto]
\node[state,initial] (q_0q_2) {$q_0,q_2$};
\node[state] (q_1) [above right=of q_0q_2] {$q_1$};
\node[state] (q_3) [right=of q_1] {$q_3$};
\node[state,accepting] (q_4) [below right=of q_0q_2] {$q_4$};
\path[->] (q_0q_2) edge node {a} (q_1)
% (q_0) edge node {b} (q_2)
(q_1) edge [loop above] node {a} (q_1)
(q_1) edge node {b} (q_3)
(q_3) edge [bend right=40] node[swap] {a} (q_1)
(q_3) edge node {b} (q_4)
% (q_4) edge node {b} (q_2)
(q_4) edge node {a} (q_1);
\end{tikzpicture}
\end{document}