Markdown 最全语法

作者: 夜行的鸟 | 来源:发表于2019-05-08 03:07 被阅读0次

Markdown 是一种纯文本格式的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。一份 Markdown 文档可以很方便的导出为 HTML 、Word、图像、PDF、Epub 等多种格式的文档,非常便于文章的发布。
Markdown 具有一系列衍生版本,不同版本之间基本兼容,但在一些语法和渲染效果上略有差别,另外不同的编辑器显示效果也会有区别。
本篇文章尽量全的介绍 Markdown 的各个语法,但有些编辑器可能不支持其中某些语法。本文内容是根据 Markdown 的语法文档和一些其它资料整理得到,内容也会不断的更新。

标题

Markdown标题有几种写法 ("atx", "atx_closed", "setext") :
第一种 ("atx") 是在想要设置为标题的文字前面加 #,这种写法支持六级标题,注意要在 # 和文字之间加至少一个空格:

# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题

第二种 ("setext") 是在想要设置为标题的文字下面用多个 = 和 - 分隔,这种写法只能写到二级标题,= 和 - 的个数没有限制,只要大于一个就可以:

一级标题
==========
二级标题
----------

第三种 ("atx_closed") 是在想要设置为标题的文字前后都加 #,这种写法也支持六级标题,注意要在文字和前后的 # 之间加至少一个空格:

# 一级标题 #
## 二级标题 ##
### 三级标题 ###
#### 四级标题 ####
##### 五级标题 #####
###### 六级标题 #######

标题的三种写法可以混用,但为了保持统一性,不建议混用,但用第二种写法写到二级标题后,还可以使用第一种或第三种写法继续写后面的标题。

段落和换行

Markdown 中用一个或多个空行划分不同的段落(空行的含义就只要是看起来是空行就行了,即使包含了空格或者水平制表符等空白符也是空行),普通段落不应该使用缩进。
关于换行,Markdown 并不会将段落的每个换行都转换为 <br /> 标签,如果确实需要在行尾输入 <br /> 标签,只需要在行尾加两个及以上的空格,然后换行。

强调

倾斜

倾斜是在文字左右用一个 *(星号)或 _(下划线)包起来,文字与星号或下划线之间没有空格:

*倾斜*  _倾斜_

会得到:

倾斜 倾斜

加粗

加粗是在文字左右用两个 *(星号)或 _(下划线)包起来,文字与星号或下划线之间没有空格:

**加粗**  __加粗__

会得到:

加粗 加粗

加粗倾斜

加粗倾斜是在文字左右用三个 *(星号)或 _(下划线)包起来,文字与星号或下划线之间没有空格:

***加粗倾斜***   ___加粗倾斜___

会得到:

加粗倾斜 加粗倾斜

删除线

删除线是在文字左右用两个 ~~ 包起来,文字与 ~~ 之间没有空格:

~~删除线~~

会得到:

删除线

脚注

脚注是对文本的补充说明,格式如下:

面朝大海,春暖花开[^脚注]

[^脚注]: 海子

会得到:

面朝大海,春暖花开[1]

注意:

  1. 这里有些编辑器会自动给脚注进行编号,整篇文档从 1 开始编号,但有的编辑器会直接显示脚注的名字;
  2. 脚注的定义与脚注的内容至少隔一行,也可以将整篇文档的脚注统一写在文档结尾处,编辑器会自动把脚注的内容放到文档的最后。

引用

用法是在文字前面加一个 >,注意 > 是英文格式下的右尖括号,括号和文字之间至少有一个空格:

> 面朝大海,春暖花开。

会得到:

面朝大海,春暖花开。

引用是一个区块,可以放很多东西,如标题、列表、代码块等等:

> ## 二级标题
> * 无序列表

会得到:

二级标题

  • 无序列表

引用可以多层嵌套,多层嵌套时,多个 > 是不需要连在一起的,只需要在同一行就可以:

> 引用一
>> 引用二
>>> 引用三

会得到:

引用一

引用二

引用三

列表

列表分为 有序列表 和 无序列表。

无序列表

无序列表可以用 *、+、- 创建,三个符号可以混用,但建议上下文统一,符号和文字之间加至少一个空格或水平制表符:

* 无
- 序
+ 列
* 表

会得到:

有序列表

有序列表用数字和点来创建,需要注意的是数字后面只能是英文的点,且点和文字之间至少加一个空格,另外有序列表的序号是根据第一行的数字确定的,后面的数字序号对于最终生成 HTML 是没有影响的. 比如下面的列表创建时序号是乱的,但创建后序号会显示为 2. 3. 4. 5. (这一点很多编辑器会自动更正或填充),点和文字之间加至少一个空格或水平制表符:

2. 有
2. 序
3. 列
3. 表

会得到:

列表嵌套

列表可以嵌套使用,只需要在上一级和下一级之间打两个空格即可(或者一个水平制表符)(有的语法需要三个空格或四个空格),有序列表和无序列表可以互相嵌套:

* 1
  * a
  * b
* 2
  1. a
  2. B

会得到:

  • 1
    • a
    • b
  • 2
    1. a
    2. B

如果列表项中包含引用,引用标记 > 需要缩进,如果列表项中有代码块,代码块需要双倍缩进,例如:

* 孔子说过:  
  > 毋意,毋必,毋固,毋我。

会得到:

  • 孔子说过:

    毋意,毋必,毋固,毋我。

另外,如果一个列表项里包含多个段落,那么每个段落都需要缩进,缩进量与第一段一致(用空格或制表符):

* 段落一

  段落二

会得到:

  • 段落一

    段落二

任务列表

任务列表通过无序列表和中括号 [] 来定义,中括号中间加 x 表示完成:

* [ ] 任务1
* [ ] 任务2
* [x] 任务3已完成

会得到:

  • 任务1
  • 任务2
  • 任务3已完成

代码块

单行代码用一个 `(反引号)包起来,或者行前加四个空格或一个水平制表符:

`a=1`

用反引号可以在行内显示代码,如:

如果`a=1`,`b=2`,那么`a+b=3`

会得到:

如果a=1b=2,那么a+b=3

多行代码用三个 `(反引号)包起来,反引号单独一行,或者在每行代码前加四个空格或一个水平制表符:

```
a=1
b=2
```

会得到:

a=1
b=2

反引号后面可以写注释,这样可以给代码块添加相应语言的代码高亮,例如:

```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```

会得到:

require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html

水平线

水平线可以由 *、 - 、_(星号,减号,下划线)这三个符号的至少三个表示,注意至少要三个,且不需要连续,中间有空格也可以,但生成水平线的符号必须独占一行:

***
-    -   -
_ _ _

会得到:




链接

Markdown 支持两种链接形式: 内联 和 引用 。
内联:

[链接名](链接地址 “链接title” )

链接title 是可选的内容,是当指针停留在链接处时显示的内容;
引用:

[链接名][链接id]
[链接id]: 链接地址 “链接title”
[链接id]: 链接地址 '链接title'
[链接id]: 链接地址 (链接title)

链接id 有三种定义方式(如上),定义时冒号后面加一个以上的空格或水平制表符;
链接id 可以包含字母, 数字, 空格, 和标点符号,字母不是大小写敏感的,链接id 的定义可以在文章的任意位置,一般直接放在引用位置的下面;
链接名也可以包含字母, 数字, 空格, 和标点符号,链接名 和 链接id 的中括号间可以有空格;

引用的链接形式中可以隐含链接名称,可以忽略 链接id,这时 链接名 本身被用于 链接id。引用 链接id 时只用一对空的中括号就可以了,
例如, 要链接 "Google" 这个词到 google.com 网站, 只用这样写:

[Google][]

同时这样定义 链接id:

[Google]: http://google.com/

另外,也可以将网址直接用 <>(尖括号)包起来,也可以显示为链接,甚至直接写出网址也显示为链接:

<http://www.baidu.com>

图片

图片跟链接格式类似,也有 内联 和 引用 两种形式,只不过在图片名前要加 !(英文叹号)。
内联:

![图片名](图片地址 "图片title")

引用:

![图片名][图片id]

[图片id]:图片地址 “图片title”

图片名 是指显示在图片下方的描述文字,可选;图片title 是当指针停留在图片上时显示的内容,可选。
Markdown 没有语法指定图片尺寸,如果需要指定图片尺寸, 可以使用 HTML <img> 标签。

反斜杠转义

Markdown 中可以使用反斜杠转义 Markdown 语法符号为字面量。Markdown 为以下字符提供反斜杠转义:

\\   backslash(反斜杠)
\`   backtick(反引号)
\*   asterisk(星号)
\_   underscore(下划线)
\{\}  curly braces(花括号)
\[\]  square brackets(方括号)
\(\)  parentheses(圆括号)
\#   hash mark(井号)
\+   plus sign(加号)
\-   minus sign (hyphen)(减号)
\.   dot(点)
\!   exclamation mark(惊叹号)

以上这些符号在前面加反斜杠后就会显示本身的字面形式,而不会作为 Markdown 的语法符号。

表格

| 表头 | 表头  | 表头 |
| :---- | :---: | ---: |
| 靠左 | 居中 | 靠右 |
| 内容 | 内容  | 内容 |

会得到:

表头 表头 表头
靠左 居中 靠右
内容 内容 内容

第二行分割表头和内容,-(减号) 有一个就行,也可以多加几个使其对齐,文字默认居左,- 两边加 :(冒号)表示文字居中,- 右边加 : 表示文字居右,原生语法两边的 | 必须加,但目前大多数语法两边的 | 不加也可以,不同的解释器显示的表格会有所区别。

应用 HTML 标签

可以直接在 Markdown 文档里应用 HTML 标签,以达到更好的表现效果,但不同的编辑器可能支持的标签会有区别。

上、下标

上、下标可以通过 HTML 的 <sup><sub> 标签实现:

这是<sup>上标</sup>文本
这是<sub>下标</sub>文本

会得到:

这是上标文本
这是下标文本

倾斜、加粗、下划线

倾斜、加粗、下划线可以通过 HTML 的 <i><b><u> 标签实现:

<i>倾斜</i>
<b>加粗</b>
<i><b>倾斜加粗</b></i>
<u>下划线</u>

高亮标记

高亮标记可以通过 HTML 的 <mark> 标签实现:

<mark>高亮标记</mark>

键盘文本

键盘文本可以通过 HTML 的 <kbd> 标签实现:

<kbd>键盘文本</kbd>

按钮

按钮可以通过 HTML 的 <button> 标签实现:

<button type="button">按钮</button>

注意需要指明 type 属性。

一些规范

  • MarkDown 文件均使用 .md 作为后缀
  • 标题与紧贴的上下正文使用空行隔开,# 号和文字之间一个空格连接
  • 整篇文章标题格式要统一
  • 普通文本换行,使用行末尾两个空格触发
  • 定义列表时上下文使用一致的符号,缩进也要统一
  • 列表块前后整行隔开
  • 代码块前后整行隔开

本文介绍的 Markdown 语法不同的衍生版本或不同的解释器会有所区别,有些会不支持,有些可能需要一些扩展工具才能实现。

参考

参考1


  1. 海子

相关文章

  • GitHub上README.md教程

    GitHub上README写法暨GFM语法解读 最全Markdown教程

  • markdown 最全语法

    Cmd Markdown 公式指导手册

  • Markdown 最全语法

    Markdown 是一种纯文本格式的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。一份 Mar...

  • 最全markdown语法详解

    由于简书支持的markdown语法太少,所以笔者在有道笔记里写了一篇较全的markdown语法介绍和示例,包括一些...

  • 简书编译器中Markdown换行 多行换行

    关于Markdown具体的用法和语法,这里不作介绍,想看详细语法介绍的可以看这篇文章《可能是目前最全面的Markd...

  • Markdown语法

    Markdown基本语法 Markdown基本语法1 Markdown基本语法2(全、有用)

  • Markdown 入门指南

    Markdown 入门指南 目录Markdown 语法的起源Markdown 语法的种类Markdown trad...

  • MARKDOWN学习之路3

    MARKDOWN学习之路3 markdown介绍markdown语法标题语法列表语法区块引用语法字体语法分割线图片...

  • 第一次markdown

    #markdown的语法据说很简单 ##markdown的语法据说很简单 ###markdown的语法据说很简单 ...

  • Markdown语法

    Markdown语法 注意: Markdown中使用到的语法符号均为英文符号 Markdown语法主要分为如下几大...

网友评论

    本文标题:Markdown 最全语法

    本文链接:https://www.haomeiwen.com/subject/etkpoqtx.html