绘制这些带有箭头的框的简洁方法是什么?

绘制这些带有箭头的框的简洁方法是什么?

我想重新创建这种形式的图表(来自 Iverson 的《编程语言》一书)。方框内的数学运算很简单,但我希望能够以编程方式创建这些方框和带标签的箭头。有没有简单的方法可以做到这一点?

在此处输入图片描述

我更喜欢使用 plaintex,但如果这可以使这项工作更容易,我愿意深入研究更复杂的 LaTeX 世界。

答案1

只是为了好玩:

\documentclass{article}

\usepackage{amsmath}
\usepackage{enumitem}
\usepackage{tikz}
\usetikzlibrary{tikzmark}

\begin{document}

\begin{enumerate}[labelsep=10mm,label=\theenumi]
\item \tikzmark{a}$z \leftarrow c$
\item $p \leftarrow \in(v(z))$
\item \tikzmark{b}$v(f) : 2$
\item $i \leftarrow 1$
\item $x \leftarrow \in(0)$
\item \tikzmark{c}$j \leftarrow (\theta/f)_i$
\item $x \leftarrow x \oplus (((p \overset{\scriptscriptstyle +}{\times} a^{j-1}) \downarrow a^{p_j})/z)$ 
\item $i \leftarrow i + 1$
\item \tikzmark{d}$i : v(f)$
\item $z \leftarrow (\circ) \oplus x$
\item $p \leftarrow (\theta/f) \int p$
\item $p \leftarrow (1 + (p \overset{\scriptscriptstyle +}{\times} a^2 )) \oplus \overline{a}^2 / p$
\item $f \leftarrow (\theta/f) \int f$
\item \tikzmark{e}$f \leftarrow (+/a^2/f) \oplus \overline{a}^2 / f$
\end{enumerate}

\begin{tikzpicture}[remember picture,overlay]\footnotesize
 \draw ([xshift=-2mm,yshift=4mm]pic cs:a) rectangle ([xshift=50mm,yshift=-3mm]pic cs:e);
 \draw[->] ([xshift=-8mm,yshift=.5ex]pic cs:a) -- ([xshift=-2mm,yshift=.5ex]pic cs:a);
 \draw[->] ([xshift=-2mm,yshift=.5ex]pic cs:d) -- node [above] {$\leq$} ([xshift=-6mm,yshift=.5ex]pic cs:d) -- ([xshift=-6mm,yshift=.5ex]pic cs:c) -- ([xshift=-2mm,yshift=.5ex]pic cs:c);
 \draw[->] ([xshift=50mm,yshift=.5ex]pic cs:b) -- node [above] {$=$} ([xshift=56mm,yshift=.5ex]pic cs:b);
 \draw[->] ([xshift=-2mm,yshift=.5ex]pic cs:e) -- ([xshift=-8mm,yshift=.5ex]pic cs:e) -- ([xshift=-8mm,yshift=.5ex]pic cs:b) -- ([xshift=-2mm,yshift=.5ex]pic cs:b);
 \end{tikzpicture}

\end{document}

得出:

在此处输入图片描述

相关内容