Posted on 27-07-2010
Filed Under (技术) by waterlin

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

(1) Comment    Read More   
Posted on 25-02-2009
Filed Under (技术) by waterlin

TeX里,你定义\title{}\author{},然后再用\maketitle生成标题,默认的情况下,会生成一个写作日期在标题下,此代码类似于:

\title{机器学习—人工智能技术的基础}
\author{Water Lin}
\maketitle

如果不需要日期,可以用在\maketitle前加上一个空的\date{},即用类似于如下的代码:

\title{机器学习—人工智能技术的基础}
\author{Water Lin}
\date{}
\maketitle

这样生成的文章标题就不会有日期。

(0) Comments    Read More   
Posted on 06-01-2009
Filed Under (技术) by waterlin

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文件了。

(0) Comments    Read More