Typst ist ein neues Markup-basiertes Schriftsatzsystem, das so leistungsstark wie LaTeX ist und gleichzeitig viel einfacher zu erlernen und zu verwenden ist. Typst hat:
Dieses Repository enthält den Typst-Compiler und seine CLI, also alles, was Sie zum lokalen Kompilieren von Typst-Dokumenten benötigen. Für das beste Schreiberlebnis können Sie sich kostenlos bei unserem kollaborativen Online-Editor anmelden.
Eine sanfte Einführung in Typst finden Sie in unserer Dokumentation. Wenn Sie jedoch die Leistungsfähigkeit von Typst in einem Bild sehen möchten, finden Sie es hier:
Lassen Sie uns analysieren, was vor sich geht:
Wir verwenden festgelegte Regeln , um Elementeigenschaften wie die Größe von Seiten oder die Nummerierung von Überschriften zu konfigurieren. Wenn Sie die Seitenhöhe auf auto
setzen, wird die Seite entsprechend dem Inhalt skaliert. Festgelegte Regeln berücksichtigen die gängigsten Konfigurationen. Wenn Sie die volle Kontrolle benötigen, können Sie mithilfe von Anzeigeregeln auch das Erscheinungsbild eines Elements völlig neu definieren.
Wir fügen eine Überschrift mit der Syntax = Heading
ein. Ein Gleichheitszeichen erstellt eine Überschrift der obersten Ebene, zwei erzeugen eine Unterüberschrift und so weiter. Typst verfügt über ein einfacheres Markup wie dieses. Eine vollständige Liste finden Sie in der Syntaxreferenz.
Mathematische Gleichungen werden in Dollarzeichen eingeschlossen. Indem wir um den Inhalt einer Gleichung zusätzliche Leerzeichen hinzufügen, können wir sie in einen separaten Block einfügen. Mehrbuchstabige Bezeichner werden als Typst-Definitionen und -Funktionen interpretiert, sofern sie nicht in Anführungszeichen gesetzt werden. Auf diese Weise benötigen wir keine Backslashes für Dinge wie floor
und sqrt
. Und phi.alt
wendet den alt
-Modifikator auf den phi
an, um eine bestimmte Symbolvariante auszuwählen.
Jetzt kommen wir zum Scripting. Um Code in ein Typst-Dokument einzugeben, können wir einen Hash gefolgt von einem Ausdruck schreiben. Wir definieren zwei Variablen und eine rekursive Funktion, um die n-te Fibonacci-Zahl zu berechnen. Anschließend zeigen wir die Ergebnisse in einer mittig ausgerichteten Tabelle an. Die Tabellenfunktion übernimmt ihre Zellen zeilenweise. Daher übergeben wir zunächst die Formeln $F_1$
bis $F_8$
und dann die berechneten Fibonacci-Zahlen. Wir wenden den Spreizoperator ( ..
) auf beide an, da es sich um Arrays handelt und wir die Elemente der Arrays als einzelne Argumente übergeben möchten.
#set page ( width : 10cm , height : auto )
#set heading ( numbering : " 1. " )
= Fibonacci sequence
The Fibonacci sequence is defined through the
recurrence relation $ F_n = F_(n-1) + F_(n-2) $ .
It can also be expressed in _closed form:_
$ F_n = round(1 / sqrt(5) phi.alt^n), quad
phi.alt = (1 + sqrt(5)) / 2 $
#let count = 8
#let nums = range ( 1 , count + 1 )
#let fib ( n ) = (
if n <= 2 { 1 }
else { fib ( n - 1 ) + fib ( n - 2 ) }
)
The first #count numbers of the sequence are:
#align (center, table(
columns: count,
..nums.map(n => $ F_#n $ ),
..nums.map(n => str(fib(n))),
))
Die CLI von Typst ist aus verschiedenen Quellen verfügbar:
Sie können Quellen und vorgefertigte Binärdateien für die neueste Version von Typst auf der Release-Seite erhalten. Laden Sie das Archiv für Ihre Plattform herunter und legen Sie es in einem Verzeichnis in Ihrem PATH
ab. Um über zukünftige Versionen auf dem Laufenden zu bleiben, können Sie einfach typst update
ausführen.
Sie können Typst über verschiedene Paketmanager installieren. Beachten Sie, dass die Versionen in den Paketmanagern möglicherweise hinter der neuesten Version zurückbleiben.
brew install typst
winget install --id Typst.Typst
Wenn Sie eine Rust-Toolchain installiert haben, können Sie diese installieren
cargo install --locked typst-cli
cargo install --git https://github.com/typst/typst --locked typst-cli
Nix-Benutzer können
typst
Paket mit nix-shell -p typst
nix run github:typst/typst -- --version
. Docker-Benutzer können ein vorgefertigtes Image mit docker run ghcr.io/typst/typst:latest --help
ausführen.
Sobald Sie Typst installiert haben, können Sie es wie folgt verwenden:
# Creates `file.pdf` in working directory.
typst compile file.typ
# Creates PDF file at the desired path.
typst compile path/to/source.typ path/to/output.pdf
Sie können auch Quelldateien ansehen und bei Änderungen automatisch neu kompilieren. Dies ist schneller, als jedes Mal von Grund auf neu zu kompilieren, da Typst über eine inkrementelle Kompilierung verfügt.
# Watches source files and recompiles on changes.
typst watch file.typ
Mit Typst können Sie außerdem benutzerdefinierte Schriftartenpfade für Ihr Projekt hinzufügen und alle erkannten Schriftarten auflisten:
# Adds additional directories to search for fonts.
typst compile --font-path path/to/fonts file.typ
# Lists all of the discovered fonts in the system and the given directory.
typst fonts --font-path path/to/fonts
# Or via environment variable (Linux syntax).
TYPST_FONT_PATHS=path/to/fonts typst fonts
Weitere CLI-Unterbefehle und -Optionen finden Sie unten:
# Prints available subcommands and options.
typst help
# Prints detailed usage of a subcommand.
typst help watch
Wenn Sie ein integriertes IDE-ähnliches Erlebnis mit automatischer Vervollständigung und sofortiger Vorschau bevorzugen, können Sie sich auch die kostenlose Web-App von Typst ansehen.
Der Hauptort, an dem sich die Community trifft, ist unser Discord-Server. Fühlen Sie sich frei, dort mitzumachen, um Fragen zu stellen, anderen zu helfen, coole Dinge zu teilen, die Sie mit Typst erstellt haben, oder einfach nur zu chatten.
Abgesehen davon gibt es einige Orte, an denen Sie von der Community erstellte Dinge finden können:
Wenn Sie eine schlechte Erfahrung in unserer Community gemacht haben, wenden Sie sich bitte an uns.
Wir würden uns über Beiträge aus der Community freuen. Wenn Fehler auftreten, können Sie gerne ein Problem eröffnen. Wenn Sie eine neue Funktion oder Fehlerbehebung implementieren möchten, befolgen Sie bitte die im Beitragsleitfaden beschriebenen Schritte.
Um Typst selbst zu erstellen, stellen Sie zunächst sicher, dass Sie das neueste stabile Rust installiert haben. Klonen Sie dann dieses Repository und erstellen Sie die CLI mit den folgenden Befehlen:
git clone https://github.com/typst/typst
cd typst
cargo build --release
Die optimierte Binärdatei wird in target/release/
gespeichert.
Eine weitere gute Möglichkeit, einen Beitrag zu leisten, besteht darin, Pakete mit der Community zu teilen.
IPA: /taɪpst/. „Ty“ wie in Ty pesetting und „pst“ wie in Hi pst er. Wenn Sie über Typst schreiben, schreiben Sie den Namen als Eigennamen mit einem großen „T“ groß.
Typst wurde mit drei Hauptzielen entwickelt: Leistung, Einfachheit und Leistung. Wir glauben, dass es Zeit für ein System ist, das der Leistungsfähigkeit von LaTeX ebenbürtig ist, einfach zu erlernen und zu verwenden ist und gleichzeitig schnell genug ist, um eine sofortige Vorschau zu ermöglichen. Um diese Ziele zu erreichen, folgen wir drei zentralen Designprinzipien:
Einfachheit durch Konsistenz: Wenn Sie wissen, wie man eine Sache in Typst macht, sollten Sie in der Lage sein, dieses Wissen auf andere Dinge zu übertragen. Wenn es mehrere Möglichkeiten gibt, dasselbe zu tun, sollte sich eine davon auf einer anderen Abstraktionsebene befinden als die andere. Beispielsweise ist es in Ordnung, dass = Introduction
und #heading[Introduction]
das Gleiche bewirken, da Ersteres nur Syntaxzucker für Letzteres ist.
Kraft durch Zusammensetzbarkeit: Es gibt zwei Möglichkeiten, etwas flexibel zu machen: Einen Knopf für alles haben oder ein paar Knöpfe haben, die man auf viele Arten kombinieren kann. Typst wurde im Hinblick auf den zweiten Weg entwickelt. Wir bieten Systeme, die Sie auf eine Weise zusammenstellen können, an die wir noch nie gedacht hätten. TeX gehört ebenfalls zur zweiten Kategorie, ist aber etwas niedrig und daher wird stattdessen LaTeX verwendet. Aber da haben wir nicht wirklich viel Zusammensetzbarkeit. Stattdessen gibt es für alles ein Paket ( usepackage{knob}
).
Leistung durch Inkrementalität: Alle Typst-Sprachfunktionen müssen eine inkrementelle Kompilierung ermöglichen. Glücklicherweise haben wir comemo
, ein System zur inkrementellen Kompilierung, das den Großteil der harten Arbeit im Hintergrund erledigt.