# 添加新题目到数据库

## 工具文件
``添加题目到数据库.ipynb``

## 功能简介
从一个.tex文件中提取题目内容(用\item开头, 放置在\begin{enumerate}\end{enumerate}环境中), 并从起始id开始将.tex文件中题目逐题添加到数据库中

## 用法

### 第一个单元格中需要设置四个位置

- ``starting_id``: 整数. 起始id号, 这个号码注意不要和已有的id重复, 可在``Problems.json``中查询空闲id. 处理中如果有重复id的话程序会报重复, 并且不会写入新题目到数据库

- ``origin``: 字符串. 题目出处, 同一批题目的出处字符串一致, 尽可能详尽, 对应到``Problems.json``数据库中的``origin``项

- ``filename``: 字符串. .tex文件的文件名(含路径)

- ``editor``: 字符串. 编辑及收录者姓名, 用"\t"分隔日期(yyyymmdd)及姓名, 例如"20221007\t张三"

### 随后运行第二个单元格
即可看到``Problems.json``文件的变化

# 在vscode中编辑数据库中的单题

## 工具文件
``修改题目数据库.ipynb``

## 功能简介
自动定位, 简单编辑(非可见即所得)题目数据库中的题目

## 用法
第一个单元格中设置id, 至多六位的整数, 随后运行. vscode将会打开``Problems.json``文件, 并自动定位到指定题目处.

# 按照单元/课时/课时目标对题库中的题目作清点并分类

## 工具文件
``单元课时目标题目数据清点.ipynb``

## 功能简介
按照 单元/课时/课时目标 三种不同的分类方式清点题库中的题目, 并生成分类结果.

## 用法
运行第一个单元格后, 会在工具相应的目录中的"临时文件"子目录下生成一个``单元课时目标题目数据清点结果.txt``的文本文件

# 汇总课时目标及课时划分信息, 并编译为两个.pdf文件

## 工具文件
``课时目标及课时划分信息汇总.ipynb``

## 功能简介
- 依据``UnitObj.json``文件中的数据以及``LessonObj.json``中的数据进行整理, 形成单元-课时学习目标表, 并编译为.pdf

- 依据``LessonObj.json``, ``LessonsCut.josn``以及``Problems.json``文件中的数据进行整理, 形成每一课时的相关目标, 题目的清单, 并编译为.pdf

## 依赖文件
项目目录下``题库0.3``子目录中的

- ``LessonObj.json``数据库文件

- ``LessonsCut.json``数据库文件

- ``UnitObj.json``数据库文件

- ``Problems.json``数据库文件

工具文件目录下``模板文件``子目录中的

- ``课时划分.tex``模板文件

- ``课时目标及单元目标.tex``模板文件

## 用法
在第一个单元格中设置输出的文件名, 最终的文件名会在设置的文件名后加上日期(yyyymmdd).

运行第一个单元格即可得到两个.tex文件与两个.pdf文件.

# 将指定题号的题目从数据库中取出, 并编译成"只含题目的pdf"与"包含更多信息的pdf"两个文件

## 工具文件
``题号选题pdf生成.ipynb``

## 功能简介
指定一个题号列表(字符串格式, 用"m:n"表示"m到n", 用","分隔), 将列表中的包含在题库中的id对应的题目取出, 并编译成"只含题目的pdf"文件与"包含更多信息的pdf"文件.

## 依赖文件
项目目录下``题库0.3``子目录中的

- ``Problems.json``数据库文件

- ``LessonObj.json``数据库文件

工具文件目录下``模板文件``子目录中的

- ``题目清单.tex``模板文件

(可选择)工具文件目录下``临时文件``子目录中的

- ``题号筛选.txt``题号列表文件

## 用法

### 设置需要生成pdf的题目范围

- 方法1: 编译全题库, 只需将``problems``字符串变量留空

- 方法2: 编译``临时文件/题号筛选.txt``文本文件中的题号列表对应的题目, 只需将``problems``字符串设为"a", 前后可以有空格

- 方法3: 编译指定的题号列表, 只需将``problems``变量编辑为需要编译的题目列表字符串即可, 用"m:n"表示"m到n", 用","分隔. 
例如"2:5,101"表示需要id为000002,000003,000004,000005,000101的五道题目.

### 设置输出文件的文件名

修改``filename``变量中的字符串, 建议"临时文件"不要改动, 后面的文件名可以改动. 生成的两个pdf会加上"_学生用_yyyymmdd.pdf"的后缀(只含题目)与"_教师用_yyyymmdd.pdf"的后缀(含有更多信息, 答案为红色, 目标为蓝色, 便于区分)

### 设置完成之后执行第一个单元格

等候一小段时间, 返回值为0表明编译成功.
