Markdown 简介
Markdown 是一种用来写作的轻量级标记语言, 用一些简单的标记, 来代替常见的排版格式, 它使我们专心于码字, 不必花太多精力在排版上.
Markdown 文档是纯文本文件, 直接在记事本里, 就可以编写 Markdown 文档, 但是 Markdown 文档中的标记需要 Markdown 解析器(或称为渲染器)才能变成成排版的样式, 很多 Markdown 编辑器内置了解析器, 在写 Markdown 文档的同时, 就可以预览排版格式了. 这里推荐几个比较不错的 Markdown 编辑器:
- Typora (Windows, Mac, Linux)
- Yu Writer (Windows, Mac, Linux)
- StackEdit (Web)
- MarkdownPad (Windows)
- Cmd Markdown (Windows, Mac, Linux, Web)
使用上述软件, 就可以进行 Markdown 的编写了. 在这些编辑器里写 Markdown 文档就好像在 Word 里写文档一样, 只不过需要使用 Markdown 标记语法来实现排版.
本文不会介绍 Markdown 的原理, 只需要知道, 使用上述编辑器, 配合相应的语法, 就可以写出有漂亮的排版格式的 Markdown 文档了.
下面是一些 Markdown 常用语法, 掌握这些语法, 就可以满足90%以上的使用场景. 如果想了解详细的文档, 可以在阅读过本文后, 参考:
关于 Markdown 的原理和扩展语法, 也可参考我的这篇文章: Markdown 扩展语法
标题
在 # 后面加一个空格, 然后写的文字, 会被渲染成标题样式. 共支持六级标题, 从 # 到 ######. 例如:
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题
效果如下:
一级标题
二级标题
三级标题
四级标题
五级标题
六级标题
段落 Paragraph
直接写的文字会形成段落, 一个 Markdown段落是由一个或多个连续的文本行组成, 它的前后要有一个或以上的空行(无论有多少个空行, 都会被解析成一个空行).
在文本中使用回车键换行, 最终不会被解析成换行. 如果在一个段落中需要换行, 需要按两个或以上的空格, 然后按回车键. 另外, 使用两个空格进行换行, 不会导致分段, 依然是同一段落.
文本样式
Markdown 中可以给文本添加样式:
- 被 * 或 _ 包裹起来的文本会被渲染成斜体
- 被 ** 或 __ 包裹起来的文本会被渲染成粗体
- 被 ~~ 包裹起来的文本会被渲染出删除线
例如:
*这是斜体的文字*
**这是加粗的文字**
~~这是删除的文字~~
效果为:
这是斜体的文字
这是加粗的文字
这是删除的文字
Markdown 标准语法不支持下划线, 但是有些解析器支持特殊的语法, 这里不做介绍.
转义字符
如果文本中某些字符就是想要正常显示, 不希望被解析成有特殊含义的标记,
可以使用 \ 进行转义, 例如:
\*\*使用 \ 转义 * 号\*\*
由于文字两边的 * 号前面都加了"", "*" 不再用来表示粗体, 显示的效果为:
**使用 \ 转义 * 号**
列表
无序列表
在文字前面加 * 或者 - 或者 + , 然后输入空格, 再写文字, 就会变成无序列表, 例如:
* 列表项1
- 列表项2
+ 列表项3
效果为:
- 列表项1
- 列表项2
- 列表项3
建议: 如无特殊需要, 最好用同一种列表表示符号.
有序列表
数字后面加个点(英文句号), 然后输入空格, 再写文字, 例如:
1. 列表项1
2. 列表项2
3. 列表项3
效果为:
- 列表项1
- 列表项2
- 列表项3
多级列表
列表可以使用两个空格或者tab键进行缩进, 形成多级列表:
* 一级列表项1
* 二级列表项1
* 二级列表项2
* 一级列表项2
* 二级列表项1
* 二级列表项2
- 一级列表项1
- 二级列表项1
- 二级列表项2
- 一级列表项2
- 二级列表项1
- 二级列表项2
列表段落
列表可以和段落结合起来, 甚至一个列表项里可以有多个段落, 例如:
* Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,
viverra nec, fringilla in, laoreet vitae, risus.
This is the second paragraph in the list item. You're
only required to indent the first line. Lorem ipsum dolor
sit amet, consectetuer adipiscing elit
* Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
Suspendisse id sem consectetuer libero luctus adipiscing.
效果为:
-
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi,This is the second paragraph in the list item. You're
only required to indent the first line. Lorem ipsum dolor
sit amet, consectetuer adipiscing elit Donec sit amet nisl. Aliquam semper ipsum sit amet velit.
Suspendisse id sem consectetuer libero luctus adipiscing.
注意: 如果一个列表项里有多个段落, 第二个及以后的段落前面要有缩进. 虽然这是标准语法, 但是不建议一个列表项里有多个段落, 因为有的解析器有 bug, 解析的效果比较差.
引用
在 >
后面加一个空格, 然后写文字, 会被渲染成引用样式, 例如:
> 这段文字是引用
> **在引用中换行同样可以使用两个空格, 也可以使用粗体**
效果为:
这段文字是引用
在引用中换行同样可以使用两个空格, 也可以使用粗体
Markdown 允许只在一整段前面加一个 > 来表示引用文字, 例如下面的语法也是正确的:
> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse id sem consectetuer libero luctus adipiscing.
效果为:
This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse id sem consectetuer libero luctus adipiscing.
引用中也可以使用其他 Markdown 标记, 例如:
> ## 这是一个标题
>
> 1. 这是第一行列表项
> 2. 这是第二行列表项
效果为:
这是一个标题
- 这是第一行列表项
- 这是第二行列表项
同理, 引用由也可以使用引用, 渲染效果就是就是层层嵌套, 这里不再演示.
链接和图片
Markdown 中可以插入链接和图片.
普通链接
语法如下
[text](link)
text 指的是显示出来的链接名称, 后面 () 里的是真正的链接地址
例如: 百度首页
如果不需要显示链接名称, 可以直接贴网址, 如:
百度首页: https://www.baidu.com
参考链接
如果一个链接在一篇文章中出现多次, 可以定义为参考链接, 语法如下:
首先需要定义参考链接, 语法为:
[链接id]:link
例如:
[baidu]:http://www.baidu.com
注意, 定义链接时, id 一定要唯一, 不能有两个一样的参考链接 id, 其次, 定义的链接上下一定要有空行, 最后, 定义的链接不会被显示出来.
定义好参考链接后, 就可以使用了, 使用时, 先用一个中括号表示链接文字, 后面再跟一个[], 里面写参考链接的 id, 例如:
[这是一个百度首页][baidu]
[这是另一个百度首页][baidu]
效果如下:
图片
Markdown 中也支持插入图片, 语法如下:
![alt](image_link)
注意比链接多了个 !, alt 指的是图片的介绍, 后面()里是图片的地址 例如:
![百度logo](https://www.baidu.com/img/bd_logo1.png?where=super)
效果为:
PS: 图片地址可以是网址, 也可以是文件的相对路径. 如:
./img/xxx.jpg
这表示 当前目录下的 img 目录中的 xxx.jpg.
Markdown 文档中的图片, 可以使用图片在本地的相对路径, 也可以把图片放在七牛云/微博上, 生成外链地址使用. 有些网站的 Markdown 编辑器(比如简书等), 有可能需要把图片上传到这些网站上才能使用.
图片参考链接
图片也可以使用参考链接的语法, 在参考链接的语法前面加 ! 即可, 如下:
![图片名称][图片�id]
[图片id]: url/to/image
使用方法和参考链接一样, 这里不再多说.
代码
Markdown 中可以插入代码.
行内代码 Inline code:
在文本中, 两个 ` 号(数字1左边的键) 中间的内容会被解析成代码.
例如: int i = 0;
Multi-line code:
一对 ``` 之间的内容会被解析成多行代码. 连续三个` 作为起始, 后面的内容会被解析成代码, 再以三个 ` 结尾. 这里无法演示具体写法, 直接看效果:
int i = 0;
boolean b = true;
for (; i < 10; i++) {
// 注释
}
另外, 直接使用 tab 进行缩进, 后面的文字就会被解析成代码
int i = 0;
boolean b = true;
第一种方法可以设置代码语言类型, 直接在第一个``` 后面加语言名称即可, 如 java, javascript, html 等等. 但是如果只有 一两行代码, 使用第二种方式也挺方便.
表格 Table
表格的语法比较简单, 按照下面这种写法就可以被解析成表格:
First Header | Second Header
------------ | -------------
Content from cell 1 | Content from cell 2
Content in the first column | Content in the second column
显示效果如下:
First Header | Second Header |
---|---|
Content from cell 1 | Content from cell 2 |
Content in the first column | Content in the second column |
注意: 表格的语法对格式的要求很松散, 只需要用 | 把单元格隔开就行, 但是一定别忘了分隔表头和表格内容的那一行 -|-, 没有这一行的话无法解析成表格.
分割线
要插入一道分割线, 可以使用三个以上的星号, 减号, 或者下划线, 例如:
***
* * *
*****
---
- - -
---------------------------------------
上面任何一种方式都可以产生一道分割线, 这里不再演示效果了.
总结
上面就是常用的 Markdown 语法了, 前面也说了, 掌握这些语法, 就可以满足绝大多数的排版需求了. 有些 Markdown 编辑器支持很多扩展语法, 甚至有画流程图的语法, 对此我的态度是不建议使用. Markdown 的目的是为了让我们专心写作, 使用简单明了的排版即可, 复杂排版/流程图这种事情, 还是交给 Word 和专业的绘图软件去做吧.
我也会写一篇文章来介绍 Markdown 的原理, 以及一些实用的扩展语法, 有兴趣的同学可以看看, 多了解一些东西也不错.