如何将代码列表添加到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
使用\lstinputlisting
Matthew 建议的方法是一种可能。但是,如果你(像我一样)不想将数十个小列表文件与 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 环境的解决方法