Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。1
Markdown具有一系列衍生版本,用于扩展Markdown的功能(如表格、脚注、内嵌HTML等等),这些功能原初的Markdown尚不具备,它们能让Markdown转换成更多的格式

Markdown的优点

  • 兼容HTML
  • 专注文字内容而不用考虑排板样式,你可以安心写作。
  • 轻松导出HTML、PDF、看云甚至可以导出.epub和.mobi(Kindle的专有格式)
  • 纯文本内容、兼容所有的编辑器和文字处理软件。
  • 可读性强、直观、学习成本低
  • 编辑器够多,常见的VSCODE、Typora、github、看云、语雀都可以拿来编辑

Markdown的缺点

  • 衍生版本过多,解析器类型非常多,可能有许多解析器有独特的其它解析器不支持的功能

参考文档

常用语法

段落与换行

段落与段落之间用一个以上的空行表示,例如:

这是一个段落

这是一个段落

会被解析器解析成以下HTML代码

<p>这是一个段落</p>
<p>这是一个段落</p>

如果不隔一个空行,有些解析器会加上<br/>标签;而在另外一些编辑器中则会被解析加入一个空格
如果发现加空格的,可以直接加2个空格在后面,则可段内换行。

粗体和斜体

  • “*“ 或者 “-“ 包裹的字词会转成斜体
  • “**“ 或者 “__“ 包住的词会变成粗体

例如:

*这个是一个斜体的文字*

_这是一个斜体的文字_

**这是一个粗体的文字**

__这是一个粗体的文字__

会解析为:
这个是一个斜体的文字

这是一个斜体的文字

这是一个粗体的文字

这是一个粗体的文字

标题

一般来说,Markdown支持6级标题,通过在前面 # 来表示,当然,也可以使用 # 内容 # 来包裹

# 一级标题
## 二级标题
### 三级标题

结果:

# 一级标题

## 二级标题

### 三级标题

引用

  • 在一行的行首加入 > 即可表示引用

例如:

> 这里是一个引用

生成结果:

这是一个引用

  • 引用可以使用嵌套,只要按层次加入不同数量的 >

例如:

> > 这里是一个嵌套

结果:

这里是一个嵌套

  • 在引用中可以使用其它的Markdown语法,包括标题、列表、代码段等。

例如:

> ## 这是2级标题
>
> 1. 这是第1项
> 2. 这是第2项
>
> 来一个代码段:
> def demo() {
> fmt.Println("hello world!")
> }

结果:

## 这是2级标题

  1. 这是第1项
  2. 这是第2项

来一个代码段:
def demo() {
fmt.Println(“hello world!”)
}

有序列表和无序列表

无序列表

  • 表示方法: *、 + 或 - 作为标记
  • 三种标记结果是相同的

例如:

* 无序列表1
* 无序列表2

+ 无序列表1
+ 无序列表2

- 无序列表1
- 无序列表2

结果:

  • 无序列表1
  • 无序列表2
  • 无序列表1
  • 无序列表2
  • 无序列表1
  • 无序列表2

有序列表

  • 有序列表使用数字接一个英文的句号
  • 有序列表上数字乱写并不会影响结果(PS. 不建议这么写,解析器会略有区别)

例如:

1. 有序列表1
2. 有序列表2
3. 有序列表3

1. 有序列表1
1. 有序列表2
1. 有序列表3

3. 有序列表1
6. 有序列表2
9. 有序列表3

结果:

  1. 有序列表1

  2. 有序列表2

  3. 有序列表3

  4. 有序列表1

  5. 有序列表2

  6. 有序列表3

  7. 有序列表1

  8. 有序列表2

  9. 有序列表3

  • 有时候可能会不小心产生列表,这种情况可以在.号前加一个反斜杠:

比如:

110. 这是110
119. 这是119

110\. 这是110
119\. 这是119

结果

  1. 这是110
  2. 这是119

110. 这是110
119. 这是119

表格

  • 原生的Markdown并没有制作表格的功能,不过现在大多数都支持了
  • |—| 决定了此列表格的对齐方式。
    |—| 默认方式对齐
    |:—| 左对齐
    |:—:| 居中对齐
    |—:| 右对齐

比如:

|姓名|性别|年龄|分数|
|---|:---|:---:|---:|
|张三|男|18岁|95分|
|李四|男|19岁|96分|

会生成如下表格:

姓名 性别 年龄 分数
张三 18岁 95分
李四 19岁 96分

行内代码段和代码区域

行内代码

  • 单行的代码在代码的头部和尾部添加一个 `

例如:

这是一个单行代码块: `fmt.Println("hello world!")`

会生成以下代码:

fmt.Println("hello world!")

代码区域

  • 方法有以下2种:
    1. 行首缩进四个空格或一个制表符
    2. 还有一种是用 ``` 或者 ~~~ 包裹起来

例如:

 \```
func demo() {
fmt.Println("这是一个多行代码块的示例");
}
\```

结果:

func demo() {  
fmt.Println("这是一个多行代码块的示例");
}

分割线

  • 三个星号、减号、下划线来建立
  • 可以在星号或者减号中间加空格
  • 下划线中间不可以加空格(有的解析器也可以,建议不要用)

例如:
***
* * *
---
- - -
___
_ _ _

结果:
***
* * *




链接

  • 用[链接文字](链接URL)建立链接
  • Markdown 原生支持2种形式的链接语法,行内式和参考式

行内式(跳出式外链)

要建立一个行内式的链接,只要在方括号后面紧接圆括号并插入网址链接即可,如果还要加上链接的title文字,只要在网址后面,用双引号把title文字包起来。

例如:

[打败大狗熊](https://blog.del.pub "这是title文字")

结果:
打败大狗熊

参考式(页面标记链接) PS. 不是所有解析器都支持

在链接文字的方括号后面再接上一个方括号,而在第个方括号里填上用以辨识链接的票房,然后在用的地方把这个标记的链接内容定义出来,就可以页面内链。

例如:

这是一个参考式 [百度][1] 的示例,会跳到页面上指定的地方

你可以在任意位置将这个标记的链接内容定义出来

你可以在任意位置将这个标记的链接内容定义出来

你可以在任意位置将这个标记的链接内容定义出来

你可以在任意位置将这个标记的链接内容定义出来

[1]: https://www.baidu.com/ "这是后边儿写的百度链接"

结果:

这是一个参考式 百度 的示例,会将最后面标出的链接引过来

你可以在任意位置将这个标记的链接内容定义出来

你可以在任意位置将这个标记的链接内容定义出来

你可以在任意位置将这个标记的链接内容定义出来

你可以在任意位置将这个标记的链接内容定义出来

简写标签

其实链接可以简写,省掉方括号和括号

例如:

这是一个链接到 [打败大狗熊][] 的例子。

[打败大狗熊]: https://blog.del.pub "这是title文字"

结果:

这是一个链接到 打败大狗熊 的例子。

插入图片

行内式(站外链)

  • 格式:![代替文字](图片链接 “选择性的添加title文字”)

例如:

![这是一张图片](
https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f5bb9a0b-8c0a-425c-9784-c72910fd38a0/52510656-9648-4cf0-8562-ea382703a226.jpg "title文字")

结果:

这是一张图片

参考式

  • 即先写链接和ID,在页面尾巴处写图片信息

![替代文字][id]
[id]: 链接地址 “title”

例如:


![这是一张图片][img]

这里是占位,这里是占位!

[img]: https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f5bb9a0b-8c0a-425c-9784-c72910fd38a0/52510656-9648-4cf0-8562-ea382703a226.jpg

结果:

这是一张图片

这里是占位,这里是占位!


脚注

当我们在编写文档时,需要针对某些名词或者例子做出注释,比如说选自某本书或者文章等等,此时可以用到脚注功能,比如参考文献,标注。

  • 格式: 在要标注的文字后面加上 [^脚注标记] (PS. 这个解析不一致)

例如:


我是打败大狗熊[^脚注01]

[^脚注01]: 这是上面的脚注的详情

结果:

哈哈哈,HEXO竟然也不支持,来张截图吧

转义

Markdown支持在以下字符前面插入反斜杠,在这些字符前面加入反斜杠,将不会被解析成Markdown,而是原样输出

\   反斜线
` 反引号
* 星号
_ 底线
{} 花括号
[] 方括号
() 括弧
# 井字号
+ 加号
- 减号
. 英文句点
! 惊叹号

内联HTML

Markdown 的语法简洁,但有其局限性,所以特意保留了内联html这种方式。任何html标签及其内容,都会原样输出到结果中。也就是说,标签中的星号等作为markdown结构的符号,以及构成html标签和实体的符号,都不会做任何转义。

例子:

<font color="red">红色</font>

结果:

红色