Цвет фона для stringstyle в lstlisting

Цвет фона для stringstyle в lstlisting

Я хотел бы сделать lstlistingопределение стиля, где строки будут выделены фоновым цветом, чтобы они выделялись больше. Я даже не уверен, что это возможно, но позвольте мне объяснить.

Вот попытка с \colorbox, которая может дать вам представление о том, чего я хочу:

\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}

Вот пример вывода при использовании указанного выше стиля для некоторого JSON: вывод с помощью colorbox

Как видно, при таком подходе возникает ряд проблем:

  • апострофы выделены отдельно от остального текста
  • пробелы - это некоторые выделенные места в начале строк, где строка еще не началась
  • цветовые ячейки не равны по высоте
  • введены дополнительные пробелы между словами и апострофами

Возможно ли исправить вышеуказанные проблемы? Возможно, с помощью tcolorboxили чем-то другим \colorbox?

Связанный контент