Beamer 代码片段幻灯片

Beamer 代码片段幻灯片

我希望我的幻灯片演示一次显示一个项目,其中代码片段被视为另一个项目。这就是我所拥有的。

\documentclass{beamer}
\usetheme{Madrid}
\usepackage{listings}
\begin{document}

\begin{frame}[fragile]
    \frametitle{Test Slide}

    \defverbatim[colored]\codesnippet{
    \begin{lstlisting}[language=Python,basicstyle=\ttfamily,keywordstyle=\color{blue}]
        def main():
            <statements>
    \end{lstlisting}
    }

    \begin{itemize}
        \item<1-> test
        \item<2-> test
        \codesnippet
    \end{itemize}
\end{frame}

\end{document}

我当前代码的情况是,项目<1-> 出现在第一张幻灯片上,但项目 1 和项目 2 与 codesnippet 一起出现在第二张幻灯片上。在幻灯片 2 上,我只想要项目 1 和项目 2,而不想要 codesnippet,然后让项目 1、项目 2 和 codesnippet 出现在幻灯片 3 上。如果我尝试将 codesnippet 嵌套在另一个项目中,那么我会在代码片段后得到一个额外的项目。

\begin{itemize}
    \item<1-> test
    \item<2-> test
    \item<3->{\codesnippet}
\end{itemize}

我怎样才能将代码片段视为可以添加到下一张幻灯片的项目?谢谢。

答案1

嗯,我不知道为什么,但问题似乎来自 的定义\codesnippet。如果你用其内容的明确表达来替换它,它就可以正常工作。你真的需要定义这个宏 吗?

\documentclass{beamer}
\usetheme{Madrid}
\usepackage{listings}
\lstset{language=Python,basicstyle=\ttfamily,keywordstyle=\color{blue}}
\begin{document}

\begin{frame}[fragile]
    \frametitle{Test Slide}


    \begin{itemize}
        \item<1-> test
        \item<2-> test
        \item<3-> 
        \begin{lstlisting}
def main():
    <statements>
        \end{lstlisting}
    \end{itemize}
\end{frame}

\end{document}

相关内容