Появился проект, который запускает PdfTeX и XeTeX прямо в браузере на чистом WebAssembly. Никакого сервера, никаких установок TexLive или MikTeX на компьютер — всё работает в табе. Результат компиляции получается идентичным нативным сборкам, так что совместимость полная.
Подключается всё просто — достаточно добавить на страницу один скрипт PdfTeXEngine.js. Движок умеет работать с файлами, картинками и шрифтами прямо через виртуальную файловую систему в памяти. Есть поддержка WYSIWYG-редактирования LaTeX-документов на движке XeTeX. Производительность тоже радует: код выполняется всего в два раза медленнее, чем нативные бинарники. Проект полностью открыт, исходники лежат на GitHub.
Чтобы начать, нужно скачать последний релиз с Github, распаковать и положить файлы в директорию сайта. Затем подключить скрипт тегом <script>, создать экземпляр LaTeXEngine и дождаться загрузки WebAssembly-движка через await engine.loadEngine(). После этого можно загружать в память исходные .tex-файлы, картинки и шрифты методом writeMemFSFile, указывать главный файл через setEngineMainFile, и запускать компиляцию функцией compileLaTeX. Результат — объект CompileResult, содержащий бинарник PDF и лог компиляции.
В API также есть isReady() — проверка готовности, makeMemFSFolder для создания папок, flushCache для очистки загруженных файлов и closeWorker для завершения воркера. Первый запуск может занять время — придётся подождать пару минут, пока скачаются шаблоны.