Lo que he aprendido: márgenes y fuentes en Pandoc

Hoy he aprendido a establecer las fuentes y los márgenes de un documento escrito en Markdown que luego se convierte a pdf con Pandoc. Es simplemente una cuestión de enviarle unas variables a Pandoc cuando compilamos, o bien con la opción -V, en el bloque YAML o en el archivo de metadatos. Voy a usar el bloque YAML en todos los casos, pero las tres opciones son igual de válidas.

Fuentes

Aquí hay dos posibilidades, según usemos pdflatex o xelatex para compilar, debido a que los dos compiladores gestionan las fuentes de manera diferente.

En el caso de pdflatex, usamos la variable fontfamily para establecer la fuente. Por ejemplo, para cambiar a DejaVu añadiríamos lo siguiente al bloque YAML:

---
fontfamily: dejavu
---

El lío en este caso es que necesitamos tener instalado el paquete correspondiente a la fuente que queramos utilizar. Si estamos en una distro basada en Debian, muchas de ellas viven en texlive-fonts-extra. Podemos, por ejemplo, buscar en el catálogo una fuente que nos interese y localizar el paquete correspondiente con:

apt-cache search FUENTE texlive

Para xelatex, en cambio, podemos usar cualquier fuente del sistema a través del paquete fontspec, lo cual es una ventaja. En este caso usamos la variable mainfont para la fuente principal del texto. Por ejemplo, para pasar a Liberation Sans (siempre que la tengamos instalada en el sistema, claro) hacemos:

---
mainfont: LiberationSans
---

Con las opciones de la fuente podemos definir también la fuente para la negrita o la cursiva:

---
mainfont: Fuente_normal
mainfontoptions:
- BoldFont=Fuente_negrita
- ItalicFont=Fuente_cursiva
---

Luego tenemos que recordar decirle a Pandoc que queremos usar xelatex para compilar, si no no habrá valido de nada:

pandoc input.md --latex-engine=xelatex -o output.pdf

Márgenes

Los márgenes los cambiamos usando el paquete geometry, pasando los valores como opción. Básicamente lo que vamos a hacer es establecer las variables opcionales del paquete. Si vamos a la plantilla de Pandoc para LaTeX1 veremos que pone algo así:

$if(geometry)$
\usepackage[$for(geometry)$$geometry$$sep$,$endfor$]{geometry}
$endif$

Es decir, si estamos usando geometry, Pandoc cogerá sus valores y los meterá como opciones al paquete.

Por lo tanto, para establecer el valor de todos los márgenes haríamos:

---
geometry: margin=1in
---

Para dar valores diferentes a cada margen no tenemos más que usar diferentes variables, por ejemplo:

---
geometry:
- top=1in
- bottom=1in
- right=0.5in
- left=1.5in
---

Las diferentes opciones de configuración están en el manual del paquete geometry.


Pues no os cuento más por hoy. Espero que os resulte útil 🙂

Referencias

Manual de Pandoc


  1. Recordemos que podemos extraerla con pandoc -D latex 
Anuncios

¡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