Markdown轻量标记语言简易教程
我们在下载一些项目比如github项目,经常会看到.md后缀格式的文件。或者是在博客中发布一些内容时,可以使用Markdown格式发布内容,甚至在一些博客中比如typecho仅支持Markdown编辑器。
Markdown是什么呢?
md全称即markdown,.md和.markdown后缀文件一样。网上很多定义说Markdown是一种标记语言,包括百度百科上,明确定义说:“Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式”。
Markdown的语法在编译后,都会变成HTML标签,所以可以理解为Markdown就是一种轻量级的标记语言,是HTML标记语言的变种。
Markdown优点
简单、流行、B格高且使用广泛,排版功能足够使用(不足之处可用HTML、CSS弥补)。
Markdown缺点
Markdown是轻量级的标记语言,不能进行专业排版样式的编辑。所以它的缺点就是太简单,很多复杂的专业排版样式功能无法实现。
注:我却觉得这是Markdown的优点呢,如果Markdown把word的功能都实现了,那还要word干嘛呢?如果Markdown中包括了HTML所有的替代标签,又置HTML于何地呢,或者说为了简单而简单来设计一门解释语言,这样真的有必要么,不知道别人如何觉得,我觉得HTML已经非常简单了,Markdown的目标不是要取代HTML,也不是要取代Word。
Markdown的简练,不管是编译前和编译后都很适合我们阅读和理解。Markdown专注的是排版内容而不是特效,把Markdown拉到专业排版样式的角度去对比,显然是不切实际的。反而让我觉得,人们需求的苛刻,却成了Markdown的污点。
Markdown语法
标题 - h1~h6
Markdown支持两种定义标题的方式,类Setext和类atx形式。
类Setext形式是用底线的形式,利用=表示最高阶标题,-表示第二阶标题:
THis is an H1.
==============
This is an H2.
--------------注:任何数量的=和-都是可以的。
类Atx形式则是在行首插入1到6个#,对应到标题1到6阶。
# 这是H1
## 这是H2
### 这是H3
#### 这是H4
##### 这是H5
###### 这是H6空格、段落和换行 - 、<p>、<br/>
空格:如果直接在编辑器敲空格或者换行的话,markdown只显示为一个空格。想要多个空格的话,需要借助HTML的实体字符 ,直接输入多个 。
段落:需要回车两次,编辑器换两行,才能显示为段落。即本段落和上一段内容中间,显示有一个空行(多个空行和一个空行效果是一样的)。
换行:在想要换行的地方,按下两个空格,然后再回车,即可以实现换行。如果想要换多行,就重复多次该操作,也可以使用HTML的<br />标签实现换行。
区块引用 - blockquote
Markdown标记区块引用使用类似email中用>的引用方式。
> 这是一个区块引用,这是一个区块引用。区块引用可以嵌套使用,只需要根据层次加上不同数量的>:
> 这是一个区块引用,这是一个区块引用。
> > 这是内部引用 无序列表 - <ul>
无序列表使用星号(*)、加号(+)和减号(-)作为列表标记。
* red
* green
* black+ red
+ green
+ black- red
- green
- black注:这三种方式的效果是一样的。
无序列表可以嵌套使用。
* color
* red
* green
* black有序列表 - <ol>
有序列表使用数字接着一个英文句点。
1. red
2. green
3. black注:在列表中使用的数字不会影响输出的HTML结果。
1. red
1. green
1. black这段代码和上边的输出效果是一致的。
有序列表和无序列表一样,也可以嵌套使用。
代码区块 - <pre>、<code>
要在Markdown中建立代码区块,只需要缩进4个空格或是1个制表符就可以。
这是一个普通段落:
这是一个代码区块Markdown 会转换成:
<p>这是一个普通段落:</p>
<pre><code>这是一个代码区块
</code></pre>一个代码区块会持续到没有缩进的那一行(或是文件末尾)。在代码区块里面, & 、 < 和 > 会自动转成 HTML 实体,这样的方式非常容易使用 Markdown 插入代码,只需要复制贴上,再加上缩进就可以了,剩下的 Markdown 都会自动处理。
另外一种方式建立代码区块是使用三个反引号`,并且这种方式还可以指定使用的语言,指定语言后代码会有高亮效果。
\`\`\`HTML 这是一个代码区块 \`\`\`
如果仅仅是要标记一小段行内代码,只需要用1个反引号把它包起来(`),例如:
Use the `printf()` function.其他需要注意的地方:
如要显示一个反引号,用两个反引号包裹文档 ``
`` 文本中夹杂一个`反引号如何显示 ``如要显示3个反引号,用<pre>标签包裹文档
\`\`\`javascript
function a(){
var a = 1;
}
\`\`\`
分隔线 - <hr>
在一行中用三个以上的星号、减号、底线来建立一个分隔线,行内不能有其他东西。也可以在星号或是减号中间插入空格。下面每种写法都可以建立分隔线:
* * *
***
*****
- - -
---------------------------------------着重、强调 - <em>、<strong>
Markdown 使用星号(*)和底线(_)作为标记强调字词的符号,被 * 或 \_ 包围的字词会被转成用 <em> 标签包围,用两个 * 或 \_ 包起来的话,则会被转成 <strong>,例如:
*斜体*
_斜体_
**加粗**
__加粗__
***倾斜加粗***
___倾斜加粗___删除线 - <del>
添加删除线使用两个波浪线~~
~~删除线~~下划线 - <u>
使用两个加号+,添加下划线。或者借助HTML的<u>标签。
++下划线++
或者
<u>下划线</u>注:尽量不要给文本加下划线,因为这会和超链的表现形式混淆,会被误以为是个超链。
高亮
添加高亮效果使用两个==
==高亮==任务列表-方框效果
- [ ] - 表示未完成任务,会出现一个未选中的复选框。- [x] - 表示已经完成任务,会出现一个已选中的复选框。
- [x] - 已完成任务
- [ ] - 待办任务链接 - <a>
Markdown支持两种形式的链接语法:行内式和参考式两种形式。
不管是哪一种,链接文字都是用 [方括号] 来标记。要建立一个行内式的链接,只要在方块括号后面紧接着圆括号并插入网址链接即可,如果还想要加上链接的 title 文字,只要在网址后面,用双引号把 title 文字包起来即可,例如:
这是通往 [码路行者](http://www.mlxz.top "码梦人生,专注前端Web") 的链接.
[码路行者](http://www.mlxz.top) 没有title属性的链接.网址也可以使用相对路径,比如说链接到同样主机的资源:
查看 [关于](/about/) 页面.参考式的链接是在链接文字的括号后面再接上另一个方括号,而在第二个方括号里面要填入用以辨识链接的标记:
这是通往 [码路行者] [id] 的链接.
[id]: http://www.mlxz.top "码梦人生,专注前端Web"链接内容定义的形式为:
- 方括号(前面可以选择性地加上至多三个空格来缩进),里面输入链接文字
- 接着一个冒号
- 接着一个以上的空格或制表符
- 接着链接的网址
- 选择性地接着 title内容,可以用单引号、双引号或是括弧包着
下边这三种形式都是可以的:
[码路行者]: http://www.mlxz.top "码梦人生,专注前端Web"
[码路行者]: http://www.mlxz.top '码梦人生,专注前端Web'
[码路行者]: http://www.mlxz.top (码梦人生,专注前端Web)网址定义只有在产生链接的时候用到,不会直接出现在文件之中。链接辨别标签可以有字母、数字、空白和标点符号,但是并不区分大小写,因此下面两个链接是一样的:
[链接文本][a]
[链接文本][A]还可以使用隐式链接标记功能,这个功能就是省略链接标记,在链接文本后边跟上一个空的方括号。这种情形下,就相当于链接标记等同于链接文本。
这是通往[码路行者]的链接。
[码路行者]: http://www.mlxz.top "码梦人生,专注前端Web"行内式和参考式哪个更好一些?
使用 Markdown 的参考式链接,可以让文件更像是浏览器最后产生的结果,可以把一些标记相关的元数据移到段落文字之外,可以增加链接而不让文章的阅读感觉被打断。比较下边两个示例:
这是[链接1](http://link1 "链接1"),这是[链接2](http://link2 "链接2")这是[链接1][2],这是[链接1][3]
可以看出,参考式的链接可读性更强一些。
其实,除了行内式和参考式外,还可以在<>中直接定义链接:
<http://www.mlxz.top>写入邮箱也是可以的:
<mlxztop@126.com>图片 - <img>
插入图片的语法和链接几乎相同,只是在前边多了一个叹号!。也有两种形式: 行内式和参考式。
行内式的图片语法看起来像是:

一个惊叹号 !,接着一个方括号,里面放上图片的替代文字
接着一个普通括号,里面放上图片的网址,最后还可以用引号包住并加上选择性的 'title' 文字。
参考式的图片语法则长得像这样:
![Alt 文本][id]id是图片参考的名称,图片参考的定义方式则和定义链接的形式一样:
[id]: url/to/image "可选的 title内容"转义 - \
有一些字符在Markdown中有特殊的意义,直接插入到文档中会被当做特殊语法来解析。如果要插入这些特殊字符,可是使用反斜杠进行转义。
\**仅表现为斜体*\*Markdown 支持以下这些符号前面加上反斜杠来帮助插入普通的符号:
\ 反斜线
` 反引号
* 星号
_ 底线
{} 花括号
[] 方括号
() 括弧
# 井字号
+ 加号
- 减号
. 英文句点
! 惊叹号表格 - <table>
表格语法比较奇特:
第一行-表头,用竖线|隔开,类似这样:| 表头1 | 表头2 | 表头3 |。
第二行-列的居中方式
- :--- 左对齐
- ---: 右对齐
- :---: 居中对齐
注:至少要有一个横线。
| 表头1 | 表头2 | 表头3 |
| -----:|------:| :-----: |
| td1 |td2 | td3 | 兼容HTML
Markdown和HTML的语法兼容,在Markdown中实现不了的效果都可以通过HTML的标签来实现。
Markdown 的语法种类很少,只对应HTML标记的一小部分。Markdown 语法的目标是:成为一种适用于网络的书写语言,能让文档更容易读、写和随意改。
不在 Markdown 涵盖范围之内的标签,都可以直接在文档里面用 HTML 撰写。不需要额外标注这是 HTML 或是Markdown;只要直接加标签就可以了。