LaTeX não me permite adicionar espaços em strings em lstlistings

LaTeX não me permite adicionar espaços em strings em lstlistings

Estou tentando adicionar algum código ao meu documento, mas sempre que há um espaço dentro de uma string no código, ele aparece com uma coisa de balde (?). Forneci o código e a saída abaixo:

\documentclass[a4paper]{article}

\usepackage{listings}
\begin{document}

\section*{Code}
\begin{lstlisting}[language=python]
# comment
a = 24
print (a)
string = "some string"
\end{lstlisting}

\end{document}

espaço dentro da string dentro de lstlisting substituído por este símbolo

Responder1

Isso não é um bug, é um recurso! Com suas configurações atuais, os espaços dentro de uma string serão visualizados usando este "balde", como você o chama. Isso pode ser especialmente útil se você tiver mais de um espaço.

Se você não quiser, você pode desativá-los configurando showstringspaces=false, seja apenas para sua listagem atual (opção 1) ou para todo o documento (opção 2).

\documentclass[a4paper]{article}

\usepackage{listings}
%\lstset{showstringspaces=false} % option 1

\begin{document}
\section*{Code}
\begin{lstlisting}[
    language=python,
    showstringspaces=false, % option 2
]
# comment
a = 24
print (a)
string = "some string"
\end{lstlisting}
\end{document}

Resultado

Você pode até habilitar isso para espaços "normais", ou seja, fora de strings, configurando showspaces=true, se desejar.

informação relacionada