Typst Guide

Typst Thesis Tutorial

Write your PhD or Master's thesis in Typst. 10x faster compile than LaTeX, cleaner syntax, and the same publication-quality output.

Project structure

my-thesis/
├── main.typ                    # entry point
├── references.bib              # citations
├── chapters/
│   ├── 01-introduction.typ
│   ├── 02-background.typ
│   ├── 03-methods.typ
│   ├── 04-results.typ
│   ├── 05-discussion.typ
│   └── 06-conclusion.typ
├── appendices/
│   ├── a-data.typ
│   └── b-proofs.typ
├── figures/
│   ├── architecture.svg
│   └── results.png
└── template/
    └── thesis-template.typ   # custom layout

main.typ: putting it together

#import "template/thesis-template.typ": *

#show: thesis.with(
  title: "My Dissertation Title",
  author: "Your Name",
  university: "University Name",
  department: "Department of Computer Science",
  degree: "Doctor of Philosophy",
  year: 2026,
  advisor: "Prof. Advisor Name",
)

// Front matter
#include "chapters/abstract.typ"
#include "chapters/acknowledgments.typ"

// Main matter
#include "chapters/01-introduction.typ"
#include "chapters/02-background.typ"
#include "chapters/03-methods.typ"
#include "chapters/04-results.typ"
#include "chapters/05-discussion.typ"
#include "chapters/06-conclusion.typ"

// Bibliography
#bibliography("references.bib", style: "apa")

// Appendices
#include "appendices/a-data.typ"
#include "appendices/b-proofs.typ"

A chapter file

// chapters/01-introduction.typ
= Introduction <ch:intro>

This chapter motivates the dissertation and outlines the structure.

== Motivation
Recent work @smith2024 has shown that ...

== Research Questions
1. RQ1: How does X affect Y?
2. RQ2: What's the optimal Z?

== Contributions
This dissertation makes the following contributions:
- Contribution 1
- Contribution 2

== Outline
The remainder of this thesis is organized as follows.
@ch:background reviews related work...

Front matter pagination (Roman → Arabic)

// Title page (no number)
#set page(numbering: none)
... title page ...
#pagebreak()

// Front matter (Roman: i, ii, iii)
#set page(numbering: "i")
#counter(page).update(1)
... abstract, TOC, list of figures ...
#pagebreak()

// Main matter (Arabic: 1, 2, 3)
#set page(numbering: "1")
#counter(page).update(1)
... chapters ...

Why Typst beats LaTeX for thesis writing

  • 10x faster compile. A 200-page thesis compiles in 1-2 seconds in Typst; LaTeX takes 15-30 seconds (or longer with biber/bibtex). When you're iterating on figures and equations daily, this saves hours.
  • One-pass build. No pdflatex → bibtex → pdflatex → pdflatex sequence. Typst does it all in one pass.
  • Better error messages. Typst tells you exactly what's wrong with line numbers and a useful explanation. LaTeX shows "Missing $ inserted" from a macro 3 layers deep.
  • Simpler customization. Want to change all section headings? One #show heading rule. In LaTeX you'd redefine titlesec or fight the class file.
  • Same output quality. Indistinguishable PDF for any reader.
Start your thesis in Typst (free)

TypeTeX includes thesis templates ready to use — just replace the placeholder content. Real-time collaboration with your advisor, AI writing assistance, and Overleaf-import if you started in LaTeX.

Frequently Asked Questions

Can I write my PhD thesis in Typst?

Yes — and many PhD students already do. Typst handles the typographic complexity of a thesis (chapter numbering, headers/footers, bibliography, cross-referencing, figures) just as well as LaTeX, with simpler syntax and 10x faster compile. The main consideration: check if your university requires LaTeX source for archival. If they only accept PDF, Typst is fine. If they require .tex, write in LaTeX or convert at the end.

How do I organize a thesis project in Typst?

One main.typ file that imports each chapter: #include "chapters/01-introduction.typ", #include "chapters/02-background.typ", etc. Plus references.bib for citations and a templates/ folder for any custom show rules. Typst's #include works like LaTeX's \input — content flows into the main document at that point.

How do I make a title page in Typst?

Use #align and formatted text inside a #page (or just at the top): #align(center + horizon)[#text(size: 28pt, weight: "bold")[Thesis Title]] #v(2em) #text(size: 14pt)[by Author Name]. For thesis with university crest, embed the image: #image("crest.png", width: 4cm). Most thesis templates wrap this in a thesis-title() function.

How do I get chapter numbering (Chapter 1, Chapter 2)?

#set heading(numbering: "1."). Then prefix the heading display: #show heading.where(level: 1): it => [Chapter #counter(heading).display() #it.body]. Or use a template that handles this — most thesis templates expose a #chapter("Title") function that does the formatting.

How do I add page numbers in Roman before the main matter and Arabic after?

Front matter (TOC, acknowledgments, abstract): #set page(numbering: "i"). Then before the first chapter: #set page(numbering: "1") #counter(page).update(1). The page counter restarts at 1 in Arabic for the main matter. Typical thesis pattern.

How do I cite hundreds of references in a Typst thesis?

Use #bibliography("references.bib", style: "apa") or whatever style your discipline requires. Typst handles BibTeX directly with no separate bibtex/biber compile step. For thesis-scale (200-500 references) Typst compiles in <1s — vs LaTeX where biber adds 5-10s to every compile cycle.

How do I add a list of figures and tables to my thesis?

#outline(target: figure) for the list of figures, #outline(target: figure.where(kind: table)) for tables. Place after the main #outline() (table of contents). All auto-populate from your figure() calls.

How do I make appendices in a Typst thesis?

Use #show heading.where(level: 1): it => { ... } and check if the heading should be styled as an appendix. Or use a template's appendix() function. Most thesis templates use a #counter("appendix") and switch heading numbering to A, B, C with #set heading(numbering: "A.1").

Where can I find a Typst thesis template?

TypeTeX includes pre-built thesis templates: MIT-style, Harvard-style, generic university PhD/Master's. Typst Universe also hosts community templates: 'thesis-typst', 'modern-thesis', etc. Import with #import "@preview/modern-thesis:0.5.0": *.

More Typst guides