我试图理解 Beamer 中的一个问题,该问题大大降低了使用效率,\includeonlyframes
目的是缩短编译时间:每当幻灯片缺少标签时,它似乎都会进行排版,即使其覆盖规范处于<all:0>
活动\includeonlyframes
状态。相反,如果有标签,幻灯片就会以有效的方式被丢弃。
引用我的 MWEGithub 上 Beamer repo 中的相应问题:
\documentclass{beamer}
\begin{document}
\begin{frame}<all:0>[label=SkipMe]
1111111111111111111111111111111111111111111111111111111111111111
\end{frame}
\begin{frame}<all:0>
2222222222222222222222222222222222222222222222222222222222222222
\end{frame}
\end{document}
在排版第二张(未标记)幻灯片时,编译上述内容会产生一个overfull hbox
警告。第一张幻灯片根本没有排版。
通过查看,我可以(费力地)将差异追溯到未标记(慢)情况下与标记(快)情况下base/beamerbaseframe.sty
的使用。它们的实施策略似乎截然不同,我想知道是否可以采用更快的方法。\beamer@donoframe
\beamer@doseveralframes
donoframe
答案1
好吧,您可能可以为每一帧添加一个默认标签(我劫持了环境键,因为它是在设置通用键之前):
\documentclass{beamer}
\makeatletter
\newcounter{myframecount}
\define@key{beamerframe}{environment}
{%
\stepcounter{myframecount}%
\edef\beamer@againname{\themyframecount}%
{\let\@elt\beamer@labelsavecounter\beamer@overlaycounterresets}%
\def\beamer@frameenvironmentsubst{#1}%
}
\makeatother
\begin{document}
\begin{frame}<all:0>[label=bad]
1111111111111111111111111111111111111111111111111111111111111111
\end{frame}
\begin{frame}<all:0>
2222222222222222222222222222222222222222222222222222222222222222
\end{frame}
\end{document}