beamer/beamerarticle:框架的模式规范无法按预期工作

beamer/beamerarticle:框架的模式规范无法按预期工作

在以下示例中,\section命令(及其参数)按预期被忽略。但并非框架的所有内容:文本和第一个 \tikz 未打印,但未知颜色给出了两个错误(未知命令也是如此),并且图形出现在页面上(需要 eso-pic 才能获得此效果)。\stepcounter{section}框架中的 A 也被执行。

我也反过来测试了:\begin{frame}<article>Bamer 文档中的 A:这也不起作用。这是一个错误吗?(如果我使用显式\mode命令,则没有问题。)

\documentclass{scrartcl}
\usepackage{beamerarticle}
\usepackage{tikz}
\usepackage{eso-pic}
\newcommand\framegraphic[1]%
  {\AddToShipoutPictureFG
   {\AtPageCenter
    {\includegraphics[width=5cm]{#1}%
  }}}


\begin{document}
blabla

\section<presentation>{This section exists 
  \tikz\draw[color=unknowncolorA] (1,1)rectangle (0,0); 
 only in the presentation modes}

\begin{frame}<presentation>
  some text
 \tikz\draw[fill=red] (1,1)rectangle (0,0);
 \tikz\draw[color=unknowncolorB] (1,1)rectangle (0,0);
 \framegraphic{example-image-a}
\end{frame}

\end{document}

答案1

[全面分析后更新答案]

虽然这种行为可能并不明显,但我认为这是设计使然(当然我非常不愿意改变它)。相关代码行beamerbaseframe如下

\long\def\beamer@@frame<#1>[#2]{%
  \global\let\insertframetitle=\@empty%
  \global\let\insertframesubtitle=\@empty%
  \beamer@slideinframe=1\relax%
  \refstepcounter{framenumber}%
  \beamer@slideinframe=0\relax%
  \beamer@anotherslidefalse%
  {\beamer@masterdecode{#1}}%
  \ifbeamer@anotherslide%
    \let\beamer@howtotreatframe\beamer@dosingleframe%
  \else% no slides in frame
    \let\beamer@howtotreatframe\beamer@donoframe%
  \fi%
  \beamer@slideinframe=1\relax%
  \beamer@howtotreatframe}

特别需要注意的是\beamer@donoframe:这被正确地设置为要采取的操作。然而,不明显的是,“吞噬”框架的工作原理是将其排版到不使用的框中。因此,我们需要命令要定义的框。

beamer鉴于/ split 的工作方式beamerarticle 实际上是从文档将“某处”定义所有内容的假设开始的,我认为这“也许奇怪但却是故意的”。

相关内容