TeXbrain 是一个免费、开源、完全在浏览器中运行的LaTeX编辑器,旨在提供一个无需安装、无需账户、无后端服务器的写作环境。
核心功能与优势
- 纯浏览器端编译:通过WebAssembly版本的pdfTeX引擎,在你的浏览器中直接将.tex文件编译为PDF,文件不会离开你的设备。
- 按需加载的宏包支持:支持绝大部分CTAN宏包。常用宏包已内置于应用中,其他宏包会在首次使用时从TeX Live镜像自动下载并缓存,供后续离线使用。
- 完整的Git集成:借助isomorphic-git库,你可以在浏览器内完成克隆仓库、创建分支、暂存、提交、推送、拉取和合并等操作,无需命令行。
- 本地文件系统访问:在基于Chromium的浏览器(如Chrome、Edge)中,可直接读写你磁盘上的项目文件夹。其他浏览器则回退到虚拟文件系统。
- 专业的编辑环境:基于CodeMirror 6构建,提供语法高亮、70+命令的自动补全、括号匹配、代码折叠、代码片段和暗色/亮色主题。
- 多文件项目支持:支持文件树、标签页和拖拽操作,可处理.tex、.bib、.sty、.cls等多种文件类型。
- 离线工作:应用加载后,核心功能即可离线使用。已编译过的宏包会缓存,只有首次使用新宏包时才需要网络。
介绍
LaTeX能在浏览器里跑了,还不用装任何东西!
打开网页就能写论文,还能直接连GitHub,这玩意儿到底怎么做到的?
TeXbrain是一个完全运行在浏览器中的免费开源LaTeX编辑器,它把编译器和Git客户端都搬到了网页里,让你不用安装任何软件就能写论文、管版本。
写个论文为啥这么折腾
写过论文的人都知道LaTeX这玩意儿有多烦人。你本来只想好好写字,结果花在调试环境上的时间比写正文还多。本地装一套TeX Live,动不动就几个G,换了电脑还得重新折腾一遍。在线编辑器倒是省事,可一旦想把东西存到GitHub上,就得掏钱开会员。
有个叫Braian Plaku的哥们儿就被这事儿整得够呛。他在奥地利一家公司做软件开发,平时搞计算机视觉和机器学习,写毕业论文那会儿被工具折腾得够呛,干脆自己动手造了个轮子。
把整个TeX Live塞进浏览器
TeXbrain最狠的一招,是把pdfTeX编译成了WebAssembly,直接跑在浏览器里。这意味着什么?意味着你打开一个网页,就能在本地编译LaTeX文档,文件压根儿不上传任何服务器。
这套编译引擎叫SwiftLaTeX,核心文件只有1.8MB。它跑在一个内存文件系统里,所有编译都在浏览器沙箱中完成,没有shell命令,没有exec调用,安全得很。
但LaTeX最麻烦的不是引擎本身,而是那堆宏包。一个空文档可能啥包都不需要,但但凡你要写点正经东西,就得拽进来一堆依赖。TeXbrain的处理方式挺聪明:按需加载。常用包内置了,不常用的从TeX Live镜像实时拉取,然后缓存到浏览器里。也就是说,你第一次编译某个文档可能会慢一点,但之后就能离线工作了。
编译速度大概在1到5秒之间,看项目复杂程度。
Git也能在浏览器里跑
光能编译还不够。写论文你得管理版本吧?得跟合作者同步吧?TeXbrain把Git也搬进了浏览器,靠的是一个叫isomorphic-git的纯JavaScript库。
这个库挺有意思,它在浏览器里模拟了一个完整的Git文件系统,用IndexedDB存数据。你能干的事儿包括:克隆仓库、创建分支、暂存文件、提交、推送、拉取、合并。全在浏览器里完成,不用开终端。
不过有个坑:浏览器不能直接走Git协议,所以远程操作得通过一个CORS代理。默认用的是isomorphic-git项目提供的公共代理,你也可以换成自己的。
直接读写你电脑上的文件
这可能是最让人意外的一点。TeXbrain用了Chrome的File System Access API,可以直接读写你磁盘上的文件夹。
在Chromium系浏览器(Chrome、Edge、Arc、Brave)里,你打开一个本地文件夹,编辑器的所有改动都会直接写到硬盘上。这就意味着你可以用TeXbrain和其他本地工具同时处理同一个项目,互不干扰。
Firefox和Safari暂时不支持这个API,只能用一个虚拟文件系统。
编辑器该有的功能都有
CodeMirror 6打底,语法高亮、自动补全、括号匹配、代码折叠,该有的都有。支持70多个LaTeX命令的自动补全,还有暗色和亮色主题。项目模板覆盖了论文、报告、Beamer、简历这些常见场景。
PDF预览用的是Mozilla的pdf.js,支持多页渲染、缩放和文字选择。
局限性你得知道
TeXbrain目前只支持pdfTeX,不支持XeTeX和LuaTeX。这意味着什么?意味着你要是用了fontspec或者polyglossia这种依赖XeTeX的包,直接编译不过去。
参考文献这块也瘸腿。没有bibtex也没有biber,用biblatex的话会生成一个简陋的thebibliography环境,样式啥的就别指望了。真要引用文献,你得在项目里放一个预先生成的.bbl文件。
宏包版本锁定在TeX Live 2020 era。这几年新出的宏包版本用不了,不过对大部分论文来说影响不大。
还有个用户在Hacker News上反馈了个bug:编译一个200行的文档时报错说"on line 13017",显然问题出在某个宏包内部,但错误信息指向了文档的第39行,排查起来相当头大。
隐私和安全
这套东西完全不收集数据。没有遥测、没有分析、没有追踪,不用注册账号,不存cookies。Git认证令牌存在浏览器的localStorage里,不会经过任何服务器。编译在WebAssembly沙箱里跑,没有命令行执行,没有命令注入风险。
一个值得关注的细节
有用户在Safari上试的时候发现,虽然文档说Firefox和Safari会fallback到虚拟文件系统,但实际操作时点了New Project只会弹出一个提示让你用Chrome或Edge。后来才发现得点顶部的"Open file"按钮才能打开已有文件。
所以这玩意儿目前还是对Chromium系浏览器最友好。
这玩意儿到底给谁用
作者自己说得很清楚:这不是要取代你本地的LaTeX环境。它的目标用户是那些在公用电脑、Chromebook或者学校机房工作的人,没法装TeX Live,又不想掏钱买在线编辑器会员的人。
你猜怎么着?已经有几个人用它写完毕业论文了。
项目代码在GitHub上开源,MIT许可证。你想自己部署也行,克隆下来跑pnpm install和pnpm dev就行。
不过话说回来,那个在Safari上编译报错"TeX capacity exceeded"的用户,后来把microtype包注释掉之后又遇到了同样的错误,然后硬刷新了一下页面,错误变成了"on line 39"。一个200行的文档编译失败,报错指向了第39行,但问题其实出在某个宏包内部——这种调试体验,和本地TeX Live的报错比起来,到底是进步还是倒退呢?