latex beamer 讲义/带覆盖层的 beamer 模式

latex beamer 讲义/带覆盖层的 beamer 模式

我已经阅读了文档,还有其他几个类似的问题,例如 Beamer:讲义/文章模式 - 生成具有不同覆盖编号的帧的多个副本

但我就是搞不懂。请帮帮我。在讲义模式下,我希望只有第 1 帧的第 3 张幻灯片、第 2 帧的第 1 张幻灯片和第 1 帧的第 4 张幻灯片。但是,它还为第一页选择了第 1 帧的第 4 张幻灯片。我也设法得到了这个结果,但我总是破坏了投影机模式的结果。

% for handout without notes
\documentclass[handout]{beamer}
\usepackage{pgfpages}
\pgfpagesuselayout{4 on 1}[a4paper,landscape,border shrink=5mm]
% NOT OK: frame1.4, expected frame1.3
% OK: frame2.1
% OK: frame1.4

% for handout with notes
% \documentclass[]{beamer}
% \usepackage{pgfpages}
% \setbeameroption{show notes on second screen=bottom}
% OK: frame1.1
% OK: frame1.2
% OK: frame1.3
% OK: frame2.1
% OK: frame1.4

% for presentation without notes
% \documentclass[]{beamer}
% OK: frame1.1
% OK: frame1.2
% OK: frame1.3
% OK: frame2.1
% OK: frame1.4

\usepackage{fontspec}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[babel]{csquotes}

\usepackage{hyperref}

\author{todo author}
\institute{todo institute}
\date{todo date}
\title{todo title}


\begin{document}
\NoHyper

\begin{frame}<all:0>[label=frameFIRST]
\frametitle{FRAME 1}
\uncover<2>{slide2}\\
\uncover<3>{slide3}\\
\uncover<4>{slide4}
\end{frame}

\mode<beamer>{
    \againframe<beamer:1-3>{frameFIRST}%
}
\mode<handout>{
    \againframe<handout:3>{frameFIRST}%
}

\begin{frame}[label=frameSECOND]
\frametitle{FRAME 2}
foo
\end{frame}

\mode<beamer>{
    \againframe<beamer:4>{frameFIRST}%
}
\mode<handout>{
    \againframe<handout:4>{frameFIRST}%
}

\end{document}

答案1

这是一个答案,以某种方式依赖于答案这个问题。关键思想是beamer即使在讲义模式下也强制创建单独的幻灯片。为此,您的第 1 帧必须创建为:

\begin{frame}<all:0>[label=frameFIRST]{FRAME 1}
\uncover<all:1>{slide1}\\
\uncover<all:2>{slide2}\\
\uncover<all:3>{slide3}\\
\uncover<all:4>{slide4}
\end{frame}

加上<all:n>(n \in {1,...,4}, 也可以写成<all:+->。因此,针对您的问题的 pdflatex-MWE 将是:

\documentclass[handout]{beamer}
%\documentclass{beamer}
\usepackage{pgfpages}
\pgfpagesuselayout{4 on 1}[a4paper,landscape,border shrink=5mm]

\begin{document}
\begin{frame}<all:0>[label=frameFIRST]{FRAME 1}
\uncover<all:+->{slide1}\\
\uncover<all:+->{slide2}\\
\uncover<all:+->{slide3}\\
\uncover<all:+->{slide4}
\end{frame}

\mode<beamer>{\againframe<beamer:1-3>{frameFIRST}}
\mode<handout>{\againframe<handout:3>{frameFIRST}}

\begin{frame}[label=frameSECOND]{FRAME 2}
foo
\end{frame}

\mode<beamer>{\againframe<beamer:4>{frameFIRST}}
\mode<handout>{\againframe<handout:4>{frameFIRST}}
\end{document}

此外,我们还可以添加用于跟踪幻灯片和模式的工具,其定义如下:

\makeatletter
\newcommand*{\overlaynumber}{slide \number\beamer@slideinframe}
\makeatother
\mode<handout>{\newcommand\mymode{mode handout}}
\mode<beamer>{\newcommand\mymode{mode beamer}}

并在每一帧中添加字幕:

{\Large \mymode, \overlaynumber}

并添加以下代码来在幻灯片周围添加一个框架

%\usepackage{tikz}
\setbeamertemplate{background canvas}{%
    \tikz\draw(current page.north west) rectangle (current age.south east);%
    }

我得到了整个代码:

%\documentclass[handout]{beamer}
\documentclass{beamer}
\usepackage{pgfpages}
\pgfpagesuselayout{4 on 1}[a4paper,landscape,border shrink=5mm]
%
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
\usepackage[babel]{csquotes}

\usepackage{tikz}%\mode<handout>{%
\setbeamertemplate{background canvas}{%
    \tikz\draw(current page.north west) rectangle (current page.south east);%
    }

\makeatletter
\newcommand*{\overlaynumber}{slide \number\beamer@slideinframe}
\makeatother
\mode<handout>{\newcommand\mymode{mode handout}}
\mode<beamer>{\newcommand\mymode{mode beamer}}

\begin{document}
\NoHyper

\begin{frame}<all:0>[label=frameFIRST]{FRAME 1}{\Large \mymode,  \overlaynumber)}
\uncover<all:+->{slide1}\\
\uncover<all:+->{slide2}\\
\uncover<all:+->{slide3}\\
\uncover<all:+->{slide4}
\end{frame}

\mode<beamer>{\againframe<beamer:1-2>{frameFIRST}}
\mode<handout>{\againframe<handout:3>{frameFIRST}}

\begin{frame}[label=frameSECOND]{FRAME 2}{\Large\mymode, \overlaynumber}
foo
\end{frame}
\mode<beamer>{\againframe<beamer:4>{frameFIRST}}
\mode<handout>{\againframe<handout:4>{frameFIRST}}
\end{document}

模式中的收益handout在此处输入图片描述 并处于beamer模式(稍微修改了页面范围以适合单个页面):在此处输入图片描述

相关内容