如何使 tikz 的间谍节点大小为零

如何使 tikz 的间谍节点大小为零

在以下 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;}

加上周围的一些文字,它看起来是这样的:

在此处输入图片描述

相关内容