好吧,这就是我每次尝试排版源代码时都会遇到的问题。到目前为止,我还没有在网上找到有人问同样的问题。
我想添加一个keywordsprefix
,以便所有以 a 开头的词&
都会突出显示为关键字。以下是说明我的问题的 MWE
\documentclass{article}
\usepackage{listings, xcolor}
\begin{document}
\definecolor{lispgreen}{RGB}{154, 228, 151}
\definecolor{lightgray}{gray}{0.97}
\definecolor{violet}{rgb}{0.8, 0, 0.7}
\lstset{language=Lisp,
basicstyle=\ttfamily\small,
numbers=left,
numberstyle=\tiny,
keywordsprefix=&,
keywordstyle=\color{lispgreen!70!black},
stringstyle=\color{violet},
showstringspaces=false,
backgroundcolor=\color{lightgray},
frame=single}
\begin{lstlisting}
(defmacro simple-incf (var &optional (amount 1))
(list setq var (list + var amount)))
\end{lstlisting}
\end{document}
现在,在类似这样的声明中&optional
,一切除了“&”符号被高亮显示,这对我来说看起来非常奇怪。也许其他人使用其他编辑器或设置,但默认情况下,我的 vim 也会高亮显示关键字前缀本身,所以这就是我每天看到的情况。
我现在的问题是,我是否可以以某种方式告诉listings
要么扩展突出显示以包括前缀,要么只是粗暴地使一个字符&
在所有地方突出显示(在这种情况下也可以解决问题)?
答案1
如果你也想突出显示关键字前缀,则必须将类别从其他到信参见表2:上市文件标准特征表。
为了实现这一点,您可以使用以下选项alsoletter
:
\documentclass{article}
\usepackage{listings, xcolor}
\begin{document}
\definecolor{lispgreen}{RGB}{154, 228, 151}
\definecolor{lightgray}{gray}{0.97}
\definecolor{violet}{rgb}{0.8, 0, 0.7}
\lstset{language=Lisp,
basicstyle=\ttfamily\small,
numbers=left,
numberstyle=\tiny,
keywordsprefix=\&,alsoletter=\&,%
keywordstyle=\color{lispgreen!70!black},
stringstyle=\color{violet},
showstringspaces=false,
backgroundcolor=\color{lightgray},
frame=single}
\begin{lstlisting}
(defmacro simple-incf (var &optional (amount 1))
(list setq var (list + var amount)))
\end{lstlisting}
\end{document}