2026年8月27日 1 分钟阅读

不装 LaTeX 也能写论文吗?TeXbrain 浏览器编译、Git 同步与边界实测

tinyash 0 条评论

如果你写过 LaTeX,通常会遇到两类麻烦:一类是本地环境,宏包、字体和 TeX Live 版本在不同机器上不一致;另一类是协作与同步,在线编辑器的 Git 功能常常被放进付费套餐,而本地编辑器又需要自己拼装预览、版本控制和文件管理。TeXbrain 试图把这几个环节放进浏览器:打开一个网页,选择项目目录,直接编辑 .tex 文件并生成 PDF。

它不是把文档上传到某个服务器编译,而是把编辑器、pdfTeX、Git 客户端和 PDF 阅读器都放在浏览器端运行。项目仓库的 GitHub 页面显示,TeXbrain 使用 MIT 许可证;作者在 README 中将它描述为无账号、无安装、无后端的开源 LaTeX 编辑器。对想快速处理论文、课程作业或技术文档的人来说,这种取舍比“功能最多”更值得观察:它减少了环境配置,同时把浏览器能力和旧版 TeX 引擎的限制暴露得很清楚。

它实际解决了什么问题

TeXbrain 的核心不是一个新的排版引擎,而是浏览器中的组合式工作区。编辑器基于 CodeMirror 6,提供 LaTeX 语法高亮、补全、括号匹配、折叠和片段选择;预览通过 pdf.js 显示,支持多页、缩放、文本选择和搜索。你可以在同一个界面里打开 .tex.bib.sty.cls 等文件,文件树和标签页负责处理多文件项目。

编译部分使用 SwiftLaTeX 提供的、编译为 WebAssembly 的 pdfTeX。编译器先在浏览器内存文件系统中准备项目文件,再执行排版;缺少的类文件、宏包或字体会按需从 TeX Live 镜像获取,并写入浏览器缓存。之后再次使用同一宏包时,不必重复下载。README 给出的重新编译时间是 1 到 5 秒,实际仍取决于项目复杂度和浏览器设备,这个数字不应理解成所有文档的固定性能保证。

这个架构带来一个重要的隐私边界:正常编辑和编译时,文档内容不需要发送到 TeXbrain 的后端。作者还明确写到,应用不包含遥测、分析、账号和 Cookie。宏包按需下载时,网络侧需要知道被请求的宏包文件名,但不是你的文档正文。对于包含未公开研究内容的项目,这比把 .tex 文件交给远程编译服务更容易审计。

从一个项目开始

最直接的使用方式是访问 TeXbrain 在线实例,在 Chromium 系浏览器中授权访问一个本地文件夹。Chrome、Edge、Arc、Brave 和 Opera 具备 File System Access API,TeXbrain 可以直接读写你选择的项目目录;Firefox 和 Safari 则使用虚拟文件系统回退,不能获得完全相同的本地目录体验。

如果你希望先在本地运行开发版本,README 提供的是下面这组命令:

git clone https://github.com/swimmingbrain/texbrain.git
cd texbrain
pnpm install
pnpm dev

启动后访问 http://localhost:5173。这里的 pnpm dev 是项目开发服务器命令,不是 TeXbrain 面向普通用户提供的独立 CLI;普通用户无需安装 Node.js 或 pnpm,直接使用在线实例即可。

打开项目后,先从一个简单的 article 文档开始。编辑器会在保存或触发编译后更新预览,Problems 面板会把 TeX 日志转换成可定位的问题卡片,例如未知命令、数学环境使用错误或找不到宏包。卡片包含文件、行号和源代码片段,点击后可以跳回对应位置。Log 面板仍保留完整原始日志,因此遇到解析器没有完全理解的错误时,仍可回到 TeX 的原始输出。

Git 同步为什么值得注意

TeXbrain 的 Git 集成不是调用电脑上的 git 命令,而是使用浏览器内运行的 isomorphic-git。项目目录旁边的 .git 文件夹仍然是真实仓库的一部分,因此你可以在 TeXbrain、终端和其他编辑器之间切换,而不是把项目锁在某个网页数据库里。

典型流程可以拆成四步:打开目录后,在 Git 面板中初始化仓库并设置姓名和邮箱;在 Changes 面板选择文件、查看 diff、提交;在 Sync 面板填写远程仓库的 HTTPS 地址和个人访问令牌;最后执行 Push、Pull 或 Fetch。已有仓库也可以直接打开,历史记录会随 .git 目录一起被识别。分支切换会把目标分支的文件写回项目目录,编辑器看到的内容因此和磁盘状态保持一致。

浏览器不能直接使用传统 Git 协议,所以远程 clone、fetch、pull 和 push 需要经过 CORS 代理。默认代理是 cors.isomorphic-git.org,设置中可以改为自己的代理;isomorphic-git 项目也公开了 cors-proxy 实现。这不是一个可以忽略的细节:访问令牌会经过代理,虽然 README 说明令牌保存在浏览器的 localStorage、不会发送到 TeXbrain 自己控制的服务器,但在共享电脑上仍应在使用结束后清除令牌。对高敏感仓库,更稳妥的做法是自建代理并使用权限受限、可撤销的令牌。

目前 Git 集成也不是完整的图形化冲突解决器。发生冲突时,应用会提示哪些文件受影响并中止相关操作,具体合并仍要回到终端处理;子模块、符号链接和 Git LFS 也不在 README 宣称的支持范围内。它更适合“单人写作、频繁提交、偶尔同步”的工作流,而不是替代成熟 Git 客户端承担复杂分支协作。

兼容性与排版边界

TeXbrain 最大的功能边界来自 pdfTeX,而不是浏览器界面。它不提供 XeTeX 或 LuaTeX,因此依赖 fontspecpolyglossia 或部分需要现代引擎的 TikZ 能力的文档不能直接照搬到这里。项目还注明,内置引擎和宏包处于 TeX Live 2020 时代;新文档若依赖近几年才出现的宏包版本,可能遇到版本或格式不兼容。

参考文献支持同样需要提前确认。应用不包含 bibtex 或 biber。使用 biblatex 的文档可能得到由 .bib 文件生成的普通 thebibliography,但引用样式不会完整保留;传统 bibtex 流程则需要项目中已经存在 .bbl 文件。也就是说,写作前先用一个最小文档验证宏包、字体和参考文献链路,比把完整论文导入后再排查更省时间。

浏览器安全模型也不是绝对隔离的魔法。编译在 WebAssembly 环境中进行,应用不会替你调用本机的 pdflatexexec()spawn();但 Git 远程同步、宏包镜像和浏览器缓存仍然是外部边界。首次使用时应检查网络请求目标,避免在不熟悉的共享环境中长期保存访问令牌。

适合怎样的写作者

TeXbrain 最有价值的场景,是你需要 LaTeX 的排版结果,却不想为每台电脑维护一套 TeX 环境。比如临时使用公共电脑写一段公式、在 Chromium 上快速检查一个课程作业、把论文仓库交给一个不熟悉 LaTeX 安装的合作者,或者希望把“编辑、预览、提交”集中到一个界面。它的本地编译和按需缓存也适合不希望文档正文上传到第三方服务器的人。

但如果项目依赖 XeLaTeX、LuaLaTeX、复杂字体、biber、Git LFS 或大型协作分支,TeXbrain 更像一个轻量入口,而不是完整替代方案。可以采用混合策略:日常修改和预览用 TeXbrain,复杂编译、冲突解决和最终 CI 构建交给本地 TeX Live 或项目流水线。这样既利用浏览器工作区的低门槛,也不会把正式发布链路押在单一浏览器实现上。

它的设计取舍很明确:少一个后端,就少一层文档上传与服务端编译;把 Git 放进浏览器,就必须接受 CORS 代理和令牌管理;追求轻量,就不能同时覆盖所有 TeX 引擎。对于一个 MIT 许可、静态部署、代码可查的项目,这种边界透明度反而是优点。真正开始迁移前,拿自己的模板做一次最小验证:编译一页公式、加载一个非默认宏包、提交一次 Git、再测试一次离线打开。四个步骤都通过,才值得把完整写作流程放进去。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。