将所有标题提炼成为目录。注意该代码的上下方最好都要有空行。
代码为:
[TOC]
显示为:
*、-、_三种符号都可以用来创建分隔线。行内不可有其它东西。连续,或者中间插入空格,或者三种符号混用,且总数量至少为3即可表示分隔线。
代码为:
* * *
***
*****
- - -
**--
-*_***--_
---------------------------------------
显示为:
**–
-_**–_
一对连续两个~~
(波浪线)括起来的内容将会拥有中间的删除线。
代码为:
~~我有删除线~~
显示为:
我有删除线
SeText语法使用=
和-
(等号、减号)在标题的下一行来表示标题1和标题2,符号数量为至少1个。
代码为:
这是标题1
=
这是标题2
-
显示为:
atx语法使用连续1~6个#
(井号)引领6级标题,井号与标题正文间可以没有空格。
代码为:
# 标题1
## 标题2
### 标题3
#### 标题4
##### 标题5
###### 标题6
显示为:
使用>
(大于号)作为先导,引领一行或多行引用。
代码为:
> 这是一个区块引用。
与上面文本属于一个段落,因此这一行前面可以不加`>`标记。
> 由于上面空了一行,因此这是另一个不同的段落,前面的 `>`必须添加。
>
虽然这也是另一个不同的段落,但上面空行加了 `>`,因此这里段落之前的 `>`也可以省略,相当于上面空行的 `>`属于这个段落。
显示为:
这是一个区块引用。
与上面文本属于一个段落,因此这一行前面可以不加>
标记。由于上面空了一行,因此这是另一个不同的段落,前面的
>
必须添加。虽然这也是另一个不同的段落,但上面空行加了
>
,因此这里段落之前的>
也可以省略,相当于上面空行的>
属于这个段落。
代码为:
> 这是区块引用的第一层。
>
> > 这是嵌套引用,属于第二层,因此需要再加一个`>`,两个`>`之间的空格不是必需的。
>
> 回到区块引用的第一层。
显示为:
这是区块引用的第一层。
这是嵌套引用,属于第二层,因此需要再加一个
>
,两个>
之间的空格不是必需的。回到区块引用的第一层。
代码为:
> ## 这是一个标题2。
>
> 1. 这是第一个列表项。
> 2. 这是第二个列表项。
>
> 这是一个代码例子:
>
> printf("Hello, Minmin!\n"); return 0;
显示为:
这是一个标题2。
- 这是第一个列表项。
- 这是第二个列表项。
这是一个代码例子:
printf("Hello, Minmin!\n"); return 0;
一对#
或者一对_
(井号、下划线)表示的强调,以斜体表示。
一对连续两个#
或者一对连续两个_
表示的强调,以粗体表示.
一对连续三个#
或者一对连续三个_
表示的强调,以斜体加粗体表示。
代码为:
*使用一个星号的强调*
_使用一个 底线 的强调_
**使用两个星号的强调**
__使用两个底线 的强调__
***使用三个星号的强调***
___使用三个底线 的强调___
显示为:
使用一个星号的强调
使用一个 底线 的强调
使用两个星号的强调
使用两个底线 的强调
使用三个星号的强调
使用三个底线 的强调
无序列表使用*
、+
、-
(星号、加号、减号)其中之一做先导,后续跟着至少一个空格或制表符,再跟着列表项内容。
代码为:
* 星号条目1
* 星号条目2
* 星号条目3
` `
+ 加号条目1
+ 加号条目2
+ 加号条目3
` `
- 减号条目1
- 减号条目2
- 减号条目3
显示为
有序列表使用英文数字加上.
(英文点号)做先导,后续跟着至少一个空格或制表符,再跟着列表项内容。
有序列表中的数字序号不重要,会自动跟踪计数。
代码为:
1. 主要步骤1
1. 主要步骤2
1. 主要步骤3
显示为:
可以通过在列表符号的对齐位置处增加或减少缩进(4个空格或者1个制表符)来创建多级列表。
例1:三层嵌套无序列表
代码为:
* 主条目1
+ 次条目1-1 (用加号和制表符)
+ 次条目1-2(用加号和4个空格)
* 主条目2
- 次条目2-1(用减号和制表符)
- 次条目2-2(用减号和4个空格)
+ 三级条目2-2-1
+ 三级条目2-2-2
* 主条目3
* 次条目3-1(用星号和制表符)
* 三级条目3-1-1
* 三级条目3-1-2
* 次条目3-2(用星号和4个空格)
* 主条目4
显示为:
例2:三级嵌套有序列表
代码为:
1. 主条目1
1. 次条目1-1
1. 三级条目1-1-1
2. 次条目1-2
1. 三级条目1-2-1
2. 三级条目1-2-2
3. 三级条目1-2-3
3. 次条目1-3
1. 主条目2
1. 主条目3
1. 次条目3-1
1. 次条目3-2
1. 主条目4
显示为:
列表条目间可以用空行分开,某个条目的上方出现空行,则那个条目的下方也会出现空行,而不是所有条目出现空行。
例1 无序列表空行:编辑时条目2和条目5的上方出现空行,则2和5的下方在显示时也出现空行。
代码为:
* 无序条目1
* 无序条目2
* 无序条目3
* 无序条目4
* 无序条目5
显示为:
无序条目1
无序条目2
无序条目4
无序条目5
例2 有序列表空行:编辑时条目2和条目5的上方出现空行,则2和5的下方在显示时也出现空行。
代码为:
1. 有序条目1
1. 有序条目2
1. 有序条目3
1. 有序条目4
1. 有序条目5
显示为:
有序条目1
有序条目2
有序条目4
有序条目5
每个列表条目中可以包含多个段落,每个段落必须缩进4个空格或1个制表符。(如果缩进8个空格或2个制表符将会变成代码引用
,而不是条目段落)
代码为:
1. 这是一个有两个段落的列表项,这是第一段。
这是第二段,段首已经缩进 4 个空格,否则就处在列表之外,自成一个普通段落,下面的列表条目也将自成另一个不同的列表,序号从1开始。
这是第三段,段首已经缩进 1 个制表符,否则就处在列表之外,自成一个普通段落,下面的列表条目也将自成另一个不同的列表,序号从1开始。
1. 这是列表的第二个条目。
这是第二段,这是段首缩进两个制表符。所以它变成了代码引用。但并不影响下一条目的正常使用。
这是第三段,这是段首缩进8个空格。所以它变成了代码引用。但并不影响下一条目的正常使用。
1. 这是列表的第三个条目。
显示为:
这是一个有两个段落的列表项,这是第一段。
这是第二段,段首已经缩进 4 个空格,否则就处在列表之外,自成一个普通段落,下面的列表条目也将自成另一个不同的列表,序号从1开始。
这是第三段,段首已经缩进 1 个制表符,否则就处在列表之外,自成一个普通段落,下面的列表条目也将自成另一个不同的列表,序号从1开始。
这是列表的第二个条目。
这是第二段,这是段首缩进两个制表符。所以它变成了代码引用。但并不影响下一条目的正常使用。
这是第三段,这是段首缩进8个空格。所以它变成了代码引用。但并不影响下一条目的正常使用。
这是列表的第三个条目。
除了直接缩进2个制表符或者8个空格加入代码引用外,也可以用>
(大于号)在列表条目内加入引用。注意在>
前用缩进来调节引用的位置,此外要在引用的上下添加空行保证对后续条目的识别。
代码为:
1. 有序条目1
> 这是一条引用,段首缩进了1个制表符。
> 这是第二条引用,段首缩进了4个空格。
1. 有序条目2
#include
int main (void){
printf ("Hello, world!\n");
return 0;
}
1. 有序条目3
显示为:
有序条目1
这是一条引用,段首缩进了1个制表符。
这是第二条引用,段首缩进了4个空格。
有序条目2
#include
int main (void){
printf ("Hello, world!\n");
return 0;
}
有序条目3
有些时候数字和点号会凑巧的出现在内容中,例如年份,不能将其解释成为列表条目。
代码为:
1986. 这个不是列表项。
显示为:
1986. 这个不是列表项。
有两种链接:自动链接和普通文本链接。
本身就是URL或者Email的文本,直接可以用一对<>
(尖括号)括起来。受支持的包括HTTPS、HTTP、FTP、Email,但不包括File协议(例如file://e/download/readme.txt),也不能使用相对路径(例如/about/)。
代码为:
.sohu.com/index.html>
.baidu.com/>
.examples.com/category1/>
@163.com>
显示为:
http://www.sohu.com/index.html
https://www.baidu.com/
ftp://download.examples.com/category1/
[email protected]
普通文本链接又分为行内式和参考式。
行内式普通链接由几部分组成:
1. 显示文本(必需):显示给浏览者用于提示链接的内容,由一对[]
(方括号)包裹的文字;
2. 链接URL(必需):要链接的目标,不显示,由有效的URL文本组成,不可加引号,该URL文本可以是绝对路径或相对路径;
3. 悬浮提示(可选):鼠标悬浮在链接上方是弹出的提示文本显示给浏览者,由一对''
、""
符号(单引号、双引号)之一包裹有效的文本组成。悬浮提示可以没有,但如果有,需要和链接URL之间用空格隔开。
代码为:
[转到百度](http://www.baidu.com)(无悬浮提示)
[搜狐](http://www.sohu.com '打开搜狐主页')(单引号的悬浮提示)
[下载](ftp://download.examples.com/category1 "从示例网站下载第1分类")(双引号的悬浮提示)
[查看](/about/ "试试看")(相对路径)
显示为:
转到百度(无悬浮提示)
搜狐(单引号的悬浮提示)
下载(双引号的悬浮提示)
查看(相对路径)
参考式链接与普通链接类似,都包含三个部分:显示文本(必需),链接URL(必需)和悬浮文本(可选)三部分。
主要不同在于,后两部分使用参考来指向。
参考必须要被定义,一般是放在使用位置的后续某个位置,建议放在整篇文档的最后。
定义参考:以一对[]
(方括号)包裹的参考名引领,后面跟上普通链接中的链接URL和悬浮文本,前后用:
(冒号)隔开,冒号的后面至少要有一个空格或制表符。
* 参考名:使用不重名的数字或其它文本。
* 链接URL:可以不包裹,也可以用一对<>
(尖括号)包裹。可以使用mailto:协议。
* 悬浮文本:需要用一对""
、()
(双引号或者圆括号,但不能用单引号)包裹。
使用参考:在一对[]
(方括号)引领的显示文本后方,紧接着使用一对[]
(方括号)引领的参考名。使用参考时,可以不提供参考名,此时默认为参考名与显示文本相同。
代码为:
[百度][5](双引号悬浮提示)
[搜狐][6](尖括号URL,没有悬浮提示)
[文献1][] (隐含参考,相对路径)
[作者1][作者1邮箱](圆括号悬浮提示,mailto协议)
[5]: http://www.baidu.com "转到百度"
[6]:
[文献1]: /about/ "关于"
[作者1邮箱]: mailto:[email protected] (邮箱)
显示为:
百度(双引号悬浮提示)
搜狐(没有悬浮提示)
文献1 (隐含参考,相对路径)
作者1(圆括号悬浮提示,mailto协议)
另一个参考用例:
代码为:
我经常逛的网站或社区有: [CSDN](http://www.csdn.net/ "CSDN")、[知乎] (http://www.zhihu.com/ "知乎")还有[豆瓣](http://www.douban.com/ "豆瓣")。
> 行内式
我经常逛的网站或社区有: [CSDN](http://www.csdn.net/ "CSDN")、[知乎] (http://www.zhihu.com/ "知乎")还有[豆瓣](http://www.douban.com/ "豆瓣")。
> 参考式
我经常逛的网站或社区有: [CSDN] [1]、[知乎] [2] 还有[豆瓣] [3]。
[1]: http://www.csdn.net/ "CSDN"
[2]: http://www.zhihu.com/ "知乎"
[3]: http://www.douban.com/ "豆瓣"
> 默认参考式
我经常逛的网站或社区有: [CSDN] []、[知乎] [] 还有[豆瓣] []。
[csdn]: http://www.csdn.net/ "CSDN"
[知乎]: http://www.zhihu.com/ "知乎"
[豆瓣]: http://www.douban.com/ "豆瓣"
显示为:
行内式
我经常逛的网站或社区有: CSDN、知乎 (http://www.zhihu.com/ “知乎”)还有豆瓣。
参考式
我经常逛的网站或社区有: CSDN、知乎 还有豆瓣。
默认参考式
我经常逛的网站或社区有: CSDN、知乎 还有豆瓣。
以行内式链接格式,当链接的前面添加一个!
(惊叹号),且链接URL的目标是一个图片文件(例如JPG、GIF等),则显示该图片。
代码为:
![百度图标图片](https://www.baidu.com/img/bd_logo1.png "百度图标图片")
MarkDown采用类似于HTML的pre标签和code标签来实现代码包裹。
将一段文本用代码来表示,有多种好处。
1. 可以保留原汁原味的排版样式,至少不会被删除空格;
2. 不用专门去对各种用于Markdown语法的符号进行转义(当然反引号还是要转义);
2. 充分利用编辑器的功能高亮显示各种语言的关键字(例如Java、C、C++、HTML、XML等)。
代码按长度可以分为行内代码和块代码两种。
将文本用一对(反引号)包裹来实现行内代码。行内代码可以仅作用于被包裹的部分,但不能跨段落。行内代码可以很轻松的嵌入使用,特别是表示特殊转义符号时(用反斜杠加上那个特殊符号,详情见 转义字符)。
代码为:
`这是一段文本代码。`
显示为:
这是一段文本代码。
块代码有两种实现方式:缩进编码、3反引号包裹。
将多行普通文本缩进1次(4个空格或1个制表符)即可快速创建块代码。(快捷操作方法是选中那些连续的行,然后按一次Tab键)
代码为:
我是一段文本,有很多杂七杂八的字符。
## 其实我不是标题。
*我没打算斜着*
**我没什么要强调的**
***我只想站直一点***
2. 其实我不是条目
1. 我还不是条目
2. 我真的不是条目
> 我不是引用
>> 我也不是二级引用
>>> 我不是三级引用
> 我真的不是引用
[我不想当链接](http://其实我是假的, "没骗你")
[我没引用参考][8]
[8]: mailto:我不提供参考@nobody.com
显示为:
我是一段文本,有很多杂七杂八的字符。
## 其实我不是标题。
*我没打算斜着*
**我没什么要强调的**
***我只想站直一点***
2. 其实我不是条目
1. 我还不是条目
2. 我真的不是条目
> 我不是引用
>> 我也不是二级引用
>>> 我不是三级引用
> 我真的不是引用
[我不想当链接](http://其实我是假的, "没骗你")
[我没引用参考][8]
[8]: mailto:我不提供参考@nobody.com
如果不在块代码里,将显示为:
我是一段文本,有很多杂七杂八的字符。
我没打算斜着
我没什么要强调的
我只想站直一点
我不是引用
我也不是二级引用
我不是三级引用
我真的不是引用
我不想当链接
我没引用参考
块代码分为3个部分:
1. 代码块开始行:3个连续的 ` (反引号,不含空格)开头,紧跟可选的代码类型(text、java、c、c++、html、xml等等),如果不提供代码类型,默认为纯文本;
2. 代码块本体:需要添加的原始代码。
3. 代码块结束行:3个连续的 ` (反引号,不含空格),不含其它任何字符。
为保证代码块正常使用,开始行上方可能需要空行,结束行下方可能需要空行。
与缩进表示相比,好处在于最前面的4个字符也可以用了。非常适合用于各种编程代码。
下面直接给几个编程语言的例子:
示例1:纯文本型代码
代码为:
```
这是文本型代码,就直接引用缩进型的片段吧。
*我没打算斜着*
**我没什么要强调的**
***我只想站直一点***
```
显示为:
这是文本型代码,就直接引用缩进型的片段吧。
*我没打算斜着*
**我没什么要强调的**
***我只想站直一点***
示例:Java代码
代码为:
```java
package test;
public class HelloWorld {
public static void main (String[] args)
{
System.out.println ("Hello, world!");
}
}
```
显示为:
package test;
public class HelloWorld {
public static void main (String[] args)
{
System.out.println ("Hello, world!");
}
}
示例:C代码
代码为:
```c
#include "stdio.h"
int main (void)
{
printf ("Hello, world!");
}
```
显示为:
#include "stdio.h"
int main (void)
{
printf ("Hello, world!");
}
示例:C++代码
代码为:
```c++
#include
int main (void)
{
printf ("Hello, world!");
}
```
显示为:
#include
int main (void)
{
printf ("Hello, world!");
}
示例:HTML代码
代码为:
```html
Hello, world!
Hello, world!
```
显示为:
<html>
<head>
<title>Hello, world!title>
head>
<body>
<h1>Hello, world!h1>
body>
html>
示例:XML代码
代码为:
```xml
ZhangSan
28
male
LiSi
25
female
```
显示为:
<Persons>
<Person>
<Name>ZhangSanName>
<Age>28Age>
<Sex>maleSex>
Person>
<Person>
<Name>LiSiName>
<Age>25Age>
<Sex>femaleSex>
Person>
Persons>
MarkDown将很多字符赋予了特殊含义,因此如果正文中需要在发生混淆的时候(尤其是在行首)使用它们就需要转义字符:
符号 | 中文名 | 用途 |
---|---|---|
\ | 反斜杠 | 转义字符。 |
` | 反引号 | 行内引用、链接。 |
( ) | 左右圆括号 | 链接 |
[ ] | 左右方括号 | 链接 |
{ } | 左右花括号 | 链接 |
+ | 加号 | 无序列表 |
- | 减号 | 无序列表 |
_ | 下划线 | 无序列表 |
* | 星号 | 强调(粗体斜体) |
# | 井号 | 标题 |
. | 点号 | 有序列表 |
! | 惊叹号 | 图片引用 |
MarkDown很大程度上兼容HTML语法,在一段文字中直接回车是没办法换行的。但有两个办法可以做到文字分段。(9.1段目前还没想明白)
在一段中如果需要分行,可以在换行前首先输入两个空格键,再换行。
代码为:
显示为:
我是第一行。我是第二行, 我想在这句话换行,但换不了。
MarkDown中可以直接插入HTML语言片段,可以用
和 来达到软换行和硬换行的目的。
代码为:
行1
行2
行3
<br />
行4
<p>p>
行5
显示为:
行1
行2
行3
行4
行5