本篇作為筆記用途,記錄 Mermaid 參考資料

基本資訊

在 Markdown 中使用 Mermaid 的語法,並在程式碼區塊中加入 info,這樣就可以顯示 Mermaid 的版本資訊:

info
info

測試

---
title: 測試標題
subtitle: 測試副標題
description: |
  測試描述
  測試描述
---
flowchart TD
    Start --> Stop

Flowchart

官方教學文件:https://mermaid.js.org/syntax/flowchart.html

基本語法

---
title: 第一個 flowchat
---
flowchart

流程圖方向

指定你的流程圖要往哪個方向走,預設是從上到下。

  • TB:由上到下(預設)
  • BT:由下到上
  • RL:由右到左
  • LR:由左到右
flowchart RL
    A --> B

定義節點

上面的例子有兩個長方形 A 和 B,稱之為節點,可使用不同的標記產生出不同形狀的節點。

直接打上文字 (id) 就可以創造出節點,再用方括號等表示語法改變節點形狀和顯式的文字。也可以使用進階的標註方式來改變節點的形狀,例如下面第二個範例,詳細請參考官方文件Expanded Node Shapes in Mermaid Flowcharts

flowchart
    id
    id1[方形]
    id2(圓角方形)
    id3([體育場形])
    id4[[子例程]]
    id5[(圓柱)]
    id6((圓形))
flowchart RL
    A@{ shape: rect, label: "This is a process" }
    B@{ shape: manual-input, label: "User Input" }
    C@{ shape: docs, label: "Multiple Documents" }
    D@{ shape: procs, label: "Process Automation" }
    E@{ shape: paper-tape, label: "Paper Records" }

透過進階語法,可以產生出沒有任何框線的節點,這樣就可以讓你在流程圖中使用不同的顏色來強調某些節點。

flowchart RL
    A@{ shape: text, label: "This is a text block" }

串聯節點

有了節點之後可以用直線、箭頭等符號將流程表示出來,這些符號可以用來表示不同的關係。

flowchart
    A --- B
    C -.- D
    E === F
    G --> H
    I -.-> J
    K ==> L

線上也可以加入敘述文字

flowchart 
    A --- |文字| B
    C -.- |文字| D
    E === |文字| F
    G --> |文字| H
    I -.-> |文字| J
    K ==> |文字| L

其他技巧

兩個百分號代表註解,這不會被顯示出來

flowchart LR
    A --- B
    %% 註解

節點增加連結

flowchart LR
    A --- B
    click A "https://mermaid.js.org/"

套用主題:有 default, forest, neutral, dark, base 五種主題可選用

%%{init: {'theme': 'forest'} }%%
flowchart LR
  A --- B

自訂顏色

flowchart LR
  id1---id2
  style id1 fill:#d4bfb2, stroke:#877a71, stroke-width:2px, color:#ffffff
  style id2 fill:#e9b41b, stroke:#4f3d09, stroke-width:3px, stroke-dasharray:5 4

在沒有支援的網頁使用 Mermaid

如果是要在一般的網頁上面呈現 Mermaid,可以使用此技巧,將下面的程式碼放在 HTML 或是 Markdown 中,如此一來,當文件被呈現時,會自動載入 Mermaid 的 js 函示庫,這樣就可以在沒有支援的網頁上面呈現 Mermaid 了。

<script type="module">
    import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
    mermaid.initialize({
        startOnLoad:true,
        theme: 'neutral',
        flowchart:{
            useMaxWidth:false,
            htmlLabels:true
        }
    });
    await mermaid.run({querySelector:'code.language-mermaid'});
</script>

參考資料:


Poy Chang

Trial and Error