- Ein modernes Typografie-System, das die bestehende Markdown-Syntax erweitert, um mühelos Dokumente in verschiedensten Formaten wie Bücher, wissenschaftliche Arbeiten, Folien und Präsentationen zu erstellen
- Integriert fortgeschrittene Funktionen wie Funktionsunterstützung, Variablen, Bedingungen/Schleifen und eine Standardbibliothek direkt in Markdown und hebt sich damit bei Erweiterbarkeit und Automatisierung von klassischem Markdown oder LaTeX ab
- Aus einer einzigen Quelldatei lassen sich verschiedene Ausgaben wie HTML, PDF, Folien (reveal.js) und paginierte Bücher (paged.js) erzeugen; besonders geeignet für codebasierte Content-Erstellung
- Mit Scripting-Funktionen und einer ausdrucksstarken erweiterten Syntax lassen sich auch komplexe oder dynamische Inhalte frei umsetzen
- Bietet eine Umgebung mit REPL, Live-Vorschau und schneller Kompilierung, wodurch Dokumentbearbeitung und Debugging in Echtzeit möglich sind
- Gegenüber bestehenden Tools punktet es bei Scripting-Funktionen, Dokumentkontrolle und einer einfachen Lernkurve im Vergleich zu Markdown, LaTeX, Typst, AsciiDoc und MDX
- Ohne separate Entwicklungsumgebung oder komplizierte Konfiguration auf allen wichtigen Betriebssystemen nutzbar, sofern Java 17 oder höher vorhanden ist
About
- Quarkdown ist ein modernes Satzsystem, das der Grundstruktur von Markdown Funktionen und erweiterte Syntax hinzufügt, damit Nutzer von einfachem Text bis hin zu Büchern, wissenschaftlichen Arbeiten und Folien leicht hochwertige Ergebnisse in verschiedensten Formaten erstellen können
- Es basiert auf CommonMark und GFM und unterstützt neben eigener Syntax auch Funktionen, Variablen und sogar benutzerdefinierte Bibliotheken
- Es bietet eine eigene Syntax namens Quarkdown Flavor
- Durch eine Turing-vollständige funktionale Erweiterungssyntax fügt es Markdown fortgeschrittene Funktionen wie Funktionen, Bedingungen und Schleifen hinzu
- Mit .qmd-Bibliotheken lassen sich verschiedene Funktionen wie Layout, Ein-/Ausgabe, Mathematik, Bedingungen und Schleifen nutzen
- Auch bei komplexen Dokumentstrukturen oder dynamischen Inhalten lassen sich Erweiterbarkeit und Produktivität steigern
Hauptmerkmale und Einsatzmöglichkeiten
- Unterstützung für verschiedene Ausgabeformate wie HTML, Folien, Bücher (Paged) und PDF
- Der Dokumenttyp kann per Funktionsaufruf wie
.doctype {slides} oder .doctype {paged} festgelegt werden
- Integration mit Open-Source-basierten Engines wie reveal.js und paged.js
- Scripting und dynamische Inhalte
- Einführung programmatischer Elemente wie Funktionen, Variablen, Bedingungen und Schleifen
- Bsp.)
.function {greet} ... .greet {world} from:{iamgio}
- Live-Vorschau und schnelle Kompilierung
- Bietet Echtzeit-Vorschau sowie Dateibeobachtung (Watch) bei Änderungen
- Steigert die Arbeitseffizienz mit den Optionen
-p --preview und -w --watch
- Vergleich mit anderen Dokument-Tools
- Geringere Lernkurve als LaTeX und bessere funktionale Erweiterbarkeit als Markdown
- Auch im Vergleich mit Typst, AsciiDoc und MDX stark bei Scripting und Ausdruckskraft
Unterstützte Ziele
- HTML
- Normale Ausgabe (Standard)
- Folien (mit reveal.js)
- Buch-/Paper-Format (mit paged.js, Webserver erforderlich)
- PDF
- Alle von HTML unterstützten Dokumenttypen und Funktionen können unverändert als PDF ausgegeben werden
- Ausführliche Informationen zum PDF-Export finden sich im Wiki-Dokument
- Steuerung des Ausgabeformats über Funktionsaufrufe wie
.doctype {slides} und .doctype {paged}
Vergleich
|
Quarkdown |
Markdown |
LaTeX |
Typst |
AsciiDoc |
MDX |
| Kürze·Lesbarkeit |
✔ |
✔ |
✗ |
✔ |
✔ |
✔ |
| Vollständige Dokumentkontrolle |
✔ |
✗ |
✔ |
✔ |
✗ |
✗ |
| Scripting-Funktionen |
✔ |
✗ |
teilweise unterstützt |
✔ |
✗ |
✔ |
| Ausgabe als Buch/Artikel |
✔ |
✗ |
✔ |
✔ |
✔ |
3rd party |
| Präsentationsausgabe |
✔ |
✗ |
✔ |
✔ |
✔ |
3rd party |
| Lernkurve |
grün |
grün |
rot |
orange |
grün |
grün |
| Zielunterstützung |
HTML, PDF |
HTML |
PDF, PostScript |
PDF |
HTML, PDF, ePub |
HTML |
5 Kommentare
Wegen der Tabelle scheint das mobile Layout kaputtzugehen.
Wenn man
.topic_contentsmin-width: 0gibt, wird es behoben. Wegenmin-widthist das wirklich ziemlich lästig ...Ah, ich habe es auf eine andere Weise gelöst. Vielen Dank!
Vielen Dank für das schnelle Feedback~
Hacker-News-Kommentare
Mein FOSS-Texteditor KeenWrite verwendet einen ähnlichen Ansatz, um Markdown in XHTML, TeX und PDF umzuwandeln
Die Softwarearchitektur zeigt, wie man eine Kette von Prozessoren entwerfen kann
Ich habe KeenWrite gebaut, um beim Schreiben von Science-Fiction Variablen für Dinge wie Charakternamen oder Orte verwenden zu können
Mehr dazu im Tutorial
Für Leute, die immer noch pandoc und Shell-Skripte verwenden, erklärt die Serie Typesetting Markdown, wie man eine skriptbasierte Infrastruktur aufbaut, um Markdown in PDF umzuwandeln
Informationen zu KeenWrite selbst gibt es hier
Das Architekturdiagramm ist hier zu finden
Es wäre interessant, Typst mit diesem Projekt zu vergleichen, da Typst in letzter Zeit viel Aufmerksamkeit bekommen hat, daher ist es überraschend, dass Typst in der Feature-Vergleichsmatrix überhaupt nicht erwähnt wurde
Insgesamt wirken die beiden Projekte sehr ähnlich
Ich frage mich, ob die Vergleichstabelle korrekt ist – Link
Ich denke, LaTeX hat ganz klar vollständige Skripting-Fähigkeiten, auch wenn es natürlich qualvoll zu benutzen sein kann
Ich bin skeptisch gegenüber der Behauptung, die obskure Syntax von Quarkdown sei knapper und besser lesbar als Typst
Ich glaube auch nicht, dass die Lernkurve leichter ist als bei Typst, die beiden wirken fast gleich
Soweit ich weiß, kann LaTeX mit tex4ht auch HTML erzeugen
Niedriger kann die Einstiegshürde kaum sein
Natürlich ist die Lernkurve nicht dasselbe wie die Einstiegshürde, aber beides überschneidet sich erheblich
Und die „Lernkurve“ ist eine subjektive Eigenschaft
Nimmt man sie in eine Vergleichstabelle auf, ist diese von Anfang an verzerrt
Klare Funktionen sind objektiver, auch wenn manche Funktionen je nach Produktcharakter gar nicht nötig sein müssen
Die Vergleichstabelle ist offensichtlich ungenau
Die Beispielausgabe sieht großartig aus
Aber ich mag es generell nicht besonders, wenn eine Template-Sprache durch Funktionsaufrufe oder zusätzliche Komplexität anwächst
Natürlich ergibt das in diesem Kontext vielleicht Sinn
Wenn man sie aber zusammen mit einer anderen Sprache verwenden muss, etwa für Server-Side-Rendering oder datengenerierte Dokumente, verbringt man zu viel Zeit damit, zwischen zwei Sprachen hin- und herzuwechseln
Template-Sprachen sind nie so mächtig wie „echte“ Sprachen
Deshalb bevorzuge ich Ansätze wie JSX oder JavaScripts tagged template literals
Es ist besser, eine echte Programmiersprache zu verwenden und gleichzeitig den Dokumentkontext zu verstehen, sodass man sich weniger um Escaping-Probleme wie XSS sorgen muss
Ich frage mich, worin sich Quarto und dieses Projekt unterscheiden
Die Namen sind ähnlich, die Dateiendung auch, und die Zielrichtung scheint vergleichbar, aber die Funktionen wirken sogar geringer – Quarto
Laut FAQ wird es von denselben Entwicklern gebaut
Ein Freund hat mir vor ein paar Tagen gezeigt, wie er sämtliche Vorlesungsskripte in Quarto neu schreibt und sogar Präsentationen einbettet, das sah ziemlich sauber aus
Dass Quarto auch gut mit R Studio und Jupyter Notebook zusammenarbeitet, ist ein großer Vorteil
Ich halte das für eine Art konvergente Evolution
Ich finde die Erklärung interessant, dass das, was wie ein „planet“ aussehen könnte, in Wirklichkeit ein Quark ist, genauer gesagt ein Down-Quark
Cooles Projekt, aber wegen QuarkXPress, einer bekannten Marke in der Publishing-Branche, ist es etwas riskant, das Wort „Quark“ als Namen für ein Publishing-System zu verwenden
Relevante Markeneinträge gibt es hier und hier
(Ich frage mich auch, warum dasselbe Wort als zwei Marken eingetragen ist)
In jeder Diskussionsrunde zu diesem Thema bestehen gefühlt immer 70 % der Kommentare aus „Warum nicht einfach LaTeX?“, deshalb sage ich gleich vorweg:
Ich brauche definitiv ein modernes Markdown-basiertes Satzsystem
Ich würde gerne mehr Versuche sehen, LaTeX zu ersetzen
LaTeX ist wirklich unbequem und altmodisch, und ich hätte gern ein System, das Markup freier handhabbar macht
Selbst wenn die Syntax mit wachsendem Funktionsumfang länger wird, gibt es eindeutig Bedarf für einen Bereich, der etwas mächtiger ist als Markdown
Aber dieses Projekt ist offenbar nicht das, wonach ich gesucht habe
Den Beispielen nach wirkt es eher wie „ein bisschen mächtiger als Markdown“ und nicht wie ein vollwertiger Ersatz für LaTeX (oder Typst)
Solche Dokumentensysteme müssen sich „wirklich geschmeidig“ benutzen lassen, und so fühlt sich das hier nicht an
Das ist für die Verbreitung kein gutes Zeichen
Sie sollte möglichst mit normalem Markdown kompatibel sein, aber wenn Funktionsargumente per Einrückung übergeben werden müssen, wird am Ende wohl das ganze Dokument eingerückt, obwohl Markdown-Erweiterungspunkte normalerweise eher als Codeblöcke natürlicher wirken (im Stil von ```plugin-name`)
Durch die Syntaxunterschiede muss man womöglich die gesamte Struktur des Dokuments ändern
Wenn man ein Dokument von Anfang an für die Veröffentlichung erstellt, kann man auch gleich mit LaTeX arbeiten
Am nützlichsten wäre so etwas, wenn es gut in Notiz-Apps integriert wäre
Manche machen das vielleicht in Emacs oder Vim, aber selbst ich als Retro-Typ muss zugeben, dass ich am Ende zu etwas wie Obsidian gewechselt bin
Es wäre gut, wenn man die Dokumentstruktur in einer Notiz-App besser steuern oder Publishing-Funktionen anbinden könnte
Als Standalone-Tool frage ich mich, warum ich das überhaupt verwenden sollte
Immerhin hat Typst wenigstens einen Online-Editor, und den benutzt auch jeder
Der Schlüssel ist, dem Dokument keinen unnötigen Kram hinzuzufügen
Solche Systeme, einschließlich Typst, sind im Grunde für den Satz langer Texte wie wissenschaftlicher Arbeiten gedacht
Ich wünschte, sie wären eine Alternative zu HTML, aber ich habe auch Typst ausprobiert, und es wirkt, als würden sich die Autoren fast nur für „wissenschaftliche Arbeiten oder lange Texte“ interessieren
Ich möchte auch Formulare, Rechnungen, Flyer oder Visitenkarten erstellen, aber solche Elemente scheinen außerhalb des Interesses zu liegen
(Eigentlich dachte ich an Sile, aber bei Typst ist es ähnlich)
Typst habe ich nicht tiefgehend verwendet, weil es kommerziell ist
Vor allem interaktive Formulare sind offenbar bereits in Arbeit (das Backend des PDF-Writers unterstützt teilweise schon etwas davon)
In einiger Zeit wird Typst vermutlich Formularfunktionen haben – siehe Issue
Bei Rechnungen, Werbeflyern oder Visitenkarten müssen kleine Elemente präzise in der Seitenmitte oder am Rand positioniert werden, und dafür sind WYSIWYG-Tools bequemer
Nur mit textbasiertem Satz gibt es zu viel Trial-and-Error
Bei Boulevardzeitungen etwa muss Text nicht in Rechtecken, sondern entlang von Bildern oder Ausschnitten fließen und sich darum legen, und nur anhand von Koordinaten ohne visuelle Kontrolle ist das extrem schwierig
Ich habe es über cargo in Rust installiert und nutze es problemlos ohne den Online-Editor
Es ist ziemlich einfach, damit verschiedene Arten von Dokumenten zu erstellen
Ich nutze es bereits als Ersatz für die Erstellung von Folien und Handouts
Einige Features wie Textumbruch um Bilder oder Textfluss fehlen noch, aber das ist auch in TeX schwierig und soll in Typst später noch ergänzt werden
Poster-Beispiel
Das sieht im Grunde fast genauso aus wie reStructuredText (rST)
Die Funktionssyntax von Quarkdown (
.somefunction {argument} {argument} body) und die von rST (.. somefunction:: {argument} {argument} body) sind sehr ähnlichEs gibt zu viele Dinge wie Markdown, Quarkdown, Typst usw., und nichts scheint standardisiert zu sein, deshalb lande ich am Ende wieder bei HTML+CSS
Ich habe es nicht direkt verwendet, denke aber ziemlich ernsthaft darüber nach
Die anderen Formate sind komplex und haben eine Lernkurve, was das eigentliche Schreiben behindert
In XML kann ich meine Tags frei definieren und mit einem Parser verschiedene Strukturen erzeugen, etwa die automatische Generierung von Fußnoten
Mich würde interessieren, ob jemand so einen Ansatz schon genutzt hat
Das Problem entsteht, wenn zu viele Leute anfangen, Systeme direkt daraufzusetzen, obwohl sie eigentlich „etwas Komplexeres“ lösen wollen
Ich denke, sie versuchen, ein ursprünglich für einfache Zwecke gedachtes System zu „verbessern“, ohne dessen Grenzen zu akzeptieren, und erzeugen stattdessen nur unnötige Wiederholungen und Verwirrung
Es ist kein Mangel an Funktionen, sondern ein Problem, weil man den für den Entwurf vorgesehenen Rahmen verlässt
Selbst wenn Windows-Notepad Formatierungsfunktionen bekäme, wäre das für mich im Kern keine Verbesserung
Notepad hatte schließlich ursprünglich eine andere Rolle
Wenn man Emacs nicht hasst, ist das eine gute Wahl
Dann muss man sich nicht Hunderte Frameworks und komplexe Syntaxen merken
Es reicht schon, einer KI den Befehl zu geben, einen Markdown-zu-HTML-Konverter zu erzeugen
Schon in The Art of Unix Programming von 2003 stand, dass das direkte Bearbeiten von XML schmerzhaft sei und man deshalb allerlei neue Formate und Parser schaffen müsse