程序员要用MarkDown来创作文章

时间:2022-12-19 19:11:22


前言:Markdown(简称MD)语言常用于编写开源代码的Readme说明。如今越来越多的人使用Mardown来写作,原因是它简单易用。


1.历史


1.1 发明

2004年,John Gruber创造了MD语言,部分和Aaron Swartz合作而成,Aaron Swartz是一位天才程序员。John Gruber的目的是期望推出“易于阅读、易于撰写的纯文字格式,并选择性的转换成有效的XHTML(或是HTML)”。MD语言最重要的设计理念是“可读性”,因为HTML和RTF这种复杂标记语言必须依赖浏览器,否则直接阅读的话会被众多标签影响。


1.2 流行

2008年,Github 使用 Markdown 作为默认的 Readme 文件编写规范,并提供了一套渲染规范。从此MD语言流行起来。


1.3 标准化

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)的正式规范。


1.4 变种

除了上面提到的CommonMark外,另外一个变种是Markdown Extra,最初用于PHP,后来又被Python和Ruby引入,诸如Drupal等内容管理系统也在使用,Markdown Extra在PHP中具体引入时间,目前还不可考。


2.常用语法

MD语言的语法非常简单,这才让MD语言可以快速入门,甚至非程序员也能简单使用。


2.1 标题

支持两种风格:


2.1.1 SeText 风格

文章标题下一行使用三个等号。章节标题下一行使用三个减号。

例如:

这是整篇文章的题目​
===​

这是一个章节题目​
---



2.1.2 Atx风格

可以使用多个井号来定义标题。井号放在标题前面,标题和井号之间使用空格隔开。一个井号表示一级标题,两个井号表示二级标题,以此类推到六级标题。

例如:

# 这是一个一级标题​
## 这是一个二级标题​
### 这是一个三级标题​
#### 这是一个四级标题​
##### 这是一个五级标题​
###### 这是一个六级标题



2.2 列表


2.2.1 有序列表

在列表项之前放置:数字+点符号。

例如:

1. 项目1​
2. 项目2​
3. 项目3



2.2.2 无序列表

使用星号、加号或者减号。

例如:

### 无序列表​
#### 使用星号生成无序列表​
* 项目1​
* 项目2​
* 项目3​
#### 使用加号生成无序列表​
+ 项目1​
+ 项目2​
+ 项目3​
#### 使用减号生成无序列表​
- 项目1​
- 项目2​
- 项目3

2.3 正文、段落、换行和缩进


2.3.1 正文

没有任何标记的文字就是正文。


2.3.2 段落

段落前后使用空行来标识。


2.3.3 换行

在行尾加两个空格。


2.3.4 缩进

没有单独标签,其实英文一般不缩进。中文就用两个空格标识即可。



2.4 分割线、辅助线、强调和字体


2.4.1 分割线

有三种:三个星号,三个减号,或者三个下划线。效果相同。

例如:

### 下面是三类分割线​

使用「星号」作为分割线​
***​
使用「减号」作为分割线​
---​
使用「下划线」作为分割线​
___

2.4.2 辅助线

前后都使用两个波浪号可以加中划线效果。注意,下划线不直接支持,可以借用HTML的<ins>标签,但下划线实际上可以不用的,使用下一节的强调语法即可。

例如:

### 中划线语法​
这是一个删除线​
~~这是一条删除线~~​
当删除线内部紧跟 "空格" 时,删除线效果会失效。​
~~有效的删除线~~​
~~失效的删除线 ~~​
~~ 失效的删除线 ~~​
~~ 失效的删除线~~



2.4.3 强调

使用一个星号或者下划线把内容括起来就可以实现斜体。

使用两个星号或者两个下划线把内容括起来就可以实现斜体。


例如:

### 强调语法​
- 斜体的演示​
*用星号表示的斜体*​
_用下划线表示的斜体_​

- 粗体的演示​
**用星号表示的粗体**​
__用下划线表示的粗体__

2.4.4 字体

MD语言不直接支持字体修改,需要借用HTML的<font>标签。实际上,对于一般创作,我们可以不用关心字体的。


2.5 代码块、引用和行内代码


2.5.1 代码块

程序员一般最关注代码块语法:在行首使用连续四个空格。

例如:

#### 使用空格定义代码块​

pubic static void main(String[] args) {
System.out.println("Hello world");​
}

2.5.2 引用

在行首加入大于号表示引用。引用支持嵌套,最大可以到7层。引用里面也可以使用加粗、代码块、列表等语法。

例如:

> 走自己的路,让别人说去吧。



2.5.3 行内引用

行内引用的用途之一是定义行内代码。使用反引号来把内容括起来,就能实现行内引用。

例如:

#### 定义行内代码​
行内的 html 代码:`<head><title>标题</title></head>`



2.6 超级链接和图片


2.6.1 超级链接

使用中括号来实现,注意是成对的中括号,链接指向的地址使用小括号。语法为:

[超级链接文字](超级链接标签)

例如:

#### 声明超链接的细节​
点击下面的连接将跳转到[百度](https://www.baidu.com/ )首页

2.6.2 图片

图片语法如下:

![替换文字](图片路径 "标题(可选)")

例如:

#### 插入一张图片​
图片前的文字。​
![](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)​
图片后的文字



3 注意事项和参考资料


3.1 关于空格

MD语言的版本比较多,不同浏览器/解释器处理不同。建议多使用空格隔开标签和写作的内容。



3.2 参考资料

中文版规范:http://www.markdown.cn/

英文版规范:https://daringfireball.net/projects/markdown/