LaTeX 警告:标签‘pgfidxy’已多次定义

LaTeX 警告:标签‘pgfidxy’已多次定义

LaTeX Warning: Label ``pgfid142' multiply defined.我的日志文件中收到警告。

更新:感谢大家的评论。我说 grep 无法在日志文件以外的任何地方找到这些标签,这并不完全正确,它们也可以在 aux 文件中找到,例如

\pgfsyspdfmark {pgfid3}{2432904}{13289255}
\pgfsyspdfmark {pgfid3}{2432904}{13289255}

第二次更新:这真是令人伤心:\dSady不想被记住。;-) 更严重的是,我最初的怀疑完全是错误的,对此我很抱歉,但我的猜测\tikzstyle{every picture}+=[remember picture]现在,和(否则真的很酷的)包装之间存在干扰tikzsymbols

\documentclass{beamer}
\usepackage{tikz}
\usepackage{tikzsymbols}
\tikzset{every picture/.append style={remember picture}}
\begin{document}
\begin{frame}[t]
\frametitle{\dots}
\begin{overlayarea}{\textwidth}{7cm}
\begin{itemize}
\item[\bf\Large{\dSadey}] \dots 
\pause
\item[\bf\Large{\dSadey}] \dots 
\end{itemize}
\end{overlayarea}
\end{frame}
\end{document}

知道如何关闭这个警告吗?

更新:一些“无害”的图片确实不是即使赋予两个节点相同的名称,也会导致此问题。

\documentclass{beamer}
\usepackage{tikz}
\tikzset{every picture/.append style={remember picture}}
\begin{document}
\begin{frame}[t]
\frametitle{\dots}
\begin{overlayarea}{\textwidth}{7cm}
\tikz{\draw[->](0,0)--(1,0);\node(a)at (0,0){};}
\pause
\tikz{\draw[->](0,0)--(2,0);\node(a)at (0,0){};}
\end{overlayarea}
\end{frame}
\end{document}

答案1

我不能 100% 确定。但很可能来自的每个符号tikzsymbols本身就是一个tikzpicture。我们都知道排版tikzpicture非常慢。因此,该包可能会通过在第一次使用时缓存每个符号来加速此过程hbox。(这与处理程序背后的想法相同.pic。)

因此,当你第二次(第三次,依此类推)使用这个符号时,你实际上是在告诉编译器粘贴hbox到处都是这个。如果碰巧hbox包含一些应该是唯一的内容,例如命令\pdfsavepos,编译器会感到困惑,因为它被告知要记住同一 ID 下两个对象的位置。

在你的情况下,every picture/.append style={remember picture}告诉编译器记住所有后续图片的位置。之后你\dSadey第一次调用。因此符号被排版并缓存。一个ID;一个符号;没有错。到你第二次调用时\dSadey,编译器粘贴包含hbox相同的 ID,因此它会抱怨。

你可能已经注意到了,number 的抱怨正好是负一\dSadey。如果你尝试使用\dSadeyonce before every picture/.append style={remember picture},编译器就不会再抱怨了,因为缓存中hbox不包含 ID。

解决这个问题的更好方法是

\documentclass{beamer}
\usepackage{tikz}
\usepackage{tikzsymbols}
\begin{document}

\tikzset{every picture/.append style={remember picture}}
\tikzset{/__tikzsymbols/.append style={remember picture=false}}

\begin{frame}
    \dSadey\dSadey\dSadey\dSadey\dSadey\dSadey\dSadey\dSadey\dSadey\dSadey
\end{frame}
\end{document}

您可能已经猜到了:/__tikzsymbols是将应用于所有符号的样式。关闭后将不再包含 ID。因此编译器不会再发出抱怨remember picturehbox

相关内容