对于我的讲座,我经常使用 tikz 以图形方式说明概念。
图表中通常包含大量信息,tikz 包含不同框架上的不同插图。然而,在讲义模式下,所有内容都折叠成一个,难以辨认。
我怎样才能保持“典型”幻灯片的讲义模式,但暂时切换到针对特定幻灯片的每个覆盖层都有单独的页面?
这是 MWE。问题是 tikzpicture 的两个部分都打印在了一起。给出的解决方案这里建议用 <X|handout:X> 替换每个。这在特定情况下可行,但对于具有许多单独叠加层的幻灯片来说,这很乏味(而且我还使用透明模式,所以我真的必须重复两次)
\documentclass[handout]{beamer}
\usepackage{tikz}
\begin{document}
\begin{frame}
\begin{itemize}[<+->]
\item Show all of this
\item at once
\item in the handout.
\end{itemize}
\end{frame}
\begin{frame}
% \begin{animatedhandout} % see below
\centering
\begin{tikzpicture}
\only<1>{\draw (-1,-1) rectangle (1,1) (1,0) node[anchor=west] {Info 1};}
\only<2>{\draw (0,0) circle (1) (1,0) node[anchor=west] {Info 2};}
\end{tikzpicture}
% \end{animatedhandout}
\end{frame}
\begin{frame}
\begin{itemize}[<+->]
\item Again, this should
\item all be shown at once
\item in the handout.
\end{itemize}
\end{frame}
\end{document}
我正在考虑定义一个命令
\newcommand<>{\onlyev}[1]{
\only<#2 | handout:#2 | tran:#2 >{#1}
}
在每个模式下都只打印在指定的幻灯片上(“仅在任何地方”)。问题是参数 #2 已经包含尖括号,因此 \onlyev<7>{hello} 将扩展为
```\only<<7> | handout:<7> | tran:<7> >{hello}```` 并没有达到预期的效果。如果有人能帮我从我的论点中去掉 < 和 > 符号,我可以使用这种方法。
或者,我尝试定义一个环境animatedhandout
,可以在框架内调用该环境,根据以下内容暂时切换到 beamer 模式这个答案。
\makeatletter
\newenvironment{animatedhandout}{
\begingroup
\gdef\beamer@currentmode{beamer}
}{%
\endgroup
}
\makeatother
不幸的是,这似乎并没有在幻灯片之后切换回讲义模式(由于某种原因,它还会弄乱居中)。
答案1
正如我的评论所示beamer \againframe 显示全帧,无任何/有所有叠加层,如果您只想在组内进行更改而不是全局更改,请使用\def
而不是:\gdef
\documentclass[handout]{beamer}
\usepackage{tikz}
\makeatletter
\newenvironment{animatedhandout}{%
\begingroup
\def\beamer@currentmode{beamer}%
}{%
\endgroup
}
\makeatother
\begin{document}
\begin{frame}
\begin{itemize}[<+->]
\item Show all of this
\item at once
\item in the handout.
\end{itemize}
\end{frame}
\begin{frame}
\begin{animatedhandout} % see below
\centering
\begin{tikzpicture}
\only<1>{\draw (-1,-1) rectangle (1,1) (1,0) node[anchor=west] {Info 1};}
\only<2>{\draw (0,0) circle (1) (1,0) node[anchor=west] {Info 2};}
\end{tikzpicture}\par
\end{animatedhandout}
\end{frame}
\begin{frame}
\begin{itemize}[<+->]
\item Again, this should
\item all be shown at once
\item in the handout.
\end{itemize}
\end{frame}
\end{document}