The trigger: a new TeX Live release#
I used LaTeX at university and loved how it let me focus on the meaning of my writing rather than fiddling with formatting. That principle still holds. But my software practices have grown in maturity since then; I’ve come to rely on things like formatters, linters and proper package management, and LaTeX’s equivalents are not very good.
When I went to update my CV recently (just keeping it current, not job hunting!), my LaTeX devcontainer had broken. I’d previously written about setting up CI for a LaTeX CV, so this was a setup I’d put real effort into. TeX Live created a new release but dropped the old one from mirrors, which obviously broke my devcontainer.
Rather than debug it, I decided to take this as an opportunity to try Typst, a modern alternative I’d seen on my GitHub feed months ago. I was trialling Gemini CLI at the time, so I gave it this task: convert my LaTeX CV to Typst. I iterated on the output. The whole thing took 30 minutes. Within an hour of starting, I was wondering why I’d spent so much time plugging away at LaTeX.
Why Typst is better#
Compilation is instant#
My CV was taking around 10 seconds to compile in LaTeX; not terrible, but enough to break your flow. Typst is fast enough that you don’t notice it. The live preview keeps up, and iterating on formatting feels different when the feedback is immediate.
The tooling is modern#
LaTeX does have language servers, formatters and linters, but they’re niche and under-invested. Most LaTeX users are academics who don’t care about this stuff, so the ecosystem reflects that. latexindent is a Perl script maintained by one person; language server support exists but is nowhere near the quality you’d get with a mainstream programming language.
Typst is built for people who do care. The language server, formatter and linter are official and well maintained, and the error messages tell you what went wrong. It feels like a tool built in the 2020s.
You can pin package versions#
There’s no way to pin package versions in LaTeX. Your document might break when packages update and you have no way to prevent it. I hacked together a workaround using a requirements.txt file, but even that doesn’t support version pinning.
Typst, on the other hand, has a proper dependency model with versioning. Your builds are reproducible.
You only need one compile pass#
If you want citations in LaTeX, you have to compile your document at least twice: once for the document structure, once to resolve references. Typst handles everything in a single pass.
The broader point#
LaTeX became the default because academics learned it at university, taught it to the next generation, and it has become the de facto standard for many journals. If you’re an academic, you probably don’t have a choice. For everything else, it’s worth asking whether LaTeX is still the right tool.
I saw Typst on my GitHub feed months before I got round to trying it. Porting the CV by hand would have taken a weekend. With an agent it took 30 minutes. If you’re running into problems with one of your tools, the bar for trying an alternative is lower than it used to be.

