用简短的一页纸介绍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中进行换行需要使用
标签或在行末增加两个或以上的空格,否则中间没有空行(什么都没有或只有空格或TAB符)的两行会显示在一行中(与HTML源文件的渲染效果一样)。而中间有空行的多行即是不同的段落
在GFM扩展中,不需要使用
标签或在行末增加两个或以上的空格也可以显示为多行,但这多行是同一个段落,只有中间有空行的多行才是不同的段落。
Markdown字符格式
粗体
使用**或__(两个下划线字符)包围的字符将被渲染成粗体。
粗体的Markdown源文件:
粗体的渲染效果:
这是粗体
这也是粗体
斜体
使用*或_包围的字符将被渲染成斜体
斜体的Markdown源文件:
斜体的渲染效果:
这是斜体
这也是斜体
备注:中文字符一般不使用斜体,因为中文的斜体不怎么好看
行内代码
使用 ` (键盘中~字符所在的按键)包围的字符将被渲染成行内代码(HTML里的标签)。
行内代码的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源文件:
链接的渲染效果:
这是百度搜索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源文件:
图片链接最好放在一个单独的段落中(而不仅仅是不同的行)以便正常显示,因为如果跟文本在同一个段落中,有可能因为行高不够而无法将图片显示完整。
分隔行
在单独的一个段落中使用三个或多于三个*或-或_将被渲染成分隔行。
代码块
被 ``` 包围的段落称为代码块(有些Markdown解释器支持语法高亮)。
表格
Markdown之父 John Gruber 和 Aaron Swartz 发布的Markdown解释器中没有表格格式,目前一般使用的表格格式是GFM的扩展
表格的Markdown源文件:
表格的渲染效果:
表格字段01
表格字段02
表格字段03
表格字段04
默认左对齐
左对齐
右对齐
居中对齐
cell
cell
cell
cell