使用 listing 包和 beamer/block 环境来显示源代码

使用 listing 包和 beamer/block 环境来显示源代码

我使用带有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}

但是,我无法编译它来获取输出。

我的问题是:

  1. 如何将 listing 包与 beamer/blocks 一起使用?
  2. 或者我如何使用 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}

在此处输入图片描述

相关内容