[toc] # 上传题目与题解相关事宜 ## 摘要 本篇帮助介绍了有关上传题目、题解的若干注意事项和可能遇到的问题。 ## 相关事宜 你可以在[这里](/upload-prob)上传自己的题目到我们的云端,或在题目主页点击侧边栏的“上传题解”以上传你的题解。除此之外,你也可以编辑你的题目或题解。 ### 题目编号的填写 上传题目前,必须填写*有意义、有区分度*的题目编号,不超过 16 个字符,建议全部使用 ASCII 字符。上传后,题目路径在 `/probs/<题目编号>`。 题目编号建议遵循统一的格式,例如物理题是四位十六进制整数加上前缀 `PHY`,如 `PHY1234`。除非经过管理员的同意,尽量不要使用官方题目的编号格式,即 4 位 16 进制整数。不要使用过短的编号,建议编号长于 4 位。 成功上传题目后不能修改编号。如果题目有大的改动,请删除题目后重新上传。 ### 题目标签的填写 在“标签”栏输入标签,然后按下回车键添加标签。除非有必要,否则不要创造新的标签,而是尽量使用已有的标签。在[这里](/labels/)查看所有已有的标签。 ### 题目描述的编写 使用 Markdown 语法编写题目描述,其中可以使用 $\KaTeX$ 公式等一些扩展语法。具体使用方法参见[此处](/helps/write-markdown)。 ### 答案的填写 题目答案是多个测试点,每个测试点包含*变量*和*正确结果*两部分。 * *变量*,指用户输入表达式中一些未知数应该代入的值。例如,用户提交表达式 $x + \sqrt y$,测试点变量为 `{"y": 4}`,则代入后结果为 $x + 2$。变量需要按照 JSON 字典的格式输入,没有变量时置空或填`{}`。 * *正确结果*,是指将用户输入表达式代入给定变量值后应该得出的值,例如上例中用户计算得的结果为 $x + 2$。若题目提供的正确结果与计算得的结果相同,则此测试点判为正确。正确结果中可以有未知数。 输入一条测试点的数据后,应该点击将测试点添加到当前小题的测试点列表。若要删除测试点,则应该点击将测试点从答案删除。 #### 小题 当题目有多个小问时,可以使用**小题**。点击添加小题,点击测试点列表中小题列的“小题”字样选中小题,点击删除小题。 ### 图片上传 你可以为题目、题解上传图片。上传后,图片的路径图像路径直接使用 `<图像文件名称>` 即可。上传后要在正文中用 Markdown 语法插入图片。例如,若上传的图片名称为 `image.svg`,则要使用 ```markdown  ``` 在文中插入图片。 #### 推荐的图片格式 对于几何矢量图,我们推荐 *SVG 格式*;对于一般图像,我们推荐 *JPEG 格式*。**不推荐**上传 PNG 格式的或过大的图片,这会使加载题目时速度较慢。 ### 题目的审核 上传题目后,题目将进入**审核阶段**,管理员将通过或拒绝你的题目。如果你的题目被拒绝,请**逐句仔细**阅读管理员的审核意见,并对其做出相应修改。 ## 常见问题与解答 ### 为什么我的图片没有显示? 上传图片后还要在正文中用 Markdown 语法插入图片: ```markdown  ``` 否则即使图片已经上传到数据库中,也不会显示。请勿重复上传图片。 ### 如何由 LaTeX 生成 SVG? 可以先将 $\LaTeX$ 编译为 DVI 文件,再用 `dvisvgm` 工具将 DVI 文件转换为 SVG 文件。$\LaTeX$ 文件建议采用 `standalone` 文档类。使用如下 `makefile` 即可生成: ```makefile %.dvi: %.tex latexmk -auxdir=.aux -dvi $< %.svg: %.dvi dvisvgm -n $< ``` 直接使用 `make <你的 LaTeX 文件名>.svg` 生成 SVG 文件。 需要注意的是,`dvisvgm` 工具可能会出现问题 ``` processing of PostScript specials is disabled (Ghostscript not found) ``` 这时,应该为 `dvisvgm` 命令添加 `--libgs=` 参数以配置 GhostScript 动态库。如果你的电脑上没有 GhostScript 动态库,可以使用 Brew 安装: ```bash brew install ghostscript ``` 此时,你的 GhostScript 动态库*可能*在: ``` /usr/local/Cellar/ghostscript/10.05.1/lib/libgs.10.05.dylib ``` 具体位置取决于你的 Brew 安装目录和 GhostScript 版本。 ### 为什么我输入了答案,但上传后没有显示提交框? 可能是因为你在输入测试点时没有点击号。点击号后测试点才会被添加到列表中。 ### 如果我的题目的答案是多个值,如何表示? 可以使用**数组**表示一系列**有序的**表达式或值。例如,若一道题目的答案是 $a = 6, b = 36$,则可以用 `[6, 36]` 表示,用户提交 `[36, 6]` 则不得分。 需要注意的是,**数组不能存储不同类型的值**。例如,若一道题目的答案是 $a = 1, B = \{6, 36\}$,则 `[1, {6, 36}]` 是不允许的。此时,可以使用[**小题**](#小题)。 可以使用**有限集合**表示若干**无序的**表达式或值。例如,一道题目的答案是 $x = 2$ 或 $x = 3$,则可以用 `{2, 3}` 表示,用户提交 `{3, 2}` 或 `{2, 3, 2}` 也可得分。