diff --git a/assets/css/_common/components/third-party/index.scss b/assets/css/_common/components/third-party/index.scss
index 51c75b2..c254fdb 100644
--- a/assets/css/_common/components/third-party/index.scss
+++ b/assets/css/_common/components/third-party/index.scss
@@ -6,6 +6,7 @@
@import 'gitter';
@import 'livere';
@import 'waline';
+@import 'mermaid';
.use-motion .animated {
// Fix issue #48 #55
diff --git a/assets/css/_common/components/third-party/mermaid.scss b/assets/css/_common/components/third-party/mermaid.scss
new file mode 100644
index 0000000..1332676
--- /dev/null
+++ b/assets/css/_common/components/third-party/mermaid.scss
@@ -0,0 +1,3 @@
+.mermaid {
+ background: var(--highlight-foreground);
+}
\ No newline at end of file
diff --git a/data/resources.yaml b/data/resources.yaml
index 534a22d..e05d100 100644
--- a/data/resources.yaml
+++ b/data/resources.yaml
@@ -84,6 +84,7 @@ instant:
file: dist/instantsearch.production.min.js
plugins:
+ # 数学公式渲染
mathjax:
js:
- name: mathjax
@@ -102,4 +103,11 @@ plugins:
- name: katex
version: 0.16.0
file: dist/katex.min.css
+ # 画图渲染
+ mermaid:
+ js:
+ - name: mermaid
+ version: 9.1.7
+ file: dist/mermaid.min.js
+
diff --git a/exampleSite/content/post/mermaid-charts.md b/exampleSite/content/post/mermaid-charts.md
new file mode 100644
index 0000000..078ec87
--- /dev/null
+++ b/exampleSite/content/post/mermaid-charts.md
@@ -0,0 +1,189 @@
+---
+title: "Mermaid支持流程图"
+description: "mermaid-flow-chart"
+keywords: "mermaid,flow,chart"
+
+date: 2022-09-18T20:58:13+08:00
+lastmod: 2022-09-18T20:58:13+08:00
+
+categories:
+ - 示例
+tags:
+ - 流程图
+ - 时序图
+
+url: "post/mermaid-charts.html"
+mermaid: true
+toc: true
+---
+
+本主题已支持 `Mermaid` 实现以纯文本的方式绘制流程图、序列图、甘特图、状态图、关系图行等等,随着 `Mermaid` 也在逐步发展,后续还会有各种各样的图被引入进来,更多的类型及使用方式可关注其官方网站:[https://mermaid-js.github.io/](https://mermaid-js.github.io/)。
+
+
+
+
+# 使用说明
+
+{{< note info >}}
+
+- 通过 `hugo new` 命令创建一篇新的文章
+- 在文章头部配置 `mermaid: true`
+- 使用短代码书写各种类型的图,自带2个参数: align(对齐) 和 bc(背景色),可参考如下使用示例
+
+{{< /note >}}
+
+# 流程图
+
+```shell
+{{* mermaid align="left" */>}}
+graph TD;
+ A-->B;
+ A-->C;
+ B-->D;
+ C-->D;
+{{* /mermaid */>}}
+```
+
+{{< mermaid align="left" >}}
+graph TD;
+ A-->B;
+ A-->C;
+ B-->D;
+ C-->D;
+{{< /mermaid >}}
+
+```shell
+{{* mermaid bc="#eee" */>}}
+sequenceDiagram
+ participant Alice
+ participant Bob
+ Alice->>John: Hello John, how are you?
+ loop Healthcheck
+ John->>John: Fight against hypochondria
+ end
+ Note right of John: Rational thoughts
prevail!
+ John-->>Alice: Great!
+ John->>Bob: How about you?
+ Bob-->>John: Jolly good!
+{{* /mermaid */>}}
+```
+
+{{< mermaid bc="#eee" >}}
+sequenceDiagram
+ participant Alice
+ participant Bob
+ Alice->>John: Hello John, how are you?
+ loop Healthcheck
+ John->>John: Fight against hypochondria
+ end
+ Note right of John: Rational thoughts
prevail!
+ John-->>Alice: Great!
+ John->>Bob: How about you?
+ Bob-->>John: Jolly good!
+{{< /mermaid >}}
+
+# 类图
+```mermaid
+{{* mermaid */>}}
+classDiagram
+Class01 <|-- AveryLongClass : Cool
+Class03 *-- Class04
+Class05 o-- Class06
+Class07 .. Class08
+Class09 --> C2 : Where am i?
+Class09 --* C3
+Class09 --|> Class07
+Class07 : equals()
+Class07 : Object[] elementData
+Class01 : size()
+Class01 : int chimp
+Class01 : int gorilla
+Class08 <--> C2: Cool label
+{{* /mermaid */>}}
+```
+{{< mermaid >}}
+classDiagram
+Class01 <|-- AveryLongClass : Cool
+Class03 *-- Class04
+Class05 o-- Class06
+Class07 .. Class08
+Class09 --> C2 : Where am i?
+Class09 --* C3
+Class09 --|> Class07
+Class07 : equals()
+Class07 : Object[] elementData
+Class01 : size()
+Class01 : int chimp
+Class01 : int gorilla
+Class08 <--> C2: Cool label
+{{< /mermaid >}}
+
+# 甘特图
+```mermaid
+{{* mermaid */>}}
+gantt
+dateFormat YYYY-MM-DD
+title Adding GANTT diagram to mermaid
+excludes weekdays 2014-01-10
+
+section A section
+Completed task :done, des1, 2014-01-06,2014-01-08
+Active task :active, des2, 2014-01-09, 3d
+Future task : des3, after des2, 5d
+Future task2 : des4, after des3, 5d
+{{* /mermaid */>}}
+```
+{{< mermaid >}}
+gantt
+dateFormat YYYY-MM-DD
+title Adding GANTT diagram to mermaid
+excludes weekdays 2014-01-10
+
+section A section
+Completed task :done, des1, 2014-01-06,2014-01-08
+Active task :active, des2, 2014-01-09, 3d
+Future task : des3, after des2, 5d
+Future task2 : des4, after des3, 5d
+{{< /mermaid >}}
+
+# 实体关系图
+```mermaid
+{{* mermaid */>}}
+erDiagram
+ CUSTOMER ||--o{ ORDER : places
+ ORDER ||--|{ LINE-ITEM : contains
+ CUSTOMER }|..|{ DELIVERY-ADDRESS : uses
+{{* /mermaid */>}}
+```
+{{< mermaid >}}
+erDiagram
+ CUSTOMER ||--o{ ORDER : places
+ ORDER ||--|{ LINE-ITEM : contains
+ CUSTOMER }|..|{ DELIVERY-ADDRESS : uses
+{{< /mermaid >}}
+
+# 用户旅程
+```mermaid
+{{* mermaid */>}}
+journey
+ title My working day
+ section Go to work
+ Make tea: 5: Me
+ Go upstairs: 3: Me
+ Do work: 1: Me, Cat
+ section Go home
+ Go downstairs: 5: Me
+ Sit down: 5: Me
+{{* /mermaid */>}}
+```
+{{< mermaid >}}
+journey
+ title My working day
+ section Go to work
+ Make tea: 5: Me
+ Go upstairs: 3: Me
+ Do work: 1: Me, Cat
+ section Go home
+ Go downstairs: 5: Me
+ Sit down: 5: Me
+{{< /mermaid >}}
diff --git a/layouts/partials/_thirdparty/others/math.html b/layouts/partials/_thirdparty/others/math.html
new file mode 100644
index 0000000..e1eb956
--- /dev/null
+++ b/layouts/partials/_thirdparty/others/math.html
@@ -0,0 +1,28 @@
+
+{{ $math := .Params.math | default .Site.Params.math }}
+{{- partial "scripts/plugins.html" (dict "vendor" (.Scratch.Get "vendor") "router" (.Scratch.Get "router") "res" .Site.Data.resources.plugins "index" $math) }}
+{{ if eq $math "katex" }}
+
+{{ end }}
+{{ if eq $math "mathjax" }}
+
+{{ end }}
\ No newline at end of file
diff --git a/layouts/partials/_thirdparty/others/mermaid.html b/layouts/partials/_thirdparty/others/mermaid.html
new file mode 100644
index 0000000..bd61ca9
--- /dev/null
+++ b/layouts/partials/_thirdparty/others/mermaid.html
@@ -0,0 +1,15 @@
+{{- partial "scripts/plugins.html" (dict "vendor" (.Scratch.Get "vendor") "router" (.Scratch.Get "router") "res" .Site.Data.resources.plugins "index" "mermaid") }}
+
+
+
diff --git a/layouts/partials/init.html b/layouts/partials/init.html
index 5aac5eb..30c88bf 100644
--- a/layouts/partials/init.html
+++ b/layouts/partials/init.html
@@ -20,6 +20,7 @@
{{ $vendor := .Site.Params.vendors.plugins }}
{{ $router := index .Site.Data.resources.vendors $vendor }}
+{{ $globalVars.Set "vendor" $vendor }}
{{ $globalVars.Set "router" $router }}
{{ $config := dict
diff --git a/layouts/partials/scripts.html b/layouts/partials/scripts.html
index 269db66..e75e74a 100644
--- a/layouts/partials/scripts.html
+++ b/layouts/partials/scripts.html
@@ -1,39 +1,15 @@
{{ partialCached "scripts/global.html" . }}
-{{- $vendor := .Site.Params.vendors.plugins }}
-{{- $router := .Scratch.Get "router" }}
+{{ if or .Params.math .Site.Params.math }}
+ {{ partialCached "_thirdparty/others/math.html" . }}
+{{ end }}
-
-{{ $math := .Params.math | default .Site.Params.math }}
-{{ if $math }}
- {{- partialCached "scripts/plugins.html" (dict "vendor" $vendor "router" $router "res" .Site.Data.resources.plugins "index" $math) }}
- {{ if eq $math "katex" }}
-
- {{ end }}
- {{ if eq $math "mathjax" }}
-
- {{ end }}
+{{ if .Params.mermaid }}
+ {{ partialCached "_thirdparty/others/mermaid.html" . }}
{{ end }}
+
+
diff --git a/layouts/shortcodes/mermaid.html b/layouts/shortcodes/mermaid.html
new file mode 100644
index 0000000..d6aa690
--- /dev/null
+++ b/layouts/shortcodes/mermaid.html
@@ -0,0 +1,3 @@
+