请考虑下面的 beamer 示例。是否可以调整这一点,使第 4 帧在讲义上的帧编号为 3(而不是我示例中的 4)。换句话说,讲义中的编号应为第 3 帧的代码将被注释掉(而不仅仅是有选项)。
\documentclass[handout,gray]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{pgfpages}
\pgfpagesuselayout{4 on 1}[a4paper,border shrink=5mm,landscape]
\setbeamertemplate{headline}{\scriptsize{\vspace*{0.3cm}\hspace*{0.3cm}\insertframenumber}}
\begin{document}
\begin{frame}
\frametitle{Frame 1}
Frame 1
\end{frame}
\begin{frame}<display:0>
\frametitle{Frame 2}
Frame 2
\end{frame}
\begin{frame}<handout:0>
\frametitle{Frame 3}
Frame 3
\end{frame}
\begin{frame}
\frametitle{Frame 4}
Frame 4
\end{frame}
\end{document}
答案1
自从beamer
版本 3.08,有未记录的选项noframenumbering
这不会增加当前帧的幻灯片计数器。因此,如果您想从编号和讲义中排除单个帧,您可以使用
\begin{frame}<handout:0>[noframenumbering]
...
\end{frame}
为了实现此自动化,即从编号中排除当前模式( handout
, )下未显示的所有帧,您可以修补负责生成帧的内部命令:trans
beamer
\usepackage{etoolbox}
\makeatletter
\pretocmd{\beamer@@@@frame}{\alt<#1>{}{\beamer@noframenumberingtrue}}{}{}
\makeatother
将此代码包含在文档的前言部分(即\documentclass{beamer}
和之间)。它使用覆盖命令在未显示的每个幻灯片上激活。\begin{document}
\alt
noframenumbering
示例代码:
\documentclass[handout,gray]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{pgfpages}
\pgfpagesuselayout{4 on 1}[a4paper,border shrink=5mm,landscape]
\setbeamertemplate{headline}{\scriptsize{\vspace*{0.3cm}\hspace*{0.3cm}\insertframenumber}}
% https://tex.stackexchange.com/a/49806/3323
\usepackage{etoolbox}
\makeatletter
\pretocmd{\beamer@@@@frame}{\alt<#1>{}{\beamer@noframenumberingtrue}}{}{}
\makeatother
\begin{document}
\begin{frame}
Absolute frame number: 1\\
Frame number in presentation: \insertframenumber
\end{frame}
\begin{frame}
Absolute frame number: 2\\
Frame number in presentation: \insertframenumber
\end{frame}
\begin{frame}<handout:0>
Absolute frame number: 3\\
Frame number in presentation: \insertframenumber
\end{frame}
\begin{frame}
Absolute frame number: 4\\
Frame number in presentation: \insertframenumber
\end{frame}
\end{document}