跳至內容

圖表語法

Mermaid 的語法用於建立圖表。你會發現它並不太難,一天就能學會。接下來的章節將深入探討每種圖表類型的語法。

語法、部署和設定共同構成 Mermaid 的整體。

圖表範例可以在Mermaid 線上編輯器中找到,它也是一個很棒的練習區域。

語法結構

大家會注意到,所有的圖表定義都以宣告圖表類型開始,接著是圖表及其內容的定義。此宣告會通知解析器程式碼應該產生哪種類型的圖表。

範例:下面的程式碼適用於實體關係圖,由 erDiagram 宣告指定。接下來是其中表示的不同 Entities 的定義。

開始使用」章節也提供了一些 Mermaid 語法的實際範例。

圖表中斷

注意某些可能會中斷圖表的單字或符號。這些單字或符號很少,通常只會影響特定類型的圖表。下表將持續更新。

圖表中斷器原因解決方案
註解
%%{``}%%類似於指令,會混淆渲染器。在使用 %% 的註解中,請避免使用「{}」。
流程圖
'end'「End」這個字會導致流程圖和循序圖中斷將它們包在引號中,以防止中斷。
節點內的節點Mermaid 對於巢狀圖形會感到困惑將它們包在引號中,以防止中斷

Mermaid 線上編輯器

現在,您已經了解不應在圖表中加入哪些內容,您可以在Mermaid 線上編輯器中嘗試看看。

設定

設定是 Mermaid 的第三部分,在部署和語法之後。它處理 Mermaid 在不同部署中自訂的不同方式。

如果您有興趣修改和自訂 Mermaid 圖表,您可以在這裡找到設定可用的方法和值。它包括主題。本節將介紹設定 Mermaid 圖表行為和外觀的不同方法。以下是最常用的方法,它們都與 Mermaid 的部署方法相關聯。

線上編輯器中的設定區段。

您可以在此處編輯某些值,以變更圖表的行為和外觀。

initialize() 呼叫

當 Mermaid 透過 API 或透過 <script> 標籤呼叫時使用。

指令

允許在圖表呈現之前對其進行有限的重新設定。它可以變更圖表的字型樣式、顏色和其他美觀方面。您可以在定義中加入指令 %%{ }%%。它可以在圖表定義之上或之下完成。

主題操作

使用指令變更主題的應用。Theme 是 Mermaid 設定中的一個值,它決定圖表的色彩配置。

版面配置和外觀

我們已重新調整 Mermaid 呈現圖表的方式,以便啟用選擇版面配置和外觀等新功能。目前,這項功能支援流程圖和狀態圖,並計畫將支援範圍擴展到所有圖表類型。

選取圖表外觀

Mermaid 為您的圖表提供各種樣式或「外觀」,讓您可以自訂視覺外觀以符合您的特定需求或偏好。無論您偏好手繪還是經典樣式,您都可以輕鬆自訂圖表。

可用的外觀

  • 手繪外觀:若要獲得更個人化、更有創意的風格,手繪外觀可為您的圖表帶來類似草圖的品質。這種樣式非常適合非正式場合,或者當您想要為圖表增添一點個人風格時。
  • 經典外觀:如果您偏好傳統的 Mermaid 樣式,經典外觀會保留許多使用者熟悉的原貌。它非常適合跨專案保持一致性,或者當您想要保持熟悉的美感時。

如何選取外觀

您可以透過在 Mermaid 圖表程式碼的中繼資料區段中新增 look 參數來選取外觀。以下為範例

選取版面配置演算法

除了自訂圖表的外觀之外,Mermaid Chart 現在還允許您選擇不同的版面配置演算法,以更好地組織和呈現您的圖表,特別是當處理更複雜的結構時。版面配置演算法決定節點和邊緣在頁面上的排列方式。

支援的版面配置演算法:

  • Dagre(預設):這是 Mermaid 長期以來使用的經典版面配置演算法。它在簡單性和視覺清晰度之間取得了很好的平衡,使其成為大多數圖表的理想選擇。
  • ELK:對於那些需要更複雜的版面配置功能的人來說,特別是當處理大型或複雜圖表時,ELK (Eclipse Layout Kernel) 版面配置提供進階選項。它提供更優化的排列,可能會減少重疊並提高可讀性。這不包含在開箱即用的功能中,而是需要在整合 Mermaid 時新增,以供想要支援 ELK 的網站/應用程式使用。

如何選取版面配置演算法:

您可以直接在 Mermaid 圖表程式碼的中繼資料區段中指定版面配置演算法。以下為範例

在此範例中,layout: elk 行將圖表設定為使用 ELK 版面配置演算法,以及手繪外觀和森林主題。

自訂 ELK 版面配置:

使用 ELK 版面配置時,您可以進一步調整圖表的設定,例如節點的放置方式以及是否應合併平行邊緣

  • 若要合併平行邊緣,請使用 mergeEdges: true | false。
  • 若要設定節點放置,請使用 nodePlacementStrategy 以及下列選項
    • SIMPLE
    • NETWORK_SIMPLEX
    • LINEAR_SEGMENTS
    • BRANDES_KOEPF(預設)

範例設定

---
config:
  layout: elk
  elk:
    mergeEdges: true
    nodePlacementStrategy: LINEAR_SEGMENTS
---
flowchart LR
  A[Start] --> B{Choose Path}
  B -->|Option 1| C[Path 1]
  B -->|Option 2| D[Path 2]

#### Using Dagre Layout with Classic Look:

另一個範例

---
config:
  layout: dagre
  look: classic
  theme: default
---

flowchart LR
A[Start] --> B{Choose Path}
B -->|Option 1| C[Path 1]
B -->|Option 2| D[Path 2]

這些選項讓您可以彈性建立不僅外觀精美,而且還能以最適合您的資料結構和流程的方式排列的圖表。

整合 Mermaid 時,您可以在初始化呼叫中加入外觀和版面配置的設定。這也是您加入載入 elk 的地方。