Lo que he aprendido: Pandoc 1.16 y sus nuevas funcionalidades

Como ya os conté, decidí escribir la tesis en Markdown para teclear menos. Después de averiguar cómo referenciar imágenes y ecuaciones, me encontré problemilla inesperado: las imágenes quedaban gigantescas.

Pensé que este problema iba a ser insalvable y que iba a tener que regresar a Latex o, al menos, incluir Latex dentro del Markdown, cosa que me daba bastante rabia. Pero es aquí cuando entra en juego la magia del software libre: me fui de vacaciones navideñas y a la vuelta había aparecido una nueva versión de Pandoc y ¡oh sorpresa! permitía ajustar el tamaño de las imágenes. También desgracia tanto pandoc-fignos como pandoc-eqnos pero ahora os cuento como solucionamos la historieta.

Pongámonos a ello.


Lo primero que tenemos que hacer instalar Pandoc 1.16. Si estamos en Windows podemos descargarlo directamente. En el caso de GNU/Linux, la versión que está en los repositorios suele ser bastante antigua, así que no es una opción, en la página de pandoc está bien explicado.

Yo me he decantado por otra opción, aprovechando que tengo la plataforma Haskell instalada de cuando me dio por aprender Haskell. Este sistema es válido tanto para GNU/Linux como para Windows y nos permitirá instalar filtros de pandoc más adelante. Consiste en usar el gestor de paquetes de Haskell, cabal, que viene incluido en la plataforma Haskell. Abrimos una consola y hacemos lo siguiente:

cabal update # Actualizar lista de paquetes
cabal install pandoc # Instalar pandoc

Y ya tenemos la última versión de pandoc instalada1 (si no os fiáis de mí haced pandoc --version). Si al intentar usarlo no os reconoce la orden es que tenéis que añádir cabal\bin al path.

Si nos da problemas de dependencias y no nos la queremos jugar con la instalación, podemos hacer un sandbox y probar ahí:

mkdir pandoc
cd pandoc
cabal sandbox init --sandbox=. 
cabal install pandoc

Bien, ahora veamos qué cosas nuevas incluye el nuevo Markdown de pandoc. Para mí lo más importante son estas dos:

Referencias cruzadas

Se puede poner una etiqueta a las figuras y las secciones para referenciarlas más adelante, por ejemplo:

# Título {#foo}

Tal como pone en [foo](#foo)

Da como resultado:


Título

Tal como pone en foo


Como genera automáticamente referencias a los títulos de sección sería suficiente con hacer:

# Título

Tal como pone en [título]

El caso de las imágenes es similar, habría que hacer:

![Caption](ruta){#etiqueta}

Como se ve en la [imagen](#etiqueta)

La pega que yo le veo a esto es que no nos pone el número de la imagen, si no el nombre que le demos. Esto lo he solucionado con el filtro pandoc-crossref hasta que averigüe otro sistema.

Tamaño de las imágenes

Llegamos por fin al motivo que me ha llevado a escribir esta entrada: escalar las imágenes. La sintaxis para ello es:

![Caption](ruta){width=X height=Y}

Donde X e Y son las dimensiones de la imagen con su respectiva unidad que puede ser px, cm, mm, in, inch o %. Mi favorito es ![Caption](ruta){width=50%} porque es equivalente al archiconocido 0.5\textwidth de Latex.

Ahora que sabemos las cosas buenas del nuevo pandoc, conozcamos las malas: destruye por completo los filtros pandoc-fignos y pandoc-eqnos. Buscando por ahí localicé un sustituto válido: pandoc-crossref, es muy parecido a los anteriores y da opción para referenciar todo tipo de cosas. Con él arreglamos lo de no poder citar a las figuras por el número y podemos citar ecuaciones. En su readme tenéis la sintaxis explicada a la perfección así que no voy a escribirla aquí. Se instala a través de cabal, igual que hemos hecho antes:

cabal update # Actualizar lista de paquetes
cabal install pandoc-crossref # Instalar pandoc-crossref

Dicho sea de paso, pandoc-citeproc también se puede instalar así.

Solo nos queda cambiar nuestro Makefile para que use pandoc-crossref2:

¡Listo!

Espero que estas mejoras en pandoc os animen a apuntaros al texto plano 🙂

Referencias

Guía de pandoc

Pandoc-crossref

Crear sandbox


  1. Por algún motivo en Windows se me instala mejor y no me da problemas de dependencias si lo instalo con Cygwin en vez de con el terminal normal, ni idea de por qué. 
  2. Hay que poner pandoc-crossref delante de pandoc-citeproc para que funcione correctamente, no me preguntéis el motivo. 
Anuncios

2 pensamientos en “Lo que he aprendido: Pandoc 1.16 y sus nuevas funcionalidades

  1. Pingback: Lo que he aprendido: configurando el ordenador para escribir | Onda Hostil

  2. Pingback: Compilación: escribir la tesis | Onda Hostil

¡Opina sin miedo! (Puedes usar Markdown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s