关于org-roam的tag

请问可以在org-roam的tag里插入node id吗? 比如如下情况

我手动地把node和其id插入了filetags里,但是在下面的查找中却把一个node分成了两份 貌似org-roiam不原生支持将node插入tag里?

举个例子?没有太明白你的意思

您好,我补充了相关的图片信息。能麻烦再看下吗?

org-roam 的 tag 是基于 orgmode;而在 orgmode 中tag 的形式是 :<tagname>: ,因此你的 id 连接会被冒号切成两半。

显然 org-roam 并不支持 node 作为 tag,我好奇的是在什么场景下会有这样的需求?

1 个赞

主要是受Logseq的影响 我觉得这种方式相较于单纯的tag一个词,是一种更加彻底的双链。

记得以前的filetags是以空格作为分隔的?如果tag含空格,那就引号括起来,比如:

#+filetags: a "b c" d e "王 李" ,这里包括了五个tags。

强行把tag变成node的话,但可能要hack一下。另外,需要看看org-roam源码,确认这样的链接会不会被收录到org-roam-db里。

引号是不能保住空格的,从源码看,前后切了两次,第一次根据空格切,第二次根据冒号切:

(setq-local org-file-tags
     (mapcar #'org-add-prop-inherited
             (cl-mapcan (lambda (value)
                          (cl-mapcan
                           (lambda (k) (org-split-string k ":")) ;;; <====HERE
                           (split-string value)))
                        (cdr (assoc "FILETAGS" alist)))))

除非有其他的链接形式,或者 hack 源码,不过我想这没啥意义。因为从使用方式上看,还不如在每个文件中手动添加 tag 同名的节点链接,因为orgroam 做不到 logseq 那样加个 # 号就可以建立链接。

2 个赞

为什么一定要加在filetag里,用 - xxx :: id的形式也可以啊