我使用带有semiverbatim
环境的 beamer 来显示源代码。
\documentclass{beamer}
\setbeamercolor{background canvas}{bg=yellow}
\useinnertheme[shadow]{rounded}
\setbeamercolor{block title example}{fg=white,bg=red!75!black}%
\setbeamercolor{block body example}{fg=black,bg=white!70!red}%
\begin{document}
\begin{frame}[fragile]{Code}
\begin{example}[Code]
\begin{semiverbatim}
class Hello {
...
}
\end{semiverbatim}
\end{example}
\end{frame}
\end{document}
但是,我想要提供诸如突出显示和源代码编号等功能的 listings 包。因此,我尝试了这个。
\documentclass{beamer}
\setbeamercolor{background canvas}{bg=yellow}
\useinnertheme[shadow]{rounded}
\usepackage{listings}
\lstset{numbers=left, numberstyle=\tiny, stepnumber=1,firstnumber=1,
numbersep=5pt,language=Java,
stringstyle=\ttfamily,
basicstyle=\footnotesize,
showstringspaces=false
}
\begin{document}
\begin{frame}[fragile]{Code}
\begin{block}
\begin{lstlisting}[firstnumber=1, caption=Getting labels, label=glabels]
class Hello {
...
}
\end{lstlisting}
\end{block}
\end{frame}
\end{document}
但是,我无法编译它来获取输出。
我的问题是:
- 如何将 listing 包与 beamer/blocks 一起使用?
- 或者我如何使用 beamer/blocks 显示带有行号列表和关键字突出显示的源代码?
答案1
Beamer 块需要标题 ( \begin{block}{_title_}
),即使它是空的 ( \begin{block}{}
)。
\documentclass{beamer}
\setbeamercolor{background canvas}{bg=yellow}
\useinnertheme[shadow]{rounded}
\usepackage{listings}
\lstset{numbers=left, numberstyle=\tiny, stepnumber=1,firstnumber=1,
numbersep=5pt,language=Java,
stringstyle=\ttfamily,
basicstyle=\footnotesize,
showstringspaces=false
}
\begin{document}
\begin{frame}[fragile]{Code}
\begin{block}{Getting labels}
\begin{lstlisting}[firstnumber=1, label=glabels, xleftmargin=10pt]
class Hello {
...
}
\end{lstlisting}
\end{block}
\end{frame}
\end{document}