7.5.3 Capturing column view

列视图只是缓冲区上的叠加层,无法直接导出或打印。若需要保存列视图内容,可使用 ‘columnview’ 动态块(参见 Dynamic Blocks)。该块结构如下:

* The column view
#+BEGIN: columnview :hlines 1 :id "label"

#+END:

该动态块支持以下参数:

:id

最重要的参数。列视图通常作用于特定子树,而捕获块可能位于文件其他位置。要指定捕获哪个子树的视图,可使用四种取值:

local

使用捕获块所在的子树。

global

全局视图,包含文件所有标题。

file:FILENAME

在指定 FILENAME 顶层启用列视图。

LABEL

在 ‘ID’ 属性为该标签 LABEL 的子树中启用列视图。可使用 M-x org-id-copy 为当前条目生成全局唯一 ID 并复制到剪贴板。

:match

设置为字符串时,作为标签/属性匹配过滤器,仅筛选 :id 指定范围内的部分标题。

:hlines

t 时每行后插入横线;为数字 N 时,在层级 <= N 的标题前插入横线。

:vlines

nil 时强制显示列组竖线。

:maxlevel

设置为数字时,不捕获该层级以下的条目。

:skip-empty-rows

nil 时,跳过仅 ‘ITEM’ 字段有内容的空行。

:exclude-tags

要排除的标签列表,带这些标签的条目不会出现在列视图表格中。

:indent

nil 时, ‘ITEM’ 字段按层级缩进。

:link

nil 时,表格中的 ‘ITEM’ 标题会链接到原位置。

:format

为动态块指定列属性(参见 Column attributes)。

:formatter

用于格式化列视图数据并插入缓冲区的函数,参见选项 org-columns-dblock-formatter

以下命令用于插入或更新动态块:

org-columns-insert-dblock

插入捕获列视图的动态块,提示选择视图范围或 ID。

该命令可通过 org-dynamic-block-insert-dblock (C-c C-x x) 并选择 “columnview” 调用(参见 Dynamic Blocks)。

C-c C-c C-c C-x C-u (org-dblock-update)

更新光标处动态块,光标需位于 ‘#+BEGIN’ 行。

C-u C-c C-x C-u (org-update-all-dblocks)

更新所有动态块(参见 Dynamic Blocks)。适用于缓冲区中有时程表、列视图捕获块等多个动态块的场景。

你可以为列视图表格添加公式,也可在表格前添加绘图指令,这些内容在块更新后会保留。若表格后有 ‘TBLFM’ 关键字,更新后会自动重算表格。

另一种捕获并处理属性值的方式由 Eric Schulte 的 ‘org-collector.el’ 提供,该包属于 ‘org-contrib59。它提供通用 API 收集指定范围内条目的属性,并支持任意 Lisp 表达式处理数值后再插入表格或动态块。


Footnotes

(59)

扩展包不属于 Emacs 核心,但随 Org 主发行版分发——访问 https://orgmode.org