Markdown
Markdown是一种极简洁的标记语言,易读易写,让人能更多地关注内容而非排版。
标记语言用于描述文档结构,使用特定标记(特殊符号或字符串)来标识文档中的元素,让处理程序知道它们该被如何解释和渲染。比如告诉处理程序这是个标题,这是个表格,这是张图片,这里需要加粗等等。
应用场景
- 技术博客
- 项目说明文档
- AI生成的回答
优点
- 标记少且简单,易学易写。
- 原始文档也具有良好的可读性。
我认为不太好的地方
- 像HTML一样折叠空白。空格和换行被折叠不太符合人的书写习惯。Markdown中缩进是有意义的,折叠空白并不会有利于维护文档结构。折叠后会留下一个空格,这让书写者无法随意换行,在写中文文档时更是这样。
标题
在行首加#表示这行是标题,1-6个#分别表示一至六级标题,对应HTML中的<h1>-<h6>。如果#数量超过6个,则不视为标题,这些#也会被当作内容显示。注意#与标题内容之间要有一个空格。
# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题
<h1>一级标题</h1>
<h2>二级标题</h2>
<h3>三级标题</h3>
<h4>四级标题</h4>
<h5>五级标题</h5>
<h6>六级标题</h6>
一级标题
二级标题
三级标题
四级标题
五级标题
六级标题
换行与分段
Markdown会像HTML那样执行空白折叠,即将连续的空白(空格、换行、制表符)折叠为一个空格,因此换行与分段需要特殊的语法。
换行
在行尾加两个或以上的空格表示换行,对应HTML中的<br>。由于编辑器中通常看不到空格,Markdown中允许嵌入HTML标签,所以也可以直接使用<br>表示换行。
使用双空格换行
使用br标签换行<br>
新的一行
使用双空格换行
使用br标签换行
新的一行
分段
在行尾加两个或以上换行表示新建一个段落,对应HTML中新建一个<p>,也就是说两行之间存在空行表示分段。
这是第一段
这是第二段
这是第三段
<p>这是第一段</p>
<p>这是第二段</p>
<p>这是第三段</p>
这是第一段
这是第二段
这是第三段
分隔线
一行只有三个或以上连续的-表示分隔线,对应HTML中的<hr>。也可以使用*或_代替-。为了兼容性,应在分割线前后各添加一个空行。
这是分割线以上的内容
---
这是分割线以下的内容
<p>这是分割线以上的内容</p>
<hr>
<p>这个分割线以下的内容</p>
这个分割线以上的内容
这是分割线以下的内容
强调
- 在文字前后各加2个
*表示粗体,对应HTML中的<strong>。 - 在文字前后各加1个
*表示斜体,对应HTML中的<em>。 - 在文字前后各加3个
*表示粗斜体,对应HTML中<strong>和<em>嵌套。
也可以用_代替*,但这样做可能需要在两端再加上空格,还是还是更推荐*。
使用**粗体**强调;
使用*斜体*强调;
使用***粗斜体***强调。
使用<strong>粗体</strong>强调;
使用<em>斜体</em>强调;
使用<strong><em>粗斜体</em></strong>强调。
使用粗体强调; 使用斜体强调; 使用粗斜体强调。
删除线
在文字前后各加2个~表示删除线,对应HTML中的<del>。这是一种扩展语法,并不是所有Markdown处理程序都支持。
删除线通常用于修订内容后,希望留着之前的内容作对比。在文档中常用于表示API已废弃。
~~之前的内容不要了~~,这是修订后的内容。
<del>之前的内容不要了</del>,这是新的内容。
之前的内容不要了,这是修订后的内容。
列表
无序列表
在行首加-表示一个无序列表项,对应HTML中的<li>,注意-和列表项内容间应有一个空格。这样的连续的行就组成了一个无序列表,对应HTML中的<ul>。
其中-也可以用*或+代替,但是同一个列表中不能混用这些标记。
- 列表项
- 列表项
- 列表项
<ul>
<li>列表项</li>
<li>列表项</li>
<li>列表项</li>
</ul>
- 列表项
- 列表项
- 列表项
有序列表
行首加数字和.表示一个有序列表项,对应HTML中的<li>,注意序号和列表项内容间应有一个空格。这样的连续的行就组成了一个有序列表,对应HTML中的<ol>。
一个有序列表中第一项的序号决定了表中最小序号,其后的每一项显示的序号都是上一项增加1,即便编写时将序号顺序打乱或加入重复序号也不影响。
1. 第一项
2. 第二项
3. 第三项
<ol>
<li>第一项</li>
<li>第二项</li>
<li>第三项</li>
</ol>
- 第一项
- 第二项
- 第三项
任务列表
在无序列表每个表项的-和列表项内容之间插入[ ]或[x],将其变成任务列表,注意[ ]和[x]与列表项内容之间也应加一个空格。
任务列表在HTML中没有对应的标签,它的每个表项看上去就像无法交互的复选框,[ ]则是未选中,[x]则是选中。
这是一种扩展语法,并不是所有Markdown处理程序都支持。
- [ ] 未完成事项
- [x] 已完成事项
- [ ] 未完成事项
- [x] 已完成事项
- 未完成事项
- 已完成事项
- 未完成事项
- 已完成事项
列表嵌套
列表可以嵌套列表或其他元素,语法是让内部元素的每行缩进4个空格,更深层的嵌套就增加缩进量,就像Python中用增减缩进量来表示代码块嵌套那样。如果内部元素是列表以外的元素,那么应在其前后各加一个空行。
有一些教程上写缩进2个空格就可以。我在vs code上测试,外层元素是无序列表时确实可以,是有序列表时则不行,所以最好还是统一缩进4个空格。
1. 第一项
- 第一项嵌套列表项
嵌套列表项中嵌套的段落
- 第一项嵌套列表项
2. 第二项
3. 第三项
<ol>
<li>第一项
<ul>
<li>第一项嵌套列表项
<p>嵌套列表项中嵌套的段落</p>
</li>
<li>第一项嵌套列表项</li>
</li>
<li>第二项</li>
<li>第三项</li>
</ol>
- 第一项
-
第一项嵌套列表项
嵌套列表项中嵌套的段落
-
第一项嵌套列表项
-
- 第二项
- 第三项