Markdown's Grammar
Markdown 是一种轻量级的标记语言,可以与HTML交替使用,借助插件可以导出HTML、PDF等类型的文件。
Markdown语法
标题语法
在Markdown中,使用 # 号来表示对应的标题,几个 # 号对应几级标题
示例:
1 | # 一级标题 |
段落语法
段落由一行或多行连续的文本组成,段落之间用一个空行来分隔。在段落内不要随意换行,除非你希望产生一个换行(部分解析器在行尾两个空格处会生成<br>)。
示例:
1 | 这是第一个段落。 |
换行语法
在Markdown中,想要实现换行而不产生新的段落,可以在行尾加上两个空格再回车,或者直接使用<br>标签。
示例:
1 | 这是第一行(此处有两个空格) |
强调语法
Markdown提供了多种强调文本的方式,也可以直接使用HTML标签,但需要注意标签必须正确闭合。
- 斜体:
*斜体*或_斜体_→ 斜体 - 粗体:
**粗体**或__粗体__→ 粗体 - 粗斜体:
***粗斜体***或___粗斜体___→ 粗斜体 - 删除线:
~~删除线~~→删除线(详见后文删除线小节) - 也可内嵌HTML:
<i>斜体</i>、<b>粗体</b>等
错误示例:<i>fsdf<i><b>dfs</b> (<i> 未闭合)
正确写法:<i>fsdf</i><b>dfs</b>
完整演示:
1 | 这是 *斜体*,这是 **粗体**,这是 ***粗斜体***。 |
渲染效果:
这是 斜体,这是 粗体,这是 粗斜体。
这是 被删除 的文字。
也可用HTML:斜体粗体
引用块语法
引用块(blockquote)使用 > 符号开头,可以嵌套多层,也可以包含其他Markdown元素。
示例:
1 | > 这是一段引用 |
渲染效果:
这是一段引用
可以多行空行仍然属于引用
嵌套引用
列表语法
无序列表使用 - 、 * 或 + 作为标记,后面跟一个空格。
有序列表使用数字加 . 再加空格。
示例:
1 | - 项目一 |
渲染效果:
- 项目一
- 项目二
- 子项目
- 子项目
- 第一步
- 第二步
- 子步骤
- 子步骤
代码语法
行内代码使用单个反引号 ` 包围;代码块使用三个反引号(或三个波浪号)包围,并可以指定语言标识以获得语法高亮。
行内示例:
使用 print("Hello") 函数输出。
代码块示例:
1 | ```python |
渲染效果:
1 | print("Hello, world!") |
分割线语法
使用三个或更多的 --- 、*** 或 ___ 在单独一行即可生成分割线。
示例:
1 | 前面的内容 |
渲染效果:
前面的内容
后面的内容
链接语法
- 行内式:
[显示文字](URL "可选标题") - 参考式:先定义
[id]: URL "标题",然后引用[显示文字][id] - 自动链接:用尖括号包围URL或邮箱,如
<https://example.com>或<address@example.com>
示例:
1 | 这是一个 [行内链接](https://example.com "示例") 。 |
自动链接:https://example.com
图片语法
语法类似链接,在最前面加一个感叹号 !。
- 行内式:
 - 参考式:
![替代文本][id],并定义[id]: 图片URL "标题"
示例:
1 |  |
渲染效果:![]()
转义字符语法
若想显示Markdown中有特殊含义的字符,可以在前面加反斜杠 \。
可转义字符包括:\ ` * _ { } [ ] ( ) # + - . ! | 等。
示例:
1 | \* 这不是强调 \* |
渲染效果:
* 这不是强调 *
# 这不是标题
\ 反斜杠本身
内嵌HTML标签
Markdown允许直接插入HTML代码,用于实现更复杂的排版。块级元素(如<div>, <table>, <pre>等)前后最好有空行,其内部的Markdown语法不会被处理;行内元素(如<span>, <i>, <b>等)则可以与Markdown混合使用,且其内部的Markdown有可能被解析(视具体解析器而定)。
示例:
1 | 这是普通段落。 |
渲染效果(取决于平台):
这是普通段落。
| HTML表格 | 第二列 |
可以使用 红色文字 和 粗体。
注意:使用HTML标签时务必正确闭合,否则可能破坏页面布局。
表格语法
使用管道符
|和连字符-可以创建表格。在分隔行中使用冒号:来设置列的对齐方式(左、中、右)。
示例:
1 | | 左对齐 | 居中对齐 | 右对齐 | |
渲染效果:
| 左对齐 | 居中对齐 | 右对齐 |
|---|---|---|
| 单元格 | 单元格 | 单元格 |
| 数据 | 数据 | 数据 |
表格两端的竖线可以省略,但为清晰建议保留。
围栏代码语法
围栏代码块(fenced code blocks)使用三个反引号(```)或三个波浪号(~~~)作为开始与结束标记,可指定语言实现语法高亮。相比缩进代码块,它无需缩进、更易于书写。
示例:
1 | ```javascript |
渲染效果:
1 | function greet(name) { |
若代码块内本身包含三个连续反引号,可使用更多数量的反引号作为外层标记,或改用波浪号。
脚注语法
脚注是不少编辑器支持的扩展语法,用于在页面底部添加注释。在需要添加脚注的文本处插入
[^标识],并在文档任意位置给出对应的定义[^标识]: 脚注内容。
示例:
1 | Markdown非常灵活[^note]。 |
渲染效果(需编辑器支持):
Markdown非常灵活^note。
标题自定义锚点语法
某些Markdown处理器允许为标题定义自定义ID,以便创建锚点链接。在标题文本末尾添加
{#id}即可。
示例:
1 | ### 小结 {#summary} |
随后可通过 [跳转到小结](#summary) 实现页面内跳转。渲染出的HTML标题会带有 id="summary"。
定义列表语法
定义列表(definition list)在某些扩展(如PHP Markdown Extra)中可用。术语独占一行,定义写在下一行,以冒号
:开头。
示例:
1 | 术语 A |
渲染效果:
- 术语 A
- 这是术语 A 的定义。
- 术语 B
: 这是术语 B 的第一种解释。 - 这是术语 B 的第二种解释。
删除线语法
使用两个波浪号
~~包围文本即可显示删除线(虽已在强调语法中提及,此处作为独立小节补充)。
示例:
1 | ~~这段文字已过时~~ |
渲染效果:这段文字已过时
任务列表语法
任务列表(task list)是GitHub Flavored Markdown (GFM) 的扩展,用于显示可勾选的清单。使用
- [ ]表示未完成项,- [x]表示已完成项。
示例:
1 | - [ ] 阅读文档 |
渲染效果:
- 阅读文档
- 安装软件
- 开始编码
Emoji表情语法
在支持Emoji短码的编辑器中,可以通过
:表情名:插入表情符号,也可直接使用Unicode表情字符。
示例:
1 | :smile: :rocket: :+1: |
渲染效果:
:smile: :rocket: :+1:
直接输入:😄 🚀 👍
不同平台支持的短码可能略有差异,常用短码大多通用。
自动网站链接语法
用尖括号
< >包裹URL或邮箱地址可将其自动转换为可点击链接。部分编辑器中裸URL也会被识别,但推荐显式使用尖括号以确保兼容。
示例:
1 | <https://www.example.com> |
渲染效果:
https://www.example.com
contact@example.com
Markdown语法工具推荐
Typora
Typora 是一款所见即所得(WYSIWYG)的Markdown编辑器,无需预览窗口,直接在界面中呈现最终样式。它全面支持表格、代码高亮、数学公式(LaTeX)、流程图、脚注、目录自动生成等扩展语法,并可将文档导出为PDF、HTML、Word、图片等格式。界面极简、操作流畅,非常适合日常写作、笔记与文档整理。
Obsidian
Obsidian 是一款基于本地Markdown文件的知识库管理工具,采用双向链接和关系图谱功能,可以轻松构建个人Wiki和笔记网络。它原生支持实时预览、语法高亮、标签和页面内嵌,同时拥有海量社区插件,可扩展看板、日历、数据查询等高级功能。所有数据以纯Markdown文件存储在本地,安全且高度可移植。
VS Code
Visual Studio Code (简称 VS Code)是一款免费开源的代码编辑器,通过内置的Markdown预览功能和丰富的扩展生态,可以打造强大的Markdown写作环境。安装相关扩展(如 Markdown All in One、Markdownlint 等)后,可提供快捷键、目录自动生成、语法检查、格式化、导出为PDF/HTML等功能,特别适合需要编辑代码与文档频繁切换的开发者。