Lo que he aprendido: código en un documento con pandoc

Siguiendo con nuestro plan de dominación mundial hoy vamos a poner código con sintaxis resaltada con su pie de código y su referencia usando Markdown, pandoc y pandoc-crossref. Veamos cómo.

Resulta que cuando metemos código entre las míticas ``` podemos poner como opciones el lenguaje y un pie de código:

```{.python caption="Code block"}
print 'Hello!'
```

Si además usamos el filtro pandoc-crossref podemos ponerle una etiqueta para referenciarlo en el texto, estas etiquetas tienen la estructura #lst:nombre_etiqueta:

```{#lst:codeBlock .python caption="Code block"}
print 'Hello!'
```

Al loris si usáis una plantilla hecha por vosotros porque como cuentan aquí si no tenéis esto:

$for(header-includes)$
$header-includes$
$endfor$

en el preámbulo dirá:

! LaTeX Error: Environment codelisting undefined.

y no carrulará.

Este sistema tiene un problema, usa el resaltador de sintaxis de pandoc1 y no parte las líneas. Hay que reconocerle que da un resultado de lo más cuco pero lo de las líneas me la organiza. La solución para esto es compilar con --listings, que usa el paquete listings de Latex del que ya hablamos en el pasado.

Según el manual de pandoc-crossref también tenemos que añadirlistings: true en el YAML (o con -V) para que añada el paquete.

Hala majos, ya podemos poner código por ahí y referenciarlo y hacer una lista de trocitos de código y demás cosas locas 😀

Referencias

Listing Captions With Delimited Code Blocks And Pandoc

pandoc-crossref en GitHub


  1. El resaltado de pandoc tiene esta pinta si lo pasáis a Latex, mola mil 
Anuncios

2 pensamientos en “Lo que he aprendido: código en un documento con pandoc

  1. Pingback: Lo que he aprendido: imitar a Pygments con listings | 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