Org-mode, Jekyll和IPython
很久以前我就知道Emacs和Org-mode了,但也就是好奇了解下,没有认真地用过。最近看了两个关于如何使研究可重现的视频,org-mode for Reproducible Research 和 Emacs + org-mode + python in reproducible research,深感org的强大,于是开始走上了emacs和org的不归路(误)。在这里记录一下我是怎样设置org-mode的。
设置Org-mode
google一下之后我找到了org-jekyll-mode。 作者博客已经把配置写得很清楚了,设置好几 个环境变量之后就可以开始写。但是可能因为emacs和org-mode版本不同,我export的时候 会报错。debug后发现是必须把四个关于目录的环境变量设置好才能顺利导出:
(setq org-jekyll/jekyll-project-root "~/src/semio.github.io/") (setq org-jekyll/org-mode-project-root "~/src/org/blog/") (setq org-jekyll/org-mode-static-files-folder-name "assets") (setq org-jekyll/jekyll-static-folder-name "assets")
除此之外插件的脚本还有一些小修改才符合我的使用需要,我把我用的脚本放到了 gist 上。如果不想用这个插件,还可以参考org-mode官网的文档 来做。不过我没尝试过官 网的方法,不知道能不能很好地处理图片等外部文件。
ipython代码块
如果你和我一样经常用ipython notebook,那么你也可以尝试下把你的notebook内容保存成 Org格式。这样做的好处主要是:
- ipython notebook的文件难以维护,而org-mode是纯文本
- org-mode能够不仅能运行ipython,现阶段支持的语言比ipython多,免去写其他kernel的麻烦
- org-mode下是用Emacs来编辑代码,编辑功能比ipython notebook
要在org-mode下用ipython src block,需要安装ob-ipython 插件。然后就可以按org-mode 的代码块格式来用了:
#+BEGIN_SRC ipython :session source code here... #+END_SRC
最后看看代码高亮和图片。。
%matplotlib inline import numpy as np from scipy import stats import matplotlib.pyplot as plt import seaborn as sns sns.set_style('white') sns.set_context('notebook') nums = stats.norm.rvs(size=1000) plt.hist(nums, bins=50, histtype='stepfilled', alpha=.75)
以上。