简体   繁体   中英

reference unique id across emacs org-mode files

I have several .org files, and I'd like to be able to create links between them using an ID. I am using DOIs as unique identifiers. I can link within a file by using properties:

* 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]]

Is there a way to make the custom_id global, so I can reference it from another file?

I think that org-id is what I need to go further, but I've found the documentation a little confusing. I tried adding the following lines in my .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)

but the file .emacs.d/.org-id-locations only has nil .

It seems like global links won't be automatically generated ( Assign IDs to every entry in Org-mode ). I tried (with cursor on the heading) to use Mx org-id-get-create , but this does not seem to do anything.

EDIT: (Based on helpful comment)

Within one session, I can store and create links using Mx org-store-link while on the heading ( Paper 1 in my example above). Then I can use Mx org-insert-link , and type the ID to insert the link. The link looks like [[id:10.1088/0953-8984/23/21/213001][Paper 1]] . But I am running into two problems: (1) I'd like the ids to be stored automatically. (2) The links don't work when I close and re-open the file.

EDIT: A related question:

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

So here's the solution I came up with.

  1. In my .emacs configuration, I have kept the same settings as in my question:

     (require 'org-id) (setq org-id-link-to-org-use-id use-existing) ;; Update ID file on startup (org-id-update-id-locations) 
  2. The files need to be part of the agenda list (or added to the list of additional files using org-id-extra-files ( See org-id documentation ))

  3. Use ID instead of CUSTOM_ID in the PROPERTIES drawer:

     * Paper 1 :PROPERTIES: :ID: 10.1088/0953-8984/23/21/213001 :END: 
  4. Each ID needs to be created (if necessary; in my case I already have them), and a link added to the ID file (links are stored in .emacs.d/.org-id-locations ). This is done using org-id-get-create : with the cursor on the heading, call it using

     Mx org-id-get-create 
  5. Link to an ID using [[id:10.1088/0953-8984/23/21/213001][Paper 1]] .

I have to think a little bit more about when I'd like the ID to be created; I can automate the process by tying the ID storing to another function that I'll do to all the headings.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM