![为什么 [圆角矩形] 会导致随机“除以零” PGF 数学错误?](https://linux22.com/image/418657/%E4%B8%BA%E4%BB%80%E4%B9%88%20%5B%E5%9C%86%E8%A7%92%E7%9F%A9%E5%BD%A2%5D%20%E4%BC%9A%E5%AF%BC%E8%87%B4%E9%9A%8F%E6%9C%BA%E2%80%9C%E9%99%A4%E4%BB%A5%E9%9B%B6%E2%80%9D%20PGF%20%E6%95%B0%E5%AD%A6%E9%94%99%E8%AF%AF%EF%BC%9F.png)
当我在等式中插入图形时,遇到了一个奇怪的错误,我将其简化为以下最小(非)工作示例tikzmark
:tikz
以下文件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}