Org manual说“属性是与条目”相关联的键值对。正确的key-value data structure可以在值中存储任何内容,包括另一个关联数组。但物业似乎不可能。
嵌套属性可以通过大量使用Property API为无数功能启用org-mode的许多可能性。出现的例子包括:键值数据库,图形数据库,向条目添加复杂的语义元数据,语义Web应用程序,甚至文本任务。
2009年在org-mode邮件列表中讨论了ID markers(all posts of the thread)的类似想法.ID标记的概念与我从另一个想要概括org-mode属性语法的愿望相关。 Org-mode: using special properties in the drawer。不幸的是,ID标记引入了更多新语法,我希望在当前的组织模式能力下以递增方式启用嵌套数据。
Babel可能是一种解决方案,但它需要使用编程语言,并可能限制灵活性。最好只使用属性API。
答案 0 :(得分:0)
这是你的想法:
** subheading
:PROPERTIES:
:my-prop: (:property-1 red :property-2 (nested-prop . 5))
:END:`
#+BEGIN_SRC emacs-lisp
(defun get-my-prop-value (property)
(interactive)
(plist-get
(read (org-entry-get (point) "my-prop"))
property))
#+END_SRC
#+RESULTS:
: get-my-prop-value
#+BEGIN_SRC emacs-lisp
(get-my-prop-value :property-2)
#+END_SRC
#+RESULTS:
: (nested-prop . 5)