我正在寻找一种合理的方法,将同一场演讲的不同版本保存在一个 beamer 文件中:例如,15 分钟和 1 小时版本,其中一些内容是通用的,但有些则不是。有没有一种好的方法可以在版本之间切换?
\documentclass{beamer}
\begin{document}
\title{Presentation}
\begin{frame}
\titlepage
\end{frame}
\begin{frame}{Issue 1} % both
\end{frame}
\begin{frame}{Issue 2 - the gist of it} % only short
\end{frame}
%\begin{frame}{Issue 2 - the detailed version } % only long
%\end{frame}
%\begin{frame}{Issue 2 - the detailed version, contd.} % only long
%\end{frame}
\begin{frame}{Issue 3} % both
\end{frame}
% etc.
\end{document}
答案1
您可以标记每个帧\begin{frame}[label=both]
然后使用
\includeonlyframes{<frame label list>}
一个样品:
\documentclass{beamer}
%\includeonlyframes{title,both,short1,both1} %% for short
\includeonlyframes{title,both,long1,long2,both1} %% for long
\begin{document}
\title{Presentation}
\begin{frame}[label=title]
\titlepage
\end{frame}
\begin{frame}[label=both]{Issue 1} % both
both
\end{frame}
\begin{frame}[label=short1]{Issue 2 - the gist of it} % only short
short 1
\end{frame}
\begin{frame}[label=long1]{Issue 2 - the detailed version } % only long
long 1
\end{frame}
\begin{frame}[label=long2]{Issue 2 - the detailed version, contd.} % only long
long 2
\end{frame}
\begin{frame}[label=both1]{Issue 3} % both
both 1
\end{frame}
% etc.
\end{document}
答案2
您可以使用该包为将出现在演示文稿“长版本”中的帧environ
创建一个新环境。该环境将用于两者中的帧。然后可以使用布尔值在两者之间切换:lvframe
frame
\documentclass{beamer}
\usepackage{environ}
\newif\iflongversion \longversiontrue%change to \longversiontrue to include the frames in the long version
\NewEnviron{lvframe}[3][]{%
\iflongversion\begin{frame}[environment=lvframe,#1]{#2}{#3}
\BODY
\end{frame}\fi}
\begin{document}
\title{Presentation}
\begin{frame}
\titlepage
\end{frame}
\begin{frame}{Issue 1} % both
\end{frame}
\begin{frame}{Issue 2 - the gist of it} % only short
\end{frame}
\begin{lvframe}{Issue 2 - the detailed version }{} % only long
\end{lvframe}
\begin{lvframe}{Issue 2 - the detailed version, contd.}{} % only long
\end{lvframe}
\begin{frame}{Issue 3} % both
\end{frame}
% etc.
\end{document}
更改\longversionfalse
为\longversiontrue
以获取“长版本”。
编辑:
以上是根据 OP 和下面 @MickG 的评论更正的答案。这个定义应该处理 的最常见实现\begin{frame}
,特别是 形式的实现\begin{frame}[options]{title}{subtitle}
。请注意,{}
如果subtitle
不需要 参数(lvframe
没有 的复杂可选参数解析),则 是必需的。此外,如果需要frame
,这将不起作用。<overlay>
答案3
versions
我使用可以让我轻松包含/排除许多连续的帧的包来管理它:
\documentclass{beamer}
\usepackage{xifthen}
\usepackage{versions}
%
\newboolean{longversion}
%
% Uncomment the following line to get the long version
% \setboolean{longversion}{true}
%
\ifthenelse{\boolean{longversion}}{%
\includeversion{longversion}
\excludeversion{shortversion}
}{%
\excludeversion{longversion}
\includeversion{shortversion}
}
\begin{document}
\title{Presentation}
\begin{frame}
\titlepage
\end{frame}
\begin{frame}{Issue 1} % both
\end{frame}
\begin{shortversion}
\begin{frame}{Issue 2 - the gist of it} % only short
\end{frame}
\end{shortversion}
\begin{longversion}
\begin{frame}{Issue 2 - the detailed version } % only long
\end{frame}
\begin{frame}{Issue 2 - the detailed version, contd.} % only long
\end{frame}
\end{longversion}
\begin{frame}{Issue 3} % both
\end{frame}
% etc.
\end{document}
答案4
有一个专门用于此目的的包,该beameraudience
包:
\documentclass{beamer}
\usepackage[
audience=experts
% audience=beginners
]{beameraudience}
\begin{document}
\begin{frame}{Title}
all version
\end{frame}
\justfor{beginners}{
\begin{frame}{Title}
long version
\end{frame}
}
\justfor{experts}{
\begin{frame}{Title}
short version
\end{frame}
}
\end{document}