▲ 140 ▼ Typst: "as powerful as LaTeX while being much easier to learn and use" (github.com) submitted 7 months ago by Kalcifer@sh.itjust.works to c/opensource@lemmy.ml 48 comments fedilink hide all child comments Typst is a new markup-based typesetting system that is designed to be as powerful as LaTeX while being much easier to learn and use. ^[1.1]^ References Type: Webpage. Title: "typst/typst". Publisher: "GitHub". Published (Modified): 2026-03-16T09:39:55.000Z. Accessed: 2025-03-18T08:55Z. URI: https://github.com/typst/typst. Type: File. Title: "README.md". Type: Text. Location: ¶1.
[–] Kalcifer@sh.itjust.works [S] 7 points 7 months ago (8 children) I’d say it still have a long way to go, especially for advanced use cases […] What do you think it's still lacking? permalink fedilink source parent hideshow 8 child comments replies: [–] Meron35@lemmy.world 14 points 7 months ago (5 children) Maths feels like a first class citizen in latex. The syntax is ugly, but there is some logic through the legacy jank. Typst makes fundamental design decisions that render it unsuitable beyond extremely simply equations. In LaTeX, curly braces are nearly always reserved for enclosing arguments, to avoid confusion with actual brackets. Typst uses normal brackets for both its scripting and actual maths. For example, \frac{n(n+1)}{2} in latex turns into (n(n + 1)) / 2 in typst. The typst code is incredibly unclear - the first set of brackets with the slash together actually form the fraction operator, so neither end up visible. You can see how this would start to struggle even with high school level maths, with bracketed terms and possibly fractional terms in exponents, integrals, etc. For example, it is very difficult for me to work out the difference between the following three in typst. That is specifically not what you want from a typesetting language. 1/2(x + y) 1/x(x + y) 1/2^x(x + y) LaTeX ignores whitespace, so you can just use a formatter to space out your code and ensure the curly braces. This is not even an option in typst, which uses the space as an escape character. permalink fedilink source parent hideshow 5 child comments replies: [–] Kalcifer@sh.itjust.works [S] 2 points 7 months ago* (last edited 7 months ago) Update (2026-03-20T00:37Z): @Meron35@lemmy.world, it has since been found that Typst is aware of this inconsistency ^[7]^. […] You can see how this would start to struggle even with high school level maths, with bracketed terms and possibly fractional terms in exponents, integrals, etc. For example, it is very difficult for me to work out the difference between the following three in typst. That is specifically not what you want from a typesetting language. 1/2(x + y) 1/x(x + y) 1/2^x(x + y) […] I think these are valid complaints. For clarity, this is the output that I found for each: ^[1]^ ^[2]^ ^[3]^ I was surprised by the second; I expected it to produce ^[6]^. I didn't know what to expect for the third. I tried searching through the documentation ^[4]^, but I was unable to find any information that exactly defined expressions ^[5]^, and how they are grouped within the fraction when juxtaposed like in your examples. References Type: Anecdote. Published: 2026-03-19T07:20Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ 1/2(x + y) $" | typst compile - o.png Type: Anecdote. Published: 2026-03-19T07:20Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ 1/x(x + y) $" | typst compile - o.png Type: Anecdote. Published: 2026-03-19T07:20Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ 1/2^x(x + y) $" | typst compile - o.png Type: Webpage. Title: "typst Documentation". Publisher: "Typst". Accessed: 2026-03-19T07:25Z. URI: https://typst.app/docs/. Type: Text. Publisher: [Type: Webpage. Publisher: "Typst". Title: "frac". URI: https://typst.app/docs/reference/math/frac/.]. Accessed: 2026-03-19T07:26Z. Location: §"Syntax". […] Use a slash to turn neighbouring expressions into a fraction. […] The quote mentions that the components within the fraction are called expressions. Type: Anecdote. Published: 2026-03-19T07:39Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ 1/x (x + y) $" | typst compile - o.png Type: Comment. Author: "laurmaedje". Publisher: [Type: Post. Title: "Inconsistencies/ambiguities with expression grouping with fractions." ("#8002"). Author: "K4LCIFER". Publisher: ["Github">"typst/typst"]. Published: 2026-03-19T07:07:44.000Z. Location (URI): https://github.com/typst/typst/issues/8002#issue-4099792220.]. Published: 2026-03-19T14:41:47.000Z. Accessed: 2026-03-29T00:45Z. Location (URI): https://github.com/typst/typst/issues/8002#issuecomment-4090630691. permalink fedilink source parent [–] Oinks@lemmy.blahaj.zone 2 points 7 months ago* (last edited 7 months ago) The infix syntax is not great, but you can at least write frac(n (n + 1), 2) and it renders the way you would expect. Edit: This is not even an option in typst, which uses the space as an escape character. Technically LaTeX does this too with omitted curly braces: \sum_{n=1}^9 % works \sum_{n=1}^10 % doesn't work Everyone just quickly learns to not do that. permalink fedilink source parent [–] Kalcifer@sh.itjust.works [S] 1 point 7 months ago […] LaTeX ignores whitespace, so you can just use a formatter to space out your code and ensure the curly braces. This is not even an option in typst, which uses the space as an escape character. I'm not sure I exactly follow what you mean. Could you elaborate? permalink fedilink source parent [–] Kalcifer@sh.itjust.works [S] 1 point 7 months ago* (last edited 7 months ago) […] \frac{n(n+1)}{2} in latex turns into (n(n + 1)) / 2 in typst […] Note that one can also write that as frac(n(n+1), 2) ^[1][4]^. References Type: Webpage. Title: “frac”. Publisher: “Typst”. Location: “Documentation”>“Reference”>“Math”>“Fraction”. Location (URI): https://typst.app/docs/reference/math/frac/. Accessed: 2026-03-18T05:34Z. Type: Anecdote. Published: 2026-03-19T07:51Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ (n(n + 1)) / 2 $" | typst compile - o.png Type: Anecdote. Published: 2026-03-19T07:51Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ frac(n(n+1), 2) $" | typst compile - o.png Type: Meta. Published: 2026-03-19T07:53Z. Both (n(n + 1)) / 2, and frac(n(n+1), 2) result in in Typst ^[2][3]^ permalink fedilink source parent [–] Kalcifer@sh.itjust.works [S] 1 point 7 months ago […] For example, \frac{n(n+1)}{2} in latex turns into (n(n + 1)) / 2 in typst. The typst code is incredibly unclear - the first set of brackets with the slash together actually form the fraction operator, so neither end up visible. […] IMO, it's only unclear if one isn't familiar with the syntax — I think the documentation states the behaviour clearly: […] Multiple atoms can be grouped into a single expression using round grouping parentheses. Such parentheses are removed from the output, but you can nest multiple to force them. ^[1]^ This isn't in defense of Typist's syntax, but I challenge you to show the uninitiated your example LaTeX expression, \frac{n(n+1)}{2}, and see if they are able to accurately parse it. References Type: Text. Publisher: [Type: Webpage. Title: "frac". Publisher: "Typst". Location: "Documentation">"Reference">"Math">"Fraction". Location (URI): https://typst.app/docs/reference/math/frac/.]. Accessed: 2026-03-18T05:34Z. Location: §"Syntax". permalink fedilink source parent [–] pastermil@sh.itjust.works 3 points 7 months ago (1 child) The ability to load custom fonts comes to mind. I remember when I was converting my document from TeX to Typst was that I wasn't able to just specify my .ttf file path. permalink fedilink source parent hideshow 1 child comment replies: [–] Kalcifer@sh.itjust.works [S] 1 point 7 months ago I don't know what Typst's custom font support was like in the past, but, currently ^[1]^, Typst does allow the usage of custom fonts: The Typst CLI can use installed system fonts ^[1.2]^. The Typst CLI can be passed directories that should be scanned for fonts through the --font-path argument or the TYPST_FONT_PATHS environment variable ^[1.3]^. Fonts can also be uploaded directly to the web app ^[1.1]^. References Type: Text. Publisher: [Type: Webpage. Title: "text". URI: https://typst.app/docs/reference/text/text/#parameters-font. Publisher: "Typst". Location: "Reference">"Text">"Text"]. Accessed: 2026-03-19T04:32Z. Location: §"Parameters">§"font">¶4. In the web app, […] You can provide additional fonts by uploading .ttf or .otf files into your project. […] Locally, [in the CLI,] Typst uses your installed system fonts […] Locally, […] in the CLI, […] you can use the --font-path argument or TYPST_FONT_PATHS environment variable to add directories that should be scanned for fonts. permalink fedilink source parent
[–] Meron35@lemmy.world 14 points 7 months ago (5 children) Maths feels like a first class citizen in latex. The syntax is ugly, but there is some logic through the legacy jank. Typst makes fundamental design decisions that render it unsuitable beyond extremely simply equations. In LaTeX, curly braces are nearly always reserved for enclosing arguments, to avoid confusion with actual brackets. Typst uses normal brackets for both its scripting and actual maths. For example, \frac{n(n+1)}{2} in latex turns into (n(n + 1)) / 2 in typst. The typst code is incredibly unclear - the first set of brackets with the slash together actually form the fraction operator, so neither end up visible. You can see how this would start to struggle even with high school level maths, with bracketed terms and possibly fractional terms in exponents, integrals, etc. For example, it is very difficult for me to work out the difference between the following three in typst. That is specifically not what you want from a typesetting language. 1/2(x + y) 1/x(x + y) 1/2^x(x + y) LaTeX ignores whitespace, so you can just use a formatter to space out your code and ensure the curly braces. This is not even an option in typst, which uses the space as an escape character. permalink fedilink source parent hideshow 5 child comments replies: [–] Kalcifer@sh.itjust.works [S] 2 points 7 months ago* (last edited 7 months ago) Update (2026-03-20T00:37Z): @Meron35@lemmy.world, it has since been found that Typst is aware of this inconsistency ^[7]^. […] You can see how this would start to struggle even with high school level maths, with bracketed terms and possibly fractional terms in exponents, integrals, etc. For example, it is very difficult for me to work out the difference between the following three in typst. That is specifically not what you want from a typesetting language. 1/2(x + y) 1/x(x + y) 1/2^x(x + y) […] I think these are valid complaints. For clarity, this is the output that I found for each: ^[1]^ ^[2]^ ^[3]^ I was surprised by the second; I expected it to produce ^[6]^. I didn't know what to expect for the third. I tried searching through the documentation ^[4]^, but I was unable to find any information that exactly defined expressions ^[5]^, and how they are grouped within the fraction when juxtaposed like in your examples. References Type: Anecdote. Published: 2026-03-19T07:20Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ 1/2(x + y) $" | typst compile - o.png Type: Anecdote. Published: 2026-03-19T07:20Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ 1/x(x + y) $" | typst compile - o.png Type: Anecdote. Published: 2026-03-19T07:20Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ 1/2^x(x + y) $" | typst compile - o.png Type: Webpage. Title: "typst Documentation". Publisher: "Typst". Accessed: 2026-03-19T07:25Z. URI: https://typst.app/docs/. Type: Text. Publisher: [Type: Webpage. Publisher: "Typst". Title: "frac". URI: https://typst.app/docs/reference/math/frac/.]. Accessed: 2026-03-19T07:26Z. Location: §"Syntax". […] Use a slash to turn neighbouring expressions into a fraction. […] The quote mentions that the components within the fraction are called expressions. Type: Anecdote. Published: 2026-03-19T07:39Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ 1/x (x + y) $" | typst compile - o.png Type: Comment. Author: "laurmaedje". Publisher: [Type: Post. Title: "Inconsistencies/ambiguities with expression grouping with fractions." ("#8002"). Author: "K4LCIFER". Publisher: ["Github">"typst/typst"]. Published: 2026-03-19T07:07:44.000Z. Location (URI): https://github.com/typst/typst/issues/8002#issue-4099792220.]. Published: 2026-03-19T14:41:47.000Z. Accessed: 2026-03-29T00:45Z. Location (URI): https://github.com/typst/typst/issues/8002#issuecomment-4090630691. permalink fedilink source parent [–] Oinks@lemmy.blahaj.zone 2 points 7 months ago* (last edited 7 months ago) The infix syntax is not great, but you can at least write frac(n (n + 1), 2) and it renders the way you would expect. Edit: This is not even an option in typst, which uses the space as an escape character. Technically LaTeX does this too with omitted curly braces: \sum_{n=1}^9 % works \sum_{n=1}^10 % doesn't work Everyone just quickly learns to not do that. permalink fedilink source parent [–] Kalcifer@sh.itjust.works [S] 1 point 7 months ago […] LaTeX ignores whitespace, so you can just use a formatter to space out your code and ensure the curly braces. This is not even an option in typst, which uses the space as an escape character. I'm not sure I exactly follow what you mean. Could you elaborate? permalink fedilink source parent [–] Kalcifer@sh.itjust.works [S] 1 point 7 months ago* (last edited 7 months ago) […] \frac{n(n+1)}{2} in latex turns into (n(n + 1)) / 2 in typst […] Note that one can also write that as frac(n(n+1), 2) ^[1][4]^. References Type: Webpage. Title: “frac”. Publisher: “Typst”. Location: “Documentation”>“Reference”>“Math”>“Fraction”. Location (URI): https://typst.app/docs/reference/math/frac/. Accessed: 2026-03-18T05:34Z. Type: Anecdote. Published: 2026-03-19T07:51Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ (n(n + 1)) / 2 $" | typst compile - o.png Type: Anecdote. Published: 2026-03-19T07:51Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ frac(n(n+1), 2) $" | typst compile - o.png Type: Meta. Published: 2026-03-19T07:53Z. Both (n(n + 1)) / 2, and frac(n(n+1), 2) result in in Typst ^[2][3]^ permalink fedilink source parent [–] Kalcifer@sh.itjust.works [S] 1 point 7 months ago […] For example, \frac{n(n+1)}{2} in latex turns into (n(n + 1)) / 2 in typst. The typst code is incredibly unclear - the first set of brackets with the slash together actually form the fraction operator, so neither end up visible. […] IMO, it's only unclear if one isn't familiar with the syntax — I think the documentation states the behaviour clearly: […] Multiple atoms can be grouped into a single expression using round grouping parentheses. Such parentheses are removed from the output, but you can nest multiple to force them. ^[1]^ This isn't in defense of Typist's syntax, but I challenge you to show the uninitiated your example LaTeX expression, \frac{n(n+1)}{2}, and see if they are able to accurately parse it. References Type: Text. Publisher: [Type: Webpage. Title: "frac". Publisher: "Typst". Location: "Documentation">"Reference">"Math">"Fraction". Location (URI): https://typst.app/docs/reference/math/frac/.]. Accessed: 2026-03-18T05:34Z. Location: §"Syntax". permalink fedilink source parent
[–] Kalcifer@sh.itjust.works [S] 2 points 7 months ago* (last edited 7 months ago) Update (2026-03-20T00:37Z): @Meron35@lemmy.world, it has since been found that Typst is aware of this inconsistency ^[7]^. […] You can see how this would start to struggle even with high school level maths, with bracketed terms and possibly fractional terms in exponents, integrals, etc. For example, it is very difficult for me to work out the difference between the following three in typst. That is specifically not what you want from a typesetting language. 1/2(x + y) 1/x(x + y) 1/2^x(x + y) […] I think these are valid complaints. For clarity, this is the output that I found for each: ^[1]^ ^[2]^ ^[3]^ I was surprised by the second; I expected it to produce ^[6]^. I didn't know what to expect for the third. I tried searching through the documentation ^[4]^, but I was unable to find any information that exactly defined expressions ^[5]^, and how they are grouped within the fraction when juxtaposed like in your examples. References Type: Anecdote. Published: 2026-03-19T07:20Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ 1/2(x + y) $" | typst compile - o.png Type: Anecdote. Published: 2026-03-19T07:20Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ 1/x(x + y) $" | typst compile - o.png Type: Anecdote. Published: 2026-03-19T07:20Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ 1/2^x(x + y) $" | typst compile - o.png Type: Webpage. Title: "typst Documentation". Publisher: "Typst". Accessed: 2026-03-19T07:25Z. URI: https://typst.app/docs/. Type: Text. Publisher: [Type: Webpage. Publisher: "Typst". Title: "frac". URI: https://typst.app/docs/reference/math/frac/.]. Accessed: 2026-03-19T07:26Z. Location: §"Syntax". […] Use a slash to turn neighbouring expressions into a fraction. […] The quote mentions that the components within the fraction are called expressions. Type: Anecdote. Published: 2026-03-19T07:39Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ 1/x (x + y) $" | typst compile - o.png Type: Comment. Author: "laurmaedje". Publisher: [Type: Post. Title: "Inconsistencies/ambiguities with expression grouping with fractions." ("#8002"). Author: "K4LCIFER". Publisher: ["Github">"typst/typst"]. Published: 2026-03-19T07:07:44.000Z. Location (URI): https://github.com/typst/typst/issues/8002#issue-4099792220.]. Published: 2026-03-19T14:41:47.000Z. Accessed: 2026-03-29T00:45Z. Location (URI): https://github.com/typst/typst/issues/8002#issuecomment-4090630691. permalink fedilink source parent
[–] Oinks@lemmy.blahaj.zone 2 points 7 months ago* (last edited 7 months ago) The infix syntax is not great, but you can at least write frac(n (n + 1), 2) and it renders the way you would expect. Edit: This is not even an option in typst, which uses the space as an escape character. Technically LaTeX does this too with omitted curly braces: \sum_{n=1}^9 % works \sum_{n=1}^10 % doesn't work Everyone just quickly learns to not do that. permalink fedilink source parent
[–] Kalcifer@sh.itjust.works [S] 1 point 7 months ago […] LaTeX ignores whitespace, so you can just use a formatter to space out your code and ensure the curly braces. This is not even an option in typst, which uses the space as an escape character. I'm not sure I exactly follow what you mean. Could you elaborate? permalink fedilink source parent
[–] Kalcifer@sh.itjust.works [S] 1 point 7 months ago* (last edited 7 months ago) […] \frac{n(n+1)}{2} in latex turns into (n(n + 1)) / 2 in typst […] Note that one can also write that as frac(n(n+1), 2) ^[1][4]^. References Type: Webpage. Title: “frac”. Publisher: “Typst”. Location: “Documentation”>“Reference”>“Math”>“Fraction”. Location (URI): https://typst.app/docs/reference/math/frac/. Accessed: 2026-03-18T05:34Z. Type: Anecdote. Published: 2026-03-19T07:51Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ (n(n + 1)) / 2 $" | typst compile - o.png Type: Anecdote. Published: 2026-03-19T07:51Z. echo "#set page(width: auto, height: auto, margin: 0pt); $ frac(n(n+1), 2) $" | typst compile - o.png Type: Meta. Published: 2026-03-19T07:53Z. Both (n(n + 1)) / 2, and frac(n(n+1), 2) result in in Typst ^[2][3]^ permalink fedilink source parent
[–] Kalcifer@sh.itjust.works [S] 1 point 7 months ago […] For example, \frac{n(n+1)}{2} in latex turns into (n(n + 1)) / 2 in typst. The typst code is incredibly unclear - the first set of brackets with the slash together actually form the fraction operator, so neither end up visible. […] IMO, it's only unclear if one isn't familiar with the syntax — I think the documentation states the behaviour clearly: […] Multiple atoms can be grouped into a single expression using round grouping parentheses. Such parentheses are removed from the output, but you can nest multiple to force them. ^[1]^ This isn't in defense of Typist's syntax, but I challenge you to show the uninitiated your example LaTeX expression, \frac{n(n+1)}{2}, and see if they are able to accurately parse it. References Type: Text. Publisher: [Type: Webpage. Title: "frac". Publisher: "Typst". Location: "Documentation">"Reference">"Math">"Fraction". Location (URI): https://typst.app/docs/reference/math/frac/.]. Accessed: 2026-03-18T05:34Z. Location: §"Syntax". permalink fedilink source parent
[–] pastermil@sh.itjust.works 3 points 7 months ago (1 child) The ability to load custom fonts comes to mind. I remember when I was converting my document from TeX to Typst was that I wasn't able to just specify my .ttf file path. permalink fedilink source parent hideshow 1 child comment replies: [–] Kalcifer@sh.itjust.works [S] 1 point 7 months ago I don't know what Typst's custom font support was like in the past, but, currently ^[1]^, Typst does allow the usage of custom fonts: The Typst CLI can use installed system fonts ^[1.2]^. The Typst CLI can be passed directories that should be scanned for fonts through the --font-path argument or the TYPST_FONT_PATHS environment variable ^[1.3]^. Fonts can also be uploaded directly to the web app ^[1.1]^. References Type: Text. Publisher: [Type: Webpage. Title: "text". URI: https://typst.app/docs/reference/text/text/#parameters-font. Publisher: "Typst". Location: "Reference">"Text">"Text"]. Accessed: 2026-03-19T04:32Z. Location: §"Parameters">§"font">¶4. In the web app, […] You can provide additional fonts by uploading .ttf or .otf files into your project. […] Locally, [in the CLI,] Typst uses your installed system fonts […] Locally, […] in the CLI, […] you can use the --font-path argument or TYPST_FONT_PATHS environment variable to add directories that should be scanned for fonts. permalink fedilink source parent
[–] Kalcifer@sh.itjust.works [S] 1 point 7 months ago I don't know what Typst's custom font support was like in the past, but, currently ^[1]^, Typst does allow the usage of custom fonts: The Typst CLI can use installed system fonts ^[1.2]^. The Typst CLI can be passed directories that should be scanned for fonts through the --font-path argument or the TYPST_FONT_PATHS environment variable ^[1.3]^. Fonts can also be uploaded directly to the web app ^[1.1]^. References Type: Text. Publisher: [Type: Webpage. Title: "text". URI: https://typst.app/docs/reference/text/text/#parameters-font. Publisher: "Typst". Location: "Reference">"Text">"Text"]. Accessed: 2026-03-19T04:32Z. Location: §"Parameters">§"font">¶4. In the web app, […] You can provide additional fonts by uploading .ttf or .otf files into your project. […] Locally, [in the CLI,] Typst uses your installed system fonts […] Locally, […] in the CLI, […] you can use the --font-path argument or TYPST_FONT_PATHS environment variable to add directories that should be scanned for fonts. permalink fedilink source parent