von Gute*r Gȧst*in » Do 8. Sep 2022, 08:50
Bei mir funktioniert:
\documentclass[12pt,a4paper,oneside,ngerman]{scrbook}
\usepackage[english,ngerman]{babel}
\usepackage{textcomp,amsmath,amsfonts,booktabs,microtype,graphicx,enumitem,caption,nicematrix,eurosym}% min. textcomp braucht es AFAIK inzwischen nicht mehr
\usepackage{xcolor}
\usepackage{listings}
\definecolor{light-gray}{gray}{0.95}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{codegray}{rgb}{0.4,0.4,0.4}
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codered}{rgb}{0.8,0.25,0.33}
\definecolor{codeblue}{rgb}{0,0.58,0.71}
\lstset{literate={\%}{{{\color{codepurple}\%}}}1}
\lstdefinestyle{mystyle}{
backgroundcolor=\color{light-gray}, commentstyle=\color{codeblue},
stringstyle=\color{codered},
keywordstyle=\color{codegreen},
numberstyle=\tiny\color{codegray},
basicstyle=\ttfamily\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2
}
\lstset{style=mystyle}
\begin{document}
\begin{lstlisting} [language=Python,literate={=}{{{\color{codepurple}=}}}1]
tasks = []
for y in range(1,worksheet.nrows):
tasks.append((worksheet.cell_value(y,1)))
\end{lstlisting}
\end{document}
Ich vermute daher, dass du in erster Linie die Reihenfolge von Einstellungen nicht beachtet hast. Wenn du sowohl mit
\lstdefinestyle, als auch
\lstset, als auch Optionen zu
lstlisting arbeitest, dann kann es natürlich passieren, dass beispielsweise die Sprachauswahl frühere Einstellungen von
\lstset wieder überschreibt. Ebenso kann eine spätere
style-Einstellung vorherige Einstellungen, die nicht an den Stil gebunden sind, überschreiben. Wenn du also spezielle Einstellungen für Python haben willst, dann definiere einen Stil, bei dem erst die Sprache und dann die davon abweichenden Einstellungen vorgenommen werden. Oder definiere gleich eine neue Umgebung
PythonCode (Anleitung dazu beachten!), bei der alle Einstellungen wunschgemäß vorgenommen werden.
BTW: Mir gefällt übrigens die Darstellung mit
minted besser. Ob damit auch die Farbe einzelner Zeichen geändert werden kann, weiß ich aber nicht. Solche Anforderungen hatte ich noch nie. Eine weitere Alternative wäre
hvpygmentex. Das habe ich mir aber noch nicht angeschaut.
Bei mir funktioniert: [code]
\documentclass[12pt,a4paper,oneside,ngerman]{scrbook}
\usepackage[english,ngerman]{babel}
\usepackage{textcomp,amsmath,amsfonts,booktabs,microtype,graphicx,enumitem,caption,nicematrix,eurosym}% min. textcomp braucht es AFAIK inzwischen nicht mehr
\usepackage{xcolor}
\usepackage{listings}
\definecolor{light-gray}{gray}{0.95}
\definecolor{codepurple}{rgb}{0.58,0,0.82}
\definecolor{codegray}{rgb}{0.4,0.4,0.4}
\definecolor{codegreen}{rgb}{0,0.6,0}
\definecolor{codered}{rgb}{0.8,0.25,0.33}
\definecolor{codeblue}{rgb}{0,0.58,0.71}
\lstset{literate={\%}{{{\color{codepurple}\%}}}1}
\lstdefinestyle{mystyle}{
backgroundcolor=\color{light-gray}, commentstyle=\color{codeblue},
stringstyle=\color{codered},
keywordstyle=\color{codegreen},
numberstyle=\tiny\color{codegray},
basicstyle=\ttfamily\footnotesize,
breakatwhitespace=false,
breaklines=true,
captionpos=b,
keepspaces=true,
numbers=left,
numbersep=5pt,
showspaces=false,
showstringspaces=false,
showtabs=false,
tabsize=2
}
\lstset{style=mystyle}
\begin{document}
\begin{lstlisting} [language=Python,literate={=}{{{\color{codepurple}=}}}1]
tasks = []
for y in range(1,worksheet.nrows):
tasks.append((worksheet.cell_value(y,1)))
\end{lstlisting}
\end{document}
[/code]
Ich vermute daher, dass du in erster Linie die Reihenfolge von Einstellungen nicht beachtet hast. Wenn du sowohl mit [tt]\lstdefinestyle[/tt], als auch [tt]\lstset[/tt], als auch Optionen zu [tt]lstlisting[/tt] arbeitest, dann kann es natürlich passieren, dass beispielsweise die Sprachauswahl frühere Einstellungen von [tt]\lstset[/tt] wieder überschreibt. Ebenso kann eine spätere [tt]style[/tt]-Einstellung vorherige Einstellungen, die nicht an den Stil gebunden sind, überschreiben. Wenn du also spezielle Einstellungen für Python haben willst, dann definiere einen Stil, bei dem erst die Sprache und dann die davon abweichenden Einstellungen vorgenommen werden. Oder definiere gleich eine neue Umgebung [tt]PythonCode[/tt] (Anleitung dazu beachten!), bei der alle Einstellungen wunschgemäß vorgenommen werden.
BTW: Mir gefällt übrigens die Darstellung mit [ctan]minted[/ctan] besser. Ob damit auch die Farbe einzelner Zeichen geändert werden kann, weiß ich aber nicht. Solche Anforderungen hatte ich noch nie. Eine weitere Alternative wäre [ctan]hvpygmentex[/ctan]. Das habe ich mir aber noch nicht angeschaut.