了不起的 Markdown
基础语法
字体
标题
支持:底线(-/=) 和 #
底线的语法
1 | 标题内容 |
或
1 | 标题内容 |
- =表示一级标题
- -表示二级标题
- 底线符号的数量至少2个
- 这种语法只支持这两级标题
#语法
1 | # + 空格 + 标题内容 |
- 在行首插入#可标记出标题
- #的个数表示了标题的等级
- 建议在#后加一个空格
- Markdown中最多只支持前六级标题
使用规范:
1) 推荐使用#的语法。
2) 标题的前后都要空1行(除非标题在文档开头)。
3) #与标题文本之间也要有1个空格,否则会导致阅读困难。
4) 不要有多余的空格,结尾不要有空格。
5) 建议标题的结尾不要有标点符号。
6) 建议标题要尽量简短,方便引用。
粗体和斜体
粗体由两个* 或两个包裹,斜体由1个* 或1个包裹。
粗体
1 | **加粗内容** |
斜体
1 | *斜体内容* |
使用规范:
1) 建议粗体使用2个*包裹,斜体使用1个* 包裹。
2) 在粗体和斜体语法标记的内部,建议不要有空格。
段落与换行
1) 如果行与行之间没有空行,则会被视为同一段落。
2) 如果行与行之间有空行,则会被视为不同的段落。
3) 空行是指行内什么都没有,或者只有空格和制表符。
列表
支持:有序列表和无序列表
有序列表
1 | 数字序号(1 2 ...) + 英文句号 + 空格 + 列表内容 |
无序列表
1 | */+/- + 英文句号 + 空格 + 列表内容 |
使用规范:建议使用-标记无序列表,*容易与斜体混淆,+不流行。
列表嵌套
1 | 第一层列表 |
语法说明:
1) 列表中可以嵌套列表。
2) 有序列表和无序列表也可以互相嵌套。
列表使用规范
1) 如果一个列表中的每个列表项都只有1行,建议列表项之间不要有空行。
2) 如果列表项中有换行,建议在列表项之间空1行。
3) 建议在列表前/后都空1行。
4) 列表标记使用英文半角符句号.
、右括号)
。
5) 列表标记与列表内容的空格不能少;列表Enter
换行默认生成新的列表项,列表项换行可Shift + Enter
。
1 | # 列表的使用 |
效果如下:
这个列表
有换行这个列表无换行
分隔线
语法:
1) 分隔线须使用至少3个以上的 */-/_ 来标记。
2) 行内不能有其他的字符。
3) 可以在标记符中间加上空格。
4) 建议同一文章使用一样的符号标记分隔线,且数量形式一样。
1 | # 星号 |
分隔线如下:
图片
1 | ![图片替代文字](图片地址 "【可选参数】鼠标悬停于图片的提示信息") |
语法:
1) 图片替代文字在图片无法正常显示时会比较有用,正常情况下可以为空。
2) 图片地址可以是本地图片的路径也可以是网络图片的地址。
3) 本地图片支持相对路径和绝对路径两种方式。
链接
文字链接
文字链接就是把链接地址直接写在文本中。语法是用方括号包裹链接文字,后面紧跟着括号包裹的链接地址。
1 | [链接文字](链接地址 "【可选参数】鼠标悬停于链接文字的提示信息") |
1 | 在日常工作中我们常用的地址有[baidu](https://www.baidu.com)和[GitHub](https://www.github.com) |
引用链接
引用链接是把链接地址作为“变量”先在Markdown文件的页尾定义好,然后在正文中进行引用。
1 | 在正文中引用链接标记可以理解为引用定义好的变量; |
语法说明:
1) 链接标记可以有字母、数字、空格和标点符号。
2) 链接标记不区分大小写。
3) 定义的链接内容可以放在当前文件的任意位置,建议放在页尾。
4) 当链接地址为网络地址时要以 http/https开头,否则会被识别为本地地址。
1 | 在日常工作中我们常用的地址有[百度][baidu]和[GitHub]。 |
网址链接
在Markdown中,将网络地址或邮箱地址使用<>包裹起来会被自动转换为超链接。
1 | <URL 或 邮箱地址> |
1) 建议链接标题有意义
2) 使用<>包裹自动连接,虽然不使用也能连接
3) 自动连接要以http/https开头
行内代码与代码块
行内代码
1 | `代码` |
代码块
在Markdown中,代码块以Tab键或4个空格开头。
1 | 以 Tab 键开头: |
Tip: 因为代码块使用Tab键或4个空格开头的效果不够直观,很多扩展语法(如GFM)提供了围栏代码块,并且支持语法高亮。
使用规范:
1) 除行内代码可以使用`包裹以外,如果我们想转义或强调某些字符,也可以使用`包裹。
2) 如果代码超过1行,请使用围栏代码块(扩展语法),并显式地声明语言,这样做便于阅读,并且可以显示语法高亮。
3) 如果我们编写的是简单的代码片段,使用4个空格缩进的代码块也许更清晰。
4) 很多Shell命令都要粘贴到终端中去执行,因此最好避免在Shell命令中使用任何换行操作;
可以在行尾使用一个\,这样既能避免命令换行,又能提高源码的可读性。
5) 建议不要在没有输出内容的Shell命令前加$。
在命令没有输出内容的情况下,$是没有必要的,因为内容全是命令,我们不会把命令和输出的内容混淆。
推荐:pipenv shell
不推荐:$ pipenv shell
6) 建议在有输出内容的Shell命令前加上$,这样会比较容易区分命令和输出的内容。
推荐:
1 | echo "test" |
不推荐:
1 | echo "test" |
引用
在Markdown中,引用由>
来标记。
1 | > 引用内容 |
语法说明:
1) 多行引用也可以在每一行的开头都插入>
。
2) 在引用中可以嵌套引用。
3) 在引用中可以使用其他的Markdown语法。
4) 段落与换行的格式在引用中也是适用的。
使用规范:
1) 建议在引用的标记符号>
之后添加一个空格。
2) 建议每一行引用都使用符号>
。
3) 不要在引用中添加空行。
转义
当我们想在Markdown文件中插入一些标记符号,但又不想让这些符号被渲染时,可以使用\
进行转义。
1 | \特殊符号 |
可被转义的特殊符号:
- \ 反斜线
- ` 反引号
- * 星号
- _ 底线
- {} 花括号
- [] 方括号
- () 圆括号
- # 井字号
- + 加号
- - 减号
- . 英文句号
- ! 英文感叹号
扩展语法GFM
在众多Markdown扩展语法中,GitHub Flavored Markdown(简称GFM)无疑是目前最流行的,它提供了包括表格、任务列表、删除线、围栏代码、Emoji等在内的标记语法
删除线
1 | ~~被删除的文字~~ |
被删除的文字
表情符号
使用:
包裹表情代码即可
1 | :表情代码: |
更多的表情符号请参考http://www.webpagefx.com/tools/emoji-cheat-sheet/。
自动链接
在标准语法中,由<>包裹的URL地址被自动识别并解析为超链接,使用GFM扩展语法则可以不使用<>包裹。
注意:自动链接只识别以www
或http://
开头的URL地址。
如果不想使用自动链接,也可以使用`包裹URL地址。
表格
1 | | 表头1 |表头2 | 表头3 | |
表头1 | 表头2 | 表头3 |
---|---|---|
内容1 | 内容2 | 内容3 |
左对齐 | 居中对齐 | 右对齐 |
语法:
1) 单元格使用|来分隔,为了阅读更清晰,建议最前和最后都使用|。
2) 单元格和|之间的空格会被移除。
3) 表头与其他行使用-
来分隔。
4) 表格对齐格式如下:
- 左对齐(默认):`:-`
- 右对齐:`-:`
- 居中对齐:`:-:`
5) 块级元素(代码区块、引用区块)不能插入表格中。
使用规范:
1) 在表格的前、后各空1行。
2) 在每一行最前和最后都使用|,每一行中的|要尽量都对齐。
3) 不要使用庞大复杂的表格,那样会难以维护和阅读。
补充:
1) 表格单元格换行可以用<br>
。
2) 默认和左对齐还是又区别的,默认表头会居中,左对齐表头是左对齐的。
任务列表
1 | - [ ] 未勾选 |
- [ ] 未勾选
- [x] 已勾选
语法说明:
1) 任务列表以-+空格开头,由 [+空格/x+] 组成。
2) x可以小写,也可以大写,有些编辑器可能不支持大写,所以为避免解析错误,推荐使用小写的x。
3) 当方括号中的字符为空格时,复选框是未选中状态,为x时是选中状态。
围栏代码块
在基础语法中,代码块使用Tab键或4个空格开头;在扩展语法中,围栏代码块使用连续3个`或3个~包裹,还支持语法高亮,可读性和可维护性更强一些。
1 | ~~~ |
1 | ```python |
锚点
锚点,也称为书签,用来标记文档的特定位置,使用锚点可以跳转到当前文档或其他文档中指定的标记位置。
Markdown会被渲染成HTML页面,在HTML页面中可以通过锚点实现跳转;GitHub、GitBook项目文档中的目录也是通过锚点实现跳转的。
1 | [锚点描述](#锚点名) |
1 | <!-- 使用锚点 --> |
语法说明:
1) 锚点名建议使用字母和数字,当然中文也是被支持的,但不排除有些网站支持得不够好。
2) 锚点名是区分英文大小写的。
3) 在锚点名中不能含有空格,也不能含有特殊字符。
Inline HTML
Markdown 是支持 HTML 的
1 | <p>To reboot your computer, press <kbd>ctrl</kbd>+<kbd>alt</kbd>+<kbd>del</kbd>.</p> |
To reboot your computer, press ctrl+alt+del.
效果并不总是理想的
1 | <dl> |
- Definition list
- Is something people use sometimes.
- Markdown in HTML
- Does *not* work **very** well. Use HTML tags.
特殊HTML字符表
HTML原代码 | 显示结果 |
---|---|
< |
< |
> |
> |
| |
| |
& |
& |
" |
“ |
® |
® |
© |
© |
™ |
™ |
@ |
@ |
|
不断行空白 |
  |
半个空白位 |
  |
一个空白位 |
表格单元格内换行:<br>
排版技巧
有句话叫“听过很多道理,却依然过不好这一生 ”,同样,看过很多文章,却还是不知道怎么排版才好看。其实好的排版就是好的设计,而设计总会遵循一定的规则,当没有人明确告诉我们什么是好的设计时,参考最通用、最流行的做法总是没错的,毕竟能被大众所接受,就是最好的证明。
关于空格
建议中文和英文之间加空格,中文/英文和数字之间也要加空格,不过有些编辑器和输入法(如百度输入法)会自动添加空隙,我们就没必要手动添加了,使用时请多注意。
加空格的情况
- 英文标点符号(如, . ; : ?)与后面的字符之间需要加空格,与前面的字符之间不需要加空格。
1 | 推荐:The world is like a mirror: Frown at it and it frowns at you; smile, and it smiles too. |
- 当在中文、英文中使用>(半角)标识路径时,两边都需要加空格。
1 | 推荐:Erase data and settings in Settings > General > Reset > Erase all Content and Settings |
不加空格的情况
- 中文标点符号和数字、中文、英文之间不需要添加空格。
1 | 推荐:MacBook Pro(15英寸,2016年年末) |
- 数字和百分号之间不需要添加空格。
1 | 推荐:100% |
- 数字和单位符号之间不需要添加空格。
1 | 推荐:1GB |
- 英文和数字组合成的名字之间不需要添加空格。
1 | 推荐:双核Intel Core i7处理器 |
当/(半角)表示“或”、“路径”时,与前后的字符之间均不加空格。
货币符号后不加空格。
1 | 推荐:售价¥100 |
- 负号后不加空格。
1 | 推荐:1-2=-1 |
全角和半角
全角:中文标点符号是全角,占两个字节。
半角:英文标点符号和数字是半角,占1个字节。
全角:,。;:!?
半角:,.;:!?
- 在中文排版中,要使用全角标点符号。
- 在英文排版中,要使用半角标点符号。
正确的英文大小写
错误的写法:IPhone7、MacOS
正确的写法:iPhone7、macOS
专有名词要使用正确的大小写,请参考它们的官方文档。
正确:macOS、iPhone、iPad Pro、Macbook Pro、iOS、GitHub