lstlisting の文字列スタイルの背景色

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 で使用した場合の出力例を次に示します。 カラーボックスで出力

ご覧のとおり、このアプローチにはいくつかの問題があります。

  • アポストロフィはテキストの残りの部分とは別に強調表示されます
  • 空白は、文字列がまだ始まっていない行の先頭で強調表示されている場所です。
  • カラーボックスの高さが等しくない
  • 単語間のスペースとアポストロフィが追加されました

上記の問題を修正することは可能ですか?tcolorboxまたは 以外の何かを使用するのでしょうか\colorbox?

関連情報