I.4. 文档写作

SGMLDocBook 没有受到过多的开放源码写作工具的影响。最常用的工具集是带有合适 编辑模式的 Emacs/XEmacs 编辑器。在一些系统上这些工具在典型的完全安装时是一并安装的。

I.4.1. Emacs/PSGML

PSGML 是最常用和最强大的编辑 SGML 文档的工具。如果正确的做了配置, 它将允许你使用 Emacs 插入标签 和检查标记一致性。你也可以把它用于HTML。 查看 PSGML 网站下载、安装指导、详细文档。

关于 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-default-dtd-file "./reference.ced")
(setq sgml-exposed-tags nil)
(setq sgml-catalog-files '("/usr/local/share/sgml/catalog"))
(setq sgml-ecat-files nil)

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

并且在同一个文件里增加一条SGML的记录, 到auto-mode-alist的定义:

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

PostgreSQL 的发布版包含一个已经分析好了 的 DTD 定义文件 reference.ced 。你可能发现当使用 PSGML 时,有一个让自己在这些分离的 文件上工作方便些的办法:就是你在编辑它们的时候插入合适的 DOCTYPE 定义。例如,如果你在这个源文件上工作, 例如,这是一个附录章节,因此你将通过把第一行标记成像下面的样子从而 把这个文档声明为一个 DocBook 文档的"appendix"

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

这意味着任何或所有读取 SGML 的软件将能正确 读取这份文件,并且我可以用 nsgmls -s docguide.sgml 校验此文档(不过你在制作整个文档集的时候要把这行拿走)。

I.4.2. 其它 Emacs 模式

GNU Emacs 带有不同的 SGML 模式,不过并不像 PSGML 那么强大,但是它 比较少让人混淆的东西而且比较小巧。同样,它也提供语法高亮(字体锁), 也是很有帮助的。

Norm Walsh 提供 一个 专门用于 DocBook 的 major mode ,也有字体锁和一些可以减少击键的特性。