Markdown语法

Markdown语法

概述

之前使用dokuwiki系统做共享文档的平台,接触到了Markdown这种书写格式。最近开始折腾在github上搭建blog,又用到了Markdown,但是好多都忘光了,从头复习一下。Markdown的目标是易读易写,让作者专注于写作,不用太多关心排版的问题,即使不把Markdown格式转化为HTML,可读性依然很强。Markdown格式是可以以纯文档的方式发布,使用标签或是格式指令构成,可以兼容HTML。

区块元素

段落和换行

连续的文本组成一个段落,每个段落前后有一个以上的空行。每个段落不能使用空格或制表符来缩进,如果想要缩进只能使用HTML元素,比如: / / 

标题

Markdown格式中可以使用=-两种底线形式来标注标题,例如:

这是标题1
==========
这是标题2
----------

这是标题1

这是标题2

*注:任何数量的=-都有效果。

同时,在Markdown格式中,使用1-6个#加一个空格可以标注1-6级的标题,同时可以选择性在最后使用给一个空格加同样数量的#号来闭合。

# 这是标题1
## 这是标题2 ##
###### 这是标题6

这是标题1

这是标题2

这是标题6

区块引用

区块引用使用>在每行的开头标记,也可以在每段开头进行标记,在区块引用中可以进行嵌套,例如:

> 这是一个区块引用的示例,
> 在每行的行的行首使用">"来标记区块。

这是一个区块引用的示例,
在每行的行的行首使用”>”来标记区块。

(这里分隔一下示例,看的更清晰一些。)

> 当然也可以在每段的段的段首标记,
本段都是在区块引用中。
> > 这是一个嵌套的区块引用。

当然也可以在每段的段的段首标记,
本段都是在区块引用中。

这是一个嵌套的区块引用

在区块引用中可以使用其它Markdown语法,包括标题、列表、代码区块等,这些就不在这演示了。

列表

Markdown支持有序列表和无序列表。
无序列表使用*+-作为标记,例如:

* 序列内容1
* 序列内容2
* 序列内容3
  • 序列内容1
  • 序列内容2
  • 序列内容3

等同于+:

+ 序列内容1
+ 序列内容2
+ 序列内容3
  • 序列内容1
  • 序列内容2
  • 序列内容3

等同于-:

- 序列内容1
- 序列内容2
- 序列内容3
  • 序列内容1
  • 序列内容2
  • 序列内容3

有序列表使用数字后加一个.的形式(数字可以不按顺序或是同一个数字):

1. 排序1
2. 排序2
3. 排序3
  1. 排序1
  2. 排序2
  3. 排序3

同一个数字:

1. 排序1
1. 排序2
1. 排序3
  1. 排序1
  2. 排序1
  3. 排序1

数字乱序:

3. 排序1
9. 排序2
1. 排序3
  1. 排序1
  2. 排序2
  3. 排序3

从示例中看到以上三种标记形式达到的效果是一样的,但是为了不转换成HTML时的可读性,还是尽量使用顺序数字标记。

如果在列表中分段、使用区块引用和代码区块等,需要在这些标记前使用1-3个空格来标记是在列表中,例如:

* 这是第一个列表中的第一段

   这是第一个列表中的第二段
* 这是第二个列表
   > 这是第二个列表中的区块引用

*这是第三个列表
        这是第三个列表中的代码区块
  • 这是第一个列表中的第一段

    这是第一个列表中的第二段

  • 这是第二个列表

    这是第二个列表中的区块引用

  • 这是第三个列表

    <html>这是第三个列表中的代码区块</html>
    

###代码区块
如果想要写程序代码在文档中,直接在代码前加入4个空格就进入了代码区块中,所有代码区块中都会按照输入原样输出,上面已经使用了很多代码区块,这里就不在演示了。

分割线

可以使用三个以上的*-_来插入一个分割线,此行内不能有任何其他的元素,可以在每个符号间插入空格,效果是一样,例如:

* * *
***
******
- - -
————————————

区段元素

链接

Markdown格式中支持两种形式的链接语法:行内式和参考式。两种形式的链接文字都使用[]来标记。如果想在链接上加入title文字,组要使用""把title文字包起来,例如:

这是一个[示例链接](http://test.com/ "test")有title。
[这是一个链接](http://test.com/)没有title。

这是一个示例链接有title。
这是一个链接没有title。

如果链接本地资源(同一主机下的资源),可以使用相对路径:

同一主机下的[资源](/resource/)。

同一主机下的资源

参考式链接是在链接文字的方括号后再接一个方括号,在第二个方括号里要填入一个辨识链接的标记,然后在文档任意处把这个链接的内容定义出来,例如:

这是一个参考式的[链接示例][id](可以选择性在链接和标识间加入空格。)
[id]: http://test.com/ "Optional Title Here"
以下这两种形式与上面这种形式相同:
[id]: http://test.com/ 'Optional Title Here'
[id]: http://test.com/ (Optional Title Here)
链接地址可以使用<>括起来:
[id]: <http://test.com/> "Optional Title Here"

这是一个参考式的[链接示例]id

[id]: http://test.com/ “Optional Title Here”

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

[link][a]
[link][A]

参考式链接还有一种隐式链接功能,可以省略链接标记,这种情况下,链接标记等同于链接文字,使用隐式链接只要在链接文邹后加上[]即可,比如:

[Link][]
[Link]: http://test.com/

使用参考式链接的好处是使得文档结构简单,使阅读文档时更加清晰。可以让文档更像是转换成HTML后的结构,可以以把一些标记相关的元数据转移到文档最后,不但可以增加链接,还可以让阅读文档时不被打断。

强调

Markdown可以使用*_作为标记强调符号,被*_包围的字词会被转换为斜体(一个符号)和粗体(两个符号),例如:

*em*
**strong**
_em_
__strong__

em
strong
em
strong

代码

如果在一行内标记一小段的代码,可以使用`` 括起来,例如:

使用`<html>`标签时,可以把它变成代码段。

使用<html>标签时,可以把它变成代码段。

如果想标记` 为代码段,需要在`` 括起来,并在` 前后加入空格;如果在`` 中可以加文字需要使用`` `` (`test` ),例如:

如果想标记` ` `为代码段,需要在` `` `括起来,并在` ` `前后加入空格;如果在` `` `中可以加文字需要使用` `` `` `(`` `test` ``)

图片

Markdown中使用类似标记链接的语法来标记图片,同样可以使用行内式和参考式。
行内式的图片语法是:

![Alt text](/path/img.jpg)
![Alt test](/path/img.jpg "Optional title")

参考式的图片语法是:

![Alt test][id]
[id]: url/path/image "Optional title attribute"

其它语法

表格

在Markdown语法中可以使用-|:来画出表格,-代表横线,|代表竖线,:-----:代表横线上的内容居中,例如:

|Title1      |Title2    |Title3 |
|------------|:--------:|:-----:|
|Content1    |Content2  |Content3|
Title1 Title2 Title3
Content1 Content2 Content3

自动链接

Markdown中支持简单的自动链接形式来出来网址和电子邮箱,使用<>括起来即可,Markdown会自动将它装换成链接形式,例如:

<http://test.com/>
<test@test.com>

http://test.com/
test@test.com

转义

Markdown中可以利用\来转义语法中有特殊意义的符号,例如:在文章中就是想加入*,不想进行强调,可以在*前加入\:

\*只想在文章中加入`*`\*

*只想在文章中加入**

Markdown中支持以下符号前加\来转义:

\ 反斜线
` 反引号
* 星号
_ 下划线
{} 花括号
[] 方括号
() 圆括号
+ 加号
- 减号
. 英文句号
! 叹号

Markdown书写软件

Markdown本身是一种标记性语法,上面提到过,即使不转换成HTML语言可读性也很强,所以任何文本工具都可以使用Markdown语法,有些文本工具可以安装一些插件达到语法高亮的效果,这里就不一一细说了。还有一些软件是可以一边使用Markdown语法书写,同时能看到转换为HTML后的效果,即所见即所得,如:MarkdownPad、马克飞象(Chrome浏览器插件)、Mou等,还有许多在线的书写工具。

参考资料

本文是根据wowubuntu文章,并根据自己的一些理解加以修改而编写的, 一切版权问题依照原作者声明。

Markdown语法项目(英文)地址