Markmap
简介
Markmap是Markdown和思维导图的组合。
它解析Markdown内容并提取其固有的层次结构,并呈现交互式思维导图。
使用方案
在 Hugo 中使用
Hugo 中对 Markdown 的代码块(codeblock)语法 有自定义的渲染功能,可将 markmap 设为一种语法进行自定义渲染
- 
创建 markmap 语法的代码块渲染器 1<!-- /layout/_default/_markup/render-codeblock-markmap.html --> 2<!-- 获取 markmap 的高度 --> 3{{ $height := .Attributes.height }} 4 <div class="markmap" id="markmap"> 5 <script type="text/template"> 6 {{- .Inner -}} 7 </script> 8 </div> 9 <style> 10 svg.markmap { 11 width: 100%; 12 height: {{ $height }}; 13 } 14 </style> 15 {{ .Page.Store.Set "hasMarkmap" true }}
- 
在页面内容模版中配置渲染功能 1<!-- 判断当前页面是否有 markmap 代码块 --> 2{{ if .Page.Store.Get "hasMarkmap" }} 3 <!-- 为了更好的掌控渲染时机,将 markmap 的渲染方式设置为手动 --> 4 <script> 5 window.markmap = { 6 autoLoader: { manual: true }, 7 }; 8 </script> 9 <!-- 引入 markmap 相关脚本 --> 10 <script src="https://cdn.jsdelivr.net/npm/markmap-autoloader@0.14.4"></script> 11 <!-- 进行手动渲染 markmap --> 12 <script> 13 // 0.3s 后渲染 markmap 14 setTimeout(() => { 15 markmap.autoLoader.renderAll(); 16 }, 300); 17 </script> 18{{ end }}
- 
在 Markdown 文件中编写 markmap 代码块 
 1``` markmap {height = "20vh"}
 2    # MarkMap
 3    ## 简介
 4    ## 使用方案  
 5    1. React框架
 6    2. Vue框架
 7    3. auto-loader
 8    4. VS Code 插件
 9    ## 在 Hugo 中的使用
10    5. 创建 Markmap 语法的代码块渲染器  
11    6. 在页面内容模版中配置渲染功能  
12    7. 在 Markdown 文件中编写 markmap 代码块