Emacs Org Mode 可以是一个优秀的笔记工具,可是,如果你想用它来写正式一点的论文,可以吗?当然可以了,你可以把 Org Mode 和 LaTeX 结合起来用,当然最重要的是要解决参考文献引用的问题。

整体的思路如下:

  1. 先准备好你的 BibTeX 文件 可以用 Emacs BibTeX Mode 或 JabRef 之类的方式来生成这个文件,当然也可以用其它文献管理工具,只要它能导出 BibTeX 文件即可。

  2. 用 Emacs Org 建立工程并记笔记 创建 Org 工程的时候,和一般的工程没有任何区别。

  3. 用 RefTeX 方式来插入 BibTeX 的记录

在这里,重点介绍一下第三个步骤,即如何在 Org Mode 里插入 BibTeX 记录。从官方的这篇参考文献里可以看出,我们可以用三种方法在 org 文件里引用 BibTeX 参考文献,从而插入 LaTeX 类的参考文献。

1). 最简单的办法,给所有的 Org 文件指定一个 BibTeX 文件,然后在 Org 文件里插入该 BibTeX 文件的参考文献记录

具体的办法,先把下面的代码放到 .emacs 里:

(setq reftex-default-bibliography
      (quote
       ("default.bib" "~/org/notes/refer.bib"))) 
(define-key org-mode-map (kbd "C-c )") 'reftex-citation)

在这里,我指定的 BibTeX 文件为 default.bib~/org/notes/refer.bib 。然后,可以在所有的 Org 文件里,通过命令 C-c )M-x reftex-citation 来进行参考文献的插入,根据提示进行相关操作即可。

2). 为特定的 Org 文件,指定特定的 BibTeX 文件

这个方法是 Marios Braindump 的博客里介绍的,具体方法如下:

先把下面的代码放到 .emacs 里:

(defun org-mode-reftex-setup ()
  (load-library "reftex")
  (and (buffer-file-name)
       (file-exists-p (buffer-file-name))
       (reftex-parse-all))
  (define-key org-mode-map (kbd "C-c )") 'reftex-citation))
(add-hook 'org-mode-hook 'org-mode-reftex-setup)

然后在你需要插入 BibTeX 参考文献的 Org 文件里,加入下面这段话(可以是任意位置):

\bibliographystyle{plain}
\bibliography{BIB-NAME}

把上面的 BIB-NAME 换成你想指定的 BibTeX 文件,这样就可以对该 Org 文件指定特定的 BibTeX 文件,然后可以用 C-c )M-x reftex-citation 来插入该 BibTeX 文件里的参考文献。

上面的代码会在 Emacs 启动的时候,要求你指定一个 master 文件,用来存储生成的 tex 文件。

3). 另外一种方法,实现为特定的 Org 文件指定特定 BibTeX 文件的功能

还有另外一种方法,可以实现第2种方法类似的功能,即为特定 Org 文件指定特定 BibTeX 文件的方法。把下面的代码放到 .emacs 文件里:

(defun org-mode-article-modes ()
  (reftex-mode t)
  (and (buffer-file-name)
       (file-exists-p (buffer-file-name))
       (reftex-parse-all)))

(add-hook 'org-mode-hook
          (lambda ()
            (if (member "REFTEX" org-todo-keywords-1)
                (org-mode-article-modes))))

然后把下面这一行加到你需要插入 BibTeX 的 Org 文件的开头:

#+TODO: TODO(t) STARTED(s) | DONE(d) DEFERRED(f) REFTEX        

其它步骤与第2种方法类似。这种方法我没有仔细测试,有兴趣的 Emacser 们可以试试。

通过以上方法,就可以在用 Org Mode 打造的笔记本里,很方便地索引 BibTeX 里的参考文献了。

当然,如果你不喜欢用 Org Mode,也有其它用 Emacs 来写论文的思路,例如:Emacs + AucTeX + RefTeX + Outline-minor-mode