我想使用\tikzmark
外部tikzpicture
来记住一些坐标,然后在内部使用它们tikzpicture
(这似乎是一件相当标准的事情)。我有这个绘制矩形的最小工作示例:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
Some random text outside\tikzmark{label}
\begin{tikzpicture}[remember picture, overlay]
\draw (0.1,0.1) rectangle (pic cs:label);
\end{tikzpicture}
\end{document}
课程链接如下:
https://www.acm.org/binaries/content/assets/publications/article-templates/sig-alternate-05-2015.cls
现在,当我切换到 SIG ACM 格式时会出现问题,例如这个:
\documentclass{sig-alternate-05-2015}
然后,发生此错误(但在第二次 Latex 传递期间):
! Missing number, treated as zero.
<to be read again>
\thepage
l.13 \draw (0.1,0.1) rectangle (pic cs:label)
;
?
现在,我已将问题追溯到该remember picture
部件 - 如果将其移除,错误就会消失。但是,与 tikzmark 功能一起使用似乎至关重要。
如有任何提示我将不胜感激。
答案1
问题是在语句中将\thepage
设置为,因此会直接写入文件,而不是用页码替换。我建议修补库,使其不使用。在 后添加以下几行。\relax
\write
aux
tikzmark
\thepage
\usetikzlibrary{tikzmark}
\usepackage{xpatch}
\expandafter\xpatchcmd
\csname pgfk@/tikz/every picture/.@cmd\endcsname
{\thepage}{\arabic{page}}{}{}