以下 Beamer 文档很荒谬,但却演示了我在实际代码中遇到的一个问题:
\documentclass{beamer}
\begin{document}
\begin{frame}
\only<2>{
\begin{enumerate}
\item<2>\label{label}
\end{enumerate}
\ref{label}
}
\end{frame}
\end{document}
如果将覆盖规范<2>
更改为<1>
,则此(荒谬的)文档的行为将符合预期。但是,使用覆盖规范<2>
,标签{label}
永远不会写入.aux
文件。
如何标记和引用未出现在框架第一个覆盖中的材料?
答案1
您可以通过确保内容确实存在于第一个覆盖层上但不可见来避免该问题,例如使用\visible<2>{}
而不是\only<2>{}
。
如果这对您的实际文档不起作用(例如由于间距等),您还可以使用\label
覆盖规范来确保它在正确的覆盖上发布:
\documentclass{beamer}
\begin{document}
\begin{frame}[label=test]
\only<2>{
\begin{enumerate}
\item<2>\label<2>{label}
\end{enumerate}
ref \ref{label}
}
\end{frame}
\end{document}