Agregar palabras al lstlisting para el lenguaje Python

Agregar palabras al lstlisting para el lenguaje Python

Deseo agregar algunas palabras clave a algún código Python insertado en un documento LaTeX. Quiero que True& Falseaparezca en amarillo y también que algunas llamadas de módulos, como las ttkque aparecen en rojo. Intenté usar la llamada morekeywords, sin embargo, no me funciona. A continuación se muestra mi código LaTeX:

\newcommand\pythonstyle{\lstset{
language=Python,
basicstyle=\ttm,
otherkeywords={self},             
keywordstyle=\ttb\color{deepblue},
morekeywords={ttk}
emph={MyClass,__init__},          
emphstyle=\ttb\color{deepred},    
stringstyle=\color{deepgreen},

showstringspaces=false            
}}

Respuesta1

Puedes usar

keywords=[<number>]{<list of keywords>}

para agregar otro conjunto de palabras clave y luego

keywordstyle={[<number>]<style commands>},

para darle un estilo a este nuevo set.

Como no tenía las definiciones originales para sus colores ni para el comando \ttb, en el siguiente ejemplo utilicé algunas configuraciones propias, pero usted puede usar fácilmente sus propias configuraciones; el código fue tomado al azar, sólo para este ejemplo.

\documentclass{article}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{bera}% optional; just for the example

\lstset{
language=Python,
basicstyle=\ttfamily,
otherkeywords={self},             
keywordstyle=\ttfamily\color{blue!90!black},
keywords=[2]{True,False},
keywords=[3]{ttk},
keywordstyle={[2]\ttfamily\color{yellow!80!orange}},
keywordstyle={[3]\ttfamily\color{red!80!orange}},
emph={MyClass,__init__},          
emphstyle=\ttfamily\color{red!80!black},    
stringstyle=\color{green!80!black},
showstringspaces=false            
}

\begin{document}

\begin{lstlisting} 
def under_attack(col, queens):
    left = right = col
    for r, c in reversed(queens):
        left, right = left - 1, right + 1

        if c in (left, col, right):
            return True
    return False
    print 'This generation has {0} babies'.format(babies)
ttk.Button(buttonframe,width = 3,
           textvariable=guivars["%s %s" %(current, item)],
           command=lambda: remoteButton(current, item))
\end{lstlisting}

\end{document}

ingrese la descripción de la imagen aquí

Tenga en cuenta que "ttk" se trata como una palabra clave con color rojo, como también se solicitó.

información relacionada