前言
考慮到有部分用戶對 Markdown 及 \(\LaTeX\) 語法及規范尚不了解,特編寫此指南。
本規范僅對中文文章中的規范進行討論。
若對本規范中的內容有任何疑問,可直接在帖子下方留言。
概念辨析
\(\LaTeX\) 與 Markdown 的區別在於,在我們平常所用的語法中:
- 公式塊屬於 \(\LaTeX\) 語法,因此一般可以使用 「\(\LaTeX\)」來代表公式塊;
- 其余均為 Markdown 語法。
總體原則
- 對於本指南中有具體說明的,請嚴格遵守本指南;
- 對於本指南中未詳細說明的或是尚存在爭議的,請以「表意明確,美觀工整」為第一原則。
一般規范
在任何文章的任何地方都需要遵循以下規范:
- 在任何表示普通文本的位置(包括部分 Markdown 塊內),具體要求請參考 此處:
- 不允許出現任何英文標點;
- 英文單詞與漢字之間需要空格,與標點之間無需空格;
- 對於一般的句子,句末需加上中文句號
。
。
- 對於 \(\LaTeX\):
- \(\LaTeX\) 內禁止出現任何漢字及中文標點;
- \(\LaTeX\) 與漢字及英文單詞之間需要空格,與標點之間無需空格。
公式塊
介紹
公式塊主要用於表示公式、變量及一般數字。
任何脫離公式塊存在的公式、變量及一般數字均是不被允許的。
示例
-
一般公式塊:
被一對
$
包裹,可以任意插入於句子中。示例:
\(a,b,c\)
\(a+b\times c\)
\(C^a_b+\sqrt{c}\)
$a,b,c$ $a+b\times c$ $C^a_b+\sqrt{c}$
-
特殊公式塊:
被一對
$$
包裹,可以居中顯示。注意:特殊公式塊必須獨立成段。
示例:
\[\sum_{i=1}^n a_i \]$$\sum_{i=1}^n a_i$$
語法規范
一般來說,以下字符可以出現在公式塊中:
- \(26\) 個英文字符的大小寫;
- 小數點
.
; - 阿拉伯數字;
- 運算符號
+
,-
,=
,!
(階乘),|
(絕對值); - 邏輯符號
<
,>
,|
(整除); - 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
。
- 如:
- 其他的一些奇怪的東西等。
格式規范
- 需遵循 \(\LaTeX\) 語法一般規律,即公式塊與漢字之間需要使用單個空格隔開,與中文標點之間無需用空格隔開,舉例來說:
我們定義$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
表示將下標由 \(l\) 至 \(r\) 的數全部加上 \(v\)。輸入
query l r
表示查詢下標由 \(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; } ``` ``` ..*.. ..*.. ***** ..*.. ..*.. ```
語法規范
-
代碼塊與漢字之間需要使用單個空格隔開,與中文標點之間無需用空格隔開,此處規范與 \(\LaTeX\) 相似。
-
若有需要,可以在代碼塊中使用中文。
特殊規范
-
對於「字符串」而言,盡管符合「表示特定字符」的用途,但出於美觀考慮,一般使用 \(\text{ABCDEFG}\) 或 \(\texttt{ABCDEFG}\) 而非
ABCDEFG
。一般使用 $\text{ABCDEFG}$ 或 $\texttt{ABCDEFG}$ 而非 `ABCDEFG`。
當然,在同一篇文章內,請不要將
\text
與\texttt
兩者混用。
標題塊
示例
由於具體示例會影響閱讀體驗,此處僅展示源碼:
# 這是一級標題
## 二級標題
### 三級標題
#### 四級標題
由於五級及以上標題已經與普通加粗大小無異,以此一般情況下不作使用。
對於一般的全部使用同一級標題的文章(如題面等),為了美觀考慮,一般僅使用二級標題。
語法規范
- 需遵守「一般規范」,即標題塊中不允許出現英文標點,標題塊中的英文單詞與漢字之間需要空格,英文單詞與標點之間無需空格。特殊地,標題塊的句末無需標點;
- 標題塊內無法識別任何 Markdown 及 \(\LaTeX\) 語法內容,以此對於以下內容請酌情進行使用。
- 任何出於將字體放大的動機而在標題塊內放置非標題內容均是不被允許的,例如:
#我宣布!Macesuted 超級可愛!
是不被允許的。
格式規范
-
標題塊必須獨立成段;
-
為了兼容性考慮,標題塊與上下相鄰內容間均需要一個空行。
鏈接及圖片引用
示例
-
鏈接
舉例:
歡迎來 HydroOJ 玩!
具體情況可點擊這里。
歡迎來 [HydroOJ](hydro.ac) 玩! 具體情況可點擊[這里](hydro.ac)。
-
引用圖片
舉例:

注意:
[]
內的文本也可不填,對圖片顯示沒有影響。
格式規范
- 鏈接可直接當成普通文本處理,在
[]
中可輸入任意文本內容,並且使該文本內容在顯示后遵循「一般規范」即可。 - 鏈接文字與普通漢字直接是否需要另外加上空格分隔可以隨意。
加粗 & 高亮
介紹
一般對重要的或容易遺漏的文字進行加粗或高亮,以起到強調作用。
若想加粗,將想要加粗的文字用一對 **
包裹。
若想高亮,將想要加粗的文字用一對 ==
包裹。
示例
這樣子就可以加粗。
這樣子就可以高亮。
這樣子就可以**加粗**。
這樣子就可以==高亮==。
語法規范
- 只需直接將想要加粗的文字用
**
包裹即可,加粗的文字與普通文字直接不需要額外的空格。當然,文字本身需要符合所有規范。 - 一些語法塊如「公式塊」是不能被加粗的,但是將其包裹於
**
內也是符合規范的,舉例:**我們保證 $a\ne b$ 是一定成立的**。
是符合規范的;**我們保證** $a\ne b$ **是一定成立的**。
同樣是符合規范的,但是有點多此一舉。
- 高亮的使用規范與加粗相似,不再贅述。
格式規范
- 不論出於何種原因,將一整段文字全部加粗是非常不可取的。這樣不僅會是加粗失去原本的強調作用,還會使得題面非常的丑陋。
表格
示例
這是表頭 | 表頭 | 嗯 |
---|---|---|
這是左對齊 | 這是右對齊 | 這是居中對齊 |
在 HydroOJ 中相鄰的完全一樣的內容會被合並 | 在 HydroOJ 中相鄰的完全一樣的內容會被合並 | 在 HydroOJ 中相鄰的完全一樣的內容會被合並 |
| 這是表頭 | 表頭 | 嗯 |
| :---- | ----: | :----: |
| 這是左對齊 | 這是右對齊 | 這是居中對齊 |
| 在 HydroOJ 中相鄰的完全一樣的內容會被合並 | 在 HydroOJ 中相鄰的完全一樣的內容會被合並 | 在 HydroOJ 中相鄰的完全一樣的內容會被合並 |
表格可以以此格式向下及向右側擴展。
語法規范
- 表格需要獨立存在。
格式規范
- 對於表格中的任意內容,均需要符合各自應有的規范。
有序列表與無序列表
示例
-
Macesuted 為什么可愛:
- Macesuted 溫柔;
- Macesuted 好看;
- Macesuted 軟乎乎:
- 臉軟;
- 身子軟。
-
undefined 是神。
步驟如下:
- 輸入 \(a\);
- 輸入 \(b\);
- 輸出 \(a + b\)。
- Macesuted 為什么可愛:
- Macesuted 溫柔;
- Macesuted 好看;
- Macesuted 軟乎乎:
- 臉軟;
- 身子軟。
- undefined 為什么是神。
步驟如下:
1. 輸入 $a$;
2. 輸入 $b$;
3. 輸出 $a + b$。
有序列表與無序列表均可嵌套。
在部分編輯器中,列表間的間距可以通過以下格式調整:
-
這樣間距會比較大;
-
這樣間距會比較大;
-
這樣間距會比較大。
- 這樣間距會比較大;
- 這樣間距會比較大;
- 這樣間距會比較大。
- 這樣間距會比較小;
- 這樣間距會比較小;
- 這樣間距會比較小。
- 這樣間距會比較小;
- 這樣間距會比較小;
- 這樣間距會比較小。
語法規范
- 對於任何列表中的內容,均需要符合各自應有的規范。
格式規范
以下規范非強制要求,僅為建議與參考。
- 對於不是出於末尾的列表,需要以
;
結尾。否則,則使用。
結尾; - 對於有下一級列表嵌套的,需要以
:
結尾。
折疊
適當使用折疊可以使排版更加清晰。
這里放標題,也可以不放
\(\operatorname{Rosmarinus}\)