Por qué LaTeX mola
Siguiendo con la saga de por qué me gustan unos y otros lenguajes, he llegado a uno que no es propiamente un lenguaje de programación, sino un lenguaje de maquetación.
A menudo conocido como un lenguaje de geeks, apenas utilizado fuera del ambiente universitario, LaTeX es uno de los lenguajes más curiosos que conozco.
Qué es LaTeX
LaTeX es un lenguaje de maquetación. Eso significa que me permite indicar cómo quiero que quede un documento. Así, a grosso modo, es como el Writter de LibreOffice pero todo en texto.
Una vez escrito un proyecto, es necesario compilarlo para obtener el documento final.
A nivel más técnico, LaTeX es un conjunto de macros escritas sobre TeX. Así que si algo no se puede hacer con LaTeX… seguro que sí que se puede hacer con TeX. Aunque el precio a pagar puede ser excesivo en tiempo…
Y una breve reseña histórico-anecdótica: LaTeX fue ideado por Leslie Lamport y TeX por Donald Knuth. Donald Knuth quería escribir una enciclopedia sobre el análisis de algoritmos, titulada ‘The Art of Computer Programming’, y no encontraba ningún sistema de maquetación que se adecuara a sus necesidades. Así que escribió MetaFont para definir las fuentes y TeX para maquetar los libros. Y como tiene el humor peculiar de los matemáticos, las versiones de MetaFont y TeX crecen de forma asintótica al número “e” y “pi”; actualmente la versión de MetaFont es la 2.718281 y la de TeX, la 3.141592.
Por qué LaTeX mola
Sólo texto
Cuando escribimos un documento LaTeX, utilizamos exclusivamente archivos de texto plano. Esto permite escribirlos desde cualquier editor y plataforma. Basta abrir el archivo y comenzar a escribir.
Se puede guardar en un DVCS
Dado que sólo es texto, se puede guardar en un sistema de control de versiones, pudiendo comparar versiones, realizar backups, comprobando quién realizó qué cambio, mezclar cambios en edición colaborativa, etc.
Modular
Un proyecto LaTeX se puede dividir en distintos ficheros e ir importándolos. Así alguien puede estar editando uno de los archivos y otra persona puede editar otro, se pueden reutilizar archivos en distintos proyectos, etc.
Compartible
Además, al ser archivos de texto plano, resulta sencillo compartirlos y enviarlos por internet. Y son baratos de almacenar. Cualquiera puede volver a generar el documento, tanto original como con otro estilo diferente.
Separación de capas
LaTeX separa el diseño del contenido. De esta manera puedes centrarte en lo que estás haciendo: si estás escribiendo, no tienes que preocuparte del diseño y viceversa.
Además, esta separación permite la reutilización del estilo y/o del contenido.
Y una ventaja más de la separación: como el contenido y el estilo no están ligados, el resultado final será mucho más homogéneo que con otro tipo de herramientas.
Y otra más: Si escribes primero el contenido, puedes cederlo a los revisores para que realicen su trabajo mientras que te dedicas a maquetar. El estilo por defecto de LaTeX es suficientemente elegante como para usarse.
Versatilidad
No hay ninguna característica de un documento que no soporte:
- marcas de corte
- espaciado para encuadernación
- escalado de las páginas
- hipenación (separación de palabras al llegar al final de línea)
- cualquier conjunto de caracteres (chino, ruso, griego, árabe, …)
- escritura de música
- fórmulas matemáticas (y puedo decir que es especialmente eficiente en esto)
- ¡Hasta hay módulos para describir partidas de ajedrez!
Formatos
Dado que hasta el final no decides en qué formato lo quieres, puedes generar distintos formatos: PDF, PS, PCL, HTML, … LaTeX es independiente del formato final.
Compatible
Todas las versiones son compatibles con lo anterior. Y si hay alguna incompatibilidad, el compilador te dirá dónde está el problema y resulta relativamente sencillo adaptarlo para que compile… aunque perdamos alguna característica o no quede exactamente igual que el original. Pero al menos tendremos la base del documento.
Dispuesto a ayudarte
LaTeX te quita tareas repetitivas. Cuando yo entregaba mis trabajos de Universidad escritos en Word, siempre tenía que pelearme con las imágenes: desaparecían, no se imprimían, se movían, …
Con LaTeX no ocurre eso. Tú le indicas las características más esenciales de las imágenes y LaTeX decidirá la posición más correcta para la imagen dentro del documento, en función de dónde se referencie a la misma. ¿No os parece horrible leer un documento que tiene demasiado espacio al pie de la página porque ahí va una imagen y Word ha decidido mandarla a la página siguiente? Pues eso no pasa con LaTeX (a no ser que lo fuerces, claro).
Además, permite la generación automática de lo que te dé la gana: índice, índice de imágenes, índice de tablas, índice de código, bibliografía referenciada en el documento, palabras clave del documento,… Y todas con referencias a las apariciones. Olvídate de esos índices que no están actualizados o de hacerlo tú a mano.
Tiene diccionarios para facilitarnos la separación de palabras cuando es necesario dividir una palabra, pero nos permite definir nuestras propias palabras por si el diccionario falla. Por experiencia diré que esto no suele ocurrir, salvo cuando utilizas términos en otro lenguaje distinto del original.
Elegante
LaTeX realiza numerosas optimizaciones para que el resultado final sea agradable a la vista: un espaciado diferente para los puntos suspensivos, una separación entre letras y palabras ligeramente distinta para que no se note cuando el texto está justificado, menos espacio en los puntos de las siglas que en los de puntos y seguido, conjuntos de caracteres vectorizados que permiten cualquier tamaño de letra sin pixelarse,…
Evitará automáticamente que un título quede aislado en una página, separado del resto del código. La cantidad de texto que debe utilizarse también se elegirá automáticamente.
Gratis
Pues sí, y toda esta maravilla es completamente gratuíta.
Libre
Salvo por un pequeño detalle… Es decisión de Donald Knuth que cuando muera, la versión de TeX pasará a ser la “pi” y no se podrá realizar ninguna modificación adicional utilizando el mismo nombre.
Así que, si quieres colaborar o forkearlo, no es un problema.
Cualquier tipo de documento
Soporta cualquier tipo de documento: artículos, libros, transparencias,… Y no funcionará peor si el resultado es terriblemente grande. Es evidente que tardará algo más en compilar, pero este problema se puede solucionar fácilmente con trucos tan simples como no importar (temporalmente) algunas secciones, ignorar índices o crear borradores.
Edición on-line
No hace mucho descubrí una web que permite escribir LaTeX colaborativamente: ShareLaTeX. Apesar de la existencia de este editor on-line, yo sigo prefiriendo editar LaTeX con GNU/Emacs, ya que me ofrece un montón de shortcuts que ya me conozco XD.
Estructuras de control y bucles
Como todo lenguaje, LaTeX tiene estructuras de control y bucles. De esta manera puedes evitarte escribir código repetitivo. Por supuesto, también tiene variables.
Generable
Al ser texto plano, es fácil crear plantillas en cualquier lenguaje y utilizarlas para crear documentos. No es necesario ningún tipo de API ni servicio en segundo plano: sólo simples plantillas.
Por qué LaTeX no mola
No es WYSIWYG
Al tener separada la apariencia del contenido, mientras escribimos el contenido no veremos cómo va a quedar el resultado final.
Lo he puesto entre las desventajas, ya que es lo más criticado de LaTeX, pero también lo he puesto cerca de las ventajas porque, para mí, es una de las mayores ventajas. Por mucho que me esmere en centrarme en el contenido, cuando veo el resultado final, me es imposible no editar este o aquel estilo. Al ver sólo el contenido, esto no pasa, y me centro más en escribir sin distraerme con minucias del estilo que ya revisaré al final.
Curva de aprendizaje
Es terrible. La lista de órdenes que se pueden utilizar es interminable y puede llevar más de un dolor de cabeza. Pero no se podía tener una maravilla semejante sin algún precio a pagar.
Conclusiones
Apesar de tener pocas cosas en contra, hay que admitir que son factores de peso.
Yo llegué a LaTeX rebotado de Word, y me costó mucho comenzar a hacer algo medianamente decente. Poco a poco fui adentrándome en los entresijos hasta manejarme con soltura gracias a mi Proyecto Fin de Carrera.
Lo más complejo que he hecho en LaTeX es mi propio currículum. Consiste en un archivo con muchas variables que me permiten activar o desactivar opciones y, en función de éstas, se genera el currículum: idioma, con descripciones cortas o detalladas, con todos los cursos o sólo los más importantes,… He intentado hacer este tipo de cosas con otros editores diferentes y el resultado ha sido desastroso. Sin embargo con LaTeX apenas requiere esfuerzo extra.
Conseguir una plantilla más o menos decente suele ser algo complejo, aunque para eso está internet, claro. Una vez se tiene el documento base, sólo te tienes que dedicar a escribir. Y esa parte es realmente sencilla. Conozco un caso en el que le dejaron todo preparado para escribir a una amiga que estudiaba magisterio; pues la chica escribió todo el documento y, a la hora de compilar, no hubo ni un sólo fallo. Tal cual se compiló, se entregó. Y le gustó.
Si algo tengo claro es que cuando quiero hacer un documento gualdrapa, uso HTML, pero si quiero hacer algo chulo, usaré LaTeX.