Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成有效的XHTML(或者HTML)文档。由于 Markdown 的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,目前许多网站都广泛使用 Markdown 来撰写帮助文档或是用于论坛上发表消息。如 GitHub、Reddit、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge、简书等,甚至还能被用来撰写电子书。
Markdown 的语法没有唯一的官方标准,毕竟 Aaron Swartz[1] 英年早逝。但是开源界普遍接受 GFM(GitHub Flavored Markdown)作为既定事实标准。所以我们也按照这个标准进行规范,另外对 Markdown 可以多种表达的语法结构做一定约束。
HackMD 这个网站提供了很多更高级的语法,我觉得也值得一用,只是没有那么强的普适性。
Markdown 的语法不多,核心部分的语法更少。
在 HackMD 网站上最快的查询方式就是在编辑的时候点击这个页面最上方那个问号
Markdown 的标题有三种写法,只需要记忆和使用一种(单侧形式):
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题
标记 | 语法 | 示例 |
---|---|---|
加粗强调 | 两个 ** 包围起来 |
加粗的内容 |
斜体强调(中文场景下并不推荐使用) | 一个 * 包围起来 |
斜体的内容 |
下面几个标记是扩展的 Markdown 语法,不一定全部支持,但是 HackMD 网站支持。
标记 | 语法 | 示例 |
---|---|---|
高亮强调 | 两个等号 == 包围起来 |
高亮的内容 |
插入强调 | 两个加号 ++ 包围起来 |
插入的内容 |
删除 | 两个波浪号 ~~ 包围起来 |
|
上标 | 一个转折号 ^ 包围起来 |
需要被上标的内容 |
下标 | 一个波浪号 ~ 包围起来 |
需要被下标的内容 |
行内公式 | 一个美元号 $ 包围起来 |
勾股定理 |
行内代码 | 一个反撇号 ` 包围起来 | Python 里面的 print('Hello World!') |
你可以注意到:
[text](link "title")
其中:
http:/https:
的超文本传输协议来访问网页ftp:
等文件传输协议,或者是 weibo:
这样的私有协议#anchor
,定位到网页的具体位置,在 markdown 中,每一级的标题都可以当作锚链接使用如果你只想展示一个链接也可以:
<>
把链接包围起来 mailto:kchen2991@gmail.com
实际上图片只比链接多了一个感叹号!
,其中:
减号 -
、加号 +
、星号 *
加空格都可以引导一个无序列表:
-
项目一-
项目一-
项目一*
项目二*
项目二+
项目三+
项目三数字加点加空格就可以引导一个有序列表:
用三个反撇围出一块区域,区域内都是代码,不会被识别成任何 Markdown
这个区域内的东西随便写
大量的空格和 **语法** 都是允许的
code is better for this.
用两个美元符号围出一块区域,区域内都是公式
一段话如果是引用的,就用大于号加空格引导
我家门前有两棵树,一棵是枣树,另一棵也是枣树。
—— 鲁迅
分割线,下面是进阶知识
多级标题约定使用「单侧
#
号表示」也即:
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题
#
号,而非双侧形式 # 一级标题 #
#
号和标题之间必须添加一个空格
空行
---
和 ===
(deprecated)Markdown 任意段落之间必须使用一个
空行
隔开:
# 标题下面要空行
段落1,哪怕很短,下一个段落也要空行。
段落2,下一个段落是有序列表,也需要空行:
1. 这是有序列表1,下一个序号不需要空行
2. 这是有序列表2,可以通过缩进混合无序列表使用
- 这是无序列表,下一个表项也不需要空号
- 列表结束之后也需要空行
> 这是一段引用。
>
> 引用内部形成段落也需要空行⬆️。
>
> > 引用层级可以嵌套
上面正确的语法会被各种编辑器和以及网页正确的 parse 和渲染:
段落1,哪怕很短,下一个段落也要空行。
段落2,下一个段落是有序列表,也需要空行:
这是一段引用。
引用内部形成段落也需要空行⬆️。
引用层级可以嵌套
</br>
自闭合标签,而非段落标签 <p></p>
,因此记得段落之间保持的一个单独的空行1. 有序列表
,- 无序列表
,> 引用
,# 标题
块级代码统一使用三个反引号 ` 符号,而非使用8个空格的缩进方式
块级代码使用三个反引号的包围结构有以下好处:
清晰的开始和结束边界
可以指明代码块的语法高亮语言
```python
code here
```
# 文档标题
开始,或二级标题 ## 文档章节
开始,不能没有标题没有层级,或则随意从三级、四级标题开始下面给大家附上 GitHub Flavored Markdown 语法手册,其中具有多种写法的语法点,我都在上面做了约束,下面的方便不熟悉语法的同学速查。大家也可以在 GitHub 官方网站中查看到更为详细的信息:GFM 文档
Markdown 语法:
# 第一级标题 `<h1>`
## 第二级标题 `<h2>`
###### 第六级标题 `<h6>`
Markdown 语法:
*这些文字会生成`<em>`*
_这些文字会生成`<u>`_
**这些文字会生成`<strong>`**
__这些文字会生成`<strong>`__
效果如下:
这些文字会生成<em>
这些文字会生成<u>
这些文字会生成<strong>
这些文字会生成<strong>
Markdown 语法:
* 项目一 无序列表 `* + 空格键`
* 项目二
* 项目二的子项目一 无序列表 `TAB + * + 空格键`
* 项目二的子项目二
效果如下:
* + 空格键
TAB + * + 空格键
Markdown 语法:
1. 项目一 有序列表 `数字 + . + 空格键`
2. 项目二
3. 项目三
1. 项目三的子项目一 有序列表 `TAB + 数字 + . + 空格键`
2. 项目三的子项目二
效果如下:
数字 + . + 空格键
TAB + 数字 + . + 空格键
Markdown 语法:
- [ ] 任务一 未做任务 `- + 空格 + [ ]`
- [x] 任务二 已做任务 `- + 空格 + [x]`
效果如下:
- + 空格 + [ ]
- + 空格 + [x]
Markdown 语法:

格式: 
效果如下:
Markdown 语法:
email <example@example.com>
[GitHub](http://github.com)
自动生成连接 <http://www.github.com/>
效果如下:
Email 连接: example@example.com
连接标题Github网站
自动生成连接像: http://www.github.com/ 这样
Markdown 语法:
某某说:
> 第一行引用
> 第二行费用文字
效果如下:
某某说:
第一行引用
第二行费用文字
Markdown 语法:
像这样即可:`<addr>` `code`
效果如下:
像这样即可:<addr>
code
Markdown 语法:
```js
function fancyAlert(arg) {
if(arg) {
$.facebox({div:'#foo'})
}
}
```
效果如下:
function fancyAlert(arg) {
if(arg) {
$.facebox({div:'#foo'})
}
}
Markdown 语法:
第一格表头 | 第二格表头
--------- | -------------
内容单元格 第一列第一格 | 内容单元格第二列第一格
内容单元格 第一列第二格 多加文字 | 内容单元格第二列第二格
效果如下:
第一格表头 | 第二格表头 |
---|---|
内容单元格 第一列第一格 | 内容单元格第二列第一格 |
内容单元格 第一列第二格 多加文字 | 内容单元格第二列第二格 |
Markdown 语法:
加删除线像这样用: 删除这些
效果如下:
加删除线像这样用: 删除这些
以下三种方式都可以生成分隔线:
***
*****
- - -