Markdown是一种轻量级标记语言,创始人为约翰·格鲁伯(英语:John Gruber)。它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者 HTML)文档”。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。

由于Markdown的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,当前许多网站都广泛使用Markdown来撰写帮助文档或是用于论坛上发表消息。例如:GitHub、reddit、Diaspora、Stack Exchange、OpenStreetMap 、SourceForge 等。甚至 Markdown 能被使用来撰写电子书。

主要内容

1. Markdown历史

2. Markdown主要语法

3. 其他语法

4. 参考链接


正文


Markdown历史


概述

John Gruber在 2004 年创造了Markdown语言,在语法上有很大一部分是跟Aaron Swartz共同合作的。Markdown的目标是实现「易读易写」。可读性,无论如何,都是最重要的。一份使用Markdown格式撰写的文件应该可以直接以纯文本发布,并且看起来不会像是由许多标签或是格式指令所构成。Markdown语法受到一些既有 text-to-HTML 格式的影响,包括 Setext、atx、Textile、reStructuredText、Grutatext 和 EtText,而最大灵感来源其实是纯文本电子邮件的格式。

Aaron Swartz 大神

Aaron Swartz(1986 年 11 月 8 日-2013 年 1 月 11 日)是美国计算机程序员、企业家、作家、政治活动者和互联网黑客主义者。他参与开发了 RSS 网上信息源发布格式、Markdown 文本发布格式、知识共享组织、web.py 网站开发框架,同时是社交媒体 Reddit 的联合创始人。

  • **2009 年**,他协助成立了渐进社会变革活动委员会,期以了解有效的互联网运动。

  • **2010 年**,他成为哈佛大学埃德蒙·萨夫拉伦理研究中心的学者,在劳伦斯·莱斯格的领导下进行研究。他曾成立在线群组求进会——因反对禁止网络盗版法案的运动而闻名。

  • **2011 年**,他被麻省理工学院警署以其非法闯入的罪名逮捕:通过麻省理工学院校园网络,透过学院给予的访客账户,大规模系统性地下载 JSTOR 上的学术期刊。联邦检察官对他提起两项网络诈骗和十一项违反《计算机欺诈和滥用法》行为的诉讼——亚伦·斯沃茨将面临合计最高 35 年的刑期并处 100 万美元罚金、没收财产、归还失窃物品和监视居住的处罚。
    他拒绝了联邦检察官提议其在联邦监狱服刑 6 个月的认罪协商。随后他被发现死在其于纽约布鲁克林区的公寓内,自缢而死。

  • **2013 年**,亚伦·斯沃茨被追授入互联网名人堂。

Aaron Swartz


Markdown主要语法


Markdown语法主要分为如下几大部分:
标题
段落
字体
横线
引用区块
代码区块
列表
链接
图片
表格
反斜杠
符号`


标题


=-标记一级和二级标题

一级标题
=========
二级标题
---------

效果:

一级标题

二级标题


使用#,可表示 1-6 级标题

# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

效果:

一级标题

二级标题

三级标题

四级标题

五级标题
六级标题

段落

段落的前后要有空行,所谓的空行是指没有文字内容。若想在段内强制换行的方式是使用两个以上空格加上回车


字体

粗体和斜体

使用*_包含需要标记为斜体或加粗的文字:

*斜体文本*
_斜体文本_
**粗体文本**
__粗体文本__
***粗斜体文本***
___粗斜体文本___

效果:

斜体文本
斜体文本
粗体文本
粗体文本
粗斜体文本
粗斜体文本

上下标

使用<sub>标签:

上标:X<sub>2</sub>
下标:O<sup>2</sup>

效果:

上标:X2
下标:O2


横线


分割线

在一行中用三个以上的*-、底线来建立一个分隔线,行内不能有其他东西。你也可以在星号或是减号中间插入空格(不建议加空格):

* * *
***
*****
- - -
----------

效果:






删除线

在文字的两端加上两个波浪线~~即可:

~~Markdown删除线~~

效果:

Markdown 删除线

下划线

使用<u>标签:

<u>Markdown下划线</u>

效果:

Markdown 下划线


2.5 引用区块


行内引用

使用符号`(Esc 下面那个符号):

这是`行内`引用

效果:

这是行内引用。

引用区块

在段首使用符号>
> **Markdown** 引用单行文本
> **Markdown** 引用单行文本

效果:

Markdown 引用单行文本
Markdown 引用单行文本

嵌套引用区块

使用多个>完成嵌套引用:
> 单行引用
>> 嵌套引用
>>> 三次嵌套引用
>>> 三次嵌套引用

效果

单行引用

二层引用
二层嵌套

三层嵌套引用
三层嵌套引用


代码区块


对代码区块进缩进处理,通过每行缩进四个空格或一个制表符即可,但是没有语法高亮和行号显示。代码文本:
void main()
{
&emsp;&emsp;printf("Hello, Markdown.");
}

使用空格或制表符

void main()
{
    printf("Hello, Markdown.");
}

通过标签

使用标签<pre></pre>也可以实现缩进:
<pre>
int main(int argc, int *argv[])
{
&emsp;&emsp;printf("Hello, Markdown.");
}
</pre>

效果:

int main(int argc, int *argv[]) 
{
    printf("Hello, Markdown.");    
}   

增加高亮和行号

类似多行注释,在代码块首位各用三个符号`来处理,并指定代码语言(C 语言为例):

```C
int main(int argc, int *argv[])
{
&emsp;&emsp;printf("Hello, Markdown.");
}
```

效果:

1
2
3
4
int main(int argc, int *argv[])
{
printf("Hello, Markdown.");
}

列表

无序列表

使用·+、或-任意一种标记无序列表,如:

- 第一项
- 第二项
- 第三项

+ 第一项
+ 第二项
+ 第三项

* 第一项
* 第二项
* 第三项

注意:标记后面最少有一个空格制表符。若不在引用区块中,必须和前方段落之间存在空行。

效果:

  • 第一项
  • 第二项
  • 第三项

有序列表

有序列表的标记方式是将上述的符号换成数字,并辅以.,如:

&emsp;&emsp;1. 第一项
&emsp;&emsp;2. 第二项
&emsp;&emsp;3. 第三项

效果:

  1. 第一项
  2. 第二项
  3. 第三项

列表嵌套

列表嵌套只需在子列表中的选项添加四个空格或缩进 TAB 即可,也可在列表内进行区块引用:

&emsp;&emsp;1. 第一项
&emsp;&emsp;&emsp;&emsp;- 第一项嵌套的第一个元素
&emsp;&emsp;&emsp;&emsp;- 第一项嵌套的第二个元素
&emsp;&emsp;2. 第二项
&emsp;&emsp;&emsp;&emsp;> 第二项嵌套的第一个元素
&emsp;&emsp;&emsp;&emsp;> 第二项嵌套的第二个元素

效果:

  1. 第一项
    • 第一项嵌套的第一个元素
    • 第一项嵌套的第二个元素
  2. 第二项

    第二项第一个元素区块引用
    第二项第二个元素区块引用

GFM task list

带选择框的选项列表:

- [x] GFM task list 1
- [x] GFM task list 2
- [ ] GFM task list 3
    - [ ] GFM task list 3-1
    - [ ] GFM task list 3-2
    - [ ] GFM task list 3-3
- [ ] GFM task list 4
    - [ ] GFM task list 4-1
    - [ ] GFM task list 4-2

效果:

  • GFM task list 1
  • GFM task list 2
  • GFM task list 3
    • GFM task list 3-1
    • GFM task list 3-2
    • GFM task list 3-3
  • GFM task list 4
    • GFM task list 4-1
    • GFM task list 4-2

链接

链接可以由两种形式生成:行内式参考式

行内式

方式为[链接名称](链接地址)<链接地址>

这是一个链接 [github treading](https://github.com/trending)
这是另一个链接 <https://github.com/explore>

效果:

这是一个链接 github treading
这是另一个链接 https://github.com/explore

参考式

链接也可以用变量(数字或字符串)来代替:

这是一个链接 [github treading][1]
这是另一个链接 [github explore][explore]
(上下之间必须有空行)
[1]:https://github.com/trending
[explore]:https://github.com/explore

效果:

这是一个链接 [github treading][1]
这是另一个链接 [github explore][explore]

[1]:https://github.com/trending > [explore]:https://github.com/explore

注意:上述的[1]:https://github.com/trending不出现在区块中。


图片


添加图片的形式和链接相似,只需在链接的基础上前方加一个,支持行内式和参考式。如上文Aaron Swartz的图片链接:

![Aaron Swartz](https://github.com/younghz/Markdown/raw/master/resource/Aaron_Swartz.jpg)


表格

使用|来分隔不同的单元格,使用-来分隔表头和其他行。使用-::-:-:设置表格的对齐方式:

| 这是左对齐 | 这是右对齐 | 这是居中对齐 |
| :--------- | ---------: | :----------: |
| 单元格 | 单元格 | 单元格 |
| 单元格 | 单元格 | 单元格 |

效果:

这是左对齐 这是右对齐 这是居中对齐
单元格 单元格 单元格
单元格 单元格 单元格

反斜杠


反转义,使符号成为普通符号。

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

效果

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


符号`


起到标记作用。如:

`ctrl+a`

效果:

ctrl+a


其他语法


使用两个美元符$$包裹TeXLaTeX格式的数学公式来实现。



其他:关于其它扩展语法可参见具体工具的使用说明。


参考链接


https://www.runoob.com/markdown/md-tutorial.html
https://markdown.tw
https://github.com/younghz/Markdown



笔下是语法,心中格式化