我目前正在制作我的第一个 Beamer 演示文稿,所以如果这是一个非常简单的问题,请原谅。我曾尝试研究如何在 Beamer 演示文稿上显示代码。我已设法使用 来做到这一点semiverbatim
。但是,我对此并不完全满意,因为可读性太差,没有任何关键字着色等。我曾尝试使用listings
我在 LaTeX 中撰写文章时熟悉的软件包,但我没有成功。
以下是我的演讲中的一个例子:
\begin{frame}[fragile]
\begin{semiverbatim}
class DampenedPendulum(Pendulum):
def __init__(self, B, L=1, M=1, g=9.81):
super().__init__(L=1, M=1, g=9.81)
self.solve_called = False
self.B = B
\end{semiverbatim}
\end{frame}
效果还不错,但我想通过添加一些关键字颜色来提高可读性,就像在listings
包中一样。任何关于如何做到这一点的提示都将不胜感激。
下面是我使用该包尝试实现此目的的一个例子listings
:
\documentclass{beamer}
\usetheme{Boadilla}
\usepackage{listings}
\usepackage{xcolor}
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\lstdefinestyle{mystyle}{
backgroundcolor=\color{backcolour},
commentstyle=\color{codegreen},
keywordstyle=\color{magenta},
numberstyle=\tiny\color{codegray},
stringstyle=\color{codepurple},
basicstyle=\ttfamily\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2
}
\lstset{style=mystyle}
\begin{document}
\begin{frame}[fragile]
\begin{lstlisting}
class DampenedPendulum(Pendulum):
def __init__(self, B, L=1, M=1, g=9.81):
super().__init__(L=1, M=1, g=9.81)
self.solve_called = False
self.B = B
\end{lstlisting}
\end{frame}
\end{document}
这会显示编号行和背景颜色,但不显示关键字的颜色。样式代码是从 Overleaf 页面复制而来,我已多次在文章中使用它来获得漂亮的打印代码。
答案1
为了listings
了解关键字、字符串语法、数字格式、注释语法等,您需要提供语言标识符。在这种情况下,您应该添加language=Python
到\lstdefinestyle{mystyle}
。
\documentclass{beamer}
\usetheme{Boadilla}
\usepackage{listings}
\usepackage{xcolor}
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codegray}{rgb}{0.5,0.5,0.5}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{backcolour}{rgb}{0.95,0.95,0.92}
\lstdefinestyle{mystyle}{
language=Python,
backgroundcolor=\color{backcolour},
commentstyle=\color{codegreen},
keywordstyle=\color{magenta},
numberstyle=\tiny\color{codegray},
stringstyle=\color{codepurple},
basicstyle=\ttfamily\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2
}
\lstset{style=mystyle}
\begin{document}
\begin{frame}[fragile]
\begin{lstlisting}
class DampenedPendulum(Pendulum):
def __init__(self, B, L=1, M=1, g=9.81):
super().__init__(L=1, M=1, g=9.81)
self.solve_called = False
self.B = B
print(23, "is a number")
# print statements should not be in the constructor
\end{lstlisting}
\end{frame}
\end{document}