默认情况下,\ref{slidelable}
引用带标签的幻灯片的第一页。作者希望将默认值更改为引用幻灯片的最后一页。由于作者<+>
经常使用叠加层,因此计算和分配叠加层规范\label<lastoverlay>{slidelable}
是一项艰巨的工作。以下是两种可能的方法:
- 将默认标签叠加规范从 替换
<1>
为<\insertframeendpage-\insertframestartpage+1>
- 修补
\ref
命令跳转到幻灯片的结束页。(我还没想出如何做到这一点。)
我的第一种方法的代码:
\g@addto@macro\beamer@lastminutepatches{%
\let\beamer@origlabel\label
\def\label{\@ifnextchar<{\beamer@label}{%
\expandafter\beamer@label\expandafter<\insertframeendpage-\insertframestartpage+1>}}
\let\beamer@origlabel@in@display\label@in@display
\def\label@in@display{\@ifnextchar<{\beamer@label@in@display}{%
\expandafter\beamer@label@in@display\expandafter<\insertframeendpage-\insertframestartpage+1>}}
}
第一种方法的问题是,当我减少幻灯片的叠加层数量(例如从 6 个减少到 4 个)时,幻灯片的最后一页会额外重复两次(即 1、2、3、4、4、4),因为标签仍然在叠加层 <6> 上。每次在编译编辑后的幻灯片之前,我都需要删除 .aux 文件以防止出现此问题。
对这两种方法有什么建议吗?或者有没有其他方法可以在没有覆盖规范的情况下引用幻灯片的最后一页?