DG2.4. ドキュメントの作成

SGMLDocBook は オープンソース公認用のツールの波に苦しむ事はありません。最も一般的な ツールセットは相応しいエディットモードのついたEmacs /XEmacsエディタです。いくつかのシステムでは(例:Redhat Linux)これらのツールはフルインストールで提供されています。

DG2.4.1. Emacs/PSGML

SGMLを編集するうえでPSGMLは 最も一般的で強力なモードです。正しくconfigureされると、Emacs でタグを挿入できるようになりマークアップ持続性をチェックしてくれます。 これはHTMLにも使うことができます。ダウンロード、 インストール手順、詳しいドキュメントなどについてはPSGML web siteを見て下さい。

PSGMLに関して一つ重要なことがあります。 書いた人はメインSGMLDTD ディレクトリが必ず/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 )
そして同じファイルのauto-mode-alistの定義(すでにある)に SGMLの項目を加えます:
(setq
  auto-mode-alist
  '(("\\.sgml$" . sgml-mode)
   ))

現在では、それぞれのSGMLソースファイルの終りに下記の ブロックが書かれています。

<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
sgml-parent-document:nil
sgml-default-dtd-file:"./reference.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:("/usr/lib/sgml/catalog")
sgml-local-ecat-files:nil
End:
-->
これは~/.emacsファイルを設定しなくてもいくつかの 編集モードパラメータを設定するものです。しかしちょっと残念なことに、 もし上記のインストール手順に従った場合カタログパスがあなたの設定 と合わなくなってしまいます。そこでローカル変数をoffにする必要があります:
(setq inhibit-local-variables t)

PostgreSQL配布物の中には構文解析されたDTD定義 ファイルreference.cedも含まれています。PSGMLを 使う際に、それぞれの本の別々のファイルを作業しやすく使うためには、編集中に 的確なDOCTYPE宣言をすることでしょう。例えばこのような ソースを扱っている場合、これは付録の章ですから、一行目を下記のように 書くことによってドキュメントをDocBookドキュメントの"付録" インスタンスとして指定します。

<!doctype appendix PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
これはSGMLを読む全ての物が正しく処理を行う ようにするという意味で、nsgmls -s docguide.sgml コマンドでドキュメントを実証することができます。(ただし全ての ドキュメントセットを作り始める前にはこの行は消さなくてはいけません。)

DG2.4.2. 他のEmacsモード

GNU Emacsは違ったSGMLモードで配布されます。 これはPSGMLほど力強くありませんが、 それほど紛らわしくなく重さも軽いです。更に、構文ハイライト(フォントロック)も 提供されており、とても役立ちます。

Norm WalshはメジャーなDocBook 専用のモードを提供しており、これもフォントロックや タイピングを減らすさまざまな機能を持っています。