pdfpages
我正在使用包含一些页面beamer
。我知道这些页面不能包含在框架中。相反,这些页面作为简单文本包含在内。到目前为止一切顺利。
但是,幻灯片页脚中的帧数不正确。请看这个简单示例,
\documentclass{beamer}
\usepackage{pdfpages}
\mode<presentation>
{
\usetheme{Luebeck}
\setbeamercovered{transparent}
}
\usepackage{times}
% Frame numbers
\expandafter\def\expandafter\insertshorttitle\expandafter{%
\insertshorttitle\hfill\insertframenumber\,/\,\inserttotalframenumber}
\begin{document}
\begin{frame}
\frametitle{First Frame}
\end{frame}
\begingroup
\setbeamercolor{background canvas}{bg=}
\includepdf[pages=1-10]{mypdf.pdf}
\endgroup
\begin{frame}
\frametitle{Last Frame}
\end{frame}
\end{document}
虽然我需要第一张幻灯片的数字是 1/12,最后一张幻灯片的数字是 12/12,但实际上结果是 1/2 和 2/2。我知道 beamer 没有做错。这在数学上 100% 正确。但从用户的角度来看,这并不是有意的。
有什么方法可以让我融入非框架幻灯片中有多少页数?
答案1
经过多次反复试验和代码破解后,我找到了这样的解决方案。
\def\getpdfpages#1#2{\begingroup
\setbeamercolor{background canvas}{bg=}
\includepdf[pages={#1},%
pagecommand={\global\setcounter{framenumber}{\value{page}}%
\expandafter\def\expandafter\insertshorttitle\expandafter{%
\insertshorttitle\hfill\insertframenumber\,/\,\inserttotalframenumber}}%
]{#2}
\endgroup}
对于上面的宏,第一个参数是页面范围,第二个参数是.pdf
文件名。因此,你可以这样调用它:
\getpdfpages{{4-5}}{mypdf.pdf}
或者
\getpdfpages{{4,7}}{mypdf.pdf}
或者
\getpdfpages{{4-5,7,10-12}}{mypdf.pdf}
答案2
扩展 Masroor 的答案,如果使用覆盖,则会产生错误的帧号。为防止这种情况,请使用:
\global\setcounter{framenumber}{%
\the\numexpr\value{framenumber}+1\relax}}
每帧加一,而不是
\global\setcounter{framenumber}{\value{page}}
将framenumber
计数器设置为。使用/overlayspage
时,两者有所不同。\pause
(我本来想对那篇文章发表评论,但我没有足够的声誉)
答案3
对于包含的 pdf 也是 beamer 演示文稿的特殊情况,可以使用以下技术:
在应包含在另一个演示文稿中的演示文稿中,用您选择的名称标记最后一帧,例如lastframe
\begin{frame}[label=lastframe]
\end{frame}
然后可以在主演示文稿中自动添加帧号:
\documentclass{beamer}
\usepackage{refcount}
\usepackage{zref-xr}
\usepackage{pdfpages}
\zxrsetup{toltxlabel}
\zexternaldocument*{OtherPresentation}
\begin{document}
\setcounterref{framenumber}{lastframe}
\setbeamercolor{background canvas}{bg=}
\includepdf[pages=-]{OtherPresentation}
\begin{frame}
\end{frame}
\end{document}