我有几个 .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]]
Run Code Online (Sandbox Code Playgroud)
有没有办法使 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)
Run Code Online (Sandbox Code Playgroud)
但该文件.emacs.d/.org-id-locations只有nil.
似乎不会自动生成全局链接(为 Org-mode 中的每个条目分配 ID)。我尝试(在标题上使用光标)使用M-x org-id-get-create,但这似乎没有任何作用。
编辑:(基于有用的评论)
在一个会话中,我可以M-x org-store-link在标题上使用while存储和创建链接(Paper 1在我上面的示例中)。然后我可以使用M-x org-insert-link, 并输入 ID 来插入链接。该链接看起来像[[id:10.1088/0953-8984/23/21/213001][Paper 1]]。但是我遇到了两个问题:(1)我希望自动存储 ID。(2) 当我关闭并重新打开文件时链接不起作用。
编辑:一个相关的问题:
所以这是我想出的解决方案。
在我的.emacs配置中,我保留了与我的问题相同的设置:
(require 'org-id)
(setq org-id-link-to-org-use-id use-existing)
;; Update ID file on startup
(org-id-update-id-locations)
Run Code Online (Sandbox Code Playgroud)这些文件需要成为议程列表的一部分(或使用org-id-extra-files(参见org-id文档)添加到附加文件列表中)
使用ID而不是CUSTOM_ID在PROPERTIES抽屉中:
* Paper 1
:PROPERTIES:
:ID: 10.1088/0953-8984/23/21/213001
:END:
Run Code Online (Sandbox Code Playgroud)需要创建每个 ID(如有必要;在我的情况下,我已经有了它们),并将链接添加到 ID 文件(链接存储在 中.emacs.d/.org-id-locations)。这是使用org-id-get-create以下方法完成的:将光标放在标题上,使用
M-x org-id-get-create
Run Code Online (Sandbox Code Playgroud)使用 链接到 ID [[id:10.1088/0953-8984/23/21/213001][Paper 1]]。
我必须多考虑一下何时创建 ID;我可以通过将 ID 存储绑定到另一个我将对所有标题执行的功能来自动化该过程。
| 归档时间: |
|
| 查看次数: |
4150 次 |
| 最近记录: |