Files

70 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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)`.
4. Verificar que **ningún título quede huérfano** (sin sus tres líneas de contenido al pie). Si
aparece uno, forzar el salto de página descrito en "Reglas de diseño" y regenerar.
## 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`.
- **Títulos sin huérfanos**: un título (`h1`–`h4`) **nunca** puede quedar al pie de página: siempre
tiene que arrastrar **al menos tres líneas de contenido** debajo, en la misma hoja. Lo garantiza
`print.css` (`break-after: avoid` en `h1`–`h4` y en el primer párrafo que los sigue, más
`orphans`/`widows: 3`). Si aun así un título cae solo al final de una página, **forzar un salto
de página antes de ese título** con un bloque HTML `<div style="break-before: page;"></div>`,
y no dejar el título huérfano.
## 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.