5.6 Checkboxes

普通列表49(参见 Plain Lists)中的每一项都可以通过以 ‘[ ]’ 开头变为复选框。 该功能与待办事项类似(参见 TODO Items),但更轻量。 复选框不会出现在全局待办列表中,因此非常适合将任务拆分为多个简单步骤,或用于购物清单。

以下是复选框列表示例:

* TODO Organize party [2/4]
  - [-] call people [1/3]
    - [ ] Peter
    - [X] Sarah
    - [ ] Sam
  - [X] order food
  - [ ] think about what music to play
  - [X] talk to the neighbors

第一行和第二行的 ‘[2/4]’ 和 ‘[1/3]’ 是统计标记, 表示该条目内已勾选的复选框数量与总复选框数量。 即使不展开折叠的条目,也能直观了解剩余未勾选数量。 标记可放在标题或普通列表项(第一行)中。 每个标记仅统计其所在标题/项的结构直接子级复选框50。 你需要手动输入 ‘[/]’ 或 ‘[%]’ 插入标记。 使用 ‘[/]’ 会显示「n/m」格式结果,如上例; 使用 ‘[%]’ 则显示已勾选百分比(上例中分别为 ‘[50%]’ 和 ‘[33%]=)。 在标题中,标记可统计下方复选框或子项待办状态,显示最后修改的类型。 将属性 =COOKIE_DATA’ 设为 ‘checkbox’ 或 ‘todo’ 可明确统计类型。

若当前标题设有 ‘ORDERED’ 属性,复选框必须按顺序勾选, 若尝试在上方存在未勾选框时勾选下方框,会抛出错误。

复选框有三种状态:

  1. 未勾选 ‘[ ]
  2. 部分勾选 ‘[-]
  3. 已勾选 ‘[X]

复选框按层级工作,若一个复选框项包含子复选框, 切换任一子复选框会使父复选框反映子项的全部、部分或未勾选状态。

若所有子复选框均未勾选,父复选框也未勾选:

- [ ] call people
  - [ ] Peter
  - [ ] Sarah

若部分子复选框已勾选,父复选框为部分勾选:

- [-] call people
  - [X] Peter
  - [ ] Sarah

若所有子复选框均已勾选,父复选框也已勾选:

- [X] call people
  - [X] Peter
  - [X] Sarah

以下命令用于操作复选框:

C-c C-c (org-toggle-checkbox)

切换光标处复选框状态;若携带前缀参数,则切换复选框是否存在。 携带单个前缀参数时,添加空复选框或移除当前复选框51。 携带双前缀参数时,设为 ‘[-]’ ,即中间状态。

C-c C-x C-b (org-toggle-checkbox)

切换光标处复选框状态;若携带前缀参数,则切换复选框是否存在。 携带双前缀参数时,设为 ‘[-]’ 中间状态。

  • 若存在选中区域,切换区域内第一个复选框,并将其余框设为相同状态。 携带前缀参数时,为区域内所有项添加或移除复选框。
  • 若光标在标题中,切换该标题与下一标题之间区域的复选框,而 整个子树。
  • 若无选中区域,仅切换光标处复选框。
C-c C-x C-r (org-toggle-radio-button)

将光标所在项的复选框作为单选按钮切换: 当该复选框勾选时,同一层级的其他所有复选框会自动取消勾选。 携带通用前缀参数时,切换复选框是否存在。 携带双前缀参数时,设为 ‘[-]’ 。

通过在列表前设置 ‘#+ATTR_ORG: :radio t’ ,或调用 M-x org-list-checkbox-radio-mode 启用该次要模式, 可使 C-c C-c 将复选框视为单选按钮。

M-S-RET (org-insert-todo-heading)

插入带复选框的新项。仅当光标已在普通列表项中时生效(参见 Plain Lists)。

C-c C-x o (org-toggle-ordered-property)

切换条目的 ‘ORDERED’ 属性,控制复选框是否必须按顺序勾选。 该行为使用属性实现,因为此设置应仅作用于当前条目,而非像标签一样继承。 若希望通过标签 跟踪(track) 该属性值以提升可见性,可自定义 org-track-ordered-property-with-tag

C-c # (org-update-statistics-cookies)

更新当前大纲条目的统计标记。 携带 C-u 前缀调用时,更新整个文件。 使用 C-c C-c 切换复选框或用 M-S-RET 新建复选框时, 复选框统计标记会自动更新。 修改待办状态时,待办统计标记会更新。 若手动删除/添加框或条目,可使用该命令同步统计数据。


Footnotes

(49)

描述列表除外,不过可通过修改 org-list-automatic-rules 允许该行为。

(50)

若希望标记统计下方所有复选框而非仅直接子项,可设置变量 org-checkbox-hierarchical-statistics

(51)

在无复选框的列表 第一项 执行 C-u C-c C-c 会为列表其余项添加复选框。