使用org怎样定义一个自己的导出template

在.org文件中C-c C-e #可以看到几个org-export-insert-default-template

选择后能在org文件头插入一些配置。

我想请教两个问题: 我想设置一个自己的template该怎么做? 能不能让每次新建org文件时自动在文件头插入我的配置?

因为我用org比较多,所以只问了org里该怎么做。刚刚网上查了一下,有提到AutoInsertMode,据说能够依据文件后缀自动插入一些内容,不知道坛里有没有用这个的。

  • Snippet 显然比 AutoInsert 好用&好写。

AutoInsert 完全是在拼字符串,要在里边调个函数还得转义。用起来也死板,比如要区别各种不同类型的 org 文件。必须扩展后缀名:.foo.org,.bar.org,。。。你在 *.foo.org 文件里边不能插入 *.bar.org 的模版。

用 Snippet 就可以随意组合了,在同一篇 org 里插入optsfoo,optsbar,。。。假设你定义了这些。

  • 还可以看看 org-structure-template-alist,就是按 <sTAB 的那些模版。
1 个赞

写一个新的 Emacs Lisp 文件的时我一直用 M-x auto-insert 插入模版,不然复制粘贴加修改会麻烦的多。

看了下 org-export-insert-default-template 函数,它的模版来源其实是:

name        backend
---------   ---------------
default     ox.el
ascii       ox-ascii.el
html        ox-html.el
icalendar   ox-icalendar.el
latex       ox-latex.el
odt         ox-odt.el
...         ox-....el

扩展起来有点麻烦,还是 Snippet 和 org-structure-template-alist 容易实现,使用上比起 AutoInsert 也更自由。