区分注释和文档字符串

区分注释和文档字符串

我正在写一篇论文,我想插入一些 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)。

上述代码的输出

相关内容