解决方法是使用 beamer 的 ignorenonframetext 选项定义新环境

解决方法是使用 beamer 的 ignorenonframetext 选项定义新环境

以下代码在使用时会产生错误pdflatex

\documentclass[ignorenonframetext]{beamer}

\usepackage{environ}

\NewEnviron{myframe}[1][]{%
    \begin{frame}{#1}
        \BODY
    \end{frame}
}

\begin{document}

This is star mode stuff.

\begin{frame}{First frame}
    Some text.
\end{frame}

\mode<presentation>{
    \begin{myframe}{title}
        Some text.
    \end{myframe}
}

\end{document}

输出pdflatex

! LaTeX Error: \begin{myframe} on input line 23 ended by \end{document}.

如果我删除该ignorenonframetext选项或在演示模式之外使用myframe,一切都正常。

有没有办法myframe在演示模式下完成工作?

答案1

在自定义环境中隐藏框架环境仍然不是一个好主意,但是 beamer 用户指南显示了这个示例,您可以对其进行调整以包含您的环境:

示例:以下示例显示如何在主文件中包含其他文件。main.tex 的内容:

\documentclass[ignorenonframetext]{beamer}
\begin{document}
This is star mode stuff.
Let’s include files:
\mode<all>
\include{a}
\include{b}
\mode*
\documentclass[ignorenonframetext]{beamer}

\usepackage{environ}

\NewEnviron{myframe}[1]{%
    \begin{frame}[environment=myframe]{#1}
        \BODY
    \end{frame}
}

\begin{document}

This is star mode stuff.

\begin{frame}{First frame}
    Some text.
\end{frame}

\mode<all>
    \begin{myframe}{title}
        Some text.
    \end{myframe}
\mode*

\end{document}

相关内容