为什么 [圆角矩形] 会导致随机“除以零” PGF 数学错误?

为什么 [圆角矩形] 会导致随机“除以零” PGF 数学错误?

当我在等式中插入图形时,遇到了一个奇怪的错误,我将其简化为以下最小(非)工作示例tikzmarktikz


以下文件bug.tex

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shapes.misc}

\begin{document}

\tikz[remember picture]{\node (a) {a};}
\tikz[remember picture]{\node[rounded rectangle] (c) {c};}

\begin{tikzpicture}[remember picture, overlay]
  \draw (a) -- (c);
\end{tikzpicture}

\end{document}

编译时,触发以下错误:

! Package PGF Math Error: You asked me to calculate `1/0.0', but I cannot divid
e any number by zero.

See the PGF Math package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.14   \draw (a) -- (c)
                       ;

如果您执行以下任何一项操作,则不会出现此错误:

  • 消除[rounded rectangle]
  • 删除\draw命令
  • \draw (c) -- (a);代替(a) -- (c)
  • 随机改变节点的内容,例如:
    • (a)如果你将的内容更改为{b},它就会起作用
    • (c)如果你将的内容更改为{b},它就会起作用
    • 如果你改变两者的内容(a) (c){b},它不起作用。

另外两点说明:

  • [remember picture, overlay]似乎不是问题的根源:当我删除它时,错误仍然会出现。我将其保留在 MWE 中,因为当此错误不会中断编译链时,删除它会在以后导致其他问题。
  • 如果您更改我上面提到的元素之一以使其能够编译,然后撤消此更改并在不删除文件的情况下重新编译它.aux,则它可能会顺利编译。

这是一个错误还是我做错了什么?这种行为究竟是什么原因造成的?

答案1

在 tikz 节点内部,使用\subnode提供的tikzmark,而不是\tikzmarknode

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark, shapes.misc}

\begin{document}
\begin{tikzpicture}[remember picture]
  \node {\subnode{a}{a} \subnode[rounded rectangle]{c}{c}};
  \draw (a) -- (c);
\end{tikzpicture}
\end{document}

相关内容