将碎片化的 tikz 图像保存在投影仪幻灯片上的同一位置

将碎片化的 tikz 图像保存在投影仪幻灯片上的同一位置

可能重复:
我怎样才能修复投影机中跳跃的 TikZ 图片?

我正在使用 beamer 制作一系列幻灯片,并使用 tike 制作大部分图形。在一张特定的幻灯片上,我需要显示节点,然后再显示一些节点,然后显示它们之间的边。代码如下所示:

\begin{tikzpicture}[>=latex,text height=1.5ex,text depth=0.25ex]
    \draw[help lines] (0,0) grid (10.5,7.5);
    \tikzstyle{every node}=[draw,minimum size = .4cm,circle,draw=none,fill=red!30!white]    
    \tikzstyle{every path}=[solid,thick]
    %% First species
    \draw (3.7,2.2) node (a) {};
    \draw (9.6,1.4) node (b) {};
    \draw (6.6,6.6) node (c) {};
    %% Second species
    \draw <2-> (0.4,4.0) node [fill=blue!30!white] (d) {};
    \draw <2-> (4.4,3.6) node [fill=blue!30!white] (e) {};
    \draw <2-> (8.0,3.4) node [fill=blue!30!white] (f) {};
    %% Third species
    \draw <3-> (1.3,5.2) node [fill=green!30!white] (g) {};
    \draw <3-> (4.5,6.4) node [fill=green!30!white] (h) {};
    \draw <3-> (3.8,0.45) node [fill=green!30!white] (i) {};
    %% Arrows
    \path <4> [<->] (g) edge [bend right] (d);
    \path <4> [<->] (g) edge [bend left] (e);
    \path <4> [<->] (h) edge [bend left] (c);
    \path <4> [<->] (e) edge [bend left] (a);
    \path <4> [<->] (i) edge [bend left] (a);
    \path <4> [<->] (i) edge [bend right] (f);
    \path <4> [<->] (b) edge [bend right] (f);
    \path <4> [<->] (e) edge [bend left] (f);
    \path <4> [<->] (e) edge [bend right] (h);
    \path <4> [<->] (f) edge [bend right] (c);
\end{tikzpicture}

我的问题是,当我删除帮助线时,图形在每次转换之间都会改变幻灯片上的位置,这确实不是我所期望的。我找到了一种快速而粗略的方法来解决draw=none帮助线的问题,但如果这里有人遇到同样的问题,我想知道一种解决方法。

答案1

TikZ 尝试找到覆盖图片的最小矩形。Beamer 依次在每张幻灯片上运行 TikZ 图片以产生叠加效果。因此,当第一张图片中看不到节点时,tikz 会将图片的边界框缩小到前 3 个节点。这就是为什么会有这样的跳跃。

正如您所发现的,最简单的解决方法是不绘制线条或添加固定的边界框

\path[use as bounding box] (0,0) rectangle(10.5,7.5);

一开始,这样 tikz 就不会改变边界框。或者使用给出的解决方案我怎样才能修复投影机中跳跃的 TikZ 图片?

相关内容