技术架构

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 服务器,版本历史可以自动推送到远端。电脑坏了、硬盘丢了——论文的安全感来自那里始终有一份完整的历史备份。