在之前,如果想让 Org 文件在保存时自动导出,可以在其开头配置本地变量:
# -*- after-save-hook: org-latex-export-to-latex; org-export-in-background: t; -*-
但这还是太长了一点,不便记忆也不便输入。 而且,每次打开文件时还可能弹出警告。 ——不够优雅。
这里提供一种基于 Org 文件自定义属性的方案。 Elisp 配置如下:
(defun my-org-oxauto ()
"Auto export when saving for Org mode."
(let ((oxauto (org-collect-keywords '("oxauto"))))
(when oxauto
(dolist (keywords oxauto)
(let ((export-formats (split-string (cadr keywords) "," t " ")))
(dolist (export-format export-formats)
(pcase export-format
("latex"
(setq org-export-in-background t)
(add-hook 'after-save-hook 'org-latex-export-to-latex nil t))
("html"
(setq org-export-in-background t)
(add-hook 'after-save-hook 'org-html-export-to-html nil t))
)))))))
(add-hook 'org-mode-hook 'my-org-oxauto)
用法:在 Org 文件中,使用 #+oxauto:
指定要自动导出的格式名称,多个格式名称用逗号分隔。
例如 #+oxauto: html,latex
,这样在每次保存时就会在后台自动导出到 html 和 latex。
以上示例仅支持 html 和 latex,想要使用其他导出格式也较为容易,向 (pcase export-format
这行下面添加对应格式的配置即可。
注意,可能需要 kill buffer 再重进才能生效。