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项
- 这是第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
有序列表2
有序列表3
有序列表1
有序列表2
有序列表3
有序列表1
有序列表2
有序列表3
- 有时候可能会不小心产生列表,这种情况可以在.号前加一个反斜杠:
比如:
110. 这是110
119. 这是119
110\. 这是110
119\. 这是119
结果
- 这是110
- 这是119
110. 这是110
119. 这是119
表格
- 原生的Markdown并没有制作表格的功能,不过现在大多数都支持了
- |—| 决定了此列表格的对齐方式。
|—| 默认方式对齐
|:—| 左对齐
|:—:| 居中对齐
|—:| 右对齐
比如:
|姓名|性别|年龄|分数|
|---|:---|:---:|---:|
|张三|男|18岁|95分|
|李四|男|19岁|96分|
会生成如下表格:
姓名 | 性别 | 年龄 | 分数 |
---|---|---|---|
张三 | 男 | 18岁 | 95分 |
李四 | 男 | 19岁 | 96分 |
行内代码段和代码区域
行内代码
- 单行的代码在代码的头部和尾部添加一个 `
例如:
这是一个单行代码块: `fmt.Println("hello world!")`
会生成以下代码:
fmt.Println("hello world!")
代码区域
- 方法有以下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>
结果:
红色
评论
Twikoo V1.6.39