Ein Deck von Anfang bis Ende#
Die übrigen Kapitel zeigen je ein Mittel. Dieses zeigt einen ganzen Vortrag: eine einzige Datei, von der leeren Zeile bis zum Handout, und jeder Schritt fügt genau eine Sache hinzu.
Der Stoff ist eine Aufgabe aus der Mittelstufe: Wie hoch ist der Turm? Ein Stab von 1,20 m wirft 0,90 m Schatten, der Turm wirft 21 m. Gesucht ist seine Höhe.
Die leere Datei#
Zwei Zeilen sind ein Deck. Die erste holt das Paket, die zweite sagt, dass dieses Dokument eine Präsentation ist.
#import "@preview/typstage:0.2.0": *
#show: presentation.with(title: [Wie hoch ist der Turm?])Übersetzt wird das zweimal, aus derselben Datei:
typst compile turm.typ turm.html --format html --features html
typst compile turm.typ turm.pdfDie HTML öffnet man im Browser und blättert mit den Pfeiltasten. Bis hierhin gibt es nur die Titelfolie – title: genügt, damit sie entsteht.
Die erste Folie#
Eine Überschrift der zweiten Ebene ist eine Folie, der Text darunter ihr Rumpf. Eine Überschrift der ersten Ebene ist eine Abschnittsfolie.
= Die Frage
== Ein Stab und ein Turm
Ein Stab von 1,20 m wirft einen Schatten von 0,90 m.
Der Turm wirft 21 m. Wie hoch ist er?Mehr Struktur braucht es nicht.
Was nacheinander erscheinen soll#
Drei Beobachtungen, eine nach der anderen. stagger zerlegt eine Aufzählung an ihren Punkten und gibt jedem einen eigenen Schritt.
== Was wir sehen
#stagger[
- Die Sonne steht für beide gleich hoch.
- Also ist der Winkel derselbe.
- Also sind die Dreiecke ähnlich.
]Jetzt hat die Folie drei Schritte: der erste Punkt steht mit dem Rumpf da, die beiden anderen kommen je einen Schritt später.
Ein Kasten, der hängen bleibt#
Der Satz, auf den es ankommt, gehört nicht in die Aufzählung. callout setzt ihn mit einem Balken an der linken Seite ab.
== Was wir sehen
#stagger[
- Die Sonne steht für beide gleich hoch.
- Also ist der Winkel derselbe.
- Also sind die Dreiecke ähnlich.
]
#callout[
In ähnlichen Dreiecken stehen entsprechende Seiten im selben Verhältnis.
]Die Überschrift des Kastens folgt der Sprache des Dokuments – auf Deutsch „Merke“. title: ändert sie, title: none lässt sie weg.
Die Formel, die sich selbst umschreibt#
Dieselbe Formel steht auf zwei Folien an zwei Stellen und fliegt dazwischen, Zeichen für Zeichen. Dafür ist nur eines zu tun: beide Folien nennen sie beim selben Namen, und der Name ist ein Label.
== Das Verhältnis
#align(center, morph(<turm>, $ h / 21 = 1.2 / 0.9 $))
== Nach h aufgelöst
#align(center, morph(<turm>, $ h = 21 dot 1.2 / 0.9 $))Im Browser wandern h, der Bruchstrich und die Zahlen an ihre neue Stelle, statt zu verschwinden und wiederzukommen. Auf dem Papier wird aus der Kette die Rechnung.
Eine Notiz, die nur du siehst#
speaker-note gehört zur Folie und erscheint nirgends auf der Leinwand.
== Das Ergebnis
#statement[$ h = 28 "m" $]
#speaker-note[
Erst rechnen lassen, dann zeigen. Wer 28 sagt, hat gerundet -- 28,0 ist
genauer, als die Messung hergibt.
]Zu sehen ist sie in der Sprecheransicht und im Handout neben ihrer Folie.
Eine Anmerkung, die der Saal liest#
#footnote geht, und es sieht anders aus als im Buch: Die Anmerkung steht am Fuß ihrer Folie, unter einem kurzen Strich, und gezählt wird je Folie neu. Eine Fußnote auf Folie sieben trägt dort die Eins.
== Die Messung
Der Stab ist 1,20 m hoch#footnote[Am Fuß gemessen, nicht an der Spitze.] und
wirft 0,90 m Schatten.Sie erreicht alle drei Ausgaben: den Browser, die PDF und das Handout neben seiner Folie. Steht die Fußnote in einer Aufdeckkette, erscheint ihre Anmerkung mit ihrer Marke: im Browser wird sie auf demselben Schritt eingeblendet, der Folienfuß verrät also nichts, was der Vortrag noch nicht gezeigt hat. Und sie geht mit ihr, auch aus einer Kette in einer Kette: ein stagger in einer Fassung einer alternatives nimmt seine Anmerkungen mit, wenn die Fassung geht. Ihr Platz steht dabei von Anfang an; es springt nichts, wenn sie kommt.
alternatives steht nur die letzte Fassung da, also auch nur ihre Anmerkung; der Platz der anderen bleibt frei, und die Nummern sind die des Browsers. pages: "step" setzt dieselbe Folie einmal je Schritt, und dort zeigt das Papier, was der Browser einblendet: Eine Anmerkung steht auf den Seiten, auf denen ihre Marke aufgedeckt ist, mit derselben Nummer wie im Browser, und ihr Platz bleibt auf den anderen frei.figure, ein #align(center) – kommt in beide Ausgaben, aber nicht an dieselbe Stelle: der Browser zentriert ihn, das Papier beginnt ihn am Anfang der Zeile.#footnote[…], nur gesetzt wird sie vom Deck.Eine PDF, die sich aufdeckt#
pages: "step" setzt eine Seite je Schritt statt eine je Folie. Was noch nicht da ist, ist noch nicht da, und was abgetreten ist, ist fort – das Papier blättert um wie der Vortrag.
#import "@preview/typstage:0.2.0": *
#show: presentation.with(
title: [Wie hoch ist der Turm?],
pages: "step",
)
== Zwei Wege
#stagger([Der Schatten], [Der Winkel])Alles, was aufdeckt, macht mit: #pause, anim, stagger, tiles, alternatives, build, cue und scene – eine Szene bekommt eine Seite je Halt, nicht je Zwischenbild. Ein Stück, das noch nicht an der Reihe ist, behält seinen Platz; von Seite zu Seite verrutscht also nichts.
Zweierlei ist zu wissen. Eine cue-Gruppe wird an der Tastatur gerufen, auf Papier kann sie deshalb nur der geschriebenen Reihenfolge folgen. Und eine Kamerafahrt bekommt keine eigene Seite: auf Papier gibt es keine Kamera, ihre Seite stünde also zweimal gleich da.
Und zweierlei betrifft das Typst-Dokument darunter. Eine Abbildung, eine Gleichung und eine Überschrift tragen ihr Label nur auf der ersten Seite einer Folie, die Seiten danach setzen sie ohne. So findet @abb sein Ziel genau einmal, führt dorthin, wo die Folie aufschlägt, und nennt dieselbe Nummer wie jede ihrer Seiten, und query(<abb>) findet eines je Folie. Eine show-Regel auf ein solches Label erreicht die späteren Seiten deshalb nicht; eine auf die Art, etwa show figure, erreicht alle. In einer card, einem callout, statement, fit, side-by-side(equal: true) oder build, in einem Listenpunkt – auch als Punkt einer cue-Gruppe – und in einer scene-layer, cue-layer oder stagger-layer bleibt das Label auf jeder Seite stehen, und ein Verweis darauf hält das Übersetzen an: Eine Abbildung, auf die verwiesen wird, steht dann neben der Karte oder der Liste statt darin.
Ein eigener state dagegen läuft über die Seiten einer Folie weiter. Jede Seite führt sein update noch einmal aus: Aufgabe #context aufgabe.get() hinter aufgabe.update(n => n + 1) zählt auf den zwei Seiten einer Folie mit #pause 1 und 2 statt zweimal 1, und die Folie danach sagt 3. Zurückstellen kann das Paket ihn nicht, denn Typst verrät weder, womit ein Zustand beginnt, noch, was ein update mit ihm tut. Zum Nummerieren taugt ein counter, den stellen die Seiten zurück; und ein update mit einem Wert statt einer Funktion gibt auf jeder Seite dasselbe.
Rechne mit zwei bis drei Seiten je Folie – so kommen die Beispieldecks heraus.
Das Handout#
Ein Argument macht aus dem Foliensatz ein Blatt zum Mitschreiben: drei Folien je Seite, die Notiz daneben, und wo keine steht, Linien.
#import "@preview/typstage:0.2.0": *
#show: presentation.with(
title: [Wie hoch ist der Turm?],
handout: 3,
)Die Folien werden dabei nicht neu gesetzt, sondern verkleinert; das Handout kann also nicht von der Leinwand abweichen.
Der ganze Quelltext#
Fünfundvierzig Zeilen, und nichts darin, das nicht oben erklärt wurde.
#import "@preview/typstage:0.2.0": *
#show: presentation.with(
title: [Wie hoch ist der Turm?],
author: [Klasse 9b],
theme: themes.lesson,
)
= Die Frage
== Ein Stab und ein Turm
Ein Stab von 1,20 m wirft einen Schatten von 0,90 m.
Der Turm wirft 21 m. Wie hoch ist er?
== Was wir sehen
#stagger[
- Die Sonne steht für beide gleich hoch.
- Also ist der Winkel derselbe.
- Also sind die Dreiecke ähnlich.
]
#callout[
In ähnlichen Dreiecken stehen entsprechende Seiten im selben Verhältnis.
]
= Die Rechnung
== Das Verhältnis
#align(center, morph(<turm>, $ h / 21 = 1.2 / 0.9 $))
== Nach h aufgelöst
#align(center, morph(<turm>, $ h = 21 dot 1.2 / 0.9 $))
== Das Ergebnis
#statement[$ h = 28 "m" $]
#speaker-note[
Erst rechnen lassen, dann zeigen. Wer 28 sagt, hat gerundet -- 28,0 ist
genauer, als die Messung hergibt.
]side-by-side – Zeichnung links, Text rechts, der häufigste Folienbau überhaupt – und theme:, das das Aussehen ändert, ohne dass eine Zeile des Inhalts sich rührt.