Files
c-programming/.opencode/skills/book-pdf/SKILL.md
T

4.0 KiB
Raw Blame History

name, description
name description
book-pdf 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.