Markdown 完全教程
本文汇总了写博客时最常用的语法:从最基础的 Markdown 排版,到 Firefly 支持的代码块、数学公式、Mermaid / PlantUML 图表、视频嵌入等扩展功能,都放在这一篇里,方便以后写文章时直接搜索查阅。
Markdown 基础语法
这是一个展示如何编写 Markdown 文件的示例。本文档汇总了核心语法与常见扩展(GFM)。
块级元素
段落与换行
段落
HTML 标签:<p>
使用一个或多个空行分隔段落。(仅包含空格或制表符的行也视为空行。)
代码:
This will beinline.
This is second paragraph.预览:
This will be inline.
This is second paragraph.
换行
HTML 标签:<br />
在行末添加两个或更多空格来产生换行。
代码:
This will be notinline.预览:
This will be not
inline.
标题
Markdown 支持两种标题样式:Setext 与 atx。
Setext
HTML 标签:<h1>,<h2>
使用等号 (=) 表示 <h1>、使用短横线 (-) 表示 <h2>,数量不限,作为“下划线”。
代码:
This is an H1=============This is an H2-------------预览:
This is an H1
This is an H2
atx
HTML 标签:<h1>,<h2>,<h3>,<h4>,<h5>,<h6>
在行首使用 1-6 个井号 (#),对应 <h1> 至 <h6>。
代码:
# This is an H1## This is an H2###### This is an H6预览:
This is an H1
This is an H2
####### This is an H6
可选:你可以在行尾“闭合” atx 标题。末尾的井号数量不必与开头一致。
代码:
# This is an H1 ### This is an H2 ##### This is an H3 ######预览:
This is an H1
This is an H2
This is an H3
引用
HTML 标签:<blockquote>
Markdown 使用邮件风格的 > 作为引用符号。若手动换行并在每行前加 >,显示效果最佳。
代码:
> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,> consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.> Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.>> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse> id sem consectetuer libero luctus adipiscing.预览:
This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse id sem consectetuer libero luctus adipiscing.
Markdown 允许“偷懒”:在一个硬换行段落中,只在第一行前加 > 即可。
代码:
> This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet,consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus.Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
> Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisseid sem consectetuer libero luctus adipiscing.预览:
This is a blockquote with two paragraphs. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam hendrerit mi posuere lectus. Vestibulum enim wisi, viverra nec, fringilla in, laoreet vitae, risus.
Donec sit amet nisl. Aliquam semper ipsum sit amet velit. Suspendisse id sem consectetuer libero luctus adipiscing.
引用可以嵌套(引用中的引用),通过增加 > 层级实现。
代码:
> This is the first level of quoting.>> > This is nested blockquote.>> Back to the first level.预览:
This is the first level of quoting.
This is nested blockquote.
Back to the first level.
引用内可包含其他 Markdown 元素,包括标题、列表与代码块。
代码:
> ## This is a header.>> 1. This is the first list item.> 2. This is the second list item.>> Here's some example code:>> return shell_exec("echo $input | $markdown_script");预览:
This is a header.
- This is the first list item.
- This is the second list item.
Here’s some example code:
return shell_exec("echo $input | $markdown_script");
列表
Markdown 支持有序(数字)与无序(圆点)列表。
无序列表
HTML 标签:<ul>
无序列表可使用 星号 (*)、加号 (+) 或 短横线 (-)。
代码:
* Red* Green* Blue预览:
- Red
- Green
- Blue
等价于:
代码:
+ Red+ Green+ Blue或者:
代码:
- Red- Green- Blue有序列表
HTML 标签:<ol>
有序列表使用数字加英文句点:
代码:
1. Bird2. McHale3. Parish预览:
- Bird
- McHale
- Parish
注意:像下面这样可能会“意外触发”有序列表:
代码:
1986. What a great season.预览:
- What a great season.
你可以用反斜杠转义 (\) 句点:
代码:
1986\. What a great season.预览:
1986. What a great season.
列表中的缩进内容
列表项里的引用
在列表项内放置引用,需要将 > 符号整体缩进:
代码:
* A list item with a blockquote:
> This is a blockquote > inside a list item.预览:
-
A list item with a blockquote:
This is a blockquote inside a list item.
列表项里的代码块
在列表项内放置代码块,需要缩进两层——8 个空格或两个 Tab:
代码:
* A list item with a code block:
<code goes here>预览:
-
A list item with a code block:
<code goes here>
嵌套列表
代码:
* A * A1 * A2* B* C预览:
- A
- A1
- A2
- B
- C
代码块
HTML 标签:<pre>
将代码块中的每行缩进至少4 个空格或1 个制表符。
代码:
This is a normal paragraph:
This is a code block.预览:
This is a normal paragraph:
This is a code block.代码块会一直持续,直到遇到未缩进的行(或文末)。
在代码块内,与号 (&) 和尖括号 (< >) 会自动转为 HTML 实体。
代码:
<div class="footer"> © 2004 Foo Corporation </div>预览:
<div class="footer"> © 2004 Foo Corporation</div>下文的“围栏代码块”和“语法高亮”属于扩展语法,你也可以用它们来书写代码块。
围栏代码块
使用成对的反引号围起来(如下所示),就不需要四空格缩进了。
代码:
Here's an example:
```function test() { console.log("notice the blank line before this function?");}```预览:
Here’s an example:
function test() { console.log("notice the blank line before this function?");}语法高亮
在围栏代码块后添加可选的语言标识,即可启用语法高亮(参见支持语言列表)。
代码:
```rubyrequire 'redcarpet'markdown = Redcarpet.new("Hello World!")puts markdown.to_html```预览:
require 'redcarpet'markdown = Redcarpet.new("Hello World!")puts markdown.to_html分割线(水平线)
HTML 标签:<hr />
一行中放置三个或以上的短横线 (-)、星号 (*) 或下划线 (_)。符号之间允许有空格。
代码:
* * *********- - ----------------------------------------___预览:
表格
HTML 标签:<table>
这是扩展语法。
用竖线 (|) 分隔列,用短横线 (-) 分隔表头,使用冒号 (:) 指定对齐方式。
两侧的竖线 (|) 与对齐可选。用于表头分隔时,每列至少需要 3 个短横线。
代码:
| Left | Center | Right ||:-----|:------:|------:||aaa |bbb |ccc ||ddd |eee |fff |
A | B---|---123|456
A |B--|--12|45预览:
| Left | Center | Right |
|---|---|---|
| aaa | bbb | ccc |
| ddd | eee | fff |
| A | B |
|---|---|
| 123 | 456 |
| A | B |
|---|---|
| 12 | 45 |
内联元素
链接
HTML 标签:<a>
Markdown 支持两种链接样式:行内链接与引用式链接。
行内链接
行内链接格式:[文本](URL "标题")
标题可选。
代码:
This is [an example](http://example.com/ "Title") inline link.
[This link](http://example.net/) has no title attribute.预览:
This is an example inline link.
This link has no title attribute.
如果引用同一站点的本地资源,可以使用相对路径:
代码:
See my [About](/about/) page for details.预览:
See my About page for details.
引用式链接
可以预定义链接引用。定义格式:[id]: URL "标题"
标题同样可选。引用时使用:[文本][id]
代码:
[id]: http://example.com/ "Optional Title Here"This is [an example][id] reference-style link.预览:
This is an example reference-style link.
说明:
- 方括号中包含链接标识(不区分大小写,可在左侧缩进最多三格空格);
- 随后是冒号;
- 再跟一个或多个空格(或 tab);
- 然后是链接 URL;
- URL 可选地用尖括号包裹;
- 可选地跟随标题属性,用引号或圆括号包裹。
以下三种定义等价:
代码:
[foo]: http://example.com/ "Optional Title Here"[foo]: http://example.com/ 'Optional Title Here'[foo]: http://example.com/ (Optional Title Here)[foo]: <http://example.com/> "Optional Title Here"如果使用空的方括号,则链接文本本身会作为名称。
代码:
[Google]: http://google.com/[Google][]预览:
强调
HTML 标签:<em>,<strong>
Markdown 使用 星号 (*) 或 下划线 (_) 表示强调。一个分隔符对应 <em>;两个分隔符对应 <strong>。
代码:
*single asterisks*
_single underscores_
**double asterisks**
__double underscores__预览:
single asterisks
single underscores
double asterisks
double underscores
但如果两侧有空格,则会被视作普通字符而非强调语法。
你可以使用反斜杠进行转义:
代码:
\*this text is surrounded by literal asterisks\*预览:
*this text is surrounded by literal asterisks*
行内代码
HTML 标签:<code>
用反引号 (`) 包裹。
代码:
Use the `printf()` function.预览:
Use the printf() function.
若行内代码中需要包含反引号字符,可使用多重反引号作为定界符:
代码:
``There is a literal backtick (`) here.``预览:
There is a literal backtick (`) here.
行内代码两侧的定界符允许包含空格(开头一个、结尾一个),方便在代码起始或结尾放置反引号字符:
代码:
A single backtick in a code span: `` ` ``
A backtick-delimited string in a code span: `` `foo` ``预览:
A single backtick in a code span: `
A backtick-delimited string in a code span: `foo`
图片
HTML 标签:<img />
Markdown 的图片语法与链接类似,支持行内与引用两种方式。
行内图片
行内图片语法:
标题可选。
代码:

预览:


说明:
- 一个感叹号 !;
- 后接方括号,放置图片的替代文本;
- 再接圆括号,内含图片 URL/路径,及可选的标题(引号包裹)。
引用式图片
引用式图片语法:![替代文本][id]
代码:
[img id]: https://s2.loli.net/2024/08/20/5fszgXeOxmL3Wdv.webp "Optional title attribute"![Alt text][img id]预览:

删除线
HTML 标签:<del>
这是扩展语法。
GFM 增加了删除线语法。
代码:
~~Mistaken text.~~预览:
Mistaken text.
杂项
自动链接
Markdown 支持一种便捷写法来创建“自动链接”(URL 与邮箱地址):只需用尖括号将其包住即可。
代码:
<http://example.com/>
<address@example.com>预览:
GFM 会自动识别标准 URL 并转换为链接。
代码:
https://github.com/emn178/markdown预览:
反斜杠转义
Markdown 允许使用反斜杠来转义那些本用于 Markdown 语法的特殊字符,使其按字面显示。
代码:
\*literal asterisks\*预览:
*literal asterisks*
以下字符可通过反斜杠转义以按字面量输出:
Code:
\ backslash` backtick* asterisk_ underscore{} curly braces[] square brackets() parentheses# hash mark+ plus sign- minus sign (hyphen). dot! exclamation mark内联 HTML
对于 Markdown 语法未覆盖的标记,直接使用原生 HTML 即可。无需特别声明从 Markdown 切换到 HTML,直接写标签就行。
代码:
This is a regular paragraph.
<table> <tr> <td>Foo</td> </tr></table>
This is another regular paragraph.预览:
This is a regular paragraph.
| Foo |
This is another regular paragraph.
请注意:在块级 HTML 标签内不会处理 Markdown 语法。
与块级标签不同,在行内级标签内会处理 Markdown 语法。
代码:
<span>**Work**</span>
<div> **No Work**</div>预览:
Work
扩展功能
GitHub 仓库卡片
您可以添加链接到 GitHub 仓库的动态卡片,在页面加载时,仓库信息会从 GitHub API 获取。
使用代码 ::github{repo="CuteLeaf/Firefly"} 创建 GitHub 仓库卡片。
::github{repo="CuteLeaf/Firefly"}提醒框(Admonitions)配置
Firefly 采用了 rehype-callouts 插件,支持了四种风格的提醒框主题:GitHub、Obsidian、VitePress 和 Docusaurus。您可以在 src/config/siteConfig.ts 中进行配置:
export const siteConfig: SiteConfig = { // ... rehypeCallouts: { // 选项: "github" | "obsidian" | "vitepress" | "docusaurus" theme: "github", }, // ...};注意:更改配置后需要重启开发服务器才能生效。
以下是各个主题支持的类型列表,每个主题风格和语法不同,可根据喜好选择。
1. GitHub 主题风格
这是 GitHub 官方支持的 5 种基本类型。

基本语法
> [!NOTE] NOTE> 突出显示用户应该考虑的信息。
> [!TIP] TIP> 可选信息,帮助用户更成功。
> [!IMPORTANT] IMPORTANT> 用户成功所必需的关键信息。
> [!WARNING] WARNING> 关键内容,需要立即注意。
> [!CAUTION] CAUTION> 行动的负面潜在后果。
> [!NOTE] 自定义标题> 这是一个带有自定义标题的示例。2. Obsidian 主题风格
Obsidian 风格支持非常丰富的类型和别名。
点击展开 Obsidian 语法列表
> [!NOTE] NOTE> 通用的笔记块。
> [!ABSTRACT] ABSTRACT> 文章的摘要。
> [!SUMMARY] SUMMARY> 文章的总结(同 Abstract)。
> [!TLDR] TLDR> 太长不看(同 Abstract)。
> [!INFO] INFO> 提供额外信息。
> [!TODO] TODO> 需要完成的事项。
> [!TIP] TIP> 实用技巧或提示。
> [!HINT] HINT> 暗示(同 Tip)。
> [!IMPORTANT] IMPORTANT> 重要信息(Obsidian 风格通常使用类似的图标)。
> [!SUCCESS] SUCCESS> 操作成功。
> [!CHECK] CHECK> 检查通过(同 Success)。
> [!DONE] DONE> 已完成(同 Success)。
> [!QUESTION] QUESTION> 提出问题。
> [!HELP] HELP> 寻求帮助(同 Question)。
> [!FAQ] FAQ> 常见问题(同 Question)。
> [!WARNING] WARNING> 警告信息。
> [!CAUTION] CAUTION> 注意事项(同 Warning)。
> [!ATTENTION] ATTENTION> 引起注意(同 Warning)。
> [!FAILURE] FAILURE> 操作失败。
> [!FAIL] FAIL> 失败(同 Failure)。
> [!MISSING] MISSING> 缺失内容(同 Failure)。
> [!DANGER] DANGER> 危险操作警告。
> [!ERROR] ERROR> 错误信息(同 Danger)。
> [!BUG] BUG> 报告软件缺陷。
> [!EXAMPLE] EXAMPLE> 展示一个例子。
> [!QUOTE] QUOTE> 引用一段话。
> [!CITE] CITE> 引证(同 Quote)。
> [!NOTE] 自定义标题> 这是一个带有自定义标题的示例。
3. VitePress 主题风格
VitePress 风格提供了一套现代化的、扁平的默认样式。目前仅包含与 GitHub 一致的 5 种 基础类型。
点击展开 VitePress 语法列表
> [!NOTE] NOTE> 对应 GitHub 的 Note。
> [!TIP] TIP> 对应 GitHub 的 Tip。
> [!IMPORTANT] IMPORTANT> 对应 GitHub 的 Important。
> [!WARNING] WARNING> 对应 GitHub 的 Warning。
> [!CAUTION] CAUTION> 对应 GitHub 的 Caution。
> [!TIP] 自定义标题> VitePress 风格同样支持自定义标题。
4. Docusaurus 主题风格
Docusaurus 风格提供了一套现代化的提醒框样式,支持 5 种类型。
点击展开 Docusaurus 语法列表
支持以下类型的提醒框:note tip info warning danger
:::note突出显示用户应该考虑的信息,即使在快速浏览时也是如此。:::
:::tip可选信息,帮助用户更成功。:::
:::info一般信息。:::
:::warning由于潜在风险需要用户立即注意的关键内容。:::
:::danger行动的负面潜在后果。:::
:::tip[自定义标题]可选信息,帮助用户更成功。:::
剧透
您可以为文本添加剧透。文本也支持 Markdown 语法。
内容
内容 :spoiler[被隐藏了 **哈哈**]!图片画廊网格 (Image Grid)
您可以使用 [grid] 和 [/grid] 标签将多张图片纵向并排展示。这对于展示照片画廊或对比图非常有用。系统会自动根据包裹在其中的图片数量(最多支持并排展示4张)以响应式网格进行布局。
自动补齐图片高度: 同一排中如果有高度、大小或者比例不一的图片,会像「九宫格画廊相册」一样自动撑满。较短或不协调的图片会自动使用 object-cover 进行完美中心裁剪补充视野。图片边框水平彻底对齐无缝隙,但被裁剪后,只有点击图片通过灯箱才能查看完整图片,所以建议尽量避免使用长宽比例不一致的图片在同一排中。
图注恒定底端对齐: 不论上面的图片长宽如何变化,在同一行的所有图像解释文字(图注)都会对标到一条完美的水平基线上了。



基本语法
[grid][/grid]代码块与语法高亮
在这里,我们将探索如何使用 Expressive Code 展示代码块。提供的示例基于官方文档,您可以参考以获取更多详细信息。
表达性代码
语法高亮
常规语法高亮
console.log('此代码有语法高亮!')渲染 ANSI 转义序列
Standard ANSI colors:- Dimmed: Black Red Green Yellow Blue Magenta Cyan White - Foreground: Black Red Green Yellow Blue Magenta Cyan White - Background: Black Red Green Yellow Blue Magenta Cyan White - Reversed: Black Red Green Yellow Blue Magenta Cyan White
8-bit colors (showing colors 160-171 as an example):- Dimmed: 160 161 162 163 164 165 166 167 168 169 170 171 - Foreground: 160 161 162 163 164 165 166 167 168 169 170 171 - Background: 160 161 162 163 164 165 166 167 168 169 170 171 - Reversed: 160 161 162 163 164 165 166 167 168 169 170 171
24-bit colors (full RGB):- Dimmed: ForestGreen - RGB(34,139,34) RebeccaPurple - RGB(102,51,153) - Foreground: ForestGreen - RGB(34,139,34) RebeccaPurple - RGB(102,51,153) - Background: ForestGreen - RGB(34,139,34) RebeccaPurple - RGB(102,51,153) - Reversed: ForestGreen - RGB(34,139,34) RebeccaPurple - RGB(102,51,153)
Font styles:- Default- Bold- Dimmed- Italic- Underline- Reversed- Strikethrough编辑器和终端框架
代码编辑器框架
console.log('标题属性示例')<div>文件名注释示例</div>终端框架
echo "此终端框架没有标题"Write-Output "这个有标题!"覆盖框架类型
echo "看,没有框架!"## 如果不覆盖,这将是一个终端框架function Watch-Tail { Get-Content -Tail 20 -Wait $args }New-Alias tail Watch-Tail文本和行标记
标记整行和行范围
// 第1行 - 通过行号定位// 第2行// 第3行// 第4行 - 通过行号定位// 第5行// 第6行// 第7行 - 通过范围 "7-8" 定位// 第8行 - 通过范围 "7-8" 定位选择行标记类型 (mark, ins, del)
function demo() { console.log('此行标记为已删除') // 此行和下一行标记为已插入 console.log('这是第二个插入行')
return '此行使用中性默认标记类型'}为行标记添加标签
<button role="button" {...props} value={value} className={buttonClassName} disabled={disabled} active={active}> {children && !active && (typeof children === 'string' ? <span>{children}</span> : children)}</button>在单独行上添加长标签
<button role="button" {...props}
value={value} className={buttonClassName}
disabled={disabled} active={active}>
{children && !active && (typeof children === 'string' ? <span>{children}</span> : children)}</button>使用类似 diff 的语法
此行将标记为已插入此行将标记为已删除这是常规行--- a/README.md+++ b/README.md@@ -1,3 +1,4 @@+this is an actual diff file-all contents will remain unmodified no whitespace will be removed either结合语法高亮和类似 diff 的语法
function thisIsJavaScript() { // 整个块都会以 JavaScript 高亮显示, // 并且我们仍然可以为其添加 diff 标记! console.log('要删除的旧代码') console.log('新的闪亮代码!')}标记行内的单独文本
function demo() { // 标记行内的任何给定文本 return '支持给定文本的多个匹配项';}正则表达式
console.log('单词 yes 和 yep 将被标记。')转义正斜杠
echo "Test" > /home/test.txt选择内联标记类型 (mark, ins, del)
function demo() { console.log('这些是插入和删除的标记类型'); // return 语句使用默认标记类型 return true;}自动换行
为每个块配置自动换行
// 启用换行的示例function getLongString() { return '这是一个非常长的字符串,除非容器极宽,否则很可能无法适应可用空间'}// wrap=false 的示例function getLongString() { return '这是一个非常长的字符串,除非容器极宽,否则很可能无法适应可用空间'}配置换行的缩进
// preserveIndent 示例(默认启用)function getLongString() { return '这是一个非常长的字符串,除非容器极宽,否则很可能无法适应可用空间'}// preserveIndent=false 的示例function getLongString() { return '这是一个非常长的字符串,除非容器极宽,否则很可能无法适应可用空间'}可折叠部分
5 collapsed lines
// 所有这些样板设置代码将被折叠import { someBoilerplateEngine } from '@example/some-boilerplate'import { evenMoreBoilerplate } from '@example/even-more-boilerplate'
const engine = someBoilerplateEngine(evenMoreBoilerplate())
// 这部分代码默认可见engine.doSomething(1, 2, 3, calcFn)
function calcFn() { // 您可以有多个折叠部分3 collapsed lines
const a = 1 const b = 2 const c = a + b
// 这将保持可见 console.log(`计算结果: ${a} + ${b} = ${c}`) return c}
4 collapsed lines
// 直到块末尾的所有代码将再次被折叠engine.closeConnection()engine.freeMemory()engine.shutdown({ reason: '示例样板代码结束' })行号
为每个块显示行号
// 此代码块将显示行号console.log('来自第2行的问候!')console.log('我在第3行')// 此块禁用行号console.log('你好?')console.log('抱歉,你知道我在第几行吗?')更改起始行号
console.log('来自第5行的问候!')console.log('我在第6行')Tab 代码块
由 rehype-code-group 提供,语法与 VitePress 代码组 一致:用 ::: code-group labels=[...] 包裹多个代码块,即可合并成一组标签页。
labels=[...] 中的标签按顺序对应组内的代码块,用英文逗号分隔;::: 与 code-group 之间的空格不能省略。
基本用法
::: code-group labels=[code.js, code.py, code.html]
```jsexport function greet(name) { return `Hello, ${name}!`;}```
```pydef greet(name): return f"Hello, {name}!"```
```html<p>Hello, world!</p>```
:::渲染效果:
export function greet(name) { return `Hello, ${name}!`;}def greet(name): return f"Hello, {name}!"<p>Hello, world!</p>标签中使用 Emoji
标签支持 emoji 短代码,构建时会自动转换成 emoji:
::: code-group labels=[:package: npm, :package: pnpm, :yarn: yarn]npm create astro@latestpnpm create astro@latestyarn create astro与其他代码块特性组合
组内仍是普通的 Expressive Code 代码块,标题、行号、行标记、折叠、终端框架等特性都可以照常使用。
export default { theme: "firefly", codeGroup: true,};pnpm build && pnpm preview3 collapsed lines
// 这三行默认折叠import { a } from "a";import { b } from "b";
console.log(a, b);不止是代码块
标签页内可以放任意内容,例如文字、列表或图片:
这是一段普通的段落内容。
- 列表项一
- 列表项二
标签栏在构建期生成,默认展开第一项;支持鼠标点击与键盘 ← / → / Home / End 切换。
KaTeX 数学公式
本文展示了 Firefly 主题对 KaTeX 数学公式的渲染支持。
行内公式 (Inline)
行内公式使用单个 $ 符号包裹。
例如:欧拉公式 是数学中最优美的公式之一。
质能方程 也是家喻户晓。
块级公式 (Block)
块级公式使用两个 $$ 符号包裹,会居中显示。
复杂示例
矩阵 (Matrices)
极限与求和 (Limits and Sums)
麦克斯韦方程组 (Maxwell’s Equations)
化学方程式 (Chemical Equations)
更多符号
| 符号 | 代码 | 渲染结果 |
|---|---|---|
| Alpha | \alpha | |
| Beta | \beta | |
| Gamma | \Gamma | |
| Pi | \pi | |
| Infinity | \infty | |
| Right Arrow | \rightarrow | |
| Partial | \partial |
更多 KaTeX 语法请参考 KaTeX Supported Functions。
图表
Markdown 中 Mermaid 图表完整指南
本文演示如何在 Markdown 文档中使用 Mermaid 创建各种复杂图表,包括流程图、时序图、ER 图、类图、状态图、XY 图、甘特图、思维导图等。
Mermaid 图表由 Merman 实现。Firefly 在 Astro 构建阶段生成亮色和深色两套静态 SVG,无需在浏览器中加载 Mermaid 渲染运行时。可以前往 Merman Playground 实时编辑语法并预览渲染结果。
流程图示例
流程图非常适合表示流程或算法步骤。
时序图示例
时序图显示对象之间随时间的交互。
ER 图示例
ER 图(实体关系图)非常适合表示数据库结构。
类图示例
类图显示系统的静态结构,包括类、属性、方法及其关系。
状态图示例
状态图显示对象在其生命周期中经历的状态序列。
XY 图示例
XY 图表非常适合展示趋势和对比数据。
饼图示例
饼图适合直观展示各部分在整体中的占比。
甘特图示例
甘特图可以按时间轴展示项目阶段、任务依赖和当前进度。
思维导图示例
思维导图适合梳理主题层级和知识结构。
时间线示例
时间线用于按年份或阶段呈现项目的重要事件。
用户旅程图示例
用户旅程图能够描述用户在不同阶段的行为和体验评分。
Git 图示例
Git 图可以清晰展示分支、提交和合并历史。
看板示例
看板适合展示任务在不同工作阶段之间的分布。
Sankey 图示例
Sankey 图通过连线宽度展示流量在不同节点之间的流向。
总结
Mermaid 是在 Markdown 文档中创建各种类型图表的强大工具。本文演示了流程图、时序图、ER 图、类图、状态图、XY 图、饼图、甘特图、思维导图、时间线、用户旅程图、Git 图、看板和 Sankey 图。这些图表可以帮助您更清晰地表达复杂的概念、流程和数据结构。
要使用 Mermaid,只需在代码块中指定 mermaid 语言,并使用简洁的文本语法描述图表。图表会在构建时自动渲染为 SVG,无需客户端 JavaScript 加载。
可以前往 Merman Playground 尝试更多语法,再将图表代码粘贴到文章中。
Markdown 中 PlantUML 图表指南
PlantUML 是一种使用纯文本描述图表的工具。你只需要写一段结构化语法,就可以生成时序图、类图、用例图、活动图等常见工程图。
它特别适合写在技术博客和项目文档里:
- 图表和正文一起版本管理,便于协作与审阅
- 修改图只需要改文本,适合频繁迭代
- 能和 Markdown 无缝结合,保持文档统一
在 Firefly 中,plantuml 代码块会在构建阶段编码并生成服务器 SVG 地址,页面端再根据亮暗主题自动切换图源,并支持缩放、拖拽和全屏交互。
如果你想快速上手,可以记住这个最小模板:
活动图示例
状态图示例
用例图示例
组件图示例
部署图示例
ER 图示例
时序图示例(登录与刷新令牌)
C4 风格容器图示例
嵌入视频
只需从 YouTube 或其他平台复制嵌入代码,然后将其粘贴到 markdown 文件中。
title: 在文章中嵌入视频published: 2023-10-19// ...
<iframe width="100%" height="468" src="https://www.youtube.com/embed/5gIf0_xpFPI?si=N1WTorLKL0uwLsU_" title="YouTube video player" frameborder="0" allowfullscreen></iframe>YouTube
Bilibili
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!













