我在编写的文档中使用它listings
来设置代码格式和颜色,其中包括大量 Python 代码。我希望装饰器能以特定颜色显示,但当@
用作矩阵运算符时,符号仍能正常显示。
我发现了一个黑客处理这个网站上的装饰器(不幸的是,很久以前,我似乎找不到原始帖子)使用分隔符以@
作为左分隔符和\^^M
右分隔符。以下代码成功以橙色显示装饰器,但也以橙色显示 matmul 运算符。
\documentclass{article}
\usepackage{listings}
\usepackage{tcolorbox}
\definecolor{orange}{rgb}{.9,.5,.1}
\lstset{frame=tb,
language=python,
moredelim=[s][\color{orange}]{@}{\^^M}, % show decorators in orange
showstringspaces=false,
basicstyle={\ttfamily},
tabsize=4
}
\begin{document}
\begin{lstlisting}
@decorator
def function():
A = B = np.eye(5)
A = A @ B
A @= B
\end{lstlisting}
\end{document}
如何才能保留装饰器的特定颜色,而保留操作符(即@
要么@=
)保留为黑色?我试图理解如何这个提议经过jub0bs 可以对其进行调整,但是我对它的了解listings
(以及对 LaTeX 的了解)远远不够。