![如何在自动机中定位路径的标签?](https://linux22.com/image/250520/%E5%A6%82%E4%BD%95%E5%9C%A8%E8%87%AA%E5%8A%A8%E6%9C%BA%E4%B8%AD%E5%AE%9A%E4%BD%8D%E8%B7%AF%E5%BE%84%E7%9A%84%E6%A0%87%E7%AD%BE%EF%BC%9F.png)
这是我的 tikz 代码:
\documentclass[a4paper,10pt]{article}
\usepackage{verbatim}
\usepackage{pgf}
\usepackage{tikz}
\usetikzlibrary{arrows,automata}
\usepackage{graphicx}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{amsmath}
\begin{document}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=7 cm,
semithick, scale = 0.6, transform shape]
\node[initial,state] (A) {$s_0$};
\node[state] (B) [above right of=A] {$s_1$};
\node[state] (C) [below right of=A] {$s_2$};
\node[state] (D) [below right of=B] {$s_3$};
\node[state] (E) [above right of=D] {$s_4$};
\node[state] (F) [below right of=D] {$s_5$};
\path (A) edge [left] node {$0$ $ \rightarrow $ [$x$ = $x.0.0$] } (B)
edge [left] node {$1$ $ \rightarrow $ [$x$ = $x.0.1$] } (C)
(B) edge [loop above] node {$0$ $ \rightarrow\\ $ [$x$ = $x.0$] } (B)
edge [bend right,left] node {$1$ $ \rightarrow $ [$x$ = $x.1$] } (C)
edge [] node {$\$$ $ \rightarrow $ [$x$ = $x.0.\$$] } (D);
\end{tikzpicture}
\end{document}
我得到这个:
我的疑问是:
- 目前,所有标签都位于任何箭头的正中央。如何更改其位置?
- 我
\\
在标签描述中给出了说明。但它仍然没有显示在新行中。例如, 。我在之后(B) edge [loop above] node {$0$ $ \rightarrow\\$ [$x$ = $x.0$] } (B)
给出了说明(即 )。但所有内容仍然显示在同一行中。如何在那里给出换行符?\\
\rightarrow
$ \rightarrow\\$
谢谢
答案1
要更改标签的位置,请使用
pos=0.25
指定沿路径的位置。要使用
\\
,您需要指定文本的对齐方式,因此类似于align=center
(或者您可以指定text width
)。
您还应该重新考虑如何使用$
进入和退出数学模式。因此,$\$$ $ \rightarrow $ [$x$ = $x.0.\$$]
应该真正指定如下内容:
$\$ \rightarrow [x = x.0.\$]$
如果你想使用\\
,那么它应该是:
$\$ \rightarrow$ \\ $[x = x.0.\$]$
您还可以使用sloped
让文本沿着线条移动。以下颜色用于更轻松地查看以下代码与图像的关系:
代码:
\documentclass[a4paper,10pt]{article}
\usepackage{verbatim}
\usepackage{pgf}
\usepackage{tikz}
\usetikzlibrary{arrows,automata}
\usepackage{graphicx}
\usepackage{amssymb}
\usepackage{amsfonts}
\usepackage{amsmath}
\begin{document}
\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=7 cm,
semithick, scale = 0.4, transform shape]
\node[initial,state] (A) {$s_0$};
\node[state] (B) [above right of=A] {$s_1$};
\node[state] (C) [below right of=A] {$s_2$};
\node[state] (D) [below right of=B] {$s_3$};
\node[state] (E) [above right of=D] {$s_4$};
\node[state] (F) [below right of=D] {$s_5$};
\path (A)
edge [left] node [blue, pos=0.5, sloped, above] {$0 \rightarrow [x = x.0.0]$} (B)
edge [left] node [cyan, pos=0.8]{$1 \rightarrow [x = x.0.1]$} (C)(B)
edge [loop above] node [align=center] {$0 \rightarrow$ \\ $[x = x.0]$ } (B)
edge [bend right,left] node {$1 \rightarrow [x = x.1]$ } (C)
edge [] node [red, pos=0.2] {$\$ \rightarrow [x = x.0.\$]$ } (D);
\end{tikzpicture}
\end{document}