Unterschiedliche Farben für jedes Argument und jeden Wert in Auflistungen

Unterschiedliche Farben für jedes Argument und jeden Wert in Auflistungen

Diese aktuelle Frage (Drucken Sie blaue Klammern in einer Sprache und schwarze in einer anderen)brachten mich dazu, mir (bis zu) zwei weitere Fragen zum Paket auszudenken listings:

  1. Gibt es eine ähnliche Option, opstyledie nureinsArgument (mit ", ,oder ;als erstes Trennzeichen und =als zweites) undeinsWert, der zu diesem Argument gehört? (mit und =als erstem Trennzeichen "oder als zweitem)?,;
  2. Ist es möglich, die verwendete Farbe mitten in der listingsUmgebung anzupassen, ohne dass diese als Kommentar oder Linie etc. auffällt? Diese Lösungen definieren alle Farben außerhalb der eigentlichen Umgebung.

Weder dielistingsHandbuchnoch dieWikiBooks-Artikelgeben keine schlüssigen Antworten (und erwähnen auch keine Makros, einschließlich, \lst@thestylemöchte ich hinzufügen), also habe ich mir angesehen listings.sty, wenig überraschend ohne Erfolg, teilweise weil die .sty-Datei in keiner Zeile Anmerkungen zur Erklärung enthält.

Der Einfachheit halber habe ich das MWE des opstyleBeispiels und des Bilds aus dem zuvor erwähnten Thread eingefügt. In meinem Fall möchte ich beispielsweise den Teil string: ()orange, den {}><;&Teil jedoch rot färben.

\documentclass{article}

\usepackage{xcolor}
\usepackage{listings}

\newcommand\opstyle{\color{red}} % <--- customise operator style here

\makeatletter

\lstset
{%
  language=C++,
  alsoletter=0123456789,% to prevent \opstyle from being applied to digits
}

% Hook into listings
\lst@AddToHook{OutputOther}{\ProcessOther@silmeth}

% helper macro
\newcommand\ProcessOther@silmeth
{%
  \ifnum\lst@mode=\lst@Pmode%     % If we're in `Processing' mode...
    \def\lst@thestyle{\opstyle}%  % ... redefine the style locally
  \fi%
}

\makeatother

\begin{document}
\begin{lstlisting}[]
int i = 0;
if(i > 1) && (1/2 < 2) {

    // one-line comment ()={}><;&

    printf("string: ()={}><;&");

    /*
      block comment ()={}><&;
    */
}
\end{lstlisting}
\end{document}

opstyle-Beispiel

verwandte Informationen