Markdown 是一种轻量级标记语言,它允许人们使用易读、易写的纯文本格式编写文档。Markdown 语言需要经过编辑器的渲染才能呈现出各种优美的格式。
Markdown 的使用场景:
当你对文章的排版没什么特殊需求,且不想花太多时间在排版上时,就可以使用 Markdown。因为编辑器或平台会通过 Markdown 标记对文章进行渲染,最终的排版效果会非常简洁、漂亮。
Markdown 标题:
标题推荐语法:
# + 空格 + 标题内容
语法说明如下:
- 在行首插入 # 可标记出标题。
- # 的个数表示了标题的等级。
- 建议在 # 后加一个空格。
- Markdown 中最多只支持前六级标题,类似于 HTML 中的 h1~h6。
标题规范如下:
1) 建议使用#标记标题,而不是 === 或 --- 2) 要保持间距,建议标题的前后都要空 1 行(除非标题在文档开头);# 与标题文本之间也要有1个空格 3) 不要有多余的空格。建议标题要写在一行的开头,结尾也不要有空格。 4) 建议标题的结尾不要有标点符号,如句号、逗号、冒号、分号等。 5) 建议标题要尽量简短,这样方便引用,特别是当生成目录时。如果原拟的标题是一个长句,可以从长句中提取标题,而将长句作为标题下的内容。
# 文档标题 作者 摘要 目录 ## 标题1 ### 标题 1.1 ## 标题2 ### 标题2.1 ### 标题2.2
说明如下:
- 文档标题:文档的第一个标题应该是一级标题,写在第一行,建议与文件名相同,标题要尽量简短。
- 作者:可选,用于声明文档的作者,如果是开源项目的文档,建议把作者名写在修订历史中。
- 摘要:用 1~3 句话描述文档的核心内容。
- 目录:用于快速了解文档的结构,便于导航。
- 正文:正文中的标题从二级目录开始,逐级增加,不可跳级,不可相同。
Markdown 加粗和斜体:
在 Markdown 中,加粗(粗体)由两个 *
或两个 _
包裹,斜体由一个 *
或一个 _
包裹。
示例:
**加粗** __加粗__ *斜体* _斜体_
加粗 和 斜体 的使用规范:
1) 建议粗体使用两个*包裹,斜体使用一个*包裹,因为*比较常见,而且比_可读性更强。 2) 在粗体和斜体语法标记的内部,建议不要有空格。
Markdown 的段落和换行:
Markdown 中的段落由一行或多行文本组成,不同的段落之间使用 空行 来标记。
语法说明如下:
- 如果行与行之间没有空行,则会被视为同一段落。
- 如果行与行之间有空行,则会被视为不同的段落。
- 空行是指行内什么都没有,或者只有空格和制表符。
- 如果想在段内换行,则需要在上一行的结尾插入两个以上的空格然后按回车键。
示例如下:
段落和换行的规范:
为了便于阅读,应该限制每行字符的数量,通常每行不超过 80 个字符,可以在编辑器中进行设置。
关于换行,建议如下:
- 当超过80个字符后进行换行。
- 在一句话结束(句号、叹号或问号)之后换行。
- 当 URL 较长时换行。
通常 URL 较长会导致行字符数量超过限制,为了提高可读性,可以在 URL 之前加一个换行符( ),如下:
大家好,给大家推荐一套不错的 Python 教程:
[Python基础教程,Python入门教程(非常详细)](http://c.biancheng.net/python/)
或者通过引用链接来进行优化:
大家好,给大家推荐一套不错的 Python 教程:[Python基础教程,Python入门教程(非常详细)]
[Python基础教程,Python入门教程(非常详细)]: http://c.biancheng.net/python/
Markdown列表:
Markdown 支持使用有序列表和无序列表,类似于 HTML 中的 <ul> 和 <ol> 标签。
有序列表的语法如下:
数字序号 + 英文句号 + 空格 + 列表内容
无序列表的语法如下:
*/+/- + 空格 + 列表内容
使用*、+、-来标记无序列表的效果是相同的。
列表的嵌套:
嵌套列表的语法:
+ 第一层列表 TAB + 第二层列表 TAB + TAB + 第三层列表
语法说明如下。
- 列表中可以嵌套列表。
- 有序列表和无序列表也可以互相嵌套。
列表使用规范:
1) 建议使用 - 来标记无序列表,因为*容易跟粗体和斜体混淆,而+不流行。 2) 如果一个列表中所有的列表项都没有换行,建议使用 1 个空格。 (列表项内容和列表标识之间) 3) 如果列表项有换行,则建议给无序列表使用 3 个空格,给有序列表使用 2 个空格。(列表项内容和列表标识之间) 4) 如果一个列表中的每个列表项都只有 1 行,建议列表项之间不要有空行。 5) 如果列表项中有换行,建议在列表项之间空 1 行,这样会比较容易区分多行列表项的开始和结束。 6) 建议在列表前/后都空 1 行。
示例如下:
# 列表 ## 有序列表 1. C语言中文网 2. Markdown教程 3. http://c.biancheng.net/markdown/ ## 无序列表 - 使用【减号】标识无序列表 - 使用【减号】标识无序列表 ## 嵌套列表 - 我是第一层列表 - 我是第二层列表 - 我是第三层列表 - 我是第四层列表 ## 有序列表和无序列表相互嵌套 1. 我是第一层列表 - 我是第二层列表 1. 我是第三层列表一 2. 我是第三层列表二 - C语言入门教程 - http://c.biancheng.net/c/ - C语言入门教程 - http://c.biancheng.net/c/ - 这个列表 有换行 - 这个没有换行 1. 这个有序列表 有换行 2. 这个没有换行 - Markdown教程:http://c.biancheng.net/markdown/ - Python教程:http://c.biancheng.net/python/ - Java教程:http://c.biancheng.net/java/ - Markdown教程: http://c.biancheng.net/markdown/ - Python教程: http://c.biancheng.net/python/ - Java教程: http://c.biancheng.net/java/
markdown 下划线:
在 Markdown 中,分隔线由 3 个以上的*
或者_
来标记。_
是下划线,而不是减号。
语法如下:
第一行内容 *** 第二行内容 ___ 第三行内容
语法说明:
- 分隔线须使用至少 3 个以上的
*
或者_
来标记。 - 标识符行内不能有其他的字符。
- 可以在标记符中间加上空格。
示例如下:
## 星号作为分割线 第一行内容 *** 第二行内容 哈哈 * * * 第三行内容 ******** ## 下划线作为分割线 第一行内容 ___ 第二行内容 _ _ _ 第三行内容 _______
markdown插入图片:
语法:
![图片替代文字](图片地址)
语法说明如下:
- 图片替代文字在图片无法正常显示时会比较有用,类似于 HTML <img> 标签的 alt 属性,正常情况下可以为空。
- 图片地址可以是本地图片的路径也可以是网络图片的地址。
- 本地图片支持相对路径和绝对路径两种方式。(mac 中,/ 表示markdown 同级目录)
示例如下:
### 本地图片: 无文字替代图片 ![](/avatar.jpg) ### 本地图片: 有文字替代图片 ![我的头像](avatar.jpg) ### 网络图片 ![C语言中文网logo](http://c.biancheng.net/uploads/allimg/191121/logo.png)
markdown 超链接:
Markdown 支持插入三种链接,分别是:文字链接、引用链接和网址链接。
1. 文字链接:
文字链接就是把链接地址直接写在文本中。语法是用方括号包裹链接文字,后面紧跟着括号包裹的链接地址,如下所示:
[链接文字](链接地址)
示例:
## 文字链接 编程教程有:[C语言入门教程](http://c.biancheng.net/c/)、[从C语言到C++](http://c.biancheng.net/cplus/)、[Python教程](http://c.biancheng.net/python/)等
这样的写法是没有任何问题的,但由于链接跟文字都写在了一起,如果链接过多会导致可读性差一些。
2. 引用链接:
把链接地址在某个地方统一定义好,然后在正文中通过“变量”来引用,可读性一下子就变强了,这种方法叫作引用链接。
引用链接是把链接地址作为“变量”,先在 Markdown 文件的页尾定义好,然后在正文中进行引用,其语法如下
首先定义好链接标记,可以理解为编程语言中的定义变量:
[链接标记]: 链接地址
然后在正文中引用定义好的链接标记,可以理解为引用定义好的变量:
[链接文字][链接标记]
使用链接时,可以只写“链接标记”而不写“链接文字”。只有“链接标记”时会给“链接标记”加链接,两者同时出现时给“链接文字”加链接。
其它注意事项:
- 链接标记可以有字母、文字、数字、空格和标点符号。
- 链接标记不区分大小写。
- 定义的链接内容可以放在当前文件的任意位置,建议放在页尾。
- 当链接地址为网络地址时要以 http/https 开头,否则会被识别为本地地址。
示例:
## 引用链接 ## 只写链接标记 常用的编程语言有:[C语言]、[C++]和[Python]等。 ## 同时写链接标记和链接文字 编程语言有:[C语言入门教程][C语言]、[C++从入门到放弃][C++]、[Python教程][python] [C语言]:http://c.biancheng.net/c/ [C++]:http://c.biancheng.net/cplus/ [python]:http://c.biancheng.net/python/
3. 网址链接:
在 Markdown 中,将网络地址或邮箱地址使用<>
包裹起来会被自动转换为超链接,其语法如下:
<URL 或者 Email>
示例:
## 网址链接 <http://c.biancheng.net/markdown/> <andrewzheng@sina.cn>
markdown 代码:
对于编程语言的代码,Markdown 支持代码块和行内代码两种形式。
1. 代码块:
在 Markdown 中,代码块以 Tab 键或 4 个空格开头,如下所示:
## 代码块 以 Tab 键 开头 def hello_wordl(): print("hello world") 以 4个空格开头 def hello_wordl(): print("hello world")
2. 行内代码:
在 Markdown 中,行内代码引用使用反引号` `
包裹,语法如下:
`代码`
示例如下:
## 行内代码
使用 `cd ..` 命令切换到上一级目录
使用 `mkdir 文件夹` 命令创建文件夹
3. 语法高亮:
Markdown 语法高亮是一种扩展语法,它的格式如下:
```language
code
```
其中,language 表示使用的编程语言,code 表示输入的代码。
示例如下:
## 语法高亮 ```python def hello_world(): print("hello world") ```
使用规范:
1) 除行内代码可以使用` `包裹以外,如果我们想转义或强调某些字符,也可以使用` `包裹。 2) 如果代码超过 1 行,请使用围栏代码块(扩展语法),并显式地声明语言,这样做便于阅读,并且可以显示语法高亮。 3) 但如果我们编写的是简单的代码片段,使用 4 个空格缩进的代码块也许更清晰。 4) 很多 Shell 命令都要粘贴到终端中去执行,因此最好避免在 Shell 命令中使用任何换行操作;可以在行尾使用一个,这样既能避免命令换行,又能提高源码的可读性。 5) 建议不要在没有输出内容的 Shell 命令前加$。在命令没有输出内容的情况下,$是没有必要的,因为内容全是命令,我们不会把命令和输出的内容混淆; 建议在有输出内容的 Shell 命令前加上$,这样会比较容易区分命令和输出的内容。
markdown 引用:
在 Markdown 中,引用由> + 引用内容
来标记,如下所示:
> 引用内容
语法说明如下:
- 多行引用也可以在每一行的开头都插入
>
。 - 在引用中可以嵌套引用。
- 在引用中可以使用其他的 Markdown 语法。
- 段落与换行的格式在引用中也是适用的。
示例如下:
## 引用 > 我是引用的句子,请在我前面加上 > 正常的句子是这样的。 ## 多行引用(写法1) > 这是多行引用的第一行,我的最后有两个空格。 这是多行引用的第二行 ## 多行引用(写法2) > 这是多行引用的第一行(最后有两个空格) > 这是多行引用中的第二行 ## 引用中嵌套引用 > 引用中是可以嵌套引用的 >> 我是引用中嵌套的引用 ## 引用中使用其他 Markdown 标记 > 猛击这里阅读[Markdown教程](http://c.biancheng.net/markdown/) > **加粗**和*斜体*也是支持的
引用的使用规范:
1) 建议在引用的标记符号>之后添加一个空格。 2) 建议每一行引用都使用符号>,并在上一行的最后添加两个空格以换行。 3) 不要在引用中添加空行。
当我们想在 Markdown 文件中插入一些标记符号,但又不想让这些符号被渲染时,可以使用进行转义