Markdown是一种纯文本标记语言,语法集合比较小,只是HTML标签的一小部分.
支持html语法,也支持html注释.

简介

最后的官方标准发布于2004年.
如今相当于没有固定的标准,于是不同解析器最终显示的效果一般都不一样;
不同编辑器都有细微差别,编辑器语法不统一,都有些特殊语法.

  1. 对于排版和内容不是很复杂的内容,可以很轻便迅捷的完成.
  2. 对于特殊的符号需要直接显示的使用 \ 转义
  3. 可以支持图表,图标基于文字很容易编辑,但语法复杂,可能在不同编辑器不兼容.
  4. 有些针对某些特定编辑器的骚操作或搭配别的软件能产生操作需要自行查找资料和研究.
  5. 插入图片需要依赖一些图床网站,不同的网站有不同的限制,可能出现链接失效或网站倒闭.

最常用的语法

考虑到兼容性和实际需求,实际上最常用的就只有标题代码还有换行
偶尔需要使用超链接图片
复杂的功能比如提供下载链接和非标题锚点跳转需要使用html进行支持.

front matter

markdown不能保存元数据,几乎所有的静态网站生成器都使用front matter格式来进行一些配置项保存.
front matter在文档最顶部使用 --- 包裹,不会显示到页面中,不同的解析器支持的内容一般也不同.

比如基于hexo的博客,不同的theme都会显示出不同的页面效果,支持的front matter和front matter对于的内容也不同.

基本语法

基本语法在大多数编辑器上都具有支持,效果也不会相差太多.
但效果还是有一定差异,这里只作语法介绍,不进行效果展示.

标题

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

代码

单行代码: 用 ` 包裹内容 `代码内容`
多行代码: 用 ``` 包裹内容, 并可以指定一种语言,可能会有高亮显示效果

代码内容1
代码内容2

换行

  1. 有些编辑器可以直接换行
  2. 有些编辑器强制换行需要在末尾换行处添加2个空格并换行
  3. 使用html的换行标签 <br />

为了在最低成本的方式下还保持最高的兼容性,个人建议还是使用两个空格换行.

进行段落分隔直接使用空行进行分隔,会比换行的行间距空白明显多一些

空格和缩进

这里的缩进指4个空格,不指代TAB符

md文件中超过一个空格的内容最终不会显示为多个空格,需要使用转义字符.
非代码中的缩进效果也需要多个转义字符表示.
所以这里建议非代码就不要进行过多的缩进了,不然md文件中将一堆转义字符.

大部分编辑器会将在md文件中的缩进理解为代码块,但这种方式其实不适合表示代码块,
因为代码通常具有很多特殊字符,这种方式连<都需要额外处理,并且没有语法高亮.

如果要在网页中显示缩进效果:

  1. 普通空格 &nbsp;&#160; 比按空白键的效果会宽一点
  2. 半角空格 &ensp;&#8194; 比普通空格会更宽一点
  3. 全角空格 &emsp;&#8195; 比半角空格更宽

具体效果在文章末尾不同空格的显示效果展示

文字凸显

加粗: 两个 * 号包裹内容 **加粗**
斜体: 一个 * 号包裹内容 *斜体*
斜体加粗: 三个 * 号包包裹内容 ***斜体加粗***
删除线: 两个 ~ 号包裹 ~~删除线~~
下划线: 两个 + 号包裹 ++下划线++
高亮: 两个 = 号包裹 ==高亮== (有些编辑器不支持显示)

图片

[图片注脚](图片地址 ''图片title'')
图片地址支持相对路径或网络图片地址
title是图片的标题,当鼠标移到图片上时显示的内容,可加可不加
比如: [PS](ps.png)

超链接

[点击后需要跳转的内容](超链接地址 "超链接title")
title的意义和图片相同,可加可不加
本身语法不支持链接在新页面中打开,有些网站和解析器做了处理修改为统一在新页面打开
对于不支持在新页面中打开的解析器只能用html语言的a标签
比如: [官方标准](https://daringfireball.net/projects/markdown/)

锚点定位

  1. md的所有标题生成为html时,实际上是一个对应等级的h标签包裹一个a标签.
    有的编辑器是在h标签中的id为标题名称,有的是a标签中的id为标题名称.
    那在需要锚点定位处直接使用 [点击后需要跳转的内容](#标题名称) 即可跳转到对应标题

  2. 对于非标题的跳转,在需要锚点定位到的目标处使用html标签包裹内容并添加id,在跳转处使用 [点击后需要跳转的内容](#id)

列表

  1. 无序列表: 用 - + * 任何一种处于开头都可以

    * 条目1
    * 条目2
    * 条目3
  2. 有序列表: 直接用数字和.再加上空格

    1. 条目1
    2. 条目2
    3. 条目3
  3. 列表嵌套:上一级和下一级之间敲三个空格即可
    一般一级条目都是数字,二级条目根据不同的解析器显示的效果不同,比如有的显示为 i. ii. iii.

    1. 条目1
    1. 二级条目1
    2. 二级条目2
    3. 二级条目3
    2. 条目2
    3. 条目3

分割线

三个或者三个以上的 -*
比如: --- ***
一般三个以上的分割线显示效果会比只有3个更粗一点

其他

引用: 引用的文字前加 > 即可,可以嵌套无数层,不同解析器效果不同,有的甚丑,所以用的不多
脚注: [^注明]:鼠标指向脚注显示的内容 ,有些解释器不兼容.
表格
流程图

不同空格的显示效果

md中的内容代码:

 |
&nbsp;|
&ensp;|
&emsp;|

最终网页显示效果:
|
 |
 |
 |