我不明白为什么这段代码可以编译:
\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}