As a former software developer, now turned student (studying theology while I train to become a pastor), Typst has been great for writing my dissertation with one notable exception: it really doesn't handle footnotes well. Specifically, see:
Discursive footnotes do not really work when including bibliography references. I've also hit other issues, like footnotes appearing a page before the text they are linked from.
It's a real shame, as otherwise it's great software. I suspect footnotes are currently buggy because most users are currently from the science world and use inline referencing instead.
I'm really hoping this is fixed soon. (And once I hit my current deadline this week, I'll take a look at it myself.)
But at the moment, a big caveat for anyone working in the humanities / who uses e.g. Chicago-style footnotes.
I'm currently working on my fourth book produced using Typst, and it has been nothing but amazing. LLMs struggle with Typst a bit but other than that it has been an absolute joy to work with.
I have a pretty good workflow set up for publishing these books, which are mostly collections of student essays. I use Pandoc to convert the students' Word documents into Typst, then unify the formatting, styles, and headers (mostly via LLMs). From there, I generate both a nice digital PDF and a print-ready PDF using Typst, and then use Pandoc again to convert the Typst into what ultimately becomes an EPUB.
It all works quite beautifully. Most of the challenges I've run into are related to Typst features that don't map cleanly to Pandoc, so I end up adding a few funky conditionals so those features aren't hit when converting via Pandoc. sys.inputs makes that very easy https://github.com/jgm/pandoc/issues/11588
I had the same experience as the root commenter. Sometimes ChatGPT seems to generate invalid typst code that doesn’t even compile. Maybe the syntax changed and it did work at some point but some stuff looked so wrong that I would guess it just doesn’t have enough training data for proper typst generation without feeding examples into the context first.
I’ve been using Typst pretty heavily for the past few months after a few years of LaTeX, and I’ve had a similar experience. I do really love Typst though. It feels nimble, pleasant to work with and like a huge improvement over LaTeX in a lot of ways.
That said, LLMs have been noticeably better with LaTeX than with Typst for me. Typst works fine for the basics: loops, functions, small layout tweaks and that kind of thing. The problems mostly show up with more niche features.
What helped me was pointing the LLM to the current Typst docs, either the website or as they mention in their blog about the new update they also have a PDF export of the docs now (https://github.com/typst/typst/releases/download/v0.15.0/typ...). The docs are very good, and I suspect older training data plus Typst’s breaking changes are part of the problem.
One downside is that because I started using Typst with LLMs right away, I got a big head start but never became fully fluent in the language. I still find myself going back to the docs, the internet or an LLM more often than I’d like.
An LLM turned all my Latex projects to Typst and I'm not looking back.
Much easier stack (I stopped installing Latex-stacks myself, and switched to Overleaf, because it was just too finicky). Much simpler language. Just works.
I'm excited to see the HTML generation support in typst continuing to get better - the fact that they're generating their own online documentation with typst now is very encouraging.
To produce a pdf, pandoc uses typst, pdfroff, lualatex, whatever you please. There is no particular connection to latex. The idea exhibits complete ignorance.
There was probably a nicer way of expressing this, but yes, ideally I will continue to use Org mode for my documents and substitute typst for LaTex when exporting to pdf.
I'm sure everyone has their own use case but I use typst for resumes or other documents that I want to keep in git but I need to share with others using PDF.
I use typst in visual studio code using tiny mist extension. I can generate PDF without installing any new software other than vscode which I already have and the tiny mist extension. The live preview is also nice.
The one thing that bothers me is the dollar sign and the hash sign so to write something like saved $50 million using c#, I write something like saved USD 50 million using #csharp
Markdown has the same class of issue and resolves it the same way you would with Typst: The escape character \. You instead write saved \$50 million using C\#.
I never understood why markdown authors are so insistent on using a single $ to denote math. Math is outside the commonmark spec so this is entirely up to plugin authors.
I am an author of a fairly popular (and early) math plugin for markdown and I resisted (albeit not very hard). I made $$ the default delimiter but I noticed very soon that my users hated it, and finally I gave up and made $ the default delimiter.
What I would have preferred is for $ to behave exactly like backticks (except a minimum of two to start inline math) So you could do stuff like $$ f $ x $$ to render f $ x meaning function f applied with x. And write stuff like:
$$$optional-tag
f $ x
$$$
for block math. I even wrote a competing plugin to my older one where I do this, but I don‘t think anybody uses is, because most people writing math in markdown are expecting it to behave exactly like latex.
Typst does typesetting like TeX (or InDesign for a WYSIWYG alternative), neither org-mode nor markdown has a rich enough formatting language for general typesetting, like if you want to make a flyer for a concert, a brochure or a comic book.
I tried using markdown+pandoc for my notes for a while, but I couldn't figure out even the most basic things, mostly because of the dozens of incompatible flavors; in no particular order:
- formatting math blocks is mostly not a thing; some formatters will straight up break the document depending on the flavor you use
- lsp
- live preview; you could use e.g. a neovim plugin for that, but it's built on top of mathjax
- pandoc isn't even a single flavor, as you have a bunch of feature flags and multiple ways to do the same thing
- rendering with pandoc is pretty slow even for a few pages of lecture notes (especially compared to typst)
- latex (required by pandoc) is huge, meanwhile typst binary was something like 50M last time I checked
- syntax highlighting: markdown treesitter grammar only supports the common extensions, e.g. the esoteric latex block variants break the entire document
I guess if I didn't need math rendering, the only major complaint I'd have is performance, but at that point .txt is enough
Latex is in no sense required by pandoc and never has been, not ten years ago, not twenty years ago. Everything you are writing is deep conceptual confusion from top to bottom. You might as well say it has required Microsoft Word since the docx readers and writers came out.
Latex is a typical route to produce pdfs according to your specification, but typst is what I use; occasionally groff. I use latex when what I am typesetting uses greek, arabic or hebrew text, but only because I haven't yet bothered to learn the typst approach to them.
I don’t know what this means, but please don’t explain.
applicative’s comment is correct. Every one of your bullet points is wrong, except perhaps the one about treesitter highlighting, but what should one expect? Why should a Markdown parser know anything about arbitrary Markdown extensions?
Markdown is for "I want to type semantic content and get a vaguely reasonable result". Typst is for typesetting documents where you care what the output looks like, and where you want a print-quality PDF (or, in the future, also HTML; currently still WIP).
I've been using LaTeX for math for over a decade now. I'm pretty happy with it frankly, but there are major pain points in the compilation time and whenever it's time to interface with the language programmatically. Typst is, frankly, awesome in that regard.
However, I really dislike the 'magic' in the math mode syntax, and I think dropping backslashes (more generally, a delineator) for commands was a mistake. Those aren't blockers though, and I think the org is largely making good decisions. I'm really looking forward to the day I can write research in it!
I think all that's remaining is time in the community and stability. Once journals begin accepting it, I know I'll definitely try to submit in it.
I've heard this from other LaTeX veterans, but as someone that has never done any LaTeX himself and was scared by all those backslashes and braces, the simple C-like syntax is a blessing.
I became a Typst user earlier this week, and it has been a delightful experience. It did not take me long at all to get up to speed. I have used LaTeX before, but that was over 20 years ago.
I’m doing some postgraduate where I need to submit a paper written in the two column IEEE style. I’m pretty sure I spent 40% of my time last time fighting with a Word template, rather than producing content.
I've switched form LaTeX to Typst for all my informal/semi-formal writing and it's a delight to work with. I hope I'll be able to use it for more formal documents in the future (conference/journal papers, slides for high stakes presentations)
Is there anything similar to (or better than) overleaf for collaborating on typst docs?
To be clear, overleaf isn’t all that great but I sometimes work with groups that are used to it.
Have conferences that traditionally accepted latex source (and specified latex templates) started accepting typst as well?
> Is there anything similar to (or better than) overleaf for collaborating on typst docs? To be clear, overleaf isn’t all that great but I sometimes work with groups that are used to it.
Yes, https://typst.app/ is the official Typst app (part of how they make money).
> Have conferences that traditionally accepted latex source (and specified latex templates) started accepting typst as well?
How's Typst with tagged PDF (particularly math in tagged PDF)?
Recent LaTeX versions started to be able to do it, it'd be a shame if people started switching over just when LaTeX finally started pulling their accessibility act together.
This is awesome! I’ve been excited about the new bundle feature for months.
I use typst to format sheet music. Given a folder of PDFs, I currently have a script that generates a booklet of music for each person in the ensemble. Hopefully now I can just run a single typst file which outputs multiple PDFs.
Cool project. I made something similar to programmatically generate my CV, but using LaTeX with a LuaLaTeX backend. It works, but it is really slow and has a lot of dependencies.
I’m seriously considering rewriting it in Typst at some point. It probably would not be that hard, and I’d likely get much faster builds with far fewer dependencies.
Everything for typst was generated via LLM. The template itself takes json as input and then uses the typst template language to render. It works very very well.
Typest is amazing, Claude Code + Opus 4.8 knows how to use it, but I found that Claude by default is crap at designing even a reasonably formatted PDF. E.g. Claude sets the line height to be so small, all the lines are squished together, and a 1-pager PDF is half blank.
I see many folks saying you're producing beautiful PDFs. How are you dealing with design?
Have you tried showing Claude your output, or simply telling it to look at the PNG output? Together with some design or frontend skill you should get reasonable results.
I spoke to the couple (it’s like a single married couple + a bunch of scripts they’ve wrote) who handle the formatting for a bunch of the programming language-related conferences around the world (and others too maybe) and they are interested in Typst and are looking into it! (They’re also super nice folks.)
I still much prefer LaTeX actually, I don't feel like Typst improves over its main flaw, i.e. lack of consistency. One could argue that it's even more inconsistent. I really miss commands, \section for example clearly does what it says it does, while '=' is more nebulous. I don't like that instead of typing `\alpha+c` now I need to write `alpha + c` it blurs the line between what is a command and what isn't.
So imo in terms of scientific writing it's pretty off the mark
Most, if not all of these are just syntactic sugar. You can simply write `#heading()` instead. Although I'm not sure if there is an equivalent in math mode.
Almost exactly a year ago, I made the switch from generating LaTeX from markdown using pandoc to typst. Best decision I have ever made. I can actually write my own macros (both LaTeX and pandoc were a pain in the ass).
The ecosystem is not quite a mature as latex, however I can implement the things I need myself.
I have used many things to generate print documents and layouted PDFs:
- Adobe Illustrator
- Adobe InDesign
- Markdown with and without custom themes
- Markdown compiled to .idml to integrate into InDesign
- HTML and CSS
- LATeX
Typst is so far one of the most enjoyable ways of programmatically generating layouted stuff I ever used.
The only thing missing is a good Desktop editor that allows dumb users to double-click a .typ file and see/edit the file instead of having to setup VSCode, plugins etc.
https://github.com/typst/typst/pull/8147
Discursive footnotes do not really work when including bibliography references. I've also hit other issues, like footnotes appearing a page before the text they are linked from.
It's a real shame, as otherwise it's great software. I suspect footnotes are currently buggy because most users are currently from the science world and use inline referencing instead.
I'm really hoping this is fixed soon. (And once I hit my current deadline this week, I'll take a look at it myself.)
But at the moment, a big caveat for anyone working in the humanities / who uses e.g. Chicago-style footnotes.
I have a pretty good workflow set up for publishing these books, which are mostly collections of student essays. I use Pandoc to convert the students' Word documents into Typst, then unify the formatting, styles, and headers (mostly via LLMs). From there, I generate both a nice digital PDF and a print-ready PDF using Typst, and then use Pandoc again to convert the Typst into what ultimately becomes an EPUB.
It all works quite beautifully. Most of the challenges I've run into are related to Typst features that don't map cleanly to Pandoc, so I end up adding a few funky conditionals so those features aren't hit when converting via Pandoc. sys.inputs makes that very easy https://github.com/jgm/pandoc/issues/11588
The books in question: https://thelabofthought.co/shop
My experience is the opposite. Especially when instructing the LLM to do very fine grained and detailed adjustments. Works like a charm.
Typst is my go-to format if I need more than plain text.
https://github.com/apcamargo/typst-skills/
That said, LLMs have been noticeably better with LaTeX than with Typst for me. Typst works fine for the basics: loops, functions, small layout tweaks and that kind of thing. The problems mostly show up with more niche features.
What helped me was pointing the LLM to the current Typst docs, either the website or as they mention in their blog about the new update they also have a PDF export of the docs now (https://github.com/typst/typst/releases/download/v0.15.0/typ...). The docs are very good, and I suspect older training data plus Typst’s breaking changes are part of the problem.
One downside is that because I started using Typst with LLMs right away, I got a big head start but never became fully fluent in the language. I still find myself going back to the docs, the internet or an LLM more often than I’d like.
"A single document can now contain multiple bibliographies"
Much easier stack (I stopped installing Latex-stacks myself, and switched to Overleaf, because it was just too finicky). Much simpler language. Just works.
Pandoc probably uses latex under the hood, and Typst is order of magnitudes faster. Also, much better error messages.
Typst is vastly superior for usage in automation or when developing document classes.
If that's not your use case, don't bother.
I use typst in visual studio code using tiny mist extension. I can generate PDF without installing any new software other than vscode which I already have and the tiny mist extension. The live preview is also nice.
The one thing that bothers me is the dollar sign and the hash sign so to write something like saved $50 million using c#, I write something like saved USD 50 million using #csharp
And near the top I add a variable like this
I am an author of a fairly popular (and early) math plugin for markdown and I resisted (albeit not very hard). I made $$ the default delimiter but I noticed very soon that my users hated it, and finally I gave up and made $ the default delimiter.
What I would have preferred is for $ to behave exactly like backticks (except a minimum of two to start inline math) So you could do stuff like $$ f $ x $$ to render f $ x meaning function f applied with x. And write stuff like:
for block math. I even wrote a competing plugin to my older one where I do this, but I don‘t think anybody uses is, because most people writing math in markdown are expecting it to behave exactly like latex.- formatting math blocks is mostly not a thing; some formatters will straight up break the document depending on the flavor you use
- lsp
- live preview; you could use e.g. a neovim plugin for that, but it's built on top of mathjax
- pandoc isn't even a single flavor, as you have a bunch of feature flags and multiple ways to do the same thing
- rendering with pandoc is pretty slow even for a few pages of lecture notes (especially compared to typst)
- latex (required by pandoc) is huge, meanwhile typst binary was something like 50M last time I checked
- syntax highlighting: markdown treesitter grammar only supports the common extensions, e.g. the esoteric latex block variants break the entire document
I guess if I didn't need math rendering, the only major complaint I'd have is performance, but at that point .txt is enough
Latex is a typical route to produce pdfs according to your specification, but typst is what I use; occasionally groff. I use latex when what I am typesetting uses greek, arabic or hebrew text, but only because I haven't yet bothered to learn the typst approach to them.
No.
`--pdf-engine=typst`
applicative’s comment is correct. Every one of your bullet points is wrong, except perhaps the one about treesitter highlighting, but what should one expect? Why should a Markdown parser know anything about arbitrary Markdown extensions?
why are you even talking to me?
pandoc -r markdown -w pdf --pdf-engine=typst input.md -o output.pdf
However, I really dislike the 'magic' in the math mode syntax, and I think dropping backslashes (more generally, a delineator) for commands was a mistake. Those aren't blockers though, and I think the org is largely making good decisions. I'm really looking forward to the day I can write research in it!
I think all that's remaining is time in the community and stability. Once journals begin accepting it, I know I'll definitely try to submit in it.
I’m doing some postgraduate where I need to submit a paper written in the two column IEEE style. I’m pretty sure I spent 40% of my time last time fighting with a Word template, rather than producing content.
Have conferences that traditionally accepted latex source (and specified latex templates) started accepting typst as well?
Yes, https://typst.app/ is the official Typst app (part of how they make money).
> Have conferences that traditionally accepted latex source (and specified latex templates) started accepting typst as well?
Very few by now.
Recent LaTeX versions started to be able to do it, it'd be a shame if people started switching over just when LaTeX finally started pulling their accessibility act together.
I use typst to format sheet music. Given a folder of PDFs, I currently have a script that generates a booklet of music for each person in the ensemble. Hopefully now I can just run a single typst file which outputs multiple PDFs.
Also using it to generate printable programs for concerts: https://concert-programs.projects.jaygoel.com/
I’m seriously considering rewriting it in Typst at some point. It probably would not be that hard, and I’d likely get much faster builds with far fewer dependencies.
I see many folks saying you're producing beautiful PDFs. How are you dealing with design?
So imo in terms of scientific writing it's pretty off the mark
Tree-structured documents in a live (WYSIWYG) typesetter with a programmable editor are possible, as is demonstrated by https://texmacs.org (https://www.texmacs.org/tmweb/home/videos.en.html if you don't have it installed).
I don’t know what this is intended to mean.
“a live (WYSIWYG) typesetter”
I don’t like this mode of interaction. No, thanks.
Typst is fast enough to provide a live preview, and I can use Vim or any editor I want, along with my choice of PDF viewer.
I have been waiting on this one for years now. Great work.
The ecosystem is not quite a mature as latex, however I can implement the things I need myself.
If you are on the fence, do yourself a favor and try it. There is a VS Code extension https://marketplace.visualstudio.com/items?itemName=myriad-d....
- Adobe Illustrator - Adobe InDesign - Markdown with and without custom themes - Markdown compiled to .idml to integrate into InDesign - HTML and CSS - LATeX
Typst is so far one of the most enjoyable ways of programmatically generating layouted stuff I ever used.
The only thing missing is a good Desktop editor that allows dumb users to double-click a .typ file and see/edit the file instead of having to setup VSCode, plugins etc.