#前言
Markdown是一种轻量级标记语言,排版语法简洁,让人们更多地关注内容本身而非排版。它使用易读易写的纯文本格式编写文档,可与HTML混编,可导出 HTML、PDF 以及本身的 .md 格式的文件。因简洁、高效、易读、易写,Markdown被大量使用,如Github、Wikipedia、简书等。
在线体验一下 Markdown在线编辑器。
千万不要被「标记」、「语言」吓到,Markdown的语法十分简单,常用的标记符号不超过十个,用于日常写作记录绰绰有余,不到半小时就能完全掌握。
就是这十个不到的标记符号,却能让人优雅地沉浸式记录,专注内容而不是纠结排版,达到「心中无尘,码字入神」的境界。
让我们从 Markdown 标题语法开始学习吧。
Markdown 标题语法
Notice:
要创建标题,请在单词或短语前面添加井号 (#
) 。#
的数量代表了标题的级别。例如,添加三个 #
表示创建一个三级标题 (<h3>
) (例如:### My Header
)。
Markdown语法 | HTML语法 | 效果 |
# 一级标题 | <h1>Heading level 1</h1> | Heading level 1 |
## 二级标题 | <h2>Heading level 2</h2> | Heading level 2 |
### 三级标题 | <h2>Heading level 2</h2> | Heading level 3 |
可选语法
还可以在文本下方添加任意数量的 == 号来标识一级标题,或者 – 号来标识二级标题。
Markdown语法 | HTML语法 | 效果 |
Heading level 1 =============== | <h1>Heading level 1</h1> | Heading level 1 |
Heading level 2 =============== | <h2>Heading level 2</h2> | Heading level 2 |
Heading level 3 =============== | <h3>Heading level 2</h3> | Heading level 3 |
最佳实践
不同的 Markdown 应用程序处理 #
和标题之间的空格方式并不一致。为了兼容考虑,请用一个空格在 #
和标题之间进行分隔。
✅ Do this | ❌ Don‘t do this |
# Here’s a Heading | #Here‘s a Heading |
Markdown 段落
要创建段落,请使用空白行将一行或多行文本进行分隔。
Markdown语法 | HTML | 预览效果 |
I really like using Markdown. I think I’ll use it to format all of my documents from now on. | <p>I really like using Markdown.</p> <p>I think I‘ll use it to format all of my documents from now on.</p> | I really like using Markdown.I think I’ll use it to format all of my documents from now on. |
#段落(Paragraph)用法的最佳实
不要用空格(spaces)或制表符( tabs)缩进段落。
✅ Do this | ❌ Don‘t do this |
Don’t put tabs or spaces in front of your paragraphs. Keep lines left-aligned like this. | This can result in unexpected formatting problems. Don‘t add tabs or spaces in front of paragraphs. |
Markdown 换行语法
在一行的末尾添加两个或多个空格,然后按回车键,即可创建一个换行(<br>
)。
Markdown语法 | HTML | 预览效果 |
This is the first line. And this is the second line. | <p>This is the first line.<br> And this is the second line.</p> | This is the first line.And this is the second line. |
#换行(Line Break)用法的最佳实践
几乎每个 Markdown 应用程序都支持两个或多个空格进行换行,称为 结尾空格(trailing whitespace)
的方式,但这是有争议的,因为很难在编辑器中直接看到空格,并且很多人在每个句子后面都会有意或无意地添加两个空格。由于这个原因,你可能要使用除结尾空格以外的其它方式来换行。幸运的是,几乎每个 Markdown 应用程序都支持另一种换行方式:HTML 的 <br>
标签。
为了兼容性,请在行尾添加“结尾空格”或 HTML 的 <br>
标签来实现换行。
还有两种其他方式我并不推荐使用。CommonMark 和其它几种轻量级标记语言支持在行尾添加反斜杠 (\
) 的方式实现换行,但是并非所有 Markdown 应用程序都支持此种方式,因此从兼容性的角度来看,不推荐使用。并且至少有两种轻量级标记语言支持无须在行尾添加任何内容,只须键入回车键(return
)即可实现换行。
✅ Do this | ❌ Don‘t do this |
First line with two spaces after. And the next line. First line with the HTML tag after.<br> And the next line. | First line with a backslash after.\ And the next line. First line with nothing after. And the next line. |
Markdown 强调语法
通过将文本设置为粗体或斜体来强调其重要性。
#粗体(Bold)
要加粗文本,请在单词或短语的前后各添加两个星号(asterisks)或下划线(underscores)。如需加粗一个单词或短语的中间部分用以表示强调的话,请在要加粗部分的两侧各添加两个星号(asterisks)。
Markdown语法 | HTML | 预览效果 |
I just love **bold text**. | I just love <strong>bold text</strong>. | I just love bold text. |
I just love __bold text__. | I just love <strong>bold text</strong>. | I just love bold text. |
Love**is**bold | Love<strong>is</strong>bold | Loveisbold |
#粗体(Bold)用法最佳实践
Markdown 应用程序在如何处理单词或短语中间的下划线上并不一致。为兼容考虑,在单词或短语中间部分加粗的话,请使用星号(asterisks)。
✅ Do this | ❌ Don‘t do this |
Love**is**bold | Love__is__bold |
#斜体(Italic)
要用斜体显示文本,请在单词或短语前后添加一个星号(asterisk)或下划线(underscore)。要斜体突出单词的中间部分,请在字母前后各添加一个星号,中间不要带空格。
Markdown语法 | HTML | 预览效果 |
Italicized text is the *cat’s meow*. | Italicized text is the <em>cat‘s meow</em>. | Italicized text is the cat’s meow. |
Italicized text is the _cat’s meow_. | Italicized text is the <em>cat‘s meow</em>. | Italicized text is the cat’s meow. |
A*cat*meow | A<em>cat</em>meow | Acatmeow |
#斜体(Italic)用法的最佳实践
要同时用粗体和斜体突出显示文本,请在单词或短语的前后各添加三个星号或下划线。要加粗并用斜体显示单词或短语的中间部分,请在要突出显示的部分前后各添加三个星号,中间不要带空格。
✅ Do this | ❌ Don’t do this |
A*cat*meow | A_cat_meow |
#粗体(Bold)和斜体(Italic)
要同时用粗体和斜体突出显示文本,请在单词或短语的前后各添加三个星号或下划线。要加粗并用斜体显示单词或短语的中间部分,请在要突出显示的部分前后各添加三个星号,中间不要带空格。
Markdown语法 | HTML | 预览效果 |
This text is ***really important***. | This text is <strong><em>really important</em></strong>. | This text is really important. |
This text is ___really important___. | This text is <strong><em>really important</em></strong>. | This text is really important. |
This text is __*really important*__. | This text is <strong><em>really important</em></strong>. | This text is really important. |
This text is **_really important_**. | This text is <strong><em>really important</em></strong>. | This text is really important. |
This is really***very***important text. | This is really<strong><em>very</em></strong>important text. | This is reallyveryimportant text. |
#用法的最佳实践
Markdown 应用程序在处理单词或短语中间添加的下划线上并不一致。为了实现兼容性,请使用星号将单词或短语的中间部分加粗并以斜体显示,以示重要。
✅ Do this | ❌ Don‘t do this |
This is really***very***important text. | This is really___very___important text. |
Markdown 引用语法
要创建块引用,请在段落前添加一个 >
符号。
> Dorothy followed her through many of the beautiful rooms in her castle.
渲染效果如下所示:
Dorothy followed her through many of the beautiful rooms in her castle.
#多个段落的块引用
块引用可以包含多个段落。为段落之间的空白行添加一个 >
符号。
> Dorothy followed her through many of the beautiful rooms in her castle.
>
> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
渲染效果如下:
Dorothy followed her through many of the beautiful rooms in her castle.
The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
#嵌套块引用
块引用可以嵌套。在要嵌套的段落前添加一个 >>
符号。
> Dorothy followed her through many of the beautiful rooms in her castle.
>
>> The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
渲染效果如下:
Dorothy followed her through many of the beautiful rooms in her castle.
The Witch bade her clean the pots and kettles and sweep the floor and keep the fire fed with wood.
#带有其它元素的块引用
块引用可以包含其他 Markdown 格式的元素。并非所有元素都可以使用,你需要进行实验以查看哪些元素有效。
> #### The quarterly results look great!
>
> - Revenue was off the chart.
> - Profits were higher than ever.
>
> *Everything* is going according to **plan**.
渲染效果如下:
The quarterly results look great!
- Revenue was off the chart.
- Profits were higher than ever.
Everything is going according to plan.
Markdown 列表语法
可以将多个条目组织成有序或无序列表。
#有序列表
要创建有序列表,请在每个列表项前添加数字并紧跟一个英文句点。数字不必按数学顺序排列,但是列表应当以数字 1 起始。
有序列表的使用,在数字及符号.
后加空格后输入内容,如下:
- 有序列表 1
- 有序列表 2
- 有序列表 3
#有序列表最佳实践
CommonMark and a few other lightweight markup languages let you use a parenthesis ()
) as a delimiter (e.g., 1) First item
), but not all Markdown applications support this, so it isn’t a great option from a compatibility perspective. For compatibility, use periods only.
✅ Do this | ❌ Don‘t do this |
1. First item 2. Second item | 1) First item 2) Second item |
#无序列表
要创建无序列表,请在每个列表项前面添加破折号 (-)、星号 (*) 或加号 (+) 。缩进一个或多个列表项可创建嵌套列表。
无序列表的使用,在符号-
后加空格使用。如下:
- 无序列表 1
- 无序列表 2
- 无序列表 3
如果要控制列表的层级,则需要在符号-
前使用空格。如下:
- 无序列表 1
- 无序列表 2
- 无序列表 2.1
- 无序列表 2.2
#无序列表最佳实践
Markdown applications don’t agree on how to handle different delimiters in the same list. For compatibility, don’t mix and match delimiters in the same list — pick one and stick with it.
✅ Do this | ❌ Don‘t do this |
- First item - Second item - Third item - Fourth item | + First item * Second item - Third item + Fourth item |
#在列表中嵌套其他元素
要在保留列表连续性的同时在列表中添加另一种元素,请将该元素缩进四个空格或一个制表符,如下例所示:
* This is the first list item.
* Here’s the second list item.
I need to add another paragraph below the second list item.
* And here‘s the third list item.
渲染效果如下:
This is the first list item.
Here’s the second list item.
I need to add another paragraph below the second list item.
And here‘s the third list item.
#引用块
* This is the first list item.
* Here’s the second list item.
> A blockquote would look great below the second list item.
* And here‘s the third list item.
渲染效果如下:
This is the first list item.
Here’s the second list item.
> A blockquote would look great below the second list item.
And here‘s the third list item.
#代码块
代码块通常采用四个空格或一个制表符缩进。当它们被放在列表中时,请将它们缩进八个空格或两个制表符。
1. Open the file.
2. Find the following code block on line 21:
<html>
<head>
<title>Test</title>
</head>
3. Update the title to match the name of your website.
渲染效果如下:
Open the file.
Find the following code block on line 21:
<html>
<head>
<title>Test</title>
</head>
Update the title to match the name of your website.
1. Open the file containing the Linux mascot.
2. Marvel at its beauty.
![Tux, the Linux mascot](/assets/images/tux.png)
3. Close the file.
渲染效果如下:
Open the file containing the Linux mascot.
Marvel at its beauty.
- Close the file.
You can nest an unordered list in an ordered list, or vice versa.
1. First item
2. Second item
3. Third item
- Indented item
- Indented item
4. Fourth item
渲染效果如下:
- First item
- Second item
- Third item
- Indented item
- Indented item
- Fourth item
Markdown 代码语法
Markdown语法 | HTML语法 | 效果 |
At the command prompt, type nano | At the command prompt, type <code>nano</code>. | At the command prompt, type nano. |
#代码块
要创建代码块,请将代码块的每一行缩进至少四个空格或一个制表符。
<html>
<head>
</head>
</html>
渲染效果如下:
<html>
<head>
</head>
</html>
Note: 要创建不用缩进的代码块,请使用 围栏式代码块(fenced code blocks).
Markdown 分隔线语法
要创建分隔线,请在单独一行上使用三个或多个星号 (***)、破折号 (—) 或下划线 (___) ,并且不能包含其他内容。
***
---
_________________
以上三个分隔线的渲染效果看起来都一样:
分隔线(Horizontal Rule)用法最佳实践
为了兼容性,请在分隔线的前后均添加空白行。
✅ Do this | ❌ Don’t do this |
Try to put a blank line before…<br><br>—<br><br>…and after a horizontal rule. | Without blank lines, this would be a heading.<br>—<br>Don’t do this! |
Markdown 链接语法
链接文本放在中括号内,链接地址放在后面的括号中,链接title可选。
超链接Markdown语法代码:
[超链接显示名](超链接地址 ”超链接title“)
对应的HTML代码:<a href=”超链接地址“ title=”超链接title“>超链接显示名</a>
这是一个链接 [Markdown语法](https://markdown.com.cn)。
渲染效果如下:
这是一个链接 Markdown语法
给链接增加 Title
链接title是当鼠标悬停在链接上时会出现的文字,这个title是可选的,它放在圆括号中链接地址后面,跟链接地址之间以空格分隔。
这是一个链接 [Markdown语法](https://markdown.com.cn ”最好的markdown教程“)。
渲染效果如下:
这是一个链接 [Markdown语法](https://markdown.com.cn ”最好的markdown教程“)。
网址和Email地址
使用尖括号可以很方便地把URL或者email地址变成可点击的链接。
<https://markdown.com.cn>
<fake@example.com>
渲染效果如下:
https://markdown.com.cn
fake@example.com
带格式化的链接
强调 链接, 在链接语法前后增加星号。 要将链接表示为代码,请在方括号中添加反引号。
I love supporting the **[EFF](https://eff.org)**.
This is the *[Markdown Guide](https://www.markdownguide.org)*.
See the section on [`code`](#code).
渲染效果如下:
I love supporting the EFF.
This is the Markdown Guide.
See the section on code
.
引用类型链接
引用样式链接是一种特殊的链接,它使URL在Markdown中更易于显示和阅读。参考样式链接分为两部分:与文本保持内联的部分以及存储在文件中其他位置的部分,以使文本易于阅读。
链接的第一部分格式
引用类型的链接的第一部分使用两组括号进行格式设置。第一组方括号包围应显示为链接的文本。第二组括号显示了一个标签,该标签用于指向您存储在文档其他位置的链接。
尽管不是必需的,可以在第一组和第二组括号之间包含一个空格。第二组括号中的标签不区分大小写,可以包含字母,数字,空格或标点符号。
以下示例格式对于链接的第一部分效果相同:
[hobbit-hole][1]
[hobbit-hole] [1]
链接的第二部分格式
引用类型链接的第二部分使用以下属性设置格式:
放在括号中的标签,其后紧跟一个冒号和至少一个空格(例如[label]:)。
链接的URL,可以选择将其括在尖括号中。
链接的可选标题,可以将其括在双引号,单引号或括号中。
以下示例格式对于链接的第二部分效果相同:
[1]: https://en.wikipedia.org/wiki/Hobbit#Lifestyle
[1]: https://en.wikipedia.org/wiki/Hobbit#Lifestyle ”Hobbit lifestyles“
[1]: https://en.wikipedia.org/wiki/Hobbit#Lifestyle ’Hobbit lifestyles‘
[1]: https://en.wikipedia.org/wiki/Hobbit#Lifestyle (Hobbit lifestyles)
[1]: <https://en.wikipedia.org/wiki/Hobbit#Lifestyle> ”Hobbit lifestyles“
[1]: <https://en.wikipedia.org/wiki/Hobbit#Lifestyle> ’Hobbit lifestyles‘
[1]: <https://en.wikipedia.org/wiki/Hobbit#Lifestyle> (Hobbit lifestyles)
可以将链接的第二部分放在Markdown文档中的任何位置。有些人将它们放在出现的段落之后,有些人则将它们放在文档的末尾(例如尾注或脚注)。
链接最佳实践
不同的 Markdown 应用程序处理URL中间的空格方式不一样。为了兼容性,请尽量使用%20代替空格。
✅ Do this | |
[link](https://www.example.com/my%20great%20page) | |
Markdown 图片语法
要添加图像,请使用感叹号 (!), 然后在方括号增加替代文本,图片链接放在圆括号里,括号里的链接后可以增加一个可选的图片标题文本。
插入图片Markdown语法代码:
![图片alt](图片链接 ”图片title“)。
对应的HTML代码:
<img src=”图片链接“ alt=”图片alt“ title=”图片title“>
![这是图片](/assets/img/philly-magic-garden.jpg ”Magic Gardens“)
渲染效果如下:
链接图片
给图片增加链接,请将图像的Markdown 括在方括号中,然后将链接添加在圆括号中。
[![沙漠中的岩石图片](/assets/img/shiprock.jpg ”Shiprock“)](https://markdown.com.cn)
渲染效果如下: