Hugo BookテーマでのMermaid

Hugo BookテーマでのMermaid

May 18, 2025

Hugo Book テーマでの Mermaid の扱い #

VS Codeで次の Mermaidで作図したER図は表示されるが、Hugo の book では図が描けない。 どうしたら表示できるか。

次の方法でできました。

ショートコードを使います。

Mermaid.js を最新版に差し替える

layouts/shortcodes/mermaid.html

に次を追加。

{{ if not (.Page.Scratch.Get "mermaid") }}
<!-- Load latest Mermaid.js from CDN -->
<script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>
<script>
  mermaid.initialize({ startOnLoad: true });
</script>
{{ .Page.Scratch.Set "mermaid" true }}
{{ end }}

<pre class="mermaid{{ with .Get "class" }} {{ . }}{{ end }}">
  {{- .Inner -}}
</pre>
erDiagram

    main {
        string entry_id PK
        string hanzi_id
        string kazama_location FK
        string tenri_location
        string volume_name
        string radical_name
        string volume_radical_name
        string hanzi_entry
        string original_entry
        string definition
    }

    headword_chars {
        string hanzi_id PK
        string entry_id FK
        string constituent_char
        int character_order
        string kazama_location_id
        string tenri_location_id
        string img_file_name
    }

    notes {
        string definition_seq_id PK
        string entry_id FK
        string kazama_location
        string tenri_location
        string volume_name
        string radical_name
        string volume_radical_index
        string hanzi_entry
    }

    definition_core {
        string definition_seq_id PK
        string original_entry
        string definition_elements
        int definition_type_code
        string definition_type_name
        text remarks
    }

    wakun {
        string wakun_id PK
        string definition_seq_id FK
        string kazama_location FK
        string hanzi_entry
        string wakun_elements
        string wakun_form
        string wakun_standard_hanzi
        string wakun_variant_in_hanzi
        string variant_hanzi_for_wakun
        string japanknowledge_id
    }

    main ||--o{ headword_chars : has
    main ||--o{ notes : has
    notes ||--|| definition_core : "includes"
    notes ||--o{ wakun : has