用简短的一页纸介绍
Markdown
基本语法
Markdown语法与Markdown编辑器
Markdown
是一种标记语法
,这种标记语法
需要使用相应的Markdown渲染器
(或称为Markdown解析器
或Markdown编译器
)将Markdown源文件
渲染成最终可读的效果( 类似浏览器引擎
将HTML源文件
渲染成网页
)。
Markdown编辑器
就是可以输入Markdown源文件
并有相应的Markdown渲染器
渲染成最终可读效果的一种工具,一般情况下,Markdown编辑器
都具有实时预览
的功能(每次输入或修改Markdown源文件
都会即时渲染成最终可读效果)。
Markdown语法组成结构
排版
主要包括版面格式
、段落格式
、字符格式
三种组成结构,Markdown
本身没有版面格式
的语法,不过很多markdown编辑工具
可以通过CSS
进行版面格式
设置(比如:ATOM
的MPE
插件)。
由于Markdown
是一种使用标记语法
来定义格式
的排版语法
,因此,就由格式定义字符
来定义格式
:
-
特殊定符
:-
格式定义字符
: 用于定义格式的特殊字符,Markdown
的格式定义字符
有`、*
、_
、()
、[]
、#
、+
、-
、.
、!
(其他扩展的Markdown渲染器
可能有^
、~
、:
等) -
转义字符
: 用于转义并显示特殊字符(而不是使用特殊字符
来定义格式),Markdown
的转义字符是\
(在Markdown
中并不是出现了特殊字符
就必须转义才能显示,而是在特殊字符
在定义上下文
中才需要显式转义
)
-
-
字符格式
: 也称为行内格式
,用于行内某些字符的格式或行为 -
段落格式
: 用于一段或多段之间的格式 -
内嵌HTML
:Markdown
可以直接使用内嵌HTML
来定义Markdown
支持或不支持的结构
注意:在排版
中的段落
(Paragraph
)和换行
(Line Break
)是两个不同的概念,换行
不一定换段落
(在Word
里换行
即换段落
),段落
是一个排版
元素,同一个段落
有共同的段落格式
(多个段落
也可以使用相同的段落格式
),一个段落
可以包括多行
。段落
和多行
之间的一个明显差别就是不同的段落
之间使用的是段落间距
,而多行
之间使用的是行间距
(一般情况下,段落间距
会比行间距
大)。
在最初的Markdown
中进行换行
需要使用<br/>标签
或在行末增加两个或以上的空格
,否则中间没有空行
(什么都没有或只有空格
或TAB符
)的两行会显示在一行中(与HTML源文件
的渲染效果一样)。而中间有空行
的多行即是不同的段落
在GFM
扩展中,不需要使用<br/>标签
或在行末增加两个或以上的空格
也可以显示为多行
,但这多行是同一个段落
,只有中间有空行
的多行
才是不同的段落
。
Markdown字符格式
粗体
使用**
或__
(两个下划线
字符)包围的字符将被渲染成粗体。
粗体
的Markdown
源文件:
**这是粗体**
__这也是粗体__
粗体
的渲染效果:
这是粗体
这也是粗体
斜体
使用*
或_
包围的字符将被渲染成斜体
斜体
的Markdown
源文件:
*这是斜体*
_这也是斜体_
斜体
的渲染效果:
这是斜体
这也是斜体
备注:中文字符一般不使用斜体,因为中文的斜体不怎么好看
行内代码
使用 ` (键盘中~
字符所在的按键)包围的字符将被渲染成行内代码
(HTML
里的<code>标签
)。
行内代码
的Markdown
源文件:
这是`行内代码`
行内代码
的渲染效果:
这是行内代码
链接
Markdown
可以使用inline-sytle
和reference-style
两种方式定义链接
。
inline-style
的语法:[link-text](url-link "optional-tips")
,其中:
-
link-text
: 显示的链接文本
-
url-link
:url链接
-
optional-tips
: 当鼠标
放置在link-text
上显示的提示
reference-style
的语法包括两部分:
[link-text][reference-id]
-
[reference-id]:url-link "optional-tips"
: 在同一个文件的其他段落定义
链接
的Markdown
源文件:
这是[百度搜索](www.baidu.com "使用百度进行搜索")inline-style
这是[百度搜索][baidu]reference-style
[baidu]:www.baidu.com "使用百度进行搜索"
链接
的渲染效果:
这是百度搜索inline-style
这是百度搜索reference-style
Markdown段落格式
标题
Markdown
支持两种标题定义方式:
-
setext-style
: 支持一级和二级标题,通过在单独的一行中定义标题格式,多于一个=
字符定义为一级标题
、多于一个-
字符表示二级标题
-
atx-style
: 支持一级至六级标题,通过在标题行前的#
字符定义标题,一个#
定义一级标题
、两个#
定义二级标题
,以此类推支持最多定义到六级标题
setext-style
标题的Markdown
源文件:
这是一级标题
=
这是二级标题
-
atx-style
的Markdown
源文件:
# 这是一级标题
## 这是二级标题
###### atx-style支持到六级标题
建议使用atx-style
定义标题,一方面atx-style
可以支持至六级标题
,另一方面atx-style
不需要使用单独一行定义标题格式。
列表
列表的类型
列表分为有序列表
和无序列表
两种基本列表,列表之间可以嵌套(通过增加1个TAB
或4个空格
的缩进
)形成多级列表
。
有序列表
使用非负数字
+.
+一个或以上空格
定义有序列表
,非负数字
不必要从1
递增,Markdown
在渲染时会从1
开始自动递增(当有序列表
的第一行是0.
时从0
开始递增,多级列表
的第二级开始不支持从0
开始)。
有序列表的Markdown
源文件:
0. 这是一级有序列表
1. 这是二级有序列表
1. 这是三级有序列表
8. 这是一级有序列表
0. 这是一级有序列表
有序列表的渲染效果:
- 这是一级有序列表
- 这是二级有序列表
- 这是三级有序列表
- 这是二级有序列表
- 这是一级有序列表
- 这是一级有序列表
无序列表
使用一个*
或+
或-
加上一个以上空格
定义无序列表
。
无序列表的Markdown
源文件:
* 这是无序列表
+ 这是无序列表
- 这是无序列表
+ 这是一级无序列表
1. 这是二级有序列表
1. 这是二级有序列表
+ 这是一级无序列表
无序列表的渲染效果:
- 这是无序列表
- 这是无序列表
- 这是无序列表
- 这是一级无序列表
- 这是二级有序列表
- 这是二级有序列表
- 这是一级无序列表
引用
Markdown
使用email-style
(>
字符)定义引用
,引用
段落有条竖线展示这是一个引用
段落,引用
段落可以是多级的。
引用的Markdown
源文件:
>这是一级引用
>>这是二级引用
>>>这是三级引用
>>这还是三级引用
>这还是三级引用
>新的引用段落
引用的渲染效果:
这是一级引用
这是二级引用
这是三级引用
这还是三级引用
这还是三级引用
新的引用段落
图片
Markdown
中嵌入图片
的语法跟链接
的语法类似,差别在于嵌入图片
比嵌入链接
前多了个!
特殊字符表示这是一个指向图片
的url
。
图片的Markdown
源文件:
这是一张使用inline-style链接的图片
[图片上传失败...(image-6ec809-1531624818276)]
这是一张使用reference-style链接的图片
![当图片无法显示时出现这个文本][reference-id]
[reference-id]:image-url "optional-tips"
图片链接
最好放在一个单独的段落
中(而不仅仅是不同的行)以便正常显示,因为如果跟文本
在同一个段落
中,有可能因为行高
不够而无法将图片
显示完整。
分隔行
在单独的一个段落中使用三个或多于三个*
或-
或_
将被渲染成分隔行
。
代码块
被 ``` 包围的段落称为代码块
(有些Markdown
解释器支持语法高亮
)。
表格
Markdown
之父 John Gruber 和 Aaron Swartz 发布的Markdown
解释器中没有表格格式
,目前一般使用的表格格式
是GFM
的扩展
表格的Markdown
源文件:
表格字段一|表格字段二|表格字段三|表格字段四
--|:--|--:|:--:
默认居中对齐|左对齐|右对齐|居中对齐
cell|cell|cell|cell
表格的渲染效果:
表格字段01 | 表格字段02 | 表格字段03 | 表格字段04 |
---|---|---|---|
默认左对齐 | 左对齐 | 右对齐 | 居中对齐 |
cell | cell | cell | cell |