md-to-pdf-exams: Crea exámenes en Markdown y genera PDFs automáticamente

Como muchos profesores de informática, he ido saltando de un sistema operativo a otro. Pero en mi caso, me he quedado usando los tres de normal: Windows, macOS y Fedora.

Si bien ser “multiplataforma” me ayuda a probar bien el desarrollo en Flutter, me ha obligado a buscarme soluciones que funcionen independientemente del sistema que esté usando en ese momento.

Durante muchos años, Microsoft Office fue mi herramienta principal para crear contenido para clase. Funciona perfectamente en Windows y macOS, pero cuando me pasé a Linux, las alternativas disponibles simplemente… no estaban a la altura, por decirlo así. LibreOffice es funcional, pero la compatibilidad y el resultado final no son comparables. ONLYOFFICE está bien, pero me ha dado también algún que otro problema si quieres compatibilidad entre sistemas operativos.

Hace aproximadamente un año encontré una solución para las presentaciones: MARP. Me permite crear presentaciones en Markdown que se exportan a PDF o HTML con resultados muy decentes. Algún día subiré mi plantilla personalizada, pero esa es otra historia.

Este curso me planteé un nuevo reto: necesitaba un sistema multiplataforma para crear exámenes. Después de rehacer mi libro completo usando LaTeX y Pandoc, vi claro el camino a seguir.

Así surgió md-to-pdf-exams, una herramienta que convierte exámenes escritos en Markdown a PDF usando Pandoc y LaTeX. Lo más interesante del proyecto es que permite escribir el contenido de forma sencilla en Markdown y el sistema se encarga automáticamente del diseño y la maquetación.

El proyecto incluye varias funcionalidades que lo hacen especialmente útil para docentes:

  • Soporte bilingüe: Puedes generar exámenes en español o inglés.
  • Gestión de soluciones: Las respuestas se pueden almacenar en documentos separados e inyectar automáticamente.
  • Exportación profesional: Usa lualatex y fuentes Liberation para un resultado consistente.
  • Filtros Lua personalizados: Scripts que automatizan la inyección de soluciones.
  • Multiplataforma real: Funciona en Ubuntu/Debian, Fedora/RHEL, Arch/Manjaro, macOS y Windows.

La base del proyecto es una plantilla LaTeX creada originalmente por Driss Drissi, a quien debo mencionar y dar todo el crédito por el excelente trabajo de diseño original.

Antes de empezar, necesitas tener instalado:

  • Pandoc (versión 3.x o superior)
  • Una distribución LaTeX con soporte para lualatex
  • El paquete de fuentes Liberation

La documentación del repositorio incluye instrucciones detalladas de instalación para cada sistema operativo.

Una vez instalado, usar la herramienta es muy sencillo. El proyecto incluye un script que simplifica el proceso:

# Generar examen en español (por defecto)
./scripts/export.sh

# Generar examen en español con respuestas
./scripts/export.sh --answers

# Generar examen en inglés
./scripts/export.sh --lang en

# Generar examen en inglés con respuestas
./scripts/export.sh --lang en --answers

El flujo de trabajo es el siguiente:

  1. Escribes tu examen en Markdown usando cualquier editor de texto
  2. Ejecutas el script correspondiente según tus necesidades
  3. Obtienes un PDF profesional listo para imprimir o distribuir

Imaginemos que estás creando un examen de programación. En lugar de pelear con formatos de Word o diseños de LibreOffice, simplemente escribes:

---
title: Ejemplo de examen
lang: spanish
answers: false
solutions-file: exam/solutions_es.md
department: Departamento de Matemáticas
preamble: >
  Resuelve cada ejercicio mostrando cada paso.
---

@q Operaciones básicas

1. Realiza \(18 + 7\).
2. Despeja la \(x\) en \(5x = 45\).

El sistema se encarga del resto: numeración, formato, márgenes, tipografía… Todo automático. Eso sí, toca tener la referencia de LaTeX para escribir fórmulas si quieres.

Como todo proyecto en desarrollo, md-to-pdf-exams tiene áreas que necesitan mejorar:

Todavía no he implementado la inserción de imágenes en los exámenes. Seguro que sale de una manera decente, pero necesito investigar diseños personalizados para manejar casos con 2-3 imágenes de forma “fancy”. Es una de las prioridades para las próximas versiones.

Soporte para CSV: En lugar de Markdown, permitir usar archivos CSV con un formato particular. Esto podría ser especialmente útil para personas que no conocen la sintaxis Markdown, haciendo el proyecto más accesible.

Integración con LLM: Implementar un sistema que convierta texto plano con fórmulas a Markdown usando un modelo de lenguaje, y luego exportar a Pandoc. Esto automatizaría aún más el proceso de creación.

Lo de siempre: ideas no me faltan. Lo que falta es tiempo para implementarlas todas.

Por si no conocéis estas herramientas, para mí la combinación, aunque puede parecer compleja al principio, ofrece unas ventajas clarísimas:

  • Sintaxis simple: Más fácil que aprender LaTeX completo.
  • Portabilidad: Archivos de texto plano que funcionan en cualquier sistema.
  • Control de versiones: Compatible con Git para trackear cambios.
  • Enfoque en el contenido: No te distraes con el formato mientras escribes.

Pandoc es el conversor universal de documentos. Transforma Markdown a prácticamente cualquier formato: PDF, DOCX, HTML, LaTeX… En este proyecto lo usamos como intermediario entre Markdown y LaTeX.

LaTeX sigue siendo el estándar para documentos académicos y científicos, ya que ofrece:

  • Tipografía profesional
  • Manejo excelente de fórmulas matemáticas
  • Consistencia en el diseño
  • Resultados reproducibles

Desde que empecé a usar md-to-pdf-exams, mi flujo de trabajo ha mejorado significativamente:

Creación rápida de exámenes: Puedo escribir un examen completo en mi editor de texto favorito (uso VS Code con extensiones de Markdown) y generar el PDF en segundos.

Versiones con y sin respuestas: Con un simple flag --answers, genero la versión para los estudiantes y la versión con soluciones para mí (que me ayuda bastante a corregir rápido).

Reutilización de contenido: Al estar todo en texto plano, puedo reutilizar preguntas, reorganizarlas o modificarlas fácilmente, sin tener que estar modificando el formato todo el rato.

Independencia del sistema: Puedo crear el mismo examen en mi PC con Windows del trabajo, mi MacBook personal o mi máquina con Fedora en casa. El resultado es idéntico.

md-to-pdf-exams es un proyecto de código abierto disponible en GitHub. Si eres docente, desarrollador o simplemente te interesa el proyecto, hay varias formas de contribuir:

  • Reporta bugs: Si encuentras algún problema, abre una issue.
  • Sugiere mejoras: Todas las ideas son bienvenidas.
  • Contribuye código: Pull requests son más que bienvenidos.
  • Comparte el proyecto: Si te resulta útil, cuéntaselo a otros docentes.

El objetivo es crear una herramienta que ayude a la comunidad educativa a trabajar de forma más eficiente, independientemente del sistema operativo que utilicen.

Si tienes preguntas, sugerencias o quieres compartir cómo usas la herramienta, no dudes en contactarme o abrir un issue en el repositorio.