我希望我的幻灯片演示一次显示一个项目,其中代码片段被视为另一个项目。这就是我所拥有的。
\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}