我读到过:TikZ 命令也接受 Beamer 叠加规范,例如 \draw<2-> (A) to (B);但我在 TikZ/PGF 3.0 手册中找不到任何相关参考。当我在超过 1000 页的手册中搜索叠加层时,我得到了一些其他不相关的主题。Google 和 Bing 也没有帮助。请问有人能指出在哪里可以找到有关 TikZ 命令中的覆盖规范的更多详细信息?如果手册中没有,那么也许有其他参考资料?
答案1
PGF/TikZ
不幸的是,无论是在还是在手册中都没有提及这个事实beamer
(至少我找不到任何参考)。
所有神奇的事情发生的地方是文件tikz.code.tex
(位于.../tex/generic/pgf/frontendlayer/tikz/
),其中包含前端层的定义;在那里你会找到(第 1833-1836 行):
\def\tikz@path@overlay#1{%
\let\tikz@signal@path=\tikz@signal@path% for detection at begin of matrix cell
\pgfutil@ifnextchar<{\tikz@path@overlayed{#1}}{\path #1}}
\def\tikz@path@overlayed#1<#2>{\path<#2> #1}
另外,下面还有一些行(1938-1950),用于填充/绘图:
\def\tikz@swap@args[#1]<#2>{\tikz@command@path<#2>[#1]}
\def\tikz@doopt{%
\let\tikz@next=\tikz@eargnormalsemicolon%
\ifnum\the\catcode`\;=\active\relax%
\let\tikz@next=\tikz@eargactivesemicolon%
\fi%
\tikz@next}
\long\def\tikz@eargnormalsemicolon<#1>#2;{\alt<#1>{\tikz@@command@path#2;}{\tikz@path@do@at@end}}
{
\catcode`\;=\active
\long\global\def\tikz@eargactivesemicolon<#1>#2;{\alt<#1>{\tikz@@command@path#2;}{\tikz@path@do@at@end}}
}
虽然代码没有记录,但是您可以看到(特别是第一个代码片段的最后一行),那里\path
是覆盖感知的(在某种意义上beamer
),所以基本上任何路径(,,,\node
等等)都是覆盖感知的。\draw
\fill
作为肖恩·奥尔雷德提及his comment
,还值得一提的是aobs-tikz
包定义了用于在 中叠加图片元素的辅助 TikZ 样式beamer
。
一个简单的例子:
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{overlay-beamer-styles}
\begin{document}
\begin{frame}
\tikz\draw[thick, alt=<2-4>{blue}{red}] (0,0) -- (1,1);
\end{frame}
\end{document}
关于这个库的另一个有趣的使用例子可以在my answer
到如何使用 TikZ 节点属性制作 Beamer 覆盖?。