Word-like academic writing experience, LaTeX-native publishing quality.
TeXMind 是一个面向学术写作的开源全栈 Web 应用。它的目标不是把 LaTeX 暴露给终端用户,而是让用户以更接近 Word / WPS 的方式写作,同时保留 LaTeX 模板、排版与编译能力。
当前仓库已经从早期的「TipTap 富文本 + LaTeX 导出」形态,进入 TeXMind v2 重构阶段:
- 后端逐步以
AcademicDocument作为规范化文档模型 - 前端逐步从单体 Zustand store 迁移到
documentStore / workspaceStore / compileStore - 编译链路逐步从 legacy 保存/导出流程迁移到 template-aware 的 v2 pipeline
- UI 层正在从旧组件直连 store 的方式,迁移到 runtime / bridge / action 分层
- TipTap 学术编辑器:标题、段落、表格、图片、代码块、脚注、数学公式、引用等
- AI 写作助手:支持 OpenAI / Kimi / Claude
- PDF 实时预览、LaTeX 导出、Word 导出
- 多文档管理、版本快照、文献管理
- USTC 论文模板支持
- v2 后端文档语义层、校验与编译管线已接入仓库
- v2 前端运行时桥接层、状态拆分、回归测试已接入仓库
- 以
AcademicDocument作为长期 source of truth - 继续降低 legacy
useStore对组件层的直接耦合 - 把保存、自动保存、编译、文档切换等流程迁到 feature stores / bridges
- 为后续 Word-like 壳层(Ribbon、属性面板、语义对象编辑)打基础
- 基于 TipTap 的富文本编辑体验
- 行内/块级数学公式,KaTeX 渲染
- 文献引用、脚注、图片、表格、代码块
- 查找替换、章节导航、快捷键
- AI 审阅建议的接受 / 拒绝流程
- OpenAI / Kimi / Claude 多提供商支持
- SSE 流式输出
- 改写、润色、扩写、翻译、总结、推荐文献等快捷操作
- 自由指令对话模式
- PDF 编译预览
- LaTeX 项目导出
- Word 导出(需 pandoc)
- 模板驱动的排版与元数据配置
- 创建、切换、删除文档
- SQLite 服务端持久化
- localStorage 本地会话/缓存
- 版本快照恢复
TeXMind v2 的目标是把系统从“编辑器 JSON 为中心”重构为“语义文档模型为中心”:
- Canonical model:
AcademicDocument - Backend:
backend/app/domain/document/*backend/app/services/compiler/*backend/app/services/template_packs/*backend/app/routers/v2.py
- Frontend:
frontend/src/domain/document/*frontend/src/features/editor/state/documentStore.jsfrontend/src/features/workspace/state/workspaceStore.jsfrontend/src/features/compile-preview/state/compileStore.jsfrontend/src/features/v2/state/*frontend/src/components/**/**Runtime.js
相关设计文档位于:
docs/plans/2026-04-14-v2-execution-roadmap.mddocs/plans/2026-04-14-word-like-latex-refactor-plan.mddocs/architecture/academic-document-schema-v1.mddocs/architecture/document-domain-model.mddocs/architecture/template-engine.mddocs/architecture/workspace-lifecycle.mddocs/architecture/product-blueprint-word-like-academic-editor.md
| 层级 | 技术 |
|---|---|
| 前端框架 | Next.js 16 |
| UI | React 19 |
| 编辑器 | TipTap 3 |
| 状态管理 | Zustand 5 |
| PDF 渲染 | pdfjs-dist 5 |
| 数学渲染 | KaTeX |
| 后端框架 | FastAPI |
| 数据库 | SQLite / aiosqlite |
| 文献解析 | bibtexparser |
| LaTeX 编译 | XeLaTeX + latexmk |
| Word 导出 | pandoc |
.
├── backend/
│ ├── main.py
│ ├── requirements.txt
│ ├── pytest.ini
│ └── app/
│ ├── config.py
│ ├── database.py
│ ├── models.py
│ ├── domain/document/ # v2 文档语义模型、normalize、validate
│ ├── routers/
│ │ ├── ai.py
│ │ ├── bibliography.py
│ │ ├── convert.py
│ │ ├── documents.py
│ │ ├── templates.py
│ │ ├── upload.py
│ │ └── v2.py # v2 normalize / validate / compile API
│ └── services/
│ ├── ai_providers.py
│ ├── latex.py
│ ├── compiler/ # v2 编译管线 / template IR
│ └── template_packs/ # 模板包抽象
│
├── frontend/
│ ├── package.json
│ ├── src/
│ │ ├── app/
│ │ ├── components/
│ │ │ ├── Editor/
│ │ │ ├── Sidebar/
│ │ │ ├── AIPanel/
│ │ │ ├── PdfPreview/
│ │ │ ├── Toast/
│ │ │ └── VersionHistory/
│ │ ├── domain/document/ # v2 前端文档 schema / normalize / validate
│ │ ├── features/
│ │ │ ├── editor/state/
│ │ │ ├── workspace/state/
│ │ │ ├── compile-preview/state/
│ │ │ └── v2/
│ │ ├── lib/
│ │ ├── store/useStore.js # legacy store(仍在迁移中)
│ │ └── styles/
│ └── tests/ # 前端运行时 / bridge / store 回归测试
│
├── docs/ # v2 规划与架构文档
├── output/ # 编译输出
├── ustcthesis-master/ # 内置 USTC 模板来源
├── docker-compose.yml
└── README.md
- Node.js >= 18
- Python >= 3.10
- TeX Live(可选,用于 PDF 编译)
- pandoc(可选,用于 Word 导出)
git clone https://github.com/Sunnnnch/TeXMind.git
cd TeXMindcp backend/.env.example backend/.env然后编辑 backend/.env,至少配置一个 AI 提供商的密钥:
OPENAI_API_KEY=***
KIMI_API_KEY=***
CLAUDE_API_KEY=***cd backend
pip install -r requirements.txt
python main.py后端默认地址:http://localhost:8000
cd frontend
npm install
npm run dev前端默认地址:http://localhost:3000
docker compose up --build| 方法 | 路径 | 功能 |
|---|---|---|
| POST | /api/convert |
编辑内容转 LaTeX |
| POST | /api/save |
保存项目 |
| POST | /api/export |
导出 LaTeX ZIP |
| POST | /api/export-word |
导出 Word |
| POST | /api/compile |
编译 PDF |
| GET | /api/pdf |
获取 PDF |
| POST | /api/upload |
上传图片 |
| POST | /api/ai |
AI 写作助手 |
| GET | /api/templates |
列出模板 |
| POST | /api/templates/import |
导入自定义模板 |
| POST | /api/documents |
创建文档 |
| GET | /api/documents |
列出文档 |
| 方法 | 路径 | 功能 |
|---|---|---|
| POST | /api/v2/documents/normalize-legacy |
把 legacy payload 规范化为 AcademicDocument |
| POST | /api/v2/documents/validate |
校验 v2 文档 payload |
| POST | /api/v2/compile |
走 v2 编译管线生成模板源码/编译结果 |
cd backend
pytest -qcd frontend
npm test当前仓库中,v2 重构相关测试已覆盖:
- 文档 normalize / validate
- 保存 / 自动保存 / 编译流程
- Sidebar / Editor / AI / 预览等 runtime 行为
- feature stores 与 legacy 兼容桥
frontend/src/store/useStore.js仍然存在,但已不应再作为长期架构核心- 新功能应优先落到
AcademicDocument、feature stores、runtime / bridge 层 - 避免继续把复杂逻辑直接堆回 legacy page/component + monolithic store
docs/下的 v2 规划与架构文档应作为后续演进依据
MIT