paper2tex — 学术论文 Word 转 LaTeX 转换器
将学术 .docx 文档转换为符合出版要求、可编译的 LaTeX 文档,并适配任何会议或期刊主题(IEEE、ACM、Springer LNCS、Elsevier、NeurIPS、ICML、CVPR、MDPI、Nature)。
强制性第 0 步:图片来源澄清
在执行提取流程之前,智能体必须始终询问用户:
"您是否有专用的
figures/文件夹,其中包含高分辨率或矢量图像(例如./figures),还是我应该直接从 Word 文档中提取嵌入的图像?(请回复文件夹路径或直接回复 'extract')"
- 如果用户回复
'extract':运行python -m scripts.extract input.docx work_dir/。流程将自动从.docx中提取、归一化并自动旋转所有嵌入的绘图。 - 如果用户提供文件夹路径(例如
./figures或C:/assets/figs):运行python -m scripts.extract input.docx work_dir/ --figures-dir <path>。流程会将您的高分辨率矢量文件(.pdf、.svg)和栅格文件(.png、.jpg,>= 300 DPI)与文档中的图形进行匹配。
快速开始
运行端到端提取和组装流程:
# 1. 验证系统工具链
python -m scripts.preflight
# 2. 提取内容、数学公式(OMML)、表格、图形和参考文献
python -m scripts.extract input.docx work_dir/ [--figures-dir <path>]
# 3. 应用目标会议主题(或分析自定义模板 zip)
python -m scripts.template_spec "ieee-conference" work_dir/
# 4. 组装 main.tex,包含模板感知的子图和无缝浮动体流
python -m scripts.assemble work_dir/
# 5. 编译并运行可视化质量验证
python -m scripts.compile work_dir/main.tex
python -m scripts.visual_qa work_dir/main.pdf work_dir/
工作流阶段
阶段 0: 图形询问 → 询问用户 figures/ 文件夹或 "extract" 确认
阶段 1: 预检查 → 检查 pandoc、tectonic/latexmk、lxml、Pillow、pymupdf
阶段 2: 预处理 → 删除修订标记、修复 Symbol 字体陷阱、映射域代码
阶段 3: 提取 → 并行提取 OMML 数学公式、表格、图形、参考文献
阶段 4: 主题规范 → 匹配配方(IEEE/ACM/LNCS)或通过 Firecrawl 研究
阶段 5: AST 组装 → 确定性组装,包含模板感知的子图和子浮动体
阶段 6: 编译循环 → 引擎选择(XeLaTeX/pdfLaTeX)+ 自动日志自动修复
阶段 7: 验证 → 清单差异 + 特殊字符审计 + 可视化质量保证
阶段 8: 交付 → submission/ 文件夹(.tex、.bib、figures/、.pdf、report.md)
核心架构保证
- 100% 逐字保留原文:将 Markdown AST 直接映射到 LaTeX。零段落遗漏、零改写、零文本修改。
- OpenXML 旋转与翻转归一化:准确解析
<a:xfrm rot="...">,防止图像侧倒或旋转。 - 模板感知的子图:对
IEEEtran使用\usepackage[caption=false,font=footnotesize]{subfig}配合\subfloat,对acmart/llncs使用subcaption。 - 子标题分解:将带有
(a)、(b)、(c)的复合标题拆分为单独的图题。 - 无缝浮动体流:在章节前消除破坏性的
\FloatBarrier注入。浮动体自然放置([!t]、[b]),无空白页。 - 确定性 OMML 数学公式:通过 MathML XSLT 将 Word 公式直接转换为 LaTeX —— 绝不通过 LLM 文本重发。
文档与参考
- 布局与浮动体规则:参见 LAYOUT_GUIDELINES.md,了解图形尺寸、子图几何和表格格式。
- 主题与 Firecrawl 研究:参见 THEMES_AND_TEMPLATES.md,了解会议配方和在线模板研究。
- 技术参考:参见 REFERENCE.md,了解提取内部原理、符号字体映射和编译器自动修复分类。
- 智能体指令:参见 AGENTS.md,了解分步智能体操作说明。
- 设置指南:参见 SETUP.md,了解平台特定设置(Antigravity、Claude Code、Cursor、OpenCode)。