beamer、verbatim 和 `\end{frame}`

beamer、verbatim 和 `\end{frame}`

截至目前 TL2018,包含\end{frame}一行逐字代码的最小 beamer/verbatim 文件无法编译:

\documentclass{beamer}
\usepackage{fancyvrb}
\begin{document}
\begin{frame}[fragile]
\begin{verbatim}
\documentclass{beamer}
\begin{document}
\begin{frame}{My first slide}
Hello World
\end{frame}
\end{document}
\end{verbatim}
  Hello
\end{frame}
\end{document}

如果我注释掉\end{frame}逐字块中的那一行,一切就都好了。

错误是

Runaway argument?
^^M\documentclass{beamer}^^M\begin{document}^^M\begin{frame}{My first\ETC.
! File ended while scanning use of \@xverbatim.
<inserted text> 
                \par 
l.10 \end{frame}

答案1

当然,嵌套框架来记录beamer本身是一种比较特殊的情况。在这里,您可以使用创建“替代名称”环境的功能。

\documentclass{beamer}
\newenvironment{slide}{\begin{frame}[fragile,environment=slide]}{\end{frame}}
\begin{document}
\begin{slide}
\begin{verbatim}
\documentclass{beamer}
\begin{document}
\begin{frame}{My first slide}
Hello World
\end{frame}
\end{document}
\end{verbatim}
  Hello
\end{slide}
\end{document}

相关内容