Tabulaciones frente a espacios en los listados: ¿cuál es la diferencia y debería importarme?

Tabulaciones frente a espacios en los listados: ¿cuál es la diferencia y debería importarme?

Esta es una pregunta de seguimiento paraProblema con el paquete Listados relacionado con saltos de línea y alineación incorrecta. ¿Por qué tengo problemas cuando copio y pego código dentro del lstlistingentorno? ¿Debo tener cuidado con las tabulaciones o los espacios en los listados? Y si es así, ¿por qué? ¿Cómo afectan exactamente las tabulaciones y los espacios al espaciado horizontal en el código fuente compuesto con el listingspaquete?

Respuesta1

Hay otros caracteres invisibles además del carácter de espacio (código ASCII 32); uno de ellos es eltabulador, también conocido comocarácter de tabulación(código ASCII 9), que se utilizan en algunos tipos de archivos fuente; más notablemente, quizás, en archivos MAKE. Para más información sobre personajes invisibles en general, los remito a laPágina de Wikipedia sobre caracteres de control ASCII.

El listingspaquete trata los caracteres de espacio y los tabuladores de manera muy diferente, como se explica en la subsección 2.5 de la listingsdocumentación.

Es posible que obtenga resultados inesperados si sus fuentes contienen tabuladores. El paquete supone que el tabulador se detiene en las columnas 9, 17, 25, 33, etc. Esto está predefinido mediante tabsize=8. Si cambia el ocho por el número n, obtendrá paradas de tabulación en las columnas n+1,2n+1,3n+1, y así sucesivamente.

Si no quiere sorpresas, y si su código funciona solo con espacios y sin tabuladores, probablemente sea una buena idea ceñirse a los espacios y evitar los tabuladores por completo.

Supongo que estás usando un IDE de LaTeX, como texmaker, en lugar de un editor de texto, como emacs o vim. Lo más probable es que su IDE inserte un carácter de tabulación cuando Tabse presiona la tecla de forma predeterminada, pero debería haber una manera de configurarlo para insertar una cantidad fija de espacios (normalmente, 2, 4 u 8). Sin embargo, es posible que esa opción no sea retroactiva; en otras palabras, los caracteres de tabulación que ya estaban presentes en su archivo no podrán ser reemplazados por espacios simplemente activando esa opción. Es posible que tengas que buscar y reemplazar pestañas por espacios para deshacerte de todas ellas. Podría decirse que esto es propenso a errores, pero es posible que no tenga otra opción si usa un IDE. Sin embargo...

Editar(siguiendo el comentario de Barbara Beeton): ... los editores como emacs y vim tienen una función incorporada para reemplazar eficientemente todas las pestañas por espacios en el búfer actual. En emacs, tienes untabify; en vim, tienes retab(vereste).

ingrese la descripción de la imagen aquí

Los buenos editores de texto también te permiten crear caracteres invisibles (tabuladores, nuevas líneas, etc.)visible, para que sepas con qué tipo de personaje invisible estás tratando. En la imagen de arriba (captura de pantalla de un búfer vim), el símbolo indica un tabulador y el ¬símbolo indica una nueva línea.

Estas son dos razones más para dejar atrás tu IDE y comenzar a usar un editor de texto.:)

Actualizar: texmaker 4.2 (01/05/2014) ahora permite a los usuarios avanzadosampliar las funcionalidades del IDEejecutando código Javascript personalizado desde dentro. Esto abre la puerta a un script de "retab", pero supone que conoces un mínimo de Javascript.

información relacionada