使用 mdframed 和 beamerarticle 构建 \frame

使用 mdframed 和 beamerarticle 构建 \frame

我想要生成包含我的投影仪幻灯片(主要是图表)和说明的文章风格的讲义。

为此,我现在正在考虑使用 beamerarticle。我想使用 mdframed 来为幻灯片添加框架,并设置适当的 beamer 模板。使用 frametitles 为使用括号的框架添加框架时会出现问题(下面的第二个选项)。我extra } or forgotten \endgroup在 处收到错误\end{frame}

\documentclass[a4paper,12pt]{article}
\usepackage{beamerarticle}
%\documentclass[ignorenonframetext]{beamer}
\usepackage{tikz}
\usepackage{mdframed}

\mode<article>{
\setbeamertemplate{frame begin}{\begin{mdframed}}
\setbeamertemplate{frame end}{\end{mdframed}}
}

\begin{document}
No problem: using \verb+\frametitle+
\begin{frame}
    \frametitle{binary search tree}
        \tikz   \draw[dashed,thick] (0,0) rectangle (8,0.5) ;
\end{frame}

Error: frametitle as argument to \verb+\frame+
\begin{frame}{extended tree}
        \tikz   \draw[dashed,thick] (0,0) rectangle (8,0.5) ;
\end{frame}
\end{document}

谢谢。

答案1

我强烈建议不要使用这种令人困惑的 \begin{frame}{<frametitle>}语法。这只是为了向后兼容。相反,你应该使用正确的\frametitle{...}语法。它更加灵活。

如果你真的必须使用这种烦人的语法,你可以像这样解决问题:

\documentclass[a4paper,12pt]{article}
\usepackage{beamerarticle}
%\documentclass[ignorenonframetext]{beamer}

\usepackage{mdframed}

\mode<article>{
\AfterEndEnvironment{frame}{\end{mdframed}}
\BeforeBeginEnvironment{frame}{\begin{mdframed}\vspace*{-\baselineskip}}
}

\begin{document}

\begin{frame}
    \frametitle{binary search tree}
    test
\end{frame}

\begin{frame}{extended tree}
     test
\end{frame}
\end{document}

相关内容