使用这个最小文档,我收到一个Missing } inserted
错误:
\documentclass{beamer}
\usepackage{fontspec}
\usepackage{listings}
\begin{document}
\begin{frame}[fragile]{title}
\begin{lstlisting}[language={[LaTeX]TeX}]
\begin{frame}
Hello World
\end{frame}
\end{lstlisting}
\end{frame}
\end{document}
\end{frame}
如果我删除列表内的行,它就会消失。
我很困惑。我尝试了 pdflatex (没有 fontspec) 和 lualatex。
答案1
你的问题是,你无法可靠地获取\end{frame}
框架内的逐字内容,本身结束\end{frame}
。建议的方法是使用具有替代名称的环境:
\documentclass{beamer}
\usepackage{listings}
\newenvironment{Frame}
{\begin{frame}[fragile,environment=Frame]}
{\end{frame}}
\begin{document}
\begin{Frame}
\frametitle{title}
\begin{lstlisting}[language={[LaTeX]TeX}]
\begin{frame}
Hello World
\end{frame}
\end{lstlisting}
\end{Frame}
\end{document}
(人们可以想象尝试解决这个问题的复杂解析安排,但它们看起来很糟糕并且不那么可靠。)