| ▲ | sureglymop 3 days ago | |||||||||||||||||||||||||
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. | ||||||||||||||||||||||||||
| ▲ | koito17 3 days ago | parent | next [-] | |||||||||||||||||||||||||
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). | ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
| ▲ | MillironX 3 days ago | parent | prev | next [-] | |||||||||||||||||||||||||
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. | ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||
| ▲ | generichuman 3 days ago | parent | prev | next [-] | |||||||||||||||||||||||||
If your use case is generating html, MathML is supported in all modern browsers: https://developer.mozilla.org/en-US/docs/Web/MathML#browser_... | ||||||||||||||||||||||||||
| ▲ | rustybolt 3 days ago | parent | prev | next [-] | |||||||||||||||||||||||||
I use it in my static site generator in Python via https://github.com/rubenvannieuwpoort/PyKaTeX. Disclaimer: I am the author of PyKaTeX. | ||||||||||||||||||||||||||
| ▲ | notpushkin 3 days ago | parent | prev [-] | |||||||||||||||||||||||||
Port it? Or maybe bundle a tiny interpreter instead of Node. | ||||||||||||||||||||||||||