@imontene/mdrender 2.9.0 → 2.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/README.md +102 -39
- package/dist/assets/theme-tech-magazine-dark.css +19 -0
- package/dist/assets/theme-tech-magazine.css +535 -0
- package/dist/assets.d.ts +19 -0
- package/dist/assets.js +48 -2
- package/dist/cli.js +2 -2
- package/dist/convert.js +36 -8
- package/dist/options.d.ts +18 -1
- package/dist/options.js +43 -1
- package/dist/render/fonts.d.ts +4 -0
- package/dist/render/fonts.js +12 -1
- package/dist/render/header-footer.d.ts +2 -0
- package/dist/render/header-footer.js +1 -1
- package/dist/render/magazine.d.ts +48 -0
- package/dist/render/magazine.js +211 -0
- package/dist/render/mermaid-style.d.ts +39 -0
- package/dist/render/mermaid-style.js +169 -0
- package/dist/render/mermaid.js +9 -2
- package/dist/render/page.d.ts +2 -0
- package/dist/render/page.js +5 -0
- package/dist/render/template.d.ts +3 -1
- package/dist/render/template.js +10 -3
- package/package.json +4 -2
- package/tech_magazine/AlphaZeroChess/cover01.png +0 -0
- package/tech_magazine/AlphaZeroChess/cover02.png +0 -0
- package/tech_magazine/AlphaZeroChess/cover03.png +0 -0
- package/tech_magazine/AlphaZeroChess/cover04.png +0 -0
- package/tech_magazine/AlphaZeroChess/magazine.json +9 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# Cambios
|
|
2
2
|
|
|
3
|
+
## 2.11.0 — 2026-11-06
|
|
4
|
+
|
|
5
|
+
- **Acabado de los diagramas Mermaid**, en todos los temas:
|
|
6
|
+
- esquinas ligeramente redondeadas en todas las figuras: rectángulos, subgraphs, actores y
|
|
7
|
+
notas, y también rombos, hexágonos, paralelogramos, trapecios y banderas, redibujados con
|
|
8
|
+
las esquinas suavizadas;
|
|
9
|
+
- títulos de los subgraphs en negrita, medidos así por Mermaid para que no se desborden;
|
|
10
|
+
- rellenos de figuras y subgraphs con su color, pero al 72 % de opacidad, para que se vean el
|
|
11
|
+
fondo y las marcas de agua. Se quitó la sombra del estilo de Mermaid 12, que agrisaba los
|
|
12
|
+
rellenos translúcidos; los PDF con diagramas pesan menos, porque Chrome la guardaba como
|
|
13
|
+
imagen.
|
|
14
|
+
|
|
15
|
+
## 2.10.0 — 2026-11-04
|
|
16
|
+
|
|
17
|
+
- **Tema de revista de tecnología** `--theme tech_magazine` (o `tech_magazine-dark`, con la
|
|
18
|
+
página en negro), que no se usa por defecto:
|
|
19
|
+
- con `title`, portada a sangre con una imagen de `tech_magazine/<magazine-name>/`, el nombre
|
|
20
|
+
de la revista, la etiqueta, el título, la bajada y la firma;
|
|
21
|
+
- Inter de 300 a 800 en una columna sin justificar, Newsreader en la bajada, la capitular y
|
|
22
|
+
las citas destacadas; alertas como recuadros, tablas como fichas técnicas, código en
|
|
23
|
+
tarjetas oscuras;
|
|
24
|
+
- pie con la revista, la fecha y el número de página, sin pie en la portada.
|
|
25
|
+
- Front matter de la portada: `magazine-name` (por defecto `AlphaZeroChess`, con 4 portadas
|
|
26
|
+
incluidas), `cover` (número de imagen; al azar si falta), `cover-text` (`top` o `bottom`),
|
|
27
|
+
`cover-ink` (`dark` o `light`) y `accent`. Un `magazine.json` en la carpeta de la revista
|
|
28
|
+
fija su acento y la tinta de cada portada.
|
|
29
|
+
- Nueva especificación del Markdown que esperan los temas `academic_basic` y `tech_magazine`:
|
|
30
|
+
[docs/ESPECIFICACION_TEMAS.md](docs/ESPECIFICACION_TEMAS.md).
|
|
31
|
+
|
|
3
32
|
## 2.9.0 — 2026-10-29
|
|
4
33
|
|
|
5
34
|
- Los elementos de listas con viñetas y numeradas (también anidadas o dentro de citas y
|
package/README.md
CHANGED
|
@@ -24,7 +24,8 @@ Ejemplo: [`examples/ejemplo.md`](examples/ejemplo.md) → [`examples/ejemplo.pdf
|
|
|
24
24
|
- 🗂️ **Lotes**: varios archivos, carpetas completas o patrones `docs/**/*.md`.
|
|
25
25
|
- 🔁 **`--watch`** y **vista previa en vivo** en el navegador.
|
|
26
26
|
- 🎨 Estilo **Anti-Gravity** por defecto (con variante oscura), los temas clásicos **claro** y
|
|
27
|
-
**oscuro**, el tema **académico** a dos columnas (`academic_basic`),
|
|
27
|
+
**oscuro**, el tema **académico** a dos columnas (`academic_basic`), el de **revista de
|
|
28
|
+
tecnología** con portada (`tech_magazine`, con variante oscura), o tu propio CSS.
|
|
28
29
|
- 🔌 **Sin conexión**: todo va empaquetado; por defecto no descarga nada de internet.
|
|
29
30
|
- 💻 **Windows 10/11 y Linux** (x64; arm64 en Linux), probado en ambos en cada cambio.
|
|
30
31
|
|
|
@@ -137,43 +138,43 @@ equipo); `--port` fija el puerto y `--no-open` no abre el navegador.
|
|
|
137
138
|
|
|
138
139
|
### Opciones
|
|
139
140
|
|
|
140
|
-
| Opción | Descripción
|
|
141
|
-
| ------------------------------ |
|
|
142
|
-
| `-o, --output <ruta>` | Archivo de salida, o carpeta con varios archivos
|
|
143
|
-
| `-f, --format <pdf\|html>` | Formato de salida
|
|
144
|
-
| `--page-size <tamaño>` | `Letter`, `A4`, `Legal` (también `A3`, `A5`, `Tabloid`)
|
|
145
|
-
| `--margin <valor>` | Las cuatro márgenes como en CSS: `10mm`, `15mm 20mm`…
|
|
146
|
-
| `--margin-top <medida>` | Margen superior, p. ej. `15mm` (prevalece sobre `--margin`)
|
|
147
|
-
| `--margin-right <medida>` | Margen derecho
|
|
148
|
-
| `--margin-bottom <medida>` | Margen inferior
|
|
149
|
-
| `--margin-left <medida>` | Margen izquierdo
|
|
150
|
-
| `--orientation <orientación>` | `portrait` (vertical) o `landscape` (horizontal)
|
|
151
|
-
| `--landscape` | Atajo de `--orientation landscape`
|
|
152
|
-
| `--toc` | Tabla de contenidos al inicio (o donde pongas `[[toc]]`)
|
|
153
|
-
| `--toc-depth <n>` | Nivel de título más profundo en la tabla de contenidos
|
|
154
|
-
| `--header <texto>` | Encabezado de página (ver abajo)
|
|
155
|
-
| `--footer <texto>` | Pie de página (ver abajo)
|
|
156
|
-
| `--no-page-numbers` | Sin el pie con números de página
|
|
157
|
-
| `--font <manrope\|inter>` | Tipografía del texto (ver abajo)
|
|
158
|
-
| `--no-justify` | Párrafos alineados a la izquierda en el PDF (ver abajo)
|
|
159
|
-
| `--watermark <texto>` | Marca de agua en diagonal en cada página del PDF, con el degradado Anti-Gravity
|
|
160
|
-
| `--watermark-field` | Campos de luz con el degradado arriba a la izquierda y abajo a la derecha de cada página del PDF
|
|
161
|
-
| `--density <densidad>` | `normal` o `compact` (menos espacio entre líneas y bloques)
|
|
162
|
-
| `--font-size <tamaño>` | Tamaño del texto en `pt` o `px`, de 6 a 24 pt; p. ej. `10pt`
|
|
163
|
-
| `--theme <tema\|css>` | `antigravity`, `antigravity-dark`, `light`, `dark`, `academic_basic` o un `.css` (ver abajo)
|
|
164
|
-
| `--css <archivo.css>` | CSS adicional (se puede repetir)
|
|
165
|
-
| `--mermaid-theme <tema>` | `default`, `neutral`, `dark`, `forest`, `base`
|
|
166
|
-
| `--mermaid-flip <auto\|never>` | Si el autoajuste puede girar un diagrama de flujo de eje (ver abajo)
|
|
167
|
-
| `--no-mermaid-autofit` | Dibujar los diagramas de flujo tal como están escritos
|
|
168
|
-
| `--lang <código>` | Idioma del documento; `en` para inglés (`pt`, `fr`, `de`…)
|
|
169
|
-
| `--title <texto>` | Título del documento (muestra un bloque de título)
|
|
170
|
-
| `--config <archivo>` | Archivo de configuración
|
|
171
|
-
| `--no-config` | Ignorar `mdrender.config.json`
|
|
172
|
-
| `--browser <ruta>` | Ruta a Chrome/Edge/Chromium (o variable `MDRENDER_BROWSER`)
|
|
173
|
-
| `--allow-remote` | Permitir que el PDF descargue imágenes/CSS de internet
|
|
174
|
-
| `-w, --watch` | Regenerar al guardar
|
|
175
|
-
| `-q, --quiet` | Mostrar solo advertencias y errores
|
|
176
|
-
| `-v, --verbose` | Mostrar también configuración, navegador y tiempos
|
|
141
|
+
| Opción | Descripción | Por defecto |
|
|
142
|
+
| ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- | --------------------- |
|
|
143
|
+
| `-o, --output <ruta>` | Archivo de salida, o carpeta con varios archivos | junto al `.md` |
|
|
144
|
+
| `-f, --format <pdf\|html>` | Formato de salida | `pdf` |
|
|
145
|
+
| `--page-size <tamaño>` | `Letter`, `A4`, `Legal` (también `A3`, `A5`, `Tabloid`) | `Letter` |
|
|
146
|
+
| `--margin <valor>` | Las cuatro márgenes como en CSS: `10mm`, `15mm 20mm`… | `10mm` |
|
|
147
|
+
| `--margin-top <medida>` | Margen superior, p. ej. `15mm` (prevalece sobre `--margin`) | `10mm` |
|
|
148
|
+
| `--margin-right <medida>` | Margen derecho | `10mm` |
|
|
149
|
+
| `--margin-bottom <medida>` | Margen inferior | `10mm` |
|
|
150
|
+
| `--margin-left <medida>` | Margen izquierdo | `10mm` |
|
|
151
|
+
| `--orientation <orientación>` | `portrait` (vertical) o `landscape` (horizontal) | `portrait` |
|
|
152
|
+
| `--landscape` | Atajo de `--orientation landscape` | — |
|
|
153
|
+
| `--toc` | Tabla de contenidos al inicio (o donde pongas `[[toc]]`) | — |
|
|
154
|
+
| `--toc-depth <n>` | Nivel de título más profundo en la tabla de contenidos | `3` |
|
|
155
|
+
| `--header <texto>` | Encabezado de página (ver abajo) | — |
|
|
156
|
+
| `--footer <texto>` | Pie de página (ver abajo) | `{page} / {pages}` |
|
|
157
|
+
| `--no-page-numbers` | Sin el pie con números de página | — |
|
|
158
|
+
| `--font <manrope\|inter>` | Tipografía del texto (ver abajo) | `manrope` |
|
|
159
|
+
| `--no-justify` | Párrafos alineados a la izquierda en el PDF (ver abajo) | justificado |
|
|
160
|
+
| `--watermark <texto>` | Marca de agua en diagonal en cada página del PDF, con el degradado Anti-Gravity | — |
|
|
161
|
+
| `--watermark-field` | Campos de luz con el degradado arriba a la izquierda y abajo a la derecha de cada página del PDF | — |
|
|
162
|
+
| `--density <densidad>` | `normal` o `compact` (menos espacio entre líneas y bloques) | `normal` |
|
|
163
|
+
| `--font-size <tamaño>` | Tamaño del texto en `pt` o `px`, de 6 a 24 pt; p. ej. `10pt` | `10.5pt` |
|
|
164
|
+
| `--theme <tema\|css>` | `antigravity`, `antigravity-dark`, `light`, `dark`, `academic_basic`, `tech_magazine`, `tech_magazine-dark` o un `.css` (ver abajo) | `antigravity` |
|
|
165
|
+
| `--css <archivo.css>` | CSS adicional (se puede repetir) | — |
|
|
166
|
+
| `--mermaid-theme <tema>` | `default`, `neutral`, `dark`, `forest`, `base` | el del tema de página |
|
|
167
|
+
| `--mermaid-flip <auto\|never>` | Si el autoajuste puede girar un diagrama de flujo de eje (ver abajo) | `auto` |
|
|
168
|
+
| `--no-mermaid-autofit` | Dibujar los diagramas de flujo tal como están escritos | — |
|
|
169
|
+
| `--lang <código>` | Idioma del documento; `en` para inglés (`pt`, `fr`, `de`…) | `es` |
|
|
170
|
+
| `--title <texto>` | Título del documento (muestra un bloque de título) | primer `# título` |
|
|
171
|
+
| `--config <archivo>` | Archivo de configuración | el más cercano |
|
|
172
|
+
| `--no-config` | Ignorar `mdrender.config.json` | — |
|
|
173
|
+
| `--browser <ruta>` | Ruta a Chrome/Edge/Chromium (o variable `MDRENDER_BROWSER`) | autodetección |
|
|
174
|
+
| `--allow-remote` | Permitir que el PDF descargue imágenes/CSS de internet | bloqueado |
|
|
175
|
+
| `-w, --watch` | Regenerar al guardar | — |
|
|
176
|
+
| `-q, --quiet` | Mostrar solo advertencias y errores | — |
|
|
177
|
+
| `-v, --verbose` | Mostrar también configuración, navegador y tiempos | — |
|
|
177
178
|
|
|
178
179
|
**Página**: por defecto hoja **Letter vertical con márgenes de 10 mm**. Las medidas aceptan
|
|
179
180
|
`mm`, `cm`, `in` o `px`. `--margin` fija las cuatro márgenes a la vez y `--margin-top`,
|
|
@@ -219,6 +220,62 @@ En el HTML se ve a una sola columna. Chrome no ubica las figuras arriba o abajo
|
|
|
219
220
|
como en LaTeX: quedan donde aparecen en el texto, y las que ocupan las dos columnas pueden
|
|
220
221
|
dejar algo de espacio libre antes de ellas.
|
|
221
222
|
|
|
223
|
+
Qué debe cumplir un `.md` para cada uno de estos dos temas:
|
|
224
|
+
[docs/ESPECIFICACION_TEMAS.md](docs/ESPECIFICACION_TEMAS.md).
|
|
225
|
+
|
|
226
|
+
**Revista de tecnología** (`--theme tech_magazine`, o `tech_magazine-dark` con la página en
|
|
227
|
+
negro): el aspecto de una revista de divulgación tecnológica. Ejemplo:
|
|
228
|
+
[`examples/revista-tecnologia.md`](examples/revista-tecnologia.md) →
|
|
229
|
+
[`examples/revista-tecnologia.pdf`](examples/revista-tecnologia.pdf).
|
|
230
|
+
|
|
231
|
+
- **Portada a sangre**: con `title` en el front matter, la primera página es una portada con
|
|
232
|
+
una imagen de borde a borde, el nombre de la revista arriba, la etiqueta (`kicker`), el
|
|
233
|
+
título, la bajada (`subtitle`) y la firma (`author` y `date`). La portada no lleva
|
|
234
|
+
encabezado ni pie.
|
|
235
|
+
- Inter de 300 a 800 en una columna amplia sin justificar, y la serifa
|
|
236
|
+
[Newsreader](https://fonts.google.com/specimen/Newsreader) en la bajada, la letra capitular
|
|
237
|
+
del primer párrafo y las citas destacadas (`> cita`).
|
|
238
|
+
- Las alertas (`> [!NOTE]`) son recuadros grises redondeados: su primera línea en negrita hace
|
|
239
|
+
de título. Las tablas son fichas técnicas, el código va en una tarjeta oscura y `---` se ve
|
|
240
|
+
como «• • •».
|
|
241
|
+
- Imágenes solas como figuras con esquinas redondeadas y su texto alternativo como leyenda.
|
|
242
|
+
- Pie con el nombre de la revista y la fecha a la izquierda y el número de página a la
|
|
243
|
+
derecha; `--header` y `--footer` aceptan además `{magazine}`.
|
|
244
|
+
|
|
245
|
+
Campos del front matter (o de `mdrender.config.json`) para la portada:
|
|
246
|
+
|
|
247
|
+
| Campo | Qué hace | Por defecto |
|
|
248
|
+
| --------------- | ---------------------------------------------------------------------------------------- | ------------------------------ |
|
|
249
|
+
| `magazine-name` | Nombre de la revista: aparece en la portada y el pie, y elige la carpeta de imágenes | `AlphaZeroChess` |
|
|
250
|
+
| `cover` | Número de la imagen de portada (`2` o `"02"` toma `cover02.png`) | una al azar en cada conversión |
|
|
251
|
+
| `cover-text` | `top` o `bottom`: dónde va el texto de la portada | `top` |
|
|
252
|
+
| `cover-ink` | `dark` o `light`: texto oscuro sobre imágenes claras o blanco sobre oscuras | `light` (ver abajo) |
|
|
253
|
+
| `accent` | Color de acento: capitular, títulos pequeños, líneas (`"#2f6bff"`, `rgb(…)`, un nombre…) | el de la revista, o `#2f6bff` |
|
|
254
|
+
|
|
255
|
+
Las imágenes se buscan en `tech_magazine/<magazine-name>/`, primero junto al `.md` y si no,
|
|
256
|
+
entre las que trae mdrender (hoy, `AlphaZeroChess` con 4 portadas). El número de una imagen es
|
|
257
|
+
el último grupo de cifras de su nombre: `cover03.png`, `portada-3.jpg`. Admite PNG, JPEG, WebP,
|
|
258
|
+
AVIF y SVG.
|
|
259
|
+
|
|
260
|
+
Un `magazine.json` opcional en esa carpeta fija el acento de la revista y, para cada portada, la
|
|
261
|
+
tinta y el velo detrás del texto. Lo que diga para una portada prevalece sobre `cover-ink`,
|
|
262
|
+
porque la imagen decide qué color se lee sobre ella. En `AlphaZeroChess`, las portadas 1 y 3
|
|
263
|
+
llevan texto oscuro y la 2 y la 4 texto claro:
|
|
264
|
+
|
|
265
|
+
```json
|
|
266
|
+
{
|
|
267
|
+
"accent": "#2f6bff",
|
|
268
|
+
"covers": {
|
|
269
|
+
"1": { "ink": "dark", "veil": "rgba(255, 255, 255, 0.6)" },
|
|
270
|
+
"2": { "ink": "light", "veil": "rgba(8, 14, 28, 0.85)" }
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Sin `title` no hay portada y el documento empieza con el primer párrafo. Con una portada al
|
|
276
|
+
azar, cada conversión puede salir distinta: fija `cover` para que el PDF sea siempre igual.
|
|
277
|
+
Las imágenes van tal cual en el PDF: una PNG de portada de 2 MB suma unos 2 MB.
|
|
278
|
+
|
|
222
279
|
**Marca de agua**: dos marcas con el degradado azul → cian → violeta del design system
|
|
223
280
|
Anti-Gravity, cada una por separado y solo en el PDF:
|
|
224
281
|
|
|
@@ -335,6 +392,12 @@ resumen se separan con una línea en blanco.
|
|
|
335
392
|
- Si una fórmula o diagrama tiene un error, el documento se genera igual con una caja roja en
|
|
336
393
|
su lugar, se informa `error: archivo.md:LÍNEA: mensaje` y el comando termina con código `2`.
|
|
337
394
|
|
|
395
|
+
**Acabado de los diagramas**: en todos los temas, las figuras de Mermaid tienen las esquinas
|
|
396
|
+
ligeramente redondeadas (rectángulos, rombos, hexágonos, paralelogramos, trapecios, banderas,
|
|
397
|
+
subgraphs, actores y notas), los títulos de los subgraphs van en negrita, y el relleno de figuras
|
|
398
|
+
y subgraphs conserva su color pero es algo transparente, de modo que se ven el fondo de la página
|
|
399
|
+
y las marcas de agua.
|
|
400
|
+
|
|
338
401
|
**Autoajuste de diagramas de flujo**: en el PDF, un diagrama más ancho que la columna o más alto
|
|
339
402
|
que la página se reduce entero, y su texto puede quedar diminuto. Por eso mdrender dibuja cada
|
|
340
403
|
`flowchart`/`graph` con varios anchos de ajuste de las etiquetas y se queda con el que imprime el
|
|
@@ -414,6 +477,6 @@ cambios: [CHANGELOG.md](CHANGELOG.md).
|
|
|
414
477
|
|
|
415
478
|
## Licencia
|
|
416
479
|
|
|
417
|
-
[MIT](LICENSE). Manrope, Inter, JetBrains Mono
|
|
480
|
+
[MIT](LICENSE). Manrope, Inter, JetBrains Mono, STIX Two Text y Newsreader se distribuyen bajo la
|
|
418
481
|
[SIL Open Font License 1.1](https://openfontlicense.org); los ejecutables incluyen
|
|
419
482
|
`THIRD-PARTY-NOTICES.txt` con las licencias de todos los componentes.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/* mdrender magazine theme, dark page (tech_magazine-dark): loaded after theme-tech-magazine.css. */
|
|
2
|
+
|
|
3
|
+
:root {
|
|
4
|
+
--tm-bg: #000000;
|
|
5
|
+
--tm-ink: #f5f5f7;
|
|
6
|
+
--tm-ink-secondary: #d2d2d7;
|
|
7
|
+
--tm-ink-muted: #98989d;
|
|
8
|
+
--tm-hairline: #38383a;
|
|
9
|
+
--tm-surface: #1c1c1e;
|
|
10
|
+
--tm-code-bg: #1c1c1e;
|
|
11
|
+
/* The accent lightened so it reads on black. */
|
|
12
|
+
--tm-accent-text: color-mix(in srgb, var(--tm-accent) 72%, white);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Pictures drawn on a light card keep it, outlined so they do not float. */
|
|
16
|
+
figure img,
|
|
17
|
+
.figure img {
|
|
18
|
+
box-shadow: 0 0 0 1px #2c2c2e;
|
|
19
|
+
}
|