Markdown 使用 mermaid 绘制图
“mermaid 代码块”其实是 Markdown 中用于展示代码的语法,用三个反引号(```)包裹内容。如果代码块指定的语言是 mermaid,并且你的编辑器支持 Mermaid 渲染,它就能自动生成流程图、时序图等图形。
1. Mermaid 是什么?
Mermaid 是一个基于 JavaScript 的图表生成库,允许你用文本语法(类似 Markdown)生成流程图、时序图、甘特图等。它的核心优势是代码即图形,适合在 Markdown 文档中直接编写图表。
2. 为什么代码块能渲染成图?
- Markdown 扩展功能:支持 Mermaid 的编辑器(如 Typora、VS Code 的 Mermaid 插件、Obsidian、Mermaid Live Editor 等)会自动解析
mermaid
代码块并渲染成图形。 - 语法解析:Mermaid 的语法类似伪代码,定义节点和连接关系,最终通过浏览器或编辑器渲染成矢量图(SVG)。
3. 类似的技术或工具
除了 Mermaid,还有一些工具可以通过代码生成图形:
工具/语言 | 特点 |
---|---|
PlantUML | 用文本描述 UML 图(类图、时序图、用例图等),需安装 Java 和插件。 |
Graphviz | 用 DOT 语言生成拓扑图,适合复杂的数据流或结构图。 |
Draw.io (diagrams.net) | 拖拽式工具,但支持导出 XML 格式嵌入文档。 |
Viz.js | 基于 Graphviz 的 Web 实现,支持在 Markdown 中用 DOT 语法绘图。 |
LaTeX TikZ | 适合学术论文,用 LaTeX 代码绘制高质量矢量图(学习曲线陡峭)。 |
4. Mermaid 的更多技巧
(1) 流程图(Flowchart)
```mermaid
graph LRA[开始] --> B{条件判断}B -- 条件为真 --> C[执行操作]B -- 条件为假 --> D[跳过操作]C --> E[结束]D --> E
\\```
(2) 时序图(Sequence Diagram)
```mermaid
sequenceDiagram用户 ->> 服务器: 请求数据服务器 -->> 数据库: 查询数据库 -->> 服务器: 返回结果服务器 -->> 用户: 显示数据
\\```
(3) 甘特图(Gantt Chart)
```mermaid
gantttitle 项目时间表dateFormat YYYY-MM-DDsection 阶段一任务1 :a1, 2024-01-01, 30d任务2 :a2, 2024-02-01, 20dsection 阶段二任务3 :a3, 2024-03-01, 15d
\\```
(4) 饼图(Pie Chart)
```mermaid
pietitle 占比分析"项目A" : 25"项目B" : 35"项目C" : 40
\\```
(5) 类图(Class Diagram)
```mermaid
classDiagramclass Animal {+String name+makeSound()}class Dog {+bark()}class Cat {+meow()}Animal <|-- DogAnimal <|-- Cat
\\```
5. 注意事项
- 环境支持:确保编辑器支持 Mermaid(如 Typora 需启用 Mermaid 实验功能,VS Code 需安装插件)。
- 语法差异:不同版本的 Mermaid 语法可能略有不同,建议参考官方文档 Mermaid 官网。
- 调试技巧:如果图形不显示,检查语法是否正确,或尝试在 Mermaid Live Editor 中测试。
6. 学习资源
- 官方文档:Mermaid 官方教程
- 在线编辑器:Mermaid Live Editor(实时预览)
- VS Code 插件:安装
Mermaid Preview
或Mermaid Syntax Highlighting
。