Typst – Ein Next-Gen-Textsatzsystem?


Typst ist ein relativ neues (2023) Textsatzsystem. Es wurde in der Programmiersprache Rust komplett neu geschrieben. Anlaß für diese Entwicklung (gibt es nicht schon LaTeX u.a. Textsatzsysteme?) war angeblich der hohe Einarbeitungs- und Anwendungsaufwand mit der TeX-Syntax. Man kennt es: Einige LaTeX-Pakete sind miteinander inkompatibel, und auch sonst sind Anpassungen abseits der gängigen Makros für viele Nutzer (auch für mich!) schwer verständlich. Beim TeX-Kompilieren ergeben sich zuweilen nicht nachvollziehbare Auswirkungen oder sie werden gleich mit Fehlermeldungen quittiert, für die man selbst die Foren durchsuchen muß.

Davon genervt, wurde das Rad also neu erfunden. Einfach in der Anwendung sollte es sein (so wie Markdown) und hochkonfigurierbar (so wie TeX), dabei verständliche ("sprechende") Fehlermeldungen erzeugen. Welche Vorzüge bietet nun diese Chimäre? Und ist sie für komplexe Dokumente weit genug gereift?

Was wird erzeugt?

Grundanspruch ist das Erzeugen bzw. Setzen von druckfertigen Dokumenten (meist PDF) mit erstklassigen Satzlayout, dabei mit Fokus auf wissenschaftliche Publikationen. Wie TeX bietet es daher die volle Palette an Formeldarstellungen, und kann mithilfe von zahlreichen Vorlagen (templates) in die jeweilige Darstellungsform des jeweiligen Verlages gebracht werden. Derselbe Dokumentinhalt (Definition von Titel, Autorenschaft, Abstract, Dokumentinhalt usw.) kann also mit Vorlagen in verschiedene Layouts übersetzt werden (z.B. Lebensläufe verschiedener Ausführung). Man denkt dabei gleich an austauschbare CSS-Dateien. Inwiefern bei so einem Vorhaben nicht gleich Jupyter sinnvoll ist, bleibt fraglich.


Vorteile gegenüber TeX

Welche Vorteile ergeben sich nun gegenüber TeX?

  • Die Syntax ist ausgesprochen einfach und "sprechend", ähnlich Markdown (Beispiele siehe unten). Das macht es für Anfänger verlockend, sich mit dieser Art Textsatzsystem zu beschäftigen. Im Zweifel entfällt sogar das Einrichten einer großen und komplizierten Präambel: Direkt eingegeben Wörter und Sätze werden bereits zu einem Typst-Dokument gesetzt. Der Quellcode ist durch die verkürzte Syntax auch übersichtlicher und kürzer.
  • Das gesamte Ökosystem wirkt wie "aus einem Guß" (ähnlich ConTeXt). Zwar gibt es Drittpakete, die man einbinden kann, aber insgesamt sind viel weniger Komplikationen zwischen Paketen zu erwarten, aus denen man Funktionen und Makros verwendet. Wo man bei TeX Sonderpakete einbinden muß, um beispielsweise Sonderzeichen zu erzeugen, ist das in Typst bereits alles enthalten!
  • Das Kompilieren (Setzen) des Dokuments geschieht quasi "in-situ", d.h. bereits beim Tippen sieht man im Vorschau-Fenster (meist zweigeteilte Typst-Editoren) sofort das Ergebnis. Das ist kein Vergleich zu einem TeX-Dokument, wo man das Kompilieren (ggf. mehrfach) anstößt und es einige Sekunden dauert, bis man das Ergebnis wahrnimmt. Auf diese Weise läßt sich zügig arbeiten.
  • Typst benötigt keine riesige Distribution mit hunderten Paketen. Wer lokal auf dem Desktop arbeitet, installiert sich einen Editor und kann sofort loslegen (Flatpak: ca. 50 MB, portable-Win: ca. 30 MB). Beispielsweise ist im Editor Katvan alles enthalten, was man braucht. Die Installation einer Extra-Paketesammlung entfällt.
  • Syntax-Fehler müssen im Dokument sofort behoben werden, sondern wird keine Ausgabe erzeugt. Fehlende Klammern oder unverständliche Befehle werden im Quellcode und im Log hervorgehoben. Das zwingt den Anwender dazu, sich sogleich mit dem Problem zu beschäftigen, als im Nachgang (TeX) auf Fehlersuche zu gehen.
  • Mit Verwendung von Typst endet die leidige Wahl zwischen pdfLaTeX, XeTeX und LuaTeX (und was es sonst für Abwandlungen gibt). Jedes dieser Programme hat nämlich seine Eigenheiten und speziellen Befehle, die mit den anderen inkompatibel sind.
  • Unicode-Zeichen können jederzeit direkt eingegeben werden. Das ist ein großer (und moderner) Fortschritt gegenüber pdfLaTeX, wo das nur über Umwege und nicht immer erfolgreich möglich ist.
  • Während des Kompilierens werden nicht mehr ein halbes Dutzend Metadaten erzeugt, die das Verzeichnis zumüllen.

Beispiele für vereinfachte Syntax

Listenumgebungen werden unter TeX traditionell in eine itemize- oder enumerate-Umgebung eingezäunt; jeder Anführungspunkt (oder Nummer) wird dann mit \item eingeleitet. Das ist in seiner verschachtelten Komplexität schon kurz vor HTML! Außerdem muß man peinlich genau darauf achten, die geöffneten Umgebungen wieder ordentlich zu schließen – Editor-Automatismen helfen dabei. Mit Typst reicht es (wie bei Markdown), jedem Anführungspunkt einen Bindestrich, oder jedem Nummernpunkt ein Plus voranzustellen.

Die Eingabe wörtlicher Rede ist mit Typst viel einfacher: Zwar gibt es auch unter TeX Pakete für eine erleichterte Eingabe (z.B. enquote, siehe Abbildung), aber was ist einfacher als vorne und hinten je ein doppeltes ASCII-Anführungszeichen zu setzen? In der Typst-Präambel wird dann je nach Dokumentsprache und Einstellung geregelt, ob daraus (im Deutschen gebräuchliche) Gänsefüßchen oder Guillemets werden.

Auch das Setzen von Formeln ist mit Typst vereinfacht und "sprechender".

Vergleich der Textsatzqualität

Für einen Vergleich der Satzqualität wurde derselbe Text unter denselben Bedingungen einmal mit LaTeX, einmal mit Typst und einmal mit LibreOffice Writer gesetzt. Der Text ist jeweils 11pt groß und aus der Libertine gesetzt. Die Seitenränder betragen rechts und links je 2 cm, bei einem Seitenformat von A5.

Abb. 2: Vergleich desselben Textblocks, erzeugt unter LaTeX (links), Typst (mittig) und LibreOffice Writer (rechts).

Die Satzqualität ist allgemein in Ordnung, sticht bei LaTeX aber positiv heraus: Der Satz gelingt so eng, daß er sich auf nur 15 Zeilen verteilt, während er sich bei den anderen beiden Programmen auf je 16 Zeilen erstreckt. Typst setzt dabei etwas enger, während bei LibreOffice Writer hier und da unangenehme Lücken zu sehen sind (Ursache in Abb. 3 sichtbar).

Abb. 3: Typographie im Detail: Typst setzt den Text mit sog. optischem Randausgleich (Bindestriche ragen in den weißen Seitenrand hinein), LibreOffice Writer setzt ohne optischen Randausgleich, d.h. die Trennstriche schließen mit den sonstigen Buchstaben bündig ab.

 

Beim optischen Randausgleich werden Trennstriche minimal verschoben, ohne daß das Auge eine unangenehme Störung des Blocksatzes wahrnimmt. Diese geringe Änderung führt aber zu etwas mehr "Spielraum" beim Verteilen der Buchstaben, so daß der Umbruch ggf. besser aussehen kann.

 

Der Satz mit LaTeX erfolgt selbstverständlich auch mit optischem Randausgleich (im Vergleichsbild hier links aber nicht dargestellt).

Geht es also um Satzqualität, eventuell auch um eine möglichst geringe Anzahl an Seiten unter denselben Bedingungen, ist der Satz mit LaTeX nach wie vor erste Wahl. Der Abstand zwischen Typst und TeX ist aber nicht mehr allzu groß, und die viel einfachere Syntax ist eine verlockende Sache.

Eine .bib-Literaturdatenbank läßt sich ebenfalls anbinden, und im Dokument selbst können mit entsprechender Syntax Zitate erzeugt werden.

Vorteile gegenüber HTML oder Markdown

Markdown und HTML eignen sich hervorragend zum Setzen reiner Bildschirm-Dokumente (Onscreen, Webseiten etc.), z.B. auch für dynamische Handbücher und begleitende Erläuterungen, Tutorials usw. Welche Vorzüge gibt es nun gegenüber HTML oder Standard-Markdown?

Es gibt mehrere. Die folgenden Möglichkeiten sind bei HTML und Standard-Markdown NICHT oder nur auf Umwegen gegeben:

  • Inhaltsverzeichnisse
  • automatisch numerierte Überschriften
  • Seitenzahlen
  • Fußnoten
  • Verlinkung von Abbildungs- und Überschriftennummern
  • Blocksatz mit einem Wortumbruch-Algorithmus
  • Bibliographie (Anbindung einer Literaturdatenbank, Setzen von Zitaten)

Das sind wenige, aber erhebliche Argumente für einen angenehmen Textsatz!

Gegenüber HTML ist Typst-Code VIEL kürzer und übersichtlicher. Auch das Anbinden einer separaten CSS-Datei für die Formatierungen entfällt. Gleichwohl könnte man auch bei Typst alle Formatierungsanweisungen in eine separate Vorlagen-Datei auslagern, um sie für andere Dokumente nutzbar zu machen. Auch das Definieren von Links (auf URLs oder lokale Dateien) finde ich bei Typst übersichtlicher und einprägsamer als bei HTML oder Markdown.


Tutorial

Wer sich in Typst einarbeiten will, kann meine Tutorial-Lektionen durcharbeiten.

Mikrotypographie

Ein Dokument über mikrotypographische Regeln beim Bearbeiten von Typst-Dokumenten findet sich hier.

Vorlage

Download
Vorlage für ein Standard-Typst-Dokument
Typst-Vorlage.zip
Komprimiertes Archiv im ZIP Format 490 Bytes