
#
题库使用指南2024版
**本教程中的默认文件夹是题库根目录/工具v2**
## 在overleaf上协作编辑
我们**自己部署的本地overleaf服务器**的地址是[overleaf kongjiang](http://kjwangweiye.top:40388)(``kjwangweiye.top:40388``)或[overleaf kongjiang mirror](http://wwylss.synology.me:40388)(``wwylss.synology.me:40388``)
如果还未注册过, 请联系管理员, 提供一个邮箱(可以是真实的邮箱, 也可以不是)以新建账号(之后首次登录会要求设置密码, 请**不要忘记邮箱和密码**)
万一忘记了邮箱和密码就只能删除账号重新再开了, 服务器上属于该账号的所有工作就一并被删除了.
知道对方的邮箱的话, 可以在overleaf上邀请对方参加协作, 一起编辑同一个项目.

## 在gitlab上提交issue
我们**自己部署的本地gitlab服务器**的地址是[gitlab](http://wwylss.synology.me:30000)(``wwylss.synology.me:30000``)

如果还未注册过, 请在上述界面中注册, 并联系管理员以通过注册.
一个较大的项目的协作者之间的工作联系通常**不是**通过微信、电话这种*追溯历史不太方便的方式*实现的. gitlab提供了一个比较有效的方式: 提交issue(问题/事件)

上图就是提交issue的按钮, 点击后选择``新建议题``, 会显示下面的界面

1. 用简略的文字描述issue
2. 详细描述issue的内容(可以使用markdown语法, 如果会markdown的话)
3. 按这个按钮可以添加附件(在提供一些文件例如metadata.txt等的时候十分有用)
4. **指派哪些人来跟进这个议题**, 一般有同备课组的负责人和管理员等
5. 前四项全填完之后, 点击``Create议题``以生成这个新的issue
之后就可以在这个issue中进行对话沟通, 完成后(或者完不成但是也不想留置)有权限的成员(提出者, 指派人, 管理员等)可以关闭议题.
## 收录新题
***对于需要合并到主题库的题目, 在收录之前请务必和管理员协商确定起始题号, 避免不同使用者的题号出现冲突***
***测试的时候请先拉取远程的tutorial分支, 在此基础上新建分支, 之后进行收录新题操作***
收录新题前, 需要准备一个能够编译通过的LaTeX文件, 正文部分是一个``enumerate``环境, 其中每一个``\item``表示一道题目. 例如:
```latex
\begin{enumerate}
\item 设$x=1$, 则$x^2$的值为\blank{50}.
\item $x=1$是$x>0$的\bracket{20}条件.
\fourch{充分非必要}{必要非充分}{充要}{既非充分又非必要}
\item 已知$f(x)=x^2+1$, 求$f(3)+f(5)$的值.
\end{enumerate}
```
这是一个由三道题目组成的``enumerate``环境(文件的其他部分可以在``模板文件/讲义模板.txt``中获取), 手动输入后, 可以通过面板收录到题库. 但是**更多时候这样一个LaTeX文件的来源是通过mathpix识别**得到的.
### 使用mathpix自动识别题目
mathpix是一个非常好用的数学文字和公式转换工具, 唯一的缺点是大量转换要花钱, 目前新账号的处理限额是每月10次(基本上不够用). 如果还没有注册过的话, 建议用一个邮箱注册一下. mathpix的网址是[mathpix](https://mathpix.com)(https://mathpix.com).
下载mathpix的桌面客户端:


如果不想注册或者限额用完了, 以下几个账号可能可以用(限额应该会每月更新):
- ``Nelly.Eugen@alumni.stanford.edu`` 密码: ``321aA@mathpix``
- ``fchavez46@student.mtsac.edu`` 密码: ``Ab@789789``
- ``fwhitsett@student.mtsac.edu`` 密码: ``Ab@789789``
- ``4552933337@student.cumtb.edu.cn`` 密码: ``Ab@789789``
- ``515625773@student.cumtb.edu.cn`` 密码: ``Ab@789789``
以下以识别tutorial分支上的``../文档/教学材料/待收录.png``为例
### 识别的内容复制到剪贴板之后的操作
#### 作一些预处理, 使风格和题库中的题目的风格一致
#### 和题库中已有的题目比对并手动作一些标记
#### 将标记完成的题目及相关信息一并收录到题库
随后如果有必要, 可保存``Problems.json``至暂存区, 之后可以commit到本地的repository, 乃至push到远程的服务器.
## 添加关联题
## 导入metadata(各种数据与信息, 如答案, 解答, 备注, 使用记录, 标签等)
在``工具v2/文本文件``目录中有一个名为``metadata.txt``的文件, 其一般结构如下:
```txt
ans
10235
$1$
2235
真命题
usages
021146
20231222 2025届高二11班 1.000
021147
20231222 2025届高二11班 0.952
```
其中``ans``表示答案, ``usages``表示使用记录.
这个``metadata.txt``文件如果导入题库, 会
- 把第``10235``题的答案用``$1$``覆盖,
- 把第``2235``题的答案用``真命题``覆盖,
- 在``21146``的``usages``字段中添加``20231222 2025届高二11班 1.000``,
- 在``021147``的``usages``字段中添加``20231222 2025届高二11班 0.952``.
每一个字段(如``ans``或``usages``等)及每一条记录之间都用多于一个换行符分隔(很多情况下换行之类的格式都是自动生成的), 其他``metadata.txt``可以接受的字段有:
- ``content``: 题目内容(``str``类型), 导入时将**覆盖**原内容
- ``objs``: 课时目标(目标代码, ``list``类型), 导入时将**新增**项目
- ``tags``: 题目标签(``list``类型), 导入时将**新增**项目
- ``genre``: 题目类型(填空题/选择题/解答题), 导入时将**覆盖**原内容
- ``ans``: 答案(``str``类型), 导入时将**覆盖**原内容
- ``solution``: 解答或提示(``str``类型), 导入时将**覆盖**原内容
- ``duration``: 所需时间(单位为分钟, 暂时均赋值``-1``, ``int``类型), 导入时将**覆盖**原内容
- ``usages``: 使用记录(``yyyymmdd班级代号得分率``), 导入时将和之前的记录作比对, 如果确认是新的则**新增**项目
- ``edit``: 编辑记录(``list``类型), 导入时将**新增**项目
- ``same``: 相同题号(指内容和类型均相同的题目, ``list``类型), 导入时将**双向新增**项目(a与b相同当且仅当b与a相同, 导入时会在两道题的记录中同时添加题号)
- ``related``: 相关题号(指题目和做法都基本一致或者某一题是另一题的一部分, ``list``类型), 导入时将**双向新增**项目(a与b相关当且仅当b与a相关, 导入时会在两道题的记录中同时添加题号)
- ``unrelated``: 无关题号(指字符串意义上相近, 容易被自动找出, 但实际上无关的题目, ``list``类型), 导入时将**双向新增**项目(a与b无关当且仅当b与a无关, 导入时会在两道题的记录中同时添加题号)
- ``remark``: 备注(``str``类型), 导入时将**新增**字符串
- ``space``: 题后的空间(单位一般为``em``, 大部分解答题默认为``4em``, ``str``类型), 导入时将**覆盖**原内容
准备好``metadata.txt``文件之后, 在工具面板上按``维护``-``批量添加字段数据``

在``vscode``界面会打开``文本文件/metadata.txt``, 编辑完成后**保存关闭**(重要, 不关闭的话面板会处于假死状态), 面板会生成一个绿色的``运行``按钮, 按动按钮, 系统会自动导入数据到``题库0.3/Problems.json``.

随后如果有必要, 可保存``Problems.json``至暂存区, 之后可以commit到本地的repository, 乃至push到远程的服务器.
## 两种编辑题库中已有题目的方式
### $\LaTeX$方式(可编辑题目, 答案, 解答)
### json方式(可编辑任何信息)
## 从$\LaTeX$源文件中提取答案
## 题目和单元挂钩
### 生成"未挂钩单元题目"的LaTeX源文件、pdf文件与数据文件(临时文件/单元对应.txt)
### 根据数据文件(临时文件/单元对应.txt)生成metadata.txt
## 小闲平台使用数据导入
## 根据特定特征筛选题号
## 根据题号表达式(可含:或,的字符串)生成讲义
## 录入讲义结构与内容
### 讲义首字母的通用规则
- E: 正式测验卷与考试卷
- I: 非正式的小测验
- W: 周末卷
- G: 高一高二的学案
- J: 高三的复习讲义
- F: 高三的赋能卷
- V: 假期作业
### 录入新的讲义种类的结构(备课组之前未使用过的首字母)
### 录入新的讲义的题号ID等内容
## 对小闲平台的答题纸与数据库进行对应
***对应的目的是能更方便地收录使用信息***
## 系列讲义生成
## 添加基础知识梳理
***因可能有冲突, 故建议该项工作完全由管理员进行, 备课组负责人整理完成后在gitlab上提issue***