Emacs Wiki

本页目录
Emacs Wiki
设置多个project
设置发布网页的编码
使用导航菜单
使用本页目录
多个项目之间的相互引用
语法着色
Camelcase问题
通常需要修改的el文件
用Emacs Wiki写Blog
自动加载outline-minor-mode

topEmacs Wiki

  关于Wiki可以看看http://zh.wikipedia.org/wiki/的介绍。使用Emacs Wiki可以在本地创建一个Wiki,并能够将其输出为HTML网页,我的主页就是用Emacs Wiki写的。 可以到http://www.mwolson.org/projects/EmacsWiki.html下载最新版本的Emacs Wiki,安装和使用可以参照王垠的主页李宇的主页。下面介绍一些我在使用Emacs Wiki时遇到的一些问题。

top设置多个project

  在使用Emacs Wiki书写文档的时候,为了避免混乱,经常需要建立多个project。下面是我的配置:
(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")))))

top设置发布网页的编码

  用下面的命令设置发布网页的编码:
(setq emacs-wiki-meta-content-coding "gbk")
(setq emacs-wiki-meta-charset "gbk") 

top使用导航菜单

  首先需要在.emacs中添加
(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>
-->

top使用本页目录

  看到这个网页上面的本页目录了么?你可以通过在文件中加入下面语句来实现:
<contents depth="3">

  其中 depth 属性表示菜单显示到文档的第几层结构。

top多个项目之间的相互引用

  同一个项目中之间的引用很容易,只要
[[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之间相互引用了。

top语法着色

  本页上面引用了一些.emacs中的代码,它们都带有语法着色,这是通过使用 <src> 标签来实现的。要使用 <src> 标签需要在.emacs中加入
(require 'emacs-wiki-srctag)

  然后,可以像下面这样使用:

<src type="elisp">

elisp代码
</src>
目前emacs-wiki-srctag.el默认支持 elisp c c++ verilog 四种代码的语法着色,对应的type分别为 elisp c cpp vlog注意<src> 标签会使列表环境 终止,所以在列表环境中不要使用 <src> 标签。

topCamelcase问题

  在Emacs Wiki中所有Camelcase的符号都被作为链接处理,有时候会出现一些问题,可以通过在符号前面加上 <nop> 标签来解决。

top通常需要修改的el文件

  为了使Emacs Wiki生成的网页满足自己的需要,对于el文件的修改是必须的。通常需要修改的el文件及其主要作用如下:
文件作用
emacs-wiki-publish.el负责生成HTML文件
emacs-wiki-menu.el负责生成导航菜单的HTML代码
emacs-wiki.elEmacs Wiki的很多设置都在这个文件里面

top用Emacs Wiki写Blog

  到这里下载journal.el,配置和使用该网页上已经写了。如果用适当的stylesheet,Blog效果还是不错的。

top自动加载outline-minor-mode

  在使用Emacs Wiki的时候,outline-minor-mode是非常有用的,可以在.emacs中加入下面语句:
(add-hook 'emacs-wiki-mode-hook
          (function (lambda ()
                 (outline-minor-mode))))

这样进入emacs-wiki-mode的时候就会自动加载outline-minor-mode,关于outline-minor-mode的使用请看这里