使用plantuml生成mindmap 以及数据结构图

最近写笔记时,觉得需要 mindmap 辅助记忆,我的 mindmap 需求:

  1. 便捷的展示我 org 笔记的结构,便于记忆。
  2. 能够对统一层级进行编号,方便记忆每个分类有多少种。
  3. 节点数目不多。如果数目过多,我倾向于把笔记拆分成多个。
  4. 便于分享。
  5. 看起来不那么丑。

寻找了一下 Emacs 下生成 mindmap 的方案: 发现了两个

  1. GitHub - emacs-eaf/eaf-mindmap: Mindmap with full-featured keyboard operation in Emacs
  2. GitHub - the-ted/org-mind-map: This is an emacs package that creates graphviz directed graphs.

eaf-mindmap:前一个借助 eaf 和 jsmind,能够完整的编写、展示 mindmap。功能比较强大。但对于我的需求而言过于烦琐。编写org笔记与编写 mindmap,同样的内容,可能需要重复输入。

org-mind-map:可以直接把 org 文件导出为图片,比较方便。比较符合我的需求。但是比较丑。

在调研的过程中,发现 Plantuml 也可以绘制 mindmap (文档表示是试验功能,不保证语法稳定)。试用了一下,发现挺好用的,看起来也比较好看。 因此尝试写了一个 Emacs tool, 能够快速的生成 org mode 文件的 mindmap. 在实现的过程中,发现 plantuml 的几个有趣的功能:

  1. 生成 mindmap.
  2. 生成 work breakdown structure.
  3. 生成 json data structure.
  4. 成功 yaml data structure.

因此就把这四个功能实现了。没有选择实现其他的功能,因为其他的 uml 功能,使用的是专门的语法。如果需要编写对应的脚本,直接打开一个文件,编写对应 url 的脚本,然后运行 plantuml 生成图片就可以了。

这四个功能的特点在于:org 文件、json 文件、yaml 文件都是日常开发中很常用的文件。使用 plantuml-emacs 不需要对源文件进行任何的更改就可以生成对应的图片。

因此,我们可以:

  1. 编写笔记,直接生成 mindmap. (如果你的笔记结构化比较好)
  2. 编写工作文档,拆解任务,直接生成 work breakdown structure
  3. 编写 yaml 配置、造 json 数据,直接生成数据结构图和同伴快速交流,讲解。

示例:

  1. 只包含 org mode 文件 headlines

  1. 包含 org mode 文件 headlines 和每一章的第一段

  1. org 文件生成 Work Breakdown Structure

  1. json/yaml 生成数据结构图

8 个赞

例2 能给个示范吗?正好有这个需求

很棒的包,我先试一下,谢谢

github 里的的 README 还是比较详细的。https://github.com/ginqi7/plantuml-emacs。 配置若干变量,其中只有 plantuml-jar-path 是必填的。

(require 'plantuml)
(setq plantuml-jar-path "/some/path/plantuml.jar"
      plantuml-output-type "svg"
      plantuml-relative-path "./images/"
      plantuml-theme "plain"
      plantuml-font "somefont"
      plantuml-add-index-number t
      plantuml-log-command t
      plantuml-mindmap-contains-org-content t
      plantuml-org-headline-bold t)

然后在你自己的org / json /yaml 文件里,运行:plantuml-auto-convert-open 即可。

1 个赞

如果试用遇到什么问题,欢迎提出。 :smiley:

问下有计划上melpa吗?

暂时没有呢,当前我自己使用的包都是从github直接拉取的。我先看看上 melpa 流程是怎样的。

运行命令式出现出错提示:

Wrong type argument: integer-or-marker-p, nil

org mode 文件吗?有用例吗?具体的错误栈呢?

期待上 melpa

是 org 文件,但错误栈暂时还找不到,只得到了这么一个错误提示

org 文件可以发一下吗?

我怎么发给你呢?

不敏感的话直接发这里?或者发邮件:[email protected]

windows 用户表示用不了呀 :rofl:

这是个问题。 :joy: 我没有 windows 的环境,就没测过 windows。你要不是尝试,看一下代码,适配一下 windows。代码还比较简单。目前用到的非 windows 的 shell 只有用到了 cat.

这倒是我最近开发的工具的通病呢。基本都是基于 shell 工具的粘合。要在 windows 下估计没法开箱即用。 :joy: :joy: :joy:

看了一下, 主要是windows的 shell 不支持 cat << EOF 这种语法, 感觉要兼容的话只能搞个中间文件, 生成完图片再删掉 或者直接在~/.emacs.d/ 里面找个cache 文件夹存放中间文件

我看使用 powershell 有类似的语法可以替代。

你可以试试 Emacs 能否调用 powershell

这个是用 Get-Content -Path .\myscript.txt 也是有个中间文件呀 :joy: