MarkDown 语法概述
宗旨
MarkDown 的目标是「易读易写」。一份使用 Markdown 格式撰写的文件应该可以直接以纯文本发布,并且看起来不会像是由许多标签或是格式指令所构成。
目录
在需要目录出现的地方放置一个标记,这样会自动生成一个嵌套的包含所有标题的列表。默认的标记是 [TOC]。
[TOC]
标题
在标题开头 加上1~6个#,依次代表一级标题、二级标题....六级标题
1 | # 一级标题 |
兼容 HTML
Markdown 语法的目标是:成为一种适用于网络的书写语言。
不在 Markdown 涵盖范围之内的标签,都可以直接在文档里面用 HTML 撰写。不需要额外标注这是 HTML 或是 Markdown;只要直接加标签就可以了。
要制约的只有一些 HTML 区块元素――比如 <div>、<table>、<pre>、<p> 等标签,必须在前后加上空行与其它内容区隔开,还要求它们的开始标签与结尾标签不能用制表符或空格来缩进,Markdown 的生成器有足够智能,不会在 HTML 区块标签外加上不必要的 <p> 标签。
<table>
<tr>
<td>Foo</td>
</tr>
</table>
特殊字符转换
在 HTML 文件中,有两个字符需要特殊处理: < 和 & 。 < 符号用于起始标签,& 符号则用于标记 HTML 实体,如果你只是想要显示这些字符的原型,你必须要使用实体的形式,像是 < 和 &。
< 转化为 & lt;
& 转化为 &
/ 反斜杠转义
列表(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 | 1. Bird |
注:你在列表标记上使用的数字并不会影响输出的 HTML 结果,上面的列表所产生的 HTML 标记为:
1 | <ol> |
如果你的列表标记写成:
1 | 1. Bird |
或甚至是:
1 | 3. Bird |
你都会得到完全相同的 HTML 输出。重点在于,你可以让 Markdown 文件的列表数字和输出的结果相同,或是你懒一点,你可以完全不用在意数字的正确性。
引用(Reference)
引用以>来表示,引用中支持多级引用、标题、列表、代码块、分割线等常规语法。
常见的引用写法:
分级(嵌套)引用(只要根据层次加上不同数量的 > ):
1
2
3
4
5This 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. 非基本语法
<sup>上标文字</sup>
<sub>下标文字</sub>
<u>下划线</u>
<!--注释-->
脚注:[^1]
[^1]: 这里是脚注
- 演示:
- 这是上标文字
- 这是下标文字
- 这是下划线
- 脚注例子:[^1]
图片与链接 (Images & Links)
图片与链接的语法很像,区别在一个 ! 号。 注:Markdown 不能设置图片大小,如果必须设置则应使用HTML标记 <img>
链接
Markdown 支持三种形式的链接语法: 行内式,参考式和自动连接。
不管是哪一种,链接文字都是用 [方括号] 来标记。
要建立一个行内式的链接,只要在方块括号后面紧接着圆括号并插入网址链接即可,如果你还想要加上链接的 title 文字,只要在网址后面,用双引号把 title 文字包起来即可,例如:
1 | This is [an example](http://example.com/ "Title") inline link. |
会产生:
1 | <p>This is <a href="http://example.com/" title="Title"> |
行内链接式
1 | 这是行内式链接:[Baidu](https://www.baidu.com/)。 |
行内链接式:Baidu
这是参考式链接:[Baidu][url],其中url为链接标记,可置于文中任意位置。
[url]: https://www.baidu.com/ "liuyang"
自动链接
链接标记格式为:[链接标记文本]: 链接地址 链接title(可忽略)
1 | 这是自动链接:直接使用<>括起来<http://www.baidu.com> |
- 这是自动链接:直接使用<>括起来http://www.baidu.com
参考链接式
参考式的链接是在链接文字的括号后面再接上另一个方括号,而在第二个方括号里面要填入用以辨识链接的标记:
1 | 这是参考链接式: [an example][url] |
链接内容定义的形式为:
- 方括号(前面可以选择性地加上至多三个空格来缩进),里面输入链接文字
- 接着一个冒号
- 接着一个以上的空格或制表符
- 接着链接的网址
- 选择性地接着 title 内容,可以用单引号、双引号或是括弧包着
下面这三种链接的定义都是相同:
1 | [foo]: http://example.com/ "Optional Title Here" |
注意:有一个已知的问题是 Markdown.pl 1.0.1 会忽略单引号包起来的链接 title。
链接网址也可以用方括号包起来:
1 | [url]: "Optional Title Here" |
你也可以把 title 属性放到下一行,也可以加一些缩进,若网址太长的话,这样会比较好看:
1 | [url]: http://example.com/longish/path/to/resource/here |
网址定义只有在产生链接的时候用到,并不会直接出现在文件之中。
链接辨别标签可以有字母、数字、空白和标点符号,但是并不区分大小写,因此下面两个链接是一样的:
1 | [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 | I get 10 times more traffic from [Google] [1] than from |
如果改成用链接名称的方式写:
1 | I get 10 times more traffic from [Google][] than from |
上面两种写法都会产生下面的 HTML。
1 | <p>I get 10 times more traffic from <a href="http://google.com/" |
下面是用行内式写的同样一段内容的 Markdown 文件,提供作为比较之用:
1 | I get 10 times more traffic from [Google](http://google.com/ "Google") |
参考式的链接其实重点不在于它比较好写,而是它比较好读,比较一下上面的范例,使用参考式的文章本身只有 81 个字符,但是用行内形式的却会增加到 176 个字元,如果是用纯 HTML 格式来写,会有 234 个字元,在 HTML 格式中,标签比文本还要多。
使用 Markdown 的参考式链接,可以让文件更像是浏览器最后产生的结果,让你可以把一些标记相关的元数据移到段落文字之外,你就可以增加链接而不让文章的阅读感觉被打断。
图片链接
1 | 这是图片:![][image] |
参考式的图片语法则长得像这样:
1 | ![Alt text][id] |
「id」是图片参考的名称,图片参考的定义方式则和连结参考一样:
1 | [id]: url/to/image "Optional title attribute" |
到目前为止, Markdown 还没有办法指定图片的宽高,如果你需要的话,你可以使用普通的 标签。
代码块引用
代码分为行内代码和代码块。
行内代码
行内代码使用
代码
标识,可嵌入文字中 需要引用代码时,如果引用的语句只有一段,不分行,可以用 ` 将语句包起来。
1 | `Hello world` |
Hello world
代码框
两对「 」包裹,如果引用的语句为多行,可以将` 置于这段代码的首行和末行。 代码前加四个空格键 代码前加一个 tab 键
代码语法高亮在 ```后面加上空格和语言名称即可
1 | ``` python |
表格
表格对齐格式 居左::---- 居中::----:或----- 居右:----:
1 | |你|我|他| |
你 | 我 | 他 |
---|---|---|
居左 | 居中 | 居右 |
分割线
1 | *** |
弥补Markdown的Html标签
字体
1 | <font face="微软雅黑" color="red" size="6">字体及字体颜色和大小</font> |
字体及字体颜色和大小 字体颜色
换行
1 | 使用html标签`<br/>`<br/>换行 |
使用html标签<br/>
换行
文本对齐方式
1 | <p align="left">居左文本</p> |
居左文本
居中文本
居右文本
这里是脚注:[^1]