![Beamer:讲义/文章模式 - 生成具有不同覆盖编号的帧的多个副本](https://linux22.com/image/304388/Beamer%EF%BC%9A%E8%AE%B2%E4%B9%89%2F%E6%96%87%E7%AB%A0%E6%A8%A1%E5%BC%8F%20-%20%E7%94%9F%E6%88%90%E5%85%B7%E6%9C%89%E4%B8%8D%E5%90%8C%E8%A6%86%E7%9B%96%E7%BC%96%E5%8F%B7%E7%9A%84%E5%B8%A7%E7%9A%84%E5%A4%9A%E4%B8%AA%E5%89%AF%E6%9C%AC.png)
以前也曾有人问过类似的问题,但我无法从提供的答案中得出一个通用的解决方案。
首先,这是一个 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}
只需重复一次即可提高效率:
\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
明显的缺点是:
- 您需要跟踪 merge.pdf 中的实际页码,因为如果您在感兴趣的框架之前插入/删除一个框架和/或覆盖,它们就会移动。
- 生成的 2x2 页面需要拼接到由 beamer handouts 模式生成的“原始”讲义中。
可能有办法自动化,例如使用 Makefile,但我还没有尝试过。
不过,如果你有足够长的动画并且想要捕捉,例如第一个、一些中间和最后一个叠加,它可能是可以接受的。