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 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.
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.
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?
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 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.
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\#.
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.
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).
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.
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.
"A single document can now contain multiple bibliographies"
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.
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?
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.
- 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`
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
pandoc -r markdown -w pdf --pdf-engine=typst input.md -o output.pdf
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.