Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Exam Review Assistant / 硬核期末复习助手

Python Typst License

English: A professional exam review material generator powered by the Typst typesetting engine. Deep-dive into core concepts, curate advanced problems from top universities, and generate beautifully typeset PDF review materials.

中文: 基于 Typst 排版引擎的专业期末复习资料生成工具。深度提取核心考点,搜集并升维顶尖大学考题,生成高质量 PDF 复习资料。


Features / 核心特性

  • Deep Concept Analysis / 硬核知识点提取: Not just listing concepts, but digging into derivations, boundary cases, and classic counterexamples
  • Problem Elevation / 高阶题目升维: Transform simple calculation problems into rigorous proof questions with multi-concept integration
  • Professional Math Typesetting / 专业数学排版: Powered by Typst — perfect formula rendering (not the low-quality output of fpdf2)
  • Dual Output Modes / 双模式输出: Full version (with detailed solutions) + Practice version (hidden answers for self-testing)
  • Three-Level Classification / 三级考点分类: [CORE] Core Battle / [KEY] Key Consolidation / [BROWSE] Quick Browse

Demo / 效果预览

Generated review material for University Physics — Thermodynamics First Law:

  • 34 pages of professional typesetting
  • 15 problems ranging from proof (7) to synthesis (3) to analysis (3)
  • Difficulty distribution: Challenging (6-7pts) 6 / Advanced (8-10pts) 8 / Medium (4-5pts) 1
  • Math formulas perfectly rendered with numbered equations, derivation steps, and colored concept boxes

Workflow / 工作流程

Document Parse -> Core Concept Extraction -> Problem Curation & Elevation
    -> Typst Typesetting -> PDF Compilation

Step 1: Core Concept Extraction / 核心知识点提取

Analyze textbooks/lecture notes to extract:

  • Complex derivation and proof processes
  • Boundary cases and limit conditions
  • Classic counterexamples
  • Deep connections between concepts
  • Frequent trap points from past exams

Step 2: Problem Curation & Elevation / 高阶题目搜集与升维

Search strategies:

  • site:.edu filetype:pdf "subject" "final exam"
  • github.com subject exam problems
  • MIT subject problem set, Caltech subject exam

Elevation techniques (when original problems are too simple):

  • Calculation problem → rigorous proof problem
  • Single concept → multi-concept integration
  • Add boundary condition analysis
  • Require counterexample construction

Step 3: Typst Typesetting / 专业排版

Generated .typ source file structure:

review.typ
|-- Cover (subject + date + statistics)
|-- Table of Contents
|-- Part 1: Review Outline (quick reference table)
|-- Part 2: Core Concept Deep Dive
|   |-- Concept definitions & formulas
|   |-- Key derivation steps
|   |-- Boundary case analysis
|   |-- Classic counterexamples
|   |-- Common pitfalls
|-- Part 3: Advanced Problems
|   |-- Difficulty-zoned (challenging / advanced / top-tier)
|   |-- Each problem: Question → Key Insight → Solution → Common Mistakes
|   |-- Practice mode (hidden solutions)
|-- Part 4: Review Strategies
|-- Appendix: Formula sheet + statistics

Installation / 安装

1. Install Typst Compiler

Windows (recommended):

winget install --id Typst.Typst

macOS:

brew install typst

Linux: Download from GitHub Releases.

Verify:

typst --version
# typst 0.14.2

2. Install Python Dependencies

pip install -r requirements.txt

Usage / 使用方法

Method 1: Use as Claude Code Skill / 方式一:Claude Code Skill

Place exam-review.md in your .claude/skills/ directory, then invoke:

/exam-review

Or simply provide a document and ask:

请用 exam-review skill 帮我生成热力学复习资料

Method 2: Manual Script Execution / 方式二:手动执行脚本

1. Parse Document / 解析文档:

python scripts/parse_document.py examples/thermodynamics/source_textbook.pdf \
    --output extracted.txt

2. Prepare Review Data / 准备复习数据:

See examples/example_review_data.json for the data structure. Key fields:

{
  "subject": "Subject Name",
  "date": "2026-06-05",
  "core_priority": [{
    "title": "Topic Name",
    "content": "Core concepts (Typst math syntax $...$ supported)",
    "derivation": "Derivation process",
    "boundary_cases": "Boundary analysis",
    "counterexamples": "Classic counterexamples",
    "pitfalls": "Common traps",
    "connections": "Links to other topics",
    "formula": "Related formulas",
    "questions": [{
      "question": "Problem content",
      "source": "Problem source",
      "elevated": true,
      "elevation_note": "Elevation description",
      "score": 8,
      "type": "proof/synthesis/analysis/calculation/short-answer",
      "solution": "Detailed solution",
      "key_insight": "Key solving idea",
      "common_mistakes": "Common errors"
    }]
  }],
  "key_priority": [...],
  "browse_priority": [...],
  "strategies": ["Strategy 1", "..."]
}

3. Generate PDF / 生成 PDF:

# Full version (with solutions)
python scripts/generate_review_typst.py \
    examples/thermodynamics/review_data.json \
    --output review_output/

# Practice version (hidden answers)
python scripts/generate_review_typst.py \
    examples/thermodynamics/review_data.json \
    --output review_output/ --practice

Output files:

  • review_output/review_subject_date.typ — Typst source (editable)
  • review_output/exam_review_subject_date.pdf — Final PDF

Project Structure / 项目结构

.
├── exam-review.md                  # Claude Code skill definition
├── README.md                       # This file
├── requirements.txt                # Python dependencies
├── .gitignore                      # Git ignore rules
├── scripts/
│   ├── generate_review_typst.py   # Main Typst PDF generator (core)
│   ├── parse_document.py           # Document parser (PDF/DOCX/TXT/IMG OCR)
│   └── generate_review_pdf.py     # Legacy fpdf2 generator (deprecated)
├── examples/
│   ├── example_review_data.json   # Minimal example data structure
│   └── thermodynamics/             # Full example: Thermodynamics
│       ├── review_data.json        # Complete review data
│       ├── source_textbook.pdf     # Source textbook chapter
│       └── README.md               # Example documentation
└── review_output/                  # Generated outputs (gitignored)

Typst Math Syntax Quick Reference / 数学语法速查

Content Typst Syntax
Inline math $x^2 + y^2 = z^2$
Display (numbered) $ E = m c^2 $ (spaces around)
Fraction $a/b$ or $frac(a, b)$
Subscript $x_i$, $x_(i j)$
Superscript $x^2$, $x^(a+b)$
Root $sqrt(x)$, $root(3, x)$
Summation $sum_(i=1)^n a_i$
Integral $integral_a^b f(x) dif x$
Limit $lim_(x -> 0) sin(x)/x = 1$
Greek letters $alpha, beta, Gamma, delta$
Partial derivative $partial f / partial x$
Differential $dif x$ (predefined in script)

Full reference: Typst Math Documentation


Version History / 版本历史

  • v2.0.0 (2026-06-05): Upgraded to Typst typesetting engine; added problem elevation mechanism; enhanced derivation proofs, boundary analysis, counterexample construction; supports practice mode
  • v1.0.0 (2025-06-05): Initial version using fpdf2 for PDF generation

License / 许可证

MIT License

About

As is named

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages