亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

Markdown 流程圖

1. 前言

Markdown 的原生語法不支持繪制圖形,但通過 Mermaid 擴展,我們可以將一些格式化的文字渲染成我們需要的圖形。常用的圖形有 “流程圖”、“時序圖”、“類圖”、“狀態圖”、“甘特圖”、"餅圖" 等。

Mermaid 是一個方便于 Markdown 文檔撰寫者通過文本方式生成圖形的擴展工具。相比 Visio 它要輕很多,幾行文字便可生成一幅完整且美觀的流程圖。

本節將重點介紹如何通過 Mermaid 繪制「流程圖」。

流程圖(flow chart)是體現封閉系統運動狀態的有效展示形式,可以讓管理者、實現者清晰的認識系統運轉流程,也可以直觀的描述工作過程。

環境說明
考慮到 Markdown 工具之間的不兼容,有的內容直接從頁面復制粘貼到本地不會正常顯示,大家學習時自己動手寫是肯定沒問題的。本節所有實例代碼及演示效果均使用 Typora 工具完成。
Mermaid 為 Markdown 擴展語法,需要在 Typora 設置中開啟對圖表的語法支持。其方式為:「設置」->「Markdown」->「Markdown 擴展語法」-> 勾選「圖表」,如下圖:
圖片描述

2. 語法詳解

2.1 基本的流程圖

流程圖由幾何圖形節點及連接線組成。幾何圖形節點是流程圖內的各元素的載體,通常用形狀來區分其屬性,例如圓形代表開始或結束、菱形代表判斷等。連接線用于描述幾何圖形節點之間的聯系,可能是有向線段,也可能是無向線段等。

在 Markdown 中添加 Mermaid 圖形,需要聲明 Mermaid 類型的代碼塊,代碼如下:

?```mermaid
<!-- 此處的內容會被渲染成 mermaid 圖形 -->
?```

基本的流程圖包含:流程圖布局方向、幾何圖形和連接線三個部分組成。

實例 1

基本的豎向流程圖。

?```mermaid
graph TD
    開始 --> 結束
?```

此部分代碼將會渲染成如下效果:

圖片描述

通過修改圖表的聲明,可以修改流程圖的布局方向。例如將上邊的流程圖轉換為橫向流程圖。

實例 2

基本的橫向流程圖。

?```mermaid
graph LR
    開始 --> 結束
?```

渲染后效果如下:

圖片描述

支持的方向有:

標志 方向
TB top bottom - 從上到下
BT bottom top - 從下到上
RL right left - 從右到左
LR left right - 從左到右
TD 等同于 TB

2.2 幾何圖形節點

2.2.1 默認的節點

幾何圖形節點是流程圖中的核心元素,其要素包括形狀和內容。

在 Mermaid 語法中,不加任何修飾的文字內容會被渲染成幾何圖形節點。

實例 3

默認的幾何圖形。

?```mermaid
graph LR
    幾何圖形中的文本內容
?```

其渲染結果如下:

圖片描述

2.2.2 分離節點的 ID 與內容

在相對復雜的場景中,同一圖形可能被多次引用,如果圖形中的文本較長,或者文本內容不足以體現圖形的唯一性,可將圖形節點的 ID 與其文本內容分開定義,以使結構更加清晰。

實例 4

將節點的 ID 和顯示文本區分開。

?```mermaid
graph LR
    一號節點[在此輸入希望在一號節點上顯示的文字內容]
?```

其渲染結果如下:

圖片描述

2.2.3 節點的形狀

形狀可用于區分節點的不同屬性,有利于豐富流程圖的信息量,同時保持其簡潔性。

在 Mermaid 中可以使用一些基本符號定義節點的形狀,例如:圓角形、跑道形、氣缸形、非對稱形狀、菱形、六角形、平行四邊形、梯形。

實例 5

  • 圓角形節點的語法。
?```mermaid
graph TD
	節點ID(節點顯示文本)
?```

圖片描述

  • 圓形節點的語法。
?```mermaid
graph TD
	節點ID((節點顯示文本))
?```

圖片描述

  • 非對稱形節點的語法。
?```mermaid
graph TD
	節點ID>節點顯示文本]
?```

圖片描述

  • 菱形節點的語法。
```mermaid
graph TD
	節點ID{節點顯示文本}
```

圖片描述

  • 六角形節點的語法。
?```mermaid
graph TD
	節點ID{{節點顯示文本}}
?```

圖片描述

  • 平行四邊形節點的語法。
?```mermaid
graph TD
	右傾平行四邊形[/平行四邊形--右傾/]
	左傾平行四邊形[\平行四邊形--左傾\]
?```

圖片描述

  • 梯形節點的語法。
?```mermaid
graph TD
  梯形[/梯形--正向\]
	反向梯形[\梯形--反向/]
?```

圖片描述

2.3 連接線

2.3.1 基本連接線

在流程圖中,不同節點之間需要通過連接線來描述其相關性。

實例 6

基本的連接線語法。

?```mermaid
graph LR
    A-->B
?```

其渲染結果如下:

圖片描述

2.3.2 連接線的種類

不同種類的連接線可以表示不同類型的關系,例如,無方向的連接線可用來表示相關性、有方向的連接線可以表示數據流向或者節點間的依賴關系;用實線表示強關聯、用虛線表示弱關聯等待。

實例 7

無向線段連接線。

?```mermaid
graph LR
    A --- B -- 帶文字連接線 --- C
?```

圖片描述

點狀連接線。

?```mermaid
graph LR
    A -.- B -. 帶文字連接線 .-> C
?```

圖片描述

粗實連接線。

?```mermaid
graph LR
    A ==> B == 帶文字連接線 ==> C
?```

圖片描述

2.4 視圖分組

對于相對龐大的流程圖,可以通過對視圖分組,以區分體系內的不同模塊,以及不同模塊間的關聯關系。

實例 8

視圖分組。

?```mermaid
graph TB
    c1-->a2
    subgraph 第一組
    a1-->a2
    end
    subgraph 第二組
    b1-->b2
    end
    subgraph 第三組
    c1-->c2
    end
?```

圖片描述

其渲染結果如下:

3. 使用場景及實例

流程圖常用于項目的需求分析和設計階段,也較常出現于程序使用手冊中。

實例 9

冒泡排序流程圖。

?```mermaid
graph LR
	執行1[i = 1]
  執行2[j = 0]
  執行3[i ++]
  執行4["a = arr[j], b = arr[j + 1]"]
  執行5[交換 a, b]
  執行6[j ++]
	判斷1["i < n"]
	判斷2["j < n - i"]
  判斷3["a > b"]
  開始 --> 執行1
  執行1 --> 判斷1
  判斷1 --Y--> 執行2
  執行2 --> 判斷2
  判斷2 --Y--> 執行4
  判斷2 --N--> 執行3
  執行3 --> 判斷1
  執行4 --> 判斷3
  判斷3 --N--> 判斷2
  判斷3 --Y--> 執行5
  執行5 --> 執行6
  執行6 --> 判斷2
  判斷1 --N--> 結束
?```

渲染效果如下:

圖片描述

4. 小結

  • Mermaid 為 Markdown 提供了文本轉換為圖形的擴展功能;
  • Mermaid 方式渲染的流程圖包含布局方向、圖形節點和連接線三個基本要素;
  • Mermaid 流程圖支持多種節點形狀、連接線種類,可以使流程圖具有豐富的表現力。