我有一系列 tikzpicture,它们都很相似,但大小略有不同(它们有突出的东西。但我希望它们都与 tikzpicture 的同一点对齐。
我原本以为为它们全部设置一条基线就能对齐该坐标点,但它们仍然会“摆动”。
这是 MWE。我希望 (0,0) 处的开口圆节点在页面上的每个叠加层中都位于同一位置。但它似乎将每个 tikzpicture 的边界框置于中心;由于大绿色节点,边界框的大小会发生变化。我以为这个baseline
选项可以实现这一点,但事实并非如此。
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\newcommand\grf[1]{
\begin{tikzpicture}%[baseline={(0,0)}]
\node[circle,draw] (0) at (0,0) {} ; % <-- this circle node should not move
\node[circle,fill] (1) at (+1,+1) {} ;
\node[circle,fill] (2) at (+1,-1) {} ;
\node[circle,fill] (3) at (-1,-1) {} ;
\node[circle,fill] (4) at (-1,+1) {} ;
\node[circle,fill,green,inner sep=1em] at (#1) {} ;
\end{tikzpicture}
}
\begin{frame}
\only<1>{\grf{1}}%
\only<2>{\grf{2}}%
\only<3>{\grf{3}}%
\only<4>{\grf{4}}%
\end{frame}
\end{document}
答案1
设置基线通常不能避免跳跃,因为边界框仍然会发生变化。一个非常快速的解决方法是通过添加键从边界框中排除额外的节点overlay
。
\documentclass{beamer}
\usepackage{tikz}
\begin{document}
\newcommand\grf[1]{
\begin{tikzpicture}%[baseline={(0,0)}]
\node[circle,draw] (0) at (0,0) {} ; % <-- this circle node should not move
\node[circle,fill] (1) at (+1,+1) {} ;
\node[circle,fill] (2) at (+1,-1) {} ;
\node[circle,fill] (3) at (-1,-1) {} ;
\node[circle,fill] (4) at (-1,+1) {} ;
\node[circle,fill,green,inner sep=1em,overlay] at (#1) {} ;
\end{tikzpicture}
}
\begin{frame}
\only<1>{\grf{1}}%
\only<2>{\grf{2}}%
\only<3>{\grf{3}}%
\only<4>{\grf{4}}%
\end{frame}
\end{document}
一般而言,Ti钾Z 库overlay-beamer-styles
有很多避免跳转的选项。在这里你可以使用
\documentclass{beamer}
\usepackage{tikz}
\usetikzlibrary{overlay-beamer-styles}
\begin{document}
\begin{frame}
\begin{tikzpicture}%[baseline={(0,0)}]
\node[circle,draw] (0) at (0,0) {} ; % <-- this circle node should not move
\node[circle,fill] (1) at (+1,+1) {} ;
\node[circle,fill] (2) at (+1,-1) {} ;
\node[circle,fill] (3) at (-1,-1) {} ;
\node[circle,fill] (4) at (-1,+1) {} ;
\path foreach \X in {1,...,4}
{node[circle,fill,green,inner sep=1em,visible on=<\X>] at (\X) {} };
\end{tikzpicture}
\end{frame}
\end{document}