Zur Navigation Zur Suche Zum Inhalt

Typst-Dokumente als Ersatz für LaTeX und Word?

Marino Toscano
docugate-typst-symbolbild

In diesem Blogpost zeigen wir die Unterschiede von LaTeX, Word und Typst und erklären, wie diese neue Vorlagen- und Dokument-Technologie in Docugate verwendet werden kann.

Was ist LaTeX?

Einige von euch haben vielleicht bereits Erfahrung mit LaTeX-Dokumenten, sei es für wissenschaftliche Arbeiten oder eigene Projekte. Die Technologie wurde bereits vor eigenen Jahrzehnten, im Jahr 1980, erfunden und wird noch heute eingesetzt, vor allem an Universitäten für die Erstellung von wissenschaftlichen Arbeiten oder technischen Dokumenten.

Diese sogenannte "Typesetting-Sprache" ist textbasiert und ermöglicht es, den Inhalt von Dokumenten und das Layout mit Befehlen zu definieren. Möchte man beispielsweise einen Text kursiv schreiben, kann man den Befehl \textit{mein Text} benutzen. Das Dokument bzw. die Textdatei wird danach kompiliert und dadurch in ein (neues) Format transformiert, das auch andere Benutzer einfach lesen können, wie beispielsweise das Portable Document Format (PDF).

Vor- & Nachteile

Warum sollte man sich in eine solche Technologie vertiefen, wenn es bequemere Alternativen gibt, wie zum Beispiel Microsoft Word?

Der Vorteil solcher textbasierter Typesetting-Sprachen ist, dass man sich nur einmalig um das Layout und das Styling kümmern muss. Man kann das Dokument mit Überschriften, Texten und Tabellen schreiben und diese im Nachhinein stylen. In Word wäre das Gleiche auch möglich. Wenn man aber nicht von Anfang an mit Formatvorlagen und korrekten Umbrüchen arbeitet, ist es im Nachhinein viel aufwändiger (ja, ich sehe heute immer noch Leute, die ein Inhaltsverzeichnis in Word von Hand erstellen). LaTeX zwingt also den Benutzer, schon von Anfang an die korrekten Befehle für die Formatierung zu verwenden.

Die Nachteile? Da alles über Befehle definiert werden muss, kann die Syntax komplex erscheinen. Selbst für fortgeschrittene Benutzer ist diese manchmal nicht immer intuitiv. Das hier ist zum Beispiel die Definition für einen Tabellenstil mit zwei 5cm breiten, rechtsbündigen Spalten. Alles klar, oder?

|>{\raggedleft\arraybackslash}|p{5cm}|>{\raggedleft\arraybackslash}p{5cm}|

Das Troubleshooting im Falle einer falschen Syntax im Dokument kann manchmal zeitaufwendig sein, da die Fehlermeldungen nicht immer eindeutig sind. Die Performance bei der Umwandlung in andere Formate ist sehr abhängig vom Inhalt. Bei grösseren Dokumenten kann die Kompilierung bis zu einigen Sekunden dauern.

Was ist Typst?

LaTeX gibt es bereits seit fast fünfzig Jahren. Ist es möglich, dass niemand eine modernere Alternative entwickelt hat? Doch, vor knapp zwei Jahren hatte das Open Source Produkt "Typst" sein erstes Release und ist seitdem in ständiger
Entwicklung. Diese neue Typesetting-Sprache basiert auf einer einfacheren Syntax als LaTeX und ist viel benutzerfreundlicher. Eine Tabelle erstellen mit unterschiedlichen Spaltenbreiten und Ausrichtungen? Die Syntax sieht schon viel entspannter aus und selbsterklärend:

#table(
 columns: (4cm, 8cm),
 inset: 10pt,
 align: (right, left),
 [Cell 1], [Cell 2],
 [Cell 3], [Cell 4],
)

Bei komplexeren Problemen kann eine vollständige Programmiersprache verwendet werden, die in Typst integriert ist. Erfahrung mit Programmiersprachen ist ein Vorteil, da Typst viele Ähnlichkeiten zu bekannten Programmiersprachen hat. Wenn man beispielsweise die erste Zeile aller Tabellen mit einem grauen Hintergrund einfärben möchte, kann man das mit einem If-Statement definieren.

#set table(
 fill: (x, y) => if y == 0 { gray },
)

Auch die Performance und das Fehlerhandling wurden im Vergleich zu LaTeX verbessert. Bei LaTeX dauerte die Kompilierung eines Dokuments mit 50 Seiten, verschiedenen Texten und mehreren Grafiken als PDF bis zu acht Sekunden. Mit Typst benötigte dasselbe Dokument nur etwas mehr als eine Sekunde.

Es ist zusätzlich möglich, benutzerdefinierte Packages zu installieren, falls eine bestimmte Funktion nicht standardmässig in Typst vorhanden ist. Ein Beispiel dafür, ist das "tiaoma"-Package für die Erstellung von Barcode und QR-Code.

Weitere Stärken von Typst sind, dass es ständig in Entwicklung ist und immer neue Funktionalitäten und Verbesserungen anbietet. Die Dokumentation ist auch sehr ausführlich und enthält viele Beispiele.

Unter diesem Link kann man in einen Online-Editor, der von Typst zur Verfügung gestellt wird, selbst ausprobieren: Typst Playground.

Für diejenigen, die lieber mit einer Desktop-Applikation arbeiten, gibt es auch eine Erweiterung für Visual Studio Code: Tinymist Typst.

Typst in Docugate

In Docugate bieten wir unterschiedliche Vorlagentypen an. Im Mai 2023 wurden LaTeX-Vorlagen zur Verfügung gestellt und seit diesem August 2025 auch Typst-Vorlagen.

Diese beiden Vorlagentypen decken einen Anwendungsfall ab, den man, im Vergleich zu Alternativen wie Microsoft Word, mit geringerem Aufwand und mehr Flexibilität lösen kann: Dynamische Dokumente.

Dynamische Dokumente können erforderlich sein, wenn unterschiedliche Inhalte in Abhängigkeit von den Eingabedaten aufbereitet werden sollen. Die Eingabedaten können entweder Felder sein, die in der Docugate Web-App ausgefüllt werden, oder JSON-Inhalt, der über die API-Schnittstelle geliefert wird.

Möchte man beispielsweise die Anrede für Privatpersonen und Unternehmen unterschiedlich definieren, kann man das wie folgt umsetzen:

#let content = json("payload.json")

#if content.customerType == "private" [
Sehr geehrte(r) #content.salutation #content.lastName
] else if content.customerType == "company" [
 Sehr geehrte Damen und Herren,
]

Dies wäre mit Word auch möglich umzusetzen, mithilfe von IF-Feldern. Komplexere Bedingungen können die Word-Logik jedoch schnell unübersichtlich machen.

Für das nächste Beispiel kann man sich vorstellen, dass eine Liste mit allen Teilnehmern an die API gesendet wird. Diese müssen als Aufzählungsliste im Dokument dargestellt werden. Mit einer For-Schleife kann man in Typst alle Elemente  in der Liste durchlaufen und diese als Aufzählungselemente darstellen.

{
 "participants": [
 {
 "firstName": "Jane",
 "lastName": "Miller"
 },
 {
 "firstName": "John",
 "lastName": "Doe"
 },
 {
 "firstName": "Max",
 "lastName": "Muster"
 }
 ]
}

#let content = json("payload.json")

*Teilnehmer*
#for participant in content.participants [
 - #participant.firstName #participant.lastName
]

Die Anwendung kann viele weitere komplexe Probleme lösen, wie die Erstellung von Tabellen oder das Einfügen von dynamischen QR-Codes. Für eine Vertiefung in das Thema steht das Dynamic Typst Documents Tutorial in unserer Online-Dokumentation zur Verfügung.

Fazit

Welchen Vorlagentyp soll ich verwenden? Um diese Frage zu beantworten muss zuerst geklärt werden, welches Problem gelöst werden soll.

Sind die Vorlagen und Dokumente hauptsächlich statisch und müssen nur mit Platzhaltern ausgefüllt werden?

  • Für diesen Fall, sind Word Vorlagen meistens die beste Lösung, da sie weit verbreitet und leicht anzupassen sind.

Benötigen die Vorlagen und Dokumente die Darstellung von dynamischen Elementen oder gibt es komplexe Regeln, um Elemente ein- oder auszublenden?

  • In diesem Fall können Typst-Vorlagen eine gute Entscheidung sein. Man sollte jedoch bewusst sein, dass die anfängliche Lernkurve steiler sein wird.

Haben Sie Fragen dazu? Melden Sie sich ungeniert bei uns.

Quellen und weiterführende Information

  • Offizielle