根据这个问题,默认情况下,beamer 幻灯片上的标签总是在第一张幻灯片上定义<1>
。事实上\show\label
显示
> \label=macro:
->\@ifnextchar <{\beamer@label }{\beamer@label <1>}
解决方案是使用\label<2>
例如在第二张幻灯片上定义标签。我不想更改所有标签。相反,有没有办法重新定义标签,以便它不是默认为幻灯片<1>
,像其他命令一样使用当前幻灯片?
答案1
您可以重新定义\label
以更改为<1>
(<+->
当前和后续)。但是,这仅适用于常规标签,而不适用于显示标签(例如在方程式中),因为beamer
会在数学环境开始时重新定义这些标签。对于这种情况,您可以使用自定义宏,例如\mathlabel
。这不如直接使用 那么方便\label
,但比弄清楚应该输入哪个数字要容易。
MWE,改编自参考问题:
\documentclass{beamer}
\begin{document}
\makeatletter
\def\label{\@ifnextchar <{\beamer@label }{\beamer@label <+->}}
\def\mathlabel{\@ifnextchar <{\beamer@label@in@display }{\beamer@label@in@display <+->}}
\makeatother
\begin{frame}{Title}
\begin{itemize}
\only<1>{
\item Item 1.
}
\only<2>{
\item Item 2, with equation
\begin{equation}
\mathlabel{eq:formula}
xyz
\end{equation}
\begin{figure}
\caption{abc}
\label{fig:empty}
\end{figure}
\item Item 3, with references \eqref{eq:formula} and Figure \ref{fig:empty}.
}
\end{itemize}
\end{frame}
\end{document}
结果: