Ya sabemos usar LaTeX, crear documentos complejos, presentaciones y hasta macros propias. Este capítulo es un poco diferente a los anteriores ya que en lugar de averiguar cómo se hacen las cosas en LaTeX, vamos a hablar de herramientas externas y trucos que nos pueden ayudar a la hora de crear nuestro documento.
Veremos algunos paquetes que simplifican el proceso de probar el formato, cómo crear una plantilla o un registro de cambios y algunas herramientas que no pertenecen a LaTeX propiamente dicho pero que son interesantes.
Fase de pruebas
Vamos a ver dos partes del proceso de testar nuestro precioso formato: crear un borrador y generar un documento de prueba en el que podemos cambiar el formato sin necesidad de tener contenido.
Un borrador
Podemos crear un borrador del documento gracias al argumento opcional draft
de \documentclass
. Tiene dos ventajas:
Muchos paquetes tienen esta opción, cada cual con sus características concretas. Si establecemos draft
como opción de la clase afecta a todos ellos, si queremos que solo afecte a alguno, podemos darla como opción del paquete.
Texto e imágenes de prueba
Existen un par de paquetes que nos rellenan las páginas de texto sin sentido para que nos resulte más fácil ver el efecto de algún paquete u opción. El más sencillito es lipsum
, la implementación para LaTeX del típico Lorem Ipsum. No puede ser más fácil de usar:
\documentclass[draft]{article}
\usepackage{lipsum}
\begin{document}
\lipsum % Texto Lorem Ipsum completo
\lipsum[17] % El párrafo 17 será texto sin sentido
\end{document}
Otra opción un poco más potente es blindtext
, que tiene varias ventajas respecto a lipsum
:
- Depende del idioma así que se puede ver qué tal va la silabación. Ahora mismo los idiomas disponibles son inglés, francés, alemán, latín y catalán.
-
A diferencia del paquete lipsum
, que solo nos crea texto, tenemos la posibilidad de generar listas, ecuaciones y hasta un documento completo si se lo pedimos.
-
Podemos crear texto formado por pangramas, frases que contienen todas las letras del abecedario de un idioma concreto, interesante para probar tipografías. También podemos usar trozos de la Biblia, cosa que me parece absolutamente genial aunque utilidad práctica le veo menos.
Veamos ahora cómo se usa, que es un poco más complejo que lipsum
. Para crear texto tenemos dos comandos:
Podemos fabricar un documento completo, largo o corto, con y sin ecuaciones:
\blindocument
crea un documento corto, si delante activamos las matemáticas con \blindmathtrue
tendrá también ecuaciones. El documento tendrá títulos de sección de todos los niveles y varios tipos de listas.
-
\Blindocument
crea un documento largo, funciona exactamente igual que el anterior.
-
\blindmathpaper
crea un documento con ecuaciones.
Hay otras opciones para crear listas y así, en el manual lo tenéis bien explicado.
En cuanto a las imágenes, el paquete mwe
(Minimal Working Example) nos proporciona diversas imágenes de prueba de diferentes proporciones y formatos. Este paquete también nos carga graphicx
y si están instalados, lipsum
y blindtext
. No hace falta que carguemos el paquete para usar estas imágenes, las instala de tal manera que al compilar se pueda acceder a ellas.
Para usarlas simplemente las llamamos por su nombre:
\includegraphics{example-image-a}
Una plantilla
Cuando ya tengamos nuestro formato perfectamente definido, si vamos a usarlo a menudo podemos crear una plantilla a partir del documento. Todos los IDEs que yo conozco permiten exportar una plantilla a partir del documento actual, más adelante podremos importarla y tendremos una base desde la que trabajar.
Otra opción es crear nuestra propio paquete (sty) o clase (cls). Crearemos un paquete si nuestras macros valen para diferentes clases, y si, en cambio,estamos definiendo un tipo de documento, crearemos una clase. Tanto las clases como los paquetes consisten en lo que escribimos en el preámbulo de nuestros documentos formateado de otra manera.
Os pongo como ejemplo un paquete muy poco ortodoxo que nos carga los paquetes de idioma para cuando queremos escribir en español. Consistiría en el archivo español.sty
con el siguiente contenido:
% Versión de LaTeX usada
\NeedsTeXFormat{LaTeX2e}[1994/06/01]
% Nombre del paquete creado
\ProvidesPackage{español}
% Paquetes usados
\RequirePackage[utf8]{inputenc}
\RequirePackage[spanish]{babel}
\RequirePackage[T1]{fontenc}
\RequirePackage{lmodern}
Como veis, usamos \RequirePackage
en lugar de \usepackage
, pero se parece bastante a un preámbulo de toda la vida. Guardamos nuestro paquete en un lugar accesible y lo llamamos como a cualquier otro con \usepackage{español}
.
Hay más información sobre la creación de clases y paquetes en las referencias.
Cambios y versiones
Que manejemos texto plano tiene una gran ventaja: podemos fácilmente incluir software de control de versiones en nuestro flujo de trabajo. Además de las ventajas que ya tiene el control de versiones de por sí, nos permite incluir información sobre las versiones y los cambios en el propio documento
Tenemos, además, un montón de paquetes para añadir información sobre los cambios al documento. Algunos incluyen al pie o en una marca de agua la versión actual, como [gitinfo2
], con otros como [vhistory
] registramos el historial de cambios en una tabla de manera manual mediante el comando \vhEntry
:
\vhEntry{VERSIÓN}{FECHA}{AUTOR}{CAMBIOS}
Después, podemos hacer referencia a esta información en el cuerpo del documento, ya sea el número de versión o la lista de autores. Aquí tenéis el manual del paquete si queréis echarle un ojo.
Es fácil crear registro de cambios casero si usamos git
. Una manera es etiquetar los puntos más interesantes, exportar una tabla con la información deseada e incluirla en el documento mediante el comando \input{}
.
Para etiquetar podemos usar una etiqueta anotada o ligera, con la primera podemos añadirle un mensaje a la etiqueta, la ligera simplemente marca el commit anterior. Yo voy a usar etiquetas ligeras como ejemplo. Procedamos:
git tag NOMBRE
Luego, para exportar en formato LaTeX la información de cada etiqueta que hemos creado usamos algo de este estilo, dependiendo de qué queramos conseguir:
git for-each-ref --format="%(refname:short) & %(authordate:short) & %(subject) \\\\" refs/tags > log.tex
Como hemos formateado la información como si fuera el contenido de una tabla (¡mirad los separadores de columna y el salto de línea!) , lo incluimos dentro de un entorno tabular
en el que escribimos los encabezados:
\begin{tabular}{l l l}
\textbf{Versión} & \textbf{Fecha} & \textbf{Descripción} \\
& & \\
\input{log.tex} % incluir datos
\end{tabular}
Por supuesto, podríamos crear una macro, formatear la información de cualquier otro modo o incluso fusionarlo con el paquete vhistory
, simplemente os enseño mi sistema, a partir de ahí cada que haga uso de su libre albedrío.
Para automatizar esto hay varias maneras, una de ellas es escribir un hook de git
, otra es incluir la línea anterior en el Makefile, si lo estamos usando, y la más simple es modificar la orden de compilación que ejecuta nuestro IDE.
Cambiando ligeramente de tema, una manera interesante de mostrar los cambios entre dos versiones de un documento es [latexdiff
], un script de Perl que compara dos archivos de LaTeX y genera un tercer archivo destacando los cambios.
Una vez instalados Perl y latexdiff
, si no los teníamos ya, no hay más que escribir lo siguiente en la terminal:
latexdiff viejo.tex nuevo.tex > dif.tex
Si compilamos dif.tex
conseguiremos algo así:
Tacha en rojo lo que hemos borrado y destaca en azul lo que hemos añadido. Me parece especialmente útil para cuando estamos colaborando, se ve de un vistazo cómo quedan los cambios.
Por cierto, si no queréis instalar nada también hay una versión online en la que pegamos el contenido de los archivos a comparar y nos aparece el archivo de diferencias que podemos a su vez copiar y compilar.
Exportar a LaTeX
Este último apartado sobre las herramientas trata de exportar contenido que tenemos en otros formatos a LaTeX. De esta manera conseguimos dos cosas:
En el caso de las tablas se entrelazan ambas problemáticas, cuesta escribir tablas en LaTeX y, además, muchas veces tenemos esas tablas en otros formatos. Si nuestro problema es el primero, tenemos editores online con los que crear la tabla de manera visual y exportarla a continuación. Si nos pasan un poco de las dos cosas tenemos varias herramientas, la que más he usado ha sido Excel2Latex, un plugin para Excel que nos permite seleccionar y exportar una tabla concreta en formato LaTeX, la verdad es que funciona bastante bien. También hay una versión para OpenOffice, Calc2LaTeX, pero es viejecita y no sé qué tal funciona, y tenemos Matrix2LaTeX para Python y Matlab que no he usado.
Una herramienta similar es Writer2LaTeX que sirve para exportar de Libre Office Writer a LaTeX, no es la panacea pero nos puede ayudar cuando tenemos que seguir cierta plantilla y solo nos proporcionan un doc, ¿os suena esto?
Sin duda el programa definitivo para las labores de conversión es Pandoc, del que ya hemos hablado y que trataremos largo y tendido dentro de poco. Con una terminal y una orden muy sencilla transforma casi cualquier formato de texto a casi cualquier otro:
pandoc OPCIONES INPUT -o OUTPUT
Resumen
En este capítulo he mencionado diferentes herramientas útiles sin entrar demasiado en detalle para que vosotros mismos investiguéis las que mejor se adapten a vuestras necesidades. Hemos hablado de borradores, texto e imágenes de prueba, plantillas, clases y paquetes, control de versiones y sobre cómo exportar el contenido creado en otros programas a LaTeX. Evidentemente, hay muchas más herramientas relacionadas con LaTeX ahí fuera, estas son las que me han servido a mí en mi larga relación con este lenguaje de marcado tan simpático.
Referencias
What does the draft mode change? en TeXExchange
Creating a LaTeX Minimal Example (pdf)
El paquete lipsum
El paquete blindtext
Example images in LaTeX? en TexExchange
Creating a default preamble en TeXExchange
Manual de Kile (pdf)
Manual de TexStudio
LaTeX/Creating Packages en Wikibooks
LaTeX 2ε for class and package writers
Best practice for maintaining change history in tex en TeXExchange
Tracking changes in LaTeX files
Registro de cambios en un documento LaTeX con git
LaTeX packages for use with revision control
Highlighting the different between Latex Documents in Windows 7 using Latexdiff
LaTeX/Collaborative Writing of LaTeX Documents en Wikibooks
When and why should I use % !TEX TS-program and % !TEX encoding? en TeXExchange
Converting a spreadsheet to LaTeX