Beamer:讲义/文章模式 - 生成具有不同覆盖编号的帧的多个副本

Beamer:讲义/文章模式 - 生成具有不同覆盖编号的帧的多个副本

以前也曾有人问过类似的问题,但我无法从提供的答案中得出一个通用的解决方案。

首先,这是一个 MWE:

%\documentclass{beamer}
\documentclass[handout]{beamer}
%\documentclass{文章}
%\usepackage{beamerarticle}

\开始{文档}

\begin{frame}[label=foo]\frametitle{我唯一的框架}
  \开始{枚举}[]
    \item 项目 \arabic{enumi}
    \item 项目 \arabic{enumi}
    \item 项目 \arabic{enumi}
    \item 项目 \arabic{enumi}
    \item 项目 \arabic{enumi}
    \item 项目 \arabic{enumi}
    \item 项目 \arabic{enumi}
    \item 项目 \arabic{enumi}
    \item 项目 \arabic{enumi}
    \item 项目 \arabic{enumi}
  \end{枚举}
\结束{框架}

\againframe{foo}
\againframe{foo}
\结束{文档}

从示例中可以看出,挑战在于生成构建框架演变的两个快照。在示例中,我尝试生成两个这样的快照,但失败了:一个在叠加层 5,另一个在(最终)叠加层 10。

我正在寻找一个可以实现这一目标的解决方案,没有修改框架内的叠加说明。如果这不可能,我想不仅是我,其他人也会对使用的解决方案感兴趣好的)对框架进行修改,是快照的数量(而不是在)工作,在哪里n是覆盖的总数。

article如果能在和模式下实现这一点就太好了handout。我怀疑前者更具挑战性。

我猜想这是不可能的。如果确实如此,那么一个明确的答案也会很有用。如果是这样的话,至少停止搜索,也许有一天 Beamer 会提供这个。

先前的相关问题

答案1

您确实需要说明beamer您希望在handout版本的每一帧中显示什么。您可以使用\onslide规范来执行此操作,这样您就根本不需要修改现有的覆盖规范。(我不确定这是否是您想要的 - 可能不是。)

以下代码修改了您的 MWE,以便在presentation模式下,框架内实际上会有 10 张幻灯片。然后将它们放置在幻灯片 1 或幻灯片 2 上handout。这浪费了代码:如果您只想显示幻灯片 5 和幻灯片 10,则不需要两个,\againframe而只需要一个。但是,无论如何,有了这两个:

\documentclass[handout]{beamer}

\begin{document}

  \begin{frame}<1-| handout:0>[label=foo]{My only frame}
    \begin{enumerate}[<+->]% or whatever you like for presentation mode
      \onslide<1-| handout:1-2>
      \item Item \arabic{enumi}
      \item Item \arabic{enumi}
      \item Item \arabic{enumi}
      \item Item \arabic{enumi}
      \item Item \arabic{enumi}
      \onslide<1-| handout:2>
      \item Item \arabic{enumi}
      \item Item \arabic{enumi}
      \item Item \arabic{enumi}
      \item Item \arabic{enumi}
      \item Item \arabic{enumi}
    \end{enumerate}
  \end{frame}

  \againframe<0| handout:1>{foo}
  \againframe<0| handout:2>{foo}
\end{document}

幻灯片 5 和 10 用于讲义

只需重复一次即可提高效率:

\documentclass[handout]{beamer}

\begin{document}

  \begin{frame}<1-| handout:1>[label=foo]{My only frame}
    \begin{enumerate}[<+->]% or whatever you like for presentation mode
      \onslide<1-| handout:1-2>
      \item Item \arabic{enumi}
      \item Item \arabic{enumi}
      \item Item \arabic{enumi}
      \item Item \arabic{enumi}
      \item Item \arabic{enumi}
      \onslide<1-| handout:2>
      \item Item \arabic{enumi}
      \item Item \arabic{enumi}
      \item Item \arabic{enumi}
      \item Item \arabic{enumi}
      \item Item \arabic{enumi}
    \end{enumerate}
  \end{frame}

  \againframe<0| handout:2>{foo}
\end{document}

我不确定这如何应用于article模式,因为那时没有框架或幻灯片。

答案2

我一直在尝试解决同样的问题,但和你一样,没有找到一个只能使用 beamer 的解决方案。一个可能的解决方法是从演示文稿的“幻灯片”版本中提取有趣的帧。在 Linux 中,以下方法对我有用:

MWE(合并排序的示例):

\documentclass{beamer}

\usepackage{tikz}

\begin{document}

\begin{frame}{Merge Example}

\begin{center}
  \begin{tikzpicture}
    \tikzstyle{num}=[rectangle,draw,minimum size=1.65em]
    \tikzstyle{invis}=[rectangle,minimum size=1.65em,draw,color=gray!30]
    \tikzstyle{head}=[circle,draw,inner sep=1,minimum width=2em,node distance=3em]
    \tikzstyle{sorted}=[rectangle,draw,green,inner sep=0.3em,very thick]
     \node[head] (s) {S};
    \node<3->[num,right of=s] (s-1) { 5};
    \node<5->[num,right of=s-1] (s-2) { 6};
    \node<7->[num,right of=s-2] (s-3) { 7};
    \node<8->[num,right of=s-3] (s-4) { 9};
    \node<9->[num,right of=s-4] (s-5) { 19};
    \node[head,right of=s,node distance=14em,yshift=8ex] (s1) {S1};
    \node[head,right of=s,node distance=14em,yshift=-8ex] (s2) {S2};
    \node<-4>[num,right of=s1] (s1-1) {6};
    \node<5->[invis,right of=s1] (s1-1) {6};
    \node<-6>[num,right of=s1-1] (s1-2) {7};
    \node<7->[invis,right of=s1-1] (s1-2) {7};
    \node<-2>[num,right of=s2] (s2-1) {5};
    \node<3->[invis,right of=s2] (s2-1) {5};
    \node<-7>[num,right of=s2-1] (s2-2) {9};
    \node<8->[invis,right of=s2-1] (s2-2) {9};
    \node<-8>[num,right of=s2-2] (s2-3) {19};
    \node<9->[invis,right of=s2-2] (s2-3) {19};
    \draw<2>[latex-latex] (s1-1) edge[out=-90,in=90] (s2-1);
    \draw<4>[latex-latex] (s1-1) edge[out=-90,in=90] (s2-2);
    \draw<6>[latex-latex] (s1-2) edge[out=-90,in=90] (s2-2);
   \end{tikzpicture}
\end{center}

\end{frame}

\end{document}

将上述示例存储在文件中后merge.tex,以下命令将生成一个 2×2 的讲义版本,其中包含覆盖层 1、2、3、9:

pdflatex merge.tex
pdftk merge.pdf cat 1 2 3 9 output - | pdfnup --nup 2x2 --outfile merge-2x2.pdf

明显的缺点是:

  1. 您需要跟踪 merge.pdf 中的实际页码,因为如果您在感兴趣的框架之前插入/删除一个框架和/或覆盖,它们就会移动。
  2. 生成的 2x2 页面需要拼接到由 beamer handouts 模式生成的“原始”讲义中。

可能有办法自动化,例如使用 Makefile,但我还没有尝试过。

不过,如果你有足够长的动画并且想要捕捉,例如第一个、一些中间和最后一个叠加,它可能是可以接受的。

相关内容