Skip to content

Sunnnnch/TeXMind

Repository files navigation

TeXMind

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 前端运行时桥接层、状态拆分、回归测试已接入仓库

正在推进中的 v2 重构方向

  • AcademicDocument 作为长期 source of truth
  • 继续降低 legacy useStore 对组件层的直接耦合
  • 把保存、自动保存、编译、文档切换等流程迁到 feature stores / bridges
  • 为后续 Word-like 壳层(Ribbon、属性面板、语义对象编辑)打基础

功能概览

编辑器

  • 基于 TipTap 的富文本编辑体验
  • 行内/块级数学公式,KaTeX 渲染
  • 文献引用、脚注、图片、表格、代码块
  • 查找替换、章节导航、快捷键
  • AI 审阅建议的接受 / 拒绝流程

AI 助手

  • OpenAI / Kimi / Claude 多提供商支持
  • SSE 流式输出
  • 改写、润色、扩写、翻译、总结、推荐文献等快捷操作
  • 自由指令对话模式

编译与导出

  • PDF 编译预览
  • LaTeX 项目导出
  • Word 导出(需 pandoc)
  • 模板驱动的排版与元数据配置

多文档与持久化

  • 创建、切换、删除文档
  • SQLite 服务端持久化
  • localStorage 本地会话/缓存
  • 版本快照恢复

v2 架构要点

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.js
    • frontend/src/features/workspace/state/workspaceStore.js
    • frontend/src/features/compile-preview/state/compileStore.js
    • frontend/src/features/v2/state/*
    • frontend/src/components/**/**Runtime.js

相关设计文档位于:

  • docs/plans/2026-04-14-v2-execution-roadmap.md
  • docs/plans/2026-04-14-word-like-latex-refactor-plan.md
  • docs/architecture/academic-document-schema-v1.md
  • docs/architecture/document-domain-model.md
  • docs/architecture/template-engine.md
  • docs/architecture/workspace-lifecycle.md
  • docs/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 导出)

1. 克隆项目

git clone https://github.com/Sunnnnch/TeXMind.git
cd TeXMind

2. 配置后端环境变量

cp backend/.env.example backend/.env

然后编辑 backend/.env,至少配置一个 AI 提供商的密钥:

OPENAI_API_KEY=***
KIMI_API_KEY=***
CLAUDE_API_KEY=***

3. 启动后端

cd backend
pip install -r requirements.txt
python main.py

后端默认地址:http://localhost:8000

4. 启动前端

cd frontend
npm install
npm run dev

前端默认地址:http://localhost:3000

5. 使用 Docker(可选)

docker compose up --build

主要 API

Legacy API

方法 路径 功能
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 列出文档

v2 API

方法 路径 功能
POST /api/v2/documents/normalize-legacy 把 legacy payload 规范化为 AcademicDocument
POST /api/v2/documents/validate 校验 v2 文档 payload
POST /api/v2/compile 走 v2 编译管线生成模板源码/编译结果

测试

后端

cd backend
pytest -q

前端

cd 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

About

一个面向学术论文写作的开源全栈 Web 应用,集成所见即所得编辑器、AI 写作助手、LaTeX 导出、PDF 实时预览与多文档管理功能。采用 Overleaf 式左右分栏布局,左侧编辑、右侧实时预览 PDF 排版效果。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors