マルチプラットフォーム
XML/SGML文書処理環境
e-Workbench

質問回答集

▼ 変更記録

2002年
12月10日
改訂
  • 実装メモリが256MBを超える場合は,RAMディスクを「256MB以内」に設定するとしていましたが,「256MBより小さい」とアドレスエラーが生じてします。今後は「256MB」に設定するようにしてください[柳沢さんからのご指摘]。
2002年
2月14日
改訂
  • MS-Windows版のGNU Emacs 20.6がサイトから消えました[早間 恵さんからのご指摘]。代わりにGNU Emacs 20.7がダウンロード可能ですが,e-Workbenchとして20.6と同じように動くかどうかはまだ確かめていません。
2002年
2月12日
改訂
  • XML文書インスタンスを読み込む際に,ファイル名の拡張子が“.XML”の場合にSGMLモードに切り替わらない,また同様に“.xml”の場合にUTF変換が行われてしまうという問題が指摘されました。これらは場合によっては都合がいいかもしれませんが,不都合な場合は,次のようにEmacs Lispスクリプトを修正すれば解決します。
    • emacs-20.6/lisp/files.el 1336 行目
       ("\\.sgml?\\'" . sgml-mode)
       ("\\.xml\\'" . sgml-mode)
       ("\\.XML\\'" . sgml-mode)
       ("\\.dtd\\'" . sgml-mode)
    • emacs-20.6/lisp/oc-unicode.el 57 行目
       ; (modify-coding-system-alist 'file "\\.xml\\'" 'utf-8)
2001年
12月25日
改訂
  • メモリーについての記述を追加しました[久米田康夫さんからのご指摘]。
2001年
11月21日
改訂
  • transfrmxのダウンロードのためのリンクの誤りを直しました[宮島源三郎さんからのご指摘]。
2001年
11月15日
改訂
  • この説明書において,MacOS版のGNU EmacsGNU Fontsのダウンロードのためのリンクの誤りを直しました。
  • 質問回答集を増補しました。
2001年
8月20日
改訂
  • MacOS版のフォントセットについての記述を追加しました[井上謙太郎さんからのご指摘]。
  • MS-Windows版の.emacsの誤りを修正しました[井上謙太郎さんからのご指摘]。
  • transfrmxのダウンロードのためのリンクの誤りを直しました[井上謙太郎さんからのご指摘]。
  • 質問回答集を新設しました。
  • この説明書を増補しました。
2001年
6月26日
改訂
  • データベース管理プラグインedbを追加しました。
  • この説明書を訂正・増補しました。
2001年
6月18日
増補
  • DTD入力支援プラグインtdtdを追加しました。
  • XSL変換プラグインxslideを追加しました。
  • MacOS版のプラグイン用XSLプロセッサーtransfrmxを追加しました。
  • ユニコード変換プラグインoc-unicodeを追加しました。
  • インスタンス入力支援psgmlのエンコーディングの誤りを直しました。
  • MacOS版のプラグイン用タグテーブル作成プログラムetagsのバグを修正しました。
  • MS-Windows版のプラグイン用タグテーブル作成プログラムetagsのバグを修正しました。
  • この説明書を訂正・増補しました。
2001年
5月7日
改訂
  • MacOS版のプラグイン用タグテーブル作成プログラムetagsを追加しました。
  • MacOS版のプラグイン用検証パーザーnsgmlsにおいてオプション“-v”などの指示でハングアップする誤りを修正しました。
  • MS-Windows版のインスタンス入力支援psgmlのアーカイブ方法の誤りを直しました。[塩野入正一さんからのご指摘]
  • MacOS版のEmacsのバージョンに関する記述を追加しました[阿部智子さんからのご指摘]。
2001年
4月23日
改訂
  • MS-Windows版の解説を加えました。
  • インスタンス入力支援psgmlのアーカイブに“dir”を追加しました。
  • メニューバーにおける字化けを防ぐために,バッファ名を英語表記へ戻しました。
  • SGML宣言は別のパッケージにしました。
2001年
4月12日
最初の配付
  • インスタンス入力支援プラグインpsgmlの配付を開始しました。
  • MacOS版のプラグイン用検証パーザーnsgmlsの配付を開始しました。

目次

謝辞 ▼
はじめに ▼
インストールと起動方法 ▼
 MacOSへのインストールと起動方法 ▼
 MS-Windowsへのインストールと起動方法 ▼
 バイトコンパイルの方法 ▼
 infoファイルの設定 ▼
操作 ▼
 基本 ▼
 DTDの作成 ▼
 タグ付け ▼
 閲覧 ▼
 検証 ▼
 XSL変換 ▼
 コード変換 ▼
 シェル ▼
 メニュー ▼
 HTML文書のタグ付け ▼
 データベース ▼
気付き事項 ▼
 MacOS版に関する気付き事項 ▼
 MS-Windows版に関する気付き事項 ▼
配付 ▼

謝辞

 私(岸 和孝)は,健全なフリーウェアの必要条件は,UNIX,MS-Windows,MacOSでほぼ共通の機能が実現できることである,と確信しています。とりわけEmacsのMacOSへの移植が待ち望まれていました。今回,Andrew Choi氏の尽力により移植が行われたことは誠に有り難いことです。その実現によってMacOSでもUNIX,MS-Windowsと同等の様々な機能が利用できるようになりました。ここに開発者の方々へ深く感謝申し上げる次第です。

はじめに

 マルチプラットフォーム・XML/SGML文書処理環境e-Workbenchは,エディターEmacsを各種プラグインで機能拡張し,パーザーnsgmlsやフォーマッターXTなどでSGML/XML文書の処理を行います。また,JPerlJavaのシェルにもなります。このシステムは,UNIX,MS-Windows,MacOSでほぼ共通の機能が実現されています。これを構成する下図のツールは,すべてフリーウェアです。

 このシステムの機能を一言で総称できるように,また親しみやすくするために,e-Workbenchと,私が勝手に名付けました。これは多機能のEmacsをプリプレス分野で利用する範囲を示す言葉であり,その本来備えている機能を制約したり,独占的に制限したりする意図はありません。 皆さんの協力によって,文字通りに役立つ「いい作業台」にしていきたいと思います。 ここでは,MS-Windows版とMacOS版のe-Workbenchについてご案内し配付していきます。 ご意見やご要望をお寄せください。

Emacs

 e-Workbenchの主軸となるEmacsは,UNIXでは古くから広く用いられている高機能の汎用エディターであり,MS-Windowsに続いてMacOSにも移植されました。 現在のバージョンは20.6です。 我が国では,Emacsについては次のような図書が出版され,また次のようなホームページも開設されていますので,その詳細については,ここでは説明しません。

 ▽参考図書

 ▽参考ホームページ(日本のみ)

psgml

 psgmlは,SGML/XML文書のインスタンス入力を支援するプラグインです。 そのプログラムは,Emacsを機能拡張するEmacs Lispで書かれています。 現在のバージョンは1.2.2です。 私は,psgmlのメッセージを日本語化しました。その詳細については,psgml説明書を参照してください。

nsgmls

 nsgmlsは,SGML/XML文書の検証を行うパーザーであり,いろいろなプラットフォームで広く用いられています。 現在のバージョンは1.3.3です。 その詳細については,SP説明書を参照してください。 私は,MacOS向けにnsgmlsEmacsおよびpsgmlと連係できるようにしました。 ちなみに,MacOS向けに既に配付しているnsgmlsはファインダーから呼び出して動くのに対して,このnsgmlsはアプリケーション間連絡を介してEmacsから呼び出して動きます。

tdtd

 tdtdは,SGML/XML文書の文書型定義(DTD)入力を支援するプラグインです。 そのプログラムは,Emacsを機能拡張するEmacs Lispで書かれています。 現在のバージョンは0.7.1です。 私は,tdtdのメッセージを日本語化しました。その詳細については,tdtd説明書を参照してください。

etags

 etagsは,タグテーブル作成プログラムです。 現在のバージョンは19です。 その詳細については,etags説明書を参照してください。 私は,MacOS向けにetagsEmacsと連係できるようにしました。このetagsはアプリケーション間連絡を介してEmacsから呼び出して動きます。また,MS-Windows版の(Emacsのパッケージに含まれている)etagsのバグを修正しました。

xslide

 xslideは,SGML/XML文書のXSL変換を支援するプラグインです。 そのプログラムは,Emacsを機能拡張するEmacs Lispで書かれています。 現在のバージョンは0.2b3です。 私は,xslideのメッセージを日本語化しました。 その詳細については,xslide説明書を参照してください。

xt

 xtは,XML文書のXSL変換を行うプロセッサーです。 そのプログラムは,Javaで書かれたもの(MacOSにおける動作確認中)と,Win32形式(MS-Windows向け)で書かれたものがあります。 現在のバージョンは19991195です。 その詳細については,xt説明書を参照してください。

transfrmx

 transfrmxは,XML文書のXSL変換を行うプロセッサーで,現在のバージョンは1.0です。 その詳細については,transfrmx説明書を参照してください。 私は,MacOS向けにtransfrmxEmacsおよびxslideと連係できるようにしました。 ちなみに,MacOS向けに既に配付しているtransfrmxはファインダーから呼び出して動くのに対して,このtransfrmxはアプリケーション間連絡を介してEmacsから呼び出して動きます。

oc-unicode

 oc-unicodeは,ユニコード変換を支援するプラグインです。 そのプログラムは,Emacsを機能拡張するEmacs Lispで書かれています。 現在のバージョンは0.72です。 その詳細については,oc-unicode説明書およびMule-UCS説明書を参照してください。

edb

 edbは,データベースを管理するプラグインです。 そのプログラムは,Emacsを機能拡張するEmacs Lispで書かれています。 現在のバージョンは1.20です。 私は,edbのメッセージを(まだ一部ですが)日本語化し,若干のバグを修正しました。 その詳細については,edb説明書を参照してください。

 以上をまとめると,次のようになります。

ツール名
(バージョン)
機 能 開発者 説明書
GNU Emacs
(20.6)
汎用エディター Richard Stallman氏
拡張:GNU
オンラインマニュアル
および上記の参考図書を参照
psgml
(1.2.2)
インスタンス入力支援プラグイン Lennart Staflin氏
メッセージの日本語化:岸 和孝
psgml説明書
nsgmls
(1.3.3/1.3.4)
SGML/XML検証パーザー James Clark氏
MacOSへの移植:岸 和孝
SP説明書
tdtd
(0.7.1)
文書型定義入力支援プラグイン Tony Graham氏
メッセージの日本語化:岸 和孝
tdtd説明書
etags
(19)
タグテーブル作成プログラム Free Software Foundation, Inc.,Ken Arnold氏
MacOSへの移植:岸 和孝
MS-Windows版の修正:岸 和孝
etags説明書
xslide
(0.2b3)
XSL変換支援プラグイン Tony Graham氏
メッセージの日本語化:岸 和孝
xslide説明書
xt
(19991105)
XSL変換プロセッサー
(MS-Windows向け)
James Clark氏 xt説明書
transfrmx
(1.0)
XSL変換プロセッサー
(MacOS向け)
The MITRE CorporationKeith Visco氏ほか
MacOSへの移植:岸 和孝
transfrmx説明書
oc-unicode
(0.72)
ユニコード変換支援プラグイン Otfried Cheong氏
Mule-UCSパッケージ:宮下 尚氏
oc-unicode説明書
edb
(1.20)
データベース管理プラグイン Michael Ernst氏
メッセージの日本語化および修正:岸 和孝
edb説明書

注1:私は,e-Workbenchの操作を,MacOS版はApple PowerBook G3,Mac OS J1-9.0.4の環境で,MS-Windows版はApple PowerBook G3,Mac OS J1-9.0.4,Virtual PC + MS-Windows98の環境で確認しました。

注2:現在,Emacsよりも,それを機能拡張したMuleのほうが知られていると思います。MuleはMS-Windowsに移植されていますが,まだMacOSには移植されていないようです。また,機能拡張したXEmacsは,MS-WindowsとMacOSに移植されていますが,私はまだ動作確認しておりません。いずれにしましても,私はEmacsの範囲から出るつもりはありません。

注3:現在,Emacsが表示するメッセージの大半は英文です。私はこれを日本語化するつもりはありません。

インストールと起動方法

 e-Workbenchのインストールは,三つのプログラムを組み合わせますので,少々面倒です。次の手順に従って行ってください。

MacOSへのインストールと起動方法

 e-WorkbenchのMacOSへのインストールと起動方法は,次のようになります。

  1. 各アーカイブを解凍します。
    • Emacsのアーカイブemacs-20.6-mac-bin-d5.smi.binを解凍し,emacs-20.6-mac-bin-d5.smiを得ます。それをフォルダーemacs-20.6/へ移動します。
    • フォントセットのアーカイブGNU-Fonts.smi.binを解凍し,GNU-Fonts.smiを得ます。この中のすべてのフォントをフォルダーシステムフォルダ/フォント/内へ移動します。
    • psgmlのアーカイブpsgml122.hqxを解凍し,フォルダーpsgml-1.2.2/を得ます。
    • tdtdのアーカイブtdtd.hqxを解凍し,フォルダーtdtd/を得ます。
    • xslideのアーカイブxslide.hqxを解凍し,フォルダーxslide/を得ます。
    • ocuniのアーカイブocuni.hqxを解凍し,フォルダーocuni/を得ます。
    • edbのアーカイブedb.hqxを解凍し,フォルダーedb/を得ます。
    • Emacs初期化ファイルのアーカイブdotemacs.hqxを解凍し,.emacsを得ます。
    • SGML宣言のアーカイブsgmldcl.hqxを解凍し,SGMLJ.DCLXML.DCLを得ます。
    • nsgmlsのアーカイブsgmls133.hqxを解凍し,フォルダーnsgmls-1.3.3/を得ます。
    • etagsのアーカイブetags19.hqxを解凍し,フォルダーetags-19/を得ます。
    • transfrmxのアーカイブtransfrmx.hqxを解凍し,フォルダーtransfrmx/を得ます。
  2. 各解凍結果をEmacsのフォルダー内へ移動します。
    • フォルダーpsgml-1.2.2/をフォルダーemacs-20.6/site-lisp/内へ移動します。
    • フォルダーtdtd/をフォルダーemacs-20.6/site-lisp/内へ移動します。
    • フォルダーxslide/をフォルダーemacs-20.6/site-lisp/内へ移動します。
    • フォルダーocuni/Mule-UCS-0.72/をフォルダーemacs-20.6/site-lisp/内へ移動します。
    • フォルダーocuni/内のoc-charsets.eloc-tools.eloc-unicode.elをフォルダーemacs-20.6/lisp/内へ移動します。
    • フォルダーedb/edb-1.21/をフォルダーemacs-20.6/site-lisp/内へ移動します。
    • フォルダーnsgmls-1.3.3/内のnsgmls%SP%をフォルダーemacs-20.6/mac/内へ移動します。
    • フォルダーetags-19/内のetagsをフォルダーemacs-20.6/mac/内へ移動します。
    • フォルダーtransfrmx/内のtransfrmxをフォルダーemacs-20.6/mac/内へ移動します。
    • .emacsをフォルダーemacs-20.6/mac/内へ移動します。
    • SGMLJ.DCLXML.DCLをフォルダーemacs-20.6/mac/内へ移動します。
  3. 起動するための準備を行います。
    • %SP%で環境変数を設定します。例えば,次のように設定します。
      その詳細については,SP説明書を参照してください。
        SET SP_CHARSET_FIXED=YES
        SET SP_ENCODING=sjis
      
    • Emacs 20.6は,実装メモリおよび仮想メモリが256MB以内でなければ実行できません。実装メモリが256MBを超える場合は,先ず,コントロールパネルのメモリにおいて「仮想メモリ」を切ります。そして,大きさが256MBの「RAMディスク」を指定します。再起動後,フォルダーemacs-20.6/全体をRAMディスクへコピーします。これで,起動の対象は,RAMディスク内のEmacs CWになります。
  4. 以上の作業を終えると,起動できます。
    フォルダーemacs-20.6/mac/内のEmacs CWをダブルクリックしてください。

MS-Windowsへのインストールと起動方法

 e-WorkbenchのMS-Windowsへのインストールと起動方法は,次のようになります。

  1. 各アーカイブを解凍します。
    • Emacsのアーカイブemacs-20.6-bin-i386.tar.gzを解凍し,ディレクトリーemacs-20.6/を得ます。
    • psgmlのアーカイブpsgml122.zipを解凍し,ディレクトリーpsgml-1.2.2/を得ます。
    • tdtdのアーカイブtdtd.zipを解凍し,ディレクトリーtdtd/を得ます。
    • xslideのアーカイブxslide.zipを解凍し,ディレクトリーxslide/を得ます。
    • ocuniのアーカイブocuni.zipを解凍し,ディレクトリーoc-unicode/を得ます。
    • edbのアーカイブedb.zipを解凍し,ディレクトリーedb/を得ます。
    • Emacs初期化ファイルのアーカイブdotemacs.zipを解凍し,dot-emacsを得ます。
    • SGML宣言のアーカイブsgmldcl.zipを解凍し,SGMLJ.DCLXML.DCLを得ます。
    • nsgmlsのアーカイブsp1_3_4.zipをディレクトリーsp-1.3/で解凍します。
    • etagsのアーカイブetags19.zipを解凍し,ディレクトリーetags-19/を得ます。
    • xtのアーカイブxt-win32.zipを解凍し,xt.exeを得ます。
  2. 各解凍結果をEmacsのフォルダー内へ移動します。
    • ディレクトリーpsgml-1.2.2/をディレクトリーemacs-20.6/site-lisp/内へ移動します。
    • ディレクトリーtdtd/をディレクトリーemacs-20.6/site-lisp/内へ移動します。
    • ディレクトリーxslide/をディレクトリーemacs-20.6/site-lisp/内へ移動します。
    • ディレクトリーocuni/Mule-UCS-0.72/をディレクトリーemacs-20.6/site-lisp/内へ移動します。
    • ディレクトリーocuni/内のoc-charsets.eloc-tools.eloc-unicode.elをディレクトリーemacs-20.6/lisp/内へ移動します。
    • ディレクトリーedb/edb-1.21/をディレクトリーemacs-20.6/site-lisp/内へ移動します。
    • ディレクトリーsp-1.3/bin/内のnsgmls.exesp130.dllmsvcrt.dllをディレクトリーemacs-20.6/bin/内へ移動します。
    • ディレクトリーetags-19/内のetags.exeをディレクトリーemacs-20.6/bin/内へ移動します。
    • xt.exeをディレクトリーemacs-20.6/bin/内へ移動します。
    • dot-emacsをMS-Windowsのルートディレクトリー(例えば,“C:\”)内へ移動します。
    • SGMLJ.DCLXML.DCLをディレクトリーemacs-20.6/bin/内へ移動します。
  3. 起動するための準備を行います。
    1. MS-Windowsのルートディレクトリー(例えば,“C:\”)にあるAUTOEXEC.BATに環境変数の設定を追加します。
      例えば,次のように設定します。その詳細については,SP説明書を参照してください。
        SET SP_CHARSET_FIXED=YES
        SET SP_ENCODING=sjis
      
    2. ディレクトリーemacs-20.6/bin/内のaddpm.exeを実行します。
      この操作によって,スタートメニューにEmacsが登録されます。
    3. 以上の作業を終えてから,MS-Windowsをいったん再起動します。
    4. 再起動したら,ディレクトリーemacs-20.6/bin/内のrunemacs.exeをダブルクリックします。
    5. FilesメニューからOpen Fileアイテムを選び,初期化ファイルの見本dot-emacsを読み込みます。
      例えば,次のようにします。
        Find File: C:\dot-emacs RET
      
    6. 初期化ファイルにおいてpsgmlへのロードパスを設定します。
      例えば,次のようにします。
        (setq load-path (cons "C:/emacs-20.6/site-lisp/psgml-1.2.2" load-path))
      
    7. FilesメニューからSave Buffer As...アイテムを選び,初期化ファイルの名前を.emacsへ変えて書き出します。
      例えば,次のようにします。
        Write File: C:\.emacs RET
      
    8. いったん,Emacsを終了します。
      次の起動時に,この初期化ファイルの設定が有効になります。したがって,dot-emacsは不要になります。
  4. 以上の作業を終えると,起動できます。
    起動する場合は,スタートメニュー → プログラム → Gnu Emacs → Emacsを選んでください。

バイトコンパイルの方法

 通常,配付されるEmacs Lispライブラリーはソース(拡張子が“.el”)のままです。そのソースをあらかじめコンパイルしてバイトコード(拡張子が“.elc”)にしておくと,実行時間が短縮できます。このコンパイルはEmacsに内蔵されているコンパイラーで行います。その処理をバイトコンパイルといいます。

 とりわけユニコードを使う場合はあらかじめバイトコンパイルを行っておかないと,起動時に自動的に時間がかかってしまいます。そのバイトコンパイルの方法は,次のようになります。

MacOSの場合

  1. .emacsから次のunicode関係の記述を外します。
    ;; unicode
    (setq load-path (cons "~emacs/site-lisp/Mule-UCS-0.72/lisp" load-path))
    (setq load-path (cons "~emacs/site-lisp/Mule-UCS-0.72/lisp/jisx0213" load-path))
    (require 'un-define)
    (require 'oc-unicode)
      (if (eq window-system 'mac)
          (oc-create-fontset
          "-misc-fixed-medium-r-normal--18-*-*-*-*-*-fontset-standard"
           "-misc-fixed-medium-r-normal-ja-18-*-iso10646-*")
        (oc-create-fontset
           "-misc-fixed-medium-r-normal--13-*-*-*-*-*-fontset-standard"
           "-misc-fixed-medium-r-normal-ja-13-*-iso10646-*"))
    
  2. Emacsを起動します。
  3. バッファが*scratch*であることを確認します。
    そうでなければ,C-x C-bによって切り替えます。
  4. *scratch*で次のソースを入力し,C-x C-eによって実行します。
      (progn
        (load "~emacs/site-lisp/Mule-UCS-0.72/lisp/jisx0213/x0213-comp")
        (mapcar 'byte-compile-file (directory-files "~emacs/site-lisp/Mule-UCS-0.72/lisp/reldata" t))
      )
    
  5. いったん,Emacsを終了します。
  6. .emacsに上記のunicode関係の記述を追加します。
    次の起動時に,この初期化ファイルの設定が有効になります。

MS-Windowsの場合

  1. .emacsから次のunicode関係の記述を外します。
    例えば,ディレクトリーemacs-20.6/が“C:\emacs-20.6”にあるとします。
    ;; unicode
    (setq load-path (cons "C:/emacs-20.6/site-lisp/Mule-UCS-0.72/lisp" load-path))
    (setq load-path (cons "C:/emacs-20.6/site-lisp/Mule-UCS-0.72/lisp/jisx0213" load-path))
    (require 'un-define)
    (require 'oc-unicode)
      (if (eq window-system 'win)
          (oc-create-fontset
          "-misc-fixed-medium-r-normal--18-*-*-*-*-*-fontset-standard"
           "-misc-fixed-medium-r-normal-ja-18-*-iso10646-*")
        (oc-create-fontset
           "-misc-fixed-medium-r-normal--13-*-*-*-*-*-fontset-standard"
           "-misc-fixed-medium-r-normal-ja-13-*-iso10646-*"))
    
  2. Emacsを起動します。
  3. バッファが*scratch*であることを確認します。
    そうでなければ,C-x C-bによって切り替えます。
  4. *scratch*で次のソースを入力し,C-x C-eによって実行します。
      (progn
        (load "C:/emacs-20.6/site-lisp/Mule-UCS-0.72/lisp/jisx0213/x0213-comp")
        (mapcar 'byte-compile-file (nthcdr 2 (directory-files "C:/emacs-20.6/site-lisp/Mule-UCS-0.72/lisp/reldata" t)))
      )
    
  5. いったん,Emacsを終了します。
  6. .emacsに上記のunicode関係の記述を追加します。
    次の起動時に,この初期化ファイルの設定が有効になります。

infoファイルの設定

 ヘルプは,infoファイルとして配付されます。それをディレクトリーemacs-20.6/info/内へ移動します。そして,emacs-20.6/info/dirへそれへのリンクを書き加えます。これで C-h i によってヘルプとして表示できるようになります。例えば,psgml-ja.infoedb-ja.infoを追加する場合は,次のようになります。

* PSGML: (psgml-ja).    SGMLモード。
* EDB: (edb-ja).        データベースモード。

操作

 e-Workbenchの操作は,次のようになります。ここでは,最初に,基本となるEmacsの操作の概略をMacOS版に基づいて解説し,次に,メニューバーによる操作の概略をMS-Windows版に基づいて説明します。

基本

 e-Workbenchの操作は,Emacsの操作が基本になります。Emacsの画面は,次のように区分されています。

 e-Workbenchの操作は,MacOSやMS-Windowsに馴染んだユーザーには違和感があると思います。先ず,Emacs独自のキーボードのショートカットはMacOSやMS-Windowsとかなり違います。さらに,Emacsは多くの機能を備えたエディターであり,プラグインを含めて,そのすべてを知ることは短時間では困難です。「習うより慣れろ」の精神で少しづつ慣れるといいでしょう。

 キーについての表記は,次のとおりとします。

キー図形による表記文字による表記使い方
controlキーcontrol C- controlキーを押しながら特定の文字キーを押します。
metaキーmeta M- 省略時はESCキーとなります。
その場合,ESCキーは押した後に直ぐに離して特定の文字キーを押します。
commandキーcommand Macintoshに固有のキーです。
escキーESC 
tabキーTAB  
returnキーRET  

 基本的な操作を対比すると,次のようになります。

機 能MacOSの
一般的なエディター
における操作
MS-Windowsの
一般的なエディター
における操作
Emacs
における操作
ファイル 新規  command N  control N  control x control f
 …/新規ファイル名 RET 
開く  command O   control O   control x control f
 …/既存ファイル名 RET 
閉じる  command W  アプリケーションによる  control x control w 
保存  command S   control S   control x control s 
終了  command Q  アプリケーションによる  control x control c 
編集 取り消し  command Z   control Z   control x u 
カット  command X   control X   control w 
コピー  command C   control C   meta w 
ペースト  command V   control V   control y 
ウィンドウの切り替え アプリケーションによる アプリケーションによる  control x control b 
ヘルプ アプリケーションによる アプリケーションによる  control h i 
その他 ディレクトリを開く      control x control f
 …/~ RET 
バッファの削除      control x k 

DTDの作成

 文書型定義(DTD)を作る場合は,EmacsをDTDを編集するためのスタンドアローンモードで動かします。Emacsは,新規または開くファイル名の拡張子が“.dtd”であると,tdtdを起動します。代表的なショートカットの機能は,次のとおりです。この操作の詳細はtdtdを用いたDTD作成の例を参照してください。

ショートカット機 能
 C-u C-c C-c 注釈の入力
 C-c C-% 内部パラメーター実体の入力
 C-c C-e 要素型宣言の入力
 C-c C-a 属性リスト宣言の入力
 M-x dtd-etags RET
 文書型定義ファイル名 RET 
文書型定義に関するタグテーブルの作成
 M-. 指定した要素への移動

タグ付け

 文書インスタンスを作る(つまり,タグ付けを行う)場合は,EmacsをSGMLモードで動かします。Emacsは,新規または開くファイル名の拡張子が“.sgm”,“.xml”であると,psgmlを起動し,SGMLモードに切り替えます。

文脈の確認

 ある位置における文脈(その位置における内容モデル)を確認する場合は,その位置にポイントを置いてから,次のように指示します。これによってpsgmlが(nsgmlsでなく)文書型定義に基づく(あまり厳密でない)検証を行います。

  control c control t

 その位置における文脈は,次のように別のウィンドウに表示されます。

 ある位置における文脈(その位置におけるタグの親子関係)を確認する場合は,その位置にポイントを置いてから,次のように指示します。

  control c control y

 その位置における文脈は,次のようにエコー領域に表示されます。

要素の挿入

 ある位置において挿入可能な妥当な要素の内容を確認する場合は,その位置にポイントを置いてから,次のように指示します。これによってpsgmlが(nsgmlsでなく)文書型定義に基づく(あまり厳密でない)検証を行います。

  control c control c

 その内容は,次のようにエコー領域に表示されます。

 ある位置において妥当な要素の開始タグと終了タグを挿入する場合は,その位置にポイントを置いてから,次のように指示します。

  control c control e
  要素名 RET

 ある位置において妥当な要素の開始タグを挿入する場合は,その位置にポイントを置いてから,次のように指示します。

  control c <
  要素名 RET

 ある位置において妥当な要素の終了タグを挿入する場合は,その位置にポイントを置いてから,次のように指示します。

  control c /

属性の挿入

 ある要素の属性を挿入する場合は,その開始タグ内にポイントを置いてから,次のように指示します。

  control c +
  属性名 RET
  属性値 RET

閲覧

文書型の一覧

 すべての要素型と,その内容で出現できる要素型を見る場合は,次のように指示します。

  meta x sgml-list-content-elements RET

内容の折り畳み

 編集中の内容を畳んで見やすくすることができます。ある範囲を指定する場合は,リージョンを指定してから,次のように指示します。

  control c control f control r

 ある要素を畳む場合は,その開始タグ内にポイントを置いてから,次のように指示します。

  control c control f control e

 畳んだ結果は,次のように表示されます。

 畳んだ要素を元に戻す場合は,次のように指示します。

  control c control u control e

検証

 検証をする場合は,あらかじめ文書型定義やSGMLインスタンスを現在のバッファに読み込んでおきます。

文書型定義の検証

 文書型定義だけを検証する場合は,次のように指示します。この検証はnsgmlsではなく,psgmlが(あまり厳密でなく)行います。

  control c control p

SGML/XML文書の検証

 SGML/XML文書を検証する場合は,あらかじめ,次の指示によってSGML宣言ファイル名の指定を行います。SGML宣言ファイルとして,SGML文書のためには“SGMLJ.DCL”,XML文書のためには“XML.DCL”を用意しています。

  meta x set-variable RET
  sgml-declaration RET
  SGML宣言 RET

SGMLインスタンスの検証

 SGMLインスタンスを検証する場合は,次のように指示します。これはnsgmlsを呼び出します。nsgmlsを呼び出す場合は,あらかじめ環境変数を設定しておきます。

  control c control v

 その指示によって次のように表示されます。これはnsgmlsに対するコマンドラインです。この時,SGMLインスタンスが編集されている場合,ファイルへ保存する旨の問合せメッセージが出ますので,保存してください。

  nsgmls -s SGML宣言 SGMLインスタンス RET

 検証結果は,次のように別のウィンドウに表示されます。

ESISの出力

 ESIS出力を得たい場合は,nsgmlsに対するコマンドラインを次のように書き換えてから行います。

 MacOS版のnsgmlsでは,次のようなコマンドラインで指示します。

  nsgmls -O出力ファイル名 SGML宣言 SGMLインスタンス RET

 MS-Windows版のnsgmlsでは,次のようなコマンドラインで指示します。

  nsgmls SGML宣言 SGMLインスタンス > 出力ファイル名 RET

XSL変換

 次のようなXML文書をHTML文書へ変換する例について説明します。ここで使用するXSLプロセッサーにおける入力では文書がユニコードに固定されていますので,xml宣言ではエンコーディングの指定ができません。

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="meishi.xsl"?>
<!DOCTYPE meishi SYSTEM "meishi.dtd">
<meishi>
<shimei><sei>岸</sei><mei>和孝</mei></shimei>
<kaisyamei>飯豊山書林</kaisyamei>
<zyusyo bangou="966-0901">福島県喜多方市松山町鳥見山字下堰下4608</zyusyo>
</meishi>

 XSLスタイルシートを開くと,XSLモードに切り替わり,次のように表示されます。

 XSL変換は,XSLモードにおいて C-c C-p を指示することによって行われます。

 XSL変換の結果はHTML文書となります。その文書に日本語が含まれる場合は,次のように,それらの漢字はすべてユニコード文字参照の表記になります。

 このHTML文書をウェブブラウザー(例えば,Internet Explorer 5.0)に読ませると,次のように表示されます。

コード変換

 ファイルのエンコーディングは,コーディングシステムの指定によって決まります。バッファがどの文字符号系(コーディングシステム)であるかはモード行の左端に“J”(JIS),“S”(シフトJIS),“U”(ユニコード)の文字で表示されます。既存のファイルを開いた後に,そのエンコーディングを次の指示によって別の形式に指定すれば,再び保存する際に,そのエンコーディングで記録できます。なお,現在,既存のファイルを開く時に,拡張子が“.utf”と“.xml”の場合は,UTF-8とみなされるように,emacs-20.6/lisp/oc-unicode.elにおいて指定しています。不都合な場合はその指定を外してください。

ユニコードへの変換

 C-x RET f utf-8 RET 

シフトJISへの変換

 C-x RET f sjis RET 

シェル

 MS-Windows版のEmacsは,JPerlJavaのシェルにもなりますので,さまざまなスクリプティングを効果的に進めることができます(MacOSではまだできません)。それらを実行するには,次のように指示します。実行結果の標準出力はEmacsの画面へ表示されます。

 M-x compile RET
  プログラム名 引き数… RET

 この操作をするために,あらかじめMS-Windowsのルートディレクトリー(例えば,“C:\”)にあるAUTOEXEC.BATJPerlJavaへのパスの設定をPATHやSETで追加します。 例えば,次のように設定します。

PATH C:\JPERL\BIN;C:\J2SDK\BIN

 この操作をするためのもう一つの方法では,個別のバッチファイルを用いて間接的にプログラムを呼び出します。 例えば,次のような内容のバッチファイルを作っておきます。

C:\JPERL\BIN\JPERL.EXE %1 %2 %3

メニュー

 MS-Windows版のEmacsでは,メニューバーが実装されていますので,それによる操作の概略を説明します。現在,MacOS版のEmacsではメニューが実現されていませんので,不満があるかもしれません。しかし,初心者にとってメニューは助けになりますが,操作に習熟してしまうと,ショートカットのほうが逆に便利に感じるようになります。MS-Windows版のメニューに示されているショートカットとコマンドはMacOS版でも有効ですので,参考にしてください。

 次の画面はpsgmlのメニューバーです。

注:次の表においてメニューの機能欄が空の箇所は動作をまだ確認していないことを表わしています。

Filesメニュー

メニューアイテムショートカット機 能
Open File...C-x C-fファイルを指定する
Open Directory...C-x dディレクトリーを指定する
Save BufferC-x C-sバッファの内容を保存する
Save Buffer As...C-x C-w別のファイルへバッファの内容を保存する
Revert Buffer バッファを元の内容へ戻す
Recover Session...  
Insert File...C-x i別のファイルの内容を挿入する
Kill Current Buffer 現在のバッファを廃棄する
Make New FrameC-x 5 2新しいフレームを作る
Open New Display...  
Delete FrameC-x 5 0フレームを削除する
Split WindowC-x 2ウィンドウを二つに分ける
One WindowC-x 1ウィンドウを一つにする
Exit EmacsC-x C-cEmacsを終了する

SGMLメニュー

メニューアイテムショートカット機 能コマンド
Reset Buffer ノーマルモードにするM-x normal-mode RET
Show ContextC-c C-cポイントにおける文脈を表示するM-x sgml-show-context RET
What ElementC-c C-wポイントの後の文字が
どんな要素に所属するかを表示する
M-x sgml-what-element RET
List Valid TagsC-c C-t文脈上妥当なタグをリストするM-x sgml-list-valid-tags RET
Show/Hide Warning LogC-c C-l M-x sgml-show-or-clear-log RET
ValidateC-c C-v外部のSGML検証パーザーを実行するM-x sgml-validate RET
File Options ファイルオプション
User Options ユーザーオプション
Submit Bug Report バグ報告を送付するM-x sgml-submit-bug-report RET

Modifyメニュー

メニューアイテムショートカット機 能コマンド
Normalize バッファの中の文書を正規化するM-x sgml-normalize RET
Expand All Short References テキスト実体への短縮参照を
実体の置換テキストに拡張する
M-x sgml-expand-all-shortrefs RET
Expand Entity Reference 実体参照を文字にするM-x sgml-expand-entity-reference RET
Normalize Element 要素名を小文字にするM-x sgml-normalize-element RET
Make Character ReferenceC-c #ポイントの後の文字を文字参照へ変換するM-x sgml-make-character-reference RET
Unmake Character Reference 文字参照を文字へ戻す
Fill ElementC-c C-qパラグラフとしての要素を満たすM-x sgml-fill-element RET
Change Element Name...C-c =現在の要素名を変更するM-x sgml-change-element-name RET
Edit Attributes...C-c C-a開始タグの属性を編集するM-x sgml-edit-attributes RET
Kill MarkupC-c C-k次のタグ,マーク宣言,処理命令を削除するM-x sgml-kill-markup RET
Kill ElementM-C-kカーソルに続く要素を削除するM-x sgml-kill-element RET
Untag ElementC-c -現在の要素からタグを削除するM-x sgml-untag-element RET
Trim and leave elementC-c C-z M-x sgml-trim-and-leave-element RET
Decode Character Entities 実体を文字へ変換するM-x sgml-charent-to-display-char RET
Encode Characters 文字を実体へ変換するM-x sgml-display-char-to-charent RET

Moveメニュー

メニューアイテムショートカット機 能コマンド
Next trouble spotC-c C-o次のエラー箇所へ進むM-x sgml-next-trouble-spot RET
Next data fieldC-c C-dデータが許される次の場所へ移動するM-x sgml-next-data-field RET
Forward elementM-C-f要素に従って前進するM-x sgml-forward-element RET
Backward elementM-C-b要素に従って後退するM-x sgml-backward-element RET
Up elementC-c C-n現在の要素の後へ戻るM-x sgml-up-element RET
Down elementM-C-d次の要素の(内容の)先頭に下がるM-x sgml-down-element RET
Backward up elementM-C-u現在の要素の前へ戻るM-x sgml-backward-up-element RET
Beginning of elementM-C-a現在の要素の(内容の)先頭へ移動するM-x sgml-beginning-of-element RET
End of elementM-C-e現在の要素の(内容の)後尾へ移動するM-x sgml-end-of-element RET

Markupメニュー

メニューアイテムショートカット機 能
Insert Element 妥当な要素のメニューをポップアップする
Insert Start-Tag 妥当な開始タグのメニューをポップアップする
Insert End-Tag 妥当な終了タグのメニューをポップアップする
End Current ElementC-c /現在の要素の終了タグを挿入する
Tag Region 選択でリージョンを指定した妥当な要素のメニューをポップアップする
Insert Attribute 要素のすべての属性を持つメニューをポップアップする
Insert Entity DTDで定義されたすべての一般実体のメニューをポップアップする
Add Element to Element  
Custom markup  

Viewメニュー

メニューアイテムショートカット機 能コマンド
Fold ElementC-c C-f C-e現在の要素の開始と終了の間のリージョンを折り畳むM-x sgml-fold-element RET
Fold SubelementC-c C-f C-s現在の要素のすべての副要素を折り畳むM-x sgml-fold-subelement RET
Unfold LineC-c C-s現在の行を折り畳まずに,
それが折り畳まれたリージョンの最初の行
であると仮定する
M-x sgml-unfold-line RET
Unfold ElementC-c C-u C-e現在の要素におけるすべての行を見えるようにするM-x sgml-unfold-element RET
ExpandC-c C-f C-x現在の要素を折り畳まずに,副要素を折り畳むM-x sgml-expand-element RET
Fold RegionC-c C-f C-rポイントとマークの間のリージョンを折り畳むM-x sgml-fold-region RET
Unfold AllC-c C-u C-a現在のバッファにおけるすべての行を見えるようにするM-x sgml-unfold-all RET
Hide Tags すべてのタグを隠すM-x sgml-hide-tags RET
Hide Attributes すべての属性だけを隠すM-x sgml-hide-attributes RET
Show All Tags すべてのタグを表示するM-x sgml-show-tags RET

DTDメニュー

メニューアイテムショートカット機 能コマンド
Parse DTDC-c C-pDTDを構文解析するM-x sgml-parse-prolog RET
Insert DTD   
Info DTDの情報を表示する 
Load Parsed DTD 検証済みDTDをロードするM-x sgml-load-dtd RET
Save Parsed DTD 検証済みDTDを保存するM-x sgml-save-dtd RET

DTD/Infoサブメニュー

メニューアイテムショートカット機 能コマンド
General DTD info 現在のDTDに関する情報を表示するM-x sgml-general-dtd-info RET
Describe element type 現在のDTDで宣言されたものとして要素型の特性を説明するM-x sgml-describe-element-type RET
Describe entity 現在のDTDで宣言されたものとして実体の特性を説明するM-x sgml-describe-entity RET
List elements すべての要素と,要素について宣言された属性をリストするM-x sgml-list-elements RET
List attributes すべての宣言された属性と,それらを用いている要素をリストするM-x sgml-list-attributes RET
List terminals データを含むことができるすべての要素をリストするM-x sgml-list-terminals RET
List content elements すべての要素型と,その内容で出現できる要素型をリストするM-x sgml-list-content-elements RET
List occur in elements すべての要素型と,それが出現できる場所をリストするM-x sgml-list-occur-in-elements RET

Buffersメニュー

メニューアイテムショートカット機 能
ファイル名 パス そのファイルの内容を表示する
ディレクトリー名 パス そのディレクトリーの内容を表示する
*scrach* Emacs Lispを実行できるバッファの内容を表示する
*Messages* メッセージバッファの内容を表示する
*Help* ヘルプ要求で作られたバッファの内容を表示する
List All BuffersC-x C-bすべてのバッファをリストする

Editメニュー

メニューアイテムショートカット機 能
Undo 取り消す
Cut カットする
Copy コピーする
Paste ペーストする
Select and Paste  
Clear 消去する
Text Properties  
Fill  
Spell  

Searchメニュー

メニューアイテムショートカット機 能
Seach... 文字列で検索する
Regexp Seach... 正規表現式で検索する
Seach Backwards... 文字列で逆方向へ検索する
Regexp Seach backwards... 正規表現式で逆方向へ検索する
Repeat Seach 文字列でさらに検索する
Repeat Regexp 正規表現式でさらに検索する
Repeat backwards 文字列で逆方向へ検索する
BookmarksM-.ブックマーク
Find Tag... タグで検索する
Query Replace...M-% 
Query Replace Regexp...C-M-% 

Toolsメニュー

メニューアイテムショートカット機 能
Print  
Compare  
Merge  
Apply Patch  
Edit Miscellanea  
Version Control  
Read Net News  
Read mail  
Send mailC-x m 
Display Speedbar スピードバーを表示する
Display Calander カレンダーを表示する
Search Files...  
Compile...  
Debugger...  

HTML文書のタグ付け

 Emacsのパッケージには,psgmlの提供するSGMLモードとは別のSGMLモードを提供するsgml-mode.elが用意されています。そのスクリプトは,読み込んだファイルの拡張子が“.htm”の場合に,そのSGMLモードにします。そのSGMLモードでは,ショートカットによってHTMLタグを挿入したり,編集中の内容をウェブブラウザーで閲覧したりできます。

ショートカット機 能挿入される骨組み
 C-c 1 見出し1(最上位レベル)の挿入<h1></h1>
 C-c 2 見出し2の挿入<h2></h2>
 C-c 3 見出し3の挿入<h3></h3>
 C-c 4 見出し4の挿入<h4></h4>
 C-c 5 見出し5の挿入<h5></h5>
 C-c 6 見出し6(最下位レベル)の挿入<h6></h6>
 C-c RET段落の挿入<p>
 C-c j 強制改行の挿入<br>
 C-c C-c - 横罫線の挿入<hr>
 C-c C-c o 箇条書き(番号付き)の挿入<ol><li></ol>
 C-c C-c u 箇条書き(黒丸付き)の挿入<ul><li></ul>
 C-c C-c r ラジオボタンの挿入<input type="radio" name="" value="">
 C-c C-c c チェックボックスの挿入<input type="checkbox" name="" value="">
 C-c C-c l 箇条書き項目の挿入<li>
 C-c C-c h HREFアンカーの挿入<a href=""></a></a>
 C-c C-c n NAMEアンカーの挿入<a name=""></a></a>
 C-c C-c i 画像の挿入<img src="">
 C-c C-s   
 C-c C-v ブラウザーによる閲覧
(MacOSでは未実現)
 

データベース

 edbはデータベース管理のためのプラグインです。

 そのデータベースモードでは,データベースを閲覧したり,編集できます。データベースを開くには, M-x db-find-file RET データファイル RET を指示します。ここでは,その一部を紹介します。その詳細については,edb説明書を参照してください。

ショートカット機 能
閲覧モード  n 後ろ方向のレコードへ進む
 p 前方向のレコードへ進む
 h 要約を表示する
 M-s RET 探索パターン RET レコードを探索パターンで検索する
 C-n 編集モードへ切り替える
編集モード  TAB 後ろ方向のフィールドへ進む
 M-TAB 前方向のフィールドへ進む
 M-x db-sort RET 分類インターフェイスを呼び出す
 C-c C-c 閲覧モードへ切り替える
 C-x C-s 変更結果をディスクに保存する

 次は,パッケージの“examples”にあるデータファイル“form.dat”を開いて,閲覧(上)と要約(下)を表示すると,次のような画面になります。要約でカーソルの指した箇所が閲覧画面に表示されます。閲覧と要約の形式は形式ファイル“form.fmt”で定義されています。

気付き事項

 e-Workbenchの運用で,次のような点に気付いています。この他に,気付きや不具合がありましたら,ご一報ください。

MacOS版に関する気付き事項

Emacs

psgml / nsgmls

Emacs Lisp

MS-Windows版に関する気付き事項

Emacs

psgml / nsgmls

Emacs Lisp

tdtd / etags

 配付

 e-Workbenchは,次のパッケージで配付されています。大きなパッケージもありますので,注意してクリックしてください。

ツール名MacOS版MS-Windows版 オリジナルソース
GNU Emacs GNU Emacs
(約18MB)
GNU Emacs
(約8.5MB)
ソース
(約14.3MB)
フォントセット GNU Font
(約0.2MB)
psgml psgml
(約0.5MB)
psgml
(約0.5MB)
ソース
(約0.2MB)
nsgmls nsgmls
(約0.7MB)
nsgmls
(約0.8MB)
ソース
(約0.5MB)
tdtd tdtd tdtd ソース
xslide xslide xslide ソース
xt xt-win32
(約0.2MB)
(非公開?)
transfrmx transfrmx
(約0.2MB)
ソース
(約0.2MB)
etags etags
etags
(Emacsソースに
含まれています)
oc-unicode oc-unicode
(約0.5MB)
oc-unicode
(約0.5MB)
ソース
(約3.3MB)
edb edb
(約0.2MB)
edb
(約0.2MB)
ソース(約0.2MB)
説明書(約0.2MB)
サンプルデータ(約0.1MB)
Emacs初期化ファイル Emacs初期化ファイル Emacs初期化ファイル
SGML宣言 SGML宣言 SGML宣言
この説明書 この説明書 この説明書

注1:e-Workbenchを実行するだけであれば,オリジナルソースは不要です。

注2:MacOS版のEmacsには,etags以外の関連プログラムはまだ収録されていません。なお,MS-Windows版のetagsにはバグがありますので,私からの配付を利用してください。

注3:MacOS版のnsgmlstransfrmxなどのソースコードを公開する予定は整理の都合上まだありませんが,ご希望の方はご一報ください。ちなみに,私の開発環境は“Metrowerks CodeWarrior 6.0”です。

注4:Emacspsgmlを再配布する場合はGNUの規則に従ってください。


(2001年4月記,同改訂,6月増補,8月改訂,11月改訂,12月改訂)


(c)2001 JAGAT