我正在写一篇论文,我想插入一些 Python 代码。问题是我想要绿色的文档字符串和灰色的注释。我该怎么做?
我知道如何改变注释的颜色,但是我无法区分注释和文档字符串。
到目前为止,我的尝试是
\documentclass{article}
\usepackage{xcolor}
\usepackage{listings}
\definecolor{cgreen}{rgb}{0,0.6,0}
\definecolor{cgray}{rgb}{0.5,0.5,0.5}
\definecolor{cpurple}{rgb}{0.58,0,0.82}
\definecolor{cwhite}{rgb}{1,1,1}
\lstdefinestyle{mystyle}{
backgroundcolor=\color{cwhite},
commentstyle=\color{cgreen},
keywordstyle=\color{cpurple},
numberstyle=\tiny\color{cgray},
stringstyle=\color{cpurple},
basicstyle=\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2
}
\lstset{style=mystyle,language=Python}
\begin{document}
\begin{lstlisting}
def inici():
"""This must be green"""
tauler=[[0,0,0],[0,0,0],[0,0,0]] #And this must be gray
return tauler
\end{lstlisting}
\end{document}
通过我的示例,所有(注释和文档字符串)都是绿色的。
答案1
请注意,xcolor 包预定义了大多数常见颜色。默认紫色非常红,默认绿色非常黄,但默认白色就是白色,默认灰色与你的灰色基本相同,所以我建议使用内置颜色。
无论如何,您可以使用moredelim
键来指定诸如的分隔符"""
。
\documentclass{article}
\usepackage{xcolor}
\usepackage{listings}
\definecolor{mygreen}{rgb}{0,0.6,0}
\definecolor{mypurple}{rgb}{0.58,0,0.82}
\lstdefinestyle{mystyle}{
commentstyle=\color{gray},
keywordstyle=\color{mypurple},
numberstyle=\tiny\color{gray},
basicstyle=\footnotesize,
keepspaces=true,
numbers=left,
numbersep=5pt,
moredelim=**[s][\color{mygreen}]{"""}{"""}
}
\lstset{language=Python,style=mystyle}
\begin{document}
\begin{lstlisting}
def inici():
"""This must be green"""
tauler=[[0,0,0],[0,0,0],[0,0,0]] #And this must be gray
return tauler
\end{lstlisting}
\end{document}
答案2
该扩展piton
直接检测文档字符串,即由"""
(参见 PEP 257) 指定的字符串。因此,可以为字符串、注释和文档字符串指定不同的样式。
\documentclass{article}
\usepackage[svgnames]{xcolor}
\usepackage{piton}
\begin{document}
\SetPitonStyle
{
Comment = \color{gray} ,
String.Doc = \color{DarkGreen}
}
\begin{Piton}
def inici():
"""This is a doc-string"""
tauler=[[0,0,0],[0,0,0],[0,0,0]] #This is a comment
return """This is a long string which is not a doc-string"""
\end{Piton}
\end{document}
该扩展piton
需要 LuaLaTeX,但不需要外部程序(您不需要--shell-escape
)。