我无法编译以下内容。我收到错误no shape named a21 is known
。我犯了什么错误?
\documentclass{article}
\usepackage{array}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
aaammmm\tikzmark{a21} kkkkkkkkkk PPPPPPPPPPPPPPP\tikzmark{a22}
\begin{tikzpicture}[remember picture,overlay]
\draw[->] (a21) to[bend right] (a22);
\end{tikzpicture}
\end{document}
答案1
引用 tikzmark 的正确语法是(pic cs: <tikzmark name>)
。该语法(<name>)
指的是节点在 tikzmark 的早期开发中,我将记住部分来自节点原始\tikzmark
命令的一部分,以便 tikzmark 引用的位置可以在文档中比标记本身更早使用。另一方面,节点必须在定义后使用(尽管 tikzmark 的更高版本引入了密钥,save node
以便在定义之前引用整个节点)。
因此,正如 Qrrbrbirlbel 在评论中所说,您的代码的正确版本是:
\documentclass{article}
\usepackage{array}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
aaammmm\tikzmark{a21} kkkkkkkkkk PPPPPPPPPPPPPPP\tikzmark{a22}
\begin{tikzpicture}[remember picture,overlay]
\draw[->] (pic cs: a21) to[bend right] (pic cs: a22);
\end{tikzpicture}
\end{document}
有关 tikzmark 开发的更多信息,请参阅软件包文档。该文档还链接了此网站上的许多重要问题(在指导 tikzmark 开发方面很重要)。还值得注意的是,由于 tikzmark 自推出以来行为发生了几次变化,因此使用它的语法也会不时发生变化,因此值得检查文档,特别是在查看此网站上可能基于旧版本软件包的旧问题/答案时。