为什么选择Org Mode
Org Mode是Emacs的一套语法规则。OrgMode的官方网站 是这样介绍自己的:
Org mode is for keeping notes, maintaining TODO lists, planning projects, and authoring documents with a fast and effective plain-text system.
和Markdown的语法规则比较,Orgmode的语法规则更加严密,由于统一的开发团队维护,OrgMode采用了统一的语法规则,没有发展出不同“Flavor”的方言语法。因此与Markdown来比,具有更好的语法一致性。
和Python社区中著名的ReStructuredText语法定义相比,Org mode的语法更简单轻便,具有更好的易用性。
当然,更重要的是在Emacs中Org Mode不单单是一套基于文本格式的文档编写规范,还可以轻松的变身成为事务管理工具、项目管理工具、编程工具(文学编程——Literate programming)、高大上的研究报告编写工具(支持公式、表格、图表),甚至可以替代部分Excel的功能而成为财务计算工具。
可以说,使用OrgMode进行写作,学习成本付出之后是有更多的回报的——性价比更高。有多少朋友就是因为OrgMode而投入到了Emacs的阵营之中啊(嗯,必须承认,我也是因为这个才离开了Vim,投入到Emacs之中的)。
Org Mode 基本语法和使用
使用Org Mode进行写作,所需要的使用到的语法规则非常简单,根据我的体会记录如下:
标题
Org Mode提供了多级标题定义的能力。具体如下:
* 这是一级标题
** 这是二级标题
*** 这是三级标题
**** 这是四级标题
......
根据顶行使用的“*”的数量,几级标题使用几个“*”即定义了当前的标题是几级标题。
在Emacs中可以使用快捷键加速标题的设置
- TAB :在标题上按下<TAB>键,可以折叠或展开,确定是否显示该标题下的所以内容(含子标题)
- Alt - Enter : 快速建立同级标题(不用自己数星星啦)
- Alt - 方向键(左右):快速提升或降低标题级别。该标题下的相关正文同步调整缩进
- Alt - 方向键(上下):调整标题在文档中的位置。可连同子标题一起调整位置
引用
在Org Mode中引用文字非常简单,按如下方式写即可:
#+BEGIN_QUOTE
引用的文字
#+END_QUOTE
超链接
Org Mode的超级链接定义如下:
形式1: [[http://url][描述]]
形式2: [[http://url]]
Org Mode支持多种不同的互联网协议,具体的协议列表可以看Org Mode的手册
图片
本质上来说,图片也是一种超级链接。所以它的书写方式和链接很像:
#+CAPTION: This is the caption for the next figure link
#+NAME: fig:SED-HR4049
[[link_to_image.jpg]]
表格
Org Mode的表格功能异常强大。对于写作来说,仅仅使用到了表格的快速编制的功能。要知道,在文本格式下,目前我还没有看到那个软件可以相Emacs + Org Mode 这样方便快捷的。
- 创建表格,
-
输入下属内容:
| This | is | My | First | table | |-
-
按下<TAB>,Emacs 自动为你创建好了表格:
| This | is | My | First | table | |------+----+----+-------+-------| | | | | | |
-
- 编辑表格:
使用<TAB>键,可以在各个格子之中灵活跳转。在到达行尾之后继续按下<tab>会创建新的行供继续输入
说明 : 遗憾的是目前OrgMode在输出为Markdown是貌似对表格的支持不对,生成了一堆HTML代码。咋办?
列表
在非顶行的情况下,*、+、-、可以成为非编号列表的标记:
* 列表项1
+ 子列表项
* 列表项2
1. 子列表项
* 列表项3
使用数字,则可以成为带编号的列表:
1. 列表项1
* 子列表项
2. 列表项2
在Emacs中使用列表项后的快捷键:
- Alt - 方向键(左右):调整列表项的缩进
- Alt - Enter: 在现有列表项下创建新的列表,非编号的自动创建非编号项,带编号的自动创建新的编号项并自动调整相关编号号码。
特殊格式
-
加粗:
*加粗*
-
下划线:
_下划线_
-
删除线
_下划线_
-
斜体
/斜体/
-
下标
H_2O :水的分子式
-
上标
E=mc^2
-
行内代码(等宽字)
=#include <stdio.h>= 或者 ~#include <stdio.h>~
输出Org Mode到Markdown
Org Mode完成写作之后,可以非常方便的将文档转换成其他格式,例如Markdown。看截图:
Org Mode的文档转换从上面的截图可以看到,Org Mode可以支持输出到iCalendar/HTML/LaTex/Markdown/Plain Text等多种格式。实际上,Org Mode还可以支持更多的文档输出格式,这里就不一一介绍了。
默认情况下,Org Mode没有打开Markdown文档的转换功能,需要将下面的小代码放到Emacs 的启动配置文件中:
(setq org-export-backends (quote (ascii html icalendar latex md)))
能输入到Markdown,那么不就可以方便的将文档发布到 简书 了?
在每一篇文章前加入下面的控制代码, 能更好的符合 简书 的Markdown语法规范
#+OPTIONS: toc:nil
哈哈,鱼与熊掌可以兼得啊!
哦,One More Thing,发动文档转化的快捷键是按顺序按下的组合键(Ctrl-c Ctrl-e)。:)
网友评论
https://github.com/stephen0921/gen_wave
_下划线_
应该是 +删除线+
'(require 'ox-md nil t))
也能输出markdown
PS:我用的是Emacs 24.4自带的org mode 。看看是不是由于org mode版本的问题带来的不满意?