当我尝试编译我的 Beamer 幻灯片(下面是精简的代码)时,遇到以下错误:
! Improper alphabetic constant.
<to be read again>
\relax
l.1 \begin{python}
Beamer 幻灯片代码包含列表语法高亮自定义,如下所示。可能出了什么问题?
\documentclass{article}
\usepackage{listings}
\newcommand\pythonstyle{\lstset{
language=Python,
otherkeywords={self,},
}}
\lstnewenvironment{python}[1][]{
\pythonstyle
\lstset{#1}
}{}
\begin{document}
\begin{python}
import multiprocessing
\end{python}
\end{document}
答案1
删除 90% 或更多完全不相关的代码后,我们剩下以下损坏的代码块:
\documentclass{article}
\usepackage{listings}
\newcommand\pythonstyle{\lstset{
language=Python,
otherkeywords={self,},
}}
\lstnewenvironment{python}[1][]{
\pythonstyle
\lstset{#1}
}{}
\begin{document}
\begin{python}
import multiprocessing
\end{python}
\end{document}
注释掉该行后otherkeywords={self,},
问题就消失了,因此合理的猜测是问题出在 self 后面的逗号上。果然,删除逗号就可以解决问题。