logoalt Hacker News

sureglymopyesterday at 11:28 AM5 repliesview on HN

I wish there was a native version of this. Every SSG seems to have the problem of having to depend on node in order to prerender html for math with katex.


Replies

koito17yesterday at 12:04 PM

I've been using katex-rs, a Rust rewrite, to implement LaTeX rendering for a Rust web app. It was easy enough to hook into pulldown_cmark, so that $ and $$ and render a decent subset of LaTeX. Since pulldown_cmark is a proper Markdown parser, you listen for Event::InlineMath and Event::DisplayMath then call KaTeX directly. No regex or HTML escaping necessary. In my web app, this is all encapsulated into a single function that I can call within Tera templates. It's as SSR as it gets; no Node.js or client-side JavaScript necessary.

The costliest asset is a minified stylesheet served through a CDN. (I do this out of laziness, and because the web app as-is needs nothing more than the standard Rust toolchain).

https://github.com/katex-rs/katex-rs

show 1 reply
rustyboltyesterday at 3:17 PM

I use it in my static site generator in Python via https://github.com/rubenvannieuwpoort/PyKaTeX.

Disclaimer: I am the author of PyKaTeX.

generichumanyesterday at 4:37 PM

If your use case is generating html, MathML is supported in all modern browsers: https://developer.mozilla.org/en-US/docs/Web/MathML#browser_...

MillironXyesterday at 12:21 PM

Hugo includes native KaTeX: https://gohugo.io/functions/transform/tomath/

The docs recommend setting up KaTeX CSS (which requires either a CDN link or Node), but by changing output to 'mathml,' you can have the browser render equations with zero dependencies.

show 1 reply
notpushkinyesterday at 11:37 AM

Port it? Or maybe bundle a tiny interpreter instead of Node.