我的周测和章节练习
把「题库 + 答案 + Word 模板」变成可直接打印的周测卷或小节练习题。
命题只能取材于题库与答案,不得自行编造。
目录
prompts/01_单选题.md 单选命题提示词
prompts/02_填空题.md 填空命题提示词
prompts/03_简答题.md 简答命题提示词
prompts/04_周测卷.md 周测卷组装提示词
prompts/05_章节练习题.md 章节练习组装提示词
scripts/run.py 一键流水线(抽取 → 体检 → 渲染 → 复核)
scripts/extract_bank.py 题库/答案 → Markdown
scripts/check_spec.py spec.json 渲染前体检
scripts/render.py spec.json → 套模板 docx
scripts/verify.py 成品校验(题量/空数/横线/分页/行宽/查重)
references/spec_schema.md spec.json 结构
examples/ 可直接跑的示例 spec
何时用
- 用户给了题库 docx(+答案 docx)和模板 docx,要求出卷
- 要求「严格按模板格式」「题号/字体/行距/页边距沿用模板」
- 要求题型配比(如单选 25+填空 20 空+简答 3=100 分)或「每节一页」
流程(按序执行)
0. 判断类型,加载组装提示词
- 要周测卷 → 读
prompts/04_周测卷.md - 要章节/小节练习题 → 读
prompts/05_章节练习题.md
1. 抽取题库
python scripts/run.py --bank "<题库.docx>" --answer "<答案.docx>" --work ./build
产出 build/bank.md。认真通读,掌握全部知识点与标准答案。
2. 按题型逐个命题(关键:一题型一提示词)
依次加载并执行对应提示词,不要混着生成:
1. prompts/01_单选题.md → 命制全部单选 → 写入 parts[type=choice]
2. prompts/02_填空题.md → 命制全部填空 → 写入 parts[type=blank]
3. 需要简答时 prompts/03_简答题.md → 写入 parts[type=essay]
4. 汇总 answer:选择答案表、填空逐空答案、简答要点与评分建议、解析
写成 spec.json(结构见 references/spec_schema.md,可照抄 examples/第一章_章节练习_spec.json)。
3. 渲染 + 复核(一条命令)
python scripts/run.py --spec spec.json [--outdir <输出目录>]
自动完成:体检 spec(选项数/答案数/占位符/重复/行宽)→ 套模板渲染 → 校验成品。
体检或校验不通过就改 spec.json 重跑,不要直接交付。
排版铁律
- 选项一律另起一行:题干一行 + 四选项一行(缩进两格);放不下转 AB/CD 两行;再放不下四行。
不要再拼到题干后面。 - 模板多为双栏(B4 横向 36.4×25.7cm,单栏 ≈14.8cm ≈34 个全角字,每栏 35 行,整页约 70 行)。
行宽必须按单栏算;按整版心(约 70 字)算会让每行都被 Word 折行。渲染器已按模板栏数自动计算。 - 填空待填处用
{0}占位,渲染时统一换成等长横线__________。 - 参考答案自动另起一页,大题序号(一/二/三/四)按实际答案块推算。
- 题内、题间不留多余空行;分值写在大题标题里,不在每题后重复标注(用户另有要求除外)。
约定
- 默认输出桌面;文件名按用户要求(如
第X节练习题(知识点).docx、第X章周测卷.docx)。 - 题号默认在各题型内重新编号;用户要求全卷连续编号时再改。
- 默认不写占位提示文字、不每题标注分值。
- 连续出多套卷时要避开此前已出过的题目。
- 目标 docx 被 Word/WPS 占用时先写
xxx__tmp.docx再替换,失败要提醒用户关闭文档。 - 生成脚本和 spec.json 留在工作区,方便改题后重跑。
依赖
python-docx。缺失时安装:
"C:\Users\admin\.workbuddy\binaries\python\versions\3.13.12\python.exe" -m pip install python-docx