# LaTeX beamer: Code listings in notes

How can I add a code listing to a beamer note slide?

I tried the following which doesn't work:


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


Any suggestions?

Welcome! One problem with the snippet you provide is an unmatched brace. But even so, like verbatim, lstlisting does strange things with category codes of characters which usually precludes it from being in the argument of another macro.

Inspired by this post to the beamer mailing list, I found a workaround with the \lstinputlisting command. You have to put your code snippet in a file, but using the linerange options you can excerpt multiple snippets from the same file.

\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}

• Awesome! Thank you very much! Unfortunately I don't have the required reputation to vote your answer up. But I would definitely would… Dec 16, 2010 at 6:30
• @Normen: Glad it worked for you. You can accept the answer anytime. You need 15 rep for upvoting. You get 5 for asking a question that's upvoted and 2 for accepting an answer. So you're nearly there already. :-) Dec 16, 2010 at 13:24

Using \lstinputlisting as suggested by Matthew is one possibility. However, if you (like me) prefer to not have dozens of small listing files separated from the LaTeX sources, you could also render the listing into a lrbox box and \usebox this inside the \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}


For minted things are a tiny bit more complicated, which, however is covered in this question: workaround for minted environments in in Beamer notes

I highly recommend the "minted" package for all code listings. Note that if you use this on a beamer slide, it must be fragile:

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


Note: The minted package needs Pygments for syntax highlighting.

• Oh, that sounds interesting. I tried it OMM and I got a message that says that 'pygmentize' has to be installed. What is that and how would one install it? Dec 14, 2010 at 19:44
• @Matt: Welcome to tex.sx! A tip: If you indent lines by 4 spaces, then they're marked as a code sample. You can also highlight the code and click the 'code' button (101010). Dec 15, 2010 at 10:37
• @Matt: Does minted'' solve this issue? Or is it just a general recommendation. I can't switch directly, though, I already have created a bunch of specialized listing style files. Dec 15, 2010 at 14:15
• @Matt pygmentize is a program for code highlighting and typesetting. Its also used by Python documentation. minted is the wrapper for LaTeX. You will also need -shell-escape on your command line. Dec 16, 2010 at 18:07
• Have you actually tried if this does work in \note commands? AFAIK minted is also a verbatim-like environment, hence cannot be passed as argument to commands (like \note). Nov 4, 2011 at 16:38