beamer
的文档规定:
article
通过指定或book
或其他类作为文档类而不是beamer
,然后加载包来创建演示文稿的文章模式beamerarticle
。这个包
beamerarticle
以一种适合该article
模式的方式定义了几乎所有的 beamer 命令。
因此,人们可以期望实际上能够article
从最初使用类完成的现有文档创建一个版本,beamer
用于演示,而只需使用\documentclass{article}\usepackage{beamerarticle}
而不是\documentclass{beamer}
。
但不幸的是,事实并非如此,如以下例子所示:
% \documentclass{beamer}
\documentclass{article}\usepackage{beamerarticle}
%
\beamerdefaultoverlayspecification{<+->}
%
\begin{document}
\begin{frame}
\begin{itemize}
\item Foo
\item Bar
\end{itemize}
\end{frame}
\end{document}
它抱怨\beamerdefaultoverlayspecification
未定义。
好的,我只能在presentation
模式下使用此命令:
\mode<presentation>{%
\beamerdefaultoverlayspecification{<+->}%
}
但是为什么这样的命令没有被重新定义\relax
为beamerarticle
?
答案1
beamerarticle
需要包beamerbasearticle
beamerbasearticle
需要包beamerbaserequires
beamerbaserequires
需要包beamerbaseoverlay
- 在
beamerbaseoverlay
:\mode<presentation>
它在第 259 行变为- 它
\beamerdefaultoverlayspecification
在第 503 行定义 - 它变回
\mode<all>
第 843 行
所以我最好的猜测是,\beamerdefaultoverlayspecification
在文章模式中它被故意留空。
答案2
作为当前的beamer
维护者,我可以推测过去的设计方法,并请你记录问题要求任何具体的改变。
我的建议是,你需要从这样一个想法开始:没有一个单一的“真正的”源文件会同时包含
\documentclass{beamer}
和
\usepackage{beamerarticle}
相反,我们期望有两个存根文件,其中一个文件的形式如下
\documentclass{beamer}
% Rest of preamble
\begin{document}
\input{document-body}
\end{document}
和第二个
\documentclass{article}
\usepackage{beamerarticle}
% Rest of preamble
\begin{document}
\input{document-body}
\end{document}
理由是,虽然内容可能是一样的,设置这两种情况是截然不同的。
在 的特定情况下\beamerdefaultoverlayspecification
,该命令在文章中确实没有意义(没有覆盖),只在演示中有意义。因此,在 的“真实”序言中不会遇到该命令,因此article
无需定义它。
您会发现许多其他beamer
不适用于文章的概念也存在同样的情况。