我在 Beamer 中有以下 tikz 图片
\usetikzlibrary{fit,calc,positioning,matrix,decorations.pathmorphing}
\begin{tikzpicture}[scale=0.8,system/.style={draw,rectangle,rounded corners=3,minimum width=2cm,text width=1.8cm,text centered}]
\node [system] (fe) {Feature Extraction};
\node [system] (am) [right=of fe] {Acoustic Model};
\draw[->] (fe) |- (am);
\draw[<-,decorate,decoration={snake,pre length=6mm,segment length=2mm,amplitude=3mm}] (fe.west) -- ++(-2cm,0);
\node<2-> [above=of fe.north] {Fast Fourier Tranform};
\end{tikzpicture}
如你所见,我在第二张幻灯片中添加了一个节点。但是,添加后整个图片会跳动。
我怎样才能防止我的图片跳跃?
答案1
问题是由于图片的边界框会根据该节点是否存在而变化。有几种方法可以解决这个问题:
\useasboundingbox
使用或语法明确告诉 tikz 边界框是什么,从而确保两张幻灯片上的边界框相同\path[use as bounding box]
。优点:您可以得到您想要的结果。缺点:您必须确切地知道要请求什么。让额外的内容始终存在,但仅在第二张幻灯片上可见。有几种方法可以做到这一点;也许最简单的方法是将整个节点包装在 中,
\visible<2->{...}
而不是使用\node<2->
。(如果 tikz 命令采用行动以及裸覆盖规范,但似乎并非如此。)另一种方法是将节点文本放在覆盖命令中,{\visible<2->{Fast Fourier Transform}}
。还有一种方法是将空节点(或坐标)放置在所需位置,然后将带有文本的节点放在下一张幻灯片上:\coordinate [above=of fe.north] (pt); \node<2-> at (pt) {Fast Fourier Transform};
尽管这仍可能导致跳跃,但您可能希望将文本节点定位在坐标下方。