移动叠加的 tikzpictures 时避免重新定位小页面

移动叠加的 tikzpictures 时避免重新定位小页面

我对 Beamer 还不熟悉,一直被这个问题困扰:两个 tikzpicture 位于两个 minipage 上方。我希望 tikz1 显示在框架的第 2 张幻灯片上,tikz2 显示在下一张幻灯片 (3) 上。然而,尽管有覆盖参数,它们似乎还是占用了空间。我试过\only\visible,但它们似乎也无法正常工作。当我移动它们时,底层 minipage 会以某种方式移动,并且不会停留在同一个位置(这正是我想要的)

使用\onslide,移动其中一个 tikzpictures 会导致所有幻灯片上的底层元素都以相同的方式移动。

只有\only当前幻灯片的底层元素会被弄乱,其他元素不会被移动。

\visible看起来就像这样\onslide。但是以上方法都没有将小页面留在我希望它们所在的位置。

\documentclass[xcolor=dvipsnames]{beamer} 
\usecolortheme[named=Goldenrod]{structure} 
\usetheme[height=7mm]{Rochester} 

\usepackage{tikz}
\usetikzlibrary{shapes}

\begin{document}
\begin{frame}
\frametitle{A title}

\begin{minipage}[t]{0.5\linewidth}
\begin{exampleblock}{}
\begin{enumerate}
\setbeamercovered{transparent}
  \item \uncover<1,3>{This cake is amazing and I am looking forward to eating it!}
  \item \uncover<1,2,3>{A friend prepared this cake yesterday.}
  \end{enumerate}
\end{exampleblock}
\end{minipage}
\hspace{1cm}
\begin{minipage}[t]{0.3\linewidth}
\begin{exampleblock}{}
\begin{enumerate}
  \item \uncover<3>{n.a.}
  \item \uncover<2,3>{cake}
  \end{enumerate}
\end{exampleblock}
\end{minipage}


\onslide<2>{
\vspace*{-6.5cm}
\hspace*{7cm}
\begin{tikzpicture}[overlay][remember picture]
    \node[align=center, ellipse callout, draw, callout relative pointer={(155:1cm)}, fill=yellow!30] (hallo) {some text};
        \end{tikzpicture}}

\onslide<3>{
\vspace*{-2cm}
\hspace*{7cm}
\begin{tikzpicture}[overlay][remember picture]
    \node[align=center, ellipse callout, draw, callout relative pointer={(155:1cm)}, fill=yellow!30] (hallo) {some text};
        \end{tikzpicture}}

\end{frame}
\end{document}

答案1

我认为我会使用columns这个,因为他们overlay知道。此外,您可以使用久经考验的tikzmark想法(现在以包的形式提供)并且在这个网站上用到了很多例子中:)

动画片

我必须\usetikzlibrary{calc}稍微移动一下节点——您可以根据需要进行调整。

% arara: pdflatex
% !arara: indent: {overwrite: yes}
\documentclass[xcolor=dvipsnames]{beamer} 
\usecolortheme[named=Goldenrod]{structure} 
\usetheme[height=7mm]{Rochester} 

\usepackage{tikz}
% tikzmark command, for shading over items
\newcommand{\tikzmark}[1]{\tikz[overlay,remember picture] \node (#1) {};}
\usetikzlibrary{shapes}
\usetikzlibrary{calc}

\begin{document}
\begin{frame}
\frametitle{A title}

\begin{columns}
    \begin{column}[t]{0.5\linewidth}
        \begin{exampleblock}{}
            \begin{enumerate}
                \setbeamercovered{transparent}
                \item \uncover<1,3>{This cake is amazing and I am looking forward to eating it!}
                \item \uncover<1,2,3>{A friend prepared this cake yesterday.}
            \end{enumerate}
        \end{exampleblock}
    \end{column}
    \hspace{1cm}
    \begin{column}[t]{0.3\linewidth}
        \begin{exampleblock}{}
            \begin{enumerate}
                \item \tikzmark{firstmark}\uncover<3>{n.a.} 
                \item \tikzmark{secondmark}\uncover<2,3>{cake}
            \end{enumerate}
        \end{exampleblock}
    \end{column}
\end{columns}


\onslide<2>{
    \tikz[overlay,remember picture]\node[align=center, ellipse callout, draw, callout relative pointer={(155:1cm)}, fill=yellow!30] (hallo) at ($(firstmark)+(2,-1)$) {first bubble}; }

\onslide<3>{
    \tikz[overlay,remember picture]\node[align=center, ellipse callout, draw, callout relative pointer={(155:1cm)}, fill=yellow!30] (hallo) at ($(secondmark)+(2,-1)$) {hello world}; }



\end{frame}
\end{document}

答案2

没有必要 (至少在此示例代码中) 使用。您可以简单地使用具有覆盖感知功能remember picture, overlay的事实:\node

\documentclass[xcolor=dvipsnames]{beamer} 
\usecolortheme[named=Goldenrod]{structure} 
\usetheme[height=7mm]{Rochester} 

\usepackage{tikz}
\usetikzlibrary{shapes}

\begin{document}

\begin{frame}
\frametitle{A title}

\begin{tikzpicture}[overlay,every node/.style={align=center, ellipse callout, draw, callout relative pointer={(155:1cm)}, fill=yellow!30}]
    \node<2> at (.5\textwidth,0) (hallo) {some text};
    \node<3> at (.5\textwidth,0) (hallo) {some other text};
\end{tikzpicture}

\begin{minipage}[t]{0.5\linewidth}
\begin{exampleblock}{}
\begin{enumerate}
  \setbeamercovered{transparent}
  \item \uncover<1,3>{This cake is amazing and I am looking forward to eating it!}
  \item \uncover<1,2,3>{A friend prepared this cake yesterday.}
  \end{enumerate}
\end{exampleblock}
\end{minipage}\hspace{1cm}
\begin{minipage}[t]{0.3\linewidth}
\begin{exampleblock}{}
\begin{enumerate}
  \item \uncover<3>{n.a.}
  \item \uncover<2,3>{cake}
  \end{enumerate}
\end{exampleblock}
\end{minipage}
\end{frame}

\end{document}

在此处输入图片描述

相关内容