他のバージョンの文書11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

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

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

G.4.1. Emacs/PSGML

PSGMLSGMLドキュメントを編集する上で最も一般的で最も強力なモードです。 正確に設定されていればEmacsでタグを挿入したりマークアップの整合性をチェックできます。 HTMLに対しても同じように使えます。 ダウンロード、インストール手順、そして詳しいドキュメントについてはPSGML Webサイトを参照してください。

PSGMLについて1つ重要なことがあります。 ここで本書では、使用する環境として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 V4.2//EN">

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

G.4.2. その他のEmacsモード

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

Norm Walshがフォントロックと入力作業を軽減させるいくつかの機能を付けたDocBook専用のメジャーモードを提供しています。