\documentclass{beamer}
\usepackage[utf8]{inputenc}
\usepackage{pgf,tikz}
\usepackage{tikz}
\begin{document}
\frame{
\usetikzlibrary{decorations.pathmorphing}
\tikzstyle{kringel}=[decoration={random steps}]
\begin{tikzpicture}
\draw[black] (3,2.5) decorate [kringel] {-- (2,5)};
\end{tikzpicture}
%\uncover<2->{test}
}
\end{document}
编译没有任何问题。如果我替换
%\uncover<2->{test}
和
\uncover<2->{test}
那么它就无法编译并出现以下错误:
./test.tex:18: Package tikz Error: You need to load a decoration library.
如果我移动这两条线
\usetikzlibrary{decorations.pathmorphing}
\tikzstyle{kringel}=[decoration={random steps}]
放入文档头中,即在
\begin{document}
然后它就可以编译并运行了。有人能向我解释一下这里发生了什么吗?
答案1
最终的结论是,您可能不应该尝试\usetikzlibrary
在团体中使用。
稍微削减一下,错误已经发生在
\documentclass{article}
\usepackage{pgf,tikz}
\begin{document}
\begingroup
\usetikzlibrary{decorations.pathmorphing}
\endgroup
\tikzstyle{kringel}=[decoration={random steps}]
\begin{tikzpicture}
\draw[black] (3,2.5) decorate [kringel] {-- (2,5)};
\end{tikzpicture}
\end{document}
只要您在一个框架中拥有多个覆盖层(例如通过使用)<2->
,整个框架就会被解析多次,丢弃不适用于当前覆盖层的内容。每次迭代都是以组为单位进行的,以限制副作用的渗出。现在看来(我还没有深入研究过这个问题),它\usetikzlibrary
足够聪明,不会两次加载任何内容。因此,您的库是为 overlay 加载的<1>
,而不是为 overlay 加载的<2>
,但它的定义不存在,因为它们不是全局的。