Comparing Burro & Typst
Comparison between Burro and the other digital typesetting newcomer • 2023-09-28 • Michael Rees
Occasionally, when I talk about working on Burro to a new group of people, someone will ask if I'm aware of Typst, which describes itself as "a new markup-based typesetting language for the sciences." Sometimes they'll even ask why I'm working on Burro when Typst already exists. The direct answer to that question is that I started Burro well before Typst was announced (although Burro was dormant when Typst first came around). However, there are many differences between the two platforms, so I wanted to take some time to compare them.
It may come as no surprise that I'm deeply interested in digital typography. Like any self-respecting math major, I learned LaTeX early in college. During my sophomore year, I became interested in what other typesetting systems might be available. I then explored groff (with at least the mom and ms macro sets), Lout, and Patoline. Of these, mom was the closest to scratching my personal itch, but I still found it lacking in many ways. This is what inspired me to start Burro.
Actually using Typst
One of my duties is serving as secretary for the Chicago chapter of the American Guild of Organists. This role lets me produce a good number of documents—meeting minutes, concert programs, advertisements, and a monthly newsletter. The October 2023 edition was might first time producing the newsletter, so I had great flexibility in how I wanted to do it. I decided it was time for me to finally dive into Typst. I looked at Typst when it was first announced and occasionally since then, but hadn't used it for an actual project yet. As a lover of typesetting languages, I was long overdue in actually using Typst!
My first impression is very positive. Typst has done many things well! Actually setting my document in Typst was quite pleasant, and the result is high quality. Typst has excellent documentation, which made it easy to pick up and quickly use for a medium-size project. I defined a template for my newsletter, which I intend to re-use in upcoming months. I also defined several variables that I recycled throughout the document (such as the month, year, and newsletter title) as well as larger blocks that will be repeated between editions, all of which I'm able to import from the main template. Finally, I dabbled in scripting to make a few custom elements. Typst made all of this quite easy.
Burro vs. Typst
Before diving too deeply into the comparison, I want to first acknowledge that Typst is a much more mature project than Burro. In particular, Burro's macro system is only a vague conception for now. That means that much of what I might critique simply isn't in Burro yet, and Burro's solutions may end up being just as worthy of critique.
One difference between Burro and Typst is obvious in Typst's own self description: "a [...] typesetting language for the sciences." Burro is explicitly not designed for setting equations, but merely text. This may seem like an odd choice to anyone who's only used typesetting math heavy documents, but having an easy yet powerful way to make high quality text heavy documents is useful in its own right.
Personally, I still find Typst's syntax a little heavy. Some of its ideas are excellent—for example, using the Markdown style syntax for switching between fonts—but much of it requires more typing and modifier keys than the equivalent in Burro. This is because of the delimiters wrapping content that a function applies to, while in Burro, everything is achieved via (inline) switches. It's the difference between
#text(18pt)[This text is large]
and
.pt_size[18] This text is large.pt_size[-]
It's a small difference, but I prefer keeping the actual text as separate from the markup as possible, not enclosed within the square braces like in the Typst example.
There are other syntactical differences too. For example, consider the use of the hashtag symbol (as Typst describes it) #
. The only modifier that requires multiple key presses in Burro are curly braces, which are intended to only be used rarely. This is how Burro achives its "easy to type" goal.
The Typst authors may disagree with me here, but as an outsider, I'd describe Typst as a distant TeX descendant, while Burro is a direct descendant of groff. Typst focuses more on applying changes to scopes and composability. Burro focuses on changing things at the global scope and combining those changes to achieve your desired format. That difference in genealogy means that the same thing might be accomplished in different ways in each language.
Room for both
In summary, I think that Burro and Typst are very different from each other, and there's plenty of room for both to exist. There are many great ideas in Typst that I'm excited to implement in Burro.
Typst is an excellent project, and I'm glad to see new languages pop up. Typesetting languages have been dominated by TeX variants for far too long while other, better alternatives haven't been able to break into the space. Hopefully Burro can be as successful in this goal as Typst has been.