如何按照以下样式绘制流程图?

如何按照以下样式绘制流程图?

Flowchart diagram for a sample Turing Machine

我想为图灵机创建一个流程图/链图,样式如上图所示。我对 LaTeX 还比较陌生,但我假设我必须使用 TikZ。

有人知道如何画出这样的东西吗?

答案1

正如我在评论中提到的,你可以使用 的功能amsmath单独完成大部分工作。特别是,我使用了\overset{a}{b}(位于a上方b)和\underset{a}{b},你大概能猜出它们的作用。

在注释中我也使用了\substack用于堆叠下标的,但在下面的代码中它被替换为array

为了制作上下左右箭头,我定义了一个新宏\ULDarrow,使用标准picture环境来创建箭头。这不是最好看的箭头,但我想保持基本面。

我还使用mathtools而不是amsmathmathtools加载并amsmath稍微扩展。我在这里使用的功能mathtools\mathrlap,这是一个宏,它将其参数置于数学模式中,放在零宽度框中,向右延伸。

enter image description here

\documentclass{article}
\usepackage{mathtools}
\newcommand\ULDarrow{% up-left-down arrow
\setlength{\unitlength}{1pt}
\begin{picture}(5,7.5)
\linethickness{0.4\unitlength}
\put(5,0){\line(0,1){7.7}}% draw a line 7.7 units up, the "extra" 0.2 (half the linewidth) is to get a better corner
\put(5,7.5){\line(-1,0){5.2}}% draw a line 5.2 units left
\put(0,7.5){\vector(0,-11){7.5}}% draw an arrow 7.5 units down
\end{picture}}


\begin{document} 
\[
 >
 \underset{%
  \begin{array}{@{}c@{}}% the @{} remove spacing around column
     \downarrow^{\#} \\
     \#
  \end{array}
  }{L}
  \overset{|}{\to}
  \overset{%
  \mathrlap{\overset{|}{\ULDarrow}}
  }{L}
  \overset{\#}{\to} \mid 
  \overset{%
  \mathrlap{\overset{|}{\ULDarrow}}
  }{R}
  \overset{\#}{\to}
  L\#
\]
\end{document}

相关内容