如何定义 org-mode HTML 导出的模板?

如何定义 org-mode HTML 导出的模板?

我正在使用 org-mode 从我的笔记生成 html 页面。我使用了将 Org-mode 文件发布为 HTML设置博客系统。

我已经定义了一个导出模板。但要使用它,我必须在我的 notes 项目中的每个 org 文件顶部添加以下行。

#+SETUPFILE: ~/.emacs.d/org-templates/level-0.org

有没有办法设置这个.emacs或自定义一个 org-mode 变量,这样我就不必在每个文件中都放置这一行?

根据org-mode 手册#+SETUPFILE是缓冲区内的设置。这是否意味着我无法为所有 org 文件全局定义它?

这些 SU 上的答案告诉了如何自定义 HTML 导出样式。但我的模板文件除了 CSS 样式外还包含其他设置。因此仅自定义样式对我来说不起作用。

答案1

这是我的理解。

如果需要全局定义设置,则应该定义HTML/LaTeX 导出器的选项org-publish-project-alist里面.emacs

#+SETUPFILE当你需要覆盖全局设置并为少数或单个文件定义自定义设置时,可以使用这个。如果这些设置经常使用,你可以定义一个模板,并使用 SETUPFILE 来指示 org-mode 使用该模板导出此 org 文件。

因此,我通过定义全局设置解决了我的问题,.emacs并放弃了使用全局模板的想法


     :author "Andy"
     :email "[email protected]"
     :language "en"
     :link_home "index.html"
     :style "<link rel=\"stylesheet\" type=\"text/css\" href=\"css/style.css\" />

答案2

你可以添加org-publish-before-export-hook使用类似函数

(defun my-add-setup ()
  "Insert SETUPFILE statement in the beginning of the buffer for export ONLY."
  (interactive) ; for testing in scratch
  (goto-char (point-min))
  (insert "#+SETUPFILE: ~/.emacs.d/org-templates/level-0.org\n")
)

PS:我自己没有尝试过。

相关内容