今天在写《Emacs Org Mode 与 BibTeX 的结合》这篇笔记的时候,有一段如下的东西要放到文章里:
#+TODO: TODO(t) STARTED(s) | DONE(d) DEFERRED(f) REFTEX
结果我忘记在前面空格,导致我一用 C-c C-t 来设置 Org 笔记状态的时候,Emacs 只显示上面这几种状态。
害得我把今天在 .emacs 里新加的设置全部取消来找原因,折腾了很久,无果。最后碰巧发现是这句的问题,真是郁闷死了!
所以,以后用 Org Mode 写东西,注意放在 block 里的内容,最好都空格而不是顶格写。
我在多台电脑上使用 Emacs,同时也开启了 Desktop 功能,可是我并不想让所有电脑的 .emacs.desktop 存储的是同一批文件,这样我可以在不同的电脑上有针对性地干不同的事情。因此,我琢磨着,怎么在用 Dropbox 同步 Emacs 文件的时候,并不同步 .emacs.desktop 文件。
总的来说,可以有几种方法来设置这个 .emacs.desktop 的相关信息:
通过使用命令 M-x customize-group RET desktop 可以配置 desktop 的相关属性,即打开 desktop 组的设置选项进行相关设置。
(setq desktop-path '("~/.emacs.d/")) (setq desktop-dirname "~/.emacs.d/") (setq desktop-base-file-name ".emacs-desktop")
因为我用 Dropbox 在多台电脑里同步 Emacs 配置文件,所以采用的是第2种方法,这样各台机的配置就不会相互影响了。如果你需要针对不同的机器设置不同的参数,可以参考多台电脑间同步 Emacs 配置文件的方法,针对不同的机器使用不同的参数进行配置;如果设置项太多,还可以写成一个函数重复调用。
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
在 Emacs 里用 Org mode 来编辑,如果链接一张图片,只能显示图片的链接地址,并不能真正显示一张图片。
如果用 iimage 这个 minor mode,则可以使 Emacs 在编辑区里显示图片。下载 iimage.el 文件扔到 Emacs 的目录里,然后在 .emacs 里添加下面的代码:
;; iimage mode (autoload 'iimage-mode "iimage" "Support Inline image minor mode." t) (autoload 'turn-on-iimage-mode "iimage" "Turn on Inline image minor mode." t)
然后就可以用命令
M-x iimage-mode RET
在当前模式里启动 iimage 这个 minor mode。
如果想在 Emacs org 模式里启用 iimage 模式,把下面的代码放到配置文件里,则可以在 Emacs Org 的编辑区里显示图片。
(defun org-toggle-iimage-in-org () "display images in your org file" (interactive) (if (face-underline-p 'org-link) (set-face-underline-p 'org-link nil) (set-face-underline-p 'org-link t)) (iimage-mode))
以后要写图文并茂的笔记就方便多了,不用发布后再浏览图片在文章里的效果了。
可以用 M-x org-toggle-iimage-in-org 或 M-x iimage-mode 命令来激活 iimage 模式,类似以下这些链接形式会直接显示为图片:
file://foo.png `file://foo.png' [[foo.gif]] ‹foo.png› `foo.JPG'
对于经常写博客的人来说,挑选一个最适合发布博客的工具,是提高效率、减少出错可能性的一个好办法。在我写博客的过程中,我试用了不少的博客发布软件,比较喜欢的有下面几款,它们有各自的优缺点。
这个是我最常用的博客发布软件,它有一个最好的功能,就是可以同时发布多个博客,省去了在多个博客平台同步博客文章的麻烦。
这个是 Firefox 的插件,非常好用,功能简单明了,在 Firefox 里,看到什么网页内容有了灵感,马上就可以撰文发布,真是方便!缺点是不能同时发布博文到几个博客。
Google Chrome 版也出了 ScribeFire,而且做得非常漂亮,也支持直接贴图。
这个是微软少有做得非常精巧的工具,一扫微软东西丑、大、慢的特点,与 Live Spaces 结合得很紧密。缺点也是显而易见的,没有办法同时发布一篇文章到多个博客上。
WizKnowledge 是个人知识管理工具,它附带的博客发布功能比较弱,好像目前只支持 WordPress,而且没有目录、标签等功能。但是,有一点非常好,就是支持直接从网上复制图片并发布。相比于其它博客发布客户端,这种发布图片的功能,并不仅仅是外链一张其它网站的图片,而是直接把图片上传到你的服务器然后再显示出来。
其它博客发布工具不支持类似这种从网页上复制、上传图片功能,而只是添加一个图片外链,可能是出于图片版权之类的考虑。
这个基本上没啥好说的,Emacser 才会用的玩意,个人感觉不是太好用,补全做得也不好。
这些工具大体上来说功能都差不多,没有必要一直停留在琢磨用哪个工具好这一层面上。