This repository is a template for writing a Master's Thesis using Typst and creating accompanying presentation slides using Slidev.
thesis/contains the thesis source, Typst templates, assets, bibliography, fonts, and build scripts.present/contains the Slidev presentation, including components, diagrams, and public assets.expose/contains the thesis exposé.notes/directory for personal research notes and planning documents.build/contains generated build output such as PDFs, lint results, and PlantUML files.
- Edit metadata (title, author, degree, examiners, etc.) in
thesis/main.typ. - Write chapters in
thesis/chapters/and include them inthesis/chapters/0-chapters.typ. - Manage acronyms in
thesis/acronyms.typand glossary entries inthesis/glossary.typ. - Add literature citations in
thesis/bib.bib.
To compile the thesis to PDF:
typst compile thesis/main.typ build/thesis.pdf --root . --font-path thesis/fonts/A unified lint script checks the Typst thesis for academic style, terminology, headings, Unicode symbols, lists, paragraph length, articles, references, bibliography quality, and spelling:
python thesis/scripts/lint.pyUse --fix to apply supported automatic corrections.
Generate spoken audio per chapter (for proofreading or audio export) using Kokoro-TTS:
python thesis/scripts/generate_tts.pyOptions include --chapter <num|name>, --voice <voice>, --speed <float>, and --list-chapters. Audio (.mp3) and extracted text are cached and saved to build/audio/.
The Slidev presentation is located in present/.
cd present
pnpm install
pnpm dev # Start dev server
pnpm build # Build presentation slides & PDF export- Reusing Typst in Slidev: Typst diagrams can be rendered inside Slidev using the Typst Vite plugin. For this setup,
.typfiles should reside withinpresent/diagrams/. - PlantUML Precompilation: PlantUML diagrams (
present/diagrams/*.puml.md) are precompiled to SVG inbuild/puml/usingpython thesis/scripts/precompile.py. - Lint Results in CI: The lint script writes findings to
build/lint.txt. The thesis template can display a Lint Errors page when findings exist.