Markdown语法收藏

主要内容

Markdown是什么

谁创造了它?

为什么要使用它?

怎么使用?

谁在用?

尝试一下

正文

Markdown是什么

Markdown是一种轻量级标记语言,它以纯文本形式(易读、易写、易更改)编写文档,并最终以HTML格式发布。
Markdown也可以理解为将以MARKDOWN语法编写的语言转换成HTML内容的工具。

谁创造了它?

它由 Aaron Swartz John Gruber共同设计,Aaron Swartz就是那位于去年(2013年1月11日)自杀,有着开挂一般人生经历的程序员。维基百科对他的 介绍 是:软件工程师、作家、政治组织者、互联网活动家、维基百科人

他有着足以让你跪拜的人生经历:

  • 14岁参与RSS 1.0规格标准的制订。
  • 2004年入读斯坦福,之后退学。
  • 2005年创建 Infogami ,之后与 Reddit 合并成为其合伙人。
  • 2010年创立求进会(Demand Progress),积极参与禁止网络盗版法案(SOPA)活动,最终该提案被撤回。
  • 2011年7月19日,因被控从MIT和JSTOR下载480万篇学术论文并以免费形式上传于网络被捕。
  • 2013年1月自杀身亡。

Aaron Swartz

天才都有早逝的归途。

为什么要使用它?

  • 它是易读(看起来舒服)、易写(语法简单)、易更改纯文本。处处体现着极简主义的影子。
  • 兼容HTML,可以转换为HTML格式发布。
  • 跨平台使用。
  • 越来越多的网站支持Markdown。
  • 更方便清晰地组织你的电子邮件。(Markdown-here, Airmail)
  • 摆脱Word(我不是认真的)。

怎么使用?

如果不算扩展,Markdown的语法绝对简单到让你爱不释手。

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

标题

两种形式:

使用=-标记一级和二级标题。

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

效果:

一级标题

二级标题

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

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

效果: biaoti

段落

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

区块引用

在段落的每行或者只在第一行使用符号>,还可使用多个嵌套引用,如:

> 区块引用
>> 嵌套引用

效果:

区块引用

嵌套引用

代码区块

代码区块的建立是在每行加上4个空格或者一个制表符(如同写代码一样)。如
普通段落:

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

代码区块:

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

注意:需要和普通段落之间存在空行。

强调

在强调内容两侧分别加上*或者_,如:

*斜体*,_斜体_
**粗体**,__粗体__

效果:

斜体斜体
粗体粗体

列表

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

-(+*) 第一项 -(+*) 第二项 - (+*)第三项

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

效果:

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

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

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

效果:

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

分割线

分割线最常使用就是三个或以上*,还可以使用-_

链接

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

行内式:

[爸比娃娃的自留地](https:/blog.jiandan.cf “爸比娃娃”)。

效果:

爸比娃娃的自留地

参考式:

[爸比娃娃的自留地1][1]
[爸比娃娃的自留地2][2]
[1]:https:/blog.jiandan.cf “爸比娃娃”
[2]:https:/blog.jiandan.cf “爸比娃娃”

效果:

爸比娃娃的自留地1
爸比娃娃的自留地2

注意:上述的[1]:https:/blog.jiandan.cf "爸比娃娃"不出现在区块中。

图片

添加图片的形式和链接相似,只需在链接的基础上前方加一个

反斜杠\

相当于反转义作用。使符号成为普通符号。

符号’`'

起到标记作用。如:

`ctrl+a`

效果:

ctrl+a

谁在用?

Markdown的使用者:

  • GitHub
  • 简书
  • Stack Overflow
  • Apollo
  • Moodle
  • Reddit
  • 等等

尝试一下

  • Chrome下的插件诸如stackeditmarkdown-here等非常方便,也不用担心平台受限。
  • 在线的dillinger.io评价也不错
  • Windowns下的MarkdownPad也用过,不过免费版的体验不是很好。
  • Mac下的Mou是国人贡献的,口碑很好。
  • Linux下的ReText不错。

当然,最终境界永远都是笔下是语法,心中格式化 :)。


注意:不同的Markdown解释器或工具对相应语法(扩展语法)的解释效果不尽相同,具体可参见工具的使用说明。 虽然有人想出面搞一个所谓的标准化的Markdown,[没想到还惹怒了健在的创始人John Gruber] ( http://blog.codinghorror.com/standard-markdown-is-now-common-markdown/ )。


以上基本是所有traditonal markdown的语法。

其它:

列表的使用(非traditonal markdown):

|表示表格纵向边界,表头和表内容用-隔开,并可用:进行对齐设置,两边都有:则表示居中,若不加:则默认左对齐。

代码库链接
MarkDownhttps://github.com/younghz/Markdown
MarkDownCopyhttps://github.com/younghz/Markdown

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

目录

文本

  • 普通文本

直接输入的文字就是普通文本。需要注意的是要换行的时候不
能直接通过回车来换行,需要使用<br>.也就是html里面的标签. 注意第三行的<br>前加了反斜杠 \ .目的就是像其他语言那样实现转义,也就是 < 的转义.

  • 单行文本

      使用两个Tab符实现单行文本.
    
  • 多行文本

      多行文本和
      单行文本异曲同工,只要在
      每行行首加两个Tab.
    
  • 文字高亮

如果你想使一段话中部分文字高亮显示,来起到突出强调的作用,那么可以把它用 ` ` 包围起来.注意这不是单引号,而是Tab上方,数字1左边的按键(注意使用英文输入法).

斜体和粗体

使用 * 和 ** 表示斜体和粗体.

这是 斜体,这是 粗体.

删除线

使用~~表示删除线.

外链接

使用 [描述](链接地址) 为文字增加外链接。

这是去往 有趣的HTML5和CSS3特效在线演示地址 的链接。

锚点

我们可以使用HTML的锚点标签(#)来设置锚点: 回到目录
但其实呢,每一个标题都是一个锚点,不需要用标签来指定,比如我们 回到顶部 不过不幸的是,由于对中文支持的不好,所以中文标题貌似是不能视作标签的。

列表

使用 *,+,- 表示无序列表。

  • 无序列表项 一
  • 无序列表项 二
  • 无序列表项 三

二级三级原点

  • 编程语言
    • 脚本语言
      • Python

使用数字和点表示有序列表。

  1. 有序列表项 一
  2. 有序列表项 二
  3. 有序列表项 三

数字列表自动排序

也可以在第一行指定1. ,而接下来的几行用星号*(或者继续用数字1. )就可以了,它会自动显示成2、3、4……
面向对象的七大原则:

  1. 开闭原则
  • 里氏转换原则
  • 依赖倒转原则
  1. 接口隔离原则
  2. 组合聚合复用原则
  3. 迪米特法则
  4. 单一直则原则

多级数字列表

和圆点的列表一样,数字列表也有多级结构:

  1. 这是一级的数字列表,数字1还是1
    1. 这是二级的数字列表,阿拉伯数字在显示的时候变成了罗马数字
      1. 这是三级的数字列表,数字在显示的时候变成了英文字母
      2. 四级的数字列表显示效果,就不再变化了,依旧是英文字母

复选框列表

  • C
  • C++
  • Java
  • Qt
  • Android
  • C#
  • .NET

文字引用

使用 > 表示文字引用。

单个引用:

野火烧不尽,春风吹又生。

字符包围:

数据结构

二叉树

平衡二叉树

满二叉树

代码块

使用 四个缩进空格 表示代码块。

示例:

这是一个代码块,此行左侧有四个不可见的空格。

加强的代码块

支持四十一种编程语言的语法高亮的显示,行号显示。

非代码示例:

$ sudo npm install 

Python 示例:

@requires_authorization
def somefunc(param1='', param2=0):
    '''A docstring'''
    if param1 > param2: # interesting
        print 'Greater'
    return (param2 - param1 + 1) or None

class SomeClass:
    pass

>>> message = '''interpreter
... prompt'''

JavaScript 示例:

/**
* nth element in the fibonacci series.
* @param n >= 0
* @return the nth element, >= 0.
*/
function fib(n) {
  var a = 1, b = 1;
  var tmp;
  while (--n >= 0) {
    tmp = a;
    a += b;
    b = tmp;
  }
  return a;
}

document.write(fib(10));

插入图像

使用 ![描述](图片链接地址) 插入图像。

插入图片示例:

girl

给图片添加链接: [![alt](图片地址)](图片链接地址)

girl

显示表格

表头1  | 表头2
------------- | -------------
Content Cell  | Content Cell
Content Cell  | Content Cell
表头1表头2
Content CellContent Cell
Content CellContent Cell
名字描述
HelpDisplay the help window.
CloseCloses a window

表格中也可以使用普通文本的删除线,斜体等效果

名字描述
HelpDisplay the help window.
CloseCloses a window

表格可以指定对齐方式

左对齐居中右对齐
col 3 issome wordy text$1600
col 2 iscentered$12
zebra stripesare neat$1

表格中嵌入图片

图片描述
Markdown图片

Html 标签

本站支持在 Markdown 语法中嵌套 Html 标签,譬如,你可以用 Html 写一个纵跨两行的表格:

<table>
    <tr>
        <th rowspan="2">值班人员</th>
        <th>星期一</th>
        <th>星期二</th>
        <th>星期三</th>
    </tr>
    <tr>
        <td>李强</td>
        <td>张明</td>
        <td>王平</td>
    </tr>
</table>
值班人员星期一星期二星期三
李强张明王平

待办事宜 Todo 列表

使用带有 [ ] 或 [x] (未完成或已完成)项的列表语法撰写一个待办事宜列表,并且支持子列表嵌套以及混用Markdown语法,例如:

- [ ] **Cmd Markdown 开发**
    - [ ] 改进 Cmd 渲染算法,使用局部渲染技术提高渲染效率
    - [ ] 支持以 PDF 格式导出文稿
    - [x] 新增Todo列表功能 
    - [x] 改进 LaTex 功能
        - [x] 修复 LaTex 公式渲染问题
        - [x] 新增 LaTex 公式编号功能 
- [ ] **七月旅行准备**
    - [ ] 准备邮轮上需要携带的物品
    - [ ] 浏览日本免税店的物品
    - [x] 购买蓝宝石公主号七月一日的船票

对应显示如下待办事宜 Todo 列表:

  • Cmd Markdown 开发
    • 改进 Cmd 渲染算法,使用局部渲染技术提高渲染效率
    • 支持以 PDF 格式导出文稿
    • 新增Todo列表功能
    • 改进 LaTex 功能
      • 修复 LaTex 公式渲染问题
      • 新增 LaTex 公式编号功能
  • 七月旅行准备
    • 准备邮轮上需要携带的物品
    • 浏览日本免税店的物品
    • 购买蓝宝石公主号七月一日的船票

添加表情

Github的Markdown语法支持添加emoji表情,输入不同的符号码(两个冒号包围的字符)可以显示出不同的表情.

比如😊,可以显示😊.

详细查看 emoji .