技术架构
JianTeX 的技术方案围绕一个核心理念设计:让学术写作更流畅、更可靠、更自由。以下是支撑这一体验的关键技术。
双端架构
JianTeX 提供桌面端和在线版两种使用方式,它们共享同一套核心引擎和项目格式。你用桌面端写到一半的论文,到办公室打开浏览器在线版,项目结构、编译配置、版本历史——一切照旧。
桌面端:性能为王
基于 Tauri 2 框架构建,前端是 React,后端是 Rust 原生代码。相比 Electron 方案,内存占用减少 60% 以上,启动速度近秒开。所有编译、字体解析、PDF 渲染都在本地完成,不依赖任何网络请求。即使在没有互联网的实验室或飞机上,功能完全不受影响。
跨平台特性:一套代码同时编译 macOS(arm64 + x86_64)、Windows、Linux 三平台原生安装包,不是网页套壳,是真正的原生应用。
在线版:随时协作
服务器端基于 Axum 框架 + SQLite / PostgreSQL。不需要在电脑上安装任何软件,打开浏览器就能用。项目数据、编译历史、协作状态全部存储在服务端,换一台设备也不用搬文件。
支持自部署:你可以把 JianTeX 在线版部署在自己的内网服务器上,团队成员的论文数据不出公司/学校网络,满足科研保密要求。
💡 一个典型场景:你在实验室的 macOS 上用桌面端写论文框架,出门开会时用 iPad 浏览器登录在线版修改措辞,回到宿舍打开 Windows 笔记本继续编译。项目始终是同一个,版本历史连续不间断。
多引擎设计
学术排版引擎领域有多条技术路线,JianTeX 的选择是——全部支持。同一份项目,可以在不同引擎之间一键切换,源码不需要修改。
Tectonic(LaTeX)
默认引擎这是一个用 Rust 重写的自包含 LaTeX 引擎。最大的好处是:你不需要手动安装 TeX Live。下载 JianTeX、打开项目、点击编译——Tectonic 会自动下载所需的宏包,不像传统 LaTeX 环境那样需要折腾几个小时配置环境变量和安装依赖。适合大多数 LaTeX 项目。
Typst
新生代Typst 是一种全新的排版语言,专为解决 LaTeX 的痛点而生。它的编译速度比 LaTeX 快数倍,语法更接近现代编程语言(清晰、简洁、一致),报错信息更容易理解。Typst 还内置了字体管理和图片支持,不需要额外包。如果你受够了 LaTeX 的慢速编译和莫名其妙的错误信息,试试 Typst 引擎。
XeLaTeX
中文首选通过 TinyTeX 侧载进程调用完整 TeX Live。原生支持 Unicode 和 系统字体,可以像 Word 一样直接使用你电脑上安装的任何字体。配合 fontspec、xeCJK 等宏包,中英文混排效果极佳。中文用户写论文的首选引擎。
LuaLaTeX
高阶玩家在 XeLaTeX 的基础上增加了 Lua 脚本扩展能力。你可以用 Lua 语言编写自定义命令、自动化处理、复杂表格生成等。如果你需要高定制化的排版逻辑(比如自动生成试卷、复杂的数据驱动图表),LuaLaTeX 是最好的选择。编译速度略慢于 XeLaTeX,但胜在灵活。
pdfLaTeX
经典兼容最经典的 LaTeX 编译方式,直接输出 PDF。大多数 arXiv 论文(2020 年以前)和许多老期刊模板默认使用 pdfLaTeX。虽然不支持直接使用系统字体,但兼容性极好,几乎所有宏包都能在 pdfLaTeX 下正常工作。
💡 引擎切换有多简单? 在项目设置里打开引擎下拉菜单,点选你要的引擎,然后点击编译。不需要修改任何代码。如果编译出错,换一个引擎再试就行了。
CRDT 实时协作
传统的"锁定-编辑-解锁"协作模式(一个人编辑时其他人不能改)在 LaTeX 写作中一直让人头疼。JianTeX 采用 CRDT(Conflict-free Replicated Data Type,无冲突复制数据类型)技术,实现了像 Google Docs 一样的多人实时编辑体验。
同时编辑同一位置
你和合作者可以同时修改同一段文字,CRDT 会自动合并所有人的改动,不会出现"冲突需要手动解决"的情况。
光标实时可见
每个人的光标位置和选中区域以不同颜色显示在编辑器中。谁在改哪里,一目了然——就像几个人同时在一张白纸上写字,各写各的互不干扰。
离线耐受
即使合作者断网了,他的本地修改不会丢失。重新联网后,CRDT 会自动同步并合并离线期间的所有改动,零冲突、零丢失。
底层基于 Yjs 框架 与 y-codemirror.next 适配器实现,通过 CodeMirror 6 编辑器提供流畅的编辑体验。协作数据流支持 WebSocket relay,可以部署在自托管服务器上,保证数据隐私。
版本管理
每次你按下保存(或 JianTeX 自动保存),系统会创建一个版本快照。你可以随时打开版本时间线,看到论文的每一个历史状态,一键恢复到任意时刻。
无感自动保存
不需要手动 commit,不需要输入提交信息,不需要理解任何 Git 概念。你只需要正常写作、正常保存,版本管理在后台静默工作。时间线上每一版都有自动生成的时间戳和内容摘要。
一键精准恢复
担心改坏了?担心删了不该删的?打开版本时间线,找到你还满意的那个版本,点击"恢复"。整个项目——不仅仅是当前文件——回到那一秒的状态。恢复操作本身也会创建一个快照,所以"恢复之后的后悔"也不存在。
底层是 Git,但你不必知道
版本存储引擎是 libgit2——Git 的核心库。这意味着你的版本历史不是存在私有数据库里,而是标准的 Git 仓库。如果你需要,随时可以用命令行 git 工具查看和操作。但正常情况下,你永远不需要面对 commit、branch、SHA 这些术语。
远程同步
配合自部署的 Gitea、GitLab 或任何 Git 服务器,版本历史可以自动推送到远端。电脑坏了、硬盘丢了——论文的安全感来自那里始终有一份完整的历史备份。