# Math Practice Generator

> 分析小学数学错题的本质问题（倒数翻错、乘除混淆、不约分、口算不写过程等），支持照片、PDF、Word、粘贴文本四种输入形式，输出中文分析与针对性例题指导，并生成A4可打印强化练习卷HTML（含多类型例题、易错警示框、充足书写空间、未约分分数混入、打印颜色优化）。当用户发送错题照片或错题文件（pdf/docx/doc/txt）、提到错题分析、错题重练、强化出题、生成练习卷时使用。

- Skill: `xianyanyang/math-practice-generator` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add xianyanyang/math-practice-generator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/xianyanyang/math-practice-generator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: xianyanYang (https://skillmd.com/u/xianyanyang)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/xianyanyang/math-practice-generator

---


# 错题分析与强化出题

## 使用流程

1. **读取错题**：按下方"输入形式"处理，统一得到"题目＋孩子的错误答案"清单。
2. **归类错误**：按下表分类统计，找出占比最高的本质问题。
3. **输出分析**：用中文 numbered 列表写"本质问题"，每条引用具体错题佐证。
4. **生成练习卷**：按下方规格生成 A4 HTML 强化卷（骨架见 [template.html](template.html)）。
5. **验证交付**：校验题量/div 平衡/页数 → 用绝对路径 `open` 打开 → 中文汇报。

## 输入形式（四种都支持）

| 形式 | 处理方式 |
|---|---|
| 粘贴文本 | 直接归类 |
| 照片/截图 | Read 读图，逐题转录"题目＋错答" |
| Word（.docx/.doc） | `textutil -convert txt -stdout "绝对路径"` 提取文字后归类（macOS 自带） |
| PDF 文字版 | `pdftotext "绝对路径" -`；无 pdftotext 则 `python3 -c "import pypdf;[print(p.extract_text()) for p in pypdf.PdfReader('绝对路径').pages]"` |
| PDF 扫描版/提取失败 | `sips -s format png "绝对路径.pdf" --out /tmp/wrong.png` 转图片后读图（sips 只转第一页；多页请用户发截图或粘贴文字） |

注意：路径一律用绝对路径（某些沙箱环境下相对路径/glob 会失败）；提取后若题目不完整，先向用户确认缺失部分再出题。

## 错误归类表

| 类型 | 特征 | 卷上对策 |
|---|---|---|
| 倒数翻错 | 除法翻了被除数／两边都翻／没翻 | 红色警示框"只翻除数不翻被除数"＋正误对比＋过渡式要求 |
| 乘除混淆 | 除法题按乘法算 | 做题要求①先圈 × 或 ÷ 符号 |
| 不约分/结果不最简 | 答案对但未约到底 | 例题"先约分再算/乘完再约分"＋自查清单 |
| 口算不写过程 | 只有答案无式子 | 要求写过渡式子，.proc 留足书写空间 |
| 未约分原分数处理弱 | 遇到 6/8 这类直接大数硬乘 | 约1/3题目混入未约分分数＋例题示范先约分 |

## 练习卷规格

- A4：`@page { size: A4; margin: 14mm 16mm; }`，`.page { page-break-before: always; }`
- 每套 **3 页 40 题**：第1页＝法则tip＋3类例题＋警示框(除法卷)＋10题；第2、3页各15题＋鼓励/口诀条＋末页自查tip
- 书写空间：`.calc-grid2.proc > div { min-height: 96px; border-bottom: 1px dashed #dcdcdc; }`
- 分数样式：`.frac/.top/.bot`；约分用 `<s>` 划掉＋下标小数字（如 `<s>8</s>₂`）
- 打印优化：`@media print` 内 `print-color-adjust: exact` ＋ 各框加深底色
- 顶部只留 **姓名/日期/用时**（不要得分栏，除非用户要求）
- 做题要求4条：①圈符号 ②能约分先约分 ③除法写变倒数过渡式 ④未约分分数先约分
- **不生成答案卷**，除非用户明确要求
- 编号【专项N】接续用户已有编号序列；首次出题从①开始

## 例题要求（每套3类）

- 乘法卷：①能约分→先约分；②不能约分→先乘再约分（假分数化带分数）；③原分数没约分→先约分再算
- 除法卷：①标准变倒数过渡式；②被除数/除数没约分；③乘完再约分；**另加红色 .warn 警示框**：只翻除数不翻被除数，配正误对比

## 验证与交付

- `grep -oE '<div>[0-9]+\.' 文件 | wc -l` ＝40；`<div` 与 `</div>` 计数相等；`class="page"` ＝3
- 文件名含 ×÷ 等特殊字符时 shell glob 会失败，一律用**绝对路径** `open "/完整路径/文件名.html"`
- 中文汇报：本质问题分析＋改造对照表＋打印提示（勾选"背景图形"，⌘+P）

## 主题色参考

蓝 #1a5276/#2e86c1 · 绿 #196f3d/#27ae60 · 橙 #873600/#d35400 · 紫 #5b2c6f/#884ea0 · 玫红 #b5477f · 靛紫 #5b3fa0

