Muse Customization

Customization

Muse 的项目树组织结构

可以采用两种方式组织muse的项目结构

  1. 并排项目结构(没有层次) 项目配置实例如下:
(setq muse-project-alist
      `(
	("Debian" ;项目名称
	 ("~/muse/source/wiki/debian" ;源文件的位置
	  :default "index" ;默认的project的主页
	  :force-publish ("WikiIndex"))	;发布项目时同时发布project的索引文件
	 (:base "wiki-xhtml" :path "~/muse/publish/wiki/debian")) ;发布路径
	("Emacs"
	 ("~/muse/source/wiki/emacs"
	  :default "index"
	  :force-publish ("WikiIndex"))
	 (:base "wiki-xhtml" :path "~/muse/publish/wiki/emacs"))
	("GNU"
	 ("~/muse/source/wiki/gnu"
	  :default "index"
	  :force-publish ("WikiIndex"))
	 (:base "wiki-xhtml" :path "~/muse/publish/wiki/gnu"))
	))
  1. 层次项目结构(目录树) 项目结构配置的时候需要注意,目录树中最下层的项目节点应该最早书写。
(setq muse-project-alist
      `(
	("Muse"
	 ("~/muse/source/wiki/gnu/emacs/muse"
	  :default "MuseIndex"
	  :force-publish ("index"))
	 (:base "wiki-xhtml" :path "~/muse/publish/wiki/gnu/emacs/muse"))
	("Debian"
	 ("~/muse/source/wiki/gnu/debian"
	  :default "index"
	  :force-publish ("WikiIndex"))
	 (:base "wiki-xhtml" :path "~/muse/publish/wiki/gnu/debian"))
	("Emacs"
	 ("~/muse/source/wiki/gnu/emacs"
	  :default "index"
	  :force-publish ("WikiIndex"))
	 (:base "wiki-xhtml" :path "~/muse/publish/wiki/gnu/emacs"))
	("GNU"
	 ("~/muse/source/wiki/gnu"
	  :default "index"
	  :force-publish ("WikiIndex"))
	 (:base "wiki-xhtml" :path "~/muse/publish/wiki/gnu"))

	("WiKi"
         (,@(muse-project-alist-dirs "~/muse/source/wiki") ;源文件路径
	  :default "index" ;默认项目主页
	  :force-publish ("WikiIndex"))
          ,@(muse-project-alist-styles "~/muse/source/wiki" ;还是源文件路径
				      "~/muse/publish/wiki" ;发布路径
                                      "wiki-xhtml"))
        ("Others"
	 ("~/muse/source/others"
	  :default "index"
	  :force-publish ("WikiIndex"))
	 (:base "xhtml" :path "~/muse/publish/others"))

	("Default"
         (,@(muse-project-alist-dirs "~/muse/source/default")
	  :default "index"
	  :force-publish ("WikiIndex"))
	  ,@(muse-project-alist-styles "~/muse/source/default"
				      "~/muse/publish"
                                      "default-xhtml"))
	))

;** Muse 的多级

Muse 的发布风格定制

Muse 的标签发布格式定制

Muse 发布拷贝所有资源文件夹

在每个Muse的发布目录下建立一个资源文件夹res,当项目发布的时候自动将该 目录拷贝到相应的项目的发布目录上去法,这样做的好处是在编辑文件的时候可以 相对于Muse源文件目录浏览文件,而在发布的时候可以使用发布目录的文件。

需要定义一个拷贝函数:

(defun kid-muse-html-copy-attachements ()
  (mapc #'(lambda (entry)
	    (let ((src (car entry))
		  (dest (cdr entry)))
	      (mapc #'(lambda (file)
			(let ((src-file file)
			      (dest-file
			       (concat dest "/" (file-name-nondirectory file))))
			  (if (file-newer-than-file-p
			       src-file
			       dest-file)
			      (copy-file src-file dest-file t))))
		    (directory-files src t "^[^.]")))) ;we must exclude `.' and `..'
	kid-muse-html-attachment-directories))
(add-hook 'muse-after-project-publish-hook
	  #'(lambda (proj)
	      (if (string= (car proj) "wiki")
		  (kid-muse-html-copy-attachements))))

然后在发布一个项目之前调用这个拷贝函数:


Wiki comments powered by Disqus