Das Satzsystem Typst

In einem älteren Artikel hatte ich das Textsatzsystem LaTeX vorgestellt. Im Gegensatz zu Markdown ist LaTeX anspruchsvoller, bietet aber auch deutlich mehr Möglichkeiten, insbesondere was die Erstellung wissenschaftlicher Dokumente angeht. Darüber hinaus gibt es das — im Gegensatz zu LaTeX — modernere Satzsystem Typst. Es ist ähnlich mächtig wie LaTeX, aber einfacher in der Handhabung.

Installation von Typst

Es existieren mehrere Wege, um Typst auf den Rechner zu bringen. Ein Weg führt zu Github. Dort stehen Pakete für macOS, Linux und Windows zum Download bereit. Alternativ kann man einen Paketmanager für die Installation nutzen:

  • Linux: Typst Snap
  • macOS: brew install typst
  • Windows: winget install --id Typst.Typst

Falls auf Eurem System Rust installiert ist, kann auch cargo verwendet werden:

cargo install --locked typst-cli

Anleitungen für die Installation von Rust findet ihr auf folgenden Internetseiten:

Grundlagen zu Typst

Für das Erstellen von Typst-Dokumenten kann ein belieber Editor verwendet werden. Einfacher ist das Arbeiten mit Typst, wenn eine Anwendung verwendet wird, die eine Syntax-Hervorhebung unterstützt. So gibt es beispielsweise für Sublime Text das Paket Typst.

Typst-Dateien haben die Endung „typ“. Das Erstellen einer PDF-Datei erfolgt im Terminal mit folgendem Befehl:

typst compile <Dateiname.typ>

Es ist auch möglich, eine Typst-Datei zu überwachen, so dass nach einer Änderung am Typst-Dokument sofort die PDF-Datei aktualisiert wird.

typst watch Dateiname.typ

In Sublime Text kann die PDF-Datei durch die Verwendung des integrierten Build-Systems aktualisiert werden, das über die Tastenkombination command + b (macOS) oder Strg + b (Linux, Windows) ausgeführt wird. Gegebenenfalls ist es erforderlich, zuvor dass zu verwendende Build-System einzustellen:

> Tools > Build System > Typst

Typst-Syntax

Typst ist eine Auszeichnungssprache, bei der das Layout des Dokuments über eine Syntax gesteuert wird. Die vollständige Syntax würde den Rahmen dieses Artikels sprengen. Hier möchte ich nachfolgend nur die grundlegenden Funktionalität anhand eines einfachen Skripts zeigen, das Listen in Python erklärt.

Beginnen wir mit der Gliederung eines Dokuments. Dafür werden Gleichheitszeichen verwendet, wobei die Anzahl der Zeichen die Gliederungsebene bestimmt. Erstellt also eine neue Datei, die die Bezeichnung „Python-Listen.typ“ haben könnte und fügt folgenden Inhalt ein:

= Listen in Python
In Python können Daten in einer Liste zusammengefasst werden.
Dies ist sinnvoll, da man dadurch Ordnung in den Code bringt.
Bei einer Liste handelt es sich um eine #strong[Datenstruktur].
In anderen Programmiersprachen stehen dafür #emph[Arrays] zur
Verfügung. Sie sind aber weniger flexibel, da zu einer Liste
Elemente mit unterschiedlichen Datentypen hinzugefügt werden können.

Durch das Gleichheitszeichen vor „Listen in Python“ wird die erste Gliederungsebene gekennzeichnet. Im Text wird durch die Verwendung von #strong das Wort „Datenstruktur“ fett dargestellt. Für die kursive Darstellung von „Arrays“ ist #emph zu verwenden.

DarstellungSyntaxBeispiel
Fettstrong#strong[Text]
Kursivemph#emph[Text]
Fett & KursivKombination aus strong und emph#strong[#emph[Text]]

Nach diesem kurzen Absatz folg ein Code-Beispiel. Wie auch bei Markdown üblich, werden für einen Code-Block drei Gravis-Akzente (```) (auch: Backtick oder Backquote) verwendet. Optional kann hinter den Akzenten die Programmiersprache genannt werden.

Code-Block in Typst
Ein Code-Block in Typst

Nach dieser kurzen Einführung zu Listen könnte es mit einer Überschrift auf zweiter Gliederungsebene weitergehen, gefolgt von einer ungeordneten Liste:

== Unterschiede zu Arrays
Im Gegensatz zu Arrays haben Listen Vorteile:

- Verwendung unterschiedlicher Datentypen möglich
- Hinzufügen weiterer Elemente möglich
- Automatische Speicherverwaltung

Im PDF-Dokument würde dies wie folgt aussehen:

Liste in einem Typst-Dokument
Eine ungeordnete Liste

Anstelle eines Spiegelstrichs, wird für eine Aufzählung Pluszeichen verwendet:

+ Verwendung unterschiedlicher Datentypen möglich
+ Hinzufügen weiterer Elemente möglich
+ Automatische Speicherverwaltung

Im PDF-Dokument würde dies wie folgt aussehen:

Aufzaehlung in einem Typst-Dokument
Eine Aufzählung

Für das Hinzufügen einer URL wird #link()[] verwendet:

Weitere Informationen zu Listen findet ihr
#link("https://www.python-kurs.eu/python3_listen.php")[hier].

Nun folgt eine weitere Überschrift, gefolgt von Lorem-ipsum-Text als Platzhalter.

== Methoden für die Datenmanipulation
#lorem(20)

Fazit

Die in diesem Artikel vorgestellte Syntax liefert nur einen sehr kleinen Überblick über die Gestaltungsmöglichkeiten in Typst. Wenn ihr wissen möchtet, welche Möglichkeiten sonst noch bestehen, solltet ihr einen Blick in die Dokumentation zu Typst werfen. Ihr werdet feststellen, dass Typst deutlich mehr zu bieten hat als Markdown. Gleichzeitig ist es einfacher zu handhaben als LaTeX, so dass es eine gute Alternative sein könnte. Falls ihr aber bereits zahlreiche Vorlagen in LaTeX erstellt habt, mag es sinnvoller sein, bei LaTeX zu bleiben. Denn die Umstellung auf Typst und das Erstellen neuer Vorlagen nimmt Zeit in Anspruch. Diejenigen, für die das Thema Textsatzsystem neu ist, könnte Typst die bessere Wahl sein, da die Lernkurve nicht so steil ist wie bei LaTeX.