J.4. 文档写作

J.4.1. Emacs/PSGML
J.4.2. 其他 Emacs 模式

SGMLDocBook没有受到开源写作工具的过度影响。最常用的工具集是带有适当编辑模式的Emacs/XEmacs编辑器。在某些系统上这些工具通常以完全安装的方式提供。

J.4.1. Emacs/PSGML

PSGML是编辑SGML文档最常用也是最强大的模式。配置正确时,它将允许你使用Emacs来插入标签并且检查标记的一致性。你也可以把它用于HTML。可以从PSGML 网站找到下载、安装指导和详细文档。

There is one important thing to note with 关于PSGML有一件重要的事情需要注意:它的作者假定你的主SGML DTD目录是/usr/local/lib/sgml。如果你采用本章的例子中的做法使用/usr/local/share/sgml,你必须对此进行补偿,要么设置SGML_CATALOG_FILES环境变量,要么自定义你的PSGML安装(其手册会告诉你怎么做)。

把下面的东西放在你的~/.emacs环境文件中(把路径名调整为适合于你的系统):

; ********** for SGML mode (psgml)

(setq sgml-omittag t)
(setq sgml-shorttag t)
(setq sgml-minimize-attributes nil)
(setq sgml-always-quote-attributes t)
(setq sgml-indent-step 1)
(setq sgml-indent-data t)
(setq sgml-parent-document nil)
(setq sgml-exposed-tags nil)
(setq sgml-catalog-files '("/usr/local/share/sgml/catalog"))

(autoload 'sgml-mode "psgml" "Major mode to edit SGML files." t )

并且在同一个文件中在现有auto-mode-alist定义中为SGML增加一个项:

(setq
  auto-mode-alist
  '(("\\.sgml$" . sgml-mode)
   ))

你可能发现当使用PSGML时,一种在书籍各部分独立文件上工作的舒服的方法是在编辑它们时插入一个适当的DOCTYPE声明。如果你在这个源代码上工作,例如是附录章,那么你可以指定文档为一个 DocBook 文档的一个appendix实例,通过将其第一行变成:

<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook V4.2//EN">

这意味着任何和所有读取SGML的东西将会回答正确,并且我可以用nsgmls -s docguide.sgml验证该文档(但是在编译整个文档集之前你需要去掉那一行)。

J.4.2. 其他 Emacs 模式

GNU Emacs带有一种不同的SGML模式,但是它不如PSGML那么强大,但是它更直观并且更轻量级。同样,它提供很有用的语法高亮(字体锁)。src/tools/editors/emacs.samples包含用于这种模式的设置实例。

Norm Walsh 为 DocBook 专门提供了一种主模式,它也有字体锁和一些减少录入的特性。