- HydroOJ
HydroOJ Markdown & LaTeX 完全指南
- 2021-11-9 19:22:04 @
前言
考虑到有部分用户对 Markdown 及 语法及规范尚不了解,特编写此指南。
本规范仅对中文文章中的规范进行讨论。
若对本规范中的内容有任何疑问,可直接在帖子下方留言。
概念辨析
与 Markdown 的区别在于,在我们平常所用的语法中:
- 公式块属于 语法,因此一般可以使用 「」来代表公式块;
- 其余均为 Markdown 语法。
总体原则
- 对于本指南中有具体说明的,请严格遵守本指南;
- 对于本指南中未详细说明的或是尚存在争议的,请以「表意明确,美观工整」为第一原则。
一般规范
在任何文章的任何地方都需要遵循以下规范:
- 在任何表示普通文本的位置(包括部分 Markdown 块内),具体要求请参考 此处:
- 不允许出现任何英文标点;
- 英文单词与汉字之间需要空格,与标点之间无需空格;
- 对于一般的句子,句末需加上中文句号
。
。
- 对于 :
- 内禁止出现任何汉字及中文标点;
- 与汉字及英文单词之间需要空格,与标点之间无需空格。
公式块
介绍
公式块主要用于表示公式、变量及一般数字。
任何脱离公式块存在的公式、变量及一般数字均是不被允许的。
示例
-
一般公式块:
被一对
$
包裹,可以任意插入于句子中。示例:
$a,b,c$ $a+b\times c$ $C^a_b+\sqrt{c}$
-
特殊公式块:
被一对
$$
包裹,可以居中显示。注意:特殊公式块必须独立成段。
示例:
$$\sum_{i=1}^n a_i$$
语法规范
一般来说,以下字符可以出现在公式块中:
- 个英文字符的大小写;
- 小数点
.
; - 阿拉伯数字;
- 运算符号
+
,-
,=
,!
(阶乘),|
(绝对值); - 逻辑符号
<
,>
,|
(整除); - markdown 语法符号
\
,{
,}
,^
,_
等。
以下一些字符严格不允许出现在公式块中:
- 任何不能直接通过键盘打出的字符;
- 如
≤
,×
,÷
,∈
; - 它们应当被表示为:
$\le$
、$\times$
、$\div$
、$\in$
。
- 如
- 任何与中文有关的字符,包括所有汉字及中文标点;
- 任何与代码有关的内容;
- 如
$a[i]=1$
、$a%b$
、$a!=b$
; - 它们应当被表示为:
$a_i=1$
、$a\bmod b$
、$a\neq b$
。
- 如
- 具有特定意义的数字及英文单词;
- 如:
$01$ 串
、$dp$
; - 它们应当被表示为:
01 串
、dp
。
- 如:
- 其他的一些奇怪的东西等。
格式规范
- 需遵循 语法一般规律,即公式块与汉字之间需要使用单个空格隔开,与中文标点之间无需用空格隔开,举例来说:
我们定义$s$表示$a+b$。
及我们定义 $s$ 表示 $a+b$ 。
均是不被允许的;我们定义 $s$ 表示 $a+b$。
是符合规范的。
- 在单个公式块中,最多只允许出现一则公式或逻辑运算,相邻公式块直接应当用中文逗号
,
分隔,举例来说:$a+b,c+d$
、$a+b$, $c+d$
及$1\le n\le 10^6,1\le m\le 10^3$
均是不被允许的;$a+b$,$c+d$
及$1\le n\le 10^6$,$1\le m\le 10^3$
是符合规范的。
- 连续的变量应当被放置于同一个公式块中,变量之间使用英文逗号
,
分隔,举例来说:$n$,$m$,$k$
、$n$,$m$,$k$
及$n$, $m$, $k$
均是不被允许的;$n,m,k$
是符合规范的。
- 为了美观考虑,请尽可能使用短的变量名,举例来说,
$p$
相比于$primes$
是更加美观的。 - 为了兼容性考虑,
$
与块内内容之间不应使用空格,而块内则无限制,举例来说:$ a+b $
是不被允许的;$a+b$
、$a + b$
均是符合规范的。
资料
可以在 此处 自行查找需要的数学公式。
tips
对于原本无法显示在公示快内的字符,可以使用类似于 $\{\}$
的方法来显示,效果为:。
代码块
介绍
代码块主要用来表示代码、代码片段或特定字符。
任何脱离代码块而存在的代码、代码片段或特定字符都是不被允许的。
示例
-
一般代码块:
一般代码块可以任意插入与句子中。
由于此字符为 Markdown 语法字符,因此暂时没有想到比较好的表示方法,以下直接采用举例的方式来呈现。
示例:
若无解,则输出
Impossible
。输入
add l r v
表示将下标由 至 的数全部加上 。输入
query l r
表示查询下标由 至 的所有数的和。若无解,则输出 `Impossible`。 输入 `add l r v` 表示将下标由 $l$ 至 $r$ 的数全部加上 $v$。 输入 `query l r` 表示查询下标由 $l$ 至 $r$ 的所有数的和。
-
特殊代码块
特殊代码块主要用于表示一整段的代码、数据或其他多行的引用内容。
注意:特殊代码块必须独立成段。
示例:
2 3
5
#include<iostream> using namespace std; int main() { int a, b; cin >> a >> b; cout << a + b << endl; return 0; }
..*.. ..*.. ***** ..*.. ..*..
```input1 2 3 ``` ```output1 5 ``` ```cpp #include<iostream> using namespace std; int main() { int a, b; cin >> a >> b; cout << a + b << endl; return 0; } ``` ``` ..*.. ..*.. ***** ..*.. ..*.. ```
语法规范
- 代码块与汉字之间需要使用单个空格隔开,与中文标点之间无需用空格隔开,此处规范与 相似。
- 若有需要,可以在代码块中使用中文。
特殊规范
-
对于「字符串」而言,尽管符合「表示特定字符」的用途,但出于美观考虑,一般使用 或 而非
ABCDEFG
。一般使用 $\text{ABCDEFG}$ 或 $\texttt{ABCDEFG}$ 而非 `ABCDEFG`。
当然,在同一篇文章内,请不要将
\text
与\texttt
两者混用。
标题块
示例
由于具体示例会影响阅读体验,此处仅展示源码:
# 这是一级标题
## 二级标题
### 三级标题
#### 四级标题
由于五级及以上标题已经与普通加粗大小无异,以此一般情况下不作使用。
对于一般的全部使用同一级标题的文章(如题面等),为了美观考虑,一般仅使用二级标题。
语法规范
- 需遵守「一般规范」,即标题块中不允许出现英文标点,标题块中的英文单词与汉字之间需要空格,英文单词与标点之间无需空格。特殊地,标题块的句末无需标点;
- 标题块内无法识别任何 Markdown 及 语法内容,以此对于以下内容请酌情进行使用。
- 任何出于将字体放大的动机而在标题块内放置非标题内容均是不被允许的,例如:
# 我宣布!Macesuted 超级可爱!
是不被允许的。
格式规范
- 标题块必须独立成段;
- 为了兼容性考虑,标题块与上下相邻内容间均需要一个空行。
链接及图片引用
示例
-
链接
举例:
欢迎来 HydroOJ 玩!
具体情况可点击这里。
欢迎来 [HydroOJ](hydro.ac) 玩! 具体情况可点击[这里](hydro.ac)。
-
引用图片
举例:
![pic1](https://hydro.ac/file/318/pic1.png)
注意:
[]
内的文本也可不填,对图片显示没有影响。
格式规范
- 链接可直接当成普通文本处理,在
[]
中可输入任意文本内容,并且使该文本内容在显示后遵循「一般规范」即可。 - 链接文字与普通汉字直接是否需要另外加上空格分隔可以随意。
加粗 & 高亮
介绍
一般对重要的或容易遗漏的文字进行加粗或高亮,以起到强调作用。
若想加粗,将想要加粗的文字用一对 **
包裹。
若想高亮,将想要加粗的文字用一对 ==
包裹。
示例
这样子就可以加粗。
这样子就可以高亮。
这样子就可以**加粗**。
这样子就可以==高亮==。
语法规范
- 只需直接将想要加粗的文字用
**
包裹即可,加粗的文字与普通文字直接不需要额外的空格。当然,文字本身需要符合所有规范。 - 一些语法块如「公式块」是不能被加粗的,但是将其包裹于
**
内也是符合规范的,举例:**我们保证 $a\ne b$ 是一定成立的**。
是符合规范的;**我们保证** $a\ne b$ **是一定成立的**。
同样是符合规范的,但是有点多此一举。
- 高亮的使用规范与加粗相似,不再赘述。
格式规范
- 不论出于何种原因,将一整段文字全部加粗是非常不可取的。这样不仅会是加粗失去原本的强调作用,还会使得题面非常的丑陋。
表格
示例
这是表头 | 表头 | 嗯 |
---|---|---|
这是左对齐 | 这是右对齐 | 这是居中对齐 |
在 HydroOJ 中相邻的完全一样的内容会被合并 |
| 这是表头 | 表头 | 嗯 |
| :---- | ----: | :----: |
| 这是左对齐 | 这是右对齐 | 这是居中对齐 |
| 在 HydroOJ 中相邻的完全一样的内容会被合并 | 在 HydroOJ 中相邻的完全一样的内容会被合并 | 在 HydroOJ 中相邻的完全一样的内容会被合并 |
表格可以以此格式向下及向右侧扩展。
语法规范
- 表格需要独立存在。
格式规范
- 对于表格中的任意内容,均需要符合各自应有的规范。
有序列表与无序列表
示例
-
Macesuted 为什么可爱:
- Macesuted 温柔;
- Macesuted 好看;
- Macesuted 软乎乎:
- 脸软;
- 身子软。
-
undefined 为什么是神。
步骤如下:
- 输入 ;
- 输入 ;
- 输出 。
- Macesuted 为什么可爱:
- Macesuted 温柔;
- Macesuted 好看;
- Macesuted 软乎乎:
- 脸软;
- 身子软。
- undefined 为什么是神。
步骤如下:
1. 输入 $a$;
2. 输入 $b$;
3. 输出 $a + b$。
有序列表与无序列表均可嵌套。
在部分编辑器中,列表间的间距可以通过以下格式调整:
- 这样间距会比较大;
- 这样间距会比较大;
- 这样间距会比较大。
- 这样间距会比较大;
- 这样间距会比较大;
- 这样间距会比较大。
- 这样间距会比较小;
- 这样间距会比较小;
- 这样间距会比较小。
- 这样间距会比较小;
- 这样间距会比较小;
- 这样间距会比较小。
语法规范
- 对于任何列表中的内容,均需要符合各自应有的规范。
格式规范
以下规范非强制要求,仅为建议与参考。
- 对于不是出于末尾的列表,需要以
;
结尾。否则,则使用。
结尾; - 对于有下一级列表嵌套的,需要以
:
结尾。
HydroOJ 特殊语法
这些语法仅能在 HydroOJ 内使用。
@ 用户
@[](/user/318) 或 [](/user/318) 均可。
需遵循「一般规范」。
插入视频
使用类似于 @[video](https://.../file.mp4)
的方式即可。
需要单独成段。
12 comments
-
zhangranchu @ 2024-11-9 14:33:07
我宣布!Macesuted 超级可爱!
-
2024-9-26 18:57:11@
-
2024-9-7 14:48:08@
《我宣布!Macesuted 超级可爱(癌?)》
-
2024-2-21 13:26:24@
对于原本无法显示在 公示快 内的字符,可以使用类似于
<span> </span>$\{\}$
的方法来显示,效果为:。这里是不是写错了,“公式快”
-
2023-12-5 18:41:15@
有没有可能加入一个功能,可以调整插入图片的尺寸呢,缩放比例最好
-
2023-10-13 21:27:23@
note类型的
这个
怎么加
-
2022-4-2 22:18:42@
-
2021-11-18 20:52:49@
有序列表与无序列表 这里边:
- undefined 是神。
- undefined 为什么是神。
-
2021-11-18 10:14:08@
我认真读完了守则,但是还有一个问题。
假如说我要表示 ,我当然可以用
$n,m,k$
,也当然可以用$n, m, k$
。但是无论用上面两种写法中任意一种,在显示出来的时候这三个字母之间均没有空格。我有点难受,但是不能写成
$n$, $m$, $k$
,那我是否可以写成 ?$\,$
是一种 间距的间隔。还有可用的间隔:
$\,$
是一种 间距的间隔。$\:$
是一种 间距的间隔。$\;$
是一种 间距的间隔。$\enspace$
是一种 间距的间隔。$\quad$
是一种 间距的间隔。$\,$
是一种 间距的间隔。
-
2021-11-17 16:41:39@
对于原本无法显示在公示快内的字符,可以使用类似于
$\{\}$
的方法来显示,效果为:。公示快 应改为 公式块。
若想高亮,将想要加粗的文字用一对
==
包裹。加粗 应改为 高亮。
-
2021-11-10 19:33:34@
任何脱离 公式快 存在的公式、变量及一般数字均是不被允许的。
公式 快?
- 1