Skip to content
xiaoming-kunPublic

About

本地高中数学题库 + 组卷系统:检索 → 组卷 → 导出 → 讲义。题目用 LaTeX、界面用 KaTeX;数据全在本机,题库数据不公开(仓库只含代码、4 道自编 demo 与完整 152 考点大纲)

Topics

Resources

Stars

9 stars

Watchers

1 watching

Forks

Repository files navigation

AmTiKu · 高中数学题库与组卷系统

本地运行的高中数学题库:检索 → 组卷 → 导出,全部数据在本机,不上传任何服务器。 后端 Python(自研 HTTP 服务),前端 React + TypeScript,题目用 LaTeX 描述、界面用 KaTeX 渲染。

一、现在有什么

数量
题目 30,040 道(高考真题汇编 13,243 · 模拟题 16,797)
年代 1991–2027
题型 单选 13,062 · 多选 2,346 · 填空 6,490 · 解答 8,142
答案 30,040 道(100%)
解析 30,040 道(100%)
配图 2,883 道有图(3,631 处引用)
考点 152 个考点全部有题(课标体系,见 demo数据/知识点.json)

本仓库只含代码:上面这份题库不公开,仓库里只有 4 道自编 demo 题 + 完整考点大纲。

需要题库数据?

真实题库(含全部真题与模拟题、答案与解析)不公开、也不随代码授权。 如需购买或授权使用,加 QQ:3138046922 联系作者。

二、界面一览

工作台:左栏全局导航 + 中间筛选面板 + 右侧题目列表 —— 题目列表永远占满剩下的宽度。

界面截图不随仓库发布:那些图是实拍,画面里就是真题原题与答案。 想看界面,跑起来就是(见下面「快速开始」)。

⌘K 命令面板:19 项入口与动作一个框全包,支持拼音(daochu → 导出); 搜不到东西时回车直接把词丢给题库搜索。

  • 左栏是全局导航:工作流(工作台 / 录题 / 知识点)+ 组卷输出(智能组卷 / 试卷管理 / 回收站 / 变更记录),每项都挂一个单键快捷键 (W I K B P R C)
  • 筛选面板按章节 → 节 → 152 个考点收题,点击即筛;还能按「缺答案 / 缺解析」找活。 不筛题时可以把它收起来,题目占满全宽
  • 列表卡片自带来源、考点、难度、齐全度,以及可展开的答案与解析(不用点进详情就能 判断这题能不能直接印);选择题还有选项两列预览
  • 当前卷子住在题目栏顶部那一条里(「已选 N 题 · 多少分 · 有解析几道」),点一下就在同一栏里 切成卷子视图——没有第三个栏目,所以题目永远占满剩下的宽度
  • 题目详情是按需滑出的抽屉(卡片右上角那个按钮打开,Esc 关掉):改答案、改解析、改考点、 看原始 LaTeX 源码都在这儿,不看不占地方
  • 做错了能退:加题、移出、清空卷子都会给一条带撤销的提示(Gmail 那种), 所以「清空卷子」不再需要点两下确认
  • 组卷:高考卷(按真卷结构 8+3+3+5 排布)/ 纯测试卷 / 考点覆盖卷, 留空版可直接给学生作答

更多截图与逐页说明见 docs/功能介绍.md,常见问题见 docs/常见问题.md。

三、快速开始

方式一:下载发布包(推荐)

到 Releases 下载,解压后先双击一次 安装环境.bat(Windows)——自动找 Python(没有就装包里自带的)、建环境、装依赖。 已经就绪时它会直接退出,什么都不装,所以重复双击也没事。 之后每次打开双击 启动.bat 即可(macOS 是 启动 AmTiKu.command): 放 demo 数据、起服务并打开浏览器(关掉页面服务自动退出)。

两个脚本职责分开:安装环境.bat 只管环境(一次性),启动.bat 只管启动 —— 后者里一行找 Python 的代码都没有,缺环境就叫你先跑前者。

方式二:从源码跑

python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
cp -R demo数据/题目 ./题目 && cp -R demo数据/图片 ./图片 && cp demo数据/知识点.json ./知识点.json
python3 amti.py snapshot          # 建一次基线
./启动.sh 网页                     # 起服务 + 打开浏览器(http://127.0.0.1:8899)

四、题目长什么样

一道题 = 一个 question 环境 + 前面一行元数据(JSON 里只放 LaTeX 表达不了的字段):

%% @q {"answer": "B", "figures": [], "hash": "4c85d49244168613", "key": "demo/示例卷#1", "meta": {"book": "demo", "source_label": "示例卷", "source_no": 1}, "options": [{"label": "A", "text": "$\\{1\\}$"}, {"label": "B", "text": "$\\{2\\}$"}, {"label": "C", "text": "$\\{3\\}$"}, {"label": "D", "text": "$\\{1,2,3\\}$"}], "points": [], "solution": "两个集合的公共元素只有 $2$,故 $A\\cap B=\\{2\\}$。故选 B。", "stem": "已知集合 $A=\\{1,2\\}$,$B=\\{2,3\\}$,则 $A\\cap B=$\\paren[B]", "type": "single_choice"}
\begin{question}
已知集合 $A=\{1,2\}$,$B=\{2,3\}$,则 $A\cap B=$\paren[B]
\begin{choices}
  \item $\{1\}$
  \item $\{2\}$
  \item $\{3\}$
  \item $\{1,2,3\}$
\end{choices}
\begin{solution}
两个集合的公共元素只有 $2$,故 $A\cap B=\{2\}$。故选 B。
\end{solution}
\end{question}
  • 答案写在作答位置:选择 \paren[A]、填空 \fillin[$-1$]、解答写「见解析」
  • 正文是字段的真相:元数据行只补 LaTeX 表达不了的(key / 来源 / 考点)
  • 题库按卷存放:题目/001.tex、002.tex…(每卷 ≤5000 题)
  • 完整格式规范见 docs/题目格式.md(题型、答案位置、元数据字段、渲染器硬性要求、怎么录入)

五、目录

amti.py            命令行入口(status / conform / accept / ingest / export …)
amti/              Python 核心:存储、规范化、录入、组卷、导出、Web 服务
web/               前端源码(React + Vite + Tailwind);构建产物在 web/dist
demo数据/          4 道自编题 + 完整考点大纲 + 1 张示意图
测试/              回归测试(接口、删题安全)
TeXLive安装.md      想导出 PDF 时看这个

六、导出 PDF 需要自己装 LaTeX

「导出试卷 PDF」需要一个 LaTeX 引擎(程序调用 xelatex)。 本仓库不内置(各平台二进制不同,且在别人机器上容易因字体/映射缺失而编译失败)。 按 TeXLive安装.md 装一次即可(macOS / Windows / Linux 三平台,含国内镜像与常见报错处理)。

不装也不影响浏览、搜索、编辑、组卷与预览。

七、开发

python3 amti.py accept          # 四层验收:单元自检 / 规范审查 / 端到端渲染 / 快照——必须全绿
python3 测试/接口测试.py         # 接口回归 14 项
cd web && npx tsc --noEmit && npm run build

编码约定与模块职责见 AGENTS.md;题目格式的完整定义见仓库内的规范文档。

八、许可与数据

  • 代码:MIT(见 LICENSE)
  • 题库数据(题目、答案、解析、配图):属于作者,保留所有权利,不在本仓库中
  • 考点大纲(demo数据/知识点.json,152 个考点):课标结构,属公开资料,随 MIT 一并提供
  • demo 题:作者自编,非真题

About

本地高中数学题库 + 组卷系统:检索 → 组卷 → 导出 → 讲义。题目用 LaTeX、界面用 KaTeX;数据全在本机,题库数据不公开(仓库只含代码、4 道自编 demo 与完整 152 考点大纲)

Topics

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages