LaTeX でオートマトンを描画するためのコードがあります。
\begin{figure}[htpb]
\centering
\begin{tikzpicture}[->,>=stealth',shorten >=5pt,auto,node distance=2.8cm,semithick]
\node[initial,state] (q0) {$q_a$};
\node[state,accepting] (q1) [right of=q0] {$q_b$};
\path (q0) edge [loop above] node {a} (q0)
edge [bend left , below ] node {b} (q1)
(q1) edge [loop above] node {b} (q1)
edge [bend left , above] node {a} (q0);
\end{tikzpicture}
\end{figure}
すると、次のオートマトンが出来上がります:
中央のパスの b を端の上に移動し、a を下に移動するにはどうすればよいでしょうか?
答え1
ノードキーを使用しますanchor
。
\documentclass[tikz]{standalone}
\usetikzlibrary{automata,arrows}
\begin{document}
\begin{tikzpicture}[->,>=stealth',shorten >=5pt,auto,node distance=2.8cm,semithick]
\node[initial,state] (q0) {$q_a$};
\node[state,accepting] (q1) [right of=q0] {$q_b$};
\path (q0) edge [loop above] node {a} (q0)
edge [bend left , below ] node [anchor=south] {b} (q1)
(q1) edge [loop above] node {b} (q1)
edge [bend left , above] node [anchor=north] {a} (q0);
\end{tikzpicture}
\end{document}
答え2
少ないほど良い: 位置情報を削除しabove
、below
。
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows,automata}
\begin{document}
\begin{tikzpicture}%
[->,>=stealth',shorten >=5pt,auto,node distance=2.8cm,semithick]
\node[initial,state] (q0) {$q_a$};
\node[state,accepting] (q1) [right of=q0] {$q_b$};
\path (q0) edge [loop above] node {a} (q0)
edge [bend left] node {b} (q1)
(q1) edge [loop above] node {b} (q1)
edge [bend left] node {a} (q0);
\end{tikzpicture}
\end{document}
ラベルをエッジの反対側に移動する場合は、swap
ノードにキーワードを追加します。
(q0) edge [bend left] node[swap] {b} (q1)