列定义用于设置列的各项属性,通用格式如下:
%[WIDTH]PROPERTY[(TITLE)][{SUMMARY-TYPE}]
%[宽度]属性名[(列标题)][{汇总类型}]
除百分号与属性名外,其余部分均为可选。各部分含义如下:
整数,指定列的字符宽度。省略时宽度自动计算。
本列要编辑的属性。也支持表示元数据的特殊属性(参见 Special Properties)。
列表头文字。省略时使用属性名。
汇总类型。若指定,父标题的列值将由直接子节点计算得出。若父节点已有同名属性,该属性不会参与计算。
当父标题存在已有属性时,Org 不仅会在列视图中叠加计算值,还会直接覆盖父节点属性收纳块中的属性值56。
特殊属性不支持汇总类型。
支持的汇总类型如下:
| ‘+’ | 本列数值求和。 |
| ‘+;%.1f’ | 同 ‘+=,但按 =%.1f’ 格式化结果。 |
| ‘$’ | 货币格式,等价于 ‘+;%.2f’ 。 |
| ‘min’ | 列中最小值。 |
| ‘max’ | 列中最大值。 |
| ‘mean’ | 数值算术平均值。 |
| ‘X’ | 复选框状态:所有子项均为 ‘[X]’ 时显示 ‘[X]’ 。 |
| ‘X/’ | 复选框状态:显示 ‘[n/m]’ 。 |
| ‘X%’ | 复选框状态:显示 ‘[n%]’ 。 |
| ‘:’ | 时间求和(HH:MM);纯数字视为分钟。 |
| ‘:min’ | 列中最小时间值。 |
| ‘:max’ | 列中最大时间值。 |
| ‘:mean’ | 时间值算术平均值。 |
| ‘@min’ | 最小时长57(天/时/分/秒)。 |
| ‘@max’ | 最大时长(天/时/分/秒)。 |
| ‘@mean’ | 时长算术平均值(天/时/分/秒)。 |
| ‘est+’ | 合并低–高估算范围。 |
你也可以通过设置 org-columns-summary-types 自定义汇总类型。
‘est+’ 汇总类型需要特别说明。它用于合并以低–高范围表示的工作量估算。例如,某项任务你不直接估算为 5 天,而是在较有把握时记为 5–6 天,完全不确定时记为 1–10 天。两种范围平均值都是 5.5 天,但前者更可控。
直接将所有范围的上下限相加会得到过于宽泛的结果,而 ‘est+’ 会对子任务的均值和方差进行统计合并,生成更合理的总估算。例如,10 个任务各估算 0.5–2 天,直接相加为 5–20 天,代表极端顺利或极端糟糕的情况;而 ‘est+’ 会更真实地估算为 10–15 天。
下面是完整的列定义示例,同时包含允许取值58。
:COLUMNS: %25ITEM %9Approved(Approved?){X} %Owner %11Status \
%10Time_Estimate{:}
:Owner_ALL: Tammy Mark Karl Lisa Don
:Status_ALL: "In progress" "Not started yet" "Finished" ""
:Approved_ALL: "[ ]" "[X]"
第一列 ‘%25ITEM’ 表示显示条目本身(也就是标题)的前 25 个字符。你在定义列时通常都应该以 ‘ITEM’ 说明符开头。其他说明符分别创建这些列: ‘Owner’ 列使用一组姓名作为可选值; ‘Status’ 列有四种可选状态;还有一个复选框字段 ‘Approved’ 。在 ‘%’ 符号后如果没有指定宽度,列宽会自动适配为刚好能完整显示所有内容的宽度。 ‘Approved’ 列使用了自定义的标题( ‘Approved?’ ,带问号)。 ‘Time_Estimate’ 列会对 HH:MM 这类时长格式进行求和汇总;而 ‘Approved’ 列则会在所有子项都被勾选时显示 ‘[X]’ 状态。
‘CLOCKSUM’ 和 ‘CLOCKSUM_T’ 是特殊列属性,分别列出子树内所有时钟记录总和( ‘CLOCKSUM’ )与当日时钟记录总和( ‘CLOCKSUM_T’ )。与忽略父标题属性值的 ‘:’ 汇总类型不同, ‘CLOCKSUM’ 与 ‘CLOCKSUM_T’ 会统计所有 ‘CLOCK:’ 记录,包括父标题内的记录。
在多层嵌套结构中计算汇总时,会从最深层级向上递归计算。示例如下:
#+BEGIN: columnview :indent t :format "%ITEM %EFFORT{:mean}" :id global
| ITEM | EFFORT |
|--------------------+---------|
| Top level | 3h 0min |
| \_ Intermediate 1 | 1h 0min |
| \_ Leaf 1 | 1h |
| \_ Leaf 2 | 1h |
| \_ Leaf 3 | 1h |
| \_ Intermediate 2 | 5h |
#+END:
* Top level
** Intermediate 1
:PROPERTIES:
:EFFORT: *unused*, will be set to 1h 0min (mean of the leaf nodes)
:END:
***** Leaf 1
:PROPERTIES:
:EFFORT: 1h
:END:
*** Leaf 2
:PROPERTIES:
:EFFORT: 1h
:END:
*** Leaf 3
:PROPERTIES:
:EFFORT: 1h
:END:
** Intermediate 2
:PROPERTIES:
:EFFORT: 5h
:END:
若同一属性被多次定义列,只有第一个定义会写入属性收纳块。例如 ‘%EFFORT{mean} %EFFORT(Sum){:}’ 只会写入 ‘EFFORT’ 的平均值而非合计值。若第一个列定义不含汇总类型( ‘%EFFORT %EFFORT{mean}’ ),则不会写入收纳块
时长可定义为持续时间,使用 org-duration-units 中定义的单位,例如 ‘3d 1h’ 。若列中存在此类值,汇总结果也会以持续时间形式呈现。
注意 ‘COLUMNS’ 定义必须写在一行内,此处换行仅为排版限制。