LaTeX beamer:注释中的代码列表

LaTeX beamer:注释中的代码列表

如何将代码列表添加到beamer注释幻灯片中?

我尝试了以下方法,但没有效果:


\note{{\tiny{This is a note
      \begin{lstlisting}
foo bar
      \end{lstlisting}}}

有什么建议么?

答案1

欢迎!您提供的代码片段的一个问题是括号不匹配。但即便如此,像 这样的代码verbatim也会lstlisting对字符的类别代码产生奇怪的影响,这通常会阻止它出现在另一个宏的参数中。

灵感来自这篇帖子发到 beamer 邮件列表,我找到了一个使用该\lstinputlisting命令的解决方法。您必须将代码片段放在一个文件中,但使用选项,linerange您可以从同一个文件中摘录多个片段。

\documentclass{beamer}
\setbeameroption{show notes}
\usepackage{listings}

\begin{document}

\begin{frame}
first frame
\note{\lstinputlisting[language=tex,linerange=7-10]{Untitled.tex}}
\end{frame}

\end{document}

答案2

使用\lstinputlistingMatthew 建议的方法是一种可能。但是,如果你(像我一样)不想将数十个小列表文件与 LaTeX 源分开,你也可以将列表渲染到一个lrbox框中,\usebox然后在里面\note

\newsavebox{\LstA}

% Verbatim material in commands (\note{}) not possible --> box it
\begin{lrbox}{\LstA}
\begin{lstlisting}[language=C]
int fak( int n ) {
 for( int i = n-1; i > 1; --i )
   n *= i;
 return n;
}
\end{lstlisting}
\end{lrbox}

\begin{frame}{Recursive Algorithm}

  \note{ Iterative solution:\par\usebox{\LstA}}
\end{frame}

因为minted事情稍微复杂一点,但是这个问题已经涵盖了:Beamer 笔记中针对 minted 环境的解决方法

答案3

我强烈推荐“铸造“所有代码清单的包。请注意,如果您在投影仪幻灯片上使用它,它必须是易碎的:

\usepackage{minted}
\begin{frame}[fragile]{Python rocks}
\begin{minted}{python}
def foo(self, bar):
   return bar
\end{minted}
\end{frame}

注意:铸造包需要皮格门特斯用于语法高亮。

相关内容