为什么在 \graph 中添加 \node 会导致无限循环?

为什么在 \graph 中添加 \node 会导致无限循环?

我尝试将多部分节点插入到图中,但陷入了无限循环,失败了。我知道这种情况会发生,因为 TeX 是一种图灵完备语言。但我想知道为什么每次我将一个节点放入一个节点\node中时都会发生这种情况\graph

以下是最小失败的示例:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{graphs}
\begin{document}
\begin{tikzpicture}
  \graph {
    \node
    (n)
    { Foo 
      %should be a multipart node, but fails just as a plain node
    };
  }
\end{tikzpicture}
\end{document}

据我所知,\graph 只是一些更基本的 tikz 元素的快捷方式。但是为什么添加节点会有问题?这里的根本问题是什么?

我正在运行 lualatex 0.95.0,但 pdflatex 和 xelatex 也出现了循环。

答案1

您正在执行

\tikz@signal@path

其定义为

\def\tikz@signal@path{\tikz@signal@path}

这会形成一个紧密的循环,并且由于它是尾递归,它不占用堆栈或内存,因此会永远循环。

相关内容