将 Python 的装饰器设置为某种颜色,但保持 @ 作为运算符不变

将 Python 的装饰器设置为某种颜色,但保持 @ 作为运算符不变

我在编写的文档中使用它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 的了解)远远不够。

相关内容