From 3d1fe3c968865faf0bb55575b5aa53f9d443fdea Mon Sep 17 00:00:00 2001 From: Marco Thomas Date: Tue, 9 Dec 2025 22:02:58 +0100 Subject: [PATCH] ft: add initial presentation template --- .gitignore | 2 + README.md | 39 ++++++++++++ figures/typst.png | Bin 0 -> 19687 bytes flake.lock | 82 +++++++++++++++++++++++++ flake.nix | 96 +++++++++++++++++++++++++++++ presentation.typ | 150 ++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 369 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 figures/typst.png create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 presentation.typ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..34b3328 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +result* +*.pdf diff --git a/README.md b/README.md new file mode 100644 index 0000000..d47601b --- /dev/null +++ b/README.md @@ -0,0 +1,39 @@ +# Clean Touying Presentation + +This is a presentation template, using the [Touying](https://touying-typ.github.io/docs/intro/) framework. + +The goal was a simple, easy and fast-to-use template, which I can use, without thinking too much about the setup. +In the end, it's just: +- setting some colors for the Metropolis theme +- setting some styling (font, list marker icon, ...) +- enabling speaker notes (using [pympress](https://github.com/Cimbali/pympress)) +- providing some helper functions to use common environments with default parameters (grids, ...) + +Thanks to touying, we have: +- title slides +- progression bar +- slide numbering +- [dynamic slides](https://touying-typ.github.io/docs/category/dynamic-slides) +- focus slides +- [speaker notes](https://touying-typ.github.io/docs/external/pympress#speaker-notes) +- ... + +If you are not using the `pympress` PDF reader, you can disable the speaker notes by commenting out the `show-notes-on-second-screen` line. + +## Usage ++ Adjust title, author, date and affiliation at the top of the file. ++ Optionally adjust the colors, to match affiliation logo color ++ Start hacking the presentation after `// PRESENTATION STARTS HERE...` + +Use the provided Nix-flake: + +``` +$ nix develop . +``` + +or just the Typst installation on your system: + +``` +$ typst watch presentation --open +``` + diff --git a/figures/typst.png b/figures/typst.png new file mode 100644 index 0000000000000000000000000000000000000000..faf7096f8fe7db71ab3846005503bb413e24a14d GIT binary patch literal 19687 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 text(size: 0.8em, []), + footer-right: text(size: 0.8em, [#context utils.slide-counter.display()]), + config-info( + title: [Title], + subtitle : [Subtitle], + author: "Marco Thomas", + date: [DDth MMM, YYYY], + institution: [ + #grid(columns: 2, gutter: 1em, + image("figures/typst.png", width: 2em), + [Some university], + ) + ] + ), +) + +// Styling +#set text(font: "Roboto", weight: "light", size: 25pt) +#set list(marker: sym.triangle.filled.r) +#show figure.caption: c => [ + #set text(size: 20pt) + #c.body +] + +// Functions +#let note(body) = { text(fill: greytext, [(#body)]) } +#let grey(body) = { text(fill: greytext, body) } +#let greyoutafter(body) = { + alternatives([ + #body + ], [ + #text(fill: greytext, [ + #body + ]) + ]) +} +#let ccalign(body) = { align(horizon+center, body) } +#let dual(cleft: 50%, cright: 50%, gutter: 1%, calign: left, left, right) = { + grid( + columns: (cleft, cright), + gutter: gutter, + align(calign, left), + align(calign, right) + ) +} +#let triple(cleft: 30%, ccenter: 30%, cright: 30%, gutter: 1%, row-gutter: none, calign: left, left, center, right) = { + grid( + columns: (cleft, ccenter, cright), + gutter: gutter, + row-gutter: if row-gutter == none { gutter } else { row-gutter }, + align(calign, left), + align(calign, center), + align(calign, right) + ) +} + +// PRESENTATION STARTS HERE... +#speaker-note()[ + - some introductory words... +] +#title-slide() + += Introduction +== Introduction + + +#ccalign(lorem(20)) + +== Grids + +#dual(calign: center,[ + #image("figures/typst.png", height: 50%) + ], [ + this.. + + #pause + #v(1em) + but also this! + ] +) + +--- + +#dual(cleft: 20%, cright: 80%, [ + Also with adjustable column size +], [ + - one + - another + - and another +]) + +#speaker-note()[ + this is very important + + #text(size: 0.7em, [ + tip: use text function, if you need more speaker notes + ]) +] + +--- + +#dual(cleft: 65%, [ + #only((1,2,3))[- Typst] + #only((2,3))[- More Typst] + #only(3)[- Even more Typst!] +], [ + #only(1)[#image("figures/typst.png", height: 50%)] + #only(2)[#image("figures/typst.png", height: 50%)] + #only(3)[#image("figures/typst.png", height: 50%)] +]) + +--- + +// default grids are still usefull to have :) +#grid(columns: (33%, 33%, 33%), row-gutter: 20%, + only((1,2,3))[#align(center, image("figures/typst.png", width: 60%))], + only((2,3))[#align(center, image("figures/typst.png", width: 60%))], + only(3)[#align(center, image("figures/typst.png", width: 60%))], + only((1,2,3))[#align(center, [Typst!])], + only((2,3))[#align(center, [Horizontal!])], + only(3)[#align(center, [whoaaa])], +) + +--- + +#greyoutafter([- hello]) +#greyoutafter([- im more important now!]) +#greyoutafter([- nah, it's me!]) + +#focus-slide()[ + Important! +]