用户工具

站点工具


doc:r:reference

利用 Emacs 的 org-mode 管理文献

俗话说,“好记性不如烂笔头”。文献管理,不仅对科研工作者,对普通的用户也是必需的。看过的文献,写写心得做做笔记,以后写文章旁征博引的时候就不至于心乱如麻。

已有一些开源的文献管理的工具广受欢迎,如 JabRef、docear 等。一些常见的工具软件,读者可参阅 文献管理软件比较

这里,我介绍另外一种简便的方法:利用 Emacs 的 org-mode 管理文献。原因有二:(1)Emacs 是可以使用一生的编辑器;(2)org-mode是做笔记的强大工具。

本着简单为美,高效为目的的原则,充分利用已有资源,本 wiki 的方法(源自 http://tincman.wordpress.com/2011/01/04/research-paper-management-with-emacs-org-mode-and-reftex/)能够出色地完成文献管理的任务。

利用 Google Scholar 导出 bibtex 文件

写科技文章,TeX 排版工具是必须掌握的。现在的国际会议和期刊,哪个不要求 TeX 排版?我们假定读者熟悉 TeX 排版,了解最简单的 Emacs 使用方法。

在 TeX 中,文献的索引来自独立文件 *.bib,它的格式必须通过 bibtex 的编译。文献管理软件 RefDB介绍了如何从 RIS 格式转化为 bib 格式。RefDB 是图书馆时代的产物,随着 Google Scholar 的普及,我们有更便捷的文献管理方法。

Google Scholar 提供了搜索文献和导出其 bibtex 描述的强大功能,它在某种程度上替代了图书馆检索和某些专业数据库检索(如 PubMed 等),让更多的人能够方便地检索到文献。在知识共享的年代,我认为,Google Scholar 是 Google 公司最伟大的产品之一。

文献管理有哪些功能?

一个文献管理软件,必须具备以下几项功能。

  1. bibtex 格式
  2. 文章标题、作者、期刊名等关键词搜索
  3. 链接到本地保存的文章(一般为 PDF 格式)
  4. 做笔记(写文章的时候,笔记很重要)
  5. 在 TeX 文档中利用 \cite{} 索引

准备工作

我当前使用的 Emacs 版本是 GNU Emacs 24.3.1(在更低的版本上我没有试验过),自带了 RefTeX。

需要额外安装的是 /usr/ports/deskutils/org-mode.el。

建立目录 ~/reference,里面建立目录 ~/reference/papers。另外,

IOU@~/reference$ touch notes.org
IOU@~/reference$ touch reference.bib

要求 notes.org 文件的开头是

# \bibliography{~/reference/reference.bib}

为了演示方便起见,reference.bib 里只有一篇文献

@Article{     blei2012probabilistic,
  title     = {Probabilistic topic models},
  author    = {Blei, David M},
  journal   = {Communications of the ACM},
  volume    = {55},
  number    = {4},
  pages     = {77--84},
  year      = {2012},
  publisher = {ACM}
}

该文章取名为 blei2012probabilistic.pdf,存放于 ~/reference/papers/ 下。

.emacs 里的一些设置

在 $HOME/.emacs 文件里,添加以下设置。

;; 定义 org-mode-reftex-search
(defun org-mode-reftex-search ()
 ;; jump to the notes for the paper pointed to at from reftex search
 (interactive)
 (org-open-link-from-string (format "[[notes:%s]]" (reftex-citation t))))

(setq org-link-abbrev-alist
 '(("bib" . "~/reference/reference.bib::%s")
   ("notes" . "~/reference/org/notes.org::#%s")
   ("papers" . "~/reference/papers/%s.pdf")))
   
;; 当使用 org-mode 时,自动调 RefTeX
(defun org-mode-reftex-setup ()
  (load-library "reftex")
  (and (buffer-file-name) (file-exists-p (buffer-file-name))
       (progn
    ;; enable auto-revert-mode to update reftex when bibtex file changes on disk
    (global-auto-revert-mode t)
    (reftex-parse-all)
    ;; add a custom reftex cite format to insert links
    (reftex-set-cite-format
      '((?b . "[[bib:%l][%l-bib]]")
        (?c . "\\cite{%l}")
        (?n . "[[notes:%l][%l-notes]]")
        (?p . "[[papers:%l][%l-paper]]")
        (?t . "%t")
        (?h . "** %t\n:PROPERTIES:\n:Custom_ID: %l\n:END:\n[[papers:%l][%l-paper]]")))))
  (define-key org-mode-map (kbd "C-c )") 'reftex-citation)
  ;; binding of  ”C-c (” to org-mode-reftex-search
  (define-key org-mode-map (kbd "C-c (") 'org-mode-reftex-search))

(add-hook 'org-mode-hook 'org-mode-reftex-setup)

如何使用 notes.org 来管理文献

org-mode 是利用 Emacs 做笔记的强大工具,可以直接生成 html、TeX、PDF 等文档。

  • 用 emacs 打开 notes.org 文件,将光标放置于某空行,利用命令 “C-c )” 来建立文献索引入口,可以是 bibtex 的入口,也可以是 PDF 文件的入口,也可以是 \cite{}。
  • 命令 ”C-c (“ 可进行正则表达式搜索
  • 要打开入口,只需光标停留在入口上,键入 “C-c C-o” 命令即可。
  • 利用命令 “C-c \” 来搜索关键词。

效果图

/data/vhosts/wiki-data/pages/doc/r/reference.txt · 最后更改: 2013/05/27 09:30 由 IOU