(setq emacs-wiki-projects `(("Default" . ((emacs-wiki-directories . ("~/wiki/draft/Default")) (emacs-wiki-publishing-directory . "~/wiki/publish/Default"))) ("GNU" . ((emacs-wiki-directories . ("~/wiki/draft/GNU")) (emacs-wiki-publishing-directory . "~/wiki/publish/GNU"))) ("TeX" . ((emacs-wiki-directories . ("~/wiki/draft/TeX")) (emacs-wiki-publishing-directory . "~/wiki/publish/TeX"))) ("Programming" . ((emacs-wiki-directories . ("~/wiki/draft/Programming")) (emacs-wiki-publishing-directory . "~/wiki/publish/Programming"))) ("Reading" . ((emacs-wiki-directories . ("~/wiki/draft/Reading")) (emacs-wiki-publishing-directory . "~/wiki/publish/Reading"))) ("Others" . ((emacs-wiki-directories . ("~/wiki/draft/Others")) (emacs-wiki-publishing-directory . "~/wiki/publish/Others")))))
(setq emacs-wiki-meta-content-coding "gbk") (setq emacs-wiki-meta-charset "gbk")
(require 'emacs-wiki-menu)
然后设定菜单的生成方式,比较好用的生成方式是自己设定导航菜单项,下面是我的导航菜单设置:
(setq emacs-wiki-menu-factory 'emacs-wiki-menu-make-from-list)
(setq emacs-wiki-menu-definition '(("Default" "../Default/WelcomePage.html" "")
("GNU" "../GNU/WelcomePage.html" "")
("TeX" "../TeX/WelcomePage.html" "")
("Programming" "../Programming/WelcomePage.html" "")
("Reading" "../Reading/WelcomePage.html" "")
("Others" "../Others/WelcomePage.html" "")))
在header(emacs-wiki-publish.el中)中加入
<lisp>(when (boundp 'emacs-wiki-menu-factory)
(funcall emacs-wiki-menu-factory))</lisp>
这样默认就会生成导航菜单,如果不想在某一页加入导航菜单,则在该文件中加入
<!--
<lisp>(set (make-variable-buffer-local 'emacs-wiki-menu-factory)
'emacs-wiki-menu-no-menu)</lisp>
-->
<contents depth="3">
其中 depth 属性表示菜单显示到文档的第几层结构。
[[wikiname]]或者[[wikiname#anchorname]]
就可以了,而要在多个项目之间相互引用,首先要设置 emacs-wiki-inter-names :
(setq emacs-wiki-interwiki-names
'(("Default" .
(lambda (tag)
(concat "../Default/" tag ".html")))
("GNU" .
(lambda (tag)
(concat "../GNU/" tag ".html")))
("TeX" .
(lambda (tag)
(concat "../TeX/" tag ".html")))
("Programming" .
(lambda (tag)
(concat "../Programming/" tag ".html")))
("Reading" .
(lambda (tag)
(concat "../Reading/" tag ".html")))
("Others" .
(lambda (tag)
(concat "../Others/" tag ".html")))))
这样在就可以使用
[[projectname#wikiname]]
在不同的project之间相互引用了。
(require 'emacs-wiki-srctag)
然后,可以像下面这样使用:
<src type="elisp">目前emacs-wiki-srctag.el默认支持 elisp c c++ verilog 四种代码的语法着色,对应的type分别为 elisp c cpp vlog 。 注意 , <src> 标签会使列表环境 终止,所以在列表环境中不要使用 <src> 标签。
elisp代码
</src>
| 文件 | 作用 |
|---|---|
| emacs-wiki-publish.el | 负责生成HTML文件 |
| emacs-wiki-menu.el | 负责生成导航菜单的HTML代码 |
| emacs-wiki.el | Emacs Wiki的很多设置都在这个文件里面 |
(add-hook 'emacs-wiki-mode-hook
(function (lambda ()
(outline-minor-mode))))
这样进入emacs-wiki-mode的时候就会自动加载outline-minor-mode,关于outline-minor-mode的使用请看这里。