列表列表中字符串样式的背景颜色

列表列表中字符串样式的背景颜色

我想定义一个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

相关内容