listing - Code mit mehreren Farben für keywordstyle
Verfasst: Mi 7. Sep 2022, 21:38
Hey, ich habe einen Code aus Python den ich gerne in meine Arbeit integrieren würde. Klappt alles auch soweit. Nun ist das Problem, dass ich mit den Standard Befehlen wie keywordstyle, commandstyle etc. arbeiten kann. Jedoch möchte ich dass einige Zeichen wie %,=,+,Zahlen,... auch in einer bestimmten Farbe dargestellt werden sollen. Dazu habe ich eine Möglichkeit gefunden die aber nur für % gilt und wenn ich den gleichen Code einfach nur mehrmals mit den anderen Zeichen Wiederhole funktioniert es auch nicht. Gibt es denn generell ne Möglichkeit es wie bei keywordstyle oder so zu implementieren oder wenn nicht welche Tricks könnte ich sonst anwenden um mehrere Arten von Zeichen farbig darzustellen? Mein Minimalbeispiel ist so:
Ich habe den Codezeile für das farbig machen von % fett hervorgehoben. Wie man sieht funktioniert das Grün wie es soll, das lila für % auch aber genau dass soll auch das = farbig machen. Vielen Dank
\documentclass[12pt,a4paper,oneside,ngerman]{scrbook} \usepackage[english,ngerman]{babel} \usepackage{textcomp,amsmath,amsfonts,booktabs,microtype,graphicx,enumitem,caption,nicematrix,eurosym} \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] tasks = [] for y in range(1,worksheet.nrows): tasks.append((worksheet.cell_value(y,1))) \end{lstlisting} \end{document}