
Gostaria de fazer uma lstlisting
definição de estilo, onde as strings sejam destacadas com uma cor de fundo, para destacá-las mais. Nem tenho certeza se é possível, mas deixe-me explicar.
Aqui está uma tentativa com \colorbox
, que pode lhe dar uma ideia do que eu quero:
\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}
Aqui está um exemplo de saída ao usar o estilo acima em algum JSON:
Como pode ser visto, existem vários problemas com esta abordagem:
- apóstrofos são destacados separadamente do resto do texto
- espaço em branco são alguns lugares destacados no início das linhas, onde a string ainda não foi iniciada
- as caixas de cores não são iguais em altura
- espaçamento adicional entre palavras e apóstrofos foi introduzido
É possível corrigir os problemas acima? Talvez usando tcolorbox
ou algo diferente de \colorbox
?