Markdown笔记(一):写博客要用到的技术

0 阅读6分钟

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>
  1. 第一项
  2. 第二项
  3. 第三项

任务列表

在无序列表每个表项的-和列表项内容之间插入[ ][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>
  1. 第一项
    • 第一项嵌套列表项

      嵌套列表项中嵌套的段落

    • 第一项嵌套列表项

  2. 第二项
  3. 第三项