在org-html-export中缓冲本地导出选项

时间:2014-07-30 12:23:38

标签: emacs org-mode

我正在使用org-mode创建一个简单的网页,并使用org-html-postamble为我的项目执行时间戳和版权声明,如here所述。现在我想只为其中一个源文件禁用后同步码。我可以使用缓冲区本地选项执行此操作,如下所述:http://orgmode.org/manual/Export-settings.html

我试过

#+ORG_HTML_POSTAMBLE: nil

无济于事。

编辑:我在更多研究表明为什么它不起作用后更新了问题。

2 个答案:

答案 0 :(得分:2)

如果您正在谈论文件而不仅仅是缓冲区,则可以添加local variables list。将以下行放在文件的第一行:

## -*- org-export-html-postamble: nil -*-

或者将以下块放在别处(可能在文件的最后):

## Local Variables:
## org-export-html-postamble: nil
## End:

否则,您可以通过将此组件放在缓冲区中来临时绑定变量(这可能是最常用的方式):

#+BIND: org-export-html-postamble nil

基于the org manual export settings page的以下代码段:

如果org-export-allow-bind-keywords为非零,则Emacs变量可以在导出期间使用BIND关键字变为缓冲区本地。它的语法是'#+ BIND:variable value'。这对于无法使用特定关键字进行更改的缓冲区内设置特别有用。

答案 1 :(得分:0)

问题的答案是" no"。文件局部变量不会优先于项目列表中定义的内容。引用org-html-postamble的变量描述:

Setting :html-postamble in publishing projects will take precedence over this variable.

我的解决方案是定义两个函数

(defun first-postamble (plist) (format "(c) Donald Duck - %s" (format-time-string "%d %b %Y")))
(defun second-postamble (plist) (format "(c) Daisy Duck - %s" (format-time-string "%d %b %Y")))

在我的.emacs中,然后在需要第一个后同步码的缓冲区中使用#+BIND: org-html-postamble first-postamble,相应地在第二个后同步码中使用{{1}}。