分类:
2009-05-22 14:35:26
引用 上的一句话来说:
Emacs Muse is an authoring and publishing environment for Emacs. It simplifies the process of writing documents and publishing them to various output formats (HTML, PDF, DocBook, LaTeX, and more).
用 Muse 来写笔记是非常方便的,简易方便又实用的语法规则,并且在 里面能够达到一定的``所见即所得''的效果,可以输出为 TeX 、 pdf 、 html 等多种格式。固然,他的简易的语法不能像 html 那样的灵活性,也不会有LaTeX 那么强大,但是关键的地方是他的易用性,对于日常的笔记工作,不会有太多的复杂的要求,用 Muse 来完成是最合适不过的了!而且,Muse 还提供了一个
标签,里面的东西是不归 Muse 来解释,而由输出后的文档格式来解释。例如,现在 Muse 对表格的支持还很有限,你可以通过在
标签里面插入 html 表格的办法来产生复杂的表格,你也可以在
标签里面输入 TeX 格式的数学公式,这样产生的 TeX 或者 pdf 文档也是可以有漂亮的数学公式的。
总之, Muse 为你省去了平日重复输入繁琐的 html 标签或者 LaTeX 命令的工作,为你提供了一个清爽的环境,同时又不失灵活性,可以在必要的时候使用输出格式所专有的语法。它甚至有一个
标签可以嵌入 执行的结果!
我一般是把自己的笔记输出为 html 格式,这样就得弄一些漂亮的 css 属性,于是在学习 css 的过程中我慢慢收集了一些,以把自己的笔记妆点得漂亮一点。 :)
不过 Muse 由于支持多种格式,所以目前很多功能还不如 emacs-wiki ,比如 fancy table 功能,以及格式化源代码的功能。我模仿 emacs-wiki 里面的扩展弄了一个 功能,使用就像 emacs-wiki 里面那样方便,不过这只是针对 html 一类的输出格式有用而已。
另外,Muse 还借鉴了 latex2png.el 在 html 输出格式中可以嵌入 latex 的公式。在有介绍和我的配置。
如果是一个比较大的 Muse 文档的话,结构会越来越不清楚,定位也会有困难,这个时候可以打开 ,可以只显示一个骨干结构或者是只显示某个部分,结构非常清晰,编辑也非常方便。在把 TAB
键 就更加方便了。
另外,默认在 muse-mode
里面识别 outline 标题的正则表达式是 "\\*+"
,这有时候会识别错误,因为在 Muse 里面 *
还可以用于表示强调,如果强调的那个词刚好在行首的话就会识别错误了。事实上,如果是标题的话, *
后面应该至少还要有一个空格,所以这里可以修改一下这个正则表达式。这是一个buffer 局部变量,所以可以在 muse-mode
的 hook 里面修改而不用担心影响到全局的值。另外,打开文档的时候就使用 hide-body
来让他只显示框架是很不错的一个选择:
另外,在编辑 Muse 文档的时候经常要输入类似 [[Emacs]]
这类的东西,有时候很麻烦,可以使用功能来解决这个问题。
如果平时在使用缩写词功能,那么只要定义 muse-mode
里面的缩写词,并保存到文件,启动的时候加载就行了。如果平时并没有使用什么缩写词功能,只是在 muse-mode
里面才使用的话,也可以在 ~/.emacs
里面加入定义缩写词的语句:
并在 muse-mode
的 hook 里面打开 abbrev-mode
就可以了。
当然,直接使用 更方便了。需要注意一点的是,muse 绑定了
键,而 是绑定的 TAB
键,在 X 下面的话就无法使用 TAB
在各个域之间切换了,这个时候可以使用 C-i
。
默认情况下 TAB
键会在各个链接之间跳转,我觉得这没有什么用处,而且很烦人,我更喜欢让 TAB
键帮我缩进到正确的位置,于是我做了下面的绑定:
或者,使用更舒服的 的绑定。
org-mode
和 muse-mode
有很多相似的地方,但是,可以说,他们的起源不同: muse-mode
主要是来源于 emacs-wiki-mode
,主要侧重于发布,因此在支持的发布格式以及发布格式的可定制性方面远胜于 org-mode
;而 org-mode
最初设置的目的是用于记事、维护 TODO 列表以及制作日程、计划等,侧重于编辑和交互,因此 org-mode
在交互(例如方便的 TAB
键行使 操作)和编辑(例如方便强大的表格编辑功能)方面比 muse-mode
要舒服很多。
现在有一些人也在考虑融合两者之间的优点,只是还没有什么明显的进展。我在这里介绍一些我自己的一些经验。
muse-mode
默认是把标题按照比例放大来显示的,我更喜欢 org-mode
那种(其实是来源于最初的 )不放大字体,而以不同的颜色来显示的方式。其实 Muse 已经有这个选项了:
muse-mode
里面 TAB
键默认被绑定到了 muse-next-reference
上,我基本上从来没有用过这个功能,而且还经常按错。因此我一般是。后来我发现 org-mode
里面的 TAB
说绑定的 org-cycle
命令不在 org-mode
里面也可以使用。于是便绑定了过来:
org-mode
的这个 org-cycle
命令非常方便,在标题的地方会执行相应的 操作,其他地方则是相应的缩进操作。当然,也需要在 muse-mode
里面 ,否则 Muse 自己的一些颜色显示等有时候会混乱起来。
通常,如果你想要保证自己的 Muse 代码是可以通用地转换到任何格式,那么在里面使用某一种输出格式专有的语句通常是不被推荐的。
在 ASCII 码里面, C-i
和 TAB
是相同的字符。如果终端能够把两者区分开(如果在 X 窗口下运行,通常是可以区分开的), 将两者分别解释作整数 9 和 symbol `tab' 。通常情况下,区分这两者并没有什么用处,因此默认情况下 function-key-map
被设置为把 `tab' 映射到 9 上。这里 muse 重新绑定了 `tab' ,不再映射到 9 上,所以再这里无效了。但是可以直接使用 C-i
(即 ASCII 码的 9)。