图表
GoAT 图表
Hugo原生支持GoAT,这种图表样式比较简单,在文档中较难编写。
- 不同的样式效果
// 这是一些示例代码
      .               .                .               .--- 1          .-- 1     / 1
     / \              |                |           .---+            .-+         +
    /   \         .---+---.         .--+--.        |   '--- 2      |   '-- 2   / \ 2
   +     +        |       |        |       |    ---+            ---+          +
  / \   / \     .-+-.   .-+-.     .+.     .+.      |   .--- 3      |   .-- 3   \ / 3
 /   \ /   \    |   |   |   |    |   |   |   |     '---+            '-+         +
 1   2 3   4    1   2   3   4    1   2   3   4         '--- 4          '-- 4     \ 4
这是生成的图表
Mermaid 图表
Hugo目前没有提供 渲染 Mermaid 的模板。
可以通过 Hugo 提供的 Markdown Render Hooks 自定义渲染 mermaid 标识的代码块
- 创建一个匹配 md 文件中以 mermaid 标识的代码块内容的布局模版
 文件路径: layouts/_default/_markup/render-codeblock-mermaid.html
1<!-- render-codeblock-mermaid.html -->
2<!-- md 文件中的 ```mermaid ``` 的代码块内容将应用该布局文件 -->
3<div class="mermaid">
4    {{- .Inner | safeHTML }}
5</div>
6{{ .Page.Store.Set "hasMermaid" true }}
- 在 Content View 布局模版底部添加渲染 mermaid 功能,需要借助 mermaid js 来渲染 mermaid 代码块的内容
 1<!-- layouts/_default/single.html -->
 2{{define "main"}}
 3    <!-- 其他代码 -->
 4{{ if .Page.Store.Get "hasMermaid" }}
 5  <script type="module">
 6    import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';
 7    mermaid.initialize({ 
 8      // 页面加载时渲染 mermaid 图表
 9      startOnLoad: true,
10      // 配置主题
11      theme: 'base',
12      // 配置日志等级
13      logLevel: 3,
14    });
15  </script>
16{{ end }}
17{{end}}
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!
    prevail! John-->>Alice: Great! John->>Bob: How about you? Bob-->>John: Jolly good!