{"id":49226,"date":"2026-08-17T11:30:27","date_gmt":"2026-08-17T09:30:27","guid":{"rendered":"https:\/\/overcentral.com\/de\/?p=49226"},"modified":"2026-08-17T11:30:27","modified_gmt":"2026-08-17T09:30:27","slug":"typst-015-programmierfunktionen","status":"publish","type":"post","link":"https:\/\/overcentral.com\/de\/typst-015-programmierfunktionen\/","title":{"rendered":"Typst erh\u00e4lt mit Version 0.15 neue Programmierfunktionen"},"content":{"rendered":"<p><a href=\"https:\/\/typst.app\/\" target=\"_blank\" rel=\"noopener noreferrer\" data-iacss-external=\"1\">Typst<\/a> 0.15 ist Mitte <a href=\"https:\/\/overcentral.com\/de\/plus-1-speed-evolve-codes-juni-2026\/\" title=\"+1 Speed Evolve Update 6 Codes: Alle aktiven im Juni 2026\" data-iacss-internal=\"1\">Juni 2026<\/a> erschienen und bringt das Open-Source-Textsystem in puncto Programmierbarkeit deutlich nach vorn. Wer Dokumente nicht nur statisch setzen, sondern mit Hilfe einer Skriptsprache dynamisch erzeugen m\u00f6chte, profitiert von neuen Funktionen, flexiblen Export-Strategien und einem ausgereifteren Umgang mit Daten \u2013 vom einfachen Skript bis zur komplexen Automatisierung.<\/p>\n<h2>Was ist neu in Typst 0.15?<\/h2>\n<h3>Wie funktioniert Typsts Skriptsprache?<\/h3>\n<p>Typst ist ein Open-Source-Textsystem, das eine eigene Skriptsprache mitbringt. Sie erlaubt es, Dokumente programmatisch zu erzeugen, zu ver\u00e4ndern und an verschiedene Ausgabeformate anzupassen. Mit Version 0.15 sind diese F\u00e4higkeiten noch einmal deutlich gewachsen.<\/p>\n<p>Die mitgelieferte Skriptsprache ist kein Beiwerk, sondern ein zentraler Bestandteil des Systems. Mit Version 0.15 lassen sich Funktionen noch sauberer definieren, Exportziele gezielt abfragen und Dokumentstrukturen zur Laufzeit abfragen und manipulieren. Das er\u00f6ffnet neue Wege, um aus einer einzigen Quelle unterschiedliche Ausgaben zu erzeugen \u2013 etwa ein PDF f\u00fcr den Druck und eine HTML-Fassung f\u00fcr das Web.<\/p>\n<h3>Funktionen mit #let definieren<\/h3>\n<p>Die <strong>#let<\/strong>-Syntax ist das Herzst\u00fcck der typsteigenen Programmierung. Sie legt Variablen und Funktionen an, wobei geschweifte Klammern den Funktionsk\u00f6rper kennzeichnen. Das folgende Beispiel definiert eine Funktion, die ein Bild entgegennimmt und es in einer Inline-Box platziert:<\/p>\n<p style=\"display:block;white-space:pre;font-family:monospace;background:#f5f5f5;padding:1em;border-radius:4px\">#let inline_image(img) = {<br \/>\n  box(height: 8em, place(top+left, dx: 5pt, square(<br \/>\n      image(img, height:100%, fit:&#8220;cover&#8220;)<br \/>\n  )))<br \/>\n}<\/p>\n<p>Auff\u00e4llig ist die Zeilensyntax: Jede Anweisung endet mit einem Zeilenumbruch, nicht mit einem Semikolon. Das erinnert an Python und macht den Code deutlich lesbarer als etwa JavaScript. Gerade beim Definieren von Funktionen, die Layout-Elemente manipulieren, zeigt sich, wie eng Skript und Textsatz in Typst verzahnt sind.<\/p>\n<h3>Export-Ziele gezielt ansteuern<\/h3>\n<p>Typst ist prim\u00e4r f\u00fcr den Export als PDF oder Bild optimiert. Einige Formatierungen wie Kopf- und Fu\u00dfzeilen lassen sich im HTML-Modus nicht sinnvoll abbilden, da die Auszeichnungssprache kein Konzept f\u00fcr Seitenr\u00e4nder kennt. Mit der Funktion <strong>target()<\/strong> l\u00e4sst sich das aktuelle Exportziel aber zur Laufzeit ermitteln. Das folgende Listing zeigt eine Funktion <strong>sectionbreak()<\/strong>, die zwischen HTML und PDF unterscheidet:<\/p>\n<p style=\"display:block;white-space:pre;font-family:monospace;background:#f5f5f5;padding:1em;border-radius:4px\">#let sectionbreak(txt) = {<br \/>\n  context(<br \/>\n    if target()==&#8220;html&#8220; {<br \/>\n      html.elem(&#8222;div&#8220;, attrs:(class:&#8220;section-break&#8220;))[]<br \/>\n      return<br \/>\n    }<br \/>\n    else {<br \/>\n    divider()<br \/>\n  })<br \/>\n}<\/p>\n<p>Das Verhalten ist bewusst einfach gehalten:<\/p>\n<ul>\n<li>F\u00fcr HTML wird ein leeres <strong>div<\/strong>-Tag mit einer CSS-Klasse erzeugt, das sich \u00fcber ein Stylesheet gestalten l\u00e4sst.<\/li>\n<li>In allen anderen Ausgabeformaten kommt die eingebaute <strong>divider()<\/strong>-Funktion zum Einsatz, die einen typografischen Trenner setzt.<\/li>\n<\/ul>\n<p>So l\u00e4sst sich ein Manuskript mit wenig Aufwand f\u00fcr unterschiedliche Kan\u00e4le aufbereiten.<\/p>\n<h3>Dokumentstrukturen mit query() abfragen<\/h3>\n<p>Ein weiterer Kernbestandteil der neuen Programmierfunktionen ist die <strong>query()<\/strong>-Funktion. Sie durchsucht das Dokumentmodell nach Elementen, die bestimmten Kriterien entsprechen. Die Syntax \u00e4hnelt der Elementabfrage in JavaScript:<\/p>\n<p style=\"display:block;white-space:pre;font-family:monospace;background:#f5f5f5;padding:1em;border-radius:4px\">query(<br \/>\n    heading.where(<br \/>\n      level: 1,<br \/>\n    )<br \/>\n)<\/p>\n<p>Dieser Code liefert alle \u00dcberschriften der ersten Ebene zur\u00fcck. Darauf aufbauend lassen sich Inhalte auslesen, ver\u00e4ndern oder in andere Strukturen \u00fcberf\u00fchren \u2013 etwa um automatisch ein Inhaltsverzeichnis zu erzeugen oder Metadaten zu extrahieren. Die M\u00f6glichkeit, das Dokument zur Laufzeit zu inspizieren, macht Typst zu einer Art Framework f\u00fcr dokumentzentrierte Anwendungen.<\/p>\n<h2>Pakete mit wenigen Zeilen einbinden<\/h2>\n<p>F\u00fcr Wiederverwendbarkeit sorgt ein eigener Package Manager. Er ist fest in Typst integriert und besitzt ein \u00f6ffentliches Paketverzeichnis, das <strong>Package Directory<\/strong>. Anders als bei klassischen Systemen m\u00fcssen Pakete nicht erst installiert werden. Eine einfache <strong>import<\/strong>-Anweisung gen\u00fcgt, um sie in das aktuelle Dokument zu laden. Das senkt die Einstiegsh\u00fcrde deutlich und sorgt daf\u00fcr, dass Code modular bleibt.<\/p>\n<h2>Typst im Math-Modus<\/h2>\n<p>F\u00fcr mathematische Formeln bietet Typst einen eigenen Math-Modus. Er orientiert sich an TeX, ist aber kein blo\u00dfes Abbild. Wer bereits mit LaTeX gearbeitet hat, findet sich schnell zurecht; die Syntax ist allerdings aufger\u00e4umter und st\u00e4rker an moderne Programmiersprachen angelehnt. Formeln werden mit Dollarzeichen begrenzt:<\/p>\n<p style=\"display:block;white-space:pre;font-family:monospace;background:#f5f5f5;padding:1em;border-radius:4px\">$ sum_(k=1)^n k = (n()) \/ 2 $<\/p>\n<p>Der Ausdruck wird als klassische Summenformel dargestellt \u2013 optisch vergleichbar mit dem, was man aus LaTeX kennt, aber deutlich knapper geschrieben. Wer bestehende TeX-Inhalte \u00fcbernehmen m\u00f6chte, muss nicht alles per Hand \u00fcbertragen. Mit dem <strong>MiTeX<\/strong>-Paket lassen sich einzelne Formeln oder auch ganze TeX-Dokumente inline nach Typst konvertieren. Das reduziert den Migrationsaufwand erheblich.<\/p>\n<h2>Automatisierung jenseits der eigenen Skriptsprache<\/h2>\n<p>So m\u00e4chtig die eingebaute Skriptsprache inzwischen ist: Das \u00d6kosystem von Typst ist noch jung und weist bewusste Limitationen auf. Etwa bei Import-Pfaden oder beim Zugriff auf externe Datenquellen. Um diese H\u00fcrden zu umgehen, l\u00e4sst sich Typst in andere Programmiersprachen einbetten. Die erste Wahl ist Python mit der <strong>typst<\/strong>-Bibliothek.<\/p>\n<p>Damit lassen sich komplexe Workflows orchestrieren: mehrere Textdateien einlesen, Daten au\u00dferhalb des Projektverzeichnisses abrufen oder Typst-Queries ausf\u00fchren, um Dokumentinformationen weiterzuverarbeiten. Einige dieser Funktionen k\u00f6nnten in k\u00fcnftigen Versionen zu nativen Typst-Features werden. Daf\u00fcr spricht die Entwicklung der Community: Inzwischen sind mehr als 1.000 Pakete im Package Directory verf\u00fcgbar, und das Open-Source-Projekt wird regelm\u00e4\u00dfig aktualisiert.<\/p>\n<p>Wer Typst im produktiven Einsatz plant, sollte die neuen Programmierfunktionen von Version 0.15 daher nicht nur als Spielerei betrachten. Sie bilden das Fundament f\u00fcr eine neue Generation dokumentenbasierter Workflows \u2013 mit einem Werkzeug, das die Grenzen zwischen Textsatz, Skripting und Datenverarbeitung zunehmend aufl\u00f6st.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Typst 0.15 ist Mitte Juni 2026 erschienen und bringt das Open-Source-Textsystem in puncto Programmierbarkeit deutlich nach vorn. Wer Dokumente nicht nur statisch setzen, sondern mit Hilfe einer Skriptsprache dynamisch erzeugen m\u00f6chte, profitiert von neuen Funktionen, flexiblen Export-Strategien und einem ausgereifteren Umgang mit Daten \u2013 vom einfachen Skript bis zur komplexen Automatisierung. Was ist neu in [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":49230,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"https:\/\/raw.githubusercontent.com\/medeiroslima\/overcentral-images\/main\/images\/ocie_1786959042033.jpg","fifu_image_alt":"Typst erh\u00e4lt mit Version 0.15 neue Programmierfunktionen","footnotes":""},"categories":[6672],"tags":[],"class_list":["post-49226","post","type-post","status-publish","format-standard","has-post-thumbnail","category-technologie"],"fifu_image_url":"https:\/\/raw.githubusercontent.com\/medeiroslima\/overcentral-images\/main\/images\/ocie_1786959042033.jpg","fifu_image_alt":"Typst erh\u00e4lt mit Version 0.15 neue Programmierfunktionen","_links":{"self":[{"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/posts\/49226","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/comments?post=49226"}],"version-history":[{"count":3,"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/posts\/49226\/revisions"}],"predecessor-version":[{"id":49229,"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/posts\/49226\/revisions\/49229"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/media\/49230"}],"wp:attachment":[{"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/media?parent=49226"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/categories?post=49226"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/overcentral.com\/de\/wp-json\/wp\/v2\/tags?post=49226"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}