如何在自动机中定位路径的标签?

如何在自动机中定位路径的标签?

这是我的 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}

我得到这个:

在此处输入图片描述

我的疑问是:

  1. 目前,所有标签都位于任何箭头的正中央。如何更改其位置?
  2. \\在标签描述中给出了说明。但它仍然没有显示在新行中。例如, 。我在之后(B) edge [loop above] node {$0$ $ \rightarrow\\$ [$x$ = $x.0$] } (B)给出了说明(即 )。但所有内容仍然显示在同一行中。如何在那里给出换行符?\\\rightarrow$ \rightarrow\\$

谢谢

答案1

  1. 要更改标签的位置,请使用pos=0.25指定沿路径的位置。

  2. 要使用\\,您需要指定文本的对齐方式,因此类似于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}

相关内容