- Un sistema moderno de tipografía que amplía la sintaxis existente de Markdown para crear fácilmente documentos en diversos formatos como libros, artículos académicos, diapositivas y presentaciones
- Integra directamente en Markdown funciones avanzadas como soporte para funciones, uso de variables, condicionales/bucles y biblioteca estándar, lo que le da una ventaja en extensibilidad y automatización frente a Markdown tradicional o LaTeX
- Con un solo archivo fuente puede generar múltiples salidas como HTML, PDF, diapositivas (reveal.js) y libros paginados (paged.js), con un enfoque especial en la creación de contenido basada en código
- Con funciones de scripting y una sintaxis extendida expresiva, permite implementar libremente contenido complejo o dinámico
- Ofrece un entorno de REPL, vista previa en vivo y compilación rápida, lo que permite edición y depuración de documentos en tiempo real
- En comparación con herramientas existentes, destaca frente a Markdown, LaTeX, Typst, AsciiDoc y MDX en aspectos como scripting, control del documento y facilidad de aprendizaje
- Puede usarse en los principales sistemas operativos con solo Java 17 o superior, sin necesidad de un entorno de desarrollo aparte ni configuraciones complejas
About
- Quarkdown es un sistema moderno de composición tipográfica diseñado para que el usuario pueda crear fácilmente resultados de alta calidad en diversos formatos, desde texto simple hasta libros, artículos académicos y diapositivas, al añadir funciones y sintaxis extendida a la estructura base de Markdown
- Está desarrollado sobre CommonMark y GFM, y además soporta su propia sintaxis, funciones, variables e incluso bibliotecas definidas por el usuario
- Ofrece una sintaxis propia llamada Quarkdown Flavor
- A través de una sintaxis extendida de funciones Turing-completa, añade a Markdown funciones avanzadas como funciones, condicionales y bucles
- Con las bibliotecas .qmd se pueden usar diversas funciones como diseño, entrada/salida, matemáticas, condicionales y bucles
- Incluso cuando se necesitan estructuras documentales complejas o contenido dinámico, puede aumentar la extensibilidad y la productividad
Características principales y usos
- Soporta diversos formatos de salida como HTML, diapositivas, libros (Paged) y PDF
- Es posible especificar el tipo de documento mediante llamadas a funciones como
.doctype {slides} y .doctype {paged}
- Integración con motores basados en open source como reveal.js y paged.js
- Scripting y contenido dinámico
- Introduce elementos de programación como funciones, variables, condicionales y bucles
- ej.)
.function {greet} ... .greet {world} from:{iamgio}
- Vista previa en vivo y compilación rápida
- Ofrece vista previa en tiempo real y detección de cambios en archivos (Watch)
- Las opciones
-p --preview y -w --watch aumentan la eficiencia del trabajo
- Comparación con otras herramientas de documentación
- Tiene una curva de aprendizaje más baja que LaTeX y una mejor extensibilidad funcional que Markdown
- También destaca en scripting/expresividad frente a Typst, AsciiDoc y MDX
Objetivos compatibles
- HTML
- Salida general (predeterminada)
- Diapositivas (usando reveal.js)
- Formato de libro/artículo académico (usando paged.js, requiere servidor web)
- PDF
- Todos los tipos de documento y funciones que soporta HTML pueden exportarse tal cual a PDF
- Para más detalles sobre la salida en PDF, consulta la documentación de la wiki
- Es posible controlar el formato de salida mediante llamadas a funciones como
.doctype {slides} y .doctype {paged}
Comparación
|
Quarkdown |
Markdown |
LaTeX |
Typst |
AsciiDoc |
MDX |
| Concisión y legibilidad |
✔ |
✔ |
✗ |
✔ |
✔ |
✔ |
| Control total del documento |
✔ |
✗ |
✔ |
✔ |
✗ |
✗ |
| Funciones de scripting |
✔ |
✗ |
Soporte parcial |
✔ |
✗ |
✔ |
| Salida en formato libro/artículo |
✔ |
✗ |
✔ |
✔ |
✔ |
3rd party |
| Salida para presentaciones |
✔ |
✗ |
✔ |
✔ |
✔ |
3rd party |
| Curva de aprendizaje |
verde |
verde |
rojo |
naranja |
verde |
verde |
| Soporte de objetivos |
HTML, PDF |
HTML |
PDF, PostScript |
PDF |
HTML, PDF, ePub |
HTML |
5 comentarios
Parece que, por la tabla, el diseño en móvil se rompe.
Se arregla dándole
min-width: 0a.topic_contents.min-widthrealmente da muchos dolores de cabeza...Ah, lo resolví de otra manera. ¡Gracias!
¡Gracias por la rápida retroalimentación~
Comentarios en Hacker News
Mi editor de texto FOSS, KeenWrite, usa un enfoque similar para convertir Markdown a XHTML, TeX y PDF
La arquitectura del software muestra cómo se puede diseñar una cadena de procesadores
La razón por la que hice KeenWrite fue para poder usar variables como nombres de personajes o lugares al escribir ciencia ficción
Para más detalles, vean el tutorial
Para quienes todavía usan pandoc y scripts de shell, en la serie Typesetting Markdown se explica cómo construir una infraestructura basada en scripts para convertir Markdown a PDF
Se puede ver más información sobre KeenWrite aquí
El diagrama de arquitectura se puede consultar aquí
Sería interesante compararlo con Typst, que ha recibido mucha atención últimamente, así que sorprende que Typst no se mencionara para nada en la matriz comparativa de funciones
En general, los dos proyectos se ven muy similares
Me pregunto si la tabla comparativa es precisa – enlace
Creo que LaTeX claramente sí tiene capacidades completas de scripting, aunque por supuesto sea doloroso de usar
Soy escéptico ante la afirmación de que la sintaxis críptica de Quarkdown sea más concisa y legible que la de Typst
Tampoco creo que la curva de aprendizaje sea más fácil que la de Typst; se ven casi iguales
También creo que LaTeX puede generar HTML con tex4ht
No se puede bajar mucho más la barrera de entrada
Claro, la curva de aprendizaje no es exactamente lo mismo que la barrera de entrada, pero se superponen bastante
Y “curva de aprendizaje” es una característica subjetiva
Si la pones en una tabla comparativa, inevitablemente arranca sesgada
Las funciones concretas son más objetivas, aunque a veces por la naturaleza del producto cierta función simplemente no hace falta
La tabla comparativa es claramente inexacta
La salida de ejemplo se ve muy bien
Pero nunca me ha gustado demasiado cuando un lenguaje de plantillas crece en llamadas a funciones o en complejidad
Claro, en este contexto quizá tenga sentido
Pero si tienes que usarlo junto con otro lenguaje, por ejemplo para renderizado del lado del servidor o generación de documentos basada en datos, terminas perdiendo demasiado tiempo yendo y viniendo entre dos lenguajes
Los lenguajes de plantillas nunca son tan poderosos como un lenguaje “real”
Por eso prefiero enfoques como JSX o los tagged template literals de JavaScript
Me parece mejor usar un lenguaje de programación real y aun así entender el contexto del documento, de modo que haya menos preocupación por escapes (como XSS)
Me pregunto en qué se diferencia este proyecto de Quarto
El nombre es parecido, la extensión también, y la dirección general parece similar, pero hasta da la impresión de tener menos funciones – Quarto
En el FAQ dicen que lo desarrolló el mismo equipo
Hace unos días un amigo me mostró cómo estaba reescribiendo todos sus guiones de clase en Quarto e incluso incrustando presentaciones, y se veía bastante limpio
El hecho de que Quarto se integre bien con R Studio y Jupyter Notebook es una gran ventaja
Creo que esto es una especie de evolución convergente
Me parece interesante la explicación de que lo que puede parecer un “planet” en realidad es un quark, específicamente un quark down
Es un proyecto cool, pero por la famosa marca QuarkXPress dentro de la industria editorial, usar la palabra “Quark” para nombrar un sistema de publicación parece un poco arriesgado
La información de marcas registrada relacionada se puede ver aquí, aquí
(También me pregunto por qué hay dos marcas registradas para la misma palabra)
En todos los hilos de discusión de este tema siempre el 70% de los comentarios son del tipo “¿por qué no usar LaTeX?”, así que voy a dejar clara mi postura desde el inicio
Yo sí necesito un sistema moderno de composición basado en Markdown
Ojalá hubiera varios intentos de reemplazar LaTeX
LaTeX de verdad es incómodo y anticuado, y me gustaría un sistema donde se pudiera hacer el marcado con más libertad
Aunque se vuelva más verboso por tener muchas funciones, claramente hace falta algo en esa zona apenas un poco más potente que Markdown
Pero siento que este proyecto no es lo que estaba buscando
Por los ejemplos, parece inclinarse a ser apenas un poco más potente que Markdown, y no un reemplazo total de LaTeX (o de Typst)
Un sistema de documentos de este tipo tiene que sentirse “realmente fluido” al usarlo, y este no da esa impresión
Eso no ayuda mucho a su difusión
Me gustaría que fuera compatible al máximo con Markdown normal, pero si exige indentación para los argumentos de función, parece que terminarías indentando todo el documento, y en cambio los puntos de extensión de Markdown normalmente encajan mejor como bloques de código (del estilo ```plugin-name`)
Por las diferencias de sintaxis, quizá haya que rehacer la estructura completa del documento
Si el documento se hace directamente con fines de publicación, entonces igual podrías trabajar simplemente en LaTeX
Donde más utilidad le veo es integrado de verdad en una app para tomar notas
Habrá gente que lo haga en Emacs o Vim, pero incluso yo, que soy bastante retro, admito que al final me pasé a algo como Obsidian
Estaría bien una parte que permitiera controlar mejor la estructura del documento desde la app de notas o conectarlo con funciones de publicación
Si es una herramienta independiente, me cuesta ver por qué debería usarla
Al menos Typst sí tiene editor en línea, y todo el mundo usa eso
La clave es no meterle cosas innecesarias al documento
Estos sistemas (incluido Typst) están pensados básicamente para composición de textos largos, como artículos académicos
Me gustaría que fueran una alternativa a HTML, pero incluso habiendo usado Typst, siento que sus autores solo piensan en “papers o textos largos”
También quiero hacer formularios, facturas, volantes, tarjetas de presentación y cosas así, pero esos elementos parecen estar fuera de su interés
(En realidad estaba pensando en Sile, pero Typst es parecido)
No he usado Typst a fondo porque es comercial
En particular, ya se comenta que los formularios interactivos están en desarrollo (el backend del pdf writer ya soporta parte de eso)
Con un poco de tiempo, parece probable que Typst implemente funciones de formularios – ver issue
Facturas, folletos publicitarios, tarjetas de presentación y similares requieren colocar elementos pequeños con precisión en el centro o en los bordes de la página, y para eso las herramientas WYSIWYG son más cómodas
Hacerlo solo con composición basada en texto implica demasiado ensayo y error
Por ejemplo, en un tabloide el texto tiene que fluir y envolverse alrededor de imágenes o recortes, no dentro de rectángulos, y hacer eso solo escribiendo coordenadas sin verlo realmente es muy difícil
Yo lo instalé con cargo en Rust y lo uso sin problema sin necesitar el editor en línea
Es bastante fácil para crear varios tipos de documentos
Yo ya lo uso como reemplazo para hacer diapositivas y folletos
Todavía faltan algunas funciones como ajuste de imágenes o flujo de texto, pero eso también es difícil en TeX y está previsto añadirlo más adelante en Typst
Ejemplo de póster
Esto simplemente se ve casi igual que reStructuredText (rST)
La sintaxis de funciones de Quarkdown (
.somefunction {argumento} {argumento} body) y la sintaxis de funciones de rST (.. somefunction:: {argumento} {argumento} body) son muy parecidasHay tantos Markdown, Quarkdown, Typst y demás, y tan poca estandarización, que al final terminé regresando a HTML+CSS
No lo he usado directamente, pero lo estoy considerando bastante en serio
Los demás formatos son complejos y tienen una curva de aprendizaje que termina interfiriendo con la escritura misma
En XML puedo definir mis propias etiquetas y, con un parser, crear muchas estructuras distintas como generación automática de notas al pie
Me pregunto si alguien ha probado un enfoque así
El problema aparece cuando demasiada gente le empieza a montar sistemas encima, intentando resolver cosas que desde el principio eran “más complejas”
Creo que toman un sistema pensado para un uso simple y, creyendo que lo están mejorando, en realidad no reconocen sus límites y solo agregan repetición y confusión innecesarias
No es una falta de funciones, sino que se está usando fuera del alcance para el que fue diseñado
Incluso si el notepad de Windows llegara a tener formato, yo no lo consideraría una mejora en esencia
Notepad tenía un propósito original por algo
Si no odias Emacs, es una buena opción
No hace falta memorizar cientos de frameworks y sintaxis complicadas en la misma medida
Hasta basta con pedirle a una IA que genere un conversor de markdown a html
Incluso en The Art of Unix Programming, publicado en 2003, se dice que editar XML directamente era doloroso y que por eso había que crear nuevos formatos y parsers