article+beamerarticle 需要进行一些可以避免的调整

article+beamerarticle 需要进行一些可以避免的调整

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{<+->}%
}

但是为什么这样的命令没有被重新定义\relaxbeamerarticle

答案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不适用于文章的概念也存在同样的情况。

相关内容