G.4. ドキュメントの起草

SGMLDocBook を起草する際に オープンソースとなっている数ある文章編集ツールの中からにどれを選んだらよいか 悩むことはありません。 もっとも一般的なツールは相応の編集モードを備えた Emacs/XEmacs エディタです。 いくつかのシステムにおいては典型的なフルインストレーションを行った場合、 使えるようになっています。

G.4.1. Emacs/PSGML

PSGMLSGML ドキュメントを編集するうえで最も一般的で最も強力なモードです。 正確に設定されていれば 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-alistSGML の項目をくわえます。

(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 コマンドでドキュメントを 検証できます。(とはいっても、すべてのドキュメント一式を作成するときに この行を削除しなければなりません。)

G.4.2. そのほかの Emacs モード

GNU Emacs は異なる SGMLモードで提供され PSGML ほど強力ではありませんが、より 紛らわしくなくかつ軽く動きます。同時に構文を強調表示(フォントロック) させることができるのでとても便利です。

Norm Walsh がフォントロックと入力作業を軽減させるいくつかの機能 をつけている主たる mode specifically for DocBook を提供しています。