SGML と DocBook を起草する際に オープンソースとなっている数ある文章編集ツールの中からにどれを選んだらよいか 悩むことはありません。 もっとも一般的なツールは相応の編集モードを備えた Emacs/XEmacs エディタです。 いくつかのシステムにおいては典型的なフルインストレーションを行った場合、 使えるようになっています。
PSGML は SGML ドキュメントを編集するうえで最も一般的で最も強力なモードです。 正確に設定されていれば Emacs でタグを挿入 したりマークアップの整合性をチェックできます。HTML にたいしても同じように使えます。 ダウンロード、インストール手順、 そして詳しいドキュメントについては PSGML web site を参照してください。
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 )
そして同じファイルに(既に)ある 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 ファイルを設定しない場合でも 数多くの編集モードパラメータが設定されます。 とはいっても上記の インストレーションの指示に従うかぎりカタログパスが実際の場所と一致 しなくなる不都合があります。そうするとローカル変数を無効にしなければ なりません。
(setq inhibit-local-variables t)
PostgreSQL 配布物に中には構文解析された DTD 定義ファイル reference.ced があります。 PSGML を使う場合、分冊にまたがる独立したファイルを気軽に操作するには ファイルを編集しているとき適切な DOCTYPE 宣言を挿入 してください。たとえば、このソースを操作しているのであれば、付録の章で すので最初の行を以下のようにしてドキュメントを DocBook ドキュメントの "appendix" インスタンスとしてください。
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook V3.1//EN">
これが意味するところは SGML を読むすべてのまた どんなものにでも正しく処理ができるようにすることで、 nsgmls -s docguide.sgml コマンドでドキュメントを 検証できます。(とはいっても、すべてのドキュメント一式を作成するときに この行を削除しなければなりません。)
GNU Emacs は異なる SGMLモードで提供され PSGML ほど強力ではありませんが、より 紛らわしくなくかつ軽く動きます。同時に構文を強調表示(フォントロック) させることができるのでとても便利です。
Norm Walsh がフォントロックと入力作業を軽減させるいくつかの機能 をつけている主たる mode specifically for DocBook を提供しています。