0

我在 org-mode 中有一些链接缩写,如下所示:

(setq org-link-abbrev-alist
  '(("dropboxpath" . "~/Dropbox")
    ("cloudpath" . "~/")
    ("imgpath" . "~/images")
    ("gitpath" . "~/git")
    ))

它工作正常,当我在不同的系统上工作并同步我的 org 文件时,每个系统上的路径都不同。我的问题如下:

#+BEGIN_SRC plantuml :file gitpath:/test.png
<some plantumlstuff here>
#+END_SRC

这不起作用,org-babel 无法识别链接缩写。我还尝试了以下方法(其中 temp 是一个包含 git 目录路径的变量):

#+BEGIN_SRC plantuml :file (concat temp "/test.png")

这原则上有效,但给了我以下结果:

#+RESULTS:
[[file:~/git/test.png]]

这不符合我的要求,因为我需要 gitpath 才能使它在我所有的机器上工作......

#+RESULTS:
[[gitpath:/test.png]]

有人对这个问题有合适的解决方案吗?

4

1 回答 1

0

你可以简单的参考一下org-link-abbrev-alist。由于该变量结构为alist,因此您可以使用assoc. 它返回与提供的键匹配的列表的第一个元素。

(concat
  (car (assoc "gitpath" org-link-abbrev-alist))
  "/test.png")
于 2016-06-09T02:06:46.713 回答