Reference:
Mardown语法说明
Markdown的宗旨:Markdown的目标是实现易读易写。可读性无论如何都是最重要的。
与HTML的兼容
Markdown对HTML兼容,Markdown之外的标签可以使用HTML撰写。
需要注意的是HTML区块标签需要在前后加上空行和其他内容隔开,且要求开始和结尾标签不能用制表符(tab)或空格来缩进。
在HTML区块标签间的Markdown格式语法不会被处理,但Markdown语法在HTML区段标签间是有效的,同时HTML区段标签也可以在Markdown段落中直接使用,。
&与<
在Markdown的HTML区段中的如果出现这两个特殊字符,Markdown在转换时会将其自动转换为HTML的实体。
区块元素
链接
Markdown的链接有行内式和参考式两种,行内式易写,参考式易读。
行内式链接
语法为中括号
+小括号
,中括号中是链接文字,小括号内为链接和title(title在鼠标悬停在链接上显示的提示信息),链接可以为同一主机的相对地址,title用双引号包起来,title可有可无。
链接使用+地址定义:
This is [an example](http://example.com/ "Title") inline link.
参考式链接
语法为中括号
+中括号
,第二个中括号中为链接的标识,然后在任何位置(一般为文末或者段后)用标记
:链接地址
+"title"
的方式将链接内容定义出来即可,链接标识不区分大小写,可以为空,为空时为隐式标识,即标识为前面中括号中的内容。
链接使用:
This is [an example][id] reference-style link.
地址定义:
[id]: http://example.com/ "Optional Title Here"
强调
Markdown可为段落中的文字加斜体、粗体和删除线三种方式来进行内容强调。方法是为要强调的文字前后分别加*
、**
和~~
,其中斜体和粗体分别会为文字加上<em>
和<strong>
标签。
代码
如果要标记一小段的行内代码,可以使用反引号`
将其包起来,如果要在代码段中使用反引号,可以使用一个以上的反引号的开始和结束代码段:代码段中有`
。行内代码中的&
和<>
同样会被转换为对应的HTML实体。
图片
插入图片和插入连接的语法基本相同,也分为行内式和参考式,区别是插入图片需要在前面加上!
,第一个[]
中是图片的替代文字,并不会显示。Markdown不支持指定图片宽高,如果有需求可以使用HTML的<img>
标签。
区段元素
段落和换行
Markdown的段落由一个或多个连续的文本行组成,一个段落的前后要求各有至少一个的空白行。
Markdown允许段落中换行(插入换行符),并不会把换行符都转换为<br />
,连按两个空格再换行,Markdown才会将此换行符转为<br />
。
标题
Markdown的标题支持Setext(底线)和atx两种形式的标题,但一般使用atx形式,即在行首插入1~6个#
,对应1~6阶标题。
区块引用
Markdown使用>
标记区块引用,Markdown允许只在段落的首行添加>
标记,同时区块引用可以嵌套,添加不同数量>
即可,而且在区块内也可以使用Markdown语法。
区块(示例)
三级区块
列表
- Markdown的列表可分为有序列表和无序列表。有序列表使用数字接一个英文句点作为标记,数字可以是乱序的(会自动排),但最好保持有序。无序列表使用
*
,+
和-
作为标记,他们的功能一样,建议在做列表嵌套时使用不同的标记来做区分。第一级的列表标记一般放在最左边,但也可以缩进(最多3个空格,4个空格=一个tab,会被视为嵌套)。
- 注意:如果列表项目间用空行分开,在输出HTML时项目内容将会用
<p>
标签包起来。 - 列表的项目下允许有多个段落,每个项目下的段落都必须缩进一个tab。
列表项目中可以嵌套区块引用,需要在区块前加空行,并对区块进行一个tab的缩进,如下:
嵌套的区块
列表项目中还可以嵌套代码块,代码块需要前面加空行,并进行两个tab的缩进,如下:
// 这就是代码 printf("hello, world");
列表下也可以嵌套表格
|左对齐标题 |右对齐标题 |居中对齐标题 |
|:– |–: |:–: |
|短文本 |中等文本 |稍微长一点的文本 |
|稍微长一点的文本|短文本 |中等文本 |- 如果一定会在句首出现数字+句点+空白,那么可以在句点前加上反斜杠
\
。
表格
和其他区块一样,表格前也需要有空白行,使用|
来区分列,第一行为标题,第二行指明同一列的文字对齐方式:--
表示左对齐,--:
表示右对齐,:-:
表示居中对齐,---
表示默认对齐方式,即标题居中内容靠左。表示对齐的符号可以有多个-
,但-
和:
加起来要不少于三个。
示例:
左对齐标题 | 右对齐标题 | 居中对齐标题 |
---|---|---|
短文本 | 中等文本 | 稍微长一点的文本 |
稍微长一点的文本 | 短文本 | 中等文本 |
代码区块
Markdown中使用一个tab的缩进和一个段落(前后加空行)即可插入代码块,代码块会持续到没有没有缩进的那一行,也可以不使用缩进,而是在代码块的前后加上各加一行三个(或以上)反引号`
。
在转换的时候,Markdown会将代码用<pre>
和<code>
标签包起来,在代码块中,Markdown语法不会被转换,而缩进的制表符也会被移除,同时&
、<
和>
这种HTML特殊符号也会自动转为HTML实体,例如:
<div class="footer">
© 2004 Foo Corporation
</div>
分隔线
可以使用三个及以上的*
、-
和减号来建立一个分隔线,分隔线行内不能有其它东西(*
和-
之间可以插入空格),例如:
分隔线还有分隔出单独一段的效果,为了避免直接在文字后加-
,而和Setext(底线)标题语法混淆,分隔线前应留一个空白行,或建议使用****
。
其他
自动链接
Markdown支持用比较简短自动链接形式来处理网址和电子邮箱,只需要用尖括号包起来即可。
如邮箱youxiang@qq.com,网址http://www.baidu.com。值得一提的是邮箱地址的字符会被Markdown转换为对应的16进制码的HTML实体,以防御一些邮箱收集机器人。
反斜杠
Markdown中的语法符号要直接显示而不表示语义的时候,可以在符号前面加\
来转义。
对应的符号有:
\ 反斜杠
` 反引号
* 星号
_ 底线
{} 大括号
[] 中括号
() 小括号
# 井号
+ 加号
- 减号
. 英文句点
! 惊叹号