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
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: minted
hebt recht gut nur das hervor, was benötigt wird.
% 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 morekeywords
von anstelle von otherkeywords
hat 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}
Nochmals vielen Dank! Schöne Grüße