小学英语默写练习(按单元 · 只留标题与表格)
1 输出结构
h1 译林版英语单词及知识点练习
h2 第三单元 Unit 3 Are you Su Hai?
p.part 第一部分 词汇默写
table 三栏表(本单元词汇)
p.part 第二部分 单元知识点填空
p.block 一、认识人物 table
p.block 二、短语 table
p.block 三、句型 table
(下一单元从 h2 起重复)
只有知识点、没有词汇时(如"只要词组和句型"),不写部分标题,h2 下直接排板块,避免出现孤立的"第二部分":
h2 第一单元 Unit 1 Good habits
p.block 一、词组 table
p.block 二、句型 table
硬性约束:
- 除上述标题与表格外,文档内不得有任何其它文字:不加姓名/班级行、使用说明、单元导语、部分导语、提示语、备注、订正提示、页码文字以外的装饰。
h1全文唯一,文字固定为译林版英语单词及知识点练习(与成品文件名一致);h2= 单元标题;p.part= 第一部分/第二部分;p.block= 板块(一、二、三…)。- 单元标题格式:
第三单元 Unit 3 Are you Su Hai?(中文序号 + 全角空格 +Unit N+ 教材单元名);无英文名时只写"第三单元"。 - 节标题格式:
第一部分 词汇默写/第二部分 单元知识点填空(固定文字,全角空格)。 - 多单元按单元号升序连续排列;练习卷不插目录。
2 内容规则
- 逐条照源图转录,不增删、不改写中文释义;保留
*核心词标记与(be动词)等注解。 - 两个来源并存,不合并去重:第一部分词语来自教材末页"各单元生词表",第二部分板块来自单元页。同一词(如
哈啰,你好)两处都出现是正常的,各自成表。 - 英文全部替换为横线。正文只允许 3 处出现拉丁字母:
h2单元标题里的Unit N/单元名、释义里的be动词、页脚数字。其余位置出现 A–Za–z 即不合格。 - 单元—内容一致:
h2是哪个单元,下面的表只能是该单元条目。 - 板块名—内容一致:
认识人物=人名/称谓,单词=单词,词组/短语=短语,句型=完整句。板块名逐字沿用源图,不互换。 - 缺页/看不清:留"待补"清单告知,不臆造。
3 表格
| 列 | 宽度 | 内容 |
|---|---|---|
| 序号 | 7% | 数字,居中 |
| 英文默写 | 55% | 全角下划线 _,居中 |
| 中文释义 | 38% | 中文,左对齐 |
- 横线:单词/人名 12 个 _;短语、句子、问答复合句 16 个 _。
- 每表
<thead>(3 个<th>带宽度)+<tbody>;每表序号从 1 开始。 - 一板块一表,不复用、不合并。
4 按需裁剪
只输出用户点明的单元/部分/板块;没提就全出。
- 砍部分 → 连该
p.part标题一起删;砍板块 → 连p.block标题一起删。 - 某单元两节都被砍 → 连
h2一起删。 - 只留知识点板块(无词汇)→ 部分标题一并删除,
h2下直接是p.block;只留词汇 → 保留第一部分 词汇默写。 - 用户点名的板块(如"只要词组和句型")优先于默认三板块,其余板块整块删。
- 留下的板块序号重排为一、二、三;表内序号同步重排。
- 不留空标题、不写"(略)"占位。
单元级缺料的三种情形,按此定:
| 情形 | 处理 |
|---|---|
| 有词表、无单元页(只有生词表页,或有单元页但没给) | 只出第一部分,单元不删(h2 保留) |
| 词表本身被页面截断(只露出开头几条) | 整单元不编入,在回复里说明缺页 |
某单元词表出现同形不同义的重复词(class 同学们/班级) |
两条都保留,按源图顺序 |
5 生成与校验
<plugin> = ~/.workbuddy/plugins/cache/workbuddy-builtin/workbuddy-docx/<version>
- 先转录成 JSON(
content.json,结构见scripts/build_worksheet.py文件头,样例assets/sample-3a-unit1-4.json):只写中文释义、单元号、板块名,横线由脚本按条目形态自动补(单词 12 个 _、短语/句子 16 个 _,可用{"t": "...", "w": "p"}覆盖)。 - 生成 HTML:
python scripts/build_worksheet.py --data content.json --out <html>。脚本末尾会打印现成的--units/--expect参数,直接抄给下一步。 - 门禁:
python <plugin>/skills/html-review/scripts/review_html.py --html <html> --genre general --require-page-furniture(须passed=true、总分 100)。 - 转换:
python <plugin>/skills/html-to-doc/scripts/convert_doc.py --html <html> --output <docx> --no-verify --require-page-furniture。 - 校验:
python scripts/verify_docx.py --docx <docx> --units 1,2,3,4 --expect "1:词汇=29;1:认识人物=12;…;4:词汇=9",退出码 0 才交付。
多单元用逗号列单元号,条数断言用分号按单元:板块=条数串联,须与实际转录一致。
需要保证"某单元必须有词汇"时加--require-vocab 1,3:缺第一部分 词汇默写直接报A4不通过(不给词表页的单元就别加)。
校验覆盖:多余文字(B0)、标题结构、板块名白名单、三栏表头/序号/英文列、英文残留、单元范围与条数。未通过按报文逐条修,不手改 docx。 present_files打开成品。
版式要点:正文宋体 12pt、A4、font-family 首项 "SimSun", "宋体";页脚页码用 @page { @bottom-center { content: "第 " counter(page) " 页"; } };字号/颜色走 var(--*);粗体用 font-weight: bold 字面值。
6 命名
- 成品 docx 一律命名
译林版英语单词及知识点练习.docx,与文档内h1完全一致;不因单元范围、册次、裁剪情况改名(单单元、多单元、只词汇、跨册汇总都同名)。 - HTML 中间产物可叫
worksheet.html;数据叫content.json。 - 交付路径
output/<request_id>/stage3/译林版英语单词及知识点练习.docx;重复生成直接覆盖(覆盖前close_file释放预览会话)。
7 排障:成稿里没有词汇(第一部分缺失)
词汇"凭空消失"只可能卡在三层,按顺序查,别直接改 docx:
| 层 | 检查点 | 症状 | 修法 |
|---|---|---|---|
| ① 数据 | content.json 的每个 unit 是否有 vocab 数组 |
build_worksheet.py 会向 stderr 打印"以下单元没有词汇条目" |
补 vocab(中文释义按词表顺序,短语用 {"t":..,"w":"p"}) |
| ② 渲染 | build_worksheet.py:vocab = u.get("vocab") or [],为空则整块 第一部分 不输出;if vocab: 才写 第二部分 标题 |
HTML 里没有 <p class="part">第一部分 |
同①;结构分支本身正确,不要去改模板 |
| ③ 校验 | verify_docx.py 是否带 --require-vocab |
少了词汇仍然 FAIL 0(合法裁剪与内容丢失同形) |
加 --require-vocab <单元号>,让缺失显性化 |
判断口径:用户明确要过词汇 → 必须有 vocab,并带 --require-vocab;用户明确只要知识点 → vocab 留空是正确裁剪,此时不要加该参数。词表页本身缺失/截断的单元(如整页被裁掉只剩 1 条)不编入,在回复里说明缺页。