我对 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}