J.4.文件编写

SGML 和 DocBook 不会遭受开源创作工具供过于求的困扰。最常见的工具集是具有适当编辑模式的 Emacs/XEmacs 编辑器。在某些系统上,通常以完整安装方式提供这些工具。

J.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-exposed-tags nil)
(setq sgml-catalog-files '("/usr/local/share/sgml/catalog"))

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

并在同一文件中将 SGML 的条目添加到auto-mode-alist的(现有)定义中:

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

您可能会发现,使用 PSGML 时,一种舒适的处理书本 Component 文件的方法是在编辑它们时插入正确的DOCTYPE声明。例如,如果您正在使用此源代码,则它是附录一章,因此您可以通过使第一行看起来像这样来将文档指定为 DocBook 文档的“附录”实例:

<!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 提供了一个major mode,它还具有字体锁定和许多减少 typing 的功能。