docx — Word 文档读写与打包
何时使用
- 把
paper.md转换为paper.docx。 - 读取用户上传的
.docx题目。 - 需要参考模板、图片嵌入、公式对象或表格保真。
优先链路
- 宿主
docxskill。 pandoc直调。python-docx兜底。
Markdown 转 DOCX
pandoc paper.md `
--from gfm+tex_math_dollars+pipe_tables `
--to docx `
--output paper.docx `
--resource-path .
有参考模板时追加:
--reference-doc <template.docx>
DOCX 转文本
优先使用宿主 docx skill。没有宿主能力时,用 python-docx 提取段落和表格,再写成 Markdown 友好文本。
产出要求
- 输出文件默认与
paper.md同目录:paper.docx。 - 图片必须嵌入,不保留失效本地链接。
$...$与$$...$$尽量转换为 Word 可编辑公式;失败时保留原始 LaTeX 文本并写诊断。
对象级验收
DOCX 不是“文件存在就合格”。转换后必须把 .docx 当 zip 解包检查:
word/document.xml必须存在且可读取。- 公式验收:统计
m:oMath/m:oMathPara。若paper.md有公式但 DOCX 中 公式对象数为 0,formal 模式失败。 - 图片验收:统计
word/media/*。Markdown 图片引用数不得超过嵌入图片数; 缺图必须列出文件名。 - 表格验收:统计
w:tbl。Markdown 表格应转换为 Word 表格对象;未转换时至少 降级为 warning,formal 视严重程度阻塞。 - LaTeX fallback:统计
word/document.xml中残留$...$。formal 模式下残留 公式文本不得直接标为通过。
EZMM 内置 scripts/runtime/audit_export.py 会执行上述检查,生成
export_audit.json 与 export_audit.md。
失败诊断
| 情况 | 处理 |
|---|---|
| 宿主 skill、pandoc、python-docx 都不可用 | 保留 paper.md,在 diagnostics.md 写缺失工具 |
| 公式渲染异常 | formal 模式阻塞正式发布;demo 模式保留 LaTeX 文本并降级 |
| 图片路径错误 | 检查 Markdown 相对路径和 --resource-path |