用emacs org-mode写cnblogs博客
1 引言
以下3点叙述了为什么我要通过org-mode来书写cnblogs:
1.目前通过emacs的博客插件可以书写wordpress等类型的博客,但是写cnblogs的时候会有一些问题,折腾了很久没有出来结果,也可以参考博文:(未解决)使用emacs写cnblogs 1
2.很喜欢org-mode的写作模式,我想用emacs的朋友很多都对org-mode非常有印象,org-mode的写作方式非常喜欢,结构化的视图,而我只要更专注里内容地表述上就可以了。org-mode可以导出成html,latex,docbook,mindmap等多种形式。
3.代码的着色问题。当然cnblogs的插入代码已经非常优秀了,包含了非常多语言的代码着色,但是毕竟能列举的还是有限的,不能自己来进行扩展。而org-mode利用htmlize在这方面就非常出色,利用emacs的扩展性,只要emacs能高亮的代码,就能够利用htmlize输出。比如Elisp就能很好地在cnblogs上进行语法高亮。下面会有效果演示。也可以使用其他方式进行小众语言的代码着色,可以参考博文:在博客园添加Lisp(或其它)代码高亮 2
2 功能和问题
虽然利用org-mode能达到一些效果,但是实际使用地时候还是会遇到一些问题。 下面我利用一张org-mode导出地mindmap图来显示下整个过程和存在的问题。
3 效果演示
3.1 表格和图片效果
org代码:
| 姓名 | 性别 | 描述 | |--------+------+------| | 张三 | 男 | 张哥 | | 李四 | 女 | 李姐 | | 某某 | 男 | 某某 | | 莫某某 | 男 | 某某 |
效果:
姓名 | 性别 | 描述 |
---|---|---|
张三 | 男 | 张哥 |
李四 | 女 | 李姐 |
某某 | 男 | 某某 |
莫某某 | 男 | 某某 |
[[....url/a.jpg]]
3.2 代码着色效果
3.2.1 java
下面是java的代码高亮效果演示:
public void run() { // Loop until the termination semaphore is set while (!threadDone) { threadSleep(); try { log(); } catch (IOException ioe) { threadDone = true; } } }
3.2.2 Elisp
下面是Elisp的代码高亮效果演示:
;;;;;;;;;设置elisp的函数,变量追踪 (define-key global-map (kbd "C-c j") 'find-tag-at-point) (defun find-tag-at-point () "Find variable or function at point." (interactive) (let ((variable (variable-at-point)) (function (function-called-at-point))) (if (equal variable 0) (if function (find-function-do-it function nil 'switch-to-buffer)) (find-variable-at-point)) (find-file-at-point))) ;;;;;;;;;设置bookmark的ido候选方式 (defun bookmark-ido-read() (interactive) (bookmark-maybe-load-default-file) (let ((choise (ido-completing-read ">" bookmark-alist ))) (bookmark-jump choise))) (define-key global-map (kbd "C-x rb") 'bookmark-ido-read)
3.3 大纲结构效果
这篇博文的大纲结构就是org-mode导出的效果
3.4 脚注效果
可以参看本文地脚注部分,footnotes。