当前有没有方案可以可视化一个 org-mode buffer 各 entry 的链接关系 (id link)?

我不用 org-roam, 做的是层次化笔记,一个文件的大小是几百 kB, 并且相关内容都在同一个文件, 目前除了这个问题, 我没感觉有别的痛点。

我的问题是,有没有办法可视化一个 org-mode 各 entries 之间的链接关系, 比如 A 中有 B 的链接,那么图上就出现一个 A 到 B 的边。 可能链接了其它文件的节点,但我不在乎,图上的节点只需要是当前 buffer 中的节点。然后点击节点能跳转到相应 entry (但这个没那么重要,哪怕是一个静态的图对我也很有用了)。

我用的是 ID 链接:

[[id:4f860e56-7b04-400f-97e4-89128f2733e6][a link]]

如果 A 出现了 B 的链接,也应当画出 B 的所有祖先节点,但用另一种线条,Bpp-->Bp-->B 这样。目的是解决这个问题,A 引用的是 B 的一个子节点 B1, 但仍希望体现出 A 与 B 的关系。

本身以及子节点没有被引用的节点就不出现在图中了 (动辄几千个节点,大部分节点都不会被引用,不想图显得太乱)。

我比较满意的效果是 obsidian local graph 那样的。

其实是先有 org-roam-ui 然后有 logseq 的 graph,再然后是 obsidian 的 graph,最强大的目前依旧是org-roam-ui。

现成的方案应该没有,自行实现一个可以用graphviz dot来画,我一直想好好学习一下这个画图工具,减少对ps的依赖

想问一下 org-roam-ui 支持一个buffer 内的链接么?而不是所有文件。因为我习惯就是相关联的节点放一个文件方便搜索。

如果在org roam中使用单个org文件, 采用树形笔记, 如果B引用了A, 那么当光标在A的时候, 在显示反向链接的buffer里B的标题会显示为 B(Bpp > Bp > B), 也就是把反向链接的祖先节点都显示出来.

题主要搜索的是正向链接的祖先节点, 或许可以参考一下org roam的实现.

1 个赞

有个问题,org-roam 是只能可视化一个节点的 backlink 情况么?是不是不能显示整个 buffer 内节点的关系?

我不清楚, 但是光标移动到哪个分节点, 它就会显示该分节点的backlink. 因此直接写一个elisp遍历所有节点, 把 backlink 的结果全放到同一个buffer就好了…

有个基于 org-ql 的方案,作者还在做。 https://www.reddit.com/r/orgmode/comments/1gj26tz/hacking_on_orggraphview_view_org_files_as/

这个 package 之前试过,不知道是什么问题,Segmentation fault, github 有这个 issue,作者好像无意受理的样子。