11.7 Exporting Agenda Views

不在电脑前时,打印日程视图会很方便。Org mode 可将自定义日程视图导出为纯文本、HTML105、Postscript、PDF106 与 iCalendar 文件。偶尔导出可使用以下命令:

C-x C-w (org-agenda-write)

将日程视图写入文件。

若需频繁导出特定视图,可为任意自定义日程命令关联输出文件名列表107。下例先为日程与全局 TODO 列表定义自定义命令并指定导出文件,再为两个区块日程命令同样设置文件名。路径可为相对路径或绝对路径。

(setq org-agenda-custom-commands
      '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
        ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
        ("h" "Agenda and Home-related tasks"
         ((agenda "")
          (tags-todo "home")
          (tags "garden"))
         nil
         ("~/views/home.html"))
        ("o" "Agenda and Office-related tasks"
         ((agenda)
          (tags-todo "work")
          (tags "office"))
         nil
         ("~/views/office.ps" "~/calendars/office.ics"))))

文件扩展名决定导出格式: ‘.html’ 会使用 htmlize 包转为 HTML; ‘.ps’ 调用 ps-print-buffer-with-faces 生成 Postscript; ‘.ics’ 会对构建日程的所有文件执行 iCalendar 导出,并仅导出日程中列出的条目;其他扩展名则生成纯 ASCII 文件。

交互式使用这些命令时 不会(not) 自动生成导出文件以避免开销。需通过专用命令一次性生成 所有 指定文件:

e (org-store-agenda-views)

导出所有关联了导出文件的日程视图。

可在自定义日程命令的选项段为导出命令设置参数,示例:

(setq org-agenda-custom-commands
      '(("X" agenda ""
         ((ps-number-of-columns 2)
          (ps-landscape-mode t)
          (org-agenda-prefix-format " [ ] ")
          (org-agenda-with-colors nil)
          (org-agenda-remove-tags t))
         ("theagenda.ps"))))

该命令为 Postscript 导出器设置两列横向打印,页面可裁切后用于纸质日程。其余设置简化日程前缀,省略分类与计划信息,改用勾选框;移除标签使行更紧凑;黑白打印时关闭颜色。 org-agenda-exporter-settings 中的设置同样生效,例如:

(setq org-agenda-exporter-settings
      '((ps-number-of-columns 2)
        (ps-landscape-mode t)
        (org-agenda-add-entry-text-maxlines 5)
        (htmlize-output-type 'css)))

org-agenda-custom-commands 中的设置优先级更高。

也可在命令行使用:

emacs -eval (org-batch-store-agenda-views) -kill

如需修改参数108

emacs -eval '(org-batch-store-agenda-views                      \
              org-agenda-span (quote month)                     \
              org-agenda-start-day "2007-11-01"                 \
              org-agenda-include-diary nil                      \
              org-agenda-files (quote ("~/org/project.org")))'  \
      -kill

该命令限定仅从 ‘~/org/project.org’ 生成日程视图,不含日记内容,时间跨度为 30 天。

也可提取日程信息供其他程序进一步处理,详见 Extracting Agenda Information


Footnotes

(105)

HTML 导出需安装 Hrvoje Nikšić 的 ‘htmlize.el’ ,可从 NonGNU ELPA作者仓库 安装。

(106)

生成 PDF 输出需系统安装 Ghostscript ps2pdf 工具。选择导出 PDF 时同时会生成 PostScript 文件。

(107)

若需保存标准视图(如周日程、全局 TODO 列表),需先为其定义自定义命令才能指定导出文件。

(108)

引号规则因系统而异,示例见 FAQ。