与投影仪中的框架进行可靠的交叉引用

与投影仪中的框架进行可靠的交叉引用

我大量使用 的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模式来写,但这样会导致关注点分离不良。考虑到多个模式(beamerhandout),引用管理将成为一场噩梦。决定显示动画的哪些步骤应该与如何引用动画整体无关。

我认为这是 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}

相关内容