本地运行的高中数学题库:检索 → 组卷 → 导出,全部数据在本机,不上传任何服务器。 后端 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 → 导出);
搜不到东西时回车直接把词丢给题库搜索。
- 左栏是全局导航:工作流(工作台 / 录题 / 知识点)+
组卷输出(智能组卷 / 试卷管理 / 回收站 / 变更记录),每项都挂一个单键快捷键
(
WIKBPRC) - 筛选面板按章节 → 节 → 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 引擎(程序调用 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 题:作者自编,非真题