我正在处理一个包含大量 Python 代码片段的文档,其中许多代码片段都包含数字文字。例如:
var_a = 3
var_b = 20000
var_c = 1.75e12
var_d = 0.1415
在本文档中很常见。请注意,StackExchange 的语法突出显示将数值呈现为橙色。我试图listings
重现这种行为。我有一个样式声明,如下所示:
\lstdefinestyle{mystyle}{
language=python,
alsoletter={1234567890},
emph={1,2,3,4,5,6,7,8,9,0},
emphstyle=\color{orange}
}
这似乎几乎可以正常工作。我正确地将个位数以橙色突出显示,但多位数则不能(当然浮点数或科学计数法中的数字也不能)。因此,在上面的示例代码片段中,只有第一行可以正确突出显示。
是否有可能listings
以更符合预期的方式突出显示数字?如果浮点数和科学计数法不可用,那么如果可以让它仅处理多位整数,我会很高兴。
答案1
试试这个代码。这是一个非常简单的解决方案。请参阅评论中提到的链接,以及更改数字和特殊单词的颜色以获得更全面的解决方案。
\documentclass{article}
\usepackage{listings}
\usepackage{xcolor}
\renewcommand{\lstlistingname}{Phyton code}
\lstdefinestyle{mystyle}{
language=Python,
captionpos=b,
}
\lstset{style=mystyle}
\newcommand\digitstyle{\textcolor{orange}}
{0}{{{\digitstyle0}}}1
{1}{{{\digitstyle1}}}1
{2}{{{\digitstyle2}}}1
{3}{{{\digitstyle3}}}1
{4}{{{\digitstyle4}}}1
{5}{{{\digitstyle5}}}1
{6}{{{\digitstyle6}}}1
{7}{{{\digitstyle7}}}1
{8}{{{\digitstyle8}}}1
{9}{{{\digitstyle9}}}1
{.}{{{\digitstyle.}}}1
}
\begin{document}
\begin{lstlisting}[language=Python, caption=Highlighting numeric literals.]
var_a = 3
var_b = 20000
var_c = 1.75e12
var_d = 0.1415
\end{lstlisting}
\end{document}