Rendered at 18:35:37 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
gucci-on-fleek 13 hours ago [-]
Why you choose to base this off of TeX Live 2020? Is that just when you initially started the project, or are there some incompatibilities with the later versions?
Also, we (the TeX Live team) would be happy to add Wasm as an officially-supported platform, it's just that nobody has volunteered yet [0]. Coincidentally, someone else suggested something similar to us a few months ago [1]. Feel free to reach out if you're interested.
The 2020 part isn't really something I chose, it comes with the SwiftLaTeX engine, which ships a precompiled format from that era. I just inherited it with the engine.
The format and packages have to agree, and when I pulled in newer packages against that old format, some things broke (hyperref had changed its aux label format, for which I ended up backporting a padding fix, and babel was missing some aliases in the mismatched version, e.g. brazil-portuges).
And yes, I'd be very happy to help with that and will get in touch via the volunteers page!
lgcmo 5 hours ago [-]
Awesome! I was looking for something like this, and I thought I've got it with Crixet (now OpenAI Prism).
I had to compile a rather heavy presentation template and Overleaf would simply time-out, Crixet being client based was the only option.
Great to see a FOSS version!
kccqzy 19 hours ago [-]
Does this work on Firefox or Safari? You say “Firefox or Safari fall back to a virtual filesystem” but somehow I can’t get this fallback to work. When I click New Project I just get a reminder to use Chrome or Edge. Is there a button to press to trigger the fallback?
zahrevsky 19 hours ago [-]
I'm on Safari, and it seems you can open your local LaTeX file to use the tool. It's an “Open file” button at the top.
Although I agree that it would be cool to have some hello-world example pre-opened.
swimmingbrain 11 hours ago [-]
The hello-world example sounds like a good idea, I'll try to add that as well, so that the user lands on a working document.
kccqzy 18 hours ago [-]
Ooh. That worked. Thanks.
swimmingbrain 11 hours ago [-]
There's no button (that's a gap on my side, not intended behavior). New Project currently goes only through the folder picker, so on Firefox or Safari it just stops there. The virutal filesystem fallback is only in Open File, which is also why zahrevsky's workaround gets you in.
I'll make New Project also fall back the same way, so it works in Firefox and Safari without the detour.
Matt307082 6 hours ago [-]
That's a cool, it's been a long time since I've used LaTeX and that makes me want to use it to write my next document
raybb 16 hours ago [-]
I love this use of wasm!
I never really got the hang of LaTeX but I've really enjoyed Typst the past few years and even made a few books with it. Have you ever tried that or have thought on it?
swimmingbrain 10 hours ago [-]
[dead]
dingaling911 6 hours ago [-]
Usability to see changes live is a bit weird.
Ctrl+S brings up the browser save as but also saves the document and recompiles.
Ctrl+Enter puts in a new line and recompiles.
Can click compile of course, but that's not efficient.
swimmingbrain 2 hours ago [-]
Fair points, Ctrl+Enter was also CodeMirror's "insert empty line" and Ctrl+S won the welcome file went through "save as", since that document has no existing file yet. It's fixed now.
It compiles on its own a second after you stop typing, and there's also an "Auto" button next to "Compile" if you prefer to press Ctrl+Enter yourself.
naniel 6 hours ago [-]
Nicely done! Seems like it's almost responsive, but I'm unable to see the latex preview on mobile
FWIW, pandoc has the ability to generate ConTeXt code.
Wdorf 19 hours ago [-]
My project https://latex.to supports ConTeXt (plus all other TeX Live engines). Click + then New from showcase then ConTeXt to try it.
gucci-on-fleek 13 hours ago [-]
Cool! But it appears to always use LuaTeX as the engine, so only the older MkIV format is supported, and not the current LMTX format. The caching also doesn't seem to work quite right, since it appears to regenerate the font caches every time that you run it, which makes recompiles quite slow.
kccqzy 19 hours ago [-]
I copy-pasted a random LaTeX doc from many years ago (I made sure I wrote it before 2020 so it did not use any new features not in TeX Live 2020), and upon compilation I got the error
Font OT1/cmr/m/n/10.95=cmr10 at 10.95pt not loadable: Bad metric (TFM) file.
on line 13017. The document had only 200 lines so this must be from a package. It was really not clear where the error was coming from. I guessed that it was coming from \usepackage{microtype}, so I commented it out, but the same error persisted.
I decided to hard refresh the tab and this time I got a different error:
on line 39. Again it was unclear line 39 of which package.
swimmingbrain 10 hours ago [-]
Can't tell much from those two lines, but if you open an issue with the document, or just provide the full compile log, I could dig into it.
The TFM error usually means a font file wasn't available. However, the service worker validates the downloads before caching, so any error pages or empty bodies get rejected (which makes posoned cache unlikely), but a stale state may still be possible.
Hard refresh bypasses the service worker, I patched around that last month but apparently not well enough.
Also, better error logs and reporting is already on my ToDo-list, sorry for that.
kccqzy 6 hours ago [-]
Where is the full compile log? The UI seems to provide a very abbreviated log that’s clearly not full.
apetresc 16 hours ago [-]
Anyone know if this includes TikZ?
swimmingbrain 10 hours ago [-]
Yes, tikz.sty, pgf.sty and pgfplots.sty are in the bundled subset (it's around 360 pgf related files that ship with the app). Only the graph drawing sublibrary requires LuaTeX, so that one won't work.
copperx 20 hours ago [-]
Well done!
gulugawa 13 hours ago [-]
Cool, this project looks very interesting!
I tried uploading a .tex file created earlier this year and was able to see a PDF preview without any additional configuration.
As someone who has a local TeX setup, I'm a fan of your approach to loading dependencies on demand with a service worker. The installation process on my computer took a while because it was downloading a bunch of dependencies I didn't need.
Also, we (the TeX Live team) would be happy to add Wasm as an officially-supported platform, it's just that nobody has volunteered yet [0]. Coincidentally, someone else suggested something similar to us a few months ago [1]. Feel free to reach out if you're interested.
[0]: https://tug.org/texlive/build.html#volunteers
[1]: https://github.com/TeX-Live/texlive-source/issues/87
The format and packages have to agree, and when I pulled in newer packages against that old format, some things broke (hyperref had changed its aux label format, for which I ended up backporting a padding fix, and babel was missing some aliases in the mismatched version, e.g. brazil-portuges).
And yes, I'd be very happy to help with that and will get in touch via the volunteers page!
Great to see a FOSS version!
Although I agree that it would be cool to have some hello-world example pre-opened.
I'll make New Project also fall back the same way, so it works in Firefox and Safari without the detour.
I never really got the hang of LaTeX but I've really enjoyed Typst the past few years and even made a few books with it. Have you ever tried that or have thought on it?
Ctrl+S brings up the browser save as but also saves the document and recompiles. Ctrl+Enter puts in a new line and recompiles.
Can click compile of course, but that's not efficient.
It compiles on its own a second after you stop typing, and there's also an "Auto" button next to "Compile" if you prefer to press Ctrl+Enter yourself.
* https://keenwrite.com/
* https://keenwrite.com/screenshots.html
See my Typesetting Markdown series:
https://dave.autonoma.ca/blog/2019/05/22/typesetting-markdow...
> Is there a specific reason you picked ConTeXt?
LaTeX:
* doesn't (easily, or practically) separate content from presentation;
* has arcane, antiquated syntax;
* packages can have namespace conflicts (rare, but happens);
* requires package installation for additional features.
ConTeXt, being monolithic and newer, avoids all those issues. The feature matrix lists a number of samples typeset with ConTeXt:
https://keenwrite.com/blog/2025/09/08/feature-matrix/
FWIW, pandoc has the ability to generate ConTeXt code.
I decided to hard refresh the tab and this time I got a different error:
on line 39. Again it was unclear line 39 of which package.The TFM error usually means a font file wasn't available. However, the service worker validates the downloads before caching, so any error pages or empty bodies get rejected (which makes posoned cache unlikely), but a stale state may still be possible.
Hard refresh bypasses the service worker, I patched around that last month but apparently not well enough.
Also, better error logs and reporting is already on my ToDo-list, sorry for that.
I tried uploading a .tex file created earlier this year and was able to see a PDF preview without any additional configuration.
As someone who has a local TeX setup, I'm a fan of your approach to loading dependencies on demand with a service worker. The installation process on my computer took a while because it was downloading a bunch of dependencies I didn't need.