🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# J.4\. 文档写作 SGML和DocBook没有受到过多的开放源码写作工具的影响。 最常用的工具集是带有合适编辑模式的Emacs/XEmacs 编辑器。在一些系统上这些工具在典型的完全安装时是一并安装的。 ## J.4.1\. Emacs/PSGML PSGML是最常用和最强大的编辑SGML文档的工具。 如果正确的做了配置,它将允许你使用Emacs插入标签和检查标记一致性。 你也可以把它用于HTML。看看[PSGML 站点](http://www.lysator.liu.se/projects/about_psgml.html)获取下载、安装指导、详细文档。 关于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时,有一个让自己在这些分离的文件上干活方便些的办法: 就是你在编辑它们的时候插入合适的`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](http://nwalsh.com/emacs/docbookide/index.html), 也有字体锁和一些可以减少击键的特性。