Web-assembly powered WYSIWYG LaTeX Editor, supporting nearly all LaTeX package

LegitGandalf | 741 points

This is amazing.

• This seems to be their main page: https://www.swiftlatex.com/

• Not all the source code is on GitHub; crucially their modification of the TeX engine seems to be distributed only as the two `.wasm` binary files). Not sure if they plan to share more or not.

• As mentioned in the FAQ/docs page, this is the work of just two people from New Zealand (Gerald Weber and Elliott Wen), and they have a paper about it from 2018 (“SwiftLaTeX: Exploring Web-based True WYSIWYG Editing for Digital Publishing”, DOI: 10.1145/3209280.3209522). Based on a quick skim so far, the paper looks fantastic, looking forward to reading it in more detail.

• In the paper, Figure 5 and the surrounding text describe how TeX was modified (the part of most interest to me); it's really clever! To avoid modifying the data structures and introducing new bugs, they hook only into TeX's internal allocation functions for tokens. (TeX as originally written by Knuth does not use malloc() or equivalent; it does all its own allocation out of giant arrays called "mem" and "str".) They can then look up this bookkeeping when the token lists are being shipped out to PDF format.

• Looks like it has some limitations as far as PS/PDF specials goes (aka “drivers” in the TeX world), so TikZ or tcolorbox don't work too well for example. However my guess is that this is just an issue with their PDF rendering (per the paper they use something like Pdf2htmlEX rather than pdf.js, for speed), and not a fundamental issue.

• But otherwise most of the standard LaTeX features and packages seem to work (labels and cross-references, etc); you can \usepackage anything and it will download the corresponding files but no data leaves your system; everything happens in the browser. Heck I even pasted in xii.tex (without the final "jbye") and it works (can click on “partridge” in the PDF and go to the corresponding part of the source).

• This sort of WYSIWYG editing for LaTeX has been done in a couple of proprietary systems before (BaKoMa TeX / Texpad), and some ancient systems as well (VorTeX), but they've been buggy in my limited experience. There was also a very impressive demo at this year's TUG meeting, by David Fuchs (who Knuth described as his “right-hand man” on the TeX project). All these projects have had to grapple with the same issues (achieving quiescence etc). This one seems to have its share of minor bugs (some artefacts seem to be visible in their published paper too!), so e.g. a feature to fully update the PDF after a (very) long typing pause (or manual user request) seems desirable. Nevertheless it's very impressive as it is.

• I think some sort of engagement with the TeX community (the mailing lists at http://tug.org/texlive/lists.html etc) may help: it appears their code is currently based on pdfTeX; they should probably consider XeTeX / LuaTeX as well (given that the doc page at https://swiftlatex.readthedocs.io/en/latest/ mentions “Lack of Unicode Support”). There are experts there with some idea of corner cases, the weird things that users want, etc. Hope this becomes part of the TeX mainstream (what little there is of it) to benefit all users (good typesetting for everyone!) and not some sort of edge case that dies when/if the authors lose interest.

Overall, am really awestruck by all this. Congratulations and good luck to the authors!

svat | 4 years ago

One of the key aspects about LaTeX that made me very productive with it was that I could just dump lots and lots of text pretty much directly from my brain into the plaintext editor, without thinking much about the intricate details of the layout. I suspect that an important "feature" that enabled this was the fact that I didn't have the exact layout present and visible in front of me all the time, but just the semantic aspects of it - until I manually triggered a compilation to actually get everything laid out.

However, this is still an awesome editor, and I would probably have loved to use the near-instant WYSIWYG updates for more complex and layout-sensitive parts of papers, like tables and such. I'd just wish this editor would allow to disable the distracting layout rendering completely for "dump-text-from-brain" phases.

Slartie | 4 years ago

Personally I hate Tex/LaTeX and I think it should be replacted by something else long time ago. First of all syntax is horrible, if you don't work with it on daily basis try to figure out what macro you wrote one year ago is doing. Each time you have to jump to manual and learn almost everythig from very beginning. Next thing is lack of utf-8 and TrueType fonts supports (I know there is XeTeX and LuaTeX) but today such features such be in very core of text system no in some software branch. Extensibility is next thing and here again it is very poor unless you use something modern like LuaTeX or you are an expert in TeX macros. Packages dependency hell is next thing side by side with stupid compilation process with meaningless error messages. Am I the only one who think this way?

superfist | 4 years ago

I sat next to Prof. Knuth in 1982 at Stanford, while he did a demo of TeX on the university's DEC-10. I asked him what was next? He said: real-time, WYSYWIG display.

At the time, the idea struck me as utterly impossible.

GnarfGnarf | 4 years ago

Very nice. Used ShareLatex back in the days. Now it is Overleaf[0]. I guess this will help to bring in competition. One of the benchmark I use to test Latex Editor is my Bachelor paper [1] written in French with all the accents and math symbols. I used that to test this new Latex editor and it seems not produce the PDF. But Texmaker ( my favorite) would just produce the PDF even if there are errors.

[0]: https://www.overleaf.com/ [1]: https://bitbucket.org/iMitwe/my-thesis/src/master/inegalites...

babayega2 | 4 years ago

Whaaaaaat. This is amazing! I know so many people who have difficulties collaborating on manuscripts the mismatch between skills document skills (life sciences vs. computer science), but thanks to WYSIWYG, they will now be able to collaborate.

The checkpointing thing is very impressive... typing + update is near instant. Never seen that before.

ivan_ah | 4 years ago

A web grandmaster see I. Office365/GoogleDocs should be very interested in this stuff and by "very" I mean 50 millions at least (they burn way more money on complete bs projects). It's very likely that the author knows more than I do, but it seems reasonable to work out some sort of dual-licensing deal: one for corps who want to take it and develop further and one for smaller businesses who are ok with saas-ish solution.

fg6hr | 4 years ago

The typing update speed blows Overleaf out of the water. I've used Overleaf for the past 3 years. It's a great product, but one of my biggest complaints is slow LaTeX rendering. If this product were a bit more polished I would use it instead of Overleaf.

conorliv1 | 4 years ago

LyX [0] eat your heart out.

It's good to see competition in this space as LyX's development has slowed the last few years. I still like it, but will be interested to try this alternative.

0. https://wiki.lyx.org

porker | 4 years ago

The rendering happens in real-time when you type! Is this using pdflatex? Because I've never seen an editor with this low of a response time.

Only slight nit is the blue progress bar/page load bar that appears across the top of the screen while you're typing is annoying. And the baseline kerning of the fonts in math mode seem a bit off: $$x^2 + 2x + 1$$ has the x in 2x a bit raised

krackers | 4 years ago

Really nice, the speed is way better than e.g. Overleaf.

Is there any way to divide the screen horizontally instead of vertically for use with widescreens? Did not find an option at first glance.

jpdus | 4 years ago

This is incredible. I've never seen LaTeX render so fast; it almost feels like WYSIWYG editing.

ericjang | 4 years ago

With the development of pure Rust[1] TeX engine (based on XeTeX) it will be possible to compile into WebAssembly too.

[1] https://github.com/crlf0710/tectonic

xvilka | 4 years ago

While I don't doubt the utility of this at all, I am quite amused by the concept of WYSISYG LaTeX.

fivre | 4 years ago

I'm getting this on ios Safari when creating document:

"Oops Error Detected! Looks like there was a problem when creating the project: DataCloneError: Failed to store record in an IDBObjectStore: BlobURLs are not yet supported."

savolai | 4 years ago

Fortunately, the WYSIWYG-bit is non-mandatory. You can also edit the source directly.

I assume Google Drive files can be simultaneously edited by multiple people? If so, then this represents a real competitor to Overleaf.

_emacsomancer_ | 4 years ago

This is indeed amazing! But I was wondering if it's possible to compile the whole TeXmacs into WebAssembly and have it in the browser. That will be a totally different world.

xuejie | 4 years ago

This seems like an incredible tool to increase adoption of TeX systems. It solves the problem of: I want to try my hand at TeX but you’re saying I have to install what now?

philistine | 4 years ago

This tool is very cool - however it appears to be written in JavaScript. I can't see any evidence of the use of WebAssembly.

ColinEberhardt | 4 years ago

Google drive and dropbox are blocked at work for me...It would be nice if they had an option for if you don't want to save your work. Like just an in-browser editor without saving. Sometimes I just might want to write up some Latex and then copy it into something else. Nowadays I usually need to open up Lyx to do the same thing.

1980phipsi | 4 years ago

I think it's really funny that swiftlatex is written in python!

Somebody should write an application called pythonlatex in swift!

appleflaxen | 4 years ago

This is interesting. I noticed that the first compilation is sort of slow (takes a couple seconds). But each subsequent small change is almost instant. How is this done? I'd imagine each tex->ps should take at least a few seconds.

vagab0nd | 4 years ago

Are there similar, "true WYSIWYG" LaTeX clients that are not web-based but native for one's platform? I know about Lyx but it's honestly quite disappointing in comparison to this project

Quanttek | 4 years ago

This works surprisingly well on mobile. It’s not 100% usable, but it works

linux2647 | 4 years ago

this is absolutely amazing!

Even though I prefer to write everything locally, I've been forced to use overleaf due to the fact that my collaborator forced me to do so.

But, with this speed, I will probably throw away overleaf. :)

qxfys | 4 years ago

Out of curiosity, and in the context of Latex, does anyone know of a good self-hosted collaborative web-based editor with preview? Or even something decentralized that works over WebRTC?

radarsat1 | 4 years ago

Tried creating a resume using one of the provided templates. Failed because XeLaTeX was required.

Tried creating a Tufte-style book using the provided template. Failed because of a missing file.

velcrovan | 4 years ago

One thing I'd really like to see is the ability to adjust line spacing. It's insanely painful in latex, and a WYSIWYG editor would be amazing.

alphagrep12345 | 4 years ago

This is great! It still needs some polishing (like autoscrolling the output to where I just made a change), but it FEELS really great!

pulse7 | 4 years ago

This is incredible. The render speed is amazing!

iliyangermanov | 4 years ago

Dissapointing that it requires a Google account.

andrepd | 4 years ago

Can someone enlighten me on the benefits of LaTeX? I've never run across it or someone who uses it.

thekingofh | 4 years ago

this is excellent! My main reason for a web-based Latex editor is multi user editing. Overleaf/ShareLatex had it, but now they are closing it down and charging for it. An open source competitor, even if with less features than the commercial ones, is a great piece of news.

dariosalvi78 | 4 years ago

i don't see anyone outside of math/csci/physics folks using latex. Almost all profs in chemistry, biology, pharmaceuticals, etc field just use word.

sabujp | 4 years ago

From the referenced document :

> Known bug lists

> 1. WYSIWYG

I agree. The first bug is that it is WYSIWYG. ;-)

Oh that's not what they meant. Or is it a clever innuendo ?

/Joke

## Praise of WYSIWYM (WYM for "what you mean")

Seriously, I wrote my Ph.D. as LaTeX source code with the help of LaTeX-mode in Emacs, including colored syntax highlighting, and was/am very happy.

As explained in a number of places, the point is to write for content without diluting your brainpower with appearance issues.

Moreover it is a common experience that proofreading a rendered copy allows the brain to more easily find typos without the filtering effect that cause one to miss them in a document being edited WYSIWYG fashion.

Also, editing source code has the nice property that there is no hidden state. Ever been annoyed in Word or Google Docs by undesired formatting conflict on a copy-paste? (yes I know "paste as plain text") Also, bullet list with some bullets having mysteriously different appearance from their siblings and you can't fix it. With sane source document editing these issues cannot happen.

## What next

That said, imagine a hybrid future from assertions below:

* I now use asciidoc as it is simpler to edit (much simpler for things like tables), and have a toolchain that renders it to PDF via LaTeX (the xsl-fo path was never near as visually clean). I wrote a LaTeX style for my personal freelancing company (quotes, invoices, reports, technical documentation) and the fact that one cannot deviate from the style is a feature.

* Side-by-side source+rendered editing somehow can make sense.

* There is practical educational value to let newcomers benefit from LaTeX power and rendering quality with the WYSIWYG they still perceive as comfortable, some will migrate to source editing.

* This project could spawn some variants with other rendering engines.

* Did they solve all the problems with cursor positioning (see "text editing hates you" mentioned here on HN recently) ? In many cases, several visual positions correspond to same source position and vice versa.

* What will happen in practice is the tech will be applied to some other places, which is the very point of public research. That reminds me the project Boomerang. https://www.seas.upenn.edu/~harmony/ there is probably some common ground between those projects.

s_gourichon | 4 years ago

I'm getting a giant pink screen, this is broken.

sabujp | 4 years ago

Even works on my iPhone 11. Very cool.

m0zg | 4 years ago

thanks to WYSIWYG

jordantours | 4 years ago