首先,如果这不是适合提问的页面,我很抱歉,如有必要,我会删除该帖子。
我想在我的网站上显示一些乳胶文档的编译版本(应该能够实时修改)。看看 Overleaf 和 ShareLaTeX,它们通过使用 HTML 画布对象来实现这一点。他们是如何做到的?我猜他们使用普通的 LaTeX 编译器进行编译,然后将 PDF 转换为 SVG 或类似的东西并将其上传到网站。另一种选择是使用一个解析器将其转换.tex
为画布对象,但这要困难得多。有人能确认他们使用的是其中哪一种方法,还是另一种方法?
答案1
Overleaf 使用“普通的 latex 编译器”(他们最近升级至 TeX Live 2018) 在后端。也就是说,将.tex
文件转换为 PDF(使用pdflatex
或xelatex
或其他方式)发生在 Overleaf 的服务器上。之后,系统将生成的 PDF 发送到您的浏览器,他们的前端代码使用pdf.js在 HTML 画布中呈现 PDF。Overleaf/ShareLaTeX 源代码的一部分是可在 GitHub 上获取(2014 年的原始博客文章是在此链接(现已重定向))。
除了 Overleaf,对于“我想在我的网站上显示一些 latex 文档的编译版本 [...]”,另一个选择是在服务器上生成 DVI(而不是 PDF),然后使用韋斯維爾。
另一种可能的方法是改为在用户的浏览器中运行编译过程。我知道有两个旨在实现此目的的项目;到目前为止,这两个项目都处于实验阶段,而且速度相当慢:
那里存在texlive.js(看演示) 和xetex.js,它通过 Emscripten 将 TeX Live 代码编译为 Javascript(现在也可以编译为 WebAssembly)。
还有 Jim Fowler 的最新作品;查看演示这里和这里, 源代码这里/这里/这里, 和TUGboat 文章刊登于第 40 卷(2019 年)第 1 期。这会使用自定义编译器将 TeX 的 WEB/Pascal 代码编译为 WebAssembly,然后使用自定义 DVI 转换器渲染为 HTML。