2014-07-07 08:58:17 +04:00
---
2014-11-14 18:07:42 +03:00
language: markdown
2014-07-07 08:58:17 +04:00
contributors:
- ["Dan Turkel", "http://danturkel.com/"]
2014-07-07 09:00:39 +04:00
translators:
2014-09-06 05:59:37 +04:00
- ["Fangzhou Chen","https://github.com/FZSS"]
2018-07-04 12:45:21 +03:00
- ["Luffy Zhong", "https://github.com/mengzhongshi"]
2019-05-11 15:48:14 +03:00
- ["Yuchen Liu", "https://github.com/smallg0at"]
2014-07-29 08:08:24 +04:00
filename: learnmarkdown-cn.md
2014-07-07 09:00:39 +04:00
lang: zh-cn
2014-07-07 08:58:17 +04:00
---
2014-07-07 13:01:22 +04:00
Markdown 由 John Gruber 于 2004年创立. 它旨在成为一门容易读写的语法结构,并可以便利地转换成 HTML( 以及其他很多) 格式。
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
在不同的解析器中, Markdown 的实现方法有所不同。
此教程会指出哪些特征是通用,哪一些只对某一解析器有效。
2018-07-04 12:16:23 +03:00
- [HTML标签 ](#HTML标签 )
- [标题 ](#标题 )
- [文本样式 ](#文本样式 )
- [段落 ](#段落 )
- [列表 ](#列表 )
- [代码块 ](#代码块 )
- [水平线分隔 ](#水平线分隔 )
- [链接 ](#链接 )
- [图片 ](#图片 )
- [杂项 ](#杂项 )
2018-07-04 12:10:32 +03:00
## HTML标签
Markdown 是 HTML 的父集,所以任何 HTML 文件都是有效的 Markdown。
2014-07-07 08:58:17 +04:00
2018-03-05 06:48:44 +03:00
```md
2018-07-04 12:10:32 +03:00
<!-- 这意味着我们可以在 Markdown 里使用任何 HTML 元素,比如注释元素,
2014-07-07 13:01:22 +04:00
且不会被 Markdown 解析器所影响。不过如果你在 Markdown 文件内创建了 HTML 元素,
你将无法在 HTML 元素的内容中使用 Markdown 语法。-->
2018-07-04 12:10:32 +03:00
```
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
## 标题
2014-07-07 11:45:12 +04:00
2018-07-04 12:10:32 +03:00
通过在文本前加上不同数量的hash(#), 你可以创建相对应的 `<h1>` 到 `<h6>` HTML元素。
2014-07-07 12:55:29 +04:00
2018-07-04 12:10:32 +03:00
```md
2014-07-07 11:45:12 +04:00
# 这是一个 <h1>
## 这是一个 <h2>
### 这是一个 <h3>
#### 这是一个 <h4>
##### 这是一个 <h5>
###### 这是一个 <h6>
2018-07-04 12:10:32 +03:00
```
2019-05-11 15:48:14 +03:00
实际效果(最终显示时会因设置而看起来不同):
# 这是一个
## 这也是一个
### 这还是一个
#### 这依旧是一个
##### 这真的是一个
###### 这...是一个
2018-07-04 12:10:32 +03:00
对于 `<h1>` 和 `<h2>` 元素, Markdown 额外提供了两种添加方式。
2014-07-07 11:45:12 +04:00
2018-07-04 12:10:32 +03:00
```md
2014-07-07 11:45:12 +04:00
这是一个 h1
2014-07-07 08:58:17 +04:00
=============
2014-07-07 11:45:12 +04:00
这是一个 h2
2014-07-07 08:58:17 +04:00
-------------
2018-07-04 12:10:32 +03:00
```
## 文本样式
2014-07-07 08:58:17 +04:00
2019-05-11 15:48:14 +03:00
文本的*斜体*, **粗体**在 Markdown 中可以轻易实现。
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2014-07-07 11:45:12 +04:00
*此文本为斜体。*
_此文本也是。_
2014-07-07 08:58:17 +04:00
2014-07-07 11:45:12 +04:00
**此文本为粗体。**
__此文本也是__
2014-07-07 08:58:17 +04:00
2014-07-07 11:45:12 +04:00
***此文本是斜体加粗体。***
**_或者这样。_**
*__这个也是! __*
2018-07-04 12:10:32 +03:00
```
2014-07-07 08:58:17 +04:00
2019-05-11 15:48:14 +03:00
GitHub 也支持 Markdown, 在 GitHub 的 Markdown 解析器中,我们可以使用~~删除线~~:
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2014-07-07 11:45:12 +04:00
~~此文本为删除线效果。~~
2018-07-04 12:10:32 +03:00
```
## 段落
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
段落由一个句子或是多个中间没有空行的句子组成,每个段落由一个或是多个空行分隔开来。
2019-05-11 15:48:14 +03:00
(注:部分解析器有无需空行就能换行的设置,这个主要看个人喜好)
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2014-07-07 11:45:12 +04:00
这是第一段落. 这句话在同一个段落里,好玩么?
2014-07-07 08:58:17 +04:00
2014-07-07 11:45:12 +04:00
现在我是第二段落。
这句话也在第二段落!
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
2014-07-07 11:45:12 +04:00
这句话在第三段落!
2018-07-04 12:10:32 +03:00
```
2014-07-07 08:58:17 +04:00
2018-07-04 12:45:21 +03:00
如果你想插入一个 `<br />` 标签,你可以在段末加入两个以上的空格,然后另起一
2019-05-11 15:48:14 +03:00
段。
(译者注:试了一下,很多解析器,并不需要空两个空格,直接换行就会添加一个`< br / > `)
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2015-09-10 09:48:14 +03:00
此段落结尾有两个空格(选中以显示)。
2014-07-07 08:58:17 +04:00
2014-07-07 11:45:12 +04:00
上文有一个 < br / > !
2018-07-04 12:10:32 +03:00
```
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
段落引用可由 `>` 字符轻松实现。
2014-07-07 08:58:17 +04:00
2019-05-11 15:48:14 +03:00
> 对的很轻松
2018-07-04 12:10:32 +03:00
```md
> 这是一个段落引用。 你可以
> 手动断开你的句子,然后在每句句子前面添加 `>` 字符。或者让你的句子变得很长,以至于他们自动得换行。
> 只要你的文字以 `>` 字符开头,两种方式无异。
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
> 你也可以对文本进行
2014-07-07 11:45:12 +04:00
>> 多层引用
> 这多机智啊!
2018-07-04 12:10:32 +03:00
```
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
## 列表
2019-05-11 15:48:14 +03:00
- 无序列表可由星号,加号或者减号来创建
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2014-07-07 11:45:12 +04:00
* 项目
* 项目
* 另一个项目
2014-07-07 08:58:17 +04:00
2014-07-07 11:45:12 +04:00
或者
2014-07-07 08:58:17 +04:00
2014-07-07 11:45:12 +04:00
+ 项目
+ 项目
+ 另一个项目
2014-07-07 08:58:17 +04:00
2014-07-07 11:45:12 +04:00
或者
2014-07-07 08:58:17 +04:00
2014-07-07 11:45:12 +04:00
- 项目
- 项目
- 最后一个项目
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
有序序列可由数字加上点 `.` 来实现
```md
2014-07-07 11:45:12 +04:00
1. 项目一
2. 项目二
3. 项目三
2018-07-04 12:10:32 +03:00
```
2014-07-07 08:58:17 +04:00
2018-07-04 12:45:21 +03:00
即使你的数字标签有误, Markdown 依旧会呈现出正确的序号,
2018-07-04 12:10:32 +03:00
不过这并不是一个好主意
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2014-07-07 11:45:12 +04:00
1. 项目一
1. 项目二
1. 项目三
2018-07-04 12:10:32 +03:00
```
2018-07-04 12:45:21 +03:00
(此段与上面效果一模一样)
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
你也可以使用子列表
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2014-07-07 11:45:12 +04:00
1. 项目一
2. 项目二
3. 项目三
* 子项目
* 子项目
4. 项目四
2018-07-04 12:10:32 +03:00
```
你甚至可以使用任务列表,它将会生成 HTML 的选择框( checkboxes) 标签。
```md
下面方框里包含 'x' 的列表,将会生成选中效果的选择框。
- [ ] 任务一需要完成
- [ ] 任务二需要完成
下面这个选择框将会是选中状态
- [x] 这个任务已经完成
```
2019-05-11 15:48:14 +03:00
- [ ] 你看完了这个任务(注:此选择框是无法直接更改的,即禁用状态。)
2018-07-04 12:10:32 +03:00
## 代码块
2014-07-07 08:58:17 +04:00
2018-07-04 12:45:21 +03:00
代码块( HTML中 `<code>` 标签) 可以由缩进四格( spaces)
2018-07-04 12:10:32 +03:00
或者一个制表符( tab) 实现
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2014-07-07 08:58:17 +04:00
This is code
2018-07-04 12:45:21 +03:00
So is this
2018-07-04 12:10:32 +03:00
```
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
在你的代码中, 你仍然使用tab( 或者四个空格) 可以进行缩进操作
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2014-07-07 08:58:17 +04:00
my_array.each do |item|
puts item
end
2018-07-04 12:10:32 +03:00
```
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
内联代码可由反引号 ` 实现
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2020-01-12 07:16:31 +03:00
John 甚至不知道 `go_to()` 函数是干嘛的!
2018-07-04 12:10:32 +03:00
```
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
在GitHub的 Markdown( GitHub Flavored Markdown) 解析器中, 你可以使用特殊的语法表示代码块
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
< pre >
< code class = "highlight" > ` ` ` ruby
2014-07-07 08:58:17 +04:00
def foobar
puts "Hello world!"
end
2018-07-04 12:10:32 +03:00
` ` ` < / code > < / pre >
以上代码不需要缩进,而且 GitHub 会根据\`\`\`后指定的语言来进行语法高亮显示
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
## 水平线分隔
2014-07-07 08:58:17 +04:00
2018-07-04 12:45:21 +03:00
水平线(`< hr / > `)可由三个或以上的星号或是减号创建,它们之间可以带或不带空格
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2014-07-07 08:58:17 +04:00
***
---
- - -
****************
2019-05-11 15:48:14 +03:00
下面这个就是示例
2018-07-04 12:10:32 +03:00
```
2019-05-11 15:48:14 +03:00
---
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
## 链接
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
Markdown 最棒的地方就是便捷的书写链接。把链接文字放在中括号[]内,
在随后的括弧()内加入url就可以了。
```md
2014-07-07 12:55:29 +04:00
[点我点我! ](http://test.com/ )
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```
2018-07-04 12:45:21 +03:00
2018-07-04 12:10:32 +03:00
你也可以在小括号内使用引号, 为链接加上一个标题( title)
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2014-07-07 12:55:29 +04:00
[点我点我! ](http://test.com/ "连接到Test.com" )
2018-07-04 12:10:32 +03:00
```
相对路径也可以有
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2014-07-07 12:55:29 +04:00
[去 music ](/music/ ).
2018-07-04 12:10:32 +03:00
```
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
Markdown同样支持引用形式的链接
2014-07-07 08:58:17 +04:00
2018-11-02 02:34:53 +03:00
```md
[点此链接][link1] 以获取更多信息!
[看一看这个链接][foobar] 如果你愿意的话。
[link1]: http://test.com/
[foobar]: http://foobar.biz/
```
2014-07-07 08:58:17 +04:00
2018-07-04 12:45:21 +03:00
对于引用形式,链接的标题可以处于单引号中,括弧中或是忽略。引用名可以在文档的任何地方,并且可以随意命名,只要名称不重复。
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
“隐含式命名” 的功能可以让链接文字作为引用名
2014-07-07 08:58:17 +04:00
2018-11-02 02:34:53 +03:00
```md
[This][] is a link.
[This]: http://thisisalink.com/
```
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
但这并不常用
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
## 图片
图片与链接相似,只需在前添加一个感叹号
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2018-07-04 12:45:21 +03:00
![这是alt,请把鼠标放在图片上 ](http://imgur.com/myimage.jpg "这是title" )
2018-07-04 12:10:32 +03:00
```
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
引用形式也同样起作用
2014-07-07 08:58:17 +04:00
2018-11-02 02:34:53 +03:00
```md
![这是alt][myimage]
[myimage]: relative/urls/cool/image.jpg
```
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
## 杂项
### 自动链接
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2014-07-07 12:55:29 +04:00
< http: / / testwebsite . com / > 与
[http://testwebsite.com/ ](http://testwebsite.com/ ) 等同
2018-07-04 12:10:32 +03:00
```
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
### 电子邮件的自动链接
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2014-07-07 08:58:17 +04:00
< foo @ bar . com >
2018-07-04 12:10:32 +03:00
```
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
### 转义字符
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2014-07-07 12:55:29 +04:00
我希望 *将这段文字置于星号之间* 但是我不希望它被
2018-07-04 12:10:32 +03:00
斜体化, 这么做: \*这段置文字于星号之间\*。
```
2019-05-11 15:48:14 +03:00
对比一下:*将这段文字置于星号之间* 和 \*将这段文字置于星号之间\*
2018-07-04 12:10:32 +03:00
### 键盘上的功能键
2014-07-07 08:58:17 +04:00
2019-05-11 15:48:14 +03:00
在 GitHub 的 Markdown 中,你可以使用 `<kbd>` 标签来表示功能键。
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
你的电脑死机了?试试
< kbd > Ctrl< / kbd > +< kbd > Alt< / kbd > +< kbd > Del< / kbd >
```
2018-07-04 12:45:21 +03:00
< kbd > Ctrl< / kbd > +< kbd > Alt< / kbd > +< kbd > Del< / kbd >
2019-05-11 15:48:14 +03:00
(译注:可能由于网站本身样式问题,效果不明显)
2018-07-04 12:10:32 +03:00
### 表格
2019-05-11 15:48:14 +03:00
下面示例的表格长这样:
| 第一列 | 第二列 | 第三列 |
| :----------- | :-------: | ----------: |
| 我是左对齐 | 居个中 | 右对齐 |
| 注意 | 冒 | 号 |
工整一点的写法是这样的:
2018-07-04 12:10:32 +03:00
```md
2014-07-07 12:55:29 +04:00
| 第一列 | 第二列 | 第三列 |
2019-05-11 15:48:14 +03:00
| :----------- | :-------: | ----------: |
| 我是左对齐 | 居个中 | 右对齐 |
| 注意 | 冒 | 号 |
2018-07-04 12:10:32 +03:00
```
2019-05-11 15:48:14 +03:00
好吧,强行对齐字符是很难的。但是,至少比下面这种写法好一点——
2014-07-07 08:58:17 +04:00
2018-07-04 12:10:32 +03:00
```md
2019-05-11 15:48:14 +03:00
我是超级超级长的第一列 | 第二列 | 第三列
2014-07-07 08:58:17 +04:00
:-- | :-: | --:
2019-05-11 15:48:14 +03:00
这真的太丑了 | 药不能 | 停!!!!
2014-07-07 08:58:17 +04:00
```
2019-05-11 15:48:14 +03:00
真的是*看着令人头晕*
2014-07-07 08:58:17 +04:00
2014-07-07 13:13:48 +04:00
更多信息, 请于[此处](http://daringfireball.net/projects/Markdown/syntax)参见 John Gruber 关于语法的官方帖子,及于[此处](https://github.com/adam-p/Markdown-here/wiki/Markdown-Cheatsheet) 参见 Adam Pritchard 的摘要笔记。