属性为键值对。当属性关联单个条目或某个树形结构时,需要插入到名为 ‘PROPERTIES’ 的专用收纳块中(参见 Drawers),该收纳块必须直接位于标题下方,若存在规划行则位于规划行下方(参见 Deadlines and Scheduling)。每个属性单独占一行,键名用冒号包裹并写在前面,其后为对应值。键名不区分大小写。示例如下:
* CD collection
** Classic
*** Goldberg Variations
:PROPERTIES:
:Title: Goldberg Variations
:Composer: J.S. Bach
:Artist: Glenn Gould
:Publisher: Deutsche Grammophon
:NDisks: 1
:END:
根据变量 org-use-property-inheritance 的取值,以此方式设置的属性可仅关联单个条目,或关联该条目对应的整个子树,详见 Property Inheritance。
你可以通过定义 ‘Xyz_ALL’ 这一属性,指定特定属性 ‘Xyz’ 的允许取值。该特殊属性支持 继承(inherited) ,因此在一级条目中设置后,会作用于整个树形结构。定义允许取值后,设置对应属性会更简便,也能减少输入错误。以上述 CD 收藏为例,我们可以预先定义出版商与光盘数量:
* CD collection :PROPERTIES: :NDisks_ALL: 1 2 3 4 :Publisher_ALL: "Deutsche Grammophon" Philips EMI :END:
属性可在缓冲区层级定义,即写在首个标题之前,可被文件中所有条目继承。首个标题前定义的属性块必须位于缓冲区顶部,其上方只能有注释。
也可通过如下格式的行定义属性:
#+PROPERTY: NDisks_ALL 1 2 3 4
若要为已有属性追加取值,可在属性名后添加 ‘+’ 。下述配置会使属性 ‘var’ 同时拥有 ‘foo’ 和 ‘bar’ 两个值。
#+PROPERTY: var foo #+PROPERTY: var+ bar
使用追加符号 ‘+’ ,也可以为继承的属性添加取值。下述配置会使 ‘Goldberg Variations’ 子树下的 ‘Genres’ 属性拥有 ‘Classic’ 、 ‘Baroque’ 和 ‘Keyboard music’ 三个值。
* CD collection
** Classic
:PROPERTIES:
:Genres: Classic
:END:
*** Goldberg Variations
:PROPERTIES:
:Title: Goldberg Variations
:Composer: J.S. Bach
:Artist: Glenn Gould
:Publisher: Deutsche Grammophon
:NDisks: 1
:Genres+: Baroque
:Genres+: Keyboard music
:END:
注意:只有使用 ‘+’ 追加时,一个属性才能在同一个收纳块中存在多个取值。若同一属性无 ‘+’ 却重复定义,结果未定义。
通过全局变量 org-global-properties 设置的属性值,可被所有 Org 文件中的全部条目继承。
以下命令可用于操作属性:
pcomplete) ¶在行首输入冒号后,补全属性键名。会列出当前文件中使用过的所有键名作为候选项。
org-set-property) ¶设置属性。会提示输入属性名与取值,必要时自动创建属性收纳块。
在当前条目插入属性收纳块。收纳块会插入在条目靠前位置,位于截止日期等规划信息行之后。若在首个标题前使用,则插入在缓冲区顶部注释之后。
org-property-action) ¶光标位于属性收纳块内时,执行属性相关命令。
org-set-property) ¶为当前条目设置属性,属性名与取值均可通过补全输入。
org-property-next-allowed-value), S-LEFT (org-property-previous-allowed-value) ¶将光标所在属性切换为下一个/上一个允许取值。
org-delete-property) ¶从当前条目中移除指定属性。
org-delete-property-globally) ¶从当前文件所有条目中全局移除指定属性。
org-compute-property-at-point) ¶依据最近的列格式定义中的运算符与作用范围,计算光标处属性的取值。