使用 TikZ/PGF 绘制部分 NFA

使用 TikZ/PGF 绘制部分 NFA

我最近开始使用 LaTeX,并且正在尝试为文章绘制一些部分 NFA;我对 TikZ 几乎没有经验,所以请原谅我问一些可能微不足道的问题。

我正在尝试绘制如下图像:

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

(这些来自这里

到目前为止我可以定位节点:

\documentclass{article}
\usepackage{tikz}
\begin{document}
  \pagestyle{empty}
  Partial NFA example:

  \begin{tikzpicture}[shorten >=1pt,->]
    \tikzstyle{state}=[circle,draw=black,thick]
    \tikzstyle{block}=[rectangle,draw=black,thick,minimum width=25pt]

    \node[state] (s) at (1,1) { };
    \node[block] (e) at (5,2) {\texttt{e}};
    \node[] (x) at (4,0) { };

    \draw (0,0) -- (s); % Start
    \draw (s) edge[bend left=30] (e);
    \draw (e) edge[bend left=30] (s);
    \draw (s) edge[bend right=30] (x);
  \end{tikzpicture}
\end{document}

但我无法接近我想要的效果。我不知道如何正确地制作箭头。

有人能帮我一下吗?

答案1

这还不是一个完整的答案,但这应该会引导您走向正确的方向...有关代码如何工作的详细信息,请查看代码中的注释,其中仅包含对您提供的代码的微小更改。

\documentclass[border=2mm]{standalone}
\usepackage{tikz}
    \usetikzlibrary{
        arrows.meta,
    }
\begin{document}
\begin{tikzpicture}

    \tikzstyle{state}=[circle,draw=black,thick]
    \tikzstyle{block}=[rectangle,draw=black,thick,minimum width=25pt]

    \node [state] (s) at (1,1) { };
    \node [block] (e) at (5,2) {\texttt{e}};
    \node []      (x) at (4,0) { };

    \begin{scope}[
        ->,
        shorten >=1pt,
        % draw corners rounded
        rounded corners=2mm,
    ]
        % connect the nodes vertical and horizontal lines (`|-')
        % (if you need to draw first horizontal and then vertical lines
        %  use `-|' instead)
        \draw (0,0) |- (s); % Start
        \draw (s) |- (e);
        \draw (e) |-  (s);
        \draw (s) |- (x);

        \draw [draw=white,{To[black]}-,shorten <=1pt] (e.east) -- +(5pt,0);
    \end{scope}
\end{tikzpicture}
\end{document}

该图显示了上述代码的结果

相关内容