【求助,讨论】关联文章内容的思维导图

有这么一个应用场景

左边是思维导图,右边是文章(org-mode, morkdown, pdf 都可以), 思维导图的结点是文章的标题,点击则右边跳转显示该标题下的内容。

有什么好的方法实现它,或者已经有可用的工具吗?

org-roam+org-roam-ui可以实现类似的。org可以,pdf不行。markdown没试过,不清楚。

如果要在emacs 内使用,需要装eaf-browser. emacs自带的浏览器没用过。

org-roam 生成的节点网络图依赖笔记间的 reference 吧?而且好像没法设置成常用的思维导图样式。我希望是左边的导图本身也能编辑,同时层级结构不一定要跟文章一一对应(当然初始化可以由文章导出),总的来说,可能就是点击事件之后,拿着节点内容去搜索对应的标题 :joy:

估计我可以先这样搞得小 demo (就搜索 org-mode)

不一定要引用,只要你的org中标题设置了id, org-roam-ui就可以显示相互之间的关系。如果要增加结点就设置一个id.否则就删除一个id.

所以说是类似,编辑都是在org上,org-roam-ui只负责展示。

思维导图形式应该是次要的吧,只要能展示梳理清楚内容,应该不背离思维导图的指导原则。

当然如果你是要对处展示的话,那形式还是有用的。

嗯是的,我的应用场景就是展示。

以导图为主,展示给别人看,然后适当得展开详细的信息(右边的文章)。

所以导图的编辑反而是主要的。但是又不想重新制作成ppt,而是以原有的文章为基础,梳理出一份给别人看的导图,并链接到原有的内容。

这个问题是另一个问题的子集。

c-f 可视化

你说的这个种使用方式我实现了,参考

把drawio换成mindmap工具freeplane,只要写一个处理url scheme的程序就可以了,我自定义的是org://形式的链接,然而xmind和mindmaster里面只能直接打开http的链接,不能打开自定义链接,但是用freeplane是可以的。

GIF 2022-1-10 21-53-57

1 个赞

用JavaScript实现吧,canvas or svg
顺便开源,被路人优化

1 个赞

原帖的第一张 GIF 图似乎失效了,我这边显示不出来。 :rofl:

点击后能显示 GIF 2021-8-13 0-50-50

2 个赞

老哥,你好,我想问下你这个org链接的文件是绝对路径还是相对路径~

相对和绝对路径都不是,而是注册表(url handler)中通过参数指定一个总的org目录,到里面递归搜索自定义的uuid(自定义的org link),然后调用emacsclient打开那个文件,再跳到uuid所在那一行,所以可以在org中的任意位置添加链接点。

记错,现在没有在url handler参数指定固定的org目录了,而是通过执行elisp函数来做一些动作。

在org文件中是一个这样的链接 [[a:0d75d769][emacs-china]],相当于一个锚点,点击/回车时,可以复制一个 org://exec/open-anchor/0d75d769 这样的外部链接,用浏览器打开这个链接,运行url handler,exec,表示要执行一个elisp函数open-anchor,再后面是字符串参数,传入0d75d769

(defun open-anchor (anchor-id)
  (let* ((default-directory (concat (get-locale-book-dir) "/note"))
         (search-dir default-directory)
         )
    (async-shell-command-no-window (format "search-anchor %s %s" search-dir anchor-id)) ;; search-anchor是个c++写的程序,搜索0d75d769并用emacsclient打开文件,并跳到0d75d769所在行。
    )
  )

exec也可以执行其它的elisp函数。

ok, 谢谢老哥回复

之前我看到您的帖子,想到通过构建一个file link,然后draw.io里link到节点上来打开文件;也是由于file link不支持绝对路径,这样就限制在local machine上了,drawio文件在一台机器上可以使用到另一台因为路径问题不能链接打开,不能实现云盘多端打开阅读;所以特意问了一下老哥您这个效果的实现方式~

最后再次感谢老哥的回复,受益匪浅~我目前也是Emacs初级使用阶段,很多东西还得多学习学习:)

用文件路径缺点比较明显:

  • 有时会改文件名,链接失效。
  • 或者移到另一个目录,链接失效。
  • 链接粒度只能是文件而不是具体内容所在位置。

我把org文件和附件分开存放了,现在几百个org文件加起来也才几MB大小,所以干脆基于内容全局搜索打开锚点位置。

而且锚点id是唯一的,即使哪时候改了描述,链接也不会失效。

嗯呐,谢谢分享~ 十分受教