docx-template-merger — 论文模板内容整合器
按 Word 模板的分节结构工作,而非简单追加:
- 覆盖占位:摘要 / Abstract / 结论 / 参考文献 / 致谢 —— 直接替换模板示例文字(保留节标题、页眉页脚、封面封底)
- 分章分节:每个正文章节文件新建独立分节,插入目录之后;页眉自动显示本章标题(克隆模板页眉,横线样式与位置完全一致)
- 附录:参考文献之后新建分节,页眉"附 录";自动写「附 录」一级标题(进目录),附录内部标题加 outlineLvl=9 不进目录
- csv 表格挂载:
--tables "表1-1=xxx.csv|英文题注"把 csv 表格自动插到表注下方,形成 中文表注(居中)→ 英文表注(居中)→ 表格 三行结构(txt 自带英文表注时优先使用,否则用|英文题注兜底;txt 只有英文表注时从 csv 文件名生成中文表注) - 三线表样式:所有表格(markdown 表格 / 挂载 csv / 附录表格)自动应用三线表边框 —— 顶线底线 1.5 磅、表头下线 0.75 磅、无竖线与内部横线,且表格整体水平居中(
w:jc center,置于 tblW 之后) - LaTeX 公式转 Word 公式:
$$...$$块公式(居中)与$...$行内公式(正文与表格单元格内)自动转成 Word 原生 OMML 公式,不再显示\frac等 LaTeX 源码(依赖 pandoc,脚本自动检测;无 pandoc 时降级为原文) - 正文格式与模板一致:正文段落自动加首行缩进 2 字符(
firstLineChars=200)与 20 磅固定行距(line=400 exact),表注/图注居中显示;三级/四级标题局部覆盖(x.y.z与x.y.z.w编号均按 h3 处理)为 段前 205 twips、段后 0(与正文紧贴)、行距 1.25 倍(line=300 auto,修正 heading 3 样式自带 1.35 倍行距+段后205 造成的间距偏大)。注:正文的 20 磅固定行距若需改为 1.25 倍+小四,在生成后用 lxml 批量转换(跳过 heading 样式段落) - 自动更新域:设置 updateFields,Word 打开时提示更新目录与页码
- 字体规范:所有正文、表注(中/英文)、图注、表格单元格的 run 自动设置
rFonts ascii/hAnsi=Times New Roman(数字/英文)+eastAsia=宋体(中文不变);标题沿用模板样式字体不动
何时调用
- 用户说"把 xx.txt/xx.csv/图片 整合/填入/导入 论文模板"
- 用户要求"替换模板示例文字/占位符"、"页眉对应章节标题"、"按模板生成 Word"
- 用户提供 docx 模板 + 章节文本文件
随包文件
本 skill 包含以下文件(zip 内 docx-template-merger/ 目录):
docx-template-merger/
├── SKILL.md # 本说明
├── templates/
│ └── 论文模板(带封面封底).docx # Word 论文模板(分节结构+页眉横线)
└── scripts/
└── merge_to_docx.py # 内容整合脚本
使用前把整个 docx-template-merger/ 目录放入 ~/.trae-cn/skills/(或对应 skills 目录),--template 指向 templates/ 下的模板文件即可。
标准命令
python3 scripts/merge_to_docx.py \
--template "templates/论文模板(带封面封底).docx" \
--output "论文成品.docx" \
--abstract "章节txt/00_摘要关键词.txt" \
--conclusion "章节txt/07_结论.txt" \
--references "章节txt/08_参考文献.txt" \
--appendix "章节txt/09_指标计算说明汇编.txt:1" \
--tables "表1-1=表1-1_xxx.csv,表2-1=表2-1_yyy.csv" \
"章节txt/02_第1章.txt" "章节txt/03_第2章.txt" ...
参数
| 参数 | 说明 |
|---|---|
--template |
Word 模板路径(必填;随 skill 包提供于 templates/ 目录) |
--output |
输出 docx(必填) |
--abstract FILE |
中文摘要,替换摘要节占位(首行与节标题重复自动跳过) |
--abstract-en FILE |
英文摘要,替换 Abstract 节占位 |
--conclusion FILE |
结论,替换结论节占位 |
--references FILE |
参考文献,替换示例文献 |
--acknowledgement FILE |
致谢,替换示例致谢 |
--appendix FILE[,FILE...] |
附录(多个逗号分隔),置于参考文献后;:N 后缀=该文件标题降N级;自动写「附 录」标题,内部标题不进目录 |
--tables "表X-X=csv路径[|英文题注]" |
csv 表格挂载(逗号分隔多个):写在正文「表X-X 表题」表注行下方,生成 中文表注(居中)→ 英文表注(居中)→ 表格;txt 已带英文表注(Table X-X ...)时优先用 txt 的;txt 只有英文表注时从 csv 文件名兜底生成中文表注;中文 表2-1/表 2-1 与英文 Table 2-1 均可触发;跨章自动匹配,结束后报告未挂载项 |
chapters...(位置参数) |
正文章节:每个文本文件 = 一章,按顺序插入目录后;每个文本文件后可跟同章的 csv/图片 |
--img-width 14.5 |
图片宽度 cm |
内容识别规则
文本(.md / .txt)
# / ## / ###与数字编号行(第4章 xxx、4.1 xxx、4.1.1xxx,编号后空格可有可无)→ 模板 heading 1/2/3 样式- 章文件第一个一级标题 = 页眉文本(自动)
- markdown 表格 → 三线表(表头加粗,单元格内
$...$也转公式);→ 居中图+自动题注;(空题注)→ 仅插图,配合 txt 中现成的图X-X/Fig.X-X图注行使用;**加粗**→ 加粗 $$...$$→ 居中块公式;正文/单元格内$...$→ 行内公式(均转 Word 原生公式)- 正文中
[数字]文献引用([1]、[1-3]、[1,2]、[5][6])自动转上标并生成 HYPERLINK 域(fldChar 结构):Ctrl+点击跳转到对应参考文献条目(WPS/Word 通用);编号 0 的数值区间(如[0,1])不识别为引用 - 行首
[n]的整行 = 参考文献条目:按模板格式输出(12磅 sz=24 + 1.25倍行距 line=300 auto,编号不上标,编号[n]后两空格),悬挂缩进按编号位数动态设置(1位=510/2位=640/3位=770 twips,等于编号宽+两空格宽),换行行与首行文献内容对齐且间距统一适中;并加书签_Ref{n}供正文引用跳转 表X-X 表题/Table X-X 表题/图X-X 图题/Fig.X-X行 → 居中表注/图注(无首行缩进)//开头的行(如// ===== 中文文献 =====分组标记)→ 注释行,不写入文档- 其余 → 正文:宋体10.5磅两端对齐 + 首行缩进2字符 + 20磅固定行距(line=400 exact)
csv / 图片
- csv → 三线表(表头加粗);图片 → 居中插图 +
图N 文件名题注;作为位置参数时并入前一章
分节与页眉机制
- 脚本解析模板全部 sectPr,按页眉文本定位:摘要/Abstract/目录/结论/参考文献/致谢
- 新章节分节符克隆自正文节(结论/摘要)的 sectPr —— docGrid(linePitch=359) 与模板正文一致,正文行距与标题段前段后不变形;不能克隆目录节(其 linePitch=388 是目录专用网格)
- 页眉母版克隆自"摘要"节页眉 → 横线样式(thinThickSmallGap/sz=24/space=4)与模板逐字节一致
- 模板致谢节若无自有页眉(继承上一节的缺陷),自动补"致 谢"页眉
验证过的输出结构
封面 → 声明 → 摘要 → Abstract → 目录 → 第1章…第5章(各自独立分节+页眉)→ 结论 → 参考文献 → 附录 → 致谢,共14节,全部页眉横线一致。
使用流程
- 确认模板与文件对应关系(摘要/结论/参考文献/附录/章节分开传参)
- 运行脚本,检查输出报告
- Word 打开 → 允许"更新域" → 目录页码自动生成