在带有定义嵌套块的新环境的 beamer 类中编译失败

在带有定义嵌套块的新环境的 beamer 类中编译失败

我不明白为什么这段代码可以编译:

\documentclass{beamer}
\newenvironment{yyy}{\begin{frame} \begin{block}{youpi}  }{\end{block} \end{frame}}
\begin{document}
 { \begin{frame} \begin{block}{youpi}   bonjour \end{block} \end{frame} }
\end{document}

而那个没有:

\documentclass{beamer}
\newenvironment{yyy}{\begin{frame} \begin{block}{youpi}  }{\end{block} \end{frame}}
\begin{document}
  \begin{yyy}    bonjour \end{yyy}
\end{document}

... 导致

File ended while scanning use of \beamer@collect@@body

如果有人有想法,我会很感激!

答案1

这是设计使然,取决于投影仪如何读取帧。参见Beamer github repo 上的错误,已关闭,原因是 wontfix。

但是,您可以通过将代码包含到宏(而不是新环境)中来解决该问题:

\documentclass{beamer}

\newcommand{\yyy}[1]{
    \begin{frame}
        \begin{block}{youpi}
        #1
        \end{block}
    \end{frame}
}
\begin{document}
  \yyy{bonjour}
\end{document}

相关内容