Markdown简明教程(持续更新)

1. 关于 Markdown

1.1 介绍

百度百科: Markdown

Markdown 是一种轻量级标记语言,创始人为约翰·格鲁伯(John Gruber)。它允许人们“使用易读易写的纯文本格式编写文档,然后转换成有效的 XHTML(或者 HTML)文档”。这种语言吸收了很多在电子邮件中已有的纯文本标记的特性。

1.2 为什么选择 Markdown

  • 它基于纯文本,方便修改和共享;
  • 几乎可以在所有的文本编辑器中编写;
  • 有众多编程语言的实现,以及应用的相关扩展;
  • GitHub 等网站中有很好的应用;
  • 很容易转换为 HTML 文档或其他格式;
  • 适合用来编写文档、记录笔记、撰写文章。

1.3 兼容 HTML

Markdown 完全兼容 HTML 语法,可以直接在 Markdown 文档中插入 HTML 内容:

<table>
  <tr>
    <td>1</td>
    <td>2</td>
  </tr>
  <tr>
    <td>3</td>
    <td>4</td>
  </tr>
</table>

这段代码会变成下面的样子:

12
34

1.4 第一个 Markdown 文档

HelloMarkdown.md

打开你熟悉的文本编辑器(如 Visual Studio Code),新建一个 ‘HelloMarkdown.md’ 文件,写入下面的内容,并保存:

Hello Markdown

2. 基础语法

几乎所有 Markdown 应用程序都支持 John Gruber 原始设计文档中列出的 Markdown 基本语法。

2.1 段落与换行

1. 段落的前后必须是空行:

空行指的是行内什么都没有,或者只有空白符(空格或制表符)

相邻两行文本,如果中间没有空行
会显示在一行中(换行符被转换为空格)

2. 如果需要在段落内加入换行:

可以在前一行的末尾加入至少两个空格
然后换行写其它的文字

3. Markdown 中的多数区块都需要在两个空行之间。

2.2 标题

2.2.1 Setext 形式

H1
====
H2
----

=- 的数量是没有限制的。通常的做法是使其和标题文本的长度相同,这样看起来比较舒服。或者可以像我一样,用四个 -=
注意:Setext 形式只支持 h1h2 两种标题。

2.2.2 Atx 形式

可以用 # 包括文本,#的个数代表标题的级数:

#### H4

##### H5

2.3 引用

2.3.1 引用内容

在段落或其他内容前使用 > 符号,就可以将这段内容标记为 ‘引用’ 的内容:

>引用内容

引用内容

2.3.2 多行引用

>多行引用
>可以在每行前加 `>`

多行引用
可以在每行前加 >

>如果仅在第一行使用 `>`,
后面相邻的行即使省略 `>`,也会变成引用内容

如果仅在第一行使用 >
后面相邻的行即使省略 >,也会变成引用内容

>如果引用内容需要换行,  
>可以在行尾添加两个空格
>
>或者在引用内容中加一个空行

如果引用内容需要换行,
可以在行尾添加两个空格

或者在引用内容中加一个空行

2.3.3 嵌套引用

>也可以在引用中
>>使用嵌套的引用

也可以在引用中

使用嵌套的引用

2.3.4 其他引用

>在引用中可以使用使用其他任何 *Markdown* 语法

在引用中可以使用使用其他任何 Markdown 语法

2.4 列表

2.4.1 无序列表

* 可以使用 `*` 作为标记
+ 也可以使用 `+`
- 或者 `-`
  • 可以使用 * 作为标记
  • 也可以使用 +
  • 或者 -

2.4.2 有序列表

1. 有序列表以数字和 `.` 开始;
3. 数字的序列并不会影响生成的列表序列;
4. 但仍然推荐按照自然顺序(1.2.3...)编写。
  1. 有序列表以数字和 . 开始;
  2. 数字的序列并不会影响生成的列表序列;
  3. 但仍然推荐按照自然顺序(1.2.3…)编写。

2.4.3 嵌套的列表

嵌套是需要缩进一个制表符或四个空格

1. 第一层
  + 1-1
  + 1-2
2. 无序列表和有序列表可以随意相互嵌套
  1. 2-1
  2. 2-2
  1. 第一层
      + 1-1
      + 1-2
  2. 无序列表和有序列表可以随意相互嵌套
      1. 2-1
      2. 2-2
  3. 第三层

2.4.4 语法和用法

  1. 无序列表项的开始是:符号 空格
  2. 有序列表项的开始是:数字.空格
  3. 空格至少为一个,多个空格将被解析为一个;
  4. 如果仅需要在行前显示数字.可以使用:数字\. 来取消显示为列表(转移符号)

2.5 代码

2.5.1 代码块

可以使用缩进来插入代码块,代码块前后需要有至少一个空行,且每行代码前需要有至少一个 Tab 或四个空格

<html> // Tab开头
    <title>Markdown</title>
</html> // 四个空格开头

2.5.2 行内代码

可以通过 ``,插入行内代码(` 是 Tab 键上边、数字 1 键左侧的那个按键):

例如 <title>Markdown</title>

2.6 分隔线

1. 可以在一行中使用三个或更多的 *-_ 来添加分隔线:

***
------
___



2. 多个字符之间可以有空格(空白符),但不能有其他字符:

* * *
- - -


2.7 超链接

2.7.1 行内式

格式为 [link text](URL 'title text')

① 普通链接:

[YAAANNN](https://yaaannn.cn/)

YAAANNN

② 指向本地文件的链接:

[icon.png](./images/icon.png)

icon.png

③ 包含 ‘title’ 的链接:

[YAAANNN](https://yaaannn.cn/ "YAAANNN")

YAAANNN

title 使用 ’ 或 " 都是可以的。

2.7.2 参考式

参考式链接的写法相当于行内式拆分成两部分,并通过一个 识别符 来连接两部分。参考式能尽量保持文章结构的简单,也方便统一管理 URL。

首先,定义链接:

[YAAANNN][link]

YAAANNN

第二个方括号内为链接独有的 识别符,可以是字母、数字、空白或标点符号。识别符是 不区分大小写 的;

然后定义链接内容:

[link]: https://yaaannn.cn/ "YAAANNN"

其格式为:[识别符]: URL 'title'

其中,URL可以使用 <> 包括起来,title 可以使用 “”、’’、() 包括(考虑到兼容性,建议使用引号),title 部分也可以换行来写;

链接内容的定义可以放在同一个文件的 任意位置
参考式相对于行内式有一个明显的优点,就是可以在多个不同的位置引用同一个 URL。

2.7.2 自动链接

使用 <> 包括的 URL 或邮箱地址会被自动转换为超链接:

<https://yaaannn.cn/>

<1460185042@qq.com>

https://yaaannn.cn/

1460185042@qq.com

该方式适合行内较短的链接,会使用 URL 作为链接文字。邮箱地址会自动编码,以逃避抓取机器人。

2.8 图像

插入图片的语法和插入超链接的语法基本一致,只是在最前面多一个 !。也分为行内式和参考式两种。

2.8.1 行内式

![Code](https://i.loli.net/2021/01/24/eypsvKVmGIHfoqt.png "Social Coding")

在这里插入图片描述

方括号中的部分是图片的替代文本,括号中的 ‘title’ 部分和链接一样,是可选的。

2.8.2 参考式

![Code][code]

[code]: https://i.loli.net/2021/01/24/eypsvKVmGIHfoqt.png "Social Coding"

Code

2.8.3 指定图片的显示大小

Markdown 不支持指定图片的显示大小,不过可以通过直接插入<img />标签来指定相关属性:

<img src="https://i.loli.net/2021/01/24/eypsvKVmGIHfoqt.png" alt="Code" title="Social Coding" width="160" height="90" />
Code

2.9 强调

2.9.1 斜体

使用 * *_ _ 包括的文本会被转换为斜体:

这是用来 *演示* 的 _文本_

这是用来 演示文本

2.9.2 粗体

使用 ** **__ __ 包括的文本会被转换为 <strong></strong>,通常表现为加粗:

这是用来 **演示** 的 __文本__

这是用来 演示文本

2.9.3 其他说明

1. 用来包括文本的 *_ 内侧不能有空白,否则 *_ 将不会被转换(不同的实现会有不同的表现):

这是用来 * 演示* 的 _文本 _

这是用来 * 演示* 的 _文本 _

2. 如果需要在文本中显示成对的 *_,可以在符号前加入 \ 即可:

这是用来 \*演示\* 的 \_文本\_

这是用来 *演示* 的 _文本_

3. ***___ 都必须 成对使用

2.10 转义字符

以下列出的字符都可以通过使用反斜杠字符\从而达到转义目的。

字符名称
\反斜杠
`反引号
*星号
_下划线
{}花括号
[]方括号
()圆括号或括号
#井号
+加号
-减号或连字符
.句点
!感叹号
|管道符

3. 进阶语法

3.1 表格

3.1.1 单元格和表头

使用 | 来分隔不同的单元格,使用 - 来分隔表头和其他行:

name   | age
\----  | ---
YAAANNN| 18
Github | 13

nameage
YAAANNN18
Github13

为了美观,可以使用空格对齐不同行的单元格,并在左右两侧都使用 | 来标记单元格边界:

|    name    | age |
| ---------- | --- |
| YAAANNN    |  18 |
| Github     |  13 |
nameage
YAAANNN18
Github13

为了使 Markdown 更清晰,|- 两侧需要至少有一个空格(最左侧和最右侧的 | 外就不需要了)。

3.1.2 对齐

在表头下方的分隔线标记中加入 :,即可标记下方单元格内容的对齐方式:

  • :--- 代表左对齐
  • :--: 代表居中对齐
  • ---: 代表右对齐
| left | center | right |
| :--- | :----: | ----: |
| aaaa | bbbbbb | ccccc |
| a    | b      | c     |
leftcenterright
aaaabbbbbbccccc
abc

如果不使用对齐标记,单元格中的内容默认左对齐;表头单元格中的内容会一直居中对齐(不同的实现可能会有不同表现)。

3.1.3 插入其他内容

表格中可以插入其他 Markdown 中的行内标记:

|     name     | age |             blog                |
| ------------ | --- | ------------------------------- |
| _YAAANNN_    |  18 | [YAAANNN](https://yaaannn.cn)   |
| __Github__   |  13 | [gthub](https://github.com)     |
nameageblog
YAAANNN18YAAANNN
Github13gthub

3.2 围栏代码块和语法高亮

3.2.1 围栏代码块

根据 Markdown 解析器或编辑器的不同,代码块的前后可以使用三个反引号(```)来标记围栏代码块。

  • 在需要高亮的代码块的前一行及后一行使用三个反引号 ```(~ 键)
  • 同时第一行反引号后面,输入代码块所使用的语言,实现代码高亮。
//反斜杠为转义字符,具体使用时不要写出
\```
int main()
{
    printf("Hello Markdown");
    return 0;
}
\```
int main()
{
    printf("Hello Markdown");
    return 0;
}

3.2.2 语法高亮

许多 Markdown 解析器都支持围栏代码块的语法高亮功能。此功能允许你为编写代码所用的编程语言添加带颜色的语法高亮显示。如需添加语法高亮,请在围栏代码块前的反引号旁指定所用的编程语言。

//反斜杠为转义字符,具体使用时不要写出
\```
int main()
{
    printf("Hello Markdown");
    return 0;
}
\```
int main()
{
    printf("Hello Markdown");
    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值