在 beamer 中使用 zref

在 beamer 中使用 zref

我正在编写一个讲座幻灯片和脚本包,供我们部门的第三人使用。

我想以透明的方式将 zref 包的功能与 beamer 一起使用,即用户应该能够继续使用该\label命令。虽然在<article>模式下只需let\label=\zref@label获取\zref@newlabel而不是\newlabel在辅助文件中,但这在模式下不起作用<presentation>。重新定义\beamer@origlabel也不起作用。

请考虑以下示例:

% \documentclass{beamer}
\documentclass{article}
\usepackage{beamerarticle}
\usepackage[counter,user]{zref}
\makeatletter
\let\label=\zref@label
\makeatother

\newcounter{mycounter}
\begin{document}

\begin{frame}
  \frametitle{foo}
  \refstepcounter{mycounter}
  \label{mylabel}
  mycounter is \themycounter
\end{frame}

\end{document}

然后,可以在 aux 文件中找到:

\zref@newlabel{mylabel}{\default{1}\page{1}\counter{mycounter}}

如果我在第一行进行注释但注释掉以下两行,那么我只得到(ao):

\newlabel{mylabel}{{1}{1}{}{Doc-Start}{}}

在那里启用 zref 的最佳方法是什么?

答案1

一些counter\label- 相关的命令被软件包重新定义和/或它们的动作被转移到命令\@begindocumenthook\AtBeginDocument) - 这也必须这样做\let\label\zref@label,否则它的定义会被其他设置否决。

我还没有测试过这个其他\label命令是否会产生后果,而且我不知道它将如何配合cleveref

\documentclass{beamer}
%\documentclass{article}
%\usepackage{beamerarticle}
\usepackage[counter,user]{zref}
\makeatletter
\AtBeginDocument{%
\let\label=\zref@label
}
\makeatother

\newcounter{mycounter}
\begin{document}

\begin{frame}
  \frametitle{foo}
  \refstepcounter{mycounter}
  \label{mylabel}
  mycounter is \themycounter
\end{frame}

\end{document}

相关内容