不同的 if 语句中的 \begin{frame} 和 \end{frame}

不同的 if 语句中的 \begin{frame} 和 \end{frame}

我希望有一个开关可以检测我是将文件编译为 Beamer 演示文稿还是文章,调整两个类的特定命令,但单个页面/幻灯片的内容相同。不幸的是,以下代码不适用于 Beamer。

%\documentclass{article}
\documentclass{beamer}

\usepackage{ifthen}
\newif\ifbeamer
\beamertrue

\begin{document}

\ifbeamer
   \begin{frame}
\else % article
    \newpage
\fi

% common code for both beamer and article
blah blah

\ifbeamer
    \end{frame}
\fi

 \end{document} 

看来 beamer 只接受在单个“if”语句中包含 \begin{frame} 和 \end{frame}。我该如何处理这个限制?

答案1

您可以使用该beamerarticle包并根据当前模式调整框架环境:

\documentclass{article}
%\documentclass{beamer}
\usepackage{beamerarticle}

\mode<article>{
  \AtBeginEnvironment{frame}{\newpage}
}

\begin{document}

\begin{frame}
% common code for both beamer and article
blah blah
\end{frame}


\begin{frame}
% common code for both beamer and article
blah blah
\end{frame}


 \end{document} 

相关内容