MarkDown 语法概述

m

宗旨

MarkDown 的目标是「易读易写」。一份使用 Markdown 格式撰写的文件应该可以直接以纯文本发布,并且看起来不会像是由许多标签或是格式指令所构成。

目录

在需要目录出现的地方放置一个标记,这样会自动生成一个嵌套的包含所有标题的列表。默认的标记是 [TOC]。

[TOC]

标题

在标题开头 加上1~6个#,依次代表一级标题、二级标题....六级标题

1
2
3
4
5
6
# 一级标题
## 二级标题
### 三级标题
##### 四级标题
###### 五级标题
###### 六级标题

兼容 HTML

Markdown 语法的目标是:成为一种适用于网络的书写语言。

不在 Markdown 涵盖范围之内的标签,都可以直接在文档里面用 HTML 撰写。不需要额外标注这是 HTML 或是 Markdown;只要直接加标签就可以了。

要制约的只有一些 HTML 区块元素――比如 <div>、<table>、<pre>、<p> 等标签,必须在前后加上空行与其它内容区隔开,还要求它们的开始标签与结尾标签不能用制表符或空格来缩进,Markdown 的生成器有足够智能,不会在 HTML 区块标签外加上不必要的 <p> 标签。

<table>

​ <tr>

​ <td>Foo</td>

​ </tr>

</table>


特殊字符转换

在 HTML 文件中,有两个字符需要特殊处理: < 和 & 。 < 符号用于起始标签,& 符号则用于标记 HTML 实体,如果你只是想要显示这些字符的原型,你必须要使用实体的形式,像是 < 和 &。

< 转化为 & lt;

& 转化为 &amp;

/ 反斜杠转义


列表(List)

MarkDown 支持有序和无序列表

1. 无序列表

无序列表使用-、+和*作为列表标记:

1
2
3
*   Red
* Green
* Blue

等同于:

1
2
3
+   Red
+ Green
+ Blue

也等同于:

1
2
3
-   Red
- Green
- Blue

2. 有序列表 (ordered list)

有序列表则使用数字加英文句点来表示:

1
2
3
1.  Bird
2. McHale
3. Parish

:你在列表标记上使用的数字并不会影响输出的 HTML 结果,上面的列表所产生的 HTML 标记为:

1
2
3
4
5
<ol>
<li>Bird</li>
<li>McHale</li>
<li>Parish</li>
</ol>

如果你的列表标记写成:

1
2
3
1.  Bird
1. McHale
1. Parish

或甚至是:

1
2
3
3. Bird
1. McHale
8. Parish

你都会得到完全相同的 HTML 输出。重点在于,你可以让 Markdown 文件的列表数字和输出的结果相同,或是你懒一点,你可以完全不用在意数字的正确性。

引用(Reference)

引用以>来表示,引用中支持多级引用、标题、列表、代码块、分割线等常规语法。

常见的引用写法:

  • 分级(嵌套)引用(只要根据层次加上不同数量的 > ):

    1
    2
    3
    4
    5
    This is the first level of quoting.
    >
    > > This is nested blockquote.
    >
    > Back to the first level.
  • 引用的区块内也可以使用其他的 Markdown 语法,包括标题、列表、代码区块等

    1
    2
    3
    4
    5
    6
    7
    8
    9
    > ## 这是一个标题。
    >
    > 1. 这是第一行列表项。
    > 2. 这是第二行列表项。
    >
    > 给出一些例子代码:
    >
    > return shell_exec("echo $input | $markdown_script");

演示

一级引用

二级引用

三级引用

四级引用

五级引用


文字样式 (TEXT STYLE)

1. 基本语法

1
2
3
4
**加粗文本** 或  __加粗__
*斜体* 或 _斜体_
***斜粗体*** 或者___斜粗体___
~~删除文本~~

2. 非基本语法

<sup>上标文字</sup>

<sub>下标文字</sub>

<u>下划线</u>

<!--注释-->

脚注:[^1]

[^1]: 这里是脚注

  • 演示:
  • 这是上标文字
  • 这是下标文字
  • 这是下划线
  • 脚注例子:[^1]

图片与链接的语法很像,区别在一个 ! 号。 注:Markdown 不能设置图片大小,如果必须设置则应使用HTML标记 <img>

链接

Markdown 支持三种形式的链接语法: 行内式,参考式和自动连接。

不管是哪一种,链接文字都是用 [方括号] 来标记。

要建立一个行内式的链接,只要在方块括号后面紧接着圆括号并插入网址链接即可,如果你还想要加上链接的 title 文字,只要在网址后面,用双引号把 title 文字包起来即可,例如:

1
2
3
This is [an example](http://example.com/ "Title") inline link.

[This link](http://example.net/) has no title attribute.

会产生:

1
2
3
4
5
<p>This is <a href="http://example.com/" title="Title">
an example</a> inline link.</p>

<p><a href="http://example.net/">This link</a> has no
title attribute.</p>

行内链接式

1
这是行内式链接:[Baidu](https://www.baidu.com/)。

行内链接式Baidu

这是参考式链接:[Baidu][url],其中url为链接标记,可置于文中任意位置。

[url]: https://www.baidu.com/  "liuyang"


自动链接

链接标记格式为:[链接标记文本]: 链接地址 链接title(可忽略)

1
这是自动链接:直接使用<>括起来<http://www.baidu.com>

参考链接式

参考式的链接是在链接文字的括号后面再接上另一个方括号,而在第二个方括号里面要填入用以辨识链接的标记:

1
2
3
这是参考链接式: [an example][url] 
[url]: http://example.com/ "Optional Title Here"
其中url为链接标记,可置于文中任意位置。

链接内容定义的形式为:

  • 方括号(前面可以选择性地加上至多三个空格来缩进),里面输入链接文字
  • 接着一个冒号
  • 接着一个以上的空格或制表符
  • 接着链接的网址
  • 选择性地接着 title 内容,可以用单引号、双引号或是括弧包着

下面这三种链接的定义都是相同:

1
2
3
[foo]: http://example.com/  "Optional Title Here"
[foo]: http://example.com/ 'Optional Title Here'
[foo]: http://example.com/ (Optional Title Here)

注意:有一个已知的问题是 Markdown.pl 1.0.1 会忽略单引号包起来的链接 title。


链接网址也可以用方括号包起来:

1
[url]: "Optional Title Here"

你也可以把 title 属性放到下一行,也可以加一些缩进,若网址太长的话,这样会比较好看:

1
2
[url]: http://example.com/longish/path/to/resource/here
"Optional Title Here"

网址定义只有在产生链接的时候用到,并不会直接出现在文件之中


链接辨别标签可以有字母、数字、空白和标点符号,但是并不区分大小写,因此下面两个链接是一样的:

1
2
[link text][a]
[link text][A]

隐式链接标记功能让你可以省略指定链接标记,这种情形下,链接标记会视为等同于链接文字,要用隐式链接标记只要在链接文字后面加上一个空的方括号,如果你要让 "Google" 链接到 google.com,你可以简化成:

1
[Google][]

然后定义链接内容:

1
[Google]: http://google.com/

由于链接文字可能包含空白,所以这种简化型的标记内也许包含多个单词:

1
Visit [Daring Fireball][] for more information.

然后接着定义链接

1
[Daring Fireball]: http://daringfireball.net/

Visit Baidu for more information.

链接的定义可以放在文件中的任何一个地方,我比较偏好直接放在链接出现段落的后面,你也可以把它放在文件最后面,就像是注解一样。

下面是一个参考式链接的范例:

1
2
3
4
5
6
I get 10 times more traffic from [Google] [1] than from
[Yahoo] [2] or [MSN] [3].

[1]: http://google.com/ "Google"
[2]: http://search.yahoo.com/ "Yahoo Search"
[3]: http://search.msn.com/ "MSN Search"

如果改成用链接名称的方式写:

1
2
3
4
5
6
I get 10 times more traffic from [Google][] than from
[Yahoo][] or [MSN][].

[google]: http://google.com/ "Google"
[yahoo]: http://search.yahoo.com/ "Yahoo Search"
[msn]: http://search.msn.com/ "MSN Search"

上面两种写法都会产生下面的 HTML。

1
2
3
4
<p>I get 10 times more traffic from <a href="http://google.com/"
title="Google">Google</a> than from
<a href="http://search.yahoo.com/" title="Yahoo Search">Yahoo</a>
or <a href="http://search.msn.com/" title="MSN Search">MSN</a>.</p>

下面是用行内式写的同样一段内容的 Markdown 文件,提供作为比较之用:

1
2
3
I get 10 times more traffic from [Google](http://google.com/ "Google")
than from [Yahoo](http://search.yahoo.com/ "Yahoo Search") or
[MSN](http://search.msn.com/ "MSN Search").

参考式的链接其实重点不在于它比较好写,而是它比较好读,比较一下上面的范例,使用参考式的文章本身只有 81 个字符,但是用行内形式的却会增加到 176 个字元,如果是用纯 HTML 格式来写,会有 234 个字元,在 HTML 格式中,标签比文本还要多。

使用 Markdown 的参考式链接,可以让文件更像是浏览器最后产生的结果,让你可以把一些标记相关的元数据移到段落文字之外,你就可以增加链接而不让文章的阅读感觉被打断。


图片链接

1
2
3
这是图片:![][image]

[image]: https://ws1.sinaimg.cn/large/d63ab74bly1frvek4v8eoj20a10dwae6.jpg


参考式的图片语法则长得像这样:

1
![Alt text][id]

「id」是图片参考的名称,图片参考的定义方式则和连结参考一样:

1
[id]: url/to/image  "Optional title attribute"

到目前为止, Markdown 还没有办法指定图片的宽高,如果你需要的话,你可以使用普通的 标签。


代码块引用

代码分为行内代码和代码块。

行内代码

行内代码使用 代码 标识,可嵌入文字中 需要引用代码时,如果引用的语句只有一段,不分行,可以用 ` 将语句包起来。

1
`Hello world`

Hello world


代码框

两对「 」包裹,如果引用的语句为多行,可以将` 置于这段代码的首行和末行。 代码前加四个空格键 代码前加一个 tab 键

代码语法高亮在 ```后面加上空格和语言名称即可

1
2
3
4
​``` python
//注意语言前面有空格
这里是代码
​```

表格

表格对齐格式 居左::---- 居中::----:或----- 居右:----:

1
2
3
|你|我|他|
|:---|:---:|---:|
|居左|居中|居右|
居左 居中 居右

分割线

1
2
3
4
5
***
---
_____

* * *

弥补Markdown的Html标签

字体

1
2
<font face="微软雅黑" color="red" size="6">字体及字体颜色和大小</font>
<font color="#0000ff">字体颜色</font>

字体及字体颜色和大小 字体颜色


换行

1
使用html标签`<br/>`<br/>换行

使用html标签<br/> 换行


文本对齐方式

1
2
3
<p align="left">居左文本</p>
<p align="center">居中文本</p>
<p align="right">居右文本</p>

居左文本

居中文本

居右文本


这里是脚注:[^1]