
Desejo adicionar algumas palavras-chave a algum código python inserido em um documento LaTeX. Quero fazer True
e False
aparecer amarelo e também algumas chamadas de módulo, como ttk
vermelho. Tentei usar a chamada morekeywords, mas não está funcionando para mim. Abaixo está meu 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
}}
Responder1
Você pode usar
keywords=[<number>]{<list of keywords>}
para adicionar outro conjunto de palavras-chave e depois
keywordstyle={[<number>]<style commands>},
para dar um estilo a esse novo conjunto.
Como eu não tinha as definições originais das suas cores nem do comando \ttb, no exemplo abaixo usei algumas configurações próprias, mas você pode facilmente usar suas próprias configurações; o código foi obtido aleatoriamente, apenas para este exemplo.
\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}
Observe que "ttk" está sendo tratado como uma palavra-chave de cor vermelha, conforme também foi solicitado.