Beamer 的新环境和列问题

Beamer 的新环境和列问题

我尝试使用列在 Beamer 中提供一个专门的框架。代码如下:

\documentclass[mathserif]{beamer}

\newenvironment{questionframe}[1]{
    \begin{frame}{#1}\begin{columns}[t]
}{
    \end{columns}\end{frame}
}

\newenvironment{question}
    {\begin{column}{0.5\textwidth}}
    {\end{column}}
\newenvironment{answer}
    {\begin{column}{0.5\textwidth}}
    {\end{column}}

\begin{document}

\begin{questionframe}{Question frame, very long, very long}
    \begin{question}
        This is a question!
    \end{question}
    \begin{answer}
        This is the answer!
    \end{answer}
\end{questionframe}

\end{document}

我收到以下错误:

!扫描使用 \beamer@collect@@body 时文件结束。

但是,如果我将“列”环境从问题框架环境定义中直接移到文档中的问题上,则编译就可以了......

有人能解释一下这个问题吗?有什么办法可以防止这种情况发生吗?

任何提示都会受到欢迎。

答案1

将框架环境隐藏在另一个环境中可能会导致各种问题,特别是当您需要在框架中放置易碎内容时,例如列表或一些 tikz 图片。

如果你真的必须这么做,beamer 有一个特殊的框架选项,environment你可以在其中告诉它新环境的名称。(有关更多信息,请参阅 beamer 用户指南,第 62 页)

其他一些评论:

  • mathserif选项已过时,日志文件中会显示警告,提示您应\usefonttheme[onlymath]{serif}改用

  • 您无法将两列宽度为 .5\textwidth 的列放在一起,这样就没有空间用于列内空间。要么让它们小一点,要么使用onlytextwidth选项


\documentclass{beamer}

\usefonttheme[onlymath]{serif}

\newenvironment{questionframe}[1]
       {\begin{frame}[environment=questionframe]\frametitle{#1}\begin{columns}[t,onlytextwidth]}
       {\end{columns}\end{frame}}

\newenvironment{question}
    {\begin{column}{0.48\textwidth}}
    {\end{column}}
\newenvironment{answer}
    {\begin{column}{0.48\textwidth}}
    {\end{column}}

\begin{document}

\begin{questionframe}{Question frame, very long, very long}
    \begin{question}
        This is a question!
    \end{question}
    \begin{answer}
        This is the answer!
    \end{answer}
\end{questionframe}

\end{document}

在此处输入图片描述

相关内容