科研报告-ZM
功能
给定一个包含科研图表(PDF/TIFF/PNG)和 description.txt 的文件夹路径,自动生成一份完整的中文 .docx 科研报告。
触发方式
/科研报告 <文件夹路径>
也响应自然语言触发:如"把这个文件夹的图整理成报告""在这个文件夹生成一份科研报告""写一份分析报告把图都用上"等。
执行流程
1. 读取输入
- 扫描文件夹,读取
description.txt(包含图表说明、数据来源、方法描述) - 优先使用 PDF/TIFF 等矢量图(不使用 SVG),按文件名排序收集(
fig_a_a.pdf,fig_a_b.tiff...) - 若仅有 PNG 等位图,暂停并询问用户是否继续生成(矢量图缩放无损,报告质量更高)
- 如无 description.txt,仅插入图片,分析文字用占位符
2. 生成脚本
在目标文件夹中创建 gen_report.py,该脚本:
- 使用
python-docx生成 .docx - 内嵌完整的上下标自动转换逻辑(见
references/format_spec.md中的核心代码) - 按某985高校博士论文模板设置页面、字体、标题层级
3. 报告结构
封面(标题/副标题/版本/日期)
摘要 + 关键词
第1章 引言(背景/动机/分析目标)
第2章 方法简述(数据来源/分析方法/工艺约束)
第3章 结果与讨论
3.1 参数A对各目标指标的单因素影响(每图+分析段)
3.2 参数B对各目标指标的单因素影响(每图+分析段)
第4章 综合讨论(影响分工/目标冲突/非线性效应/工程启示)
第5章 结论与展望
4. 格式规范
严格按照 references/format_spec.md 中的某985高校博士论文模板设置:
- A4/版心160×247mm/左边距3.5cm
- 宋体小四(12pt)+Times New Roman,1.5倍行距
- 黑体标题,章节编号"第X章"
- 图题"图X.Y 标题",居中
5. 上下标处理
详见 references/format_spec.md 核心代码部分。关键函数:
- _convert_unicode_ss() — Unicode上下标字符 + αk模式 → <sub>/<sup> 标记
- _parse_markers() — 标记文本 → (text, is_sub, is_sup) 元组
- _add_rich_run() — 向段落添加文本,自动拆分 run 并设 font.subscript/superscript
6. 写作约束
详见 references/writing_rules.md。关键点:
- 中文撰写,学术语体
- 禁用"解耦"、"耦合"——改用"单因素影响"、"工艺分工"、"关联"、"协同"
- 每张图配一段独立分析,先报 r/p 值再解释机理
- 每组图末有一段小结
7. 版本管理
- 检测文件夹中已有最高版本号,新报告递增(v1→v2→v3...)
- 旧版 .docx 保留不删
gen_report.py留存文件夹内,可重复执行
红线:图不能少
生成报告时必须嵌入文件夹内的全部图件,不允许选择性嵌入或仅嵌一种格式。
- 同一指标的三种格式(hexbin / contourf / 3D surface)必须全部嵌入
- 单因素面板的独立图 + 合并总览图必须全部嵌入
- 报告代码中 break 等提前退出循环导致漏图 → 严重错误
- 生成后打印 Images embedded: N,N 必须等于文件夹内图件总数
- 缺失格式(如 contourf 目录为空)→ 自动补生成,不得跳过
Why: v3 初版仅嵌入 25/39 张图,contourf 和 surface 被 break 跳过、且两个目录文件未生成(前序脚本中途崩了)。用户明确要求记入 skill 防止再犯。
注意事项
- 如果没有 description.txt,脚本仅嵌入图片和章节框架,分析文字用
[请填写]占位 - 图片优先使用 PDF/TIFF 矢量格式嵌入;仅 PNG 位图时会先询问用户是否继续
- 脚本执行超时设 180s(大图片较多时需要)
- 生成完成后打印文件路径和关键统计(图片数、字数、上下标数量)