我大量使用 的beamer
叠加机制来制作动画。根据观众,尤其是版本handout
,我使用frame
-level 叠加规范来选择要实际显示的动画步骤(即帧的幻灯片):
\begin{frame}<handout:2,4>[label=otherframe]{Other Frame}
\begin{itemize}[<all:+->]
\item First Item
\item Second Item -- this step also to be shown in handout mode
\item Third Item
\item Forth Item -- this step also to be shown in handout mode
\end{itemize}
\end{frame}
这在使用 交叉引用此类框架时会导致问题\ref{otherframe}
。如果label=otherframe
传递了该选项,beamer 会为框架的每个幻灯片生成一个标签(otherframe<1>
、otherframe<2>
、...),另外还会将标签otherframe
作为 的别名otherframe<1>
。但是,根据frame
-level 覆盖规范,幻灯片 1 可能不是卡片组的一部分,因此无法解析引用。
当然,我也可以\ref{otherframe<2>}
改用handout
模式来写,但这样会导致关注点分离不良。考虑到多个模式(beamer
,handout
),引用管理将成为一场噩梦。决定显示动画的哪些步骤应该与如何引用动画整体无关。
我认为这是 beamer 中的一个 bug:恕我直言,otherframe
应该参考第一个实际可用框架滑动 – 但并非总是如此otherframe<1>
。
我正在寻找建议和解决方法。
完成 MWE:
% \documentclass[beamer]{beamer}
\documentclass[handout]{beamer}
\begin{document}
\begin{frame}<handout:2,4>[label=otherframe]{Other Frame}
\begin{itemize}[<all:+->]
\item First Item
\item Second Item -- this step also to be shown in handout mode
\item Third Item
\item Forth Item -- this step also to be shown in handout mode
\end{itemize}
\end{frame}
\begin{frame}{Frame, link to Other Frame}
We have seen this on \ref{otherframe}! % not resolved in handout mode
\end{frame}
\end{document}
答案1
免责声明:以下解决方法不是解决方案,并且有几个缺点
如果您绕过 beamer 自己的框架标签机制并\label{...}
在框架内使用,您将获得示例的有效链接。
警告:
您将无法使用类似
\againframe
这种方法的投影仪功能它会产生有关多个定义标签的警告,但因为您想使用第一个出现的标签,所以在您的特定情况下这应该没有问题。
% \documentclass[beamer]{beamer}
\documentclass[handout]{beamer}
\begin{document}
\begin{frame}<handout:2,4>{Other Frame}
\label{otherframe}
\begin{itemize}[<all:+->]
\item First Item
\item Second Item -- this step also to be shown in handout mode
\item Third Item
\item Forth Item -- this step also to be shown in handout mode
\end{itemize}
\end{frame}
\begin{frame}{Frame, link to Other Frame}
We have seen this on \ref{otherframe}! % not resolved in handout mode
\end{frame}
\end{document}