站点图标 高效码农

TeXlyre:彻底颠覆你的LaTeX协作体验,离线编辑+点对点同步如何做到数据零丢失?

探索 TeXlyre:本地优先的 LaTeX 协作实用指南

你是否曾经需要和同事一起编辑 LaTeX 文档,却担心数据控制权丢失或网络不稳定?TeXlyre 就是为此而生的。它是一个专为 LaTeX 文件实时协作设计的平台,强调本地存储和离线编辑功能。基于 React、TypeScript 和 Yjs 构建,它能让你无缝共同编辑文档,即使没有网络连接。在这篇文章中,我们将一步步了解 TeXlyre 的功能、工作原理,以及如何上手。我会顺便回答一些常见问题,比如如何设置,或者它与其他工具的区别。

先从基础说起。TeXlyre 是一个本地优先的实时 LaTeX 协作平台,支持离线编辑。这意味着你的文档默认保存在本地设备上,你可以随时离线编辑。连接他人时,变更会自动同步。它是开源的,采用 AGPL v3 许可,在浏览器中运行,大多数操作无需中央服务器。

TeXlyre 对 LaTeX 用户有何独特之处?

如果你熟悉 LaTeX,用于撰写论文、报告或毕业设计,你知道它精确而强大。但传统上,LaTeX 文件协作往往靠邮件来回传递版本,或使用云工具,这可能牺牲隐私。TeXlyre 通过点对点连接和本地存储改变了这一切。

一个关键点是它使用 Yjs 进行协作编辑。Yjs 是一种无冲突复制数据类型(CRDT)系统,确保多人同时编辑时,变更自动合并,无需手动解决冲突。这一切实时发生,显示每个人的光标位置。

主编辑界面,左侧显示 LaTeX 代码,右侧显示编译后的 PDF

看看上面的主界面——它分成 LaTeX 代码和编译 PDF 两部分。这种设置让你输入时就能立即看到视觉反馈。

但如果你有时需要独自工作呢?TeXlyre 的本地优先架构意味着所有数据存储在浏览器的 IndexedDB 中。你可以完全离线编辑,重新连接时自动同步。就好像一个个人 LaTeX 编辑器,能轻松扩展到团队协作,而不强制你一直在线。

深入核心功能

我们一步步分解功能。我会解释每个部分,并回答实际问题,比如“这个在实践中怎么用?”

实时协作:无缝共同工作

想象你正在合写一篇研究论文。TeXlyre 允许多人同时编辑同一文档。你会看到他人不同颜色的光标和选区,清楚谁在改什么。

多人同时编辑,使用不同颜色光标

这由 WebRTC 驱动的点对点连接实现,延迟低,因为数据不经服务器。还有内置聊天系统,你可以在编辑环境中直接讨论变更,无需切换应用。

协作者使用聊天面板讨论进度

评论功能呢?TeXlyre 提供评论和聊天,用于实时交流、审查和讨论,帮助团队分享想法。

常见问题:“它能处理好冲突吗?”是的,借助 Yjs CRDT,来自不同用户的变更自动合并。不再手动解决编辑重叠。

LaTeX 编译:在浏览器中构建文档

LaTeX 编译通常需要安装像 TeX Live 这样的软件,但 TeXlyre 用 SwiftLaTeX WASM 引擎在浏览器中完成一切。它支持 pdfTeX 和 XeTeX,能处理复杂文档,无需外部依赖。

编译是实时的,你输入时就能看到更新,带语法高亮和错误检测。如果有问题,错误面板会弹出指导你。

LaTeX 编译进行中,显示错误面板和 PDF 输出

集成 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 编辑器插件用于处理参考文献。

Bib 编辑器插件集成到 TeXlyre 应用中

插件在配置文件中注册,必须放在 ‘extras’ 目录。

架构强调本地优先原则,除非主动协作,否则数据保持本地。

文件同步详解

对于本地同步,使用文件系统访问 API 连接文件夹。这与 Dropbox 等云存储配合良好,实现跨设备工作流,保持与传统 LaTeX 兼容。

点对点共享通过 FilePizza 处理非协作文件,Yjs 管理元数据。这种组合确保文件列表和共享状态实时更新。

TeXlyre 上手指南:一步步操作

如何安装和运行 TeXlyre

如果你想知道如何设置,很简单。你需要 Node.js 18 或更高版本,以及现代浏览器。

过程如下:

  1. 克隆仓库:

    git clone https://github.com/TeXlyre/texlyre.git
    
  2. 进入目录:

    cd texlyre
    
  3. 安装依赖:

    npm install
    
  4. 启动开发服务器:

    npm run dev
    
  5. 在浏览器中访问 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 支持模板吗?

是的,从模板启动项目,轻松共享链接。

操作指南:常见任务

如何创建和共享新项目

  1. 在浏览器中打开 TeXlyre。
  2. 点击创建新项目。
  3. 可选,选择模板。
  4. 编辑 LaTeX 文档。
  5. 复制 URL(带 #yjs:ID)共享给他人。

如何与本地文件系统同步

  1. 在项目设置中启用文件系统访问。
  2. 选择本地文件夹。
  3. TeXlyre 会双向同步文件。
  4. 与云存储结合,实现跨设备访问。

如何处理编译错误

  1. 编写 LaTeX 代码。
  2. 观察实时编译。
  3. 如果错误面板出现,审查日志。
  4. 在代码编辑器修复。
  5. 重新编译查看更新。

如何添加插件

  1. 开发插件,使用所需接口。
  2. 放在 ‘extras’ 目录。
  3. 在 plugins.config.ts 添加路径(不带 ‘/extras’)。
  4. 重启应用,自动加载。

TeXlyre 引擎与功能比较

为了帮你理解选项,这里是表格:

功能 描述 支持技术
编译引擎 浏览器内 LaTeX 处理 通过 SwiftLaTeX WASM 支持 pdfTeX、XeTeX
协作同步 实时编辑合并 Yjs CRDT、WebRTC 点对点
存储 本地数据所有权 IndexedDB、文件系统访问 API
文件共享 点对点传输 FilePizza 集成、Yjs 元数据
浏览器支持 完整功能 Chrome/Edge;部分:Firefox/Safari

这涵盖了要点。

结语:为什么 TeXlyre 适合你

如果你是学生、研究员或专业人士使用 LaTeX,TeXlyre 提供协作与控制的平衡。它不追求花哨功能,而是可靠、注重隐私的工具,适合真实工作流。无论离线独编还是团队 brainstorm,它都能适应。

我在这里覆盖了功能、设置和常见问题。如果有兴趣,克隆仓库实验吧。像这样的开源工具社区,在像你这样的人贡献或分享经验时会成长。

退出移动版