Published on

Markdown 写作方法与技巧:轻量标记语言实战

💡 快速答案(TL;DR)

这篇指南分为两个部分:第一部分介绍 Markdown 标准语法(CommonMark),第二部分讲解 扩展语法(GFM)。如果你只想快速回忆语法,可直接跳转对应章节。

前言

其实我早该整理一下 Markdown。虽然在工作期间一直在使用 Markdown 写文档、笔记和博客,但从未系统地整理过它。刚好最近在梳理自己的知识体系时,正好借这个机会,重新总结一下 Markdown 的语法,也希望这篇文章对大家能有所帮助。

什么是 Markdown?我们为什么要使用它呢?

Markdown 诞生于 2004 年,通常的文件后缀为 .md.markdown,由约翰·格鲁伯 John Gruber 和 亚伦·斯沃茨 Aaron Swartz 共同合作诞生。

它的核心理念是:让人类可读的纯文本,能直接转换为结构化的网页内容(HTML/XHTML)

在使用 Markdown 写作时,我们可以更专注于内容本身,不用担心排版、字体或者样式等细节。也由于 Markdown 的轻量化、易读易写特性,并且对于图片、图表、数学式都有支持,目前许多网站都广泛使用 Markdown 来撰写帮助文档或是用于 论坛 上发表消息。如 GitHubRedditDiscordDiasporaStack ExchangeOpenStreetMapSourceForge简书等等。同时也因为 Markdown 的语义化结构特性而被广泛应用于 LLM(大语言模型)当中,顺带一提本篇文章就是基于 Obsidian 编写的。

Makrdown的标准化

说明

本章节介绍 Markdown 的通用标准语法,也就是 CommonMark 规范。这是所有 Markdown 编辑器的基础支持。

Markdown 有许多变体。以下是一些主要的 Markdown 标准和扩展:

  • CommonMark:这是一个旨在标准化 Markdown 语法的项目,提供了一个明确的规范和参考实现。它解决了原始 Markdown 语法中的一些不一致性问题。
  • GitHub Flavored Markdown (GFM):这是 GitHub 使用的 Markdown 变体,添加了一些特性,如任务列表、表格和自动链接等。
  • Markdown Extra:这是对原始 Markdown 的扩展,添加了一些额外的功能,如表格、脚注和定义列表等。
  • MultiMarkdown:这是对 Markdown 的进一步扩展,支持更多的格式和功能,如表格、脚注、数学公式等。

Markdown 的标准语法(CommonMark)

CommonMark 是目前 Markdown 的标准化规范,解决了原始语法中的模糊与不一致问题。
它定义了最核心的一组规则,几乎所有编辑器都支持。

段落与换行符

段落(Paragraph)换行(Line Break) 有些时候在使用上看起来没有什么区别,但是在渲染的时候会有一些差异,理解好这两个概念可以在排版时让文字看起来更有层次和逻辑。

段落 Paragraph

一个段落由 一行或多行连续文本 组成,与下一个段落之间 必须空一行 才能被识别为新的段落。

这是第一行

这是第二行
Markdown预览 Makrdwown 段落预览 其对应的 HTML 结构是: Makrdwown 段落对应html

换行符(Line Break)

如果我们想在同一段落中换行,而不是另外起一个段落,就需要在行尾加上两个空格加上回车,这样就会生成一个 <br> 标签。

这是第一行  
这是第二行(同一段中换行)
Markdown预览 Makrdwown 换行预览 其对应的 HTML 结构是: Makrdwown 换行对应html
TIPS
在许多所见即所得的 Markdown 编辑器中(例如 Obsidian、Typora、Notion),换行和段落通常会自动处理,不需要手动加空格。

标题 Headers

Markdown 使用 # 符号来表示标题的层级,# 的数量决定了标题的级别,从一级标题到六级标题分别对应 HTML 中的 <h1><h6> 标签。当然还有一些编辑器支持在标题后面加上 =- 来表示一级和二级标题。

# 一级标题
## 二级标题
### 三级标题
#### 四级标题
##### 五级标题
###### 六级标题
一级标题
=
二级标题
-
Markdown预览 Makrdwown 标题预览 其对应的 HTML 结构是: Makrdwown 标题对应html
TIPS
博客文章中尽量使用 2~4 级标题,层级清晰、利于 SEO 抓取

强调 Emphasis

在 Markdown 中,可以使用星号 * 或下划线 _ 来表示强调文本。单个符号表示斜体,双符号表示粗体。

*斜体文本*_斜体文本_
**粗体文本**__粗体文本__
***粗斜体文本***___粗斜体文本___
Markdown预览 Makrdwown 强调预览 其对应的 HTML 结构是: Makrdwown 强调对应html

反斜杠转义字符 Backslash Escape

有时候我们需要在文本中使用 Markdown 的特殊字符(如 *#_ 等),但又不希望它们被解析为 Markdown 语法,这时就可以使用反斜杠 \ 来转义这些字符。

这是一个星号 \*,这是一个井号 \#,这是一个下划线 \_

引用 Blockquotes

引用使用 > 符号来表示,可以嵌套使用多个 > 来表示多级引用。

> 这是一个引用
>> 这是一个嵌套引用
用途

引用常用于提示、引文或评论说明。

Markdown预览 Makrdwown Blockquotes预览

列表 Lists

Markdown 支持有序列表和无序列表。

无序列表 Unordered Lists

无序列表使用 -*+ 来表示。

- 项目一
- 项目二
  - 子项目二点一
  - 子项目二点二
* 项目三
+ 项目四
Markdown预览 Makrdwown Unordered Lists预览
其对应的 HTML 结构是: Makrdwown Unordered Lists的html预览

有序列表 Ordered Lists

有序列表使用数字加点(如 1.2.)来表示。

1. 第一项
2. 第二项
   1. 子项二点一
   2. 子项二点二
3. 第三项
Markdown预览 Makrdwown Ordered Lists预览 其对应的 HTML 结构是: Makrdwown Ordered Lists的html预览
用途

引用常用于提示、引文或评论说明。

Markdown 支持两种类型的链接:行内链接和参考链接。

行内链接的语法是 [链接文本](链接地址 "可选标题")

[访问Google](https://www.google.com "Google首页")
Markdown预览 Makrdwown Inline Links预览 其对应的 HTML 结构是: Makrdwown Inline Links的html预览

参考链接的语法是先定义链接 [链接文本][引用标识],然后在文档的其他地方定义引用标识和链接地址。

gogole search[Google] [1] than from
[Yahoo] [2] or [MSN] [3].
  [1]: http://google.com/        "Google"
  [2]: http://search.yahoo.com/  "Yahoo Search"
  [3]: http://search.msn.com/    "MSN Search"
Markdown预览 Makrdwown Reference Links预览

代码块 Code Blocks

Markdown 支持行内代码和代码块

行内代码 Inline Code

行内代码使用反引号 ` 包裹。

这是一个行内代码示例: `console.log("Hello, World!");`
Markdown预览 Makrdwown Inline Code预览

代码块 Code Blocks

代码块使用三个反引号 ``` 包裹,可以指定语言以启用语法高亮。

```javascript
console.log("Hello Markdown!");
```
Markdown预览 Makrdwown Code Blocks预览
提示

不同编辑器对代码高亮支持略有差异,建议指定语言类型。

图片(Images)

Markdown 使用类似链接的语法来插入图片,语法是 ![替代文本](图片地址 "可选标题")

![Markdown Logo](https://markdown-here.com/img/icon256.png "Markdown Logo")
Markdown预览 Makrdwown 图片预览

水平线 Horizontal Rules

水平线可以使用三个或更多的 -*_ 来创建。

---
***
___
Makrdwown预览 Makrdwown 水平线预览

Markdown 扩展语法(GitHub Flavored Markdown,GFM)

说明

以下语法为 GitHub Flavored Markdown 的扩展功能,大多数现代编辑器如 Obsidian、Typora、VS Code 等均支持。

任务列表 Task Lists

- [x] 已完成任务
- [ ] 待办任务

效果:

  • 已完成任务
  • 待办任务

表格 Tables

| 语法 | 描述 |
| ---- | ---- |
| Header | 标题 |
| Paragraph | 段落 |

Markdown 预览

删除线 Strikethrough

~~这是一段被删除的文本~~

效果:这是一段被删除的文本

直接输入网址即可自动识别为链接。

https://github.com

效果:https://github.com

Emoji 表情 Emoji

:smile: :rocket: :memo:

效果:😄 🚀 📝

语法高亮 Syntax Highlighting

```python
def hello():
print("Hello, Markdown!")
```
Markdown 预览 Makrdwown 语法高亮预览
提示

GFM 支持多种语言自动语法高亮,如 JavaScript、Python、HTML 等。


结语

通过本文的介绍,到这也就结束了,希望对大家有所帮助

链接

推荐阅读