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

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

B.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 宣言を挿入してください。たとえば、このソースを操作しているのであれば、付録の章ですので最初の行を以下のようにしてドキュメントを "appendix" インスタンスとしてください。

<!doctype appendix PUBLIC "-//OASIS//DTD DocBook V3.1//EN">

これが意味するところは SGML を読むすべてのまたどんなものでも正しく処理をおこなわせることで、nsgmls -s docguide.sgml コマンドでドキュメントを検証できます。(とはいっても、すべてのドキュメント一式を作成するときにこの行を削除しなければなりません。)

B.4.2. ほかの Emacs モード

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

Norm Walsh がフォントロックと入力を省略させるいくつかの機能もついている大部分の mode specifically for DocBook を提供しています。