Hintergrundfarbe für Stringstyle in Lstlisting

Hintergrundfarbe für Stringstyle in Lstlisting

Ich möchte eine lstlistingStildefinition erstellen, bei der Zeichenfolgen mit einer Hintergrundfarbe hervorgehoben werden, damit sie besser hervorstechen. Ich bin mir nicht einmal sicher, ob das möglich ist, aber lassen Sie es mich erklären.

Hier ist ein Versuch mit \colorbox, der Ihnen vielleicht eine Vorstellung davon gibt, was ich möchte:

\documentclass{article}
\usepackage{xcolor}
\usepackage{listings}

\lstdefinestyle{mypython}{
  keywordstyle=\bfseries,
  captionpos=b,
  language=Python,
  keywordstyle=\bfseries,
  identifierstyle=\color{black},
  ndkeywordstyle=\color{darkgray}\bfseries,
  commentstyle=\color{gray}\ttfamily,
  stringstyle=\color{black}\ttfamily\colorbox{black!10},
  showstringspaces=false
}
\begin{document}
\begin{lstlisting}[style=mypython]
{'timezone': 7200, 'cod': 200, 'dt': 1561470780, 'base': 'stations',
  'weather': [{'id': 804, 'icon': '04d', 'main': 'Clouds',
               'description': 'overcast clouds'}],
  'sys': {'message': 0.0076, 'country': 'DK',  'sunrise': 1561429582,
\end{lstlisting}
\end{document}

Hier ist eine Beispielausgabe bei Verwendung des obigen Stils auf JSON: Ausgabe mit Colorbox

Wie man sieht, bringt dieser Ansatz mehrere Probleme mit sich:

  • Apostrophe werden getrennt vom Rest des Textes hervorgehoben
  • Leerzeichen sind einige Stellen am Zeilenanfang, an denen die Zeichenfolge noch nicht begonnen hat
  • die Farbkästen sind nicht gleich hoch
  • Es wurden zusätzliche Abstände zwischen Wörtern und Apostrophen eingeführt

Ist es möglich, die oben genannten Probleme zu beheben? Vielleicht mit tcolorboxoder etwas anderem als \colorbox?

verwandte Informationen