探索 TeXlyre:本地优先的 LaTeX 协作实用指南
你是否曾经需要和同事一起编辑 LaTeX 文档,却担心数据控制权丢失或网络不稳定?TeXlyre 就是为此而生的。它是一个专为 LaTeX 文件实时协作设计的平台,强调本地存储和离线编辑功能。基于 React、TypeScript 和 Yjs 构建,它能让你无缝共同编辑文档,即使没有网络连接。在这篇文章中,我们将一步步了解 TeXlyre 的功能、工作原理,以及如何上手。我会顺便回答一些常见问题,比如如何设置,或者它与其他工具的区别。
先从基础说起。TeXlyre 是一个本地优先的实时 LaTeX 协作平台,支持离线编辑。这意味着你的文档默认保存在本地设备上,你可以随时离线编辑。连接他人时,变更会自动同步。它是开源的,采用 AGPL v3 许可,在浏览器中运行,大多数操作无需中央服务器。
TeXlyre 对 LaTeX 用户有何独特之处?
如果你熟悉 LaTeX,用于撰写论文、报告或毕业设计,你知道它精确而强大。但传统上,LaTeX 文件协作往往靠邮件来回传递版本,或使用云工具,这可能牺牲隐私。TeXlyre 通过点对点连接和本地存储改变了这一切。
一个关键点是它使用 Yjs 进行协作编辑。Yjs 是一种无冲突复制数据类型(CRDT)系统,确保多人同时编辑时,变更自动合并,无需手动解决冲突。这一切实时发生,显示每个人的光标位置。
看看上面的主界面——它分成 LaTeX 代码和编译 PDF 两部分。这种设置让你输入时就能立即看到视觉反馈。
但如果你有时需要独自工作呢?TeXlyre 的本地优先架构意味着所有数据存储在浏览器的 IndexedDB 中。你可以完全离线编辑,重新连接时自动同步。就好像一个个人 LaTeX 编辑器,能轻松扩展到团队协作,而不强制你一直在线。
深入核心功能
我们一步步分解功能。我会解释每个部分,并回答实际问题,比如“这个在实践中怎么用?”
实时协作:无缝共同工作
想象你正在合写一篇研究论文。TeXlyre 允许多人同时编辑同一文档。你会看到他人不同颜色的光标和选区,清楚谁在改什么。
这由 WebRTC 驱动的点对点连接实现,延迟低,因为数据不经服务器。还有内置聊天系统,你可以在编辑环境中直接讨论变更,无需切换应用。
评论功能呢?TeXlyre 提供评论和聊天,用于实时交流、审查和讨论,帮助团队分享想法。
常见问题:“它能处理好冲突吗?”是的,借助 Yjs CRDT,来自不同用户的变更自动合并。不再手动解决编辑重叠。
LaTeX 编译:在浏览器中构建文档
LaTeX 编译通常需要安装像 TeX Live 这样的软件,但 TeXlyre 用 SwiftLaTeX WASM 引擎在浏览器中完成一切。它支持 pdfTeX 和 XeTeX,能处理复杂文档,无需外部依赖。
编译是实时的,你输入时就能看到更新,带语法高亮和错误检测。如果有问题,错误面板会弹出指导你。
集成 PDF 查看器支持缩放、导航和代码并排查看。这让文档迭代更快。
问题:“这和桌面 LaTeX 工具一样强大吗?”它是为浏览器设计的,能处理大多数标准 LaTeX 需求,但对于非常专业的包,你可能仍需桌面设置。不过,由于基于 WASM,它在无服务器情况下已相当强大。
本地优先架构:让数据属于你
TeXlyre 重视隐私和离线能力。所有文档通过 IndexedDB 存储本地,支持完全离线编辑,连接恢复时自动同步。文件系统访问 API 允许直接与本地文件夹同步,便于外部备份,项目导出导入确保数据在设备间完全可移植。
文件管理和同步:组织你的项目
TeXlyre 包括全面的文件浏览器,支持拖拽各种文件类型,如 LaTeX 源文件、图像和数据文件。文档链接功能连接协作文档和静态文件,实现无缝编辑流程。
对于共享大文件,它集成 FilePizza,通过 WebRTC 进行安全点对点共享。
Yjs 处理文件元数据和同步状态,确保所有协作者访问最新版本。
用户常问:“如何共享项目?”只需共享 URL,如 http://localhost:5173/#yjs:abc123def456
,协作者即可立即加入。
你还可以从模板开始项目,快速启动。
TeXlyre 的架构如何运作?
在底层,TeXlyre 用 React 构建前端,与存储在 IndexedDB 的 Yjs 文档通信。WebRTC 处理实时同步,SwiftLaTeX WASM 负责浏览器内编译。
它通过插件系统可扩展。插件能添加自定义查看器、渲染器或备份提供者。例如,有 Bib 编辑器插件用于处理参考文献。
插件在配置文件中注册,必须放在 ‘extras’ 目录。
架构强调本地优先原则,除非主动协作,否则数据保持本地。
文件同步详解
对于本地同步,使用文件系统访问 API 连接文件夹。这与 Dropbox 等云存储配合良好,实现跨设备工作流,保持与传统 LaTeX 兼容。
点对点共享通过 FilePizza 处理非协作文件,Yjs 管理元数据。这种组合确保文件列表和共享状态实时更新。
TeXlyre 上手指南:一步步操作
如何安装和运行 TeXlyre
如果你想知道如何设置,很简单。你需要 Node.js 18 或更高版本,以及现代浏览器。
过程如下:
-
克隆仓库:
git clone https://github.com/TeXlyre/texlyre.git
-
进入目录:
cd texlyre
-
安装依赖:
npm install
-
启动开发服务器:
npm run dev
-
在浏览器中访问
http://localhost:5173
。
从那里,创建新项目或打开现有项目。要协作,共享带项目 ID 的 URL。
开发中用 HTTPS:
npm run dev:https
生产构建:
npm run build
然后预览:
npm run preview
代码检查:
npm run lint
这个设置让你快速运行起来。
如何为 TeXlyre 开发插件
想扩展 TeXlyre?插件系统使用类型化接口。例如查看器插件:
interface ViewerPlugin extends Plugin {
type: 'viewer';
canHandle: (fileType: string, mimeType?: string) => boolean;
renderViewer: React.ComponentType<ViewerProps>;
}
把插件放在 ‘extras’ 目录,在 plugins.config.ts
添加路径(不带 ‘/extras’)。系统启动时自动加载。
浏览器兼容性:你需要了解什么
TeXlyre 在 Chrome 和 Edge 上表现最佳,完全支持文件系统访问 API 和 WebRTC。Firefox 支持核心协作,但文件系统集成有限。Safari 部分兼容,文件访问能力减弱。
移动浏览器文件系统 API 未彻底测试,所以在设备上使用备份功能需谨慎。
WebRTC 对协作至关重要,文件系统访问提升备份功能。
许可和隐私:细节理解
TeXlyre 采用 GNU Affero 通用公共许可证 v3.0 (AGPL-3.0)。
这意味着:
-
✅ 你可以使用、修改和分发此软件 -
✅ 可用于任何目的,包括商业用途 -
⚖️ 如果分发修改版,必须分发源代码 -
⚖️ 如果作为网络服务运行修改版,必须向用户提供源代码
详情见 LICENSE 文件。
为什么 AGPL-3.0?因为依赖 SwiftLaTeX 的 AGPL 许可 WASM LaTeX 引擎,用于浏览器内编译。
隐私方面:TeXlyre 设计注重隐私。
-
「本地优先」:所有数据留在浏览器中 -
「直接连接」:点对点协作,无服务器中介 -
「无跟踪」:无分析、cookie 或数据收集
协作时,IP 地址短暂通过信令服务器处理以建立连接。但项目内容不经服务器。
GitHub 集成可选,仅在你明确启用并提供令牌时激活。
基础设施使用开源信令服务器,如 y-webrtc、PeerJS、SwiftLaTeX TeX Live 下载服务器和 FilePizza,所有通过 Cloudflare Tunnel 托管公开。
自托管
你可按 基础设施仓库 的设置说明运行自己的信令服务器。
致谢与下一步
TeXlyre 基于多项关键技术:SwiftLaTeX 提供 WASM LaTeX 编译,Yjs 实现无冲突协作编辑,CodeMirror 驱动高级文本界面,FilePizza 便于安全点对点文件传输。
开发中,Anthropic Claude 协助代码生成、调试和架构指导。
准备开始协作?访问 GitHub Pages 上的 实时演示,或通过 CONTRIBUTING.md 贡献项目。
常见问题解答:关于 TeXlyre 的疑问
这里,我用对话式方式回答常见查询,基于用户可能提出的问题。
TeXlyre 是什么?它与其他 LaTeX 编辑器有何不同?
TeXlyre 是一个浏览器-based 的实时 LaTeX 协作平台,支持离线。它不像传统编辑器需要服务器或安装,而是保持数据本地,使用点对点同步。它不仅是编辑器,还是带文件管理和插件的完整平台。
TeXlyre 中的实时协作如何工作?
它用 Yjs CRDT 合并编辑,WebRTC 直接连接。你看到实时光标,变更即时同步。无需中央服务器,保持隐私。
我能离线使用 TeXlyre 吗?
当然。文档存储在 IndexedDB 中,随时编辑。重新连接时同步。
哪些浏览器完全支持 TeXlyre?
Chrome 和 Edge 最佳。Firefox 适合基础,Safari 部分。移动端高级文件同步待测试,避免使用。
如何与协作者共享文件?
用文件浏览器拖拽,FilePizza 点对点传输大文件。元数据通过 Yjs 同步。
TeXlyre 对敏感文档安全吗?
是的,本地优先意味着数据在设备上。点对点避免服务器,无内置跟踪。
TeXlyre 如何编译 LaTeX?
用 SwiftLaTeX WASM 在浏览器中编译,支持 pdfTeX 和 XeTeX。实时更新显示错误和 PDF 输出。
我能用自定义功能扩展 TeXlyre 吗?
是的,通过插件。定义如查看器的接口,放在 ‘extras’,在配置中注册。
TeXlyre 用什么许可?这意味着什么?
AGPL v3:免费使用/修改,但分发变更需共享源代码。因 SwiftLaTeX 依赖而采用。
如何自托管信令服务器?
按 texlyre-infrastructure 仓库说明运行 y-webrtc、PeerJS 等。
TeXlyre 支持模板吗?
是的,从模板启动项目,轻松共享链接。
操作指南:常见任务
如何创建和共享新项目
-
在浏览器中打开 TeXlyre。 -
点击创建新项目。 -
可选,选择模板。 -
编辑 LaTeX 文档。 -
复制 URL(带 #yjs:ID)共享给他人。
如何与本地文件系统同步
-
在项目设置中启用文件系统访问。 -
选择本地文件夹。 -
TeXlyre 会双向同步文件。 -
与云存储结合,实现跨设备访问。
如何处理编译错误
-
编写 LaTeX 代码。 -
观察实时编译。 -
如果错误面板出现,审查日志。 -
在代码编辑器修复。 -
重新编译查看更新。
如何添加插件
-
开发插件,使用所需接口。 -
放在 ‘extras’ 目录。 -
在 plugins.config.ts 添加路径(不带 ‘/extras’)。 -
重启应用,自动加载。
TeXlyre 引擎与功能比较
为了帮你理解选项,这里是表格:
功能 | 描述 | 支持技术 |
---|---|---|
编译引擎 | 浏览器内 LaTeX 处理 | 通过 SwiftLaTeX WASM 支持 pdfTeX、XeTeX |
协作同步 | 实时编辑合并 | Yjs CRDT、WebRTC 点对点 |
存储 | 本地数据所有权 | IndexedDB、文件系统访问 API |
文件共享 | 点对点传输 | FilePizza 集成、Yjs 元数据 |
浏览器支持 | 完整功能 | Chrome/Edge;部分:Firefox/Safari |
这涵盖了要点。
结语:为什么 TeXlyre 适合你
如果你是学生、研究员或专业人士使用 LaTeX,TeXlyre 提供协作与控制的平衡。它不追求花哨功能,而是可靠、注重隐私的工具,适合真实工作流。无论离线独编还是团队 brainstorm,它都能适应。
我在这里覆盖了功能、设置和常见问题。如果有兴趣,克隆仓库实验吧。像这样的开源工具社区,在像你这样的人贡献或分享经验时会成长。