278 lines
4.6 KiB
Typst
278 lines
4.6 KiB
Typst
#import "@preview/minimal-presentation:0.7.0": *
|
|
|
|
#set text(font: "Noto Sans")
|
|
#show math.equation: set text(font: "Noto Sans Math")
|
|
#show raw: set text(font: "FiraCode Nerd Font", size: 1.5em)
|
|
|
|
#show: project.with(
|
|
title: "Typst",
|
|
sub-title: "besseres LaTeX?",
|
|
author: "jan",
|
|
date: "07.10.2025",
|
|
lang: "de",
|
|
)
|
|
|
|
= Was ist Typst?
|
|
|
|
== Meine Erfahrungen mit LaTeX
|
|
|
|
basierend auf *einem* Projekt vor *11 Jahren*
|
|
|
|
#columns-content()[
|
|
- unhandliche Syntax
|
|
- kein Paketmanagement
|
|
- diverse Abhänigkeiten
|
|
- aber kein Management
|
|
- nicht alles auf CTAN
|
|
- hoffentlich schreibst du gerne Makefiles
|
|
- verschiedene CLIs benötigt
|
|
- 4-6 pdflatex Aufrufe nötig
|
|
][
|
|
```latex
|
|
\chapter{FabLab}
|
|
\section{Untergruppen}
|
|
\begin{itemize}
|
|
\item Chaostreff
|
|
\item Repair-Caf\'{e}
|
|
\end{itemize}
|
|
```
|
|
]
|
|
|
|
== Geht's auch einfacher?
|
|
|
|
#columns-content()[
|
|
- weniger überflüssige Syntax
|
|
- viele Funktionen eingebaut
|
|
- Paketmanagement
|
|
][
|
|
```typ
|
|
= FabLab
|
|
== Untergruppen
|
|
- Chaostreff
|
|
- Repair-Cafe\u{301}
|
|
```
|
|
]
|
|
|
|
= Grundlagen
|
|
|
|
== Syntax
|
|
|
|
#columns-content()[
|
|
```typ
|
|
Einfache Formatierungen wie *fett* und _kursiv_ sind intuitiv. Je nach Sprache werden "Anführungszeichen" korrekt umgewandelt.
|
|
|
|
Absätze werden durch eine Leerzeile getrennt.
|
|
```
|
|
][
|
|
Einfache Formatierungen wie *fett* und _kursiv_ sind intuitiv. Je nach Sprache werden "Anführungszeichen" korrekt umgewandelt.
|
|
|
|
Absätze werden durch eine Leerzeile getrennt.
|
|
]
|
|
|
|
== Syntax
|
|
|
|
#columns-content()[
|
|
```typ
|
|
Es gibt viele Möglichkeiten für Sonderzeichen:
|
|
- e\u{301}
|
|
- $bitcoin$
|
|
- #emoji.face
|
|
- 🥳
|
|
Keine Angst vor UTF-8!
|
|
```
|
|
][
|
|
Es gibt viele Möglichkeiten für Sonderzeichen:
|
|
- e\u{301}
|
|
- $bitcoin$
|
|
- #emoji.face
|
|
- 🥳
|
|
Keine Angst vor UTF-8!
|
|
]
|
|
|
|
== Formatierung
|
|
|
|
#columns-content()[
|
|
```typ
|
|
#set rect(
|
|
fill: gray,
|
|
width: 100%,
|
|
height: 100%
|
|
)
|
|
#grid(
|
|
columns: (1fr, 2fr),
|
|
rows: (1fr, 3fr),
|
|
gutter: 3pt,
|
|
rect[Hello],
|
|
rect[World],
|
|
rect[from],
|
|
rect[grids],
|
|
)
|
|
```
|
|
][
|
|
#set rect(
|
|
fill: gray,
|
|
width: 100%,
|
|
height: 100%
|
|
)
|
|
#grid(
|
|
columns: (1fr, 2fr),
|
|
rows: (1fr, 3fr),
|
|
gutter: 3pt,
|
|
align: center,
|
|
rect[Hello],
|
|
rect[World],
|
|
rect[from],
|
|
rect[grids],
|
|
)
|
|
]
|
|
|
|
== Inhaltsverzeichnis
|
|
|
|
#sym.arrow outline.typ
|
|
|
|
== Defaults überschreiben
|
|
|
|
#columns-content()[
|
|
```typ
|
|
#show "foo": "bar"
|
|
foo
|
|
|
|
#set text(blue)
|
|
#show regex("\w+\?"): set text(red)
|
|
Was steht auf deinem Handtuch? Keine Panik!
|
|
```
|
|
][
|
|
#[
|
|
#show "foo": "bar"
|
|
foo
|
|
|
|
#set text(blue)
|
|
#show regex("\w+\?"): set text(red)
|
|
Was steht auf deinem Handtuch? Keine Panik!
|
|
]
|
|
]
|
|
|
|
== Code
|
|
|
|
#columns-content()[
|
|
```typ
|
|
#let antwort = 7 * 6
|
|
Die Antwort ist #antwort.
|
|
|
|
#table(
|
|
columns: 5,
|
|
..for i in range(10) {
|
|
([#i],)
|
|
}
|
|
)
|
|
|
|
#{
|
|
[Code Block]
|
|
}
|
|
```
|
|
][
|
|
#let antwort = 7 * 6
|
|
Die Antwort ist #antwort.
|
|
|
|
#table(
|
|
columns: 5,
|
|
..for i in range(10) {
|
|
([#i],)
|
|
}
|
|
)
|
|
|
|
#{
|
|
[Code Block]
|
|
}
|
|
]
|
|
|
|
== Daten einlesen
|
|
|
|
#columns-content(colwidths: (70%, auto))[
|
|
```typ
|
|
#let rows = csv("data.csv", row-type: dictionary)
|
|
#rows.len() Zeilen eingelesen.
|
|
|
|
#table(
|
|
columns: 2,
|
|
align: right,
|
|
..for (Jahr, E-Mails) in rows.slice(0,5) {
|
|
(Jahr, E-Mails)
|
|
}
|
|
)
|
|
```
|
|
][
|
|
#let rows = csv("data.csv", row-type: dictionary)
|
|
#rows.len() Zeilen eingelesen.
|
|
|
|
#table(
|
|
columns: 2,
|
|
align: right,
|
|
..for (Jahr, E-Mails) in rows.slice(0,5) {
|
|
(Jahr, E-Mails)
|
|
}
|
|
)
|
|
]
|
|
|
|
= Pakete
|
|
|
|
== Wo findet man Pakete?
|
|
|
|
Offizielles Repo: https://typst.app/universe/
|
|
|
|
Abhängigkeiten werden im Dokument definiert:
|
|
```typ
|
|
#import "@preview/minimal-presentation:0.7.0": *
|
|
```
|
|
|
|
== Diagramme
|
|
|
|
#columns-content(colwidths: (2fr, 1fr))[
|
|
```typ
|
|
#import "@preview/lilaq:0.5.0"
|
|
#let rows = csv("data.csv", row-type: dictionary)
|
|
#let x = rows.map(it => int(it.Jahr))
|
|
#let y = rows.map(it => int(it.E-Mails))
|
|
#lilaq.diagram(
|
|
xlabel: "Jahr", ylabel: "E-Mails",
|
|
width: 100%, height: 70%,
|
|
lilaq.bar(
|
|
x,
|
|
y,
|
|
)
|
|
)
|
|
```
|
|
][
|
|
#import "@preview/lilaq:0.5.0"
|
|
#let rows = csv("data.csv", row-type: dictionary)
|
|
#let x = rows.map(it => int(it.Jahr))
|
|
#let y = rows.map(it => int(it.E-Mails))
|
|
#lilaq.diagram(
|
|
xlabel: "Jahr", ylabel: "E-Mails",
|
|
width: 100%, height: 70%,
|
|
lilaq.bar(
|
|
x,
|
|
y,
|
|
)
|
|
)
|
|
]
|
|
|
|
== Präsentationen
|
|
|
|
```typ
|
|
#import "@preview/minimal-presentation:0.7.0": *
|
|
|
|
#show: project.with(
|
|
title: "Typst", sub-title: "besseres LaTeX?",
|
|
author: "jan", date: "07.10.2025", lang: "de",
|
|
)
|
|
|
|
= Was ist Typst?
|
|
|
|
== Meine Erfahrungen mit LaTeX
|
|
```
|
|
|
|
== Protokolle
|
|
|
|
#sym.arrow protocol.typ
|