[说明文档] Markdown

发布于 2019-11-16  1.39k 次阅读


Markdown是一种用于很多博客、评论区的标记语言,最常见的用处是 Github 中的 README.md。

本站评论支持 Markdown,采用 Parsedown 作为解析器。此外,在本站还有这些地方会用到 Markdown:

  • 大多数授权普通用户编辑的文章中
  • 试卷的解答题区域中(目前没有发布过试卷)

图标含义:

属于Markdown标准

在代码块中仍然起作用(因此危险),并且不能用 \ 字符屏蔽。

仅适用于此处(多以短码形式体现)

无法使用“只使用HTML”功能屏蔽

警告:误区

有的人一看到支持Markdown就打 [url=https://www.baidu.com/]百度一下[/url]。注意,这是 BBCode 而不是 Markdown,因此在此处不工作。

说明:这不是Markdown。Markdown超链接格式是 [链接文字](https://example.com/ "悬停提示")

分段与换行

第一段

第二段.1
第二段.2

在Markdown中,空一行代表分段。

段内回车会造成不分段的换行。(注意,Markdown 标准中并非如此)

段落的内容不可使用Tab或空格缩进。

第一段

第二段.1  
第二段.2

标题

一级标题

一级标题2

二级标题

二级标题2

三级标题

四级标题

五级标题
六级标题

行首的 # 表示此行是标题,标题级别等于 # 的数量。在 # 之后,需要加一个空格。

在一行文字下方加上 ---(数量可以更多) 也可以表示二级标题,加上 ===(数量可以更多) 也可以表示一级标题。

一般来说,标题从二级标题开始用,即始终不使用一级标题。

# 一级标题

一级标题2
===

## 二级标题

二级标题2
---

### 三级标题

#### 四级标题

##### 五级标题

###### 六级标题

粗体、斜体和删除线

粗体
斜体
粗斜体
混合语法test
删除线
混合语法test

一对 ** 之间的文本是粗体,一对 * 之间的文本是斜体,一对 ~~ 表示删除线。

**粗体**
*斜体*
***粗斜体***
*混合**语法**test*
~~删除线~~
~~*混合**语法**test*~~

如果需要在文章中使用 * ~ _ 等字符,则需要在这些字符前面添加 \

*这不是斜体*

**这不是加粗**

*这不是斜体\*

\*\*这不是加粗\*\*

分割线



三个或以上连续(或中间有换行符)的 -* 表示分割线。

****

---

同样,通过在每个字符前加上 \ 可以避免被转换为分割线。-* 混用不表示分割线。

---

****

-*-

-\-\-

\*\*\*\*

-*-

列表与列表嵌套

  • 无序表
  1. 有序表
  • 嵌套无序表
    • 嵌套项1
    • 嵌套项2
  1. 嵌套有序表
    1. 嵌套项1
    2. 嵌套项2

可以用 - + * 作为无序表符号,符号后要有空格。同一个无序表中使用的符号要统一。

在数字编号后加一个句点,然后空格,会自动生成有序表。嵌套的有序表会自动设定能够体现嵌套的序号。

有序表的数字编号如果是错的,会被自动更正。

以上两者均可以用缩进法实现嵌套(缩进为2个空格)。有序表嵌套和无序表相同。

- 无序表
- 二
- 三

1. 有序表
2. 二
3. 三

- 嵌套无序表
- 二
  - 嵌套项1
  - 嵌套项2
- 三

1. 嵌套有序表
4. 二
  1. 嵌套项1
  2. 嵌套项2
3. 三

如果不希望内容被识别为有序或无需列表,可以妥善使用 \ 符号。

- 这不是列表
- 这也不是列表
- 这还是不是列表

1. 这不是列表
2. 这也不是列表
3. 这还是不是列表

- 这不是列表
\- 这也不是列表
\- 这还是不是列表

1\. 这不是列表
2\. 这也不是列表
3\. 这还是不是列表

引用

引用文本1.2

引用文本2.1

引用

引用的引用或引用中的引用。(禁止套娃)
Markdown基础语法仍然可以用于引用内容。

但是其样式可能会有不同。

> 引用文本1.1

> 引用文本1.2

> 引用文本2.1

> 引用
> > 引用的引用或引用中的引用。(禁止套娃)
> **Markdown**基础语法**仍然可以**用于引用内容。
> ### 但是其样式可能会有不同。

链接与图片

百度一下

替代文本

链接语法为 [链接文字](https://example.com/ "悬停提示")

图片语法类似 ![替代文本](https://vjudge.net/static/images/beiju.jpg "悬停提示")。(图片无法加载时会以“替代文本”来取代图片;悬停提示并非必须)

注意网址一定要加上 https:// 等协议标志。如果不加上,将会引用相对资源,即如果文章页面是 https://ak-ioi.com/114514-a-cup-of-null-juice/,你给出的网址是 www.baidu.com/favicon.ico,那么引用的图片将是 https://ak-ioi.com/114514-a-cup-of-null-juice/www.baidu.com/favicon.ico,当然无法加载。

[百度一下](https://www.baidu.com/?from=toxic2018.ml "百度一下")

![替代文本](https://vjudge.net/static/images/beiju.jpg "vjudge的卧槽")

注意,本站不会自动将直接打出的网址转换为可点击的链接。

http://vjudge.net/problem/description

https://vjudge.net/problem/description

插入简单HTML

这是一个图标:

有时候 Markdown 并无法满足你的编辑要求。此时允许直接插入简单的 HTML 代码。

评论和文章编辑(如果用户被授权)仅支持极少的 HTML,其余 HTML 标签将被直接删除。请尽量避免这种情况。

这是一个图标:<span class="fa fa-home"></span>

不使用 Markdown

如果你只希望使用 HTML,或者不希望 Markdown 解析器介入,在文章或评论的任意位置加入 <!--PARSEDOWN_DO_NOT_PARSE--> 即可。

插入代码

这是一段行内代码:print("Hello, world!")

这是一长串代码:

//请勿尝试运行。若运行后果自负
#include<bits/stdc++.h>
#include<windows.h>
#include<winable.h>
using namespace std;

int main(){
    cout<<"你自由了!"<<endl;
    FreeConsole();
    while(1){
        BlockInput(1);
    }
}

在行内贴代码时,在代码两端加上 "`" 符号。

长串代码切忌直接粘贴(这甚至会导致“用标题行强调头文件重要性”的局面),应当在前后各加三个 "`"。如果需要代码高亮,请在代码前的符号后面直接跟上语言。如"cpp"。

这是一段行内代码:`print("Hello, world!")`

这是一长串代码:
```cpp
//请勿尝试运行。若运行后果自负
#include<bits/stdc++.h>
#include<windows.h>
#include<winable.h>
using namespace std;

int main(){
    cout<<"你自由了!"<<endl;
    FreeConsole();
    while(1){
        BlockInput(1);
    }
}

```

表格

姓名 语文 数学 总分
A 82 100 182
B 10 3 13
C 99 95 194

表格不需要对齐。

| 姓名    | 语文 | 数学 | 总分 |
| ------- | ---- | ---- | ---- |
| A       | 82   | 100  | 182  |
| B       | 10   | 3    | 13   |
| C       | 99   | 95   | 194  |

LaTeX / 数学公式

将 LaTeX 代码包含在两个 $ 字符中,可创建行内公式。

将 LaTeX 代码包含在左右各两个 $ 中,并且独立成行,会生成多行公式并居中。

这是一个公式:a^2 + b^2 = c^2

这是一个多行居中公式:

I\ AK\ IOI

这是一个公式:$a^2 + b^2 = c^2$

这是一个多行居中公式:

$$I\ AK\ IOI$$

利用 LaTeX,甚至可以做出超出公式范围的、有趣而有害的排版。

要使用 LaTeX,必须在评论开头加上 <!--edit:markdown-->

提示框

本文介绍的不是以下内容:

  • 设置端口转发实现外网对内网的访问。
  • 利用移动热点实现访问。
  • 向运营商申请公网 IP。
  • 使用付费的组网服务。

本文所述方法具有一定风险,且未经过反复验证,请谨慎对待。

若修改扩展名后无法双击运行,请检查文件管理器是否已开启扩展名显示。

不要尝试在真机上不加隔离地运行这些程序!这可能会对系统造成难以恢复的破坏。

提示框可以有效引起读者的注意。颜色的选择应当与内容相关。

[FMTinfo]

本文介绍的不是以下内容:

- 设置端口转发实现外网对内网的访问。
- 利用移动热点实现访问。
- 向运营商申请公网 IP。
- 使用付费的组网服务。

[/FMTinfo]

[FMTwarn]

本文所述方法具有一定风险,且未经过反复验证,请谨慎对待。

[/FMTwarn]

[FMTsuccess]

若修改扩展名后无法双击运行,请检查文件管理器是否已开启扩展名显示。

[/FMTsuccess]

[FMTerror]

不要尝试在真机上不加隔离地运行这些程序!这可能会对系统造成难以恢复的破坏。

[/FMTerror]

特殊格式

有颜色的文字

标记文本

不可告人的东西

// 注释文本

黑板文本

这些格式是本站特有的,在其他网站不会起作用。

[FMTcolor=red]有颜色[/FMTcolor][FMTcolor=blue]的文字[/FMTcolor]

[FMTbcolor=yellow]标记文本[/FMTbcolor]

[FMTredacted]不可告人的东西[/FMTredacted]

[FMTmeta]元数据行[/FMTmeta]

[FMTcmt]*// 注释文本*[/FMTcmt]

[FMTblackboard]黑板文本[/FMTblackboard]

注意:只能使用 red blue green 基本单词作为颜色,不支持颜色代码。

提示:形如 [/FMTxxx] 的标签均可以 [/] 代替,但是不建议这么做。

屏蔽器[blank]

下面是一些危险的代码:

<!--PARSEDOWN_DO_NOT_PARSE--> ——不能直接打出,否则Markdown会失效(见“只使用HTML”章节)

[FMTcolor=red]示例文字[/FMTcolor] ——不能直接打出,否则会被理解成是文字颜色(见“文字颜色”章节)

### 标题行 ——不能直接打出,否则会变成标题。

[blank] ——不能直接打出,否则会被清除。

实际上,这些代码的打法大同小异。在本站,如果使用 Markdown,那么系统会自动清除文档中的 [blank]。因此,在想打出“有活性”(即,会被Markdown和本站系统处理的代码)时,可以在这个代码中插入一个 [blank],使其失去活性。而输入的 [blank] 则会自动清除,不会影响视觉效果。实际上,本站上利用中括号处理的代码都是不能直接放进代码块的,此时也要用 [blank] 分隔。

下面是一些危险的代码:

`<!--PARSEDOWN[blank]_DO_NOT_PARSE-->`  ——不能直接打出,否则Markdown会失效(见“只使用HTML”章节)

[FMTcol[blank]or=red]示例文字[/FMTc[blank]olor]  ——不能直接打出,否则会被理解成是文字颜色(见“文字颜色”章节)

[blank]### 标题行  ——不能直接打出,否则会变成标题。

[bla[blank]nk]  ——不能直接打出,否则会被清除。

授权编辑注意事项

如果你不在参与任何文章的编辑,则无需继续往下看。

有的用户可能会被授权编辑某一文章。请在编辑时遵循以下规则。

不要搞破坏

不要破坏文章。

提示:文章每次编辑都会生成历史版本。要还原被破坏的文章非常容易。

不要修改文章属性

除非必须,不要修改文章的标题、别名、分类目录、标签、形式、自定义字段、可见性等属性。你不懂这些东西,会搞错的。

不要乱删 HTML 注释

对于 Markdown 格式的文章,开头的 <!--edit:markdown--> 用于标记该文章的格式,请不要将其删除。

若不慎删除该注释并保存(这会导致进入 Gutenberg 编辑器),请不要试图在 Gutenberg 编辑器中修复问题(这会损坏文章)。正确的做法是,在地址栏末尾追加 &editormd 以强制进入 Markdown 编辑器,然后补加该注释并保存。

如果可能,不要使用搜狗输入法

搜狗输入法在某些情况下会触发编辑器故障,造成更改丢失,甚至文章损坏。建议使用 Windows 10 系统自带的输入法。

如果你的系统中存在搜狗输入法,请在每次点击或聚焦到浏览器窗口后都检查一次输入法是否正确。搜狗输入法未能正确处理 Meta + 空格 的输入法切换快捷键(引入于 Windows 8),因此改变窗口焦点后输入法可能切换回搜狗输入法。

统一粗体和斜体的写法

除特别说明外,粗体和斜体均用 * 表示。

例外:

  • 记载名场面时,场景提示语和旁白语句的斜体使用 _ 使用。

统一标题的表示

不得在文章中使用一级标题。标题级别应当逐级增加,不可跳级(网站的外观已经足以用来区分所有不同级别的标题)。

所有标题应当用 # 字符表示。

不要用整体缩进的方法表示多行代码

请始终使用 ``` 表示代码块,并且必须标明代码的语言。语言不清楚,或不在下面列表中的,按纯文本对待。

  • plain = 纯文本
  • cpp = C/C++
  • csharp = C#
  • java = Java
  • javascript = JvavSpcirt
  • python = Python
  • pascal = Pascal
  • markdown = Markdown
  • html = HTML
  • json = JSON
  • jsonc = 允许注释和多余逗号的 JSON
  • toml = TOML
  • css = CSS
  • yaml = YAML
  • php = PHP

规范使用行内代码

行内代码不是当引号用的。如果行内代码的内容不是代码、哈希值、元素指代、字符串、字符、按键或标识符,应当按照语言规范使用引号。

表示组合键时,每个键单独一个行内代码块。比如,应该写 Ctrl + C 而不是 Ctrl + C。多步组合键应当形如 Ctrl + K | Ctrl + D

某些按键应当规范表示:

  • PageUp => PageUp
  • PageDown => PageDn
  • Ins => Insert
  • Delete => Delete
  • NumLock => NumLock
  • CapsLock => CapsLock
  • 从 0 向右数的第三个键 => =
  • 小键盘符号 => NUMPAD+ NUMPAD/ NUMPAD_ENTER ...
  • 小键盘数字 => NUMPAD0 ~ NUMPAD9
  • 上下文菜单 => Menu
  • 笔记本功能切换键(一般不写出) => Fn
  • Windows 徽标键 => Meta

统一缩进的表示

多行代码块中的缩进应当一律使用 Tab;其余情况下,一律使用两个空格表示缩进。

不要使用全角空格

若创造与中文字等宽的间隔,请勿直接在 Markdown 编辑器中使用全角空格( )。输入两个连续的半角空格,系统会将其转化为全角空格。

不要同时编辑

如果文章页显示有人正在编辑,请不要贸然接管编辑权。同时编辑可能造成问题。

若需要接管编辑权,请先通过其他方式与页面上显示的用户取得联系,并使其停止编辑。

不要闲置编辑页面

停止编辑或较长时间暂停编辑的用户应当关闭编辑页面,防止一直占用编辑权。


undefined