在以下 MWE 中:
\documentclass{beamer}
\setbeamertemplate{footline}[page number]
\usepackage{tikz}
\usetikzlibrary{spy,shadows,decorations.fractals}
\begin{document}
\begin{frame}
\begin{tikzpicture}
[spy scope={magnification=4, size=1cm},
every spy in node/.style={%
drop shadow,
fill=white,
draw,
}]
\draw [decoration=Koch curve type 2]
decorate{ decorate{ decorate{ (0,0) -- (2,0) }}};
\only<2>{\spy on (0,0) in node;}
\end{tikzpicture}
\end{frame}
\end{document}
第二帧tikz
的主图片由于节点大小非零而向右移动。\spy
但我希望主图片保持静态,即使\spy
节点在左边距部分消失。
我猜想可以通过将\spy
节点的大小设为空来避免这种情况。我该如何实现这样的结果?
答案1
将图片平放在至少与最宽图片一样宽的容器中,然后图片将保持在原位;如下所示:
\makebox[4cm][r]{%
\begin{tikzpicture}
...
\end{tikzpicture}%
}
如果您的图片在各个方向上都发生了大小变化,则更通用的解决方案是:在每一帧中绘制一个包含图片所有部分的边界框。在您的示例中,将以下行
\draw[use as bounding box] (-0.51,-0.7) rectangle (2,0.7);
放入你的 tikzpicture 中。一旦你对框的大小感到满意,就\draw
用替换\path
,然后就好了!
还有另一种解决方案,如果您确实希望间谍与周围的文本重叠:添加关键字overlay
,如下所示:
\only<2>{\spy[overlay] on (0,0) in node;}
\only<3>{\spy[overlay] on (2,0) in node;}
\only<4>{\spy[overlay] on (1,0.5) in node;}
\only<5>{\spy[overlay] on (1,-0.5) in node;}
加上周围的一些文字,它看起来是这样的: