如何删除 TikZ 中自动机状态中的圆圈?

如何删除 TikZ 中自动机状态中的圆圈?

我尝试绘制 LTS 而不是自动机,但我不知道 TikZ 是否有针对 LTS 的特定选项,因此我尝试绘制自动机,但在 LTS 中,通常没有围绕状态的圆圈,所以现在我需要删除状态中的圆圈。我有以下代码段:

\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{automata,arrows,positioning}

\begin{document}
\begin{figure}
    \centering
    \begin{tikzpicture}[>=stealth',shorten >=1pt,auto,node distance=5 cm, scale = 1, transform shape]

    \node[initial,state,initial text=]  (1A)                    {$1A$};
    \node[state]                        (1B)    [below of=1A]   {$1B$};
    \node[state]                        (2A)    [right of=1A]   {$2A$};

    \path[->] (1A) edge [loop above]    node    {$a$}           (1A)
              (1A) edge [bend left=10]  node    {$b$}           (1B)
              (1A) edge [bend left=10]  node    {$c$}           (2A);

    \end{tikzpicture}
\end{figure}
\end{document}

如何在 TikZ 中绘制 LTS,或者只是从上面的自动机状态中删除圆圈?此外,是否可以更改边缘上文本的位置?例如,过渡值始终写在边缘的中间,是否可以以某种方式将其推向更接近一个状态或另一个状态(仅适用于某些边缘,而不是所有边缘)?

答案1

节点的样式 state由样式决定state without output,因此您可以添加draw=none该样式以删除所有state节点的节点边框,即state without output/.append style={draw=none}。要减小尺寸,您还必须设置minimum size,并调整inner sep,例如state without output/.append style={draw=none,inner sep=2pt,minimum size=0pt}。该inner sep值定义从节点内容到其边框的距离,即您所指的空白。

然而,重新定义样式实际上会省去一些工作state,即state/.style={circle,inner sep=2pt},您可以inner sep根据自己的喜好进行调整。

要沿路径移动节点,请使用pos=<fraction>作为节点的选项,其中<fraction>是 0 到 1 之间的数字。有关$a$$b$边标签,请参见下面的示例。

请注意,该right of=语法已被弃用,取而代之的right=ofpositioning库(您已加载的)定义的语法,请参阅PGF/TikZ 中“right of=”和“right=of”之间的区别

\documentclass[11pt]{article}
\usepackage{tikz}
\usetikzlibrary{automata,arrows.meta,positioning}

\begin{document}
\begin{figure}
    \centering
    \begin{tikzpicture}[
      >=Stealth,
      shorten >=1pt,
      auto,
      node distance=5 cm,
      scale = 1,
      transform shape,
      state/.style={circle,inner sep=2pt}
      ]

    \node[initial,state,initial text=]  (1A)                    {$1A$};
    \node[state]                        (1B)    [below=of 1A]   {$1B$};
    \node[state]                        (2A)    [right=of 1A]   {$2A$};

    \path[->] (1A) edge [loop above]    node    {$a$}           (1A)
              (1A) edge [bend left=10]  node[pos=0.2]    {$b$}           (1B)
              (1A) edge [bend left=10]  node[pos=0.75]    {$c$}           (2A);

    \end{tikzpicture}
\end{figure}
\end{document}

在此处输入图片描述

相关内容