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 的功能。