<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>圖表 on Tarragon</title><link>https://tarrragon.github.io/blog/tags/%E5%9C%96%E8%A1%A8/</link><description>Recent content in 圖表 on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Wed, 08 Oct 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/%E5%9C%96%E8%A1%A8/index.xml" rel="self" type="application/rss+xml"/><item><title>Hugo 部落格支援 Mermaid 流程圖完整實現指南</title><link>https://tarrragon.github.io/blog/posts/hugo-%E9%83%A8%E8%90%BD%E6%A0%BC%E6%94%AF%E6%8F%B4-mermaid-%E6%B5%81%E7%A8%8B%E5%9C%96%E5%AE%8C%E6%95%B4%E5%AF%A6%E7%8F%BE%E6%8C%87%E5%8D%97/</link><pubDate>Wed, 08 Oct 2025 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/posts/hugo-%E9%83%A8%E8%90%BD%E6%A0%BC%E6%94%AF%E6%8F%B4-mermaid-%E6%B5%81%E7%A8%8B%E5%9C%96%E5%AE%8C%E6%95%B4%E5%AF%A6%E7%8F%BE%E6%8C%87%E5%8D%97/</guid><description>&lt;h2 id="概述">概述&lt;/h2>
&lt;p>本文詳細說明如何在 Hugo 部落格中實現 Mermaid 流程圖支援，包含：&lt;/p>
&lt;ul>
&lt;li>Mermaid.js 整合與初始化&lt;/li>
&lt;li>Markdown 語法轉換處理&lt;/li>
&lt;li>自定義樣式設計&lt;/li>
&lt;li>響應式圖表適配&lt;/li>
&lt;li>多種圖表類型支援&lt;/li>
&lt;/ul>
&lt;h2 id="1-問題分析">1. 問題分析&lt;/h2>
&lt;h3 id="11-hugo-markdown-渲染問題">1.1 Hugo Markdown 渲染問題&lt;/h3>
&lt;p>Hugo 的 Markdown 渲染器會將 Mermaid 程式碼區塊包裝在 &lt;code>&amp;lt;pre&amp;gt;&amp;lt;code&amp;gt;&lt;/code> 標籤中：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">pre&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;&lt;/span>&lt;span class="nt">code&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;language-mermaid&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">graph TD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl"> A[開始] --&amp;gt; B{判斷條件}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl"> B --&amp;gt;|是| C[執行動作]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">5&lt;/span>&lt;span class="cl"> B --&amp;gt;|否| D[結束]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">6&lt;/span>&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">code&lt;/span>&lt;span class="p">&amp;gt;&amp;lt;/&lt;/span>&lt;span class="nt">pre&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>但 Mermaid.js 需要的是 &lt;code>&amp;lt;div class=&amp;quot;mermaid&amp;quot;&amp;gt;&lt;/code> 標籤：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-html" data-lang="html">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="p">&amp;lt;&lt;/span>&lt;span class="nt">div&lt;/span> &lt;span class="na">class&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s">&amp;#34;mermaid&amp;#34;&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">graph TD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl"> A[開始] --&amp;gt; B{判斷條件}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl"> B --&amp;gt;|是| C[執行動作]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">5&lt;/span>&lt;span class="cl"> B --&amp;gt;|否| D[結束]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">6&lt;/span>&lt;span class="cl">&lt;span class="p">&amp;lt;/&lt;/span>&lt;span class="nt">div&lt;/span>&lt;span class="p">&amp;gt;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="12-解決方案">1.2 解決方案&lt;/h3>
&lt;p>使用 JavaScript 動態轉換 Markdown 渲染的程式碼區塊為 Mermaid 所需的格式。&lt;/p>
&lt;h2 id="2-實現步驟">2. 實現步驟&lt;/h2>
&lt;h3 id="21-引入-mermaidjs">2.1 引入 Mermaid.js&lt;/h3>
&lt;p>在 &lt;code>layouts/partials/custom_head.html&lt;/code> 中添加 Mermaid.js：&lt;/p>


&lt;details>
 &lt;summary>點擊查看引入程式碼&lt;/summary>
 

```html
&lt;!-- Mermaid.js 支援 -->
&lt;script src="https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.min.js">&lt;/script>
```


&lt;/details>
&lt;h3 id="22-語法轉換腳本">2.2 語法轉換腳本&lt;/h3>
&lt;p>添加 JavaScript 來轉換 Markdown 渲染的程式碼區塊：&lt;/p>


&lt;details>
 &lt;summary>點擊查看語法轉換 JavaScript 程式碼&lt;/summary>
 

```html
&lt;!-- Mermaid 初始化與樣式 -->
&lt;script>
 document.addEventListener('DOMContentLoaded', function() {
 // 轉換 mermaid 程式碼區塊
 const mermaidCodeBlocks = document.querySelectorAll('pre code.language-mermaid');
 mermaidCodeBlocks.forEach(function(block) {
 const pre = block.parentElement;
 const div = document.createElement('div');
 div.className = 'mermaid';
 div.textContent = block.textContent;
 pre.parentNode.replaceChild(div, pre);
 });
 
 // 初始化 Mermaid
 mermaid.initialize({
 startOnLoad: true,
 theme: 'default',
 securityLevel: 'loose',
 fontFamily: 'Arial, sans-serif',
 themeVariables: {
 primaryColor: '#2d3748',
 primaryTextColor: '#2d3748',
 primaryBorderColor: '#4a5568',
 lineColor: '#4a5568',
 secondaryColor: '#e2e8f0',
 tertiaryColor: '#f7fafc'
 }
 });
 });
&lt;/script>
```


&lt;/details>
&lt;h3 id="23-自定義樣式">2.3 自定義樣式&lt;/h3>
&lt;p>添加 Mermaid 圖表的 CSS 樣式：&lt;/p>


&lt;details>
 &lt;summary>點擊查看 CSS 樣式程式碼&lt;/summary>
 

```html
&lt;style>
 /* Mermaid 圖表樣式 */
 .mermaid {
 text-align: center;
 margin: 20px 0;
 }
 
 .mermaid svg {
 max-width: 100%;
 height: auto;
 }
 
 /* 響應式設計 */
 @media (max-width: 768px) {
 .mermaid {
 font-size: 12px;
 }
 }
&lt;/style>
```


&lt;/details>
&lt;h2 id="3-完整實現程式碼">3. 完整實現程式碼&lt;/h2>
&lt;h3 id="31-custom_headhtml-完整程式碼">3.1 custom_head.html 完整程式碼&lt;/h3>


&lt;details>
 &lt;summary>點擊查看完整實現程式碼&lt;/summary>
 

```html
&lt;!-- Mermaid.js 支援 -->
&lt;script src="https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.min.js">&lt;/script>

&lt;!-- Mermaid 初始化與樣式 -->
&lt;script>
 document.addEventListener('DOMContentLoaded', function() {
 // 轉換 mermaid 程式碼區塊
 const mermaidCodeBlocks = document.querySelectorAll('pre code.language-mermaid');
 mermaidCodeBlocks.forEach(function(block) {
 const pre = block.parentElement;
 const div = document.createElement('div');
 div.className = 'mermaid';
 div.textContent = block.textContent;
 pre.parentNode.replaceChild(div, pre);
 });
 
 // 初始化 Mermaid
 mermaid.initialize({
 startOnLoad: true,
 theme: 'default',
 securityLevel: 'loose',
 fontFamily: 'Arial, sans-serif',
 themeVariables: {
 primaryColor: '#2d3748',
 primaryTextColor: '#2d3748',
 primaryBorderColor: '#4a5568',
 lineColor: '#4a5568',
 secondaryColor: '#e2e8f0',
 tertiaryColor: '#f7fafc'
 }
 });
 });
&lt;/script>

&lt;style>
 /* Mermaid 圖表樣式 */
 .mermaid {
 text-align: center;
 margin: 20px 0;
 }
 
 .mermaid svg {
 max-width: 100%;
 height: auto;
 }
 
 /* 響應式設計 */
 @media (max-width: 768px) {
 .mermaid {
 font-size: 12px;
 }
 }
&lt;/style>
```


&lt;/details>
&lt;h2 id="4-使用方式">4. 使用方式&lt;/h2>
&lt;h3 id="41-基本語法">4.1 基本語法&lt;/h3>
&lt;p>在 Markdown 文件中使用 Mermaid 語法：&lt;/p></description><content:encoded><![CDATA[<h2 id="概述">概述</h2>
<p>本文詳細說明如何在 Hugo 部落格中實現 Mermaid 流程圖支援，包含：</p>
<ul>
<li>Mermaid.js 整合與初始化</li>
<li>Markdown 語法轉換處理</li>
<li>自定義樣式設計</li>
<li>響應式圖表適配</li>
<li>多種圖表類型支援</li>
</ul>
<h2 id="1-問題分析">1. 問題分析</h2>
<h3 id="11-hugo-markdown-渲染問題">1.1 Hugo Markdown 渲染問題</h3>
<p>Hugo 的 Markdown 渲染器會將 Mermaid 程式碼區塊包裝在 <code>&lt;pre&gt;&lt;code&gt;</code> 標籤中：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="ln">1</span><span class="cl"><span class="p">&lt;</span><span class="nt">pre</span><span class="p">&gt;&lt;</span><span class="nt">code</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;language-mermaid&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">graph TD
</span></span><span class="line"><span class="ln">3</span><span class="cl">    A[開始] --&gt; B{判斷條件}
</span></span><span class="line"><span class="ln">4</span><span class="cl">    B --&gt;|是| C[執行動作]
</span></span><span class="line"><span class="ln">5</span><span class="cl">    B --&gt;|否| D[結束]
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="p">&lt;/</span><span class="nt">code</span><span class="p">&gt;&lt;/</span><span class="nt">pre</span><span class="p">&gt;</span></span></span></code></pre></div><p>但 Mermaid.js 需要的是 <code>&lt;div class=&quot;mermaid&quot;&gt;</code> 標籤：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="ln">1</span><span class="cl"><span class="p">&lt;</span><span class="nt">div</span> <span class="na">class</span><span class="o">=</span><span class="s">&#34;mermaid&#34;</span><span class="p">&gt;</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">graph TD
</span></span><span class="line"><span class="ln">3</span><span class="cl">    A[開始] --&gt; B{判斷條件}
</span></span><span class="line"><span class="ln">4</span><span class="cl">    B --&gt;|是| C[執行動作]
</span></span><span class="line"><span class="ln">5</span><span class="cl">    B --&gt;|否| D[結束]
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="p">&lt;/</span><span class="nt">div</span><span class="p">&gt;</span></span></span></code></pre></div><h3 id="12-解決方案">1.2 解決方案</h3>
<p>使用 JavaScript 動態轉換 Markdown 渲染的程式碼區塊為 Mermaid 所需的格式。</p>
<h2 id="2-實現步驟">2. 實現步驟</h2>
<h3 id="21-引入-mermaidjs">2.1 引入 Mermaid.js</h3>
<p>在 <code>layouts/partials/custom_head.html</code> 中添加 Mermaid.js：</p>


<details>
  <summary>點擊查看引入程式碼</summary>
  

```html
<!-- Mermaid.js 支援 -->
<script src="https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.min.js"></script>
```


</details>
<h3 id="22-語法轉換腳本">2.2 語法轉換腳本</h3>
<p>添加 JavaScript 來轉換 Markdown 渲染的程式碼區塊：</p>


<details>
  <summary>點擊查看語法轉換 JavaScript 程式碼</summary>
  

```html
<!-- Mermaid 初始化與樣式 -->
<script>
  document.addEventListener('DOMContentLoaded', function() {
    // 轉換 mermaid 程式碼區塊
    const mermaidCodeBlocks = document.querySelectorAll('pre code.language-mermaid');
    mermaidCodeBlocks.forEach(function(block) {
      const pre = block.parentElement;
      const div = document.createElement('div');
      div.className = 'mermaid';
      div.textContent = block.textContent;
      pre.parentNode.replaceChild(div, pre);
    });
    
    // 初始化 Mermaid
    mermaid.initialize({
      startOnLoad: true,
      theme: 'default',
      securityLevel: 'loose',
      fontFamily: 'Arial, sans-serif',
      themeVariables: {
        primaryColor: '#2d3748',
        primaryTextColor: '#2d3748',
        primaryBorderColor: '#4a5568',
        lineColor: '#4a5568',
        secondaryColor: '#e2e8f0',
        tertiaryColor: '#f7fafc'
      }
    });
  });
</script>
```


</details>
<h3 id="23-自定義樣式">2.3 自定義樣式</h3>
<p>添加 Mermaid 圖表的 CSS 樣式：</p>


<details>
  <summary>點擊查看 CSS 樣式程式碼</summary>
  

```html
<style>
  /* Mermaid 圖表樣式 */
  .mermaid {
    text-align: center;
    margin: 20px 0;
  }
  
  .mermaid svg {
    max-width: 100%;
    height: auto;
  }
  
  /* 響應式設計 */
  @media (max-width: 768px) {
    .mermaid {
      font-size: 12px;
    }
  }
</style>
```


</details>
<h2 id="3-完整實現程式碼">3. 完整實現程式碼</h2>
<h3 id="31-custom_headhtml-完整程式碼">3.1 custom_head.html 完整程式碼</h3>


<details>
  <summary>點擊查看完整實現程式碼</summary>
  

```html
<!-- Mermaid.js 支援 -->
<script src="https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.min.js"></script>

<!-- Mermaid 初始化與樣式 -->
<script>
  document.addEventListener('DOMContentLoaded', function() {
    // 轉換 mermaid 程式碼區塊
    const mermaidCodeBlocks = document.querySelectorAll('pre code.language-mermaid');
    mermaidCodeBlocks.forEach(function(block) {
      const pre = block.parentElement;
      const div = document.createElement('div');
      div.className = 'mermaid';
      div.textContent = block.textContent;
      pre.parentNode.replaceChild(div, pre);
    });
    
    // 初始化 Mermaid
    mermaid.initialize({
      startOnLoad: true,
      theme: 'default',
      securityLevel: 'loose',
      fontFamily: 'Arial, sans-serif',
      themeVariables: {
        primaryColor: '#2d3748',
        primaryTextColor: '#2d3748',
        primaryBorderColor: '#4a5568',
        lineColor: '#4a5568',
        secondaryColor: '#e2e8f0',
        tertiaryColor: '#f7fafc'
      }
    });
  });
</script>

<style>
  /* Mermaid 圖表樣式 */
  .mermaid {
    text-align: center;
    margin: 20px 0;
  }
  
  .mermaid svg {
    max-width: 100%;
    height: auto;
  }
  
  /* 響應式設計 */
  @media (max-width: 768px) {
    .mermaid {
      font-size: 12px;
    }
  }
</style>
```


</details>
<h2 id="4-使用方式">4. 使用方式</h2>
<h3 id="41-基本語法">4.1 基本語法</h3>
<p>在 Markdown 文件中使用 Mermaid 語法：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl"><span class="s">```mermaid
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="s"></span>graph TD
</span></span><span class="line"><span class="ln">3</span><span class="cl">    A[開始] --&gt; B{判斷條件}
</span></span><span class="line"><span class="ln">4</span><span class="cl">    B --&gt;|是| C[執行動作]
</span></span><span class="line"><span class="ln">5</span><span class="cl">    B --&gt;|否| D[結束]
</span></span><span class="line"><span class="ln">6</span><span class="cl">    C --&gt; D
</span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="s">```</span></span></span></code></pre></div><h3 id="42-支援的圖表類型">4.2 支援的圖表類型</h3>
<h4 id="421-流程圖-flowchart">4.2.1 流程圖 (Flowchart)</h4>





<pre tabindex="0"><code class="language-mermaid" data-lang="mermaid">graph TD
    A[開始] --&gt; B{判斷條件}
    B --&gt;|是| C[執行動作]
    B --&gt;|否| D[結束]
    C --&gt; D</code></pre><h4 id="422-時序圖-sequence-diagram">4.2.2 時序圖 (Sequence Diagram)</h4>





<pre tabindex="0"><code class="language-mermaid" data-lang="mermaid">sequenceDiagram
    participant A as 用戶
    participant B as 系統
    participant C as 資料庫
    
    A-&gt;&gt;B: 發送請求
    B-&gt;&gt;C: 查詢資料
    C--&gt;&gt;B: 返回結果
    B--&gt;&gt;A: 顯示結果</code></pre><h4 id="423-甘特圖-gantt-chart">4.2.3 甘特圖 (Gantt Chart)</h4>





<pre tabindex="0"><code class="language-mermaid" data-lang="mermaid">gantt
    title 專案時程規劃
    dateFormat  YYYY-MM-DD
    section 第一階段
    需求分析           :a1, 2024-01-01, 30d
    系統設計           :a2, after a1, 20d
    section 第二階段
    程式開發           :a3, after a2, 40d
    測試驗證           :a4, after a3, 15d</code></pre><h4 id="424-類別圖-class-diagram">4.2.4 類別圖 (Class Diagram)</h4>





<pre tabindex="0"><code class="language-mermaid" data-lang="mermaid">classDiagram
    class User {
        +String name
        +String email
        +login()
        +logout()
    }
    
    class Admin {
        +String role
        +manageUsers()
    }
    
    User &lt;|-- Admin</code></pre><h4 id="425-狀態圖-state-diagram">4.2.5 狀態圖 (State Diagram)</h4>





<pre tabindex="0"><code class="language-mermaid" data-lang="mermaid">stateDiagram-v2
    [*] --&gt; 待機
    待機 --&gt; 執行中 : 開始任務
    執行中 --&gt; 完成 : 任務完成
    執行中 --&gt; 錯誤 : 發生錯誤
    錯誤 --&gt; 待機 : 重新開始
    完成 --&gt; [*]</code></pre><h2 id="5-自定義配置">5. 自定義配置</h2>
<h3 id="51-主題設定">5.1 主題設定</h3>
<p>Mermaid 支援多種主題，可以在初始化時設定：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="ln">1</span><span class="cl"><span class="nx">mermaid</span><span class="p">.</span><span class="nx">initialize</span><span class="p">({</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">  <span class="nx">theme</span><span class="o">:</span> <span class="s1">&#39;default&#39;</span><span class="p">,</span> <span class="c1">// 可選: default, dark, forest, neutral
</span></span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="c1"></span>  <span class="c1">// ... 其他設定
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="c1"></span><span class="p">});</span></span></span></code></pre></div><h3 id="52-自定義顏色">5.2 自定義顏色</h3>
<p>通過 <code>themeVariables</code> 自定義顏色：</p>


<details>
  <summary>點擊查看自定義顏色程式碼</summary>
  

```javascript
mermaid.initialize({
  themeVariables: {
    primaryColor: '#2d3748',        // 主要顏色
    primaryTextColor: '#2d3748',    // 主要文字顏色
    primaryBorderColor: '#4a5568',  // 主要邊框顏色
    lineColor: '#4a5568',           // 線條顏色
    secondaryColor: '#e2e8f0',      // 次要顏色
    tertiaryColor: '#f7fafc'        // 第三級顏色
  }
});
```


</details>
<h3 id="53-字體設定">5.3 字體設定</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="ln">1</span><span class="cl"><span class="nx">mermaid</span><span class="p">.</span><span class="nx">initialize</span><span class="p">({</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">  <span class="nx">fontFamily</span><span class="o">:</span> <span class="s1">&#39;Arial, sans-serif&#39;</span><span class="p">,</span> <span class="c1">// 字體家族
</span></span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="c1"></span>  <span class="c1">// ... 其他設定
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="c1"></span><span class="p">});</span></span></span></code></pre></div><h2 id="6-響應式設計">6. 響應式設計</h2>
<h3 id="61-桌面版樣式">6.1 桌面版樣式</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-css" data-lang="css"><span class="line"><span class="ln">1</span><span class="cl"><span class="p">.</span><span class="nc">mermaid</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">  <span class="k">text-align</span><span class="p">:</span> <span class="kc">center</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">  <span class="k">margin</span><span class="p">:</span> <span class="mi">20</span><span class="kt">px</span> <span class="mi">0</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="p">}</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">
</span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="p">.</span><span class="nc">mermaid</span> <span class="nt">svg</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">7</span><span class="cl">  <span class="k">max-width</span><span class="p">:</span> <span class="mi">100</span><span class="kt">%</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">8</span><span class="cl">  <span class="k">height</span><span class="p">:</span> <span class="kc">auto</span><span class="p">;</span>
</span></span><span class="line"><span class="ln">9</span><span class="cl"><span class="p">}</span></span></span></code></pre></div><h3 id="62-手機版適配">6.2 手機版適配</h3>


<details>
  <summary>點擊查看手機版適配 CSS</summary>
  

```css
@media (max-width: 768px) {
  .mermaid {
    font-size: 12px;
    margin: 15px 0;
  }
}
```


</details>
<h2 id="7-進階功能">7. 進階功能</h2>
<h3 id="71-互動式圖表">7.1 互動式圖表</h3>
<p>Mermaid 支援點擊事件和互動功能：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="ln">1</span><span class="cl"><span class="nx">mermaid</span><span class="p">.</span><span class="nx">initialize</span><span class="p">({</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">  <span class="nx">startOnLoad</span><span class="o">:</span> <span class="kc">true</span><span class="p">,</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">  <span class="nx">securityLevel</span><span class="o">:</span> <span class="s1">&#39;loose&#39;</span><span class="p">,</span> <span class="c1">// 允許互動功能
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="c1"></span>  <span class="c1">// ... 其他設定
</span></span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="c1"></span><span class="p">});</span></span></span></code></pre></div><h3 id="72-自定義樣式">7.2 自定義樣式</h3>
<p>可以通過 CSS 進一步自定義圖表外觀：</p>


<details>
  <summary>點擊查看進階自定義樣式 CSS</summary>
  

```css
.mermaid .node rect {
  fill: #f9f9f9;
  stroke: #333;
  stroke-width: 2px;
}

.mermaid .edgePath .path {
  stroke: #333;
  stroke-width: 2px;
}

.mermaid .edgeLabel {
  background-color: #e8e8e8;
}
```


</details>
<h2 id="8-常見問題與解決方案">8. 常見問題與解決方案</h2>
<h3 id="81-圖表不顯示">8.1 圖表不顯示</h3>
<p><strong>問題</strong>：Mermaid 圖表沒有渲染出來</p>
<p><strong>解決方案</strong>：</p>
<ol>
<li>檢查 JavaScript 是否正確載入</li>
<li>確認 Markdown 語法是否正確</li>
<li>檢查瀏覽器控制台是否有錯誤訊息</li>
</ol>
<h3 id="82-樣式問題">8.2 樣式問題</h3>
<p><strong>問題</strong>：圖表樣式不符合預期</p>
<p><strong>解決方案</strong>：</p>
<ol>
<li>檢查 CSS 樣式是否正確載入</li>
<li>確認 Mermaid 初始化設定</li>
<li>檢查是否有其他 CSS 衝突</li>
</ol>
<h3 id="83-響應式問題">8.3 響應式問題</h3>
<p><strong>問題</strong>：在手機版圖表顯示異常</p>
<p><strong>解決方案</strong>：</p>
<ol>
<li>檢查響應式 CSS 設定</li>
<li>調整字體大小和邊距</li>
<li>測試不同螢幕尺寸</li>
</ol>
<h2 id="9-效能優化">9. 效能優化</h2>
<h3 id="91-延遲載入">9.1 延遲載入</h3>
<p>對於包含大量圖表的頁面，可以考慮延遲載入：</p>


<details>
  <summary>點擊查看延遲載入程式碼</summary>
  

```javascript
// 只在圖表進入視窗時才初始化
const observer = new IntersectionObserver((entries) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      // 初始化 Mermaid
      mermaid.init(undefined, entry.target);
      observer.unobserve(entry.target);
    }
  });
});

document.querySelectorAll('.mermaid').forEach(el => {
  observer.observe(el);
});
```


</details>
<h3 id="92-快取優化">9.2 快取優化</h3>
<p>使用 CDN 快取 Mermaid.js：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-html" data-lang="html"><span class="line"><span class="ln">1</span><span class="cl"><span class="p">&lt;</span><span class="nt">script</span> <span class="na">src</span><span class="o">=</span><span class="s">&#34;https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.min.js&#34;</span> 
</span></span><span class="line"><span class="ln">2</span><span class="cl">        <span class="na">integrity</span><span class="o">=</span><span class="s">&#34;sha384-...&#34;</span> 
</span></span><span class="line"><span class="ln">3</span><span class="cl">        <span class="na">crossorigin</span><span class="o">=</span><span class="s">&#34;anonymous&#34;</span><span class="p">&gt;&lt;/</span><span class="nt">script</span><span class="p">&gt;</span></span></span></code></pre></div><h2 id="10-總結">10. 總結</h2>
<p>通過這個實現方案：</p>
<ol>
<li>支援 Mermaid 語法</li>
<li>處理 Hugo Markdown 渲染的格式問題</li>
<li>響應式設計</li>
<li>支援流程圖、時序圖、甘特圖等</li>
<li>可以根據網站主題調整外觀</li>
</ol>
]]></content:encoded></item></channel></rss>