使用ox-freemind将org-mode文档导出成思维导图
2014-01-06思维导图
思维导图是一个很好地整理知识、表达思维的工具。因为使用Linux,我更经常使用Freemind这么一个开源的思维导图工具。
Freemind本身也是一款很优秀的软件,它能够将思维导图导出成html、flah、Java Applet、Open Office文档以及PNG和JPEG两种格式的图片,并且对思维导图的绘制提供的快捷键。
这里 是Freemind的官网。
我曾经用Freemind绘制过一张Emacs的思维导图,放到了百度的emacs贴吧里,受到了一些Emacs新手的欢迎。因为那张图存在一定的错误,于是后来我决定重新画一张,而且决心要将更全面的内容表达出来。这是个非常累人的活,我断断续续用了一天时间才完成。
老实说Freemind已经很方便了,在熟悉了相关快捷键后,能够很高效地进行思维导图的绘制。
不过我希望能在更熟悉的环境中来做这件事情,我希望不用再去学习另外一套操作方式,而是能在org-mode中来绘制思维导图。
我的Org版本是8.2.3c,这个版本的org-mode中提供了ox-freemind.el来满足我这个要求。
使用ox-freemind.el
所有Org的核心模块都在 org/lisp/ 目录下,但这个插件并不是Org的核心模块,它被放置在 org/contrib/lisp 目录下,如果您没有在Emacs配置文件中将这个路径加入加载路径,那么先做好这件事,然后在配置文件中添加:
(require 'ox-freemind)
然后就可以使用 org-freemind-export-to-freemind 来将Org文档导出成Freemind文档了。
如,我新建了一个文件 mind.org ,内容如下
#+TITLE: Org-mode ** 写文档 ** 发布成html ** org-bable ** 表格
执行 org-freemind-export-to-freemind 并用Freemind打开导出成图像后,得到的结果是:
生成的思维导图样式是在ox-freemind.el中的变量 org-freemind-styles 中定义的。
ox-freemind.el中的bug
如果您使用和我一样版本的Org-mode,那么很可能会遇到和我一样的问题。在执行 org-freemind-styles 后出错,出错信息为:
org-freemind-export-to-freemind: Symbol's function definition is void: \,
最后我在Org-mode的邮件列表中找到了解决方法。原链接在此。
出错的原因是 org-freemind-export-to-freemind 函数的定义中有一处错误。其原始内容为:
1: (defun org-freemind-export-to-freemind 2: (&optional async subtreep visible-only body-only ext-plist) 3: (interactive) 4: (let* ((extension (concat ".mm" )) 5: (file (org-export-output-file-name extension subtreep)) 6: (org-export-coding-system 'utf-8)) 7: (org-export-to-file 'freemind ,file 8: async subtreep visible-only body-only ext-plist)))
将倒数第二行中的
org-export-to-file 'freemind ,file
修改为
org-export-to-file 'freemind file
嗯,没错,作者多写了一个逗号。