前言

考虑到有部分用户对 Markdown 及 LaTeX\LaTeX 语法及规范尚不了解,特编写此指南。

本规范仅对中文文章中的规范进行讨论

若对本规范中的内容有任何疑问,可直接在帖子下方留言

概念辨析

LaTeX\LaTeX 与 Markdown 的区别在于,在我们平常所用的语法中:

  • 公式块属于 LaTeX\LaTeX 语法,因此一般可以使用 「LaTeX\LaTeX」来代表公式块;
  • 其余均为 Markdown 语法。

总体原则

  • 对于本指南中有具体说明的,请严格遵守本指南;
  • 对于本指南中未详细说明的或是尚存在争议的,请以「表意明确,美观工整」为第一原则。

一般规范

任何文章的任何地方都需要遵循以下规范:

  • 在任何表示普通文本的位置(包括部分 Markdown 块内),具体要求请参考 此处
    • 不允许出现任何英文标点;
    • 英文单词与汉字之间需要空格,与标点之间无需空格;
    • 对于一般的句子,句末需加上中文句号
  • 对于 LaTeX\LaTeX
    • LaTeX\LaTeX 内禁止出现任何汉字及中文标点;
    • LaTeX\LaTeX 与汉字及英文单词之间需要空格,与标点之间无需空格。

公式块

介绍

公式块主要用于表示公式、变量及一般数字。

任何脱离公式块存在的公式、变量及一般数字均是不被允许的。

示例

  • 一般公式块:

    被一对 $ 包裹,可以任意插入于句子中。

    示例

    a,b,ca,b,c

    a+b×ca+b\times c

    Cba+cC^a_b+\sqrt{c}

    $a,b,c$
    
    $a+b\times c$ 
    
    $C^a_b+\sqrt{c}$
    
  • 特殊公式块:

    被一对 $$ 包裹,可以居中显示。

    注意:特殊公式块必须独立成段。

    示例

    i=1nai\sum_{i=1}^n a_i

    $$\sum_{i=1}^n a_i$$
    

语法规范

一般来说,以下字符可以出现在公式块中:

  • 2626 个英文字符的大小写;
  • 小数点 .
  • 阿拉伯数字;
  • 运算符号 +-=!(阶乘),|(绝对值);
  • 逻辑符号 <>|(整除);
  • 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\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 表示将下标由 llrr 的数全部加上 vv

    输入 query l r 表示查询下标由 llrr 的所有数的和。

    若无解,则输出 `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\LaTeX 相似。
  • 若有需要,可以在代码块中使用中文。

特殊规范

  • 对于「字符串」而言,尽管符合「表示特定字符」的用途,但出于美观考虑,一般使用 ABCDEFG\text{ABCDEFG}ABCDEFG\texttt{ABCDEFG} 而非 ABCDEFG

    一般使用 $\text{ABCDEFG}$ 或 $\texttt{ABCDEFG}$ 而非 `ABCDEFG`。
    

    当然,在同一篇文章内,请不要将 \text\texttt 两者混用。

标题块

示例

由于具体示例会影响阅读体验,此处仅展示源码:

# 这是一级标题
## 二级标题
### 三级标题
#### 四级标题

由于五级及以上标题已经与普通加粗大小无异,以此一般情况下不作使用。

对于一般的全部使用同一级标题的文章(如题面等),为了美观考虑,一般仅使用二级标题

语法规范

  • 需遵守「一般规范」,即标题块中不允许出现英文标点,标题块中的英文单词与汉字之间需要空格,英文单词与标点之间无需空格。特殊地,标题块的句末无需标点
  • 标题块内无法识别任何 Markdown 及 LaTeX\LaTeX 语法内容,以此对于以下内容请酌情进行使用。
  • 任何出于将字体放大的动机而在标题块内放置非标题内容均是不被允许的,例如:
    • # 我宣布!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 为什么是神。

步骤如下:

  1. 输入 aa
  2. 输入 bb
  3. 输出 a+ba + b
- Macesuted 为什么可爱:
  - Macesuted 温柔;
  - Macesuted 好看;
  - Macesuted 软乎乎:
    - 脸软;
    - 身子软。

- undefined 为什么是神。
  

步骤如下:

1. 输入 $a$;
2. 输入 $b$;
3. 输出 $a + b$。

有序列表与无序列表均可嵌套。

在部分编辑器中,列表间的间距可以通过以下格式调整:

  • 这样间距会比较大;
  • 这样间距会比较大;
  • 这样间距会比较大。
- 这样间距会比较大;

- 这样间距会比较大;

- 这样间距会比较大。
  • 这样间距会比较小;
  • 这样间距会比较小;
  • 这样间距会比较小。
- 这样间距会比较小;
- 这样间距会比较小;
- 这样间距会比较小。

语法规范

  • 对于任何列表中的内容,均需要符合各自应有的规范。

格式规范

以下规范非强制要求,仅为建议与参考。

  • 对于不是出于末尾的列表,需要以 结尾。否则,则使用 结尾;
  • 对于有下一级列表嵌套的,需要以 结尾。

HydroOJ 特殊语法

这些语法仅能在 HydroOJ 内使用。

@ 用户

@ 均可。

@[](/user/318) 或 [](/user/318) 均可。

需遵循「一般规范」。

插入视频

使用类似于 @[video](https://.../file.mp4) 的方式即可。

需要单独成段。


Rosmarinus\operatorname{Rosmarinus}

5 条评论

  • 有序列表与无序列表 这里边:

    • undefined 是神。
    - undefined 为什么是神。
    
  • 我认真读完了守则,但是还有一个问题。

    假如说我要表示 n,m,kn,m,k,我当然可以用 $n,m,k$,也当然可以用 $n, m, k$

    但是无论用上面两种写法中任意一种,在显示出来的时候这三个字母之间均没有空格。我有点难受,但是不能写成 $n$, $m$, $k$,那我是否可以写成 n,m,kn,\,m,\,k

    $\,$ 是一种 318em\frac{3}{18} \rm em 间距的间隔。

    还有可用的间隔:

    • $\,$ 是一种 318em\frac{3}{18} \rm em 间距的间隔。
    • $\:$ 是一种 418em\frac{4}{18} \rm em 间距的间隔。
    • $\;$ 是一种 518em\frac{5}{18} \rm em 间距的间隔。
    • $\enspace$ 是一种 12em\frac{1}{2} \rm em 间距的间隔。
    • $\quad$ 是一种 318em\frac{3}{18} \rm em 间距的间隔。
    • $\,$ 是一种 318em\frac{3}{18} \rm em 间距的间隔。
    • 很抱歉,没打完就不小心送出去了。若这里内容和上面的内容有冲突,以这里为准。

      • $\quad$ 是一种 1em1\rm em 间距的间隔。
      • $\qquad$ 是一种 2em2\rm em 间距的间隔。
      • $\space$ 是普通的空格。
      • 甚至可以用 $\kern{distance}$ 来表示宽度为 distance 的间距。
      • 甚至可以用 $\k!$ 来表示宽度为 318em-\frac{3}{18}\rm em 的间距。

      如果允许在多个字母之间使用一段代码块且逗号与下一个字母的间隔为 318em\frac{3}{18}\rm em 时,直接允许即可。

      如果允许在多个字母之间使用一段代码块但逗号与下一个字母的间隔不允许为 318em\frac{3}{18}\rm em 时,请给出空格的长度。

      如果干脆不允许这么写,直接拒绝即可。

      感谢您有耐心读完我的问题。Ros 可爱。

    • @ 紧急更正:$\k!$ 改为 $\!$,我写完评论没有认真校对并发送导致了这个错误,实在抱歉,以后我会改的。

      另外建议一下出预览功能,我有点怕我写完 LaTeX\LaTeX 后并不知道 LaTeX\LaTeX 挂了就发送出去,造成更多用户及管理员阅读上的困扰。

    • @ 2021-11-18 18:35:56

      @

      关于 LaTeX\LaTeX 预览功能,可以直接在“偏好设置 - Markdown - 首选编辑模式”里面更改哦~

      建议设置成分屏预览,这样子会方便一点。

    • @ 谢谢,然后那个字母的写法那里呢?

    • @ 2021-11-18 18:43:11

      关于是否能够写成 $n,\,m,\,k$ 的问题(我应该没有理解错),在这里说一下我的看法:

      从语法方面来说,这样子写是没有任何问题的。您的写法和标准写法在表示方面仅仅是字母之间的间隔有一点点差别,这个属于个人偏好问题,但是这种偏好不影响表意,同样非常美观。因此我认为,这样子写完全是没有问题的

      (当然如果是同样的方式但是用了较大的间隔而显得很奇怪的话就不可以了)

      感谢您仔细阅读本规范!

    • @ 2021-11-18 18:43:50

      @

      (刚刚只是先把方便的问题回了,其实一直在打字的)

    • @ 谢谢!Ros 可爱!

  • @ 2021-11-17 16:41:39

    对于原本无法显示在公示快内的字符,可以使用类似于$\{\}$ 的方法来显示,效果为:{}\{\}

    公示快 应改为 公式块

    若想高亮,将想要加粗的文字用一对 == 包裹。

    加粗 应改为 高亮

    • @ 2021-11-13 16:02:58

      建议补充

      1. 反斜杠的使用
      2. 高亮
      3. @
      4. [1]
      5. html
      6. spec 10x10:

      1. 脚注 ↩︎

      • @ 2021-11-14 8:09:26

        got it!

        过几天去写

      • @ 2021-11-14 21:21:56

        已添加:

        • 反斜杠的使用;
        • 高亮;
        • @ 用户;
        • 插入视频;
        • 折叠。
    • @ 2021-11-10 19:33:34

      任何脱离 公式快 存在的公式、变量及一般数字均是不被允许的。

      公式

    • 1