修复 beamer 中 \only-slides 之间的 tikzpicture 节点位置

修复 beamer 中 \only-slides 之间的 tikzpicture 节点位置

我想在投影仪幻灯片上显示图表。但是,使用

\begin{frame}

\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2cm,semithick]

% Nodes
\node[draw,circle,fill=cyan!10] (v1) at (0, 0) {$-5$};
\node[draw,circle,fill=cyan!10] (t) at (2, 0) {$-1$};


% Edges
\only<1>{ \path (t) edge  node {$1$} (v1);}
\only<2>{ \path (t) edge  node {$1 / 2$} (v1);}


% Legend
\node[draw, rectangle, below] at (-1.5, -1) {
    \begin{tabular}{@{}rcl@{}}
        \only<1->{Some text & : & A \\}      
        \only<2->{More text & : & B \\
        Even more & : & C}    
    \end{tabular}
};
\end{tikzpicture}

\end{frame}

导致节点在由此生成的两个幻灯片之间向东北方向稍微移动。我更希望节点位置在两个幻灯片之间固定,而图例略有变化。remember picture向 tikzpicture 添加参数没有帮助。

答案1

\only我不会使用 ,而是使用\visiblevisible on=(后者来自overlay-beamer-styles库)。这样,内容仍然出现在其他覆盖层上,只是不可见,从而避免跳转。

\documentclass{beamer}

\usepackage{tikz}
\usetikzlibrary{overlay-beamer-styles}
\usetikzlibrary{arrows}

\begin{document}
    
\begin{frame}

\begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=2cm,semithick]

% Nodes
\node[draw,circle,fill=cyan!10] (v1) at (0, 0) {$-5$};
\node[draw,circle,fill=cyan!10] (t) at (2, 0) {$-1$};


% Edges
\path[visible on=<1>] (t) edge  node {$1$} (v1);
\path[visible on=<2>] (t) edge  node {$1 / 2$} (v1);


% Legend
\node[draw, rectangle, below] at (-1.5, -1) {
    \begin{tabular}{@{}rcl@{}}
        \visible<1->{Some text & : & A \\}      
        \visible<2->{More text & : & B \\
        Even more & : & C}    
    \end{tabular}
};
\end{tikzpicture}

\end{frame}

    
\end{document}

在此处输入图片描述

相关内容