前言:Markdown(简称MD)语言常用于编写开源代码的Readme说明。如今越来越多的人使用Mardown来写作,原因是它简单易用。
2004年,John Gruber创造了MD语言,部分和Aaron Swartz合作而成,Aaron Swartz是一位天才程序员。John Gruber的目的是期望推出“易于阅读、易于撰写的纯文字格式,并选择性的转换成有效的XHTML(或是HTML)”。MD语言最重要的设计理念是“可读性”,因为HTML和RTF这种复杂标记语言必须依赖浏览器,否则直接阅读的话会被众多标签影响。
(资料图片仅供参考)
2008年,Github 使用 Markdown 作为默认的 Readme 文件编写规范,并提供了一套渲染规范。从此MD语言流行起来。
2004 年末,Markdown发布规范1.0.1,这也是目前流行版本。
2012年开始,包括Jeff Atwood和John MacFarlane在内的一群人启动了标准化工作。
2014年9月,Gruber反对在这一工作中继续使用“Markdown”这个名字,其被更名为CommonMark。
2016年,标准化组织IETF发布了RFC 7763和RFC 7764。RFC 7763 从原始变体引入了MIME类型 text/markdown。RFC 7764讨论并注册了MultiMarkdown、GitHub Flavored Markdown (GFM)、Pandoc、CommonMark及Markdown等变体。
2017年,GitHub发布了基于CommonMark的GitHub Flavored Markdown(GFM)的正式规范。
除了上面提到的CommonMark外,另外一个变种是Markdown Extra,最初用于PHP,后来又被Python和Ruby引入,诸如Drupal等内容管理系统也在使用,Markdown Extra在PHP中具体引入时间,目前还不可考。
MD语言的语法非常简单,这才让MD语言可以快速入门,甚至非程序员也能简单使用。
支持两种风格:
文章标题下一行使用三个等号。章节标题下一行使用三个减号。
例如:
这是整篇文章的题目===这是一个章节题目---
可以使用多个井号来定义标题。井号放在标题前面,标题和井号之间使用空格隔开。一个井号表示一级标题,两个井号表示二级标题,以此类推到六级标题。
例如:
# 这是一个一级标题## 这是一个二级标题### 这是一个三级标题#### 这是一个四级标题##### 这是一个五级标题###### 这是一个六级标题
在列表项之前放置:数字+点符号。
例如:
1. 项目12. 项目23. 项目3
使用星号、加号或者减号。
例如:
### 无序列表#### 使用星号生成无序列表* 项目1* 项目2* 项目3#### 使用加号生成无序列表+ 项目1+ 项目2+ 项目3#### 使用减号生成无序列表- 项目1- 项目2- 项目3
没有任何标记的文字就是正文。
段落前后使用空行来标识。
在行尾加两个空格。
没有单独标签,其实英文一般不缩进。中文就用两个空格标识即可。
有三种:三个星号,三个减号,或者三个下划线。效果相同。
例如:
### 下面是三类分割线使用「星号」作为分割线***使用「减号」作为分割线---使用「下划线」作为分割线___
前后都使用两个波浪号可以加中划线效果。注意,下划线不直接支持,可以借用HTML的标签,但下划线实际上可以不用的,使用下一节的强调语法即可。
例如:
### 中划线语法这是一个删除线~~这是一条删除线~~当删除线内部紧跟 "空格" 时,删除线效果会失效。~~有效的删除线~~~~失效的删除线 ~~~~ 失效的删除线 ~~~~ 失效的删除线~~
使用一个星号或者下划线把内容括起来就可以实现斜体。
使用两个星号或者两个下划线把内容括起来就可以实现斜体。
例如:
### 强调语法- 斜体的演示*用星号表示的斜体*_用下划线表示的斜体_- 粗体的演示**用星号表示的粗体**__用下划线表示的粗体__
MD语言不直接支持字体修改,需要借用HTML的标签。实际上,对于一般创作,我们可以不用关心字体的。
程序员一般最关注代码块语法:在行首使用连续四个空格。
例如:
#### 使用空格定义代码块 pubic static void main(String[] args) { System.out.println("Hello world"); }
在行首加入大于号表示引用。引用支持嵌套,最大可以到7层。引用里面也可以使用加粗、代码块、列表等语法。
例如:
> 走自己的路,让别人说去吧。
行内引用的用途之一是定义行内代码。使用反引号来把内容括起来,就能实现行内引用。
例如:
#### 定义行内代码行内的 html 代码:`标题 `
使用中括号来实现,注意是成对的中括号,链接指向的地址使用小括号。语法为:
[超级链接文字](超级链接标签)
例如:
#### 声明超链接的细节点击下面的连接将跳转到[百度](https://www.baidu.com/ )首页
图片语法如下:
![替换文字](图片路径 "标题(可选)")
例如:
#### 插入一张图片图片前的文字。![](https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fcontent.jianguoyun.com%2Fwp-content%2Fuploads%2F2019%2F08%2F110057.jpg&refer=http%3A%2F%2Fcontent.jianguoyun.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1674037306&t=9c3288e38d2daf41e808c1b5c3413da5)图片后的文字
MD语言的版本比较多,不同浏览器/解释器处理不同。建议多使用空格隔开标签和写作的内容。
中文版规范:http://www.markdown.cn/
英文版规范:https://daringfireball.net/projects/markdown/