列表环境中的 Beamer Latex 代码错误

列表环境中的 Beamer Latex 代码错误

我想在我的 Beamer 中显示一段简短的 Latex 代码。代码也是关于 Beamer 的。我不想使用\lstinputlisting{file.tex}。那么有什么办法吗?这是没有错误的代码。无论如何,当我启用三条禁用行时,会发生错误。

\documentclass{beamer}
\usetheme{Madrid}
\usepackage{listings}
\lstset{
    language=[latex]tex,
    breaklines=true}
\begin{document}
    \begin{frame}[fragile]
        \begin{lstlisting}
            \documentclass{beamer}
            \begin{document}
%               \begin{frame}
%                   Test
%               \end{frame}
            \end{document}
        \end{lstlisting}
    \end{frame}
\end{document}

答案1

避免使用的一种方法\lstinputlisting是“装箱”环境,然后使用框架内的lstlisting命令。\usebox

平均能量损失

\documentclass{beamer}
\usetheme{Madrid}
\usepackage{listings}
\lstset{%
    language=[latex]tex,
    breaklines=true}

\newsavebox{\myLst}

\begin{document}

\begin{lrbox}{\myLst}
\begin{lstlisting}
    \documentclass{beamer}
    \begin{document}
%     \begin{frame}
%       Test
%     \end{frame}
    \end{document}
\end{lstlisting}
\end{lrbox}

\begin{frame}
\usebox{\myLst}
\end{frame}

\end{document} 

结果

在此处输入图片描述

答案2

环境frame一定不缩进此类框架。»投影机« 手册第 60 页对此有所说明:

要确定框架的结束,请使用以下规则:包含的单行的第一次出现恰好\end{⟨frame environment name⟩}结束框架。⟨环境名称⟩通常是frame,但可以使用environment选项进行更改。这个特殊规则是必要的,因为毕竟在收集框架内容时不会对其进行解释。

\documentclass{beamer}
\usetheme{Madrid}
\usepackage{listings}
\lstset{
  language=[latex]tex,
  breaklines=true
}

\begin{document}

\begin{frame}[fragile]
  \begin{lstlisting}
    \documentclass{beamer}
      \begin{document}
%        \begin{frame}
%          Test
%        \end{frame}
      \end{document}
  \end{lstlisting}
\end{frame}

\end{document}

相关内容