Listings verwendet Schlüsselwörter, wo sie nicht verwendet werden sollten

Listings verwendet Schlüsselwörter, wo sie nicht verwendet werden sollten

Ich möchte Python-Code in eine LaTeX-Datei implementieren. Ein minimalistisches Beispiel folgt

\documentclass[12pt]{report}

\usepackage{listings}
\usepackage[dvipsnames]{xcolor}

\begin{document}
\newcommand\pythonstyle{\lstset{
language=Python,
basicstyle=\scriptsize,
backgroundcolor=\color{lightgray},
otherkeywords={self,with,as},
keywordstyle=\color{NavyBlue},
commentstyle=\color{OliveGreen},
emph={MyClass,__init__,In,Out},
emphstyle=\color{red}
showstringspaces=false,
}}

{\pythonstyle\begin{lstlisting}
# with my current listing, this is not working as inteded

import pandas as pd

data = pd.DataFrame()
\end{lstlisting}}


\end{document}

Dies führt zu der folgenden Ausgabe

Tex-Dateiausgabe

Was kann ich tun, damit der Schlüsselwortstil nur auf ganze Wörter angewendet wird und nicht auf jeden Fall, den Tex findet, auch nicht innerhalb einiger Wörter?

Antwort1

Nur als Alternative: mintedhebt recht gut nur das hervor, was benötigt wird.

geprägtes Beispiel

% arara: pdflatex: {shell: yes}
\documentclass[12pt]{report}

\usepackage{minted}
\usepackage[svgnames]{xcolor}

\usemintedstyle{vs}
\setminted{bgcolor=GhostWhite!90!gray}

\begin{document}

\begin{minted}{python}
# with my current listing, this is not working as inteded

import pandas as pd

data = pd.DataFrame()
\end{minted}


\end{document}

Antwort2

Ein genauerer Blick in die Dokumentation der Listings hat gezeigt, dass ich die falschen Optionen verwende. Dort steht, dass (Quelle):

[...]

andereSchlüsselwörter={〈Schlüsselwörter〉}

Definiert Schlüsselwörter, die andere Zeichen enthalten oder mit Ziffern beginnen. Jedes angegebene „Schlüsselwort“ wird im Schlüsselwortstil gedruckt, ohne jedoch den Status „Buchstabe“, „Ziffer“ und „Sonstiges“ der Zeichen zu ändern. Dieser Schlüssel dient zum Definieren von Schlüsselwörtern wie =>,->,-->,--,:: usw. Wenn ein Schlüsselwort eine Teilfolge eines anderen ist (wie -- und -->), müssen Sie zuerst das kürzere angeben.

[...]

Die entsprechende Option war morekeywords. Die Verwendung morekeywordsvon anstelle von otherkeywordshat mein Problem gelöst! @Dr.ManuelKuehner, das dürfte für Sie interessant sein! @TeXnician, trotzdem danke für Ihre alternative Lösung!

\documentclass[12pt]{report}

\usepackage{listings}
\usepackage[dvipsnames]{xcolor}

\begin{document}
\newcommand\pythonstyle{\lstset{
language=Python,
basicstyle=\scriptsize,
backgroundcolor=\color{lightgray},
morekeywords={self,with,as},
keywordstyle=\color{NavyBlue},
commentstyle=\color{OliveGreen},
emph={MyClass,__init__,In,Out},
emphstyle=\color{red}
showstringspaces=false,
}}

{\pythonstyle\begin{lstlisting}
# with my current listing, this is not working as inteded

import pandas as pd

data = pd.DataFrame()
\end{lstlisting}}


\end{document}

Richtiges Ergebnis

Nochmals vielen Dank! Schöne Grüße

verwandte Informationen