Refactor code structure for improved readability and maintainability

This commit is contained in:
2026-10-13 10:18:48 -03:00
parent 5612ad3eed
commit 5786e9cde0
4 changed files with 240 additions and 15 deletions
+61
View File
@@ -0,0 +1,61 @@
---
name: book-pdf
description: Generar o regenerar los PDF de los capítulos del libro de C en dist/, con diseño consistente (resaltado de sintaxis, fuente mono para código, notas con fondo de color). Trigger - pdf, generar pdf, exportar capítulo, dist, md-to-pdf, print.css, "convertir a pdf", "rehacer pdf".
---
# Skill: book-pdf — Generación de PDF de los capítulos
Todos los PDF del libro se generan **siempre** con este procedimiento, para que mantengan
exactamente el mismo diseño. Fuente de diseño única: `assets/pdf/print.css`.
## Herramienta
Usar el MCP **`md-to-pdf`** → herramienta **`md-to-pdf_markdown_to_pdf`**.
(NO escribir un pipeline propio con Node/Puppeteer ni instalar pandoc/LaTeX: ya existe este MCP.)
## Pasos
1. **Leer** `assets/pdf/print.css` (con la tool `read`).
2. **Invocar** `md-to-pdf_markdown_to_pdf` con estos parámetros fijos:
| Parámetro | Valor |
| ----------------- | -------------------------------------------------------------- |
| `inputPath` | ruta absoluta del capítulo, p. ej. `book\12-arenas.md` |
| `outputPath` | `dist\<mismo-nombre>.pdf`, p. ej. `dist\12-arenas.pdf` |
| `css` | **el contenido completo** de `assets/pdf/print.css` |
| `format` | `A4` |
| `printBackground` | `true` (obligatorio: pinta los fondos de código y notas) |
| `pageNumbers` | `true` |
| `headerText` | `Programación en C — Libro de ejercicios` |
| `footerText` | el capítulo, p. ej. `12 — Arenas` |
3. Comprobar que la respuesta diga `PDF generated: ... (<n> KB)`.
## Reglas de diseño (no romper)
- **Fuente del cuerpo**: serif (`Georgia` / `Palatino` / `Times`). Definida en `print.css`.
- **Fuente de código**: mono distinta de la del cuerpo (`Cascadia Code` / `JetBrains Mono` /
`Consolas`). **Todo bloque de código debe declarar su lenguaje** en el fence
(```` ```c ````, ```` ```bash ````, ```` ```text ````). Sin lenguaje, `highlight.js` lo trata como
`plaintext` y **no hay resaltado**. Para trazas de consola usar ```` ```text ````.
- **Notas / advertencias**: se escriben como **blockquote** (`>`). En el PDF se dibujan **todas**
igual: caja con fondo azul claro (`#eef4fb`) y borde izquierdo acentuado. No inventar estilos
distintos de nota.
- **Resaltado**: `md-to-pdf` usa `highlight.js` y emite clases `.hljs-*`; los colores están en
`print.css`. No cambiar colores fuera de `print.css`.
## Cambiar el diseño
Si hay que cambiar fuentes, colores o el estilo de las notas, **editar solo
`assets/pdf/print.css`** (es la fuente única) y regenerar **todos** los capítulos para que no
queden PDF con diseños distintos.
## Regenerar todo
Generar cada `book\*.md` a `dist\<nombre>.pdf` con los parámetros de arriba, uno por uno.
## Notas de compatibilidad
- Verificado en esta máquina: `md-to-pdf` 5.2.5 con `marked` 4.3.0 y `highlight.js` 11.12.0;
el highlighter de `md-to-pdf` **sí** resalta (emite `.hljs-keyword/string/comment`).
- El MCP corre headless Chromium vía `md-to-pdf`; no requiere instalación adicional.