概述
Markdown是一种适用于网络的书写语言,Markdown 的理念是,能让文档更容易读、写和随意改。
Markdown中可以随意添加html标签,要制约的只有一些 HTML 区块元素――比如 <div>、<table>、<pre>、<p>
等标签,必须在前后加上空行与其它内容区隔开,还要求它们的开始标签与结尾标签不能用制表符或空格来缩进。
请注意,在 HTML 区块标签间的 Markdown 格式语法将不会被处理,但区段(行内)标签内的Markdown语法是有效的
区块元素
段落和换行
一个Markdown段落由一个或多个连续的文本行组成,前后要有一个以上空行的,普通段落不该由空格和换行符缩进(缩进之后会变为可横滑展示的段落)
换行实现:连续两个以上空格+回车
标题
Markdown支持两种标题的语法
类 Setext 形式是用底线的形式,利用 = (最高阶标题)和 - (第二阶标题),= 和 - 任何数量都可以
1 | 标题H1 |
类 Atx 形式则是在行首插入 1 到 6 个 # ,对应到标题 1 到 6 阶
1 | # H1 |
区块引用
语法:
1 | >引用内容 |
效果:
引用内容
可以嵌套引用
引用的区块内部也可以使用其他的Markdown语法
列表
Markdown支持有序列表和无序列表
无序列表使用星号、加号或者减号作为列表标记
1 | * Red |
等同于:
1 | + Red |
等同于:
1 | - Red |
效果:
- Red
- Green
- Blue
有序列表使用数字加上一个英文句点
1 | 1. One |
列表标记上使用的数字并不会影响输出的HTML效果,所以下面的写法跟上面输出一样的效果
1 | 1. One |
效果:
- One
- Two
- Three
项目标记后面一定要接至少一个空格或制表符,markdownlint认为一个空格符合规范
如果列表项目间用空行分开,在输出 HTML 时 Markdown 就会将项目内容用
<p>
标签包起来
在行首出现数字-句点-空白,要避免这样的状况,你可以在句点前面加上反斜杠
1986\. What a great season.
代码区块
Markdown中建立代码区块很简单,只要缩进4个空格或一个制表符就可以
下面是一个代码块:
代码区块内容
还有一种语法可以实现代码区块,代码块的前一行及后一行使用三个以上单反引号“`”包裹,代码内容无需缩进,可以生成带行号的代码区块
1 | 代码区块内容 |
代码块前后必须都有一个空行
分隔线
在一行中使用三个以上星号、减号、底线来建立一个分隔线,行内不能有其他东西,可以在星号或是减号中间插入空格
下面的写法都可以建立分隔线,markdownlint建议星号语法
***
* * *
*****
- - -
-------
_______
效果:
区段元素
链接
链接渲染为HTML的<a>
标签
Markdown支持两种形式的链接语法:行内式和参考式
行内式
1
[链接文本](链接url "链接标题")
参考式
链接内容定义:[id]: url "title"
链接使用:
[link text][id]
可以先使用,后定义
链接辨别标签可以有字母、数字、空白和标点符号,但是并不区分大小写
隐式链接标记功能让你可以省略指定链接标记,即id = link text
[Google][]
效果:
Markdown中文文档
强调
Markdown使用星号*和底线_作为标记强调字词的符号,会生成<em>
标签(斜体),如果用两个*或_包起来的话,会生成<strong>
标签(粗体)
*em*
_em_
**strong**
__strong__
# 倾斜加粗
***em strong***
# 可以组合使用
__*em strong*__
*__em strong__*
# 删除线
~~文字被删除~~
效果:
em
strong
em strong
文字被删除
代码
如果要标记一小段行内代码,可以用反引号`把它们包起来
1 | `代码` |
可以用多个反引号,实现代码中显示反引号`
图片
Markdown使用和链接相似的语法来标记图片,也可以分为行内式和参考是
行内式
## 其中title可选 ![Alt text](url "title")
参考式
图片定义:[id]: url "title"
图片使用:
![Alt text][id]
目前为止,Markdown没有办法指定图片的宽高,如果需要的话,可以直接使用
<img>
标签
其他
反斜杠
Markdown支持使用反斜杠来转义一些字符,帮助我们插入这些字符
\ 反斜线
` 反引号
* 星号
_ 底线
{} 花括号
[] 方括号
() 括弧
# 井字号
+ 加号
- 减号
. 英文句点
! 惊叹号
例如,要插入井号:\#
自动链接
Markdown支持使用简短的语法来插入网址和电子邮件信箱
处理网址:
<http://example.com/>
处理电子邮件信箱:
<address@example.com>
以上两种语法,不加<>也有同样的效果,且生成的HTML标签也相同,因此个人看<>的作用是在链接插入文本行内时做隔断
内容目录
在段落中填写 [TOC] 以显示全文内容的目录结构,如下:
[TOC]
在支持该功能的编辑器中,一般只要没有语法错误,都能展示,还能自带锚点
脚注
脚注内容本身不会显示在文档中(界面上)
1 | [^1]: 脚注内容 |
插入脚注的地方^1
高级语法
表格
Markdown支持表格的形式来展现文本,表格的语法如下:
表头1 | 表头2 | 表头3
- | - | -
行1列1 | 行1列2 | 行1列3
行2列1 | 行2列2 | 行2列3
效果如下表:
表头1 | 表头2 | 表头3 |
---|---|---|
行1列1 | 行1列2 | 行1列3 |
行2列1 | 行2列2 | 行2列3 |
表格对齐方式:我们可以指定表格单元格的对齐方式,冒号在左边表示左对齐,右边表示右对齐,两边都有表示居中。
表格单元格对齐:
表头1 | 表头2 | 表头3
:- | :-: | -:
行1列1 | 行1列2 | 行1列3
行2列1 | 行2列2 | 行2列3
效果如下表:
表头1 | 表头2 | 表头3 |
---|---|---|
行1列1 | 行1列2 | 行1列3 |
行2列1 | 行2列2 | 行2列3 |
流程图
Markdown语法支持绘制流程图,流程图属于代码块的一种,可以直接使用代码段的语法书写(三个反引号包裹代码段),格式用flow表示,例如:
st=>start: 开始
e=>end: 结束
op1=>operation: 操作1
op2=>operation: 操作2
cond=>condition: 是否选择2
st->op1->cond
cond(yes)->op2->e
cond(no)->e
效果:
流程图语法大体分为两段:
- 定义元素
- 连接元素
定义元素:
1 | 语法:tag=>type: content:>url |
连接元素:
1 | 语法:元素1(判断和位置控制,也可以没有)->元素2 |
一个复杂的流程图
# 定义元素
st=>start: 开始
e=>end: 结束
op1=>operation: 操作
cond=>condition: 条件
sub1=>subroutine: 子任务块
io=>inputoutput: 输入输出块
# 判断和位置控制
st->op1->cond
cond(yes)->io->e
cond(no)->sub1(right)->op1
效果:
其中()中用于判断和线条位置控制,也可以两者同时,例如cond(no, bottom)
以上语法能够满足大部分的Markdown文档编写需求了,如有错漏,欢迎指正~