Creando un curriculum con Markdown, pandoc y wkhtmltopdf

Markdown-mark
Recientemente estoy en búsqueda de nuevos horizontes y decidí que era tiempo de actualizar mi curriculum, tarea que desde cualquier punto de vista me parece aburrida.

Ya que no es la primera vez que realizo un curriculum, tenia algunas versiones desactualizadas en ODT, otra más reciente en LaTeX y lo más actualizado en mi perfil en LinkedIn. Sin embargo, estos abordajes presentan los siguientes problemas:

  1. Dependiendo del destinatario es necesario entregar una versión impresa y/o PDF. Esto es un problema especialmente con LinkedIn ya que al generar un PDF todas las paginas quedan con sellos de agua si no tienes usuario premium.
  2. Mantener un curriculum en varios idiomas es complicado con LaTeX ya que las etiquetas multilenguaje son un tanto complejas y una vez que se tiene la información en LaTeX es complicado moverla hacia otro lugar (como por ejemplo LinkedIn o el no tan popular Xing).
  3. Al contrario de lo que sucede en LaTeX, hacer curriculums en LibreOffice y/o Word  tiene inconvenientes al editar, un enter en un mal lugar y adiós a tu bello curriculum. Además también hay complicaciones para convertirlo a otros formatos (HTML, LinkedIn).

Con todas estas limitantes decidí que lo mejor era mantener mi curriculum en un archivo de texto plano que fuera legible a simple vista y pudiera ser transformado a otros formatos. Luego de evaluar algunas alternativas como Textile o reStructuredText, decidí utilizar el viejo Markdown porque básicamente es el único que conozco sin ver el manual.

La ventaja de utilizar Markdown es la posibilidad de convertirlo hacia TeX, HTML o PDF utilizando pandoc, y al estar toda la información en texto plano es más fácil copiar y pegarla desde/hacia sitios como LinkedIn.

Creando el curriculum

Ya que GitHub soporta su propia versión de Markdown el lenguaje es bastante popular y soportado por muchos editores. Incluyendo los tradicionales Gedit, Sublime Text, Emacs y como no . . . también el único y verdadero. Asi pues el verdadero problema es elegir cual versión de Markdown utilizar, ya que la versión original, no es la misma que la de GitHub, ni tampoco la versión soportada por pandoc, siendo las mayores diferencias la creación de estructuras complejas como tablas o secciones al transformar hacia HTML.

Suponiendo que utilizaremos un markdown universal la estructura básica del curriculum es crear encabezados y agregar los items en forma de listas, por ejemplo:

1
2
3
4
5
6
7
8
9
10
11
# Educación
- Ph.D. en resitencia revolucionaria por la pachamama, FLACSO, 2014
- M.A. en mercantilismo disfrazado de libre mercado, Universidad Francisco Marroquin, 2011
- B.A. en comunismo avanzado, Universidad de San Carlos de Guatemala, 2004
 
# Intereses
Construccion de guarimbas, uso de alteregos en redes sociales para la popularización ideologica, calculo estadistico de entregas de pizza.
 
# Experiencia
- 2013-14: Ejecutivo de entregas
MAPA (Mandados a pie y autobús)

Con un poco de paciencia, se logra un archivo legible a simple vista y bastante bonito.

Generando el archivo HTML

El archivo escrito en markdown puede ser convertido hacia HTML con pandoc. Algunas de las ventajas de pandoc es la posibilidad de utilizar varios archivos fuente, adjuntar hojas de estilo css o incluso adjuntar otros archivos HTML creados previamente. Complicando un poco las cosas, quería emular el estilo de la plantilla que utilizaba con mi curriculum en TeX y afortunadamente alguien ya había tenido la misma idea con lo cual solo modifique la hoja de estilo para retirar algunas cosas y tener el color que a mi me gustaba :). Una vez lista la hoja de estilo, basta con utilizar pandoc con algunas opciones.

1
pandoc --standalone --from markdown --to html -c style.css -o index.html resume.md

Y listo, tenemos un curriculum en HTML.

Generando un archivo PDF

Aunque pandoc soporta la generacion a TeX y posteriormente a PDF a partir de un archivo markdown, uno de los problemas es que no es posible utilizar una hoja de estilo. Sin embargo el archivo pdf puede ser facilmente generado a partir del html utilizando wkhtmltopdf, con un simple comando.

1
wkhtmltopdf -L 20mm -R 20mm index.html resume.pdf

Y bueno, el resultado es bastante similar al HTML, con una conveniente tabla de contenidos generada a partir de los encabezados definidos en el original en markdown.

Automatizando la generación de los archivos
Confieso que al ejecutar el comando varias veces para ver el resultado me pregunte a mi mismo si estaba pedo siendo impractico, así que decidí crear un Makefile con varios targets, para generar tanto los archivos html como pdf a partir de varios archivos fuente en varios idiomas, el cual copio textualmente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
PAN=pandoc
WKHTML=wkhtmltopdf
RESUME=resume
INDEX=index
STYLE=style.css
SOURCE=resume
LINGUAS="" -es -pt_BR
 
 
all:	html pdf
 
git-%:	html pdf
	git add -A
	git commit -m "$(@:git-%=%)"
	git push origin master
 
html:
	$(foreach lingua,$(LINGUAS),$(PAN) --standalone --from markdown --to html -c $(STYLE) -o $(INDEX)$(lingua).html $(SOURCE)$(lingua).md;)
	# $(SOURCE)-$(lingua).md
 
pdf:
	$(foreach lingua,$(LINGUAS), $(WKHTML) -L 20mm -R 20mm $(INDEX)$(lingua).html $(RESUME)$(lingua).pdf; )
 
view:	html
	xdg-open $(INDEX).html
 
clean:
	rm -rf *.pdf *.html

En resumen el makefile contiene un target para generar los archivos pdf, otro para generar los archivos html, un target que ejecuta ambos, un target especial para solo generar los html y posteriormente abrirlos en el navegador, un target para publicar los cambios en un repositorio git y el clasico target para limpiar todo.

Mi curricumlum completo esta disponible en GitHub, algo curioso es que al utilizar un Markdown relativamente universal sin estructuras complicadas mis archivos son correctamente compilados por GitHub y pueden verse desde el propio GitHub :D.

2 respuestas a “Creando un curriculum con Markdown, pandoc y wkhtmltopdf”

  1. Chromium 17.0.963.56 Chromium 17.0.963.56 Ubuntu Ubuntu
    Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.22+ (KHTML, like Gecko) Chromium/17.0.963.56 Chrome/17.0.963.56 Safari/535.22+ Trisquel GNU/Linux/Toutatis 6.0 (3.4.1-0ubuntu1+6.0trisquel1) Epiphany/3.4.1

    Esta bien alucinante. Bro

  2. Firefox 28.0 Firefox 28.0 Windows XP Windows XP
    Mozilla/5.0 (Windows NT 5.1; rv:28.0) Gecko/20100101 Firefox/28.0

    Estoy pensando en actualizar mi curriculum que hice en Word hace unos años, esto me va a servir de mucho para lo que tengo en mente.
    Por cierto, algunos caracteres de resume.md no se ven bien a menos que le cambie la codificación a mano, quizás podrías indicar la codificación del archivo en .htaccess para que se vea directamente en UTF-8.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *