如何在投影仪讲义中包含与特定转换中的演示模式中显示的完全相同的幻灯片?

如何在投影仪讲义中包含与特定转换中的演示模式中显示的完全相同的幻灯片?

我有一个 beamer 演示文稿,其中我做了类似以下 MWE 的事情:

\documentclass[handout]{beamer}

\include{tikz}% To get \foreach

\begin{document}

\begin{frame}
  These I want to uncover one by one in presentation mode, but to appear
  as a single slide in the handout

  \begin{itemize}[<+->]
    \item Item 1
    \item Item 2
    \item Item 3
    \item Item 4
  \end{itemize}
\end{frame}

\def\slideContent{
  These I want to uncover one by one in presentation mode *and* do the same
  in the handout. But that's not what I get!

  \begin{itemize}[<+->]
    \item Item 1
    \item Item 2
    \item Item 3
    \item Item 4
  \end{itemize}
}

\foreach \i in {1, ..., 4} {
  \begin{frame}<\i>
    \slideContent
  \end{frame}
}

\end{document}

在讲义模式下,第一帧按预期生成,但最后 4 帧没有生成,因为讲义折叠全部效果叠加到一张幻灯片上。但这并不是我想要的。相反,我希望最后 4 张幻灯片能够与演示模式中的效果完全相同。我知道可以通过明确添加handout:0以抑制讲义中的效果来实现这一点,但我有一些非常复杂的图形,无法对每个叠加层都进行这样的操作。请注意,这与排除某些幻灯片,因为那样的话我就会添加handout:0到那些幻灯片中,但这里更多的是将讲义上看到的效果限制在一定数量的转换内。

那么,简而言之,如何让讲义模式与某些幻灯片的演示模式完全一样?

答案1

解决您的问题的一个方法是在编译时暂时从讲义模式切换到 Beamer 模式。这样,您可以选择幻灯片的子集,就像在演示模式下编译的那样。诀窍是更改\beamer@currentmodeBeamer 使用的内部变量(我不知道弄乱这个变量是否会破坏任何东西)。我为我的幻灯片创建了一个新环境来封装这个更改,所以我希望它可以有用。

你要做的是:

  1. 将定义复制到序言中
  2. 把你的框架放进去\begin{handoutframeselect}[2,4-5],把规格改成你需要的
  3. 在框架前面放置一个选择宏:\begin{frame}<\slideselection>

在演示模式下,宏\slideselection将选择整套幻灯片,但在讲义模式下,宏将仅选择您指定的幻灯片。查看示例:

\documentclass[handout]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{default}
\usepackage{tikz}

\makeatletter
\newif\ifOnBeamerModeTransition
\newcommand{\slideselection}{1-}%
\newenvironment{handoutframeselect}[1][1-]{%
  \begingroup%
  \mode<handout>{%
    \gdef\beamer@currentmode{beamer}%
    \OnBeamerModeTransitiontrue%
    \renewcommand{\slideselection}{#1}}%
}{%
  \ifOnBeamerModeTransition%
    \OnBeamerModeTransitionfalse%
    \gdef\beamer@currentmode{handout}%
  \fi%
  \endgroup%
}
\makeatother

\begin{document}

\begin{frame}{Normal frame}
No selection in this frame:
\begin{itemize}[<+->]
  \item slide 1
  \item slide 2
  \item slide 3
\end{itemize}
\end{frame}

\begin{handoutframeselect}[2,4-5]
\begin{frame}<\slideselection>{Custom frame}
slideselection will be
\begin{itemize}
\item 1- in beamer mode
\item 2,4-5 in handout mode
\end{itemize}

This slides will be shown : \slideselection
\begin{itemize}[<+->]
  \item custom slide 1
  \item custom slide 2
  \item custom slide 3
  \item custom slide 4
  \item custom slide 5
\end{itemize}
\end{frame}
\end{handoutframeselect}

\begin{frame}{Other normal frame}
In this frame, we return to handout mode, no selection either:
\begin{itemize}[<+->]
  \item slide 1
  \item slide 2
  \item slide 3
\end{itemize}
\end{frame}

\end{document}

例子

答案2

您可以通过在初始(投影仪)规范后添加来将叠加规范分别应用于beamer和模式。在您的第一个列表中,您有,它将所有内容展平到一个讲义框架上,因为没有给出叠加规范来说明其他情况。如果您将其更改为,则行为也将应用于讲义模式。我希望这种用法在下面的代码中很清楚。handout|handout:"overlay specification"\begin{itemize}[<+->]\begin{itemize}[<+-|handout:+->]+-

\documentclass[handout]{beamer}
\begin{document}
\begin{frame}
  These I want to uncover one by one in presentation mode, but to appear
  as a single slide in the handout
  \begin{itemize}[<+->]
    \item Item 1
    \item Item 2
    \item Item 3
    \item Item 4
  \end{itemize}
\end{frame}
\begin{frame}
  These I want to uncover one by one in presentation mode *and* do the same
  in the handout. But that's not what I get!
  \begin{itemize}[<+-|handout:+->]
    \item Item 1
    \item Item 2
    \item Item 3
    \item Item 4
  \end{itemize}
\end{frame}
\end{document}

答案3

好吧,我终于得到了我想要的东西,但是我必须完全绕过handout模式的使用。

我所做的是pdftk获取beamer模式 PDF,然后将其切碎以生成handout模式 PDF,如下所示:

pdftk presentation.pdf cat 1 6 10-20 60-70 76 81 [...] output handout.pdf

这不是最好的解决方案,因为您必须手动选择要保留的幻灯片,但由于该命令嵌入到 Makefile 中,并且我很少添加或删除幻灯片,因此每当我修复幻灯片中的某些错误时,它足以自动执行制作讲义的任务。

相关内容