Emacs系のエディタを利用している方は多いと思われますが, Emacs系のエディタにはpsgmlと呼ばれるSGML/XMLの入力をサポートしたモードが用意されています. これは,既に [桐山先生の最後のアプリケーションガイド] で紹介されていますが, 今回はショートカットによる利用や筆者が利用してきて便利だなと思った設定について, いくつか説明させて頂きます.
もともとDocBookのDTDは巨大で300以上のタグがあり, その親子関係も覚えるのは絶対無理な世界です. psgmlはDTDを読み込み,その場所に書いても良いタグや属性だけを補間してくれることで, ユーザのドキュメント作成の負担を大幅に軽減してくれます.
ここでは,私が良く使う設定や利用法を中心に話を進めますが, 詳細はinfoを参照してください.
インストールはports/packagesを利用するのが便利でしょう. editors/psgml-*に各種Emacs対応のものが用意されていますので, これをインストールします. XEmacsなどでは標準でのインストールもされていますが, こちらの方が新しいので,こちらを入れておきましょう.
psgmlのカスタマイズは,普通のEmacsのカスタマイズ方法である, ‾/.emacsなどで変数を定義する方法と, コメント部分に変数の値を入れておく方法の2通り存在します. 毎回使う設定は前者で,特に個別に設定したい場合は後者を使うといいでしょう.
標準では,Tabによる自動インデントは効いていません. これを‾/.emacsによる設定で行った場合,次のようになります.
(setq sgml-indent-step 2) (setq sgml-indent-data t)また,文章の末尾にコメントを入れる場合は以下のようになります.
<!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-indent-step:2 sgml-indent-data:t -->
特にコメントを入れる方法で対応したいのが, エンティティによるファイルの挿入時の親ドキュメントの明示です. これは,例えば以下のようになります.
<-- Local variables: sgml-parent-document: ("index.sgml" "part" "sect1") -->この場合,エンティティで参照されたこのドキュメントのトップのタグはsect1 であり,親ドキュメントはindex.sgmlとなります.
ここではいくつか知っておくと便利な機能を御紹介します.
DOCTYPE宣言を書き換えるなどして,DTDが変更された場合,DTDの再読み込みが必要です. これにはSGMLメニュー中のReset Bufferを使います.
psgmlではファイルの拡張子が.htmlであれば, 自動的にSGMLモードになってしまいます. XHTMLで利用する場合,これを避けるためには以下のような方法があります.
明示的に M-x xml-mode として,変更する. HTMLで記述することがが中心で,XHTMLが少ない場合はこちらがよい.
以下のような設定を‾/.emacsに入れておきます.
(setq auto-mode-alist (cons '("¥¥.html$" . xml-mode) auto-mode-alist))これは,.htmlな拡張子は全てXMLだと言っているので, 過去を忘れたい人向け.
個別の設定はコメントで行う. つまり,次のように設定する.
<!-- Keep this comment at the end of the file Local variables: mode: xml -->
Next | ||
日本のDocBook情報源 |