Emacs Org Mode 可以是一个优秀的笔记工具,可是,如果你想用它来写正式一点的论文,可以吗?当然可以了,你可以把 Org Mode 和 LaTeX 结合起来用,当然最重要的是要解决参考文献引用的问题。
整体的思路如下:
可以用 Emacs BibTeX Mode 或 JabRef 之类的方式来生成这个文件,当然也可以用其它文献管理工具,只要它能导出 BibTeX 文件即可。
创建 Org 工程的时候,和一般的工程没有任何区别。
在这里,重点介绍一下第三个步骤,即如何在 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
在TeX里,你定义\title{}、\author{},然后再用\maketitle生成标题,默认的情况下,会生成一个写作日期在标题下,此代码类似于:
\title{机器学习—人工智能技术的基础}
\author{Water Lin}
\maketitle
如果不需要日期,可以用在\maketitle前加上一个空的\date{},即用类似于如下的代码:
\title{机器学习—人工智能技术的基础}
\author{Water Lin}
\date{}
\maketitle
这样生成的文章标题就不会有日期。
1) 安装TeX Live 2008
TeX Live 2008在Windows下的安装非常简单,去TeX Live的网站上把iso文件下载下来,导入虚拟光驱自动运行,根据弹出来的界面自动安装就可以了。
PS:TeX Live的安装界面好丑,汗一个!
2) 配置Emacs的AUCTeX
把AUCTeX包下载下来,在Windows下的安装非常简单,这个包已经是编译好的,解压后直接扔到Emacs的path里,然后在.emacs里添加下面的语句:
(load “auctex.el” nil t t)
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-master nil)
(load “preview-latex.el” nil t t)
这样保证Emacs会启动AUCTeX模式,现在可以开始测试一下了。
3) 测试AUCTeX和Tex Live
重启Emacs,新建一个以.tex为后缀的文件,输入以下代码:
\documentclass{article}
\begin{document}
Small is beautiful.
\end{document}
再用C-c C-c命令,按默认的Emacs提示操作即可。如果一切顺利的话,Emacs会提示生成了一个pdf文件,这个文件就是我们想要得到的目标文件。
记得,安装完TeX Live后,要重启Emacs,这样Emacs才会重新读入Windows系统的path变量,才能找到pdflatex、latex这些命令;否则eshell会提示找不到这些命令。
4) 测试AUCTeX和TeX Live,用以生成中文文档
TeX Live自带有一些中文字体,测试生成中文文档的话,可以用下面这段代码:
\documentclass{article}
\usepackage{CJK}
\begin{document}
\begin{CJK}{GB}{gbsn}
你 好
\end{CJK}
\end{document}
如果运气好的话,你就可以得到一个中文的pdf文件了。