Estou trabalhando em algumas listagens de código LaTeX e decidi alterar meu espaçamento de quatro para dois. O problema é que há uma tonelada de listagens no meu documento (que tem aproximadamente 500 páginas)... existe alguma maneira de reformatar rapidamente todas as listagens para usar dois espaços em vez de quatro/oito/doze/... ?
Responder1
Você pode usar a literate
tecla para transformar quatro espaços consecutivos em dois espaços de saída:
\documentclass{article}
\usepackage{listings}
\lstset{literate={\ \ \ \ }{\space\space}{2}}
\begin{document}
\begin{lstlisting}[language=python]
if x is None:
print('yes')
# just a quick test that 3 spaces aren't touched
# just a quick test that 5 spaces are touched
\end{lstlisting}
\end{document}
Blocos de oito espaços são iguais a dois blocos de quatro espaços, a substituição acima por meio da literate
chave funcionará. Se precisar de mais substituições, você pode simplesmente adicioná-las, a literate
chave aceita muitas regras de substituição arbitrárias como blocos de três argumentos (o que substituir, a substituição, o número de colunas virtuais que a substituição ocupará).
\documentclass{article}
\usepackage{listings}
\lstset
{
literate=
{\ \ \ \ }{\space\space}{2}
{yes}{no}{2}
}
\begin{document}
\begin{lstlisting}[language=python]
if x is None:
print('yes')
if y is None:
print('yes again')
# just a quick test that 3 spaces aren't touched
# just a quick test that 5 spaces are touched
\end{lstlisting}
\end{document}