在 Emacs 组织模式文件中引用唯一 ID



我有几个 .org 文件,我希望能够使用 ID 在它们之间创建链接。我使用 DOI 作为唯一标识符。我可以使用属性在文件中链接:

* Paper 1
  :PROPERTIES:
  :CUSTOM_ID: 10.1088/0953-8984/23/21/213001
  :END:
* Paper 2
  :PROPERTIES:
  :CUSTOM_ID: 10.1038/nphys2935
See also [[#10.1088/0953-8984/23/21/213001]]

有没有办法使custom_id全局化,以便我可以从另一个文件中引用它?

我认为 org-id 是我需要更进一步的,但我发现文档有点令人困惑。我尝试在.emacs中添加以下行

;; Use global IDs
(require 'org-id)
(setq org-id-link-to-org-use-id use-existing)
;; Update ID file .org-id-locations on startup
(org-id-update-id-locations)

但是文件.emacs.d/.org-id-locations只有nil.

似乎不会自动生成全局链接(在组织模式下为每个条目分配 ID)。我尝试(光标在标题上)使用 M-x org-id-get-create ,但这似乎没有任何作用。

编辑:(基于有用的评论)

在一个会话中,我可以在标题上使用M-x org-store-link来存储和创建链接(Paper 1在上面的示例中)。然后我可以使用M-x org-insert-link,并键入 ID 以插入链接。链接看起来像[[id:10.1088/0953-8984/23/21/213001][Paper 1]].但是我遇到了两个问题:(1)我希望自动存储id。(2)当我关闭并重新打开文件时,链接不起作用。

编辑:一个相关的问题:

https://emacs.stackexchange.com/questions/2186/have-org-modes-exported-html-use-custom-id-when-linking-to-sub-sections-in-toc

所以这是我想出的解决方案。

  1. 在我的.emacs配置中,我保留了与问题中相同的设置:

    (require 'org-id)
    (setq org-id-link-to-org-use-id use-existing)
    ;; Update ID file on startup
    (org-id-update-id-locations)
    
  2. 这些文件需要是议程列表的一部分(或使用org-id-extra-files添加到其他文件列表中(请参阅org-id文档))

  3. 使用ID而不是PROPERTIES抽屉中的CUSTOM_ID

    * Paper 1
      :PROPERTIES:
      :ID: 10.1088/0953-8984/23/21/213001
      :END:
    
  4. 需要创建每个 ID(如有必要;就我而言,我已经有了它们),并将一个链接添加到 ID 文件中(链接存储在 .emacs.d/.org-id-locations 中)。这是使用 org-id-get-create 完成的:将光标放在标题上,使用

    M-x org-id-get-create
    
  5. 使用 [[id:10.1088/0953-8984/23/21/213001][Paper 1]] 链接到 ID。

我必须更多地考虑何时创建 ID;我可以通过将 ID 存储绑定到我将对所有标题执行的另一个功能来自动化该过程。

最新更新