Herramientas de conversión de LaTeX a Markdown
Transforme documentos LaTeX en Markdown de forma eficiente
Convertir documentos LaTeX a Markdown se ha vuelto esencial para los flujos de trabajo de publicación modernos, integrando generadores de sitios estáticos, plataformas de documentación y sistemas de control de versiones, manteniendo la legibilidad y la simplicidad. Esta guía forma parte de nuestro Herramientas de Documentación en 2026: Markdown, LaTeX, PDF y Flujos de Trabajo de Impresión centro.

¿Por qué convertir de LaTeX a Markdown?
LaTeX ha sido el estándar de oro para la preparación de documentos académicos y técnicos durante décadas, ofreciendo una calidad de tipografía insuperable y un soporte para notación matemática. Para quienes trabajan con documentos LaTeX, nuestro Hoja de Referencia de LaTeX proporciona ejemplos completos de construcciones comunes de LaTeX. Sin embargo, el paisaje de publicación moderna ha evolucionado, y Markdown ha surgido como una alternativa ligera con ventajas significativas:
Simplicidad y Legibilidad: Los archivos Markdown son texto plano legible por humanos, lo que los hace más fáciles de editar, revisar y controlar de versiones en comparación con la sintaxis extensa de LaTeX. Si eres nuevo en Markdown o necesitas una referencia rápida, consulta nuestra Hoja de Referencia de Markdown para una visión general completa de la sintaxis y las características.
Publicación Centrada en la Web: Generadores de sitios estáticos como Hugo, Jekyll y MkDocs usan Markdown nativamente, permitiendo sitios web modernos y rápidos a partir de la documentación. Plataformas como GitHub, GitLab y varios wikis renderizan Markdown automáticamente.
Colaboración: Stakeholders no técnicos pueden leer y editar Markdown sin aprender la sintaxis de LaTeX, reduciendo las barreras para la escritura colaborativa.
Ecosistema de Herramientas: Los editores modernos ofrecen un excelente soporte para Markdown con vista previa en vivo, análisis de código y extensiones. La integración con pipelines de CI/CD es sencilla.
Portabilidad: Markdown se puede convertir a múltiples formatos de salida (HTML, PDF mediante LaTeX, DOCX, EPUB) usando herramientas como Pandoc, manteniendo flexibilidad sin la complejidad de LaTeX.
Herramientas de Conversión Principales
Pandoc: El Conversor Universal de Documentos
Pandoc es la herramienta más poderosa y versátil de conversión de documentos disponible. Escrito por el filósofo y desarrollador John MacFarlane, soporta más de 40 formatos de marcado y puede convertir entre ellos de forma inteligente.
Instalación:
Antes de trabajar con conversiones de LaTeX, asegúrate de tener una distribución de LaTeX instalada. Para usuarios de Windows, consulta nuestra guía sobre LaTeX en Windows 11 & 10: Distribuciones, Comparaciones y Instalaciones Paso a Paso, o consulta nuestra Visión General e Instalación de LaTeX para instrucciones de instalación multiplataforma.
# Ubuntu/Debian
sudo apt-get install pandoc
# macOS
brew install pandoc
# Windows
choco install pandoc
# O descarga desde https://pandoc.org/installing.html
Conversión Básica:
# Conversión simple
pandoc document.tex -o document.md
# Con formato de salida específico
pandoc document.tex -f latex -t markdown -o document.md
# Conservar matemáticas
pandoc document.tex -t markdown+tex_math_dollars -o document.md
Opciones Avanzadas:
# Conversión con bibliografía
pandoc document.tex --bibliography=refs.bib --citeproc -o document.md
# Extraer imágenes incrustadas
pandoc document.tex --extract-media=./media -o document.md
# Documento autónomo con metadatos
pandoc document.tex -s --wrap=none -o document.md
# Plantilla personalizada
pandoc document.tex --template=custom.md -o document.md
LaTeXML: Conversión Semántica
LaTeXML se centra en preservar la estructura semántica de los documentos LaTeX, lo que lo hace especialmente adecuado para contenido matemático y científico que necesita mantener el significado en lugar de solo la apariencia.
# Instalación
sudo apt-get install latexml
# Conversión básica
latexml document.tex | latexmlpost --dest=document.html -
# Con matemáticas como MathML
latexmlc document.tex --dest=document.html --mathimages=false
Herramientas basadas en Python
Varias herramientas de Python ofrecen capacidades de conversión programática. Para enfoques alternativos de conversión, especialmente al trabajar con contenido web, también podrías encontrar útil nuestra guía sobre convertir contenido HTML a Markdown usando LLM y Ollama para entender técnicas modernas de conversión impulsadas por IA.
tex2py y latex2markdown:
pip install latex2markdown
# Uso desde la línea de comandos
python -m latex2markdown document.tex document.md
Pandocfilters: Crea filtros personalizados de Pandoc en Python para manejar construcciones específicas de LaTeX:
#!/usr/bin/env python3
from pandocfilters import toJSONFilter, Str
def custom_transform(key, value, format, meta):
if key == 'Str':
# Transformar cadenas o patrones específicos
if value.startswith('\\customcommand'):
return Str(value.replace('\\customcommand', 'Custom: '))
if __name__ == "__main__":
toJSONFilter(custom_transform)
Usar con:
pandoc document.tex --filter=./custom_filter.py -o document.md
Flujo de Trabajo de Conversión Integral
Paso 1: Preparación
Antes de la conversión, prepárate tu documento LaTeX:
Hacer copia de seguridad de los archivos originales:
# Crear copia de seguridad
cp -r latex_project/ latex_project_backup/
git commit -am "Pre-conversión backup"
Inventario de comandos personalizados:
# Extraer todos los comandos personalizados
grep -E '\\newcommand|\\def|\\newenvironment' *.tex > custom_commands.txt
Simplificar paquetes complejos: Comenta o reemplaza paquetes que no tienen equivalentes en Markdown:
% Reemplazar o eliminar
% \usepackage{tikz}
% \usepackage{custom_package}
Paso 2: Conversión Inicial
Ejecuta la conversión con opciones adecuadas:
# Comando de conversión integral
pandoc main.tex \
--from=latex \
--to=markdown+pipe_tables+backtick_code_blocks+fenced_code_attributes \
--wrap=none \
--extract-media=./assets \
--standalone \
--bibliography=references.bib \
--citeproc \
--output=output.md
La extensión backtick_code_blocks asegura un formato adecuado de código en la salida. Para más detalles sobre el uso de bloques de código en Markdown, consulta nuestra guía sobre Uso de Bloques de Código en Markdown.
Paso 3: Post-Procesamiento
La conversión inicial a menudo requiere limpieza:
Reparar formato de tablas:
Pandoc puede crear tablas incómodas. Usa sed o edición manual:
# Script para limpiar tablas
sed -i 's/|:--|:--|/|:---|:---|/g' output.md
Manejar citas:
Si usas bibliografías, asegúrate de que las citas se hayan convertido correctamente:
# Verificar formato de cita
grep -E '\[@\w+\]|\@\w+' output.md
Correcciones de rutas de imágenes:
# Actualizar rutas relativas
sed -i 's|!\[\](assets/|:
with open(filename, 'r') as f:
content = f.read()
issues = []
# Verificar comandos de LaTeX no convertidos
latex_commands = re.findall(r'\\[a-zA-Z]+\{', content)
if latex_commands:
issues.append(f"Comandos de LaTeX no convertidos: {set(latex_commands)}")
# Verificar enlaces rotos
links = re.findall(r'\[([^\]]+)\]\(([^\)]+)\)', content)
for text, url in links:
if url.startswith('file://'):
issues.append(f"Enlace con protocolo de archivo: {url}")
# Verificar delimitadores de matemáticas
single_dollars = re.findall(r'(?<!\$)\$(?!\$)[^$]+\$(?!\$)', content)
if len(single_dollars) % 2 != 0:
issues.append("Delimitadores de matemática en línea desequilibrados")
return issues
if __name__ == "__main__":
issues = validate_markdown(sys.argv[1])
if issues:
print("Encontrados problemas de validación:")
for issue in issues:
print(f" - {issue}")
sys.exit(1)
else:
print("Validación completada con éxito!")
sys.exit(0)
Manejo de Desafíos Comunes
Matemáticas Complejas
Para documentos con matemáticas intensivas, preserva la notación matemática de LaTeX:
# Mantener exactamente la notación de LaTeX
pandoc document.tex -t markdown+raw_tex -o output.md
O usa extensiones específicas de matemáticas:
pandoc document.tex -t markdown_strict+tex_math_dollars+raw_tex -o output.md
Bibliografía y Citas
Convierte archivos de bibliografía y maneja citas:
# Convertir .bib a YAML para Pandoc
pandoc-citeproc --bib2yaml refs.bib > refs.yaml
# Usar en conversión
pandoc document.tex --metadata bibliography=refs.yaml --citeproc -o output.md
Tablas
Las tablas de LaTeX a menudo se convierten de forma imperfecta. Considera:
- Usar extensiones
pipe_tablesogrid_tables - Reconstrucción manual de tablas para diseños complejos
- Convertir tablas a imágenes para casos realmente complejos
# Probar diferentes estilos de tabla
pandoc document.tex -t markdown+pipe_tables -o output1.md
pandoc document.tex -t markdown+grid_tables -o output2.md
Figuras y Gráficos
Extraer y organizar figuras:
# Extraer todas las medias a un directorio organizado
pandoc document.tex --extract-media=./figures -o output.md
# Procesar con rutas relativas
pandoc document.tex --resource-path=.:./figures --extract-media=./assets/img -o output.md
Comandos LaTeX Personalizados
Maneja comandos personalizados mediante preprocesamiento:
#!/usr/bin/env python3
import re
import sys
def expand_custom_commands(content):
# Definir mapeos de comandos personalizados
commands = {
r'\\customemph\{([^}]+)\}': r'***\1***',
r'\\customsection\{([^}]+)\}': r'\n## \1\n',
r'\\code\{([^}]+)\}': r'`\1`',
}
for pattern, replacement in commands.items():
content = re.sub(pattern, replacement, content)
return content
if __name__ == "__main__":
with open(sys.argv[1], 'r') as f:
content = f.read()
expanded = expand_custom_commands(content)
with open(sys.argv[2], 'w') as f:
f.write(expanded)
Uso:
# Preprocesar, luego convertir
python expand_commands.py document.tex document_expanded.tex
pandoc document_expanded.tex -o document.md
Automatización y Procesamiento por Lotes
Script Bash para Conversión de Directorio
#!/bin/bash
# convert_all.sh - Convertir todos los archivos .tex en un directorio a Markdown
INPUT_DIR="${1:-.}"
OUTPUT_DIR="${2:-./markdown_output}"
mkdir -p "$OUTPUT_DIR"
find "$INPUT_DIR" -name "*.tex" | while read -r tex_file; do
base_name=$(basename "$tex_file" .tex)
output_file="$OUTPUT_DIR/${base_name}.md"
echo "Converting: $tex_file -> $output_file"
pandoc "$tex_file" \
--from=latex \
--to=markdown \
--wrap=none \
--extract-media="$OUTPUT_DIR/media" \
--standalone \
--output="$output_file"
if [ $? -eq 0 ]; then
echo "✓ Conversión exitosa de $base_name"
else
echo "✗ Error al convertir $base_name"
fi
done
echo "Conversión por lotes completada!"
Procesador por lotes en Python
#!/usr/bin/env python3
import os
import subprocess
from pathlib import Path
def batch_convert(input_dir, output_dir, extensions=['.tex']):
"""Convertir todos los archivos LaTeX en un árbol de directorios a Markdown."""
input_path = Path(input_dir)
output_path = Path(output_dir)
output_path.mkdir(parents=True, exist_ok=True)
for ext in extensions:
for tex_file in input_path.rglob(f'*{ext}'):
# Conservar estructura de directorios
relative_path = tex_file.relative_to(input_path)
output_file = output_path / relative_path.with_suffix('.md')
output_file.parent.mkdir(parents=True, exist_ok=True)
print(f"Converting: {tex_file}")
cmd = [
'pandoc',
str(tex_file),
'--from=latex',
'--to=markdown',
'--wrap=none',
f'--extract-media={output_file.parent}/media',
'--standalone',
f'--output={output_file}'
]
try:
subprocess.run(cmd, check=True, capture_output=True, text=True)
print(f"✓ Éxito: {output_file}")
except subprocess.CalledProcessError as e:
print(f"✗ Error: {tex_file}")
print(f" {e.stderr}")
if __name__ == "__main__":
import sys
input_dir = sys.argv[1] if len(sys.argv) > 1 else '.'
output_dir = sys.argv[2] if len(sys.argv) > 2 else './markdown'
batch_convert(input_dir, output_dir)
Git Hooks para Conversión Continua
Automatizar la conversión al hacer commit:
#!/bin/bash
# .git/hooks/pre-commit
# Encontrar todos los archivos .tex modificados
changed_tex=$(git diff --cached --name-only --diff-filter=ACM | grep '\.tex$')
if [ -n "$changed_tex" ]; then
echo "Converting modified LaTeX files..."
for tex_file in $changed_tex; do
md_file="${tex_file%.tex}.md"
pandoc "$tex_file" -o "$md_file"
git add "$md_file"
echo "Converted and staged: $md_file"
done
fi
Makefile para Proyectos Estructurados
# Makefile para conversión de LaTeX a Markdown
SRC_DIR := latex_src
OUT_DIR := markdown_out
TEX_FILES := $(wildcard $(SRC_DIR)/*.tex)
MD_FILES := $(patsubst $(SRC_DIR)/%.tex,$(OUT_DIR)/%.md,$(TEX_FILES))
.PHONY: all clean validate
all: $(MD_FILES)
$(OUT_DIR)/%.md: $(SRC_DIR)/%.tex
@mkdir -p $(OUT_DIR)
pandoc $< \
--from=latex \
--to=markdown \
--wrap=none \
--extract-media=$(OUT_DIR)/media \
--standalone \
--output=$@
@echo "Converted: $< -> $@"
clean:
rm -rf $(OUT_DIR)
validate: $(MD_FILES)
@for md in $(MD_FILES); do \
echo "Validating $$md..."; \
python validate_markdown.py $$md; \
done
Integración con Generadores de Sitios Estáticos
Integración con Hugo
Convertir LaTeX a Markdown compatible con Hugo. Para más información sobre el trabajo con Hugo y sus diversas características, consulta nuestra Hoja de Referencia de Hugo.
#!/bin/bash
# Convertir artículo LaTeX a post de Hugo
INPUT_TEX="$1"
OUTPUT_DIR="content/posts"
POST_NAME=$(basename "$INPUT_TEX" .tex)
# Convertir
pandoc "$INPUT_TEX" \
--to=markdown \
--wrap=none \
--extract-media="static/img/$POST_NAME" \
--output="temp_$POST_NAME.md"
# Añadir metadatos de Hugo
cat > "$OUTPUT_DIR/$POST_NAME.md" << EOF
---
title: "$(grep '\\title' "$INPUT_TEX" | sed 's/\\title{\(.*\)}/\1/')"
date: $(date +%Y-%m-%dT%H:%M:%S%z)
draft: false
math: true
---
EOF
# Añadir contenido convertido
cat "temp_$POST_NAME.md" >> "$OUTPUT_DIR/$POST_NAME.md"
# Corregir rutas de imágenes
sed -i "s|media/|/img/$POST_NAME/|g" "$OUTPUT_DIR/$POST_NAME.md"
# Limpieza
rm "temp_$POST_NAME.md"
echo "Post de Hugo creado: $OUTPUT_DIR/$POST_NAME.md"
Integración con Jekyll
#!/bin/bash
# Convertir a post de Jekyll
INPUT_TEX="$1"
POST_DATE=$(date +%Y-%m-%d)
POST_NAME=$(basename "$INPUT_TEX" .tex)
OUTPUT_FILE="_posts/$POST_DATE-$POST_NAME.md"
pandoc "$INPUT_TEX" \
--to=markdown_strict \
--extract-media="assets/img" \
--template=jekyll_template.md \
--output="$OUTPUT_FILE"
echo "Post de Jekyll creado: $OUTPUT_FILE"
Buenas Prácticas y Consejos
1. Control de Versiones para Todo
Siempre usa control de versiones para los orígenes de LaTeX y las salidas de Markdown:
git init latex-to-markdown-project
git add latex_src/ markdown_out/
git commit -m "Initial LaTeX sources and Markdown conversion"
2. Mantener Documentación de Conversión
Documenta tu proceso de conversión:
# Notas de Conversión
## Mapeo de Comandos Personalizados
- `\customemph{text}` → `***text***`
- `\code{text}` → `` `text` ``
## Problemas Conocidos
- Diagramas complejos de TikZ convertidos a marcadores de posición
- Algunas alineaciones de tablas necesitan ajuste manual
## Pasos de Post-Procesamiento
1. Ejecutar `fix_tables.py`
2. Validar con `validate_markdown.py`
3. Verificar renderizado de matemáticas con vista previa
3. Probar Incrementalmente
No conviertas tu documento completo de inmediato:
# Convertir capítulo por capítulo
pandoc chapter1.tex -o chapter1.md
# Revisar y corregir problemas
pandoc chapter2.tex -o chapter2.md
# Revisar y corregir problemas
# etc.
4. Usar Filtros de Pandoc en Lua
Para transformaciones complejas, los filtros de Lua son poderosos:
-- custom_filter.lua
function Math(el)
if el.mathtype == "InlineMath" then
return pandoc.RawInline('markdown', '$' .. el.text .. '$')
else
return pandoc.RawBlock('markdown', '$$' .. el.text .. '$$')
end
end
function Image(el)
-- Añadir clases o atributos personalizados
el.classes = {'responsive-image'}
return el
end
Aplicar con:
pandoc document.tex --lua-filter=custom_filter.lua -o output.md
5. Conservar LaTeX para Elementos Complejos
A veces, conservar LaTeX es la mejor opción:
# Permitir LaTeX crudo en Markdown para casos complejos
pandoc document.tex -t markdown+raw_tex -o output.md
Esto permite que conserves ecuaciones complejas, diagramas de TikZ o paquetes personalizados tal cual, luego los renderices de forma diferente según el formato de salida final.
Garantía de Calidad
Pruebas Automatizadas
#!/usr/bin/env python3
# test_conversion.py
import subprocess
import difflib
def test_conversion():
"""Probar que la conversión produzca la salida esperada."""
# Convertir archivo de prueba
subprocess.run([
'pandoc', 'test_input.tex',
'-o', 'test_output.md'
], check=True)
# Comparar con salida esperada
with open('test_output.md', 'r') as f:
actual = f.readlines()
with open('expected_output.md', 'r') as f:
expected = f.readlines()
diff = list(difflib.unified_diff(expected, actual, lineterm=''))
if diff:
print("La salida de la conversión difiere de la esperada:")
print('\n'.join(diff))
return False
else:
print("✓ Prueba de conversión aprobada")
return True
if __name__ == "__main__":
import sys
sys.exit(0 if test_conversion() else 1)
Comparación Visual
Para documentos con formato complejo:
# Generar PDF desde LaTeX
pdflatex document.tex
# Generar PDF desde Markdown convertido mediante Pandoc
pandoc output.md -o output_from_markdown.pdf
# Comparar visualmente ambos PDFs
Verificación de Enlaces
#!/usr/bin/env python3
import re
import os
from pathlib import Path
def check_links(md_file):
"""Verificar que todos los enlaces en Markdown sean válidos."""
with open(md_file, 'r') as f:
content = f.read()
# Extraer todos los enlaces
links = re.findall(r'\[([^\]]+)\]\(([^\)]+)\)', content)
broken_links = []
for text, url in links:
if not url.startswith(('http://', 'https://', '#')):
# Verificar si el archivo existe
link_path = Path(md_file).parent / url
if not link_path.exists():
broken_links.append((text, url))
return broken_links
if __name__ == "__main__":
import sys
broken = check_links(sys.argv[1])
if broken:
print("Encontrados enlaces rotos:")
for text, url in broken:
print(f" [{text}]({url})")
sys.exit(1)
else:
print("✓ Todos los enlaces válidos")
sys.exit(0)
Optimización de Rendimiento
Para documentos grandes o procesamiento por lotes:
Procesamiento en Paralelo
#!/usr/bin/env python3
from multiprocessing import Pool
import subprocess
from pathlib import Path
def convert_file(tex_file):
"""Convertir un solo archivo."""
output_file = tex_file.with_suffix('.md')
subprocess.run([
'pandoc', str(tex_file),
'-o', str(output_file)
], check=True)
return str(output_file)
def parallel_convert(input_dir, num_processes=4):
"""Convertir archivos en paralelo."""
tex_files = list(Path(input_dir).rglob('*.tex'))
with Pool(num_processes) as pool:
results = pool.map(convert_file, tex_files)
return results
if __name__ == "__main__":
import sys
converted = parallel_convert(sys.argv[1])
print(f"Converted {len(converted)} files")
Caché
#!/usr/bin/env python3
import hashlib
import subprocess
from pathlib import Path
import pickle
CACHE_FILE = '.conversion_cache.pkl'
def file_hash(filepath):
"""Calcular hash del archivo."""
with open(filepath, 'rb') as f:
return hashlib.md5(f.read()).hexdigest()
def cached_convert(tex_file, cache):
"""Convertir solo si el archivo cambió."""
current_hash = file_hash(tex_file)
if tex_file in cache and cache[tex_file] == current_hash:
print(f"Saltando {tex_file} (sin cambios)")
return
# Convertir archivo
output_file = tex_file.with_suffix('.md')
subprocess.run([
'pandoc', str(tex_file),
'-o', str(output_file)
], check=True)
# Actualizar caché
cache[tex_file] = current_hash
print(f"Convertido {tex_file}")
def main():
# Cargar caché
try:
with open(CACHE_FILE, 'rb') as f:
cache = pickle.load(f)
except FileNotFoundError:
cache = {}
# Procesar archivos
for tex_file in Path('.').rglob('*.tex'):
cached_convert(tex_file, cache)
# Guardar caché
with open(CACHE_FILE, 'wb') as f:
pickle.dump(cache, f)
if __name__ == "__main__":
main()
Recursos Útiles y Herramientas
Herramientas Esenciales
- Pandoc: https://pandoc.org/ - Conversor universal de documentos
- LaTeXML: https://dlmf.nist.gov/LaTeXML/ - Conversor de LaTeX a XML/HTML
- pandoc-citeproc: Procesamiento de bibliografía
- pandocfilters: Biblioteca de Python para filtros de Pandoc
Convertidores en Línea
- Pandoc Online: Conversión rápida sin instalación
- Overleaf: Exportar proyectos LaTeX en varios formatos
- TeXLive: Distribución completa de LaTeX con herramientas de conversión
Documentación y Guías
- Guía del Usuario de Pandoc: Documentación completa
- Stack Exchange de LaTeX: Preguntas y respuestas de la comunidad
- Repositorios de GitHub con scripts y filtros de conversión
Soporte del Editor
- VS Code: Extensiones LaTeX Workshop + Markdown All in One
- Vim: Plugin vim-pandoc
- Emacs: org-mode con soporte de LaTeX y Markdown
Herramientas de Validación
- markdown-lint: Verificador de estilo de Markdown
- vale: Linter de prose con guías de estilo
- link-checker: Validar enlaces en archivos Markdown
Conclusión
Convertir LaTeX a Markdown es una necesidad práctica en los flujos de trabajo de publicación técnica modernos. Aunque Pandoc maneja la mayoría de las conversiones de forma excelente, entender las herramientas disponibles, los desafíos comunes y las estrategias de automatización asegura migraciones suaves.
La clave para una conversión exitosa radica en:
- Preparación: Limpiar y documentar tu LaTeX antes de convertir
- Enfoque incremental: Probar en porciones pequeñas antes de la conversión total
- Automatización: Crear scripts para procesamiento por lotes y validación
- Garantía de calidad: Implementar pruebas y flujos de trabajo de validación
- Mantenimiento: Documentar decisiones y mantener scripts de conversión
Ya sea que estés migrando artículos académicos a un generador de sitios estáticos, convirtiendo documentación a wikis de GitHub o simplemente buscando la flexibilidad de Markdown mientras preservas la calidad de LaTeX, las herramientas y flujos de trabajo presentados aquí proporcionan una base sólida.
La inversión en construir pipelines de conversión robustos paga dividendos mediante la reducción de fricción en la publicación, la mejora de la colaboración y el acceso a herramientas modernas de publicación web, manteniendo la rigurosidad y precisión del contenido escrito en LaTeX.
Enlaces Útiles
- Herramientas de Documentación en 2026: Markdown, LaTeX, PDF y Flujos de Trabajo de Impresión
- Hoja de Referencia de Markdown
- Hoja de Referencia de LaTeX
- Uso de Bloques de Código en Markdown
- Convertir contenido HTML a Markdown usando LLM y Ollama
- LaTeX en Windows 11 & 10: Distribuciones, Comparaciones y Instalaciones Paso a Paso
- Visión General e Instalación de LaTeX
- Hoja de Referencia de Hugo