Abramos la caja de herramientas
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:
-
Se reduce el tiempo de compilación ya que no se pinta todo el contenido. Por ejemplo, se sustituyen las imágenes por cajas del mismo tamaño que contienen el nombre de la imagen.
-
Permite ver más fácilmente errores como las overfull boxesLas overfull boxes ocurren a menudo porque LaTeX no sabe cómo partir una palabra (pasa mucho con las direcciones de correo electrónico y las URLs) y haga lo que haga el pobre acaba invadiendo el margen, ahí tenemos que entrar nosotros, lugares en los que el texto invade el margen, que marca con una barra.
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:
-
\blindtext
crea un trozo de texto corto. Opcionalmente le podemos dar el número de veces que queremos que repita el texto con\blindtext[REPETICIONES]
. -
\Blindtext
crea un trozo de texto largo. Puede tomar como opciones el número de párrafos y el de repeticiones con\Blindtext[PARRÁFOS][REPETICIONES]
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 pruebaViven en
/usr/share/texlive/texmf-dist/tex/latex/mwe/
si las
queréis mirar. 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 terminalSi estáis
en Windows y después
de instalar Perl no os funciona, probad latexdiff-so
,
la versión standalone. Hablé de ello un poco más en detalle
aquí.:
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:
-
Incluir con facilidad contenido creado en otros programas en LaTeX.
-
Ayudarnos a crear elementos que resultan complejos de llevar a cabo en LaTeX, como podrían ser las tablas y las portadas.
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)
Example images in LaTeX? en TexExchange
Creating a default preamble en TeXExchange
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
Anterior: Nuestras propias macros, Siguiente: La opción Pandoc [Contenido]