markdown_tutorial

1 什么是 Markdown

Markdown 是一种轻量级标记语言,常以 .md 为文件后缀,旨在简化编辑文本的过程。传统上,人们使用超文本标记语言(HTML)来格式化网页上的文本,但是 HTML 语言的语法繁琐,不适合写作者快速阅读和编辑。相比传统的文本编写工具如 Word、Latex 等,Markdown 在纯文本文档中加入简单的排版元素,让写作者更专注于内容本身,而不必费心于繁琐的排版。

Markdown 的特点与优势在于:

  1. Markdown 文本无需依赖复杂的界面,可以在任何文本编辑器中创建和编辑。
  2. Markdown 文本支持与 HTML 语言混编,从而实现更复杂的排版效果。
  3. Markdown 文本可以很容易地转换成其他格式,如 HTML、PDF、LaTeX 等,这使得内容可以在不同的平台和设备上展示。
  4. Markdown 的纯文本属性天然支持跨平台并且兼容版本控制系统,使得团队协作和文档管理更加方便。

这使得 Markdown 非常适合快速创建博客文章、技术文档、笔记以及在线交流等各种场景。因此,许多写作者、开发者和博客作者都选择 Markdown 作为他们的首选工具。我们的 Open-EM 开源项目也自然而然选取 Markdown 格式作为我们开源文档的格式,并且会自动定期同步所有内容到项目 Web 主页来提供更好的阅读体验。

这里我们推荐你使用 Obsidian 作为你的 Markdown 编辑器,它是免费、跨平台、插件化的 Markdown 编辑器,功能非常丰富。此外,以下是一些主流的 Markdown 编辑器

  • Typora,收费、轻型、跨平台的 Markdown 编辑器,支持自定义主题。
  • VSCode 中的 Markdown All in One 插件,提供了基本的 Markdown 语法高亮和预览功能。
  • GitHub、Notion、Wikipedia 等平台均内嵌 Markdown 编辑器。

2 Markdown 基本语法

以下我们介绍 Markdown 的基本语法,分别为:

  1. 标题
  2. 文字样式
  3. 列表
  4. 代码
  5. 块引用
  6. 超链接
  7. 图片
  8. 分割线
  9. 转义字符

标题

Markdown 提供了不同级别的标题来表示内容的层次结构。请在行首添加井号 # 来表示标题级别,井号 # 的数量决定了标题的级别。

Markdown 语法 预览效果
# 一级标题 <h1>一级标题</h1>
## 二级标题 <h2>二级标题</h2>
### 三级标题 <h3>三级标题</h3>
#### 四级标题 <h4>四级标题</h4>
##### 五级标题 <h5>五级标题</h5>
###### 六级标题 <h6>六级标题</h6>

:heavy_exclamation_mark: 请在井号 # 和标题之间添加一个空格作为分隔。

文字样式

Markdown 提供了一些文字样式用于强调文本。请在文本的两侧使用相应的符号。

Markdown 语法 预览效果
**粗体文本** 粗体文本
*斜体文本* 斜体文本
~~删除线文本~~ 删除线文本
***粗斜体文本*** 粗斜体文本
<u>下划线文本</u> 下划线文本

:heavy_exclamation_mark: 星号 * 也可以替换为下划线 _,但推荐使用星号 *

列表

Markdown 提供了有序列表和无序列表两种列表类型。

有序列表

对于有序列表,请在每个列表项前添加数字并紧跟一个英文句点。数字不必按数学顺序排列,但是列表应当从数字 1 起始。

  1. 第一项
  2. 第二项
    1. 第二项的第一项
    2. 第二项的第二项
    3. 第二项的第三项
  3. 第三项

无序列表

对于无序列表,请在每个列表项前面添加破折号 -、星号 * 或加号 +

  • 第一项
  • 第二项
    • 第二项的第一项
    • 第二项的第二项
    • 第二项的第三项
  • 第三项
    • 第三项的第一项
    • 第三项的第二项
    • 第三项的第三项

在列表中嵌套其他元素

要在保留列表连续性的同时在列表中添加另一种元素,请将该元素缩进四个空格或一个制表符(tab)。

  • 列表中表示多行文本:

    多行文本

  • 列表中表示块引用

    块引用

  • 等等……

:heavy_exclamation_mark: 请在符号和内容之间添加一个空格作为分隔。

代码

Markdown 提供了行内代码和行间代码块。请在文本的两侧使用反引号 ` 来表示行内代码。

Markdown 语法 预览效果
\`行内代码\` 行内代码

对于行间代码,请用在代码块之前和之后的行上使用三个反引号 \`\`\` 或三个波浪号 ~~~。主流的 Markdown 编辑器都支持行间代码的语法高亮,请在第一个三个反引号 \`\`\` 后面指定编程语言。

def function(*args, **kwargs):
    """Markdown tutorial"""
    return args, kwargs

块引用

Markdown 提供了块引用表示引用的文本。请在行首添加一个 > 符号。

块引用可以包含多个段落,也可以包含其他 Markdown 元素:

第一行

第二行

块引用可以包含其他 Markdown 元素,包括块引用。

请注意嵌套的块引用符号 > 的对齐。

超链接

Markdown 提供了三种基本的表示超链接的语法。不同的 Markdown 应用程序处理 URL 中间的空格方式不一样,请尽量使用 %20 代替链接中的空格。

Markdown 语法 预览效果
[超链接显示名](超链接地址) 超链接显示名
[超链接显示名](超链接地址 "超链接预览名") 超链接显示名
<https://www.open-em.cn> https://www.open-em.cn

预览名是当鼠标悬停在超链接上时显现的文字。

超链接也可以携带文字样式。

Markdown 语法 预览效果
[**超链接显示名**](超链接地址) 超链接显示名
**[超链接显示名](超链接地址)** 超链接显示名
[`超链接显示名`](超链接地址) 超链接显示名

:heavy_exclamation_mark: 主流的 Markdown 编辑器都会自动将 URL 转换为超链接,即可以忽略尖括号 <>。如果不希望这样,请在 URL 两侧添加反引号 `

图片

Markdown 提供了插入图片的语法。类似于超链接的语法,在链接前添加一个感叹号 ! 即可:。

Markdown 语法 预览效果
![图片显示名](图片地址 "图片预览名") Markdown

分隔线

Markdown 提供了分隔线分隔文本逻辑。请在单独一行上使用三个或多个星号 ***、破折号 --- 或下划线 ___,并且不能包含其他内容。

Markdown 语法 预览效果
--- <hr></hr>
*** <hr></hr>
___ <hr></hr>

转义字符

部分字符已经在 Markdown 语法中充当特殊字符,因此想表达这些字符原本的含义时,请在前面添加反斜杠号 \。转义字符包括

\ * - _ ` [] {} () # + . ! | $

3 Markdown 拓展语法

Markdown 的基本语法并不足够应对基本的文本写作,因此又拓展出如下的语法:

  1. 表格
  2. 任务列表
  3. 脚注
  4. Emoji
  5. 数学公式

它们被主流的 Markdown 编辑器所支持。

表格

Markdown 提供了简单的表格的表示方法。请使用三个或多个连字符 --- 创建每列的标题,并使用管道 | 分隔每列。

| Title 1 | Title 2 |
|---------|---------|
|  Text 1 |  Text 2 |

此外,你还可以修改连字符 --- 以修改表格每列的对齐方式。

Markdown 语法 效果
:--- 左对齐
:---: 居中
---: 右对齐

任务列表

Markdown 提供了特殊的复选框,它们的行为类似于无序列表,他们可以方便的被用于TODO List的记录。

Markdown 语法 效果
- [ ] 未完成的任务 - [ ] 未完成的任务
- [x] 已完成的任务 - [x] 已完成的任务

脚注

Markdown 提供了脚注。请在方括号 [] 内添加插入 ^ 和标识符,标识符可以是数字或单词,但不能包含空白字符。样例1

Emoji

Markdown 支持在文本中插入 Emoji 以丰富文本。

Markdown 语法 效果
:white_check_mark: :white_check_mark:
:x: :x:

数学公式

主流的 Markdown 编辑器大多支持 Latex 语法的行内公式和行间公式块。类似于代码块,请在文本的两侧使用金钱符号 \$ 来表示行内公式:$\hat{f}(\xi)=\int_{-\infty}^{+\infty}f(x)\mathrm{e}^{2\pi ix\xi}\mathrm{d}x$。

对于行间公式,请用在公式块之前和之后的行上使用两个金钱符号 \$

有关 Latex 公式,请参考:LaTeX/Mathematics

在线 Latex 公式编辑器:Latex Codecogs

4 Markdown 文档示例

  1. 脚注样例。 


相关文档