Künstliche Intelligenz
Quarkdown 2.4 macht Markdown programmierbar
Mit Quarkdown 2.4 erhält das Dokumentensatzsystem eine der bislang größten funktionalen Erweiterungen. Im Mittelpunkt steht ein als leicht experimentell gekennzeichnetes System, mit dem Anwender erstmals die eingebauten Markdown-Elemente selbst erweitern können. Dadurch lassen sich Verhalten und Darstellung von Überschriften, Links oder Absätzen über globale Regeln anpassen. Zudem bringt die Version neue Primitive für Absätze, Formeln und Links, erweitert die Styling-Möglichkeiten und enthält mehrere Änderungen an der Funktionssyntax sowie Performance-Optimierungen.
Weiterlesen nach der Anzeige
Quarkdown ist ein Open-Source-Dokumentensatzsystem, das Markdown um eine Skript- und Layoutsprache erweitert. Damit lassen sich aus einer Markdown-ähnlichen Syntax komplexe Dokumente mit Variablen, Funktionen, Bedingungen und eigener Formatierung erzeugen. Das Projekt richtet sich vor allem an Anwender, die programmierbare Dokumente erstellen möchten, und orientiert sich in Teilen an Konzepten moderner Satzsysteme wie Typst.
Markdown-Elemente erweitern
Die wichtigste Neuerung von Quarkdown 2.4 ist ein experimentelles System für sogenannte Element-Stylings. Dahinter verbirgt sich die Möglichkeit, Primitive des Systems mit .extend zu erweitern. Die Funktion existiert bereits seit Version 2.2 zum Überschreiben eigener Funktionen. Mit Quarkdown 2.4 lässt sie sich erstmals auch direkt auf die eingebauten Markdown-Elemente anwenden. Erweitert der Nutzer etwa das Primitiv `.heading`, betrifft dies automatisch alle Überschriften, die er mit der #-Syntax schreibt.
Nach Angaben des Projekts gilt Version 2.4 als eines der wichtigsten Releases seit Bestehen von Quarkdown; das neue Feature orientiert sich konzeptionell an den #show rules des Dokumentensatzsystems Typst. Ähnlich wie CSS, aber tiefer ansetzend, greifen die Regeln direkt in die interne Dokumentstruktur (Abstract Syntax Tree, AST) ein, bevor das Dokument gesetzt wird. Zunächst unterstützt die Funktion Überschriften, Absätze, Links, Abbildungen, Bilder, mathematische Ausdrücke sowie Seitenumbrüche. Langfristig sollen sämtliche Markdown-Elemente auf entsprechenden Primitiven basieren.
Ergänzend führt Version 2.4 die neuen Primitive .paragraph, .math und .link ein. Sie bilden künftig die Grundlage für Markdown-Absätze, mit $...$ markierte mathematische Ausdrücke sowie Links und lassen sich ebenfalls über .extend anpassen.
Mehr Styling und bedingte Erweiterungen
Weiterlesen nach der Anzeige
Mehrere Primitive erhalten zudem umfangreiche Styling-Eigenschaften, die bislang Containern vorbehalten waren. Dazu zählen unter anderem Vorder- und Hintergrundfarben, Rahmen, Innenabstände und Schriftgrößen. Überschriften, Absätze, Formeln und Links lassen sich dadurch direkt gestalten, ohne sie zusätzlich in Container-Elemente einzubetten.
Neu ist außerdem ein where-Parameter für .extend. Damit lassen sich Erweiterungen an Bedingungen knüpfen. So können beispielsweise nur Überschriften der Ebenen 1 und 2 eine besondere Hintergrundfarbe erhalten, während tiefere Überschriften unverändert bleiben. Ebenso lassen sich etwa externe Links automatisch mit einem Symbol kennzeichnen.
Eine weitere Funktion namens .match durchsucht Inline-Inhalte anhand regulärer Ausdrücke und ersetzt jeden Treffer durch den Rückgabewert einer Lambda-Funktion. Das erleichtert automatisierte Formatierungen oder die gezielte Hervorhebung bestimmter Textmuster im gesamten Dokument.
Syntax vereinfacht und Verarbeitung beschleunigt
Mit Quarkdown 2.4 vereinfacht das Projekt außerdem die Syntax für Lambda-Funktionen. Inline-Lambdas benötigen den Präfix @lambda nicht mehr, sofern der Zielparameter bereits als Lambda definiert ist. Zur Wahrung der Kompatibilität akzeptiert Quarkdown die bisherige Schreibweise weiterhin.
Darüber hinaus überarbeitet die neue Version die Bindung von Funktionsargumenten. Native Funktionen können nun explizit festlegen, welcher Parameter den Funktionsrumpf aufnimmt. Das gilt unter anderem für die Funktionen .text und .heading. Zusätzlich unterstützen jetzt auch Inline-Funktionsaufrufe Body-Argumente, die bislang nur in Blockaufrufen zulässig waren.
Schließlich haben die Entwickler die Zuordnung von Parametern intern optimiert. Die Argumente werden nun in einem einzigen Durchlauf verarbeitet, was die Ausführung von Dokumenten beschleunigen soll.
(fo)