Add first version of workshop slides

This commit is contained in:
Julius Freudenberger 2026-03-18 18:25:38 +01:00
parent 0739d26c9e
commit a57fda18c1
45 changed files with 879 additions and 0 deletions

9
chapters/about-me.typ Normal file
View file

@ -0,0 +1,9 @@
#import "/globals.typ": *
#slide(title: "Über mich")[
- B.#(sym.space.nobreak.narrow)Eng. Julius Freudenberger
- 2000 geboren
- 2016 erste Kontakte mit #LaTeX
- 2019 -- 2023 Bachelorstudium an der Hochschule Esslingen
- 2023 -- 2026(?) Masterstudium an der Hochschule Karlsruhe
]

41
chapters/closing.typ Normal file
View file

@ -0,0 +1,41 @@
#import "/globals.typ": *
= Ausblick
#slide(title: [Was kann typst noch?])[
- Präsentationen mit #link("https://typst.app/universe/package/polylux")[polylux] oder #link("https://typst.app/universe/package/touying")[touying]
- Zeichnen mit #link("https://typst.app/universe/package/cetz")[cetz]
- Plotting mit #link("https://typst.app/universe/package/lilaq")[lilaq]
- Chemische Formeln mit #link("https://typst.app/universe/package/alchemist")[alchemist]
]
#slide(title: [Nächste Projekte für typst?])[
- Wissenschaftliches Dokumentieren
- Praxissemesterbericht
- Hausarbeiten
#v(1em)
- (Thesis)
#v(2em)
- Bewerbungsunterlagen
]
#slide(title: [Bewerbungsunterlagen])[
#columns(2)[
- Lebenslauf mit #link("https://typst.app/universe/package/moderner-cv")[moderner-cv]
#image(height: 90%, "/images/moderner-cv.png")
#colbreak()
- Anschreiben mit #link("https://typst.app/universe/package/briefs")[briefs]
#image(height: 90%, "/images/briefs.png")
]
]
#slide(title: [Wohin bei Problemen?])[
- #link("https://typst.app/docs")[typst Dokumentation]
- bzw.~Dokumentation des jeweiligen Pakets
- Suchmaschine des Vertrauens
- #link("https://forum.typst.app")[typst-Forum]
]

View file

@ -0,0 +1,24 @@
#import "/globals.typ": *
= Externe Dateien
#slide(title: [Externe Dateien einbinden --- SVG und PDF])[
- `#image` akzeptiert die Vektorformate `svg` und `pdf` nativ
- Nutzung entweder als Bild (z.#(sym.space.nobreak.narrow)B. mit `#figure`)
- oder um PDF--Dateien als ganze Seiten einzufügen (z.#(sym.space.nobreak.narrow)B. externe Dokumente im Anhang)
```typ
#page(margin: 0pt, image("filename.pdf", page: 1))
// mehrere Seiten
#page(margin: 0pt, for n in range(1, N + 1) { image("file.pdf", page: n) })
```
- aktuell kann typst nicht erkennen, wie viele Seiten eine PDF hat
- deshalb `N` mit der Anzahl an einzubindender Seiten ersetzen
- Eintrag im Inhaltsverzeichnis
```typ
#{
show heading: none
heading[Eingebettete PDF]
}
```
]

71
chapters/formatting.typ Normal file
View file

@ -0,0 +1,71 @@
#import "/globals.typ": *
= Dokumentformatierung
#slide(title: "Formatierungsoptionen")[
- Papierformat
- wird im Parameter `paper` in der Funktion `#page()` gesetzt
- `#set page(paper: "a4")` (Standard)
- `#set page(paper: "a5")`
- `#set page(paper: "us-letter")`
- Seitenränder
- wird im Paramter `margin` in der Funktion `#page()` gesetzt
- Standard: $frac(2.5,21)*$kleinere Kante der Seite
- A4: 2,5~cm
- `#set page(margin: 4pt)` gleicher Rand auf allen Seiten
- `#set page(margin: (x: 8pt, y: 4pt))` horizontale und vertikale Ränder
- `top, right, bottom, left` Ränder an den jeweiligen Seiten
- `inside, outside` Ränder innen und außen (bei Büchern)
]
#slide(title: "Querformat")[
- Gesamtes Dokument im Querformat
```
#set page(flipped: true)
```
- Einzelne Seiten im Querformat (nützlich für große Tabellen oder breite Abbildungen)
```
#page(flipped: true)[
Inhalt
]```
]
#slide(title: "Kopf- und Fußzeile")[
- `#set page(header: [Kopfzeile], footer: [Fußzeile])`
- Inhalt wird standardmäßig wie gewohnt linksbündig gesetzt
- immer rechts mit `#align(right)[Inhalt]`
- mehrere Spalten
```
#set page(footer: [#grid(columns: (1fr, 1fr, 1fr), align(left)[Linker Inhalt], align(center)[Mittlerer Inhalt], align(right)[Rechter Inhalt])])
```
- wenn Seitenzahl angezeigt werden soll `context` nutzen
```
#set page(footer: context [#grid(columns: (1fr, 1fr, 1fr), align(left)[Linker Inhalt], align(center)[Mittlerer Inhalt], align(right)[#counter(page).display("1")])])
```
]
#slide(title: "Fußzeile in Büchern")[
- `inner` und `outer` nicht nativ vorgesehen
- Paket #link("https://typst.app/universe/package/chic-hdr/")[chic-hdr] nicht auf aktuelle typst Version angepasst
- daher selbst gebastelte Lösung
#raw(lang: "typ", read("/codebeispiele/book-footer.typ"))
]
#slide(title: "Kopfzeile mit Überschriften")[
- Paket #link("https://typst.app/universe/package/hydra")[hydra] ermöglicht Anzeigen der aktuellen Überschriften
```
#set page(header: context {
[#grid(columns: (1fr, 1fr),
align(left, emph(hydra(1))),
align(right, emph(hydra(2))
))]
if hydra(1) != none {
line(length: 100%, stroke: 0.5pt, start: (0%, -.8em))
}
})
```
- Dieser Header ist ähnlich zum Style `scrheadings` von `scrlayer-scrpage` in #LaTeX
]

View file

@ -0,0 +1,27 @@
#import "/globals.typ": *
= Abbildungen und Gleitobjekte
#slide(title: [Abbildungen und Graphiken])[
- Einbinden mit `#image("/path/to/file")` (mit Dateiendung)
- Dateipfad mit `/` am Anfang: vom Projektverzeichnis aus
- ohne `/`: vom Verzeichnis der aktuellen Datei aus
- folgende Formate sind möglich: `png`, `jpg`, `gif`, `svg`, `pdf`, `webp`
#v(1em)
- Höhe und Breite optionale Parameter
- Standard ist `auto`, das Bild wird an den zur Verfügung stehenden Platz angepasst
- kann auch relativ angegeben werden
- `#image("/path/to/file", width: 80%)`
]
#slide(title: [Graphiken als Gleitobjekt])[
#show-code-render("image-float.typ")
]
#slide(title: [Gleitobjekte])[
- können für Graphiken, Tabellen, Codelistings, etc. verwendet werden
- immer mit `#figure()` eingeleitet
- der `body` ist dann unterschiedlich
- automatische Positionierung im Text
- Platzierungsalgorithmus nicht ganz so gut wie in #LaTeX
]

17
chapters/introduction.typ Normal file
View file

@ -0,0 +1,17 @@
#import "/globals.typ": *
#slide(title: "Wer seid ihr?")[
- Name
- Fakultät? Was macht ihr da?
- Schon von typst gehört oder etwas damit gemacht?
- Schon #LaTeX genutzt?
- Nächste (wissenschaftliche) Arbeit, die du vielleicht mit typst schreiben möchtest?
]
#slide(title: "Materialien für den Kurs")[
- Dieser Foliensatz
- Kleine Vorlagen zum Mitmachen
- Dokumente, die wir im Laufe des Kurses erstellen
#v(1em)
- wird alles im geteilten Ordner hochgeladen
]

67
chapters/listings.typ Normal file
View file

@ -0,0 +1,67 @@
#import "/globals.typ": *
== Codelistings
#slide(title: [Codelistings])[
- Abdrucken von Codezeilen
- einfaches Syntaxhighlighting
- nativ unterstützt
- Paket #link("https://typst.app/universe/package/codly")[codly] für mehr Anpassungsmöglichkeiten und Zeilennummern
]
#slide(title: [Native Codelistings])[
#show-code-render("native-listings.typ")
]
#slide(title: [Einbinden von Beispielen aus externen Dateien])[
- `lang` _muss_ explizit gesetzt werden, auch wenn die Dateiendung Teil des Pfades ist
```typ
#raw(read("/path/to/file"), lang: "<language>", block: true)
```
- `#read()` ließt Inhalt der Datei ein
- `#raw()` für Listingdarstellung
]
#slide(title: [Plugin codly])[
- #link("https://typst.app/universe/package/codly")[codly] bietet viele weitergehende Features
- Einrückung
- Zeilennummern
- Zebrastreifen
- Einrichtung:
```typ
#import "@preview/codly:1.3.0": *
#import "@preview/codly-languages:0.1.1": *
#show: codly-init.with()
#codly(languages: codly-languages)
```
- danach werden Codeblöcke automatisch durch codly formatiert
- tiefgehende #link("https://raw.githubusercontent.com/Dherse/codly/main/docs.pdf")[Dokumentation]
]
#codly-enable()
#slide(title: [codly -- Beispiel])[
```java
public static void main(String[] args) {
System.out.println("Hello Cyberweek");
}
```
- codly ist stark konfigurierbar
- jedes Verhalten und Feature kann deaktiviert oder angepasst werden
]
#slide(title: [codly -- In `figure`])[
#show-code-render("codly-figure.typ")
]
#slide(title: [codly -- Highlights])[
#show-code-render("codly-highlights.typ")
]
#slide(title: [codly -- Highlights referenzieren])[
#show-code-render("codly-highlights-reference.typ")
]
#codly-disable()

110
chapters/listofs.typ Normal file
View file

@ -0,0 +1,110 @@
#import "/globals.typ": *
== Weitere Verzeichnisse
#slide(title: "Weitere Verzeichnisse")[
- automatisch aktualisierendes Inhaltsverzeichnis sowie Verzeichnisse für
- Abbildungen (`kind: image`)
- Codelistings (`kind: raw`)
- (Glossar (Paket #link("https://typst.app/universe/package/glossarium")[glossarium])
- Abkürzungen (entweder auch glossarium oder Paket #link("https://typst.app/universe/package/acrostiche")[acrostiche])
- ...)
- alles mit der Funktion `#outline()`
- Ausnahme: Literaturverzeichnis
```typ
#outline()
#outline(target: figure.where(kind: image))
```
]
= Literatureinbindung
#slide(title: "Literaturverzeichnis")[
- Erstellen/Generieren von Literaturdateien
- `.bib`, häufig Bib#(TeX)--Format genannt
- `.yaml`, das typst--eigene Hayagriva--Format
- Hinzufügen von Literaturdateien (`.bib` oder `.yaml`)
- Zitieren von Literatur im Text `@citekey` oder `#cite(<citekey>)`
- Literaturverzeichnis (`#bibliography("file")`)
]
#slide(title: "Literaturdatei")[
- Jeder Eintrag hat einen eindeutigen Key, unter dem er im Text referenziert wird
- Literatur kann durch verschiedene Typen kategorisiert werden, u.a.
- article
- book
- inproceedings
- online
- thesis
- ...
- Jeder Literatureintrag hat verschiedene Attribute
- Titel
- Autor:innen
- Jahr
- ...
]
#slide(title: "Literaturdatei -- Formate")[
- typst unterstützt neben dem gängigen Bib#(TeX)--Format auch das eigene Hayagriva--Format, das die YAML--Syntax nutzt
- Hayagriva ist eine Eigenentwicklung vom typst--Team
- von Literaturverwaltungen nicht sonderlich unterstützt
- von Verlagen selten angeboten
- hat aber interessante Ideen
]
#slide(title: "Literaturdatei -- Formate")[
#columns(2)[
#raw(lang: "bib", read("/codebeispiele/bib-file.bib"))
#colbreak()
#raw(lang: "yaml", read("/codebeispiele/hayagriva-file.yaml"))
]
]
#slide(title: "Quellen für Literaturdateien")[
- Literatursuchmaschinen
#only("1")[#align(center, image(width: 80%, "/images/boss.png"))]
#only("2")[#align(center, image(width: 65%, "/images/blb.png"))]
#only("3-")[- Verlage]
#only("4")[#align(center, image(width: 50%, "/images/springer.png"))]
#only("5")[#align(center, image(width: 75%, "/images/pearson.png"))]
]
== Exkurs: Literaturverwaltung
#slide(title: "Exkurs: Literaturverwaltung")[
#only("1")[#align(center, image(width: 90%, "/images/bibliothek.png"))]
#only("2-")[
- Verschiedene Programme zur Literaturverwaltung verfügbar
- #link("https://zotero.org/")[Zotero] (Open--Source, Crossplattform)
- #link("https://lumivero.com/products/citavi/")[Citavi] (Keine Hochschullizenz mehr in Baden-Württemberg)
- #link("https://www.mendeley.com")[Mendeley]
- bieten Integrationen in WYSIWYG--Editoren
- können auch nach Bib#(TeX) exportieren
]
]
#slide(title: "Exkurs: Literaturverwaltung -- Zotero")[
- guter automatischer Export mit #link("https://retorque.re/zotero-better-bibtex/")[Better Bib#(TeX) for Zotero]
- generiert automatisch Bib#(TeX) mit allen Literatureinträgen einer Sammlung
- hält Datei bei Änderungen oder neu hinzugefügten Dateien aktuell
#v(1em)
- einfach neue Literatur in Zotero einfügen mit #link("https://www.zotero.org/download/connectors")[Zotero Connector]
]
#slide(title: "Literatur -- Meine Empfehlungen")[
- Verschiedene Literaturarten (Bücher, Paper, Thesen, Webseiten) in verschiedenen Untersammlungen verwalten
- pro Untersammlung ein automatischer Bib#(LaTeX)--Export
- Bib#(TeX)--Dateien in einen eigenen Unterordner
]
#slide(title: "Einbinden der Literatur in das Dokument und Zitieren")[
#raw(lang: "typ", read("/codebeispiele/bibliography.typ"))
]
#slide(title: "Zitieren und Erscheinen im Literaturverzeichnis")[
- Standardmäßig wird nur Literatur im Literaturverzeichnis ausgegeben, die auch im Text zitiert wurde
- `#cite(<citekey>, form: none)` fügt ein unzitiertes Werk ins Literaturverzeichnis ein
- `#bibliography("file", full: true)` zeigt alle Werke im Literaturverzeichnis an
]

38
chapters/math.typ Normal file
View file

@ -0,0 +1,38 @@
#import "/globals.typ": *
== Mathematik
#slide(title: "Mathematik")[
- typst nutzt eine andere Mathematiksyntax als #LaTeX
- Exponenten und Indizes gleich
- Symbole, Klammern und Funktionen werden anders gesetzt
- es gibt aber ein Kompatibilitätsplugin: #link("https://typst.app/universe/package/mitex")[mitex]
- Mathemodus wird immer mit `$` begonnen und beendet
- wird als Block gesetzt, wenn die Formel mit einem Leerzeichen beginnt und endet
]
#slide(title: [Mathematik -- inline])[
- setzt die Gleichung in eine Fließtext ein
- keine Referenzierung
#show-code-render("math-inline.typ")
]
#slide(title: [Mathematik -- block])[
- setzt die Gleichung als Block mit Absätzen
- Leerzeichen oder Zeilenumbruch nach erstem `$` und vor letzem `$`
- standardmäßig keine Referenzierung
#show-code-render("math-block.typ")
]
#slide(title: [Mathematik -- Gleichung])[
- Um Gleichungen referenzieren zu können, müssen diese nummeriert sein
- Nummerierung entweder pro Gleichung aktivieren
#show-code-render("math-numbered.typ")
- oder global aktivieren
`#set math.equation(numbering: "(1)")`
]
#slide(title: [Mathematik -- Zeichen])[
#show-code-render("math-symbols.typ")
#align(center)[Die Größe der Klammern wird automatisch angepasst.]
]

22
chapters/own-changes.typ Normal file
View file

@ -0,0 +1,22 @@
#import "/globals.typ": *
= Direkt ausprobieren und mitmachen
#slide(title: "Projekt kompilieren")[
- Im Projektverzeichnis `typst compile file.typ`
- oder inkrementell `typst watch file.typ`
- in Typesetter Vorschau aktivieren
- mit Docker
- Outputfile `file.pdf` als PDF-Datei im gleichen Verzeichnis
]
#slide(title: "Erste eigene Änderungen")[
- Eigener Text, Absätze
- Textformatierung: *fett* und _kursiv_ mit `*fett*` und `_kursiv_`
- Eigene Abschnitte mit Überschriften (`=`, `==`)
- Metadaten ändern
- Titel des Dokuments ändern mit `title:`
- Eigener Name als Autor mit `author:`
- Anzeigen des Titels mit `#title()`
]

44
chapters/tables.typ Normal file
View file

@ -0,0 +1,44 @@
#import "/globals.typ": *
= Tabellen
#slide(title: [Setzen von Tabellen])[
- Tabellen werden mithilfe der Funktion `#table` gesetzt
- Jede Tabellenzeile ist ein eigener Inhaltsblock
- kann dementsprechend formatiert werden
- Anzahl der Spalten wird als Parameter festgelegt
]
#slide(title: [Beispieltabelle])[
#show-code-render("example-table.typ")
]
#slide(title: [Spaltenbreite])[
- `auto`: Standard und versucht bestmögliche Verteilung
- absolute Längen
- Verhältnis der Gesamttabelle in `%`
- Anteil an verfügbarem Platz
]
#slide(title: [Spaltenbreite --- Verhältnis der Gesamttabelle])[
- Spalten können so maximal 100 % der Tabellenbreite einnehmen
- Durch `gutter` können aber weitere Abstände hinzukommen
- Tabelle nimmt mehr als 100 % ihres Platzes ein
]
#slide(title: [Spaltenbreite --- Anteil an verfügbarem Platz])[
- Summe aller Werte mit Einheit `fr`
- Verteilt all diese Spalten entsprechend des Verhältnisses
#show-code-render("table-fr.typ")
]
#slide(title: [Alternierende Zeilenfarbe])[
#show-code-render("table-alternate-row-color.typ")
]
#slide(title: [Tabelle über mehrere Seiten])[
- `block`, der Tabelle umschließt muss `breakable` gemacht werden
```
#show figure: set block(breakable: true)
```
]

31
chapters/typst-code.typ Normal file
View file

@ -0,0 +1,31 @@
#import "/globals.typ": *
#slide(title: "Wie sieht typst Code aus?")[
#raw(lang: "typ", read("/codebeispiele/beispiel.typ"))
]
#slide(title: "Grundlegender Aufbau")[
- Keine Präambel wie in #LaTeX
- Einstellungen für das gesamte Dokument und eingebundene Pakete trotzdem am Anfang des Dokuments
- Einstellungen können später im Dokument geändert werden
- Einstellungen können auch lokal überschrieben werden
- Zusätzliche Pakete
- Preview von vielen Paketen, die von der Community entwickelt werden
- werden im Repository gehostet und bei Bedarf heruntergeladen
- keine Distributionen wie bei #LaTeX
]
#slide(title: "Modi")[
- typst kennt drei Modi
- Markupmodus
- Mathemodus
- Programmiermodus
- Schreibmodus ist der normale Modus
- Text wird gesetzt
- aus Programmiermodus als Inhaltsblock `[]`
- Mathemodus ermöglicht das Setzen von Formeln
- eingeleitet mit `$`
- Programmiermodus für Konfiguration oder eigene Funktionalität
- eingeleitet mit `#`
]

View file

@ -0,0 +1,18 @@
#import "/globals.typ": *
#slide(title: "Bevor wir beginnen: Was brauche ich?")[
- typst Installation
- Windows: https://typst.app/open-source/#download
- Mac: Homebrew `typst`
- Linux: Installation über den Paketmanager
- deb: nicht paketiert, rpm: `copr/claaj/typst`
- Arch Linux: `typst`
- NixOS: `nixpkgs.typst`
- Docker: `ghcr.io/typst/typst`
- Texteditor
- #link("https://code.visualstudio.com/")[VSCode] mit #link("https://marketplace.visualstudio.com/items?itemName=myriad-dreamin.tinymist")[Tinymist], #link("https://neovim.io/")[neovim] mit #link("https://github.com/Myriad-Dreamin/tinymist/blob/main/editors/neovim/README.md")[Tinymist]
- #link("https://typesetter.trowell.net/")[Typesetter]
- Online-Editoren
- #link("https://typst.app/")[Online-Editor], Registrierung erforderlich
- #link("https://typst.app/play/")[Playground]
]

View file

@ -0,0 +1,35 @@
#import "/globals.typ": *
= typst -- die Theorie
#slide(title: "Was ist typst?")[
- Textsatzsystem
- moderne Entwicklung als Konkurrenz zu #LaTeX
- Preview Dezember 2022 gestartet
- seit März 2023 Open Source
- viele Entwicklungen
- Noch nicht komplett stabil -- es gibt Änderungen in neuen Versionen, die manchmal nicht abwärtskompatibel sind
#v(1em)
- setzt vorgegebenen Text und weitere Anweisungen automatisch und versucht dabei bestmögliches Layout
- hat einfacherere Programmiermöglichkeiten als #LaTeX
]
#slide(title: "Warum typst?")[
#columns(2)[
=== Warum typst?
- Automatisch Textsatz, Referenzen, Layout
- Keine große Layoutarbeit am Ende
- Kein Ruinieren des Dokuments beim Verschieben eines Bildes
- Das Dokument "sieht einfach schön aus"
#v(1em)
- Als Bibliothek in Softwareprogrammen einsetzbar
- inkrementelles Kompilieren, ohne doppelte Durchläufe
#colbreak()
=== Warum (noch) kein typst?
- Neue Versionen nicht komplett abwärtskompatibel
- Vorlagen für #LaTeX vorgegeben
- Unbekannter
]
#v(1em)
#align(center)[Mit typst ist das Layouten von Arbeiten deutlich einfacher.]
]

51
chapters/writing-text.typ Normal file
View file

@ -0,0 +1,51 @@
#import "/globals.typ": *
= Text, Inhalt und Struktur
#slide(title: "Funktionen")[
- ermöglichen besondere Formatierung oder lokales Überschreiben von Einstellungen
- werden mit `#` eingeleitet
- im Programmiermodus können weitere Funktionen ohne `#` begonnen werden
- Parameter können positioniert oder benannt sein
- Inhalt wird nach den Parametern in `[]` angegeben
- besteht der Inhalt aus einem weiteren Funktionsaufruf, kann dieser auch als Argument übergeben werden
#show-code-render("functions.typ")
]
#slide(title: "Anführungszeichen")[
- Werden je nach ausgewählter Sprache richtig gesetzt
#show-code-render("quotations.typ")
]
#slide(title: "Wichtige besondere Zeichen")[
#table(
columns: (auto, auto, auto),
align: center,
[Schrägstrich], [\\], [`\\`],
[geschütztes Leerzeichen (ohne Zeilenumbruch)], [~], [\~],
[schmales geschütztes Leerzeichen], [z.#(sym.space.nobreak.narrow)B.], [`z.#(sym.space.nobreak.narrow)B.`],
[Tilde], [\~], [`\~`],
[Gedankenstrich (Halbgeviertstrich)], [--], [`--`],
[Geviertstrich], [---], [`---`],
)
]
== Verweise
#slide(title: [Verweise -- Was wollen wir?])[
- Referenzieren von Abbildungen, Tabellen, Codezeilen, etc.
- automatische Nummerierung
- kein manuelles Nummerieren, Aktualisieren und Überprüfen
- automatische Verzeichnisse
- anklickbarer Link
]
#slide(title: "Verweise")[
- Label setzen: `<labelname>`
- Referenzieren: `@labelname`
- Typ des referenzierten Objekts wird in der Textsprache mitgenannt (Abbildung, Gleichung, ...)
- Seite referenzieren: `#ref(<labelname>, form: "page")`
- Referenz nutzt immer aktuellste Abschnittnummer bzw. Seitenzahl ohne weiteren Aufwand
- Daten sind immer aktuell, keine doppelten Kompilierungsdurchläufe notwendig
- Verweis ist ein Link, der direkt auf das referenzierte Objekt führt
]

View file

@ -0,0 +1,17 @@
#import "@preview/unify:0.7.1": * // Einfügen von Paketen
#set page("a4") // Papierformat
#set document( // Dokumenteninformationen
title: [Dokumententitel]
)
#set text(lang: "de") // Sprache des Dokuments
#show link: set text(blue) // Formatierung (hier: Links in blau)
#title() // Dokumententitel
= Überschrift // Anzahl der = gibt Ebene der Überschrift an
== Unterüberschrift
#outline() // Inhaltsverzeichnis
Beispielhafter Text
- Aufzählung 1 // Aufzählung mit - begonnen
- Aufzählung 2 // Einrückung mit 2 Leerzeichen

View file

@ -0,0 +1,14 @@
@book{kochbuch,
title = {Mathematik für das Ingenieurstudium},
author = {Koch, Jürgen},
editor = {Stämpfle, Martin},
address = {München},
publisher = {Hanser},
year = {2018},
edition = {4., aktualisierte Auflage},
isbn = {9783446451667},
doi = {10.3139/9783446455818},
}
@article{...

View file

@ -0,0 +1,16 @@
// Im Dokument
@citation-key
// oder
#cite(<citation-key>)
// für die Einbindung innerhalb des Satzes
#cite(<citation-key>, form: "prose")
// nur Autor:in
#cite(<citation-key>, form: "author")
// Stelle, an der Literaturverzeichnis erscheinen soll
#bibliography(
("bib/books.bib",
"bib/theses.bib",)
title: "Literaturverzeichnis", // Standardübersetzung Bibliografie
style: "ieee"
)

View file

@ -0,0 +1,11 @@
#set page(footer: context {
let page-num = counter(page).get().first()
let inner-text = [Innerer Text]
let middle-text = [Mittlerer Text]
let outer-text = [#page-num]
if calc.even(page-num) {
grid(columns: (1fr, 1fr, 1fr), align(left, inner-text), align(center, middle-text), align(right, outer-text))
} else {
grid(columns: (1fr, 1fr, 1fr), align(left, outer-text), align(center, middle-text), align(right, inner-text))
}})

View file

@ -0,0 +1,12 @@
#set page(footer: context {
let page-num = counter(page).get().first()
let inner-text = [Innerer Text]
let middle-text = [Mittlerer Text]
let outer-text = [#page-num]
if calc.even(page-num) {
grid(columns: (1fr, 1fr, 1fr), align(left, inner-text), align(center, middle-text), align(right, outer-text))
} else {
grid(columns: (1fr, 1fr, 1fr), align(left, outer-text), align(center, middle-text), align(right, inner-text))
}
})

View file

@ -0,0 +1,11 @@
#figure(
caption: [Beispielcode in Java]
)[
```java
public static void main(String[] args) {
System.out.println("Hello Cyberweek");
}
```
]<code:example-java>
In @code:example-java ist ein wichtiger Codeausschnitt zu sehen.

View file

@ -0,0 +1,4 @@
In @code:codly-highlights wird die alte Syntax verwendet.
Für kleine Projekte kann die `main`-Funktion ohne Parameter und ohne Modifier angegeben werden. Aus @code:codly-highlights:psvm wird dann ```java main() {```.
Außerdem ist nun auch der Aufruf ohne das ```java System.out.``` möglich, wie in @code:codly-highlights:sout dargestellt.

View file

@ -0,0 +1,13 @@
#import "/globals.typ": *
#figure(caption: [Highlights in codly])[
#codly(highlights: (
(line: 1, fill: blue, label: <code:codly-highlights:psvm>),
(line: 2, start: 3, end: 13, fill: red, label: <code:codly-highlights:sout>),
))
```java
public static void main(String[] args) {
System.out.println("Hello Cyberweek");
}
```
]<code:codly-highlights>

View file

@ -0,0 +1,7 @@
#table(
columns: 3,
align: (left, center, right),
table.header[*Tabellenkopf*][*für*][*Barrierefreiheit*],
[Hallo],[Beispiel],[Ende],
[Dies],[ist],[Zeile 2]
)

View file

@ -0,0 +1,3 @@
#align(center)[Zentrierter Text]
#text(lang: "en")[english text]

View file

@ -0,0 +1,16 @@
kochbuch:
type: book
title: Mathematik für das Ingenieurstudium
author: Koch, Jürgen
date: 2018
editor: Stämpfle, Martin
publisher:
name: Hanser
location: München
edition: 4., aktualisierte Auflage
serial-number:
doi: 10.3139/9783446455818
isbn: '9783446451667'
artikel:
type: article
...

View file

@ -0,0 +1,11 @@
#figure(
image(
"/images/katze.jpg",
width: 80%
),
caption: [
Eine Katze
],
)<img:katze>
@img:katze zeigt eine Katze.

View file

@ -0,0 +1,3 @@
In diesem Absatz geht es um ein wichtiges Thema.
Nun folgt eine Gleichung:
$ f(x)=x^2 $

View file

@ -0,0 +1 @@
Hier ist nun ein Fließtext, in den ich eine Gleichung $f(x)=x^2$ setzen möchte.

View file

@ -0,0 +1,4 @@
In diesem Absatz geht es um ein wichtiges Thema.
Nun folgt eine Gleichung:
#math.equation(block: true, numbering: "(1)")[$f(x)=x^2$]<eq:example-block>
In @eq:example-block steht eine wichtige Gleichung.

View file

@ -0,0 +1,11 @@
$
f(x)=x^2 \
f_(x y)(x)=x^(2-y) \
pi approx 3.14 \
2 dot 4 <= 8 \
1 < 2 > 1, 2 != 3 \
1 lt 2 gt 1, 2 eq.not 3, 4 lt.eq 8 \
(f^(-1)_x) \
frac(2,4) + frac(1, frac(5,17)) \
sqrt(16) = 4, root(4, 64) = 2
$

View file

@ -0,0 +1,14 @@
`Text in Monospacefont`
Javacode im ```java public static``` Fließtext
```java
public static void main() {
println("Hallo Cyberweek");
}
```
#raw("def main():
print(\"Hallo Cyberweek\")",
block: true,
lang: "python")

View file

@ -0,0 +1,5 @@
#text(lang: "de")["Beispieltext"]
#text(lang: "fr")["texte exemple"]
#text(lang: "en")["example text"]

View file

@ -0,0 +1,7 @@
#table(
columns: 3,
fill: (x, y) => if calc.odd(y) { green.lighten(80%) },
table.header[*Tabellenkopf*][*für*][*Barrierefreiheit*],
[Hallo],[Beispiel],[Ende],
[Dies],[ist],[Zeile 2]
)

View file

@ -0,0 +1,6 @@
#table(
columns: (2fr, 1fr, 2fr),
table.header[*Tabellenkopf*][*für*][*Barrierefreiheit*],
[Hallo],[Beispiel],[Ende],
[Dies],[ist],[Zeile 2]
)

15
globals.typ Normal file
View file

@ -0,0 +1,15 @@
#import "@preview/touying:0.6.1": *
#import themes.metropolis: *
#import "@preview/codly:1.3.0": *
#import "@preview/codly-languages:0.1.1": *
#import "@preview/metalogo:1.2.0": LaTeX, TeX
#let show-code-render(path) = {
columns(2)[
#include "/codebeispiele/" + path
#colbreak()
#raw(lang: "typ", read("/codebeispiele/" + path).replace("#import \"/globals.typ\": *\n\n", ""))
]
}

BIN
images/bibliothek.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
images/blb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 KiB

BIN
images/boss.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

BIN
images/briefs.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
images/katze.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 247 KiB

BIN
images/moderner-cv.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

BIN
images/pearson.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
images/springer.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

73
workshop.typ Normal file
View file

@ -0,0 +1,73 @@
#import "/globals.typ": *
#import "@preview/codly:1.3.0": *
#import "@preview/codly-languages:0.1.1": *
#set text(
lang: "de",
font: "Fira Sans",
)
#show link: set text(blue)
#set list(marker:([], [], [--]))
#set table(stroke: (x, y) => (
left: if x > 0 { 0.8pt },
top: if y > 0 { 0.8pt },
))
#set raw(lang: "typ")
#show: codly-init.with()
#codly(languages: codly-languages)
#codly-disable()
#show outline.entry: it => link(
it.element.location(),
it.indented(it.prefix(), text(black, it.body())),
)
#show: metropolis-theme.with(
aspect-ratio: "16-9",
footer-right: [],
config-info(
title: [WYSIWYAF with typst],
subtitle: [Einstieg in wissenschaftliche Arbeiten mit typst],
author: [Julius Freudenberger],
date: [Cyberweek Wintersemester 2025/2026],
institution: [Hochschule Esslingen],
),
)
#title-slide()
#include "chapters/what-is-needed.typ"
#include "chapters/about-me.typ"
#include "chapters/introduction.typ"
= Inhalt <touying:hidden>
#outline(title: none, depth: 2)
#include "chapters/what-is-typst.typ"
#include "chapters/typst-code.typ"
#include "chapters/own-changes.typ"
#include "chapters/writing-text.typ"
#include "chapters/math.typ"
#include "chapters/tables.typ"
#include "chapters/graphics-floats.typ"
#include "chapters/listings.typ"
#include "chapters/listofs.typ"
#include "chapters/formatting.typ"
#include "chapters/external-files.typ"
#include "chapters/closing.typ"
#title-slide()