重新定义 \label 不默认为

重新定义 \label 不默认为

根据这个问题,默认情况下,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}

结果:

在此处输入图片描述

相关内容