Muse

Muse

Table of Contents:

什么是 Muse
Muse 的配置
Some Notes
HTML Tags
代码加亮

什么是 Muse

Muse 是 Emacs 中的一个撰写和发布文档的环境,它的前身是 emacs-wiki。 Muse 与它的前辈相比有诸多优点,比如多种发布格式的良好支持(包括 xhtml, latex, pdf, docbook...)和对工程的管理等等。新版本的 Muse 加入了代码加 亮功能。所以呢... 还在用 emacs-wiki 的同学们,赶快来感受 Muse 吧 ~

Muse 的配置

这个问题么... 其实呢,我自己也还没配置好 ~ Muse 相对 emacs-wiki 来 说配置起来要容易些。我不怎么会 elisp,所以也不会自己写函数,只是随便设 了一些变量,效果就是你现在看到的这样(当然有一个 css 的问题)。我的 Muse 配置如下:

(require 'muse-mode)
(require 'muse-publish)
(require 'muse-html)
(require 'muse-journal)

(muse-derive-style "wiki-xhtml" "xhtml"
                   :header "~/.emacs.d/muse/header.wiki"
                   :footer "~/.emacs.d/muse/footer.wiki"
)                               ; Self-defined style
(muse-derive-style "site-journal-xhtml" "journal-xhtml"
           :header "~/.journal/header.html"
           :footer "~/.journal/footer.html"
           :style-sheet "styles/default/style.css")
           ; Self-defined style
(setq muse-project-alist
      '(("muse-test"
         ("/media/d/text/muse-test" :default "index")
         (:base "wiki-xhtml" :path "/media/d/text/muse-test/public_html"))
        ("Wiki"
         ("/media/d/text/wiki" :default "index")
         (:base "wiki-xhtml"
          :path "/media/d/text/wiki/publish"
          :force-publish ("WikiIndex")))
        ("Journal"
         ("~/.journal" :default "index")
         (:base "site-journal-xhtml"
          :path "~/.journal/publish"))
))

(setq muse-html-style-sheet "styles/default/style.css")
(setq muse-html-meta-http-equiv "Content-Type")
(setq muse-html-meta-content-type "application/xhtml+xml")
(setq muse-html-meta-content-encoding 'detect)
(setq muse-html-charset-default "utf-8")
(setq muse-html-encoding-default "utf-8")
(setq muse-journal-date-format "%Y年%B%e日, %A")

我建了三个 projects,其中 muse-test 那个是测试用的,还没删... 剩下的相 信大家一看就明白。

Some Notes

HTML Tags

Muse 和 emacs-wiki 的一个很大的不同就是 emacs-wiki 只会发布成 html,因 此可以在源文件里随意的写 html tags,但是在 Muse 里是不行的。比如在 emacs-wiki 里写一句

<img class="smile" src="some pic.png" alt="" />

发布以后就会是一个图片,但是在 Muse 里这样写的话,它会把代码原样发布出 来。

代码加亮

Muse 的官方文档并没有给出使用代码加亮的具体方法(Fix: 最新的 3.03 版里 给出了使用方法),这里给个例子。

<src lang="scheme">
(define (double p)
  (lambda (x)
    (p (p x))))
</src>

上面这陀东西发布出来就会变成这样

(define (double p)
  (lambda (x)
    (p (p x))))

另外,Muse 的代码加亮是用 htmlize.el 完成的,所以颜色与代码在 Emacs 里 的颜色有关。我的 color-theme 恰好是一个暗色的主题,所以代码加亮在这里看 起来相当猥琐... 不知道有什么办法...

(FIX: 找到了一个比较 dirty 的办法:设置 before-publish-hookafter-publish-hook。看代码:

(setq muse-before-publish-hook
      'color-theme-blippblopp)
(setq muse-after-publish-hook
      (lambda ()
        (color-theme-deep-blue)
        (set-face-attribute
         'mode-line nil
         :background "#dedede" :foreground "#000000"
         :height 80
         :box nil)))

最后那几行是设置我的 mode-line。这个办法的 dirty 在于每次发布的时候 Emacs 都会乱闪,而且比较慢。)