¿Cómo cambiar rápidamente el espaciado del listado para usar dos espacios en lugar de cuatro?

¿Cómo cambiar rápidamente el espaciado del listado para usar dos espacios en lugar de cuatro?

Estoy trabajando en algunos listados de códigos LaTeX y he decidido cambiar mi espaciado de cuatro a dos. El problema es que hay un montón de listados en mi documento (que tiene ~500 páginas)... ¿hay alguna manera de que pueda reformatear rápidamente todos los listados para usar dos espacios en lugar de cuatro/ocho/doce/... ?

Respuesta1

Puede utilizar la literatetecla para convertir cuatro espacios consecutivos en dos espacios de salida:

\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}

ingrese la descripción de la imagen aquí

Los bloques de ocho espacios son iguales que dos bloques de cuatro espacios; el reemplazo anterior mediante la literateclave funcionará. Si necesita más reemplazos, simplemente puede agregarlos, la literateclave toma muchas reglas de reemplazo arbitrarias como bloques de tres argumentos (qué reemplazar, el reemplazo, la cantidad de columnas virtuales que ocupará el reemplazo).

\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}

ingrese la descripción de la imagen aquí

información relacionada