在以下示例中,\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
实际上是从文档将“某处”定义所有内容的假设开始的,我认为这“也许奇怪但却是故意的”。