一、Markdown是什么?
Markdown 是一种轻量级的标记语言,可用于在纯文本文档中添加格式化元素。Markdown 由 John Gruber 于 2004 年创建,如今已成为世界上最受欢迎的标记语言之一。
- Markdown 允许人们使用「易读易写」的纯文本格式编写文档。
- Markdown 编写的文档可以导出 HTML 、Word、图像、PDF、Epub 等多种格式的文档。
- Markdown 编写的文档后缀为
.md
,.markdown
。
使用 Markdown 与使用 Word 类编辑器不同。在 Word 之类的应用程序中,单击按钮以设置单词和短语的格式,并且,更改立即可见。而 Markdown 与此不同,当你创建 Markdown 格式的文件时,可以在文本中添加 Markdown 语法,以指示哪些单词和短语看起来应该有所不同。它的语法因不同的解析器或编辑器而异。Typora 正在使用 GitHub Flavored Markdown。
Markdown 语法的首要设计目标是尽可能易读。
基于这个目标,Markdown 格式的文档能够以纯文本形式原样发布,而不会看起来像被填满了标签或格式化指令。
二、Markdown的优点
- Markdown 无处不在。人们使用它来创建 网站、文档、便签、电子书、演示文稿、邮件 和 技术文档。StackOverflow和 GitHub 等网站都支持 Markdown,许多桌面和基于 Web 的应用程序也都支持 Markdown。
- Markdown 是纯文本可移植的。几乎可以使用任何应用程序打开包含 Markdown 格式的文本文件。如果你不喜欢当前使用的 Markdown 应用程序了,则可以将 Markdown 文件导入另一个 Markdown 应用程序中。这与 Microsoft Word 等文字处理应用程序形成了鲜明的对比,Microsoft Word 将你的内容锁定在专有文件格式中。
- Markdown 是独立于平台的,支持跨平台同步数据。你可以在运行任何操作系统的任何设备上创建 Markdown 格式的文本。
- Markdown 能适应未来的变化。即使你正在使用的应用程序将来会在某个时候不能使用了,你仍然可以使用文本编辑器读取 Markdown 格式的文本。当涉及需要无限期保存的书籍、大学论文和其他里程碑式的文件时,这是一个重要的考虑因素。
- Markdown能兼容HTML。HTML 是一种发布的格式,Markdown 是一种书写的格式。Markdown 的格式语法只涵盖HTML中纯文本可以涵盖的范围。不在 Markdown 涵盖范围之内的标签,都可以直接在文档里面用 HTML 撰写。不需要额外标注这是 HTML 或是 Markdown;只要直接加标签就可以了。
三、Markdown的基本语法
3.1 标题
Markdown 标题有两种创建方式。
目录
输入 [toc]
然后按 Return 键将创建一个“目录”,将自动从文档内容中提取所有标题,且会自动更新。
1、使用 # 号标记
要创建标题,在单词或短语前面添加井号 (#
) ,可以表示1-6级标题。# 的数量代表了标题的级别,一级标题字号最大,六级标题字号最小。
Markdown | HTML |
---|---|
# 一级标题 | <h1> 一级标题</h1> |
## 二级标题 | <h2> 二级标题</h2> |
### 三级标题 | <h3> 三级标题</h3> |
#### 四级标题 | <h4> 四级标题</h4> |
##### 五级标题 | <h5 >五级标题</h5> |
###### 六级标题 | <h6> 六级标题</h6> |
效果如下:
注意:
最后一个#字符与标题中间留一个空格
标题应该置于行首,如果放入表格中可能无法正确解析
2、使用 = 和 - 标记一级和二级标题
可以在文本下方添加任意数量的 =
号来标识一级标题,或者 -
号来标识二级标题。
Markdown | HTML |
---|---|
一级标题 ====== |
<h1> 一级标题</h1> |
二级标题 ------------- |
<h2> 二级标题</h2> |
标题自定义ID
许多 Markdown 处理器都支持为标题自定义 ID,一些 Markdown 处理器会自动为标题添加 ID。通过添加自定义 ID,能够让你直接链接到这个标题,并且还可以使用 CSS 修改其样式。如需为标题添加自定义 ID,请将井号#
+自定义 ID 用大括号{ }
括起来并与标题放在同一行。
Markdown | HTML |
---|---|
#### 标题自定义ID {#custom-id} | 标题自定义ID |
3.2 段落
一个 Markdown 段落是由一个或多个连续的文本行组成,每个文本行的前后要有一个及以上的空行(空行的定义是显示上看起来像是空的,便会被视为空行。比方说,若某一行只包含空格和制表符,则该行也会被视为空行)。在Typora中,我们只需按下 Enter 即可创建新段落。
除非段落在列表中,否则不要用空格(space)或制表符(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. |
3.3 换行
在一行的末尾添加两个或多个空格,然后按回车键,即可创建一个换行(<br/>
)。 同时Markdown 允许在段落内直接插入换行符<br/>
进行换行。
注意:在Typora中,按下Enter即可换行,会创建两个换行符(创建一个空行用于分隔)。
按 Shift + Enter 可创建单个换行符,实现单行换行,即文本行间没有空行。
Shift + Return | Return |
---|---|
3.4 强调
字体
我们可以采用星号(*)与下划线( _ ),将文本设置为粗体或斜体来强调其重要性。(建议使用*号)
单是斜体,双是粗体,三是粗斜体。用一个 *
或 _
包裹文本将使用HTML <em>
标签包裹文本。用两个 或 _ 包裹的文本将使用HTML<strong>
标签包裹。注意,中间不要带空格。
Markdown | 效果 |
---|---|
*这是斜体* | 这是斜体 |
_这是斜体_ | 这是斜体 |
**这是粗体** | 这是粗体 |
__这是粗体__ | 这是粗体 |
***这是粗斜体*** | 这是粗斜体 |
___这是粗斜体___ | 这是粗斜体 |
如果 * 和 _ 两边都有空白的话,它们就只会被当成普通的符号。
如果要在文字前后直接插入普通的星号或底线,可以用反斜杠转义。
\*这个文字被星号包围\*
删除线
你可以贯穿单词的中心放一条横线从而删除这些单词。效果看起来是:这样的。此功能可以用来标记某些单词是错误的,要从文档中删除。在单词前后分别放置两个波浪号(~~
) 来表示删除这些单词。
~~错误的文本~~
效果如下:
错误的文本
下划线
下划线可以通过 HTML 的标签来实现。
<u>带下划线文本</u>
效果如下:
带下划线文本
3.5 引用
Markdown 区块引用是在段落前添加一个>
符号 ,然后后面紧跟一个空格符号(可省略):
多个段落的块引用
块引用可以包含多个段落。引用段落之间的空白行前也要添加一个 >
符号。
在引用的区块内,允许换行存在,换行并不会终止引用的区块。如果要结束引用,需要一行空白行,来结束引用的区块。
代码如下:
> 这是一个含有两个段落的块引用,这是第一段。
换行不会终止引用。
>
> 这是第二段。
//空白行结束引用
> 这是另一个块引用。
效果如下:
这是一个含有两个段落的块引用,这是第一段。
换行不会终止引用。这是第二段。
这是另一个块引用。
嵌套块引用
块引用可以嵌套。只要根据层次加上不同数量的 >
号。
代码如下:
> 最外层引用
> > 第一层嵌套
> > > 第二层嵌套
效果如下:
最外层引用
第一层嵌套
第二层嵌套
带有其他元素的块引用
引用的区块内也可以使用其他的 Markdown 语法,包括标题、列表、代码区块等。
代码如下:
> #### 这是一个标题!
>
> - 这是第一行列表项.
> - 这是第二行列表项.
>
> *这是斜体*,**这是粗体**,***这是粗斜体***
效果如下:
这是一个标题!
- 这是第一行列表项.
- 这是第二行列表项.
这是斜体,这是粗体,这是粗斜体
3.6 列表
Markdown 支持有序列表和无序列表。
- 无序列表,使用
*
、+
、-
作为列表的标记。 - 有序列表,使用数字并加上
.
号作为列表的标记。
列表标记通常是放在最左边,但是其实也可以缩进,最多 3 个空格,列表标记后面则一定要接着至少一个空格或制表符。
代码如下:
* 无序列表 1
+ 无序列表 2
- 无序列表 3
1. 有序列表 1
2. 有序列表 2
3. 有序列表 3
效果如下:
- 无序列表 1
- 无序列表 2
- 无序列表 3
- 有序列表 1
- 有序列表 2
- 有序列表 3
注意:用于创建有序列表的数字不必按数学顺序排列(列表标记上使用的数字并不会影响输出的 HTML 结果),但是列表应当以数字 1 起始。
Markdown | HTML |
---|---|
1. First item 2. Second item 3. Third item 4. Fourth item |
<ol> <li> First item</li> <li> Second item</li> <li> Third item</li> <li> Fourth item</li> </ol> |
1. First item 1. Second item 1. Third item 1. Fourth item |
<ol> <li> First item</li> <li> Second item</li> <li> Third item</li> <li> Fourth item</li> </ol> |
1. First item 8. Second item 3. Third item 5. Fourth item |
<ol> <li> First item</li> <li> Second item</li> <li> Third item</li> <li> Fourth item</li> </ol> |
1. First item 2. Second item 3. Third item 1. Indented item 2. Indented item 4. Fourth item |
<ol> <li> First item</li ><li> Second item</li> <li> Third item<ol> <li> Indented item</li> <li> Indented item</li> </ol> </li> <li> Fourth item</li> </ol> |
如果需要以数字开头并且紧跟一个英文句号(也就是 .
)的无序列表项,则可以使使用反斜线(\
)来 转义 这个英文句号。
Markdown | HTML |
---|---|
- 1968\. A great year! - I think 1969 was second best. |
<ul> <li> 1968. A great year!</li> <li> I think 1969 was second best.</li> </ul> |
效果如下:
- 1968. A great year!
- I think 1969 was second best.
在列表中嵌套其他元素
要在保留列表连续性的同时在列表中嵌套另一种语法元素,请将该元素缩进四个空格或一个制表符
如下列所示:
1.段落
* 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
效果如下:
2.引用块
* 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.
3.代码块
代码块(Code blocks) 通常采用四个空格或一个制表符缩进。当它们被放在列表中时,请将它们缩进八个空格或两个制表符
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.
4.图片
1. Open the file containing the Linux mascot.
2. Marvel at its beauty.
![Tux, the Linux mascot](Markdown语法教程.assets/tux-16901839786581.png)
3. Close the file.
效果如下:
- Open the file containing the Linux mascot.
- Marvel at its beauty.
- Close the file.
5.列表
可以将无序列表嵌套在有序列表中,反之亦然。
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
自定义列表(Typora不支持)
一些Markdown处理器允许您创建术语及其对应定义的列表,即定义列表。要创建定义列表,请在第一行上键入术语,然后在下一行键入一个冒号,后跟一个空格和术语对应的定义。
First Term
: This is the definition of the first term.
Second Term
: This is one definition of the second term.
: This is another definition of the second term.
输出的HTML如下所示:
<dl>
<dt>First Term</dt>
<dd>This is the definition of the first term.</dd>
<dt>Second Term</dt>
<dd>This is one definition of the second term. </dd>
<dd>This is another definition of the second term.</dd>
</dl>
效果如下:
任务列表
任务列表即带有复选框的项目列表,用于标记项目是否完成。要创建任务列表,请在任务列表项之前添加减号-
和中间带空格的方括号[ ]
,并在[ ]
前面加上空格。要选中复选框,请在方括号[ ]
之间添加 x ,即[x]
。
- [x] Write the press release
- [ ] Update the website
- [ ] Contact the media
效果如下:
可以通过单击列表项前的复选框来更改完成/未完成状态。