What is Typst?
Typst is a modern, open-source markup language for typesetting documents. Designed as a fast, intuitive alternative to LaTeX, Typst compiles complex documents into pixel-perfect PDFs in milliseconds.
I use Typst to design and build my personal resume because it combines the typographic precision of LaTeX with the simplicity of Markdown and the power of a modern programming language.
Why Choose Typst Over LaTeX?
- Instant Preview & Fast Compile: Compiles in milliseconds rather than seconds.
- Clean Syntax: No more endless
\begin{itemize}and\end{itemize}blocks. - Built-in Layout System: Grid layouts, columns, margins, and custom headers are built natively into the syntax.
- Programmable & Reusable Templates: Define reusable functions for resume headers, experience entries, and skill badges.
1. Syntax Basics
Text Formatting
Writing in Typst feels as natural as Markdown:
= Heading 1
== Heading 2
=== Heading 3
This is *bold* text, _italic_ text, and `raw code`.
You can also highlight #highlight[important details].Lists
- Bullet item 1
- Bullet item 2
+ First numbered step
+ Second numbered stepMathematics & Formulas
Typst features built-in math syntax that is far simpler than LaTeX:
Inline math: $a^2 + b^2 = c^2$
Display math:
$ integral_0^\infty e^(-x^2) dx = sqrt(pi) / 2 $2. Page Configuration & Styling
Typst allows you to configure document-wide rules using #set and #show rules:
// Set page dimensions and margins
#set page(
paper: "a4",
margin: (x: 1.5cm, y: 1.5cm),
)
// Set global font and size
#set text(
font: "Liberation Sans",
size: 10pt,
fill: rgb("#2b2b2b"),
)
// Customize heading styles
#show heading: set text(fill: rgb("#284b63"))3. How I Build My Resume in Typst
Below is a complete, working Typst template that structures a clean, professional one-page resume:
#set page(
paper: "us-letter",
margin: (x: 1.25cm, y: 1.25cm),
)
#set text(font: "PT Sans", size: 10pt)
// Define a reusable entry function
#let resume-item(title, location, role, date, body) = [
#grid(
columns: (1fr, auto),
[*#title* - _#role_], [#date],
)
#v(-4pt)
#text(size: 9pt, fill: luma(100))[#location]
#v(2pt)
#body
#v(8pt)
]
// Header
#align(center)[
#text(size: 20pt, weight: "bold")[HervΓ©] \
#text(size: 9pt)[
#link("mailto:[email protected]")[contact\@example.com] |
#link("https://notosansdiary.com")[notosansdiary.com] |
#link("https://github.com")[github.com/user]
]
]
#v(10pt)
// Section: Education
== Education
#resume-item(
"Ajou University",
"Suwon, South Korea",
"B.S. in Software Engineering (4th Year)",
"2021 β Present",
[
- Focused on Systems Programming, Web Development, and Computer Architecture.
]
)
// Section: Technical Skills
== Technical Skills
- *Languages:* Rust, JavaScript, TypeScript, HTML/CSS, C
- *Frameworks & Tools:* Typst, Quartz, Git, Raylib, Node.js, Linux
- *Specializations:* Full-Stack Web Development, CLI Tools, Interactive Software
// Section: Projects
== Key Projects
#resume-item(
"Personal Digital Garden",
"notosansdiary.com",
"Creator & Developer",
"2026",
[
- Built an interactive, personal portfolio and digital garden using Quartz and SCSS.
- Implemented custom typography, search, and graph visualization.
]
)4. How to Compile Typst Documents
Option A: Official Web App
You can sign up for free at typst.app to edit documents in your browser with real-time visual preview and PDF download.
Option B: Local CLI (Recommended for Developers)
-
Install the CLI:
- macOS (Homebrew):
brew install typst - Cargo (Rust):
cargo install --locked typst-cli
- macOS (Homebrew):
-
Compile to PDF:
typst compile resume.typ resume.pdf -
Live Watch Mode (Auto-recompile on save):
typst watch resume.typ
Resources
- Official Typst Tutorial: typst.app/docs/tutorial
- Typst Package Registry: typst.app/universe