Shared Typst themes used for teaching materials at DELTA – Střední škola informatiky a ekonomie, s.r.o.
Each theme lives in its own directory together with its documentation, a runnable example and the compiled output of that example, so you can see what the theme produces before you write a single line.
| Theme | Directory | Built on | Used for |
|---|---|---|---|
| Presentation | presentation/ |
Touying 0.7.4 | lecture slide decks (interactive + handout) |
| Exercise | exercise/ |
grape-suite 4.0.0 | written tests and worksheets (Czech localization) |
- Typst 0.15.1 — the version pinned in CI. Newer versions usually work, but the committed example outputs are produced with this one.
- Typst packages, downloaded automatically from Typst Universe on first
compile:
@preview/touying:0.7.4— presentation theme@preview/fletcher:0.5.8— diagrams (only if your document draws any)@preview/grape-suite:4.0.0— exercise theme
- Optional font Atkinson Hyperlegible Next for the exercise theme. Without
it Typst prints a harmless
unknown font familywarning and falls back to Libertinus Serif.
The themes are plain .typ files with no build step. Copy the one you need
into your project (or add this repository as a git submodule) and import it
with a relative path:
#import "delta-theme.typ": * // presentation
#import "delta-exercise.typ": project, subtask, task // exerciseThen compile with the repository root passed as --root, so relative imports
that climb out of the document directory keep working:
typst compile --root /path/to/project path/to/document.typThe per-theme READMEs document every option and function:
./build.shThis compiles all five example outputs and checks the presentation for Touying overflow pages (the glitch where a slide whose fully revealed content does not fit emits a near-blank continuation page):
| Output | What it is |
|---|---|
presentation/example/example.pdf |
example deck, animations on (one page per reveal step) |
presentation/example/example-handout.pdf |
same deck with config-common(handout: true), one page per slide |
exercise/example/example.pdf |
example test as handed to students |
exercise/example/example-napoveda.pdf |
same test with hints (show-hints: true) |
exercise/example/example-reseni.pdf |
same test with suggested solutions (show-solutions: true) |
The handout, hints and solutions variants are produced by temporarily
un-commenting a line in the source and restoring it afterwards, so those lines
must stay commented out in committed sources. The same happens in CI
(.github/workflows/compile.yml) on every
push touching a .typ file.
typst-themes/
build.sh # compiles all examples + blank-page check
presentation/
delta-theme.typ # the theme
README.md # API reference and conventions
assets/
delta-logo.png # school logo (trademark, see LICENSE)
example/
example.typ # example source
example.pdf # example output (interactive)
example-handout.pdf # example output (handout)
exercise/
delta-exercise.typ # the theme
README.md # API reference and conventions
example/
example.typ # example source
example.pdf # example output (plain)
example-napoveda.pdf # example output (with hints)
example-reseni.pdf # example output (with solutions)
Keep the shape consistent so every theme is documented the same way:
- Create a directory named after the document kind (
presentation,exercise, …) with the theme.typat its root. - Write a
README.mddocumenting every function and option the theme exposes. - Add
example/example.typdemonstrating the theme, and commit its compiled output next to it. - Wire the example into
build.shso CI compiles and checks it.
Ing. Luboš Zápotočný, DELTA – Střední škola informatiky a ekonomie, s.r.o.
Licensed under CC BY-NC-SA 4.0. You may share and adapt these themes for non-commercial purposes with attribution, and must distribute derivatives under the same license.
The DELTA name and the logo in presentation/assets/ are trademarks of the
school and are not covered by that license — see the TRADEMARKS section of
LICENSE. If you adapt these themes, swap in your own logo.