Beamer 在某些 \only 内使用时忽略 \label

Beamer 在某些 \only 内使用时忽略 \label

由于空间原因,我想将itemize列表的内容分成单独的幻灯片,使用 我一直这样做,没有遇到太大问题\only。但是,以下最小文档抱怨标签eq:formula未定义:

\documentclass{beamer}
\begin{document}
\begin{frame}{Title}
 \begin{itemize}
 \only<1>{
  \item Item 1.
 }             % Comment 
 \only<2>{     % these lines
  \item Item 2, with equation
  \begin{equation}
   \label{eq:formula}
   xyz
  \end{equation}

  \item Item 3, with reference \eqref{eq:formula}.
 }
 \end{itemize}
\end{frame}
\end{document}

如您所见,它定义清晰。如果您注释掉标记的行(因此,将所有内容打印在一张幻灯片上),问题就会消失。我看到在 beamer 中\tracingmacros对 进行了严重的重新定义\label,因此,这似乎是检测标签打印在哪张幻灯片上的错误。

对吗?解决方案是什么?

答案1

beamer也是\label覆盖感知的。以下\show\label(外部环境frame),你会注意到

> \label=macro:
->\@ifnextchar <{\beamer@label }{\beamer@label <1>}

这意味着\label{<stuff>} 没有覆盖规范默认\label<1>{\stuff>}仅在幻灯片 1 上显示标签。这当然解释了为什么只有一张幻灯片才能使引用按预期工作。因此,使用\label<2>{eq:formula}标签在幻灯片 2 上处于活动状态。

以下是完整的 MWE:

在此处输入图片描述

\documentclass{beamer}% http://ctan.org/pkg/beamer
\begin{document}
\begin{frame}{Title}
 \begin{itemize}
 \only<1>{%
  \item Item 1.
 }
 \only<2>{%
  \item Item 2, with equation
  \begin{equation}
   \label<2>{eq:formula}
   xyz
  \end{equation}

  \item Item 3, with reference \eqref{eq:formula}.
 }
 \end{itemize}
\end{frame}
\end{document}

\label没错,如果能够自主感知滑动就好了……

相关内容