\input texinfo  @c -*-texinfo-*-
@c %**start of header
@setfilename lookup.info
@settitle Lookup Manual
@footnotestyle end
@setchapternewpage odd
@c %**end of header

@set UPDATED 2000-2-12
@set EDITION 1.4
@set VERSION 1.4

@ifinfo
@dircategory The Emacs editor and associated tools
@direntry
* Lookup: (lookup).             Lookup, a Search Interface.
@end direntry

This file documents Lookup, a search interface.

Copyright @copyright{} 1997,1998,1999 Keisuke Nishida

Copyright @copyright{} 1999-2001 Lookup Development Team

Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

@ignore
Permission is granted to process this file through TeX and print the
results, provided the printed document carries a copying permission
notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual).

@end ignore
Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that this permission notice may be stated in a translation
approved by the Free Software Foundation.
@end ifinfo

@titlepage
@title Lookup Manual
@subtitle for Lookup @value{VERSION}
@author Keisuke Nishida

@page
@vskip 0pt plus 1filll
Edition @value{EDITION} @*
Updated for Lookup @value{VERSION} @*
@value{UPDATED} @*

Copyright @copyright{} 1997,1998,1999 Keisuke Nishida

Permission is granted to make and distribute verbatim copies of this
manual provided the copyright notice and this permission notice are
preserved on all copies.

Permission is granted to copy and distribute modified versions of this
manual under the conditions for verbatim copying, provided that the
entire resulting derived work is distributed under the terms of a
permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual
into another language, under the above conditions for modified versions,
except that this permission notice may be stated in a translation
approved by the Free Software Foundation.
@end titlepage

@contents

@c #####################################################################
@node Top, Introduction, (dir), (dir)
@ifinfo
@top Lookup Manual

Lookup は Emacs エディタで利用できる辞書検索インターフェースです。市販の
CD-ROM 辞書やネットワークの辞書サーバを始め、様々な情報源から簡単な操作
と設定で辞書検索が行なえます。

本書は Lookup @value{VERSION} について説明します。
@end ifinfo

@menu
* Introduction::                はじめに
* Quick Tour::                  大まかな使い方
* Getting Started::             Lookup を利用するには
* How To Lookup::               検索を行なうには
* Customization::               自分好みに調節する
* Dictionary Types::            辞書形式一覧
* Search Agents::               検索エージェント一覧
* Mode Details::                各モードの詳細
* How To Get::                  最新情報を手に入れる
* Troubleshooting::             トラブルシューティング
* Glossary::                    用語集
* Concept Index::               コンセプト索引
* Command Index::               コマンド索引
* Variable Index::              変数索引

@detailmenu 
 --- The Detailed Node Listing ---

はじめに

* Features::                    Lookup の特徴
* Environment::                 動作環境
* Copying::                     著作権について

大まかな使い方

* Quick Prepare::               辞書の準備
* Quick Setup::                 設定すべきこと
* Quick Example::               簡単な設定例
* Quick Startup::               起動するには
* Quick Search::                検索してみよう
* Quick View::                  結果を見ていく

Lookup を利用するには

* Setup Dictionary::            辞書の準備を整える
* Setup Agent::                 辞書に合わせて設定する
* Setup Command::               新しい検索コマンドを作る
* Setup Others::                その他の主な設定項目
* Setup Example::               初期化ファイルの設定例
* Setup Variables::             セットアップ変数一覧
* Setup Functions::             セットアップ関数一覧

辞書に合わせて設定する

* Setup Basis::                 基本的な設定方法
* Setup Option::                各種オプションの設定
* Setup Restriction::           利用する辞書の制限
* Setup Package::               補助パッケージの利用

その他の主な設定項目

* Setup Coding::                文字コードの設定
* Setup Gaiji::                 外字表示の準備
* Setup Query Expansion::       拡張検索の準備

拡張検索の準備

* Stemming::                    単語の語尾を取り除く
* Spell Checking::              スペルチェックを行なう
* Kanji-Kana Expansion::        漢字ひらがな拡張検索
* Universal Query Expansion::   任意の拡張検索

初期化ファイルの設定例

* Initialization::              初期化プロセスの概要
* ~/.emacs::                    @file{~/.emacs} の設定
* ~/.lookup::                   @file{~/.lookup} の設定
* site-start.el::               サイト毎の共通設定

検索を行なうには

* Startup Commands::            起動と終了
* Search String::               文字列検索
* See Result::                  検索結果の眺め方
* Specify Dictionary::          特定の辞書を利用する

文字列検索

* Search Commands::             標準の検索コマンド
* Default Method::              標準の検索方式
* Search Methods::              検索方式のいろいろ

検索結果の眺め方

* See Entries::                 エントリを順に見る
* See Contents::                本文を詳しく見る
* Make Reference::              リファレンスを参照する
* Cite Contents::               本文を引用する

自分好みに調節する

* Customize General::           一般的なカスタマイズ
* Customize Option::            辞書とエージェントのカスタマイズ
* Customize Contents::          エントリ本文のカスタマイズ
* Supplement Package::          補助パッケージを作る
* Customize Example::           詳細な設定例

一般的なカスタマイズ

* Customize Variables::         主なカスタマイズ変数
* Customize Face::              文字装飾のカスタマイズ

辞書とエージェントのカスタマイズ

* Agent Options::               エージェント・オプション一覧
* Dictionary Options::          辞書オプション一覧

エントリ本文のカスタマイズ

* Reference Pattern::           リファレンスの設定
* Gaiji Table::                 外字置き換えの設定
* Format Contents::             テキストの整形

辞書フォーマット一覧

* Setup SDIC::                  SDIC フォーマット
* Setup dictd::                 dictd フォーマット
* Setup cookie::                cookie ファイル
* Setup CD-ROM::                各種 CD-ROM 辞書
* Setup NDTP::                  NDTP 辞書サーバ
* Setup DICT::                  DICT 辞書サーバ

検索エージェント一覧

* ndic::                        フリー辞書から検索する
* ndeb::                        CD-ROM 辞書から検索する
* ndtp::                        NDTP サーバから検索する
* ndict::                       DICT サーバから検索する
* ndsrd::                       ランダムハウス英語辞典 Windows 版を検索する
* ndkks::                       日本語の読みを調べる
* ndspell::                     スペルチェックとスペル検索
* ndcookie::                    cookie ファイルから検索する

ndic

* ndic prepare::                ndic の準備
* ndic setup::                  ndic の設定
* ndic dictionary::             ndic の辞書
* ndic customize::              ndic のカスタマイズ

ndeb

* ndeb prepare::                ndeb の準備
* ndeb setup::                  ndeb の設定
* ndeb dictionary::             ndeb の辞書
* ndeb customize::              ndeb のカスタマイズ

ndtp

* ndtp prepare::                ndtp の準備
* ndtp setup::                  ndtp の設定
* ndtp dictionary::             ndtp の辞書

ndict

* ndict prepare::               ndict の準備
* ndict setup::                 ndict の設定
* ndict dictionary::            ndict の辞書

ndsrd

* ndsrd prepare::               ndsrd の準備
* ndsrd setup::                 ndsrd の設定
* ndsrd dictionary::            ndsrd の辞書
* ndsrd customize::             ndsrd のカスタマイズ

ndkks

* ndkks prepare::               ndkks の準備
* ndkks setup::                 ndkks の設定
* ndkks dictionary::            ndkks の辞書
* ndkks customize::             ndkks のカスタマイズ

ndspell

* ndspell prepare::             ndspell の準備
* ndspell setup::               ndspell の設定
* ndspell dictionary::          ndspell の辞書
* ndspell customize::           ndspell のカスタマイズ

ndcookie

* ndcookie prepare::            ndcookie の準備
* ndcookie setup::              ndcookie の設定
* ndcookie dictionary::         ndcookie の辞書

各モードについての詳細

* Select Mode::                 Select モード
* Entry Mode::                  Entry モード
* Content Mode::                Content モード

Select モード

* Select Mode Details::         Select モードの詳細
* Select Mode Commands::        Select モードのコマンド一覧

Entry モード

* Entry Mode Details::          Entry モードの詳細
* Entry Mode Commands::         Entry モードのコマンド一覧

Content モード

* Content Mode Details::        Content モードの詳細
* Content Mode Commands::       Content モードのコマンド一覧

@end detailmenu
@end menu

@c *********************************************************************
@node Introduction, Quick Tour, Top, Top
@unnumbered はじめに

近年、コンピュータで電子辞書を利用することもずいぶん一般的となり、機能的
に優れた多数の CD-ROM 辞書が販売されるようになりました。しかし、日頃から
エディタでの作業に慣れ親しんでいる者にとってはまず、いかに充実した機能を
使い込なすかよりも、単純な用語検索をどれだけ手軽に行なえるかという要求が
少なからずあるのではないかと思います。

自分も Emacs の一ファンとして、日常的な検索作業をより快適に行ないたいと
いう飽く無き欲求を持っており、そうして生まれたのがこの Lookup です。さほ
ど高度なことはやれずとも、使っていて手に (指に?) しっくりくるような快適
さ、便利さを備えた日用道具としてのソフトウェアを作りたい。そうした思いが
基本としてあります。

何を快適と感じるかは人それぞれでしょう。今後ソフトウェアをよりいっそう使
いやすいものへと育てていくため、プログラムを使ってみて感じた卒直なご意見
を頂けますと幸いです。ひいては、このプログラムを利用することで、より多く
の皆さんが快適に辞書検索を行なえるようになりましたなら嬉しく思います。

@menu
* Features::                    Lookup の特徴
* Environment::                 動作環境
* Copying::                     著作権について
@end menu

@c =====================================================================
@node Features, Environment, Introduction, Introduction
@section Lookup の特徴

Lookup の基本的な検索スタイルは、日頃よく用いる辞書をまとめて用意してお
き、そこから一気に目的の語を見付け出すことです。少しでも検索のための労力
を減らせるよう、多くの工夫を行なっています。

@itemize @bullet
@item
複数の辞書から一度に検索を行ないます。最初に利用したい辞書を全て登録して
おくことで、検索結果がまとめて表示されます。検索は普通、十分高速に行なわ
れるので、いちいち目的の辞書を切り替えるよりも効率的です。

@item
様々な種類の辞書を扱えます。市販の CD-ROM 辞書に限らず、ネットワーク上の
辞書サーバや、フリーに配布されている用語集など、多くの情報源からその違い
を気にすることなく検索が行なえます。(@pxref{Setup Agent})

@item
目的ごとに、辞書のまとまりを分けて検索が行なえます。例えば、英語学習用に
英和・和英辞典のグループ、ニュース記事を読むために現代用語集・コンピュー
タ用語集のグループ、といった具合にまとめておき、それぞれに個別の検索コマ
ンドを割り当てることが可能です。(@pxref{Setup Command})

@item
CD-ROM 辞書などに含まれる外字もそのまま表示出来ます。外字置き換えのため
に追加の設定を行なうことなく、辞書をそのまま利用出来ます。逆に置き換え文
字列を指定することで、処理を高速化するようなことも可能です。
(@pxref{Setup Gaiji})

@item
スペルチェックのための仕組みを備えています。英単語の複数形や、綴りに誤り
がある場合にでも、適切な単語を推測して、自動的に再検索を行なうように設定
することが出来ます。(@pxref{Setup Query Expansion})

@item
辞書をより快適に使えるよう行なったカスタマイズを、特定の書式でファイルに
まとめることで、設定用パッケージとして他の人とも共有出来るようになります。
もし既に手持ちの辞書用のパッケージがあれば、それを用いることで辞書をいっ
そう使いやすくすることが出来るでしょう。(@pxref{Setup Package})
@end itemize

@c =====================================================================
@node Environment, Copying, Features, Introduction
@section 動作環境

Lookup が公式にサポートを考えている Emacs は、次の通りです。

@itemize @bullet
@item
GNU Emacs 19.28 以降
@item
XEmacs 20.3 以降
@item
Mule 2.3 (based 19.28 or 19.34)
@item
Meadow 1.0 以降
@end itemize

このうち、GNU Emacs をメインターゲットとして開発しています。そのため、
最新版の GNU Emacs で利用するのが最も確実に動作します。

XEmacs 20 以降でも一通りの機能が利用できるはずです。アイコン等の追加機能
はありませんが、特別な設定なしに外字が表示出来るといった利点はあります。
ただし、表示の関係でまだ少し問題が残されています。

Mule 2.3 でも一応の動作は確認しています。ただし、一部の機能が適切に動作
しないといったいくつかの制限はあります。協力者次第で、これらはいずれ解決
されるかもしれません。

Meadow (Emacs 20 for Win32) や Mule for Win32 といった、Microsoft Windows
で利用できる Emacs でも動作は確認されています。ただし、外部コマンドの呼
び出しなどの関係で、いくらか注意が必要です。

もし上記の Emacsen で動作がうまくいかなかったり、あるいはこれら以外の
Emacs での動作を希望される方は、Lookup のメーリングリスト、もしくは管理
人までメールをお願いします。(@pxref{How To Get})

@c =====================================================================
@node Copying,  , Environment, Introduction
@section 著作権について

Lookup はフリー・ソフトウェアです。あなたは、Free Software Foundation が
公表した GNU General Public License (GNU 一般公有使用許諾) のバージョン 2
あるいはそれ以降の各バージョンの中からいずれかを選択し、そのバージョンが
定める条項に従って Lookup を再配布または変更することができます。

Lookup は有用とは思いますが、頒布にあたっては、市場性及び特定目的適合性
についての暗黙の保証を含めて、いかなる保証も行ないません。詳細については
GNU General Public License をお読みください。

あなたは、Lookup と一緒に GNU General Public License の写しを受け取って
いるはずです。そうでない場合は、Free Software Foundation, Inc., 59
Temple Place - Suite 330, Boston, MA 02111-1307, USA へ手紙を書いてくだ
さい。

Lookup の著作権は Lookup 開発チームにあります。これは有志による開発陣の
集まりで、Lookup の配布条件等の決定はその間の合意により行なわれます。問
い合わせ等は @email{lookup@@ring.gr.jp} までお願いします。

@c *********************************************************************
@node Quick Tour, Getting Started, Introduction, Top
@chapter 大まかな使い方

さあ、それでは Lookup を使ってみましょう。ヤヤコシイ説明は後回しにして、
ともかく動かすことから始めていきます。

@menu
* Quick Prepare::               辞書の準備
* Quick Setup::                 設定すべきこと
* Quick Example::               簡単な設定例
* Quick Startup::               起動するには
* Quick Search::                検索してみよう
* Quick View::                  結果を見ていく
@end menu

@c =====================================================================
@node Quick Prepare, Quick Setup, Quick Tour, Quick Tour
@section 辞書の準備

まず、何はなくとも辞書が必要です。とはいえたぶん、このプログラムを使おう
と思われた時点で既に、利用したい辞書は決まっているでしょうね。辞書をもう
用意しているという方は、本節は読み飛ばして次へ進んで下さい。

もしこれから辞書を探そうと思っている、あるいはどの辞書を選べばいいか迷っ
ているという方は、Lookup のホームページや配布物に含まれる FAQ にいくつか
アドバイスがありますので、参考にして下さい。

あるいは、「辞書はいらないから、とにかく Lookup を使ってみたいんだっ!」
という奇特な方も中にはおられるかもしれません。そのような方のために一つ、
Lookup を手っ取り早く試すための材料として、Emacs に附属の Zippy ファイル
を紹介しておきましょう。

Zippy ファイルとは、アメリカのコミック "Zippy the Pinhead" の中からいく
つかのセリフを抜き出しデータベース化したもので、Emacs の etc/yow.lines
というファイルに収められています。そして Lookup は標準で、このファイルか
らキーワードを含んだセリフを検索出来るようになっているのです!

Zippy ファイルを用いるには、何も考えずに次節で最後の指示に従って下さい。
そして記述のままに、こころゆくまで Lookup の機能をお試し下さい。一通りの
動作を確認した後、あなたはふっ、と軽く笑みを浮かべ、もっとしっかり考えた
上で行動すべきだと自分を見つめ直すことでしょう。ブラボー!

@c =====================================================================
@node Quick Setup, Quick Example, Quick Prepare, Quick Tour
@section 設定すべきこと

@cindex 検索エージェント
さて、辞書の用意が出来たら Lookup の設定です。しかし待った。Lookup が対
応している辞書には数多くの種類があります。まず始めに、辞書との実際の連絡
係となる @dfn{検索エージェント} を選ばねばなりません。

このバージョンの Lookup には、以下の検索エージェントが含まれています。こ
れらは利用する辞書の種類や利用形態の違いによって、それぞれ異なる性格を持っ
ています。それぞれの説明を参照して、自分の目的に合ったものをピックアップ
して下さい。

@subheading 用語検索に向いたエージェント

@table @code
@item ndic
フリー辞書からの直接検索 (@pxref{ndic})
@item ndeb
EPWING などに準拠した CD-ROM 書籍の個人利用 (@pxref{ndeb})
@item ndtp
NDTP サーバを用いた、ネットワーク辞書の利用 (@pxref{ndtp})
@item ndict
DICT サーバを用いた、ネットワーク辞書の利用 (@pxref{ndict})
@end table

@subheading ランダムハウス英語辞典 Windows 版を検索するエージェント

@table @code
@item ndsrd
ランダムハウス英語辞典 Windows 版を検索する (@pxref{ndsrd})
@item ndcookie
cookie ファイルから検索 (@pxref{ndcookie})
@end table

@subheading 補助的なエージェント

@table @code
@item ndkks
日本語の読みを調べる (@pxref{ndkks})
@item ndspell
スペルチェックやスペル検索 (@pxref{ndspell})
@end table


利用するエージェントが決まったら、説明に従って準備を整えて下さい。辞書の
設定やインストール、外部プログラムが必要になることもあります。Emacs の設
定についても例も挙げられているはずですから、自分の場合の設定内容を把握し
て下さい。

以上が終われば、@file{~/.emacs} ファイルに設定を書き込みます。基本的には
変数 @code{lookup-search-agents} をセットするだけです。利用したい検索エー
ジェントの数だけ、設定を並べることが出来ます。

例えば、NDTP サーバがホスト @samp{dserver} で動いており、CD-ROM 辞書を
@file{/cdrom} にマウントしているのであれば、設定は次のようになります。

@lisp
(setq lookup-search-agents '((ndtp "dserver") (ndeb "/cdrom")))
@end lisp

あるいは、Zippy ファイルに心魅かれるそこのあなたは、次の一行で OK です!

@lisp
(setq lookup-search-agents '((ndcookie "yow.lines")))
@end lisp

@c =====================================================================
@node Quick Example, Quick Startup, Quick Setup, Quick Tour
@section 簡単な設定例

さあ、辞書の設定は終わりました。しかし実際には、管理者の方が特別に設定を
行なってでもいない限り、他にもいくつかの設定が必要となります。実用上、
@file{~/.emacs} には次のように書いておくとよいでしょう。

@lisp
;;;
;;; Lookup Setup Example
;;;

;; オートロードの設定
(autoload 'lookup "lookup" nil t)
(autoload 'lookup-region "lookup" nil t)
(autoload 'lookup-pattern "lookup" nil t)

;; キーバインドの設定
(define-key ctl-x-map "l" 'lookup)              ; C-x l - lookup
(define-key ctl-x-map "y" 'lookup-region)       ; C-x y - lookup-region
(define-key ctl-x-map "\C-y" 'lookup-pattern)   ; C-x C-y - lookup-pattern

;; 検索エージェントの設定
(setq lookup-search-agents '((ndtp "dserver") (ndeb "/cdrom")))
@end lisp

最初の段落では、Lookup の各コマンドを実行したとき、自動的にプログラムを
読み込むように設定しています。もし Emacs 起動時に初期化を済ませてしまう
ことがお好みなら、代わりに @code{(require 'lookup)} などと書いておけばよ
いでしょう。

二番目の段落では、コマンドを実行するためのキーバインドを定義しています。
これは必須ではありませんが、上記のコマンドはよく用いるので、適当なキーに
割り当てておくと便利です。各自で好みのキーにバインドして下さい。

最後の段落では、利用する検索エージェントを設定しています。これは前節で説
明した通りです。各自のものに合わせて設定して下さい。

以上が終われば、式を評価するなり、Emacs を再起動するなりして、設定を有効
にして下さい。さあ、いよいよ Lookup の実行ですよ!

@c =====================================================================
@node Quick Startup, Quick Search, Quick Example, Quick Tour
@section 起動するには

お待たせしました。それでは Lookup を動かしていきましょう。まず手始めに
@kbd{M-x lookup} として、プログラムが起動することを確認して下さい。

@example

@kbd{M-x lookup @key{RET}} @result{}

======== Lookup Windows ========================================
----------------------------------------------------------------
Type `m' to select, `u' to unselect, `?' for help.

% Identifier          Title                Method
- ----------          -----                ------
* ndtp+dserver:KOKUGO 国語辞典             =<>
* ndeb+/cdrom:EIWA    英和辞典             =<>
* ndeb+/cdrom:WAEI    和英辞典             =<>





----------------------------------------------------------------
-J:%*  Lookup: *Dictionary List*      (Select Abbrev)--L5--C0--A
----------------------------------------------------------------
================================================================

@end example

上のような画面が表示されましたか? もしエラーが起こったり、あるいは一覧が
表示されないようなら、辞書やプログラムの設定に失敗しているかもしれません。
問題点を確認して、もう一度やり直してみて下さい。よくあるミスなら FAQ に
情報があるかもしれませんし、わからないことがあればメールで尋ねてもらって
も一向に構いません。

@cindex 辞書一覧バッファ
このとき表示されるバッファを @dfn{辞書一覧バッファ} と呼びます。上の例で
は、「国語辞典」「英和辞典」「和英辞典」の三つの辞書が使えるようになって
います。以下、これらの辞書を例に説明していきます。

行頭に @samp{*}(アスタリスク) のマークが付いているのは、その辞書を検索に
用いるものとして、辞書が選択されているということを表わしています。上の場
合、三つ全ての辞書から一度に検索が行なわれるという意味になります。通常、
最初は利用出来る全ての辞書が選択状態になっています。

@cindex 辞書名
@cindex 辞書 ID
@cindex エージェント ID
@samp{Identifier} とあるコラムには、辞書を特定するための名称が表示されて
います。これは利用している検索エージェント (@var{agent}) と、辞書の所在
(@var{location})、及び辞書名 (@var{name}) とを組み合わせて、
@samp{@var{agent+location:name}} という形で表わされます。本書ではこれを
@dfn{辞書 ID} と呼び、@samp{@var{name}} で表わされる @dfn{辞書名} とは区
別します。また同様に、@samp{@var{agent+location}} の部分は @dfn{エージェ
ント ID} と呼びます。

@samp{Title} とあるコラムには、辞書のタイトルが表示されます。これは検索
結果の出力などに、普段用いられるものです。オプション設定により自由に変更
することも可能ですから、後で見やすいものに変えておきましょう。

最後の @samp{Methods} とあるコラムには、辞書が対応している検索方式が示さ
れています。これは各種検索方式がそれぞれ一つの記号で表わされており、上の
場合はどの辞書も「前方一致検索」「後方一致検索」「完全一致検索」に対応し
ているという意味になります。詳しくは後ほど説明します。

このバッファでは辞書の一覧を確認する以外にも、辞書の選択状態を切り替える
などいくつかの操作が可能となっています。試しに @kbd{?} を押してみて下さ
い。別のバッファにコマンドの一覧が表示されましたね? Lookup の各バッファ
では、@kbd{?} キーを押すことで簡単なコマンド一覧が出るようになっているの
で、ちょっと調べたいときにご利用下さい。

どこでも使えるキー操作をもう一つ。@kbd{q} を押せば、そのバッファを抜けて
元の作業に戻ることが出来ます。さあ、それでは辞書の確認はこの辺にして、次
のステップに進みましょう。

@c =====================================================================
@node Quick Search, Quick View, Quick Startup, Quick Tour
@section 検索してみよう

いよいよ検索を行ないます。最も代表的な検索コマンドとして、@kbd{M-x
lookup-region} と @kbd{M-x lookup-pattern} の二つがあります。それぞれ
リージョンの内容、及びミニバッファからの入力を検索語に、検索を開始します。

@example

@kbd{M-x lookup-pattern @key{RET} test @key{RET}} @result{}

======== Lookup Windows ========================================
----------------------------------------------------------------
国語辞典            @point{}テスト
英和辞典            test


----------------------------------------------------------------
-J:%*  Lookup: *Entry* @{*:test@} [2]      (Entry Abbrev)--L1--C20
----------------------------------------------------------------
テスト
[名] 1. 試験....




----------------------------------------------------------------
-J:%*  Lookup: *Content* @{テスト@}      (Content Abbrev)--L1--C0-
----------------------------------------------------------------
================================================================

@end example

@cindex Entry バッファ
二つのバッファが表示されました。上側のバッファは @dfn{Entry バッファ} と
言い、検索の結果見付かったエントリを一覧します。ここでは二つのエントリが
表示されています。@point{} とあるのは、そこにポイントがあるという印です。
つまり、現在一つ目の「テスト」というエントリが選択されています。

@cindex Content バッファ
下側のバッファは @dfn{Content バッファ} と言い、選択されているエントリの
本文が表示されます。Entry バッファで @key{SPC} を押していけば、内容が次々
と表示されます。

上の例では @samp{test} という検索語で検索を行ないましたが、ここで入力を
次のようにすることで、検索方式を様々に切り換えることが出来ます。

@table @t
@item word
単語検索。標準の検索方法。
@item word*
前方一致検索。指定した文字列で始まる語を見付ける。
@item *word
後方一致検索。指定した文字列で終わる語を見付ける。
@item *word*
部分一致検索。指定した文字列を含んだ語を見付ける。
@item 'word'
完全一致検索。指定した文字列と一致する語を見付ける。
@item @@word
キーワード検索。指定した文字列をキーワードに持つエントリを見付ける。
@end table

ひとまずこれだけ覚えておけば十分でしょう。検索方式は他にもまだいくつか
ありますが、詳しくは後ほど説明します。ここではもう少し、検索結果の見方に
ついて話を進めていきます。

@c =====================================================================
@node Quick View,  , Quick Search, Quick Tour
@section 結果を見ていく

以下、Entry バッファでよく用いられるコマンドについて説明します。キー操作
を忘れてしまったときには、@kbd{?} を押せば確認出来ます。

@itemize @bullet
@item
本文のスクロール
@table @kbd
@item @key{SPC}
一画面分、先に進む。
@item @key{DEL}
一画面分、前に戻る。
@item <
バッファの先頭へ戻る。
@item >
バッファの最後へ進む。
@end table

@item
エントリの選択
@table @kbd
@item n
次のエントリに移動。
@item p
前のエントリに移動。
@item M-n
検索履歴を次に進む。
@item M-p
検索履歴を前に戻る。
@end table

@item
本文に対する操作
@table @kbd
@item s
Content バッファで @code{isearch-forward} を実行。
@item w
Content バッファの内容をキルリングにセーブ。
@item L
リファレンスを一覧。
@end table
@end itemize

@cindex Overview モード
まだまだあります。見付かったエントリが多くて一覧が見辛いときには、
@kbd{v} を押すことで @dfn{Overview モード} に入ります。
Overview モードでは Content バッファがクローズされ、Entry バッファを
広く見ることが出来ます。Overview モードを抜けるには、もう一度 @kbd{v} 
とするか、あるいは @key{SPC} を押して下さい。

逆にエントリの本文を広く見たいときには、@kbd{o} が使えます。これは 
Lookup のウィンドウをフレーム一杯に広げ、一時的に表示領域を広く取ります。
@kbd{q} でバッファを閉じれば、次からまた元に戻ります。

一度バッファを閉じた後でも、もう一度 @kbd{M-x lookup} とすることで、最後
に Lookup を抜けたときの状態が取り戻されます。@kbd{q} と @kbd{M-x lookup} 
を繰り返すことで、何度でも検索結果を見直すことが出来ます。

検索結果を表示したまま最初のバッファに戻りたいときには、@kbd{r} を押せば 
OK です。@kbd{h} を連打すれば、Entry バッファと Content バッファの間を
往復することも出来ます。

これだけ覚えておけば、日常の作業は十分に行なえるでしょう。しかし Lookup 
には、場合によって役に立ついくつかのコマンドが他にも用意されています。
次章以降で、それらを含む Lookup の完全な機能について説明します。

さて、以上で Lookup を使うための短かいツアーも終了です。いかがでしょうか?
Lookup はあなたの要望を満たしてくれそうですか? もし使っていて「もっとこ
んな機能が欲しいぞ」とかいうことがありましたら、遠慮なくメールででも伝え
て下さい。

それでは、あなたのより快適な検索ライフを祈って。Happy Looking Up!

@c *********************************************************************
@node Getting Started, How To Lookup, Quick Tour, Top
@chapter Lookup を利用するには

この章では、Lookup のインストール後に行なわなければならない設定項目につ
いて説明します。プログラムのインストールについては、Lookup 配布物に附属
のファイル INSTALL を参照して下さい。設定後の更なるカスタマイズについて
は、@ref{Customization} を参照して下さい。

@menu
* Setup Dictionary::            辞書の準備を整える
* Setup Agent::                 辞書に合わせて設定する
* Setup Command::               新しい検索コマンドを作る
* Setup Others::                その他の主な設定項目
* Setup Example::               初期化ファイルの設定例
* Setup Variables::             セットアップ変数一覧
* Setup Functions::             セットアップ関数一覧
@end menu

@c =====================================================================
@node Setup Dictionary, Setup Agent, Getting Started, Getting Started
@section 辞書の準備を整える

Lookup では、以下の辞書の利用をサポートしています。自分の利用したい辞書
を確認し、それぞれの下準備を整えて下さい。

@c =====================================================================
@node Setup Agent, Setup Command, Setup Dictionary, Getting Started
@section 辞書に合わせて設定する

@menu
* Setup Basis::                 基本的な設定方法
* Setup Option::                各種オプションの設定
* Setup Restriction::           利用する辞書の制限
* Setup Package::               補助パッケージの利用
@end menu

@c ---------------------------------------------------------------------
@node Setup Basis, Setup Option, Setup Agent, Setup Agent
@subsection 基本的な設定方法

Lookup を利用するには、まず始めに辞書との直接のインターフェースとなる
@dfn{検索エージェント} を選ぶ必要があります。利用出来る検索エージェント
は @ref{Search Agents} に一覧があるので、そちらを参照してどれを用いるか
決めて下さい。

@vindex lookup-search-agents
用いるエージェントが決まれば、変数 @code{lookup-search-agents} を設定し
ます。これはエージェントの設定のリストで、リストの各要素は次の形式を取り
ます。

@lisp
(@var{class} @var{location} [@var{option}...])
@end lisp

@var{class} には、エージェントの種類をシンボルで指定します。これは
@code{ndic} とか @code{ndtp} とか言うエージェントの名前そのものです。

@var{location} には、辞書の所在を文字列により表します。何を指定すべきか
は利用するエージェントにより異なるので、それぞれのエージェントについての
説明を参照して下さい。これは省略可能な場合もあります。

@var{option} は、エージェントに対する省略可能なオプションです。これは
パラメータを名前付きで与えるためのもので、タグとなるシンボルと、値となる
任意のオブジェクトとの cons によって表わします。いくつでも指定できます。

具体的な例を挙げましょう。例えば、次の設定では、

@lisp
(ndtp "dserver" :port 2010 :account "user@@domain")
@end lisp
@noindent
エージェントの種類は @code{ndtp}、辞書の所在は @code{"dserver"} で、
オプション @code{:port} に値 @code{2010} を、オプション @code{:account} に
値 @code{"user@@domain"} をそれぞれ指定しています。

各エージェントで具体的に何を設定すべきかは、それぞれのエージェントについ
ての説明を参照して下さい。オプションについては、すべてのエージェントで共
通に使えるものもあります。@ref{Agent Options} を参照して下さい。

上のような設定を、利用するエージェントの数だけ並べたものが、実際の
@code{lookup-search-agents} の値となります。例えば一つの典型的な例として、
次のような設定が考えられるでしょう。

@lisp
;; ホスト dserver で NDTP サーバが動いており、
;; スペルチェックの機能を有効とする場合。
(setq lookup-search-agents
      '((ndtp "dserver") (ndspell)))
@end lisp

@c ---------------------------------------------------------------------
@node Setup Option, Setup Restriction, Setup Basis, Setup Agent
@subsection 各種オプションの設定

先の節では、エージェントにオプションを指定するやり方について説明しました
が、オプションは辞書にも設定することが可能です。実際、Lookup のエージェ
ントや辞書はほとんど、何らかのオプション指定によってカスタマイズされるよ
うになっています。オプションの設定は今後いろいろな場面で出てくるので、こ
こで一度詳しく説明しておきます。

@cindex オプション
Lookup で @dfn{オプション} とは、名前付きパラメータのことを意味します。
つまり特定のシンボルをタグとして、それに対応させる形で値を設定します。
これは典型的には、@code{(@var{key} . @var{value})} という cons の形で
表現されます。

@vindex lookup-dictionary-options-alist
先程はエージェントのオプションとして、@code{lookup-search-agents} に
オプションの cons のリストを設定しましたが、辞書の場合には変数 
@code{lookup-dictionary-options-alist} を用いることが出来ます。

例えば辞書にオプション @code{:title} を設定することを考えてみましょう。
これは辞書のタイトルを変更するための共通オプションです。次のようにします。

@lisp
(setq lookup-dictionary-options-alist
      '(("ndtp+dserver:KOKUGO" ':title "国語辞典")
        ("ndeb+/cdrom:EIWA" ':title "英和辞典")
        ("ndeb+/cdrom:WAEI" ':title "和英辞典")))
@end lisp

先のエージェント・オプションの設定法とよく似ているのがわかると思います。
辞書を特定するために、辞書 ID (@pxref{Quick Startup}) を文字列で指定してい
ます。

@findex lookup-set-dictionary-option
しかしこの方法では、設定が増えてくると、ごちゃごちゃとして少々わかりづら
くなってしまいます。そこで実際のオプション設定のために便利な関数
@code{lookup-set-dictionary-option} を用意しています。この関数は間接的に
@code{lookup-dictionary-options-alist} を書き換えます。実用上はこの関数
を利用し、@code{lookup-dictionary-options-alist} は直接に変更しない方が
いいでしょう。上の例は、次の式と等価になります。

@lisp
(lookup-set-dictionary-option "ndtp+dserver:KOKUGO" ':title "国語辞典")
(lookup-set-dictionary-option "ndeb+/cdrom:EIWA" ':title "英和時点")
(lookup-set-dictionary-option "ndeb+/cdrom:WAEI" ':title "和英辞典")
@end lisp

ただし、これは関数なので、Lookup のプログラム・ファイルをロードしてから
でないと利用出来ません。そこでプログラムのロード直後に設定が完了するよう、
Lookup 専用の初期化ファイル @file{~/.lookup} を用いることが出来ます。こ
れは後でまた詳しく説明します。(@pxref{Setup Example})

@vindex lookup-default-dictionary-options
また、全ての辞書に対してデフォルトのオプションを設定するために、変数 
@code{lookup-default-dictionary-options} が利用出来ます。オプションの
cons をリストにして並べます。例えば次のように設定すれば、単語の語尾を
取り除く処理をデフォルトで行なうようになります。

@lisp
(setq lookup-default-dictionary-options
      '((:stemmer .  stem-english)))
@end lisp

全ての辞書に対してではなく、ある特定のエージェントにだけデフォルトを設定
したいこともあります。これは単純に、辞書オプションをエージェント・オプショ
ンと同じに並べるだけです。辞書オプションが指定されなかった場合、次にエー
ジェント・オプションから同じものが探し出されます。ただし @code{:title} の
設定など、共有が無意味なものについてはその限りではありません。

@vindex lookup-agent-options-alist
@findex lookup-set-agent-option
@vindex lookup-default-agent-options
辞書オプションと同様に、エージェント・オプションのためにも設定用の変数・
関数が用意されています。それぞれ @code{lookup-agent-options-alist}、
@code{lookup-set-agent-option}、@code{lookup-default-agent-options} です。
例えば辞書を無効化するには、次のように書くことも出来ます。

@lisp
(setq lookup-search-agents '((agent "location")))
(lookup-set-agent-option "agent+location" ':disable '("KOKUGO" "WAEI"))
@end lisp

なお、オプション設定の優先順位は次の通りです。

@itemize @bullet
@item 辞書オプション
@enumerate
@item
lookup-dictionary-options-alist
@item
lookup-default-dictionary-options
@item
エージェント・オプションから継続して検索
@end enumerate

@item エージェント・オプション
@enumerate 4
@item
lookup-search-agents 設定時のオプション
@item
lookup-agent-options-alist
@item
lookup-default-agent-options
@end enumerate
@end itemize

@c ---------------------------------------------------------------------
@node Setup Restriction, Setup Package, Setup Option, Setup Agent
@subsection 利用する辞書の制限

変数 @code{lookup-search-agents} で設定されたエージェントは通常、Lookup 
の起動と同時に全て初期化され、そこに含まれる全ての辞書が利用されるものと
して選択されます。しかし場合によっては、そのうち一部の辞書しか必要としな
いこともあるかもしれません。エージェントに次の共通オプションを与えること
で、あらかじめ有効とする辞書を制限することが出来ます。

@table @code
@item :enable
有効とする辞書名のリスト。
@item :disable
無効とする辞書名のリスト。
@end table

例えば、あるエージェントが三つの辞書 @samp{KOKUGO}, @samp{EIWA},
@samp{WAEI} を持っているとしましょう。この内 @samp{EIWA} だけを
有効にしたいのであれば、次のように設定します。

@lisp
(agent "location" :enable ("EIWA"))
@end lisp

あるいは

@lisp
(agent "location" :disable ("KOKUGO" "WAEI"))
@end lisp

ここで指定すべき辞書名は、@kbd{M-x lookup} として表示される辞書一覧の
バッファから知ることが出来ます (@pxref{Quick Startup})。最初にオプション
なしで起動して含まれる辞書を確認し、後から設定を変更するとよいでしょう。

あるいは、無効にはしたくないが、滅多に用いないという辞書もあるかもしれま
せん。上と同様に、次の共通オプションを与えることで、辞書の初期選択状態を
変えることが出来ます。

@table @code
@item :select
選択する辞書名のリスト。
@item :unselect
未選択にする辞書名のリスト。
@end table

未選択にされた辞書は、後から選択することで利用可能となります。
(@pxref{Specify Dictionary})

@c ---------------------------------------------------------------------
@node Setup Package,  , Setup Restriction, Setup Agent
@subsection 補助パッケージの利用

@cindex 補助パッケージ
Lookup では様々な種類の辞書を扱いますが、各エージェントでは対応しきれな
い辞書毎の細かな調整を行なうために、@dfn{補助パッケージ} というものが利
用出来ます。これは辞書に固有の設定をまとめた設定ファイル集です。

補助パッケージがなくとも検索に支障はありませんが、それを用いることで出力
がより見やすく整形されたり、不足する設定が補われたりと、使い勝手が良くな
ることは期待出来ます。

いくつかの辞書に対応した補助パッケージが Lookup のホームページに用意され
ているので、自分の辞書に対応したものがないか探してみて下さい
(@pxref{How To Get})。
もし期待のものが見付かれば、次のようにして準備して下さい。

@cindex パッケージ・ディレクトリ
@cindex パッケージ名
まず、補助パッケージを適当なディレクトリに展開して下さい。展開する
ディレクトリを以下では @dfn{パッケージ・ディレクトリ} と呼びます。
パッケージを展開するとディレクトリが一つ生成されますが、中のファイルを
パッケージ・ディレクトリに移動しても構いません。
また、生成されたディレクトリの名前を @dfn{パッケージ名} と呼びます。

次に、初期化ファイル (@file{~/.lookup}; @pxref{Setup Example}) で
次のように設定します。

@lisp
;; パッケージ・ディレクトリの設定
(setq lookup-package-directory "/your/package/directory")

;; 『辞・典・盤 97』のパッケージ利用
(lookup-use-package "ndeb+/cdrom" "jitenban97")
@end lisp

@vindex lookup-package-directory
@findex lookup-use-package
変数 @code{lookup-package-directory} によりパッケージ・ディレクトリを
設定します。@code{lookup-use-package} によりパッケージの読み込みを
行ないます。第一引数はエージェント ID、第二引数はパッケージ名です。

@code{lookup-use-package} は内部的には、@ref{Setup Option} で説明した
設定用関数 @code{lookup-set-agent-option} と
 @code{lookup-set-dictionary-option} を用いてオプション設定を行なっている
だけです。従って一度パッケージを読み込んだ後でも、これらの関数を用いて
更に設定を上書きすることや、同じエージェントに別のパッケージを重ねて
適用することも可能です。

手持ちの辞書のパッケージが存在しない場合、それを自分で作ることも出来ます。
(@pxref{Supplement Package})

@c =====================================================================
@node Setup Command, Setup Others, Setup Agent, Getting Started
@section 新しい検索コマンドを作る

既存のソースを参考にしてください。もし分からないことがあれば、
メイリングリスト ( @email{lookup@@ring.gr.jp} ) 
に質問してみるとよいかもしれません。

@c @xref{Customize Command}.

@c =====================================================================
@node Setup Others, Setup Example, Setup Command, Getting Started
@section その他の主な設定項目

@menu
* Setup Coding::                文字コードの設定
* Setup Gaiji::                 外字表示の準備
* Setup Query Expansion::       拡張検索の準備
@end menu

@c ---------------------------------------------------------------------
@node Setup Coding, Setup Gaiji, Setup Others, Setup Others
@subsection 文字コードの設定

UNIX では次のようにする。

@lisp
(setq default-coding-system 'euc-jp)
@end lisp

@c ---------------------------------------------------------------------
@node Setup Gaiji, Setup Query Expansion, Setup Coding, Setup Others
@subsection 外字表示の準備

Lookup は CD-ROM 書籍などに含まれる外字の表示をサポートしています。
@footnote{ただし、端末 (tty) では表示出来ません。}
外字を表示するには、それぞれの検索エージェントで適切な設定を行なった上で、
Lookup を次のように設定して下さい。

@enumerate
@item
XEmacs および GNU Emacs (ver.21 以降) の場合:

特別な準備は必要ありません。Lookup は XEmacs/Emacs の glyph の機能を利用
して、外字を一種の画像として扱います。設定は自動で行なわれます。

@item
GNU Emacs (ver. 20 以前) 及び Mule の場合:

@url{http://openlab.ring.gr.jp/lookup/info/gaiji.html} を参考に
bitmap-mule をインストールして下さい。次のいずれかの方法で準備が完了です。

@enumerate
@item
Lookup の起動前に bitmap-mule をロードする。

例えば @file{~/.emacs} に @code{(require 'bitmap)} と書いておいて下さい。

@item
@vindex lookup-use-bitmap
初期化ファイルで @code{lookup-use-bitmap} を @code{t} にセットする。

この場合、実際に外字を表示する際に bitmap-mule が読み込まれます。
@end enumerate

@end enumerate

@vindex lookup-enable-gaiji
逆に、外字を表示させたくない場合には、変数 @code{lookup-enable-gaiji} を 
@code{nil} に設定して下さい。これはデフォルトで @code{t} となっています。

@c ---------------------------------------------------------------------
@node Setup Query Expansion,  , Setup Gaiji, Setup Others
@subsection 拡張検索の準備

日頃から検索をしていると、入力のちょっとした誤りくらいは自動的に修正して
検索を行なってくれると有り難く思います。Lookup には、入力された検索語を
補正するためのいくつかの機能が備わっています。

@menu
* Stemming::                    単語の語尾を取り除く
* Spell Checking::              スペルチェックを行なう
* Kanji-Kana Expansion::        漢字ひらがな拡張検索
* Universal Query Expansion::   任意の拡張検索
@end menu

@c .....................................................................
@node Stemming, Spell Checking, Setup Query Expansion, Setup Query Expansion
@subsubheading 単語の語尾を取り除く

英語などで、単語の複数形や過去形などに付く余分な文字列を取り除き、原型を
推測するための処理を @dfn{stemming} といいます。これが出来ると、文字列の
修正なしに検索を行なえるので便利です。Lookup では、辞書オプション 
@code{:stemmer} を指定することで、stemming を行なうよう設定出来ます。

オプション @code{:stemmer} には、stemming を行なう関数を指定します。標準
では、英単語用の stemming 関数 @code{stem-english} が備えられています。
次のように設定して下さい。

@lisp
(lookup-set-dictionary-option "agent:DICT" ':stemmer 'stem-english)
@end lisp

これで指定した辞書から検索を行なうときには、stemming が行なわれるように
なります。具体的には、次の手順で検索されます。

@enumerate
@item
元の検索語で検索する。

始めは入力をそのまま検索します。それで見付かれば何も問題ありません。

@item
設定された stemming 関数で原型を推測する。

stemming 関数は、文字列を受け取ってその原型の候補のリストを返します。
Lookup は候補のそれぞれについて、辞書から単語が見付かるまで検索を繰り返
します。検索語が単純な複数形や過去形をしていれば、一度のやり直しで結果に
たどり付けるはずです。

@item
共通の語頭を持った似た単語を探し出す。

例えば、@samp{lexicographer} という語は載っていないが、
@samp{lexicography} なら載っているという辞書があるかもしれません。
stemming ではそのようなケースに対応することは出来ませんが、参考程度にそ
の情報を示してくれると親切です。そこで、ある程度の語長を持つ語を検索した
場合に限って、Lookup は共通語頭を持つ語の検索に挑戦します。
@end enumerate

これでも何も見付からなければ検索を諦めます。その場合、二回か三回の検索処
理が無駄になりますが、遠隔地の辞書サーバにアクセスしているのでもない限り、
これは大したコストではありません。よってあらかじめ厳格なスペルチェックを
行なうよりも、この方式を用いる方が、効率的に自動補正を行なえます。

@c .....................................................................
@node Spell Checking, Kanji-Kana Expansion, Stemming, Setup Query Expansion
@subsubheading スペルチェックを行なう

語尾だけの問題ではなく、綴りそのものを間違えたのでは何も見付かりません。
そこで検索語のスペルチェックを行ない、その上で検索を行なう機能が欲しくな
ります。

Lookup のスペルチェック機能は、検索エージェント `ndspell' として実現され
ています (@pxref{ndspell})。@code{lookup-search-agents} の設定において、
リストに ndspell を加えることでスペルチェックが行なわれるようになります。

ここでリストのどの位置に ndspell を加えるかが問題となります。ndspell を
置く位置を変えることで、スペルチェックを行なうタイミングを変えることが
可能です。

リストの最初に ndspell を置くと、いきなりスペルチェックを始めます。スペ
ルミスがあまりにも多く、スペルチェックをしてから検索を始めたいという人に
は、この方法が向いているかもしれません。

しかし、検索の度に毎回スペルチェックを行なうというのは効率的ではありませ
ん。そこで ndspell をリストの最後に置くことで、まず他の辞書で一度検索を
行ない、それでも何も見付からなかったときのみ、ndspell でスペルチェックを
行なうようにすることが出来ます。ndspell は、そのような利用を想定して作ら
れています。

もしどうしてもスペルチェックを行ないたいということがあれば、Entry バッファ
で @kbd{g} を押して再検索を行なうことで、ndspell にスペルチェックを強制
することも可能です。より詳しくは、@ref{ndspell} を参照して下さい。

@c .....................................................................
@node Kanji-Kana Expansion, Universal Query Expansion, Spell Checking, Setup Query Expansion
@subsubheading 漢字ひらがな拡張検索の準備

辞書によっては、漢字を含む検索語を用いて検索することができず、漢字をひら
がなに変換する必要がある場合があります。辞書オプション :hiragana を設定
すると、このような辞書を快適に検索することができます。

@lisp
(lookup-set-dictionary-option "agent:DICT" ':hiragana t)
@end lisp

漢字ひらがな拡張検索を行うように設定すると、次のような動作を行います。

@enumerate
@item
元の検索語で検索する。

始めは入力をそのまま検索します。それで見付かれば何も問題ありません。

@item
漢字列をひらがな列に変換し、得られたひらがな列を検索語として再検索を行う。

@item
得られたエントリを、漢字列を用いてフィルタリングする。
@end enumerate

漢字ひらがな拡張検索機能を利用するためには、KAKASI がインストールされて
いる必要があります。@xref{ndkks prepare}.

@c .....................................................................
@node Universal Query Expansion,  , Kanji-Kana Expansion, Setup Query Expansion
@subsubheading 任意の拡張検索

辞書の性質によっては、ユーザーが任意の置き換えを定義したい場合があるかも
知れません。そのような場合には、:expander オプションと :expand-filter オ
プションが利用できます。

例えば、次のような設定ができます。

@lisp
(lookup-set-dictionary-option "agent:DICT" ':expander 'foo-expander)
(lookup-set-dictionary-option "agent:DICT" ':expand-filter 'foo-filter)
@end lisp

ただし、@code{foo-expander} は、文字列を取り、文字列のリストを返す関数で
なければなりません。また、@code{foo-filter} は、文字列とエントリのリスト
を取り、エントリのリストを返す関数でなければなりません。

このように設定すると、Lookup は以下のような検索処理を行います。

@enumerate
@item
元の検索語で検索する。

@item
検索語を @code{foo-expander} によって置換して再検索を行う。

@item
得られたエントリを、@code{foo-filter} を用いてフィルタリングする。
@end enumerate

前節で説明した漢字ひらがな拡張検索機能は、次のような設定と同値です。

@lisp
(lookup-set-dictionary-option "agent:DICT" ':expander 'lookup-kanji-get-readings)
(lookup-set-dictionary-option "agent:DICT" ':expand-filter 'lookup-kanji-filter)
@end lisp

@c =====================================================================
@node Setup Example, Setup Variables, Setup Others, Getting Started
@section 初期化ファイルの設定例

@vindex lookup-init-file
以下は、Lookup の具体的な設定例です。設定はすべて @file{~/.emacs} で行な
うことも可能ですが、専用の初期化ファイルとして @code{lookup-init-file}
(@file{~/.lookup}) が Lookup 起動時に読み込まれるので、これを用いること
にします。

@menu
* Initialization::              初期化プロセスの概要
* ~/.emacs::                    @file{~/.emacs} の設定
* ~/.lookup::                   @file{~/.lookup} の設定
* site-start.el::               サイト毎の共通設定
@end menu

@c ---------------------------------------------------------------------
@node Initialization, ~/.emacs, Setup Example, Setup Example
@subsection 初期化プロセスの概要

まず Lookup の実行過程について大まかに説明します。

@enumerate
@item
Emacs の起動
@item
@file{~/.emacs} の読み込み
@item
Lookup の起動
@item
Lookup プログラム・ファイル (@file{*.elc}) の読み込み
@item
Lookup 初期化ファイル (@file{~/.lookup}) の読み込み (存在すれば)
@item
@code{lookup-load-hook} の実行
@item
Lookup 初期化開始
@end enumerate

このように Lookup のプログラム・ファイルは @file{~/.emacs} よりも後から
読み込まれるため、これまで説明したオプションやパッケージの設定用関数を
用いるには、通常、次のいずれかの方法を用います。

@enumerate
@item
@file{~/.lookup} を用いる。

これが一番、普通のやり方です。@file{~/.lookup} を利用すれば、
余計なことを気にせずに全ての設定を行なえます。

@item
@vindex lookup-load-hook
@code{lookup-load-hook} を用いる。

サイトで共通の設定を行なうような場合、@file{~/.lookup} を用いるわけには
いきません。あるいは、全てを @file{~/.emacs} で行うというポリシーの人も
いるかもしれません。そのような目的のために、@file{~/.lookup} と同様の
タイミングで初期化を行なうための hook @code{lookup-load-hook} を用いる
ことが出来ます。次のようにします。

@lisp
;; load-hook の設定
(add-hook 'lookup-load-hook 'init-lookup)

;; Lookup の設定内容
(defun init-lookup ()
  (setq lookup-search-agents '((agent) ...))
  (lookup-set-agent-option "agent" ':key 'value)
  ...
  )
@end lisp
@end enumerate

@c ---------------------------------------------------------------------
@node ~/.emacs, ~/.lookup, Initialization, Setup Example
@subsection @file{~/.emacs} の設定

@file{~/.lookup} を用いるにしても、キーバインドの設定等、いくつかのものは
@file{~/.emacs} で行なうことが必要です。以下にその例を示します。

@lisp
;;;
;;; Lookup
;;;

;; キーバインドとオートロードの設定
(define-key ctl-x-map "l" 'lookup)
(define-key ctl-x-map "y" 'lookup-region)
(define-key ctl-x-map "\C-y" 'lookup-pattern)
(autoload 'lookup "lookup" nil t)
(autoload 'lookup-region "lookup" nil t)
(autoload 'lookup-pattern "lookup" nil t)

;; 自作コマンドを利用する場合
(define-key help-map "\C-e" 'english-search-pattern)
(autoload 'english-search-pattern "lookup" nil t)

;; 初期化ファイルを変更する場合
(setq lookup-init-file "~/.lookup")
@end lisp

@c ---------------------------------------------------------------------
@node ~/.lookup, site-start.el, ~/.emacs, Setup Example
@subsection @file{~/.lookup} の設定

@file{~/.lookup} で辞書の設定を行ないます。これまで説明した通りです。

@lisp
;;; .lookup --- setup for Lookup                -*- emacs-lisp -*-

;; 検索エージェントの設定
(setq lookup-search-agents '((ndeb "/cdrom") (ndspell)))

;; 補助パッケージの読み込み
(setq lookup-package-directory "~/emacs/lookup/packages")
(lookup-use-package "ndeb+/cdrom" "mydict")

;; オプションの設定
(lookup-set-dictionary-option "ndeb+/cdrom:EIWA" ':title "英和辞典")

;; 外字利用の設定
(setq lookup-use-bitmap t)

;;; .lookup ends here
@end lisp

@c ---------------------------------------------------------------------
@node site-start.el,  , ~/.lookup, Setup Example
@subsection サイト毎の共通設定

Lookup の設定をサイトで共有するのであれば、@file{site-start.el} ファイル
に設定を加えます。次のような感じにすればいいでしょう。

@lisp
;;;
;;; Lookup Site Start
;;;

;; オートロードの設定
(autoload 'lookup "lookup" nil t)
(autoload 'lookup-region "lookup" nil t)
(autoload 'lookup-pattern "lookup" nil t)

;; load-hook の設定
(add-hook 'lookup-load-hook 'site-start-lookup)

(defun site-start-lookup ()
  ;; 検索エージェントの設定
  (setq lookup-search-agents '((ndtp "dserver")))

  ;; 補助パッケージの設定
  (setq lookup-package-directory "/net/share/emacs/lookup/packages")
  (lookup-use-package "ndtp+dserver" "ourdict")
  )
@end lisp

@c =====================================================================
@node Setup Variables, Setup Functions, Setup Example, Getting Started
@section セットアップ変数一覧

@table @asis
@item @code{lookup-init-file}
Lookup の初期化ファイル名。デフォルトは @file{~/.lookup}。
このファイルは @file{lookup.el} のロード直後に読み込まれる。

@item @code{lookup-load-hook}
Lookup のロード完了直後に実行される hook。
@code{lookup-init-file} の読み込み直後に実行される。

@item @code{lookup-search-agents}
検索エージェントの設定のリスト。
リストの各要素は次の形式を取る:

@lisp
(@var{class} @var{location} [@var{option}...])
@end lisp

@var{class} には、エージェントの種類をシンボルで指定する。
@var{location} には、エージェントの所在を文字列で指定する。
@var{arg} は省略可能で、エージェントに対する追加の引数を指定する。
@var{options} は省略可能で、同じく追加のオプションを指定する。

@lisp
例: (setq lookup-search-agents
          '((ndtp "dserver" :port 2010)
            (ndeb "/cdrom" :enable ("EIWA"))))
@end lisp

@item @code{lookup-default-agent-options}
検索エージェントにデフォルトで与えるオプションのリスト。
各オプションは、タグとなるシンボルと、値となる任意のオブジェクトとの
cons によって表わす。

@item @code{lookup-agent-options-alist}
検索エージェントのオプションを設定する連想リスト。
各要素の car にはエージェント ID (@code{"@var{class+location}"}) を指定し、
cdr にはオプションのリストを指定する。

@item @code{lookup-default-dictionary-options}
辞書にデフォルトで与えるオプションのリスト。
各オプションは、タグとなるシンボルと、値となる任意のオブジェクトとの
cons によって表わす。

@item @code{lookup-dictionary-options-alist}
辞書のオプションを設定する連想リスト。
各要素の car には辞書 ID (@code{"@var{class+location:name}"}) を指定し、
cdr にはオプションのリストを指定する。

@item @code{lookup-package-directory}
補助パッケージが収められるディレクトリ。
@end table

@c =====================================================================
@node Setup Functions,  , Setup Variables, Getting Started
@section セットアップ関数一覧

@table @asis
@item @code{lookup-set-agent-option} @var{id} @var{tag} @var{value}
検索エージェントのオプションをセットする。
@var{id} はエージェント ID。@var{tag} はオプションのタグ。
@var{value} はセットする値。

@item @code{lookup-set-dictionary-option} @var{id} @var{tag} @var{value}
辞書のオプションをセットする。
@var{id} は辞書 ID。@var{tag} はオプションのキー。
@code{value} はセットする値。
この関数は @code{lookup-dictionary-options-alist} の値を書き換える。

@item @code{lookup-use-package} @var{agent-id} @var{package-name}
補助パッケージをロードする。
@var{agent-id} は、パッケージを適用するエージェント ID。
@var{package-name} は、パッケージ名、あるいはパッケージの絶対パス。
絶対パスでない場合、パッケージは変数 @code{lookup-package-directory} が
示すディレクトリに展開しておく必要がある。
この関数は @code{lookup-agent-options-alist} 及び
@code{lookup-dictionary-options-alist} の値を書き換える。
@end table

@c *********************************************************************
@node How To Lookup, Customization, Getting Started, Top
@chapter 検索を行なうには

この章では、Lookup で検索を行なう方法について詳しく説明します。また、
特定の辞書から情報を得るための方法についても説明します。

@menu
* Startup Commands::            起動と終了
* Search String::               文字列検索
* See Result::                  検索結果の眺め方
* Specify Dictionary::          特定の辞書を利用する
@end menu

@c =====================================================================
@node Startup Commands, Search String, How To Lookup, How To Lookup
@section 起動と終了

@findex lookup
最初に Lookup を起動するためのコマンドは @kbd{M-x lookup} です。これは
利用出来る辞書の一覧をバッファに表示し、辞書選択モードに入ります。この
バッファでの操作については、@ref{Specify Dictionary} を参照して下さい。

@kbd{M-x lookup} を用いずとも、次節の検索コマンドをいきなり実行しても
構いません。一度検索が行なわれると、@kbd{M-x lookup} は最後の検索結果を
再表示するようになります。一度 Lookup のウィンドウを閉じた後でも、もう
一度結果を見返すのに使えます。

@findex lookup-suspend
Lookup を抜けるためのコマンドは @kbd{M-x lookup-suspend} です。これは
Lookup の各ウィンドウをいったん閉じて、検索を中断します。検索を完全に
やめてしまうときには、@kbd{M-x lookup-exit} が使えます。これはバッファや
キャッシュの削除、サブプロセスの終了などの作業を行ないます。Lookup の
各バッファでは、これらのコマンドはそれぞれ @kbd{q} と @kbd{Q} によって
直接、または間接的に呼び出されます。

@vindex lookup-save-configuration
Lookup を抜けたとき、変数 @code{lookup-save-configuration} の値が
@code{non-nil} であれば、画面が検索を開始したときの状態に戻されます。
これはデフォルトで @code{t} に設定されています。

@findex lookup-restart
Lookup の初期化ファイルを書き換えたときには、コマンド
@kbd{M-x lookup-restart} が利用出来ます。これは Lookup をいったん終了
させた後、@file{~/.lookup} を読み直して再初期化を行ないます。これは通常
@kbd{R} に割り当てられています。

@c =====================================================================
@node Search String, See Result, Startup Commands, How To Lookup
@section 文字列検索

Lookup のもっとも一般的な検索方法は、検索語となる文字列を指定して検索を
行なうことです。以下、これについて詳しく説明します。

@menu
* Search Commands::             標準の検索コマンド
* Default Method::              標準の検索方式
* Search Methods::              検索方式のいろいろ
@end menu

@c ---------------------------------------------------------------------
@node Search Commands, Default Method, Search String, Search String
@subsection 標準の検索コマンド

Lookup 標準の検索コマンドには、代表して次の五つのものがあります。

@table @kbd
@item M-x lookup-pattern
@findex lookup-pattern
ミニバッファからの入力を検索語に検索を開始します。
デフォルトの検索語として、ポイント位置の単語が取り出されます。

@vindex lookup-use-kakasi
この時、変数 @code{lookup-use-kakasi} の値が @code{non-nil} であれば、
KAKASI プログラムを利用して日本語の単語もそれなりに切り出します。
これはデフォルトでは @code{nil} になっています。

最近の Emacs であれば、デフォルトの検索語はミニバッファで @kbd{M-n}
とすることで編集することが出来ます。

@item M-x lookup-region
@findex lookup-region
リージョンの文字列を検索語に検索を開始します。

@item M-x lookup-word
@findex lookup-word
ポイント位置の単語を検索語に検索を開始します。

@item @code{lookup-selection}
@findex lookup-selection
マウスによる選択領域を検索語に検索を開始します。

これをマウスの適当なボタンにバインドしておくと、それをクリックすることで、
そのときのマウスによる選択領域を検索語に検索を行なうことが出来ます。選択
領域は Emacs のバッファである必要はなく、他のアプリケーション上であって
も構いません。

これはイメージとしては、X Window System でのマウスによるコピー＆ペースト
とよく似ています。最初にコピーしたい領域をマウスで選択し、その後、コピー
先のバッファで中ボタンをクリックすることでコピーは完了します。それと同様
に、次のように設定しておくことで、Emacs のバッファにペーストする代わりに、
Lookup が検索を行なうようになります。

@lisp
(global-set-key [mouse-2] 'lookup-selection)
@end lisp

ただし、こうしてしまうと、標準のペーストの動作が使えなくなったりするので、
実際には別のクリックにバインドしておくとよいでしょう。

@item @code{lookup-secondary}
@findex lookup-secondary
マウスによる第二選択領域を検索語に検索を開始します。

Emacs の Secondary Selection の機能を用いて検索を行ないます。
@footnote{現在、XEmacs では動作しません。たぶん。}

@dfn{Secondary Selection} とは、ポイントを移動させることなくマウスで
特定領域を選択するための機能で、デフォルトでは @kbd{M-Mouse-1} に
バインドされています。@inforef{Secondary Selection, , emacs}.

これをうまく用いることで、マウスのダブルクリックやドラッグによって
文字列を選択するだけで検索が行なえるようになっています。もし標準の
バインドを置き換えてよいのであれば、次のように設定して下さい。

@lisp
(global-set-key [M-down-mouse-1] 'lookup-secondary)
(autoload 'lookup-secondary "lookup" nil t)
@end lisp

新たに定義するのであれば、例えば次のようにします。

@lisp
(global-set-key [S-mouse-1] 'mouse-start-secondary)
(global-set-key [S-drag-mouse-1] 'mouse-set-secondary)
(global-set-key [S-down-mouse-1] 'lookup-secondary)
(autoload 'lookup-secondary "lookup" nil t)
@end lisp

後者の例では、Shift キーを押しながら左のダブルクリックでカーソル位置の
単語を、同じく領域をドラッグすることで選択部を検索するようになります。
@end table

これら四つのコマンドには更に、@samp{-full-screen} と @samp{-other-frame}
を付加したバリエーションがあります。つまり、全部で以下の十五の標準検索
コマンドが用意されています。

@findex lookup-pattern-full-screen
@findex lookup-pattern-other-frame
@findex lookup-region-full-screen
@findex lookup-region-other-frame
@findex lookup-word-full-screen
@findex lookup-word-other-frame
@findex lookup-selection-full-screen
@findex lookup-selection-other-frame
@findex lookup-secondary-full-screen
@findex lookup-secondary-other-frame
@table @asis
@item @kbd{M-x lookup-pattern}
検索語を入力して検索する。
@item @kbd{M-x lookup-pattern-full-screen}
@kbd{M-x lookup-pattern} と同じ。結果を画面全体で表示する。
@item @kbd{M-x lookup-pattern-other-frame}
@kbd{M-x lookup-pattern} と同じ。結果を別のフレームで表示する。
@item @kbd{M-x lookup-region}
リージョンの文字列を検索語に検索する。
@item @kbd{M-x lookup-region-full-screen}
@kbd{M-x lookup-region} と同じ。結果を画面全体で表示する。
@item @kbd{M-x lookup-region-other-frame}
@kbd{M-x lookup-region} と同じ。結果を別のフレームで表示する。
@item @kbd{M-x lookup-word}
ポイント位置の単語を検索語に検索する。
@item @kbd{M-x lookup-word-full-screen}
@kbd{M-x lookup-word} と同じ。結果を画面全体で表示する。
@item @kbd{M-x lookup-word-other-frame}
@kbd{M-x lookup-word} と同じ。結果を別のフレームで表示する。
@item @code{lookup-selection}
マウスでの選択領域を検索語に検索する。
@item @code{lookup-selection-full-screen}
@code{lookup-selection} と同じ。結果を画面全体で表示する。
@item @code{lookup-selection-other-frame}
@code{lookup-selection} と同じ。結果を別のフレームで表示する。
@item @code{lookup-secondary}
Secondary Selection の文字列を検索語に検索する。
@item @code{lookup-secondary-full-screen}
@code{lookup-secondary} と同じ。結果を画面全体で表示する。
@item @code{lookup-secondary-other-frame}
@code{lookup-secondary} と同じ。結果を別のフレームで表示する。
@end table

@vindex lookup-frame-alist
@samp{-other-frame} となっている各コマンドを用いたときのフレームの
パラメータは、変数 @code{lookup-frame-alist} により与えられます。

@c ---------------------------------------------------------------------
@node Default Method, Search Methods, Search Commands, Search String
@subsection 標準の検索方式

@cindex 単語検索
@kbd{M-x lookup-pattern} で検索したい単語を入力したり、
@kbd{M-x lookup-region} などで検索語を指定したときの標準の検索方式を
@dfn{単語検索} と呼びます。これは実際には固有の検索方式ではなくて、
後述する各種の検索方式を間接的に呼び出すためのものです。

通常、検索語と完全にマッチしたエントリを探し出すことを「完全一致検索」と
言いますが、Lookup では多種類の辞書を扱う関係から、これをデフォルトとし
てしまうのでは少し問題があります。例えば @samp{emacs} という単語を検索す
るとき、辞書によっては見出し語として @samp{GNU Emacs} としか持たないため
に、それが見付からないということがあります。これは辞書側の問題だと言えば
そうかもしれませんが、やはりそれでは不便なので、少し工夫が必要です。

もし辞書が @samp{GNU Emacs} という見出し語しか持たなくとも、完全一致検索
ではなく「キーワード検索」でということなら、それを見付け出すことも出来る
かもしれません。そのため標準の検索方式としては、辞書によって実際の検索方
式を切り換えながら検索してくれるのが便利です。そのため単語検索は、状況に
応じて実際の振る舞いを適当に変化させるようになっています。

@vindex lookup-default-method
単語検索が実際に行なう検索方式は、変数 @code{lookup-default-method}
により設定することが出来ます。これはデフォルトでは @code{exact}、つまり
完全一致検索となっています。これを前方一致検索にしたければ @code{prefix}
とします。可能な検索方式とそれに対応したシンボル名については、
@ref{Search Methods} を参照して下さい。

いくつかの検索エージェントでは、デフォルトの検索方式を上書きして、例えば
キーワード検索を行なうように設定されています。詳しくはエージェントの各節
を参照して下さい。また、特定のエージェントや辞書での検索方式を変えるには、
辞書オプション @code{:default-method} を用いることが出来ます。

@c ---------------------------------------------------------------------
@node Search Methods,  , Default Method, Search String
@subsection 検索方式のいろいろ

@cindex パターン検索
文字列を指定する検索の中でも特に、@kbd{M-x lookup-pattern} のように特定
のパターンを入力して行なう検索のことを、Lookup では @dfn{パターン検索} 
と呼びます。パターン検索では、次のような特殊なパターンを指定することで、
様々に検索方式を切り換えることが可能です。それぞれの検索方式には固有の
シンボル名と記号が関連付けられており、いくつかの場所で利用されます。

@table @asis
@item @t{word}
@itemx 単語検索 (@code{default}, @code{~})
標準の検索方式です。これは実際には、下記のいずれかの検索方式を間接的に
呼び出すようになっています。@xref{Default Method}.

@item @t{'word'}
@itemx 完全一致検索 (@code{exact}, @code{=})
@cindex 完全一致検索
与えられた文字列と完全に一致する見出し語を持つエントリを検索します。
この例では @samp{word} や @samp{Word} などが見付かります。

@item @t{word*}
@itemx 前方一致検索 (@code{prefix}, @code{<})
@cindex 前方一致検索
与えられた文字列を見出し語の先頭に持つようなエントリを検索します。
この例では @samp{wordage} や @samp{wording} などが見付かります。

@item @t{*word}
@itemx 後方一致検索 (@code{suffix}, @code{>})
@cindex 後方一致検索
与えられた文字列を見出し語の末尾に持つようなエントリを検索します。
この例では @samp{keyword} や @samp{headword} などが見付かります。

@item @t{*word*}
@itemx 部分一致検索 (@code{substring}, @code{-})
@cindex 部分一致検索
与えられた文字列を見出し語の一部に含むようなエントリを検索します。
この例では @samp{unwordy} や @samp{swordsman} などが見付かります。

@item @t{w*o?d}
@itemx グロブパターン
上の三つを更に進めた表現として、任意のグロブパターンが指定出来ます。
つまり文字 @samp{*} が任意の文字列とマッチし、文字 @samp{?} が任意の
一文字とマッチします。この例では @samp{word} や @samp{womanhood} などが
見付かります。

この検索パターンは、実際にはパターンを正規表現に変換して検索を行ないます。
今の例では @samp{^w.*o.d$} のように変換されます。従って、これを用いるに
は辞書が次の正規表現検索に対応していなければなりません。

@item @t{/word/}
@itemx 正規表現検索 (@code{regexp}, @code{r})
@cindex 正規表現検索
与えられた正規表現とマッチする見出し語を持つエントリを検索します。
入力はそのまま検索エージェントに渡されるため、正規表現のスタイルは
利用するエージェントに依存します。

@item @t{@@word}
@itemx キーワード検索 (@code{keyword}, @code{@@})
@cindex キーワード検索
辞書が見出し語だけでなくエントリ毎のキーワードを持つ場合、このパターンに
よってそれを検索することが出来ます。何をキーワードとして持つかは利用する
検索エージェントによって異なるため、それぞれのエージェントについての説明
を参照して下さい。

@item @t{/word}
@itemx 全文検索 (@code{text}, @code{/})
@cindex 全文検索
これは他の検索方式とは少し異なります。他のものは辞書にあらかじめ用意され
ているインデックスから検索を行ないますが、これは辞書の全体から力ずくで
検索語を探し出します。そのためしばしば非常に多くの検索時間を必要とする
ため、この検索パターンを指定すると確認のためのプロンプトが表示されます。

@item リファレンス (@code{:reference}, @code{%})
@cindex リファレンス
これは検索方式ではありませんが、同じく記号が割り当てられているのでここで
説明しておきます。@dfn{リファレンス} とは、あるエントリと関連付けられて
いる別のエントリのことを言います。通常、Web ページと同様に、エントリ本文
から別のエントリへとリンクが張られています。

他の検索方式を利用したのではなく、リンクを辿ってリファレンスを表示したと
きには、そのときの検索方式として上の記号が用いられます。
@end table

以上の全ての検索方式に辞書が対応しているわけではありません。辞書が対応し
ている検索方式を知るためには、最初に @kbd{M-x lookup} としたとき出力され
る辞書一覧バッファを参照して下さい。(@pxref{Specify Dictionary})

辞書が対応していない検索法が指定された場合には、現在は単純に無視されます。
これは将来的には未対応の通知を出すように変更するかもしれません。

@c =====================================================================
@node See Result, Specify Dictionary, Search String, How To Lookup
@section 検索結果の眺め方

Lookup で検索が行なわれると、その結果は二つのウィンドウに分かれて表示さ
れます。一つは見つかったエントリの一覧を並べるためのもので、もう一つは各
エントリの本文を見るためのものです。以下、これらを見る方法について詳しく
説明します。

@menu
* See Entries::                 エントリを順に見る
* See Contents::                本文を詳しく見る
* Make Reference::              リファレンスを参照する
* Cite Contents::               本文を引用する
@end menu

@c ---------------------------------------------------------------------
@node See Entries, See Contents, See Result, See Result
@subsection エントリを順に見る

Entry バッファ (@pxref{Quick Search}) には、検索の結果、見付かったエントリ
の一覧が表示されます。@kbd{n}(ext) と @kbd{p}(revious) を押すことで、ポ
イントを前後に移動して表示するエントリを切り換えることが出来ます。マウス
の中ボタンでクリックすることで、エントリを直接選択することも可能です。

@kbd{v}(iew) により Overview モードに入ります。これは Content バッファの
ウィンドウをクローズし、エントリの一覧を一時的に見やすくします。Overview 
バッファでは、@kbd{n} と @kbd{p} が単にポイントの移動だけを行なうように
なります。もう一度 @kbd{v} とするか @key{SPC} を押すことで、Overview
モードを終了して元の動作に戻ります。

Lookup は、過去に行なわれた検索の結果を履歴として記憶しています。過去の
検索結果を参照するには @kbd{M-p} を押していって下さい。逆に、元の検索結
果に戻るには @kbd{M-n} を押して下さい。

@c ---------------------------------------------------------------------
@node See Contents, Make Reference, See Entries, See Result
@subsection 本文を詳しく見る

Content バッファ (@pxref{Quick Search}) には、選択されているエントリの本文
が表示されます。これは @key{SPC} と @key{DEL} によって、Entry バッファ内
から前後にスクロールすることが出来ます。バッファの最後 (最初) まで達すると、
次 (前) のエントリに移動します。また、@kbd{<} や @kbd{>} によって、本文の
最初と最後に移動することも出来ます。

@kbd{o}(pen) を押すと、Lookup のウィンドウを画面全体に拡げて、Content バッ
ファの内容を広く見ることが出来ます。Lookup のウィンドウを一度閉じれば、
次からまた元に戻ります。

@kbd{s}(earch) によって、Content バッファで @code{isearch-forward} を
実行します。これを抜けるには @kbd{C-g} などとして下さい。

現在参照しているエントリの情報を @kbd{i}(nfo) によって知ることが出来ます。
また、@kbd{t}(oggle) によって、本文を整形する前のオリジナルの辞書内容を
見ることが出来ます。これらの情報は本文をカスタマイズする際に利用すること
が出来ます。

@c ---------------------------------------------------------------------
@node Make Reference, Cite Contents, See Contents, See Result
@subsection リファレンスを参照する

エントリがリファレンスを持つ場合、@kbd{L}(inks) を押すことでそれを新たに 
Entry バッファに一覧します。単一のリファレンスのみ参照したい場合には、ま
ず @kbd{h} で Content バッファに移動し、@key{TAB} の連打で目的のリンクに
移動した後、@key{RET} とすればそれを辿ることが出来ます。あるいは目的のリ
ンクを直接、マウスの中ボタンでクリックしても構いません。

用いる辞書や検索エージェントによっては、リンクが見辛かったり、リンクを
辿ると一覧の見出しがおかしくなるなどの不満があるかもしれません。これは
辞書毎の差異に Lookup がデフォルトでは対応しきれないためです。リンクを
より見やすくするためには、@ref{Reference Pattern} を参照して各自で設定を
行なって下さい。

@c ---------------------------------------------------------------------
@node Cite Contents,  , Make Reference, See Result
@subsection 本文を引用する

Entry バッファで @kbd{w}(rite) を押すと、エントリの本文をキルリングに
保存します。このとき次の変数によりその振る舞いを調節出来ます。

@vtable @code
@item lookup-cite-style
エントリ本文を引用するときのスタイル。

@code{asis} にすると、Content バッファの内容がそのままコピーされる。
@code{plain} にすると、プレーンテキストとして見やすいよう変換される。
次のように alist を指定することで、更に細かく設定することも可能。

@lisp
((@var{key1} . @var{value1}) (@var{key2} . @var{value2}) ...)
@end lisp

@var{key} としては、次のものが指定可能。

@table @code
@item gaiji
外字をコピーするときのスタイル。値として次のものが可能。
@table @asis
@item @code{glyph}
Content バッファに表示される内容。(@code{asis})
@item @code{alternate}
gaiji-table で指定された代替文字。(@code{plain})
@item 任意の文字列
その文字列を利用。
@end table
@end table

@item lookup-cite-header
エントリ本文を引用するときのヘッダ。

コマンド @kbd{M-x lookup-entry-cite-content} 及び
@kbd{M-x lookup-content-cite-region} により内容を取り込むとき、
その先頭に指定した文字列が付け加えられる。
文字列が @samp{%T} を含む場合、辞書のタイトルに置き換えられる。

@item lookup-cite-prefix
エントリ本文を引用するときのプレフィクス。

コマンド @kbd{M-x lookup-entry-cite-content} 及び
@kbd{M-x lookup-content-cite-region} により内容を取り込むとき、
各行の先頭に指定した文字列が付け加えられる。
@end vtable

例えば、設定を次のようにしておくと、

@lisp
(setq lookup-cite-style '((gaiji . "□")))
(setq lookup-cite-header "「%T」より\n")
(setq lookup-cite-prefix "| ")
@end lisp

次のような内容が保存されます。

@example
「国語辞典」より
| テスト
| □ 1. 試験....
@end example

これらの変数に対応して、それぞれ辞書オプション @code{:cite-style},
@code{:cite-header}, @code{:cite-prefix} が指定することで、その設定が
優先的に利用されます。(@pxref{Dictionary Options})

また、Content バッファに移動して @kbd{w} を押すことで、そのときの
リージョンの文字列だけコピーすることも可能です。
@footnote{ただし現在、このとき cite-style の指定は無効です。手抜き・・・}

@c =====================================================================
@node Specify Dictionary,  , See Result, How To Lookup
@section 特定の辞書を利用する

Lookup の設定後、最初に @kbd{M-x lookup} とするか、あるいは検索開始後に
Entry バッファ (@pxref{Entry Mode}) で @kbd{S} とすることで、Select モード
に入ります。

このバッファには利用可能な辞書の一覧が表示されます。@samp{%} とある列に
は辞書の選択状態が示されており、@samp{*} が選択、空白 (@samp{ }) が未選択
であることを表わしています。

@samp{Identifier} とある列には辞書の ID が示されます。これは主に設定のた
めに用いられ、辞書の属する検索エージェントのクラス (@var{class}) とその所
在 (@var{location})、そして辞書名 (@var{name}) を用いて
@var{class+location:name} として表されます。

@samp{title} とある列には、辞書のタイトルが示されます。これは主に表示の
ために用いられ、辞書オプション @code{:title} によって変更可能です。
(@pxref{Dictionary Options})

@samp{Methods} とある列には、辞書が対応している検索方式が示されます。
ここに並べられる記号の列は、一文字がそれぞれ一つの検索方式を意味していま
す。その対応については、@ref{Search Methods} にある一覧を参照して下さい。

バッファで @kbd{?}と入力すると、利用可能なコ
マンドについての簡易ヘルプが表示されます。バッファを抜けるとヘルプも閉じ
られます。

コマンド @kbd{g}で現在のモジュールを初期化
し直し、バッファを更新します。ただし、これはモジュール自体を再設定するわ
けではないので、設定ファイルでモジュールの設定を変えた場合には、
@kbd{R}により Lookup を再起動する必要があります。

@kbd{q}でバッファを抜けます。
@kbd{Q}で Lookup を終了します。

@kbd{n}と @kbd{p}によって、ポイントを上下に
移動します。

@kbd{m}によりその行の辞書を選択し、
@kbd{u}により非選択にします。また、
@kbd{M-x lookup-select-toggle-selected}により選択状態をトグルすることも
可能です。

@findex lookup-select-do-select-all
@findex lookup-select-do-select-only
@kbd{a}により、全ての辞書を選択状態
にします。@key{RET}により、その行の
辞書だけを選択状態にすることも出来ます。

@kbd{d}を押すと、辞書に無効化のマーク
が付けられます。これは @kbd{x}を押すこ
とで実際に無効化されます。こうして無効化された辞書でも、Lookup を再起動
するか、@kbd{g} とすると元に戻ります。辞書を恒久的に無効化するためには、
オプションにより設定して下さい。(@pxref{Setup Restriction})

@kbd{f}によって、選択状態にある辞書
から検索を行ないます。これは実際には、普通に @kbd{M-x lookup-pattern} を
行なうのと同じです。

@kbd{M}により、辞書専用のメニューに移ることが
出来ます。これは実際にはただの Entry バッファで、リファレンスを辿ってい
くことにより辞書を「読む」ことが出来ます。

@kbd{C}により、辞書のコピーライトが表示されます。

@kbd{/}とすると、ポイント行の辞書から
全文検索を行ないます。ただしもちろん、辞書が全文検索に対応している必要が
あります。全文検索は完了までに非常に時間が掛かる場合があるので注意して下
さい。(@pxref{Search Methods})

@c *********************************************************************
@node Customization, Dictionary Types, How To Lookup, Top
@chapter 自分好みに調節する

この章では、Lookup を個人の好みに応じて調節するための方法について説明し
ます。また、辞書毎の一般的なカスタマズをまとめて設定ファイル集として配布
する方法についても説明します。

[ この章はまだ整備途中です ]

@menu
* Customize General::           一般的なカスタマイズ
* Customize Option::            辞書とエージェントのカスタマイズ
* Customize Contents::          エントリ本文のカスタマイズ
* Supplement Package::          補助パッケージを作る
* Customize Example::           詳細な設定例
@end menu

@c =====================================================================
@node Customize General, Customize Option, Customization, Customization
@section 一般的なカスタマイズ

Lookup の全般に関わるカスタマイズ変数の多くは、Custom パッケージを利用す
ることで変更可能です。Lookup を起動後 @kbd{M-x customize-group @key{RET}
lookup @key{RET}} とすれば、設定出来る変数の一覧を見ることが出来ます。

@menu
* Customize Variables::         主なカスタマイズ変数
* Customize Face::              文字装飾のカスタマイズ
@end menu

@c ---------------------------------------------------------------------
@node Customize Variables, Customize Face, Customize General, Customize General
@subsection 主なカスタマイズ変数

@table @code
@item lookup-default-method
デフォルトの検索方式を指定する。

@item lookup-frame-alist
フレームのパラメータのリスト。

@item lookup-fill-column
@vindex lookup-fill-column
エントリ内容を fill するときの桁数。

@item lookup-window-height
@vindex lookup-window-height
Entry バッファ等のウィンドウの高さ。

@item lookup-save-configuration
@vindex lookup-save-configuration
non-nil を指定すると、Lookup を抜けたときに画面の状態が
検索開始時のものに戻される。

@item lookup-use-bitmap
non-nil に指定すると、bitmap-mule を利用した外字表示を行なうようになりま
す。bitmap-mule が既にロードされていれば自動的に @code{t} になります。
@ref{Setup Gaiji} を参照して下さい。

@item lookup-use-kakasi
non-nil に指定すると、KAKASI を用いて日本語の検索語の切り出しを行なうよ
うになります。@ref{Search Commands} を参照して下さい。

@item lookup-enable-gaiji
nil に指定すると、外字の表示を行なわなくなります。@ref{Setup Gaiji} を参
照して下さい。

@item lookup-max-hits
@item lookup-max-text
@vindex lookup-max-hits
@vindex lookup-max-text
表示するエントリの上限数、及びエントリ本文の上限サイズを定めます。
これらは現在 ndeb でのみ有効です。

@item lookup-cite-style
@itemx lookup-cite-header
@itemx lookup-cite-header
エントリ本文を引用するときのスタイル、ヘッダ、プレフィクスを設定する。
@ref{Cite Contents} を参照。

@item lookup-inline-image
@vindex lookup-inline-image
nil に指定すると画像のインライン表示を行いません。
@end table

@c ---------------------------------------------------------------------
@node Customize Face,  , Customize Variables, Customize General
@subsection 文字装飾のカスタマイズ

Lookup ではフェイス (文字装飾) の設定に Custom パッケージの @code{defface} 
を用いています。これをカスタマイズするには、@kbd{M-x customize-group
@key{RET} lookup-faces @key{RET}} などとして設定を行なって下さい。

Mule を利用しているなど、Custom がインストールされてない場合には、Lookup
の初期化ファイル (@file{~/.lookup}) で設定を行なう必要があります。これは
次のようにして行ないます。

@lisp
;; lookup-heading-1-face の設定
(set-face-bold-p 'lookup-heading-1-face t)
(set-face-foreground 'lookup-heading-1-face "SlateBlue")
@end lisp

設定出来るフェイスは次の通りです。

@vtable @code
@item lookup-heading-1-face
本文の最初の見出し (通常、一行目) に付けられるフェイス。
@item lookup-heading-2-face
本文が構造を持つ場合、二番目の見出しに付けられるフェイス。
@item lookup-heading-3-face
本文が構造を持つ場合、三番目の見出しに付けられるフェイス。
@item lookup-heading-4-face
本文が構造を持つ場合、四番目の見出しに付けられるフェイス。
@item lookup-heading-5-face
本文が構造を持つ場合、五番目の見出しに付けられるフェイス。
@item lookup-heading-low-face
本文が構造を持つ場合、あまり重要でない部分に付けられるフェイス。
@item lookup-reference-face
本文のリンク部分に用いられるフェイス。
@item lookup-refered-face
本文の参照済みリンクに用いられるフェイス。
@end vtable

設定には次のような関数が利用出来ます。

@table @code
@item set-face-foreground
フェイスの文字色を指定する。
@item set-face-background
フェイスの背景色を指定する。
@item set-face-bold-p
フェイスを太字にする。
@item set-face-italic-p
フェイスを斜体にする。
@item set-face-underline-p
フェイスを下線付きにする。
@end table

@c =====================================================================
@node Customize Option, Customize Contents, Customize General, Customization
@section 辞書とエージェントのカスタマイズ

@menu
* Agent Options::               エージェント・オプション一覧
* Dictionary Options::          辞書オプション一覧
@end menu

@c ---------------------------------------------------------------------
@node Agent Options, Dictionary Options, Customize Option, Customize Option
@subsection エージェント・オプション一覧

検索エージェントにオプションを設定することで、その振舞いのカスタマイズが
可能です。(@pxref{Setup Option})

オプションには全てのエージェントで共通に利用出来るものと、エージェント毎
に異なるものとがあります。検索エージェント別のオプションは、それぞれのエー
ジェントについての説明を参照して下さい。共通オプションとしては、次のもの
が利用出来ます。

@table @code
@item :alias
エージェントに別名を与える。エージェント ID は普通
@samp{@var{class+location}} として与えられるが (@pxref{Quick Startup})、
このオプションにより @var{location} の部分を置き換えられる。当然ながら、
これは @code{lookup-search-agents} で設定しなければならない。次のように
用いられる。

@lisp
(setq lookup-search-agents
      '((ndic "/usr/lib/dict" :alias "dict")))
(lookup-use-package "ndic+dict" "dict-package")
@end lisp
@item :title
検索エージェントにタイトルを設定する。これは現在、用いられていない。
@item :enable
有効とする辞書名のリスト。(@pxref{Setup Restriction})
@item :disable
無効とする辞書名のリスト。(@pxref{Setup Restriction})
@item :select
選択する辞書名のリスト。(@pxref{Setup Restriction})
@item :unselect
未選択にする辞書名のリスト。(@pxref{Setup Restriction})
@end table

@c ---------------------------------------------------------------------
@node Dictionary Options,  , Agent Options, Customize Option
@subsection 辞書オプション一覧

辞書は、オプションを設定することによりカスタマイズが可能です。
(@pxref{Setup Option})

次のオプションが利用出来ます。

@table @code
@item :title
辞書のタイトルを指定する。
@item :stemmer
stemming 関数を指定する。これは複数形など単語の語尾を取り除いて元の単語
を推測するための関数で、文字列を受け取り候補となる文字列のリストを返さね
ばならない。次のように設定する。

@lisp
(lookup-set-dictionary-option "agent:DICT" ':stemmer 'stem-english)
@end lisp
@item :hiragana
漢字ひらがな拡張検索を行うように指定する。:expander オプション及び
:expand-filter オプションを上書きする。@xref{Kanji-Kana Expansion}.
@item :expander
expander 関数を指定する。これは検索語を適当な他の検索語に置き換えるための
関数で、文字列を受取り、文字列のリストを返さなければらならない。次のよう
に設定する。

@lisp
(lookup-set-dictionary-option "agent:DICT" ':expander 'lookup-kanji-get-readings)
@end lisp

:hiragana オプションと同時に指定することはできない。@xref{Universal Query Expansion}.
@item :expand-filter
expand-filter 関数を指定する。expander 関数によって検索語が拡張されると、
検索結果に多くの無駄なエントリが含まれるようになる。この関数は、そのよう
なエントリを元々の検索語を用いてフィルタリングするための関数である。次の
ように設定する。

@lisp
(lookup-set-dictionary-option "agent:DICT" ':expand-filter 'lookup-kanji-filter)
@end lisp

:hiragana オプションと同時に指定することはできない。@xref{Universal Query Expansion}.
@item :arranges
arrange 関数のリスト。(@pxref{Format Contents})
@item :adjusts
adjust 関数のリスト。(@pxref{Format Contents})
@item :gaiji-table
外字の置き換えテーブル。(@pxref{Gaiji Table})
@item :cite-style
@itemx :cite-header
@itemx :cite-prefix
それぞれ、@code{lookup-cite-style}, @code{lookup-cite-header},
@code{lookup-cite-prefix} の代わりに優先して用いられる。
(@pxref{Cite Contents})
@end table

この内、@code{:title} と @code{:gaiji-table} を除く全てのオプションは、
エージェント・オプションとして設定することも可能です。

エージェントによっては、これ以外にも特別な辞書オプションが利用出来る場合
があります。それぞれのエージェントの説明を参照して下さい。

@c =====================================================================
@node Customize Contents, Supplement Package, Customize Option, Customization
@section エントリ本文のカスタマイズ

@menu
* Reference Pattern::           リファレンスの設定
* Gaiji Table::                 外字置き換えの設定
* Format Contents::             テキストの整形
@end menu

@c ---------------------------------------------------------------------
@node Reference Pattern, Gaiji Table, Customize Contents, Customize Contents
@subsection リファレンスの設定

リファレンスの書式はしばしば辞書によって異なるので、Lookup のデフォルト
の設定だけではどうしても対応し切れません。Entry バッファで @kbd{t} を
押すと、本文整形前のオリジナルの内容を見ることが出来るので、その内容を
確認してみて下さい。

もしデフォルトで生成されるリンクに不満がある場合、辞書オプション
@code{:reference-pattern} によりカスタマイズすることが可能です。
設定すべき値は次の通りです。

@lisp
(@var{regexp} @var{link} @var{heading} @var{code})
@end lisp

@var{regexp} には、本文のリファレンス部分にマッチする正規表現を指定しま
す。例えば、リファレンスが次のようなパターンをしているとわかっている場合、

@example
@samp{<gaiji:za123>heading<a456:789>}
@end example
@noindent
@var{regexp} は次のように出来るでしょう。
@footnote{XEmacs でならもっと単純に
@code{"<gaiji:za123>.+?<[0-9a-f:]+>"} とすることが出来ます。}

@lisp
"<gaiji:za123>[^<\n]+<[0-9a-f:]+>"
@end lisp

@var{link}, @var{heading}, @var{code} にはそれぞれ、リンクとなる文字列、
リファレンスの見出し語、及びそのコード番号を指定します。今の場合、
リンクは @samp{<gaiji:za123>heading}、見出し語は @samp{heading}、
コード番号は @samp{a456:789} とすればよいでしょう。これには @var{regexp}
のマッチ内容を利用して、次のように設定することが出来ます。

@lisp
("\\(<gaiji:za123>\\([^<\n]+\\)\\)<\\([0-9a-f:]+\\)>"
 (match-string 1) (match-string 2) (match-string 3))
@end lisp

このように @code{link}, @var{heading}, @var{code} には文字列を返す任意の
式を用いることが可能ですが、上のように @code{match-string} でマッチ内容
を単純に取り出すだけの場合、特別に省略して番号を指定するだけでよいように
なっています。

@lisp
("\\(<gaiji:za123>\\([^<\n]+\\)\\)<\\([0-9a-f:]+\\)>" 1 2 3)
@end lisp

また、外字置き換えは別のステップで行なわれるため、この時点ではどうこう
する必要はありません。見出し語に外字が含まれる場合にも、それをそのまま
返すように設定して下さい。典型的には次のようなパターンをよく見ます。
@footnote{XEmacs でならやはり単純に
@code{("\\(→\\(.+?\\)\\)<\\([0-9a-f:]+\\)>" 1 2 3)} で OK です。}

@lisp
("\\(→\\(\\([^<\n]\\|<gaiji:[^>]>\\) +\\)\\)<\\([0-9a-f:]+\\)>" 1 2 4)
@end lisp

自分の辞書に合わせた適切なパターンを作られた方は、メーリングリストにでも
情報を頂けますと幸いです。

@c ---------------------------------------------------------------------
@node Gaiji Table, Format Contents, Reference Pattern, Customize Contents
@subsection 外字置き換えの設定

辞書オプション @code{:gaiji-table} により、辞書の外字の置き換えテーブルを
設定することが出来ます。

@cindex 外字テーブル
@findex lookup-new-gaiji-table
外字置き換えとは、外字表示の際に辞書に用意されている外字を用いることをせ
ずに、あらかじめ定義しておいた設定に従ってそれの置換文字列を利用すること
を言います。このための変換表を @dfn{外字テーブル} と呼び、関数
@code{lookup-new-gaiji-table} により生成します。

これは次のような書式を取ります。

@lisp
(lookup-new-gaiji-table
 '((@var{code1} @var{glyph1} [@var{alternate1}])
   (@var{code2} @var{glyph2} [@var{alternate2}])
    ...))
@end lisp

@var{code} は辞書における外字コードで、これはエントリ本文の整形処理を 
OFF にすることで確認出来ます。@var{glyph} には文字列、または評価可能な式
を指定し、その値が外字の置換文字列として利用されます。@var{alternate} は
省略可能で、外字の代替文字列を指定します。これは@var{glyph} と違って、
一般的に利用される文字セットでなければなりません。

@var{glyph} と @var{alternate} との違いは、それが見た目を重視するか利便
性を重視するかにあります。@var{glyph} にはアクセント文字などを含む文字列
を指定することで見た目を良くすることが出来ますが、その場合、検索やコピー
のための利便性が犠牲になります。そのため、表示のためには@var{glyph} を用
い、利便性を重視する状況では @var{alternate} を用いるという使い分けが行
なわれます。

@c ---------------------------------------------------------------------
@node Format Contents,  , Gaiji Table, Customize Contents
@subsection テキストの整形

@cindex arrange
@cindex adjust
エントリ内容の整形処理は、二つのステップで行なわれます。一つは
@dfn{arrange} と呼び、主に辞書から得られた内容に手を加えます。もう一つは
@dfn{adjust} と呼び、こちらは見た目の調節を主とします。二つの本質的な違
いは、その結果がキャッシュされるかどうかにあります。

内容が arrange された結果はキャッシュに残り、次回の表示からはそれに手を
加えられません。対して adjust は表示を行なう度に毎回実行されます。そのた
め fill-lines のような大掛かりな一度きりの修正は arrange で行ない、リファ
レンスの色を変えるような毎回チェックの必要なものは adjust で行なうのが向
いています。

辞書の arrange 関数と adjust 関数は、どちらもデフォルトの処理がエージェ
ントで定義されています。しかしそれらは不十分なことが多いため、辞書毎に
オプションによってこれらを変更することが出来ます。

arrange 関数を設定するための辞書オプションは @code{:arranges}、adjust 関数
は @code{:adjusts} です。これらにはそれぞれ関数のリストを設定します。

arrange 関数も adjust 関数も、呼び出されるタイミングが違うだけで、内部的
には同じものです。どちらも一つの引数を受け取り、その値は無視されます。引
数は entry データタイプのオブジェクトで、呼び出されたときの
current-buffer はエントリ内容の挿入された Content バッファ、そのポイント
はバッファの先頭になっています。

関数内では current-buffer を変更してはなりませんが、ポイントと
restriction は自由に変えても構いません。それらは次の関数呼び出しでまた元
に戻ります。ただし、最後の adjust 関数が実行するポイント移動には意味があ
ります。Content バッファは、最後のポイントが見えるように表示されます。従っ
て adjust 関数の最後には、バッファの先頭への移動だけを行なう関数を設けて
おくのが普通です。

これらの関数を書くには、ある程度 Lookup の内部構造についての知識が必要に
なるかもしれません。Lookup が用いるデータタイプについては、ファイル
@file{lookup-types.el} を参照して下さい。標準の arrange 関数、adjust 関
数については、ファイル @file{lookup-vse.el} を参照して下さい。

@c =====================================================================
@node Supplement Package, Customize Example, Customize Contents, Customization
@section 補助パッケージを作る
@cindex 補助パッケージ

前述の arrange 関数や外字置き換えテーブルなどは、個人の好みを越えて他人
のためにも有用な場合が多いので、それらの設定をまとめて補助パッケージを作
ることが出来ます。(@pxref{Setup Package})

補助パッケージとは実際には、前述したエージェント・オプションや辞書オプショ
ンを設定しているだけのものですが、その設定には専用のやり方が用意されてい
ます。パッケージの書き方については、ファイル @file{lookup-package.el} の
先頭に記述があるので、そちらを参照して下さい。

パッケージをある程度自動的・対話的に生成するツールも以前はありましたが、
今では動いていません。書き直すことに興味のある方いらしましたら、メーリン
グリストの方まで連絡下さい。(@pxref{How To Get})

もし市販の辞書用の補助パッケージを作られましたら、メーリングリストに連絡
下さい。Lookup のホームページに登録させて頂きます。

@c =====================================================================
@node Customize Example,  , Supplement Package, Customization
@section 詳細な設定例

[ この節はまだ整備途中です ]

@c *********************************************************************
@node Dictionary Types, Search Agents, Customization, Top
@chapter 辞書フォーマット一覧

@menu
* Setup SDIC::                  SDIC フォーマット
* Setup dictd::                 dictd フォーマット
* Setup cookie::                cookie ファイル
* Setup CD-ROM::                各種 CD-ROM 辞書
* Setup NDTP::                  NDTP 辞書サーバ
* Setup DICT::                  DICT 辞書サーバ
@end menu

@c ---------------------------------------------------------------------
@node Setup SDIC, Setup dictd, Dictionary Types, Dictionary Types
@section SDIC フォーマット

@cindex SDIC フォーマット
@dfn{SDIC フォーマット} とは、Emacs で使える簡易検索ソフト SDIC
@footnote{@url{http://pine.kuee.kyoto-u.ac.jp/member/tsuchiya/sdic/}}
で採用されている行指向の辞書形式です。Lookup では ndic エージェントに
より検索が行なえます。(@pxref{ndic})

@subheading SDIC フォーマットの特徴

@itemize @bullet
@item
単一ファイル、一行一エントリの簡潔な構成。
@item
grep 一つで高速な検索が可能。
@item
いくつかのフリー辞書が入手可能。
@end itemize

@subheading SDIC フォーマットの概要

SDIC 辞書は @file{.sdic} を拡張子とする単一のファイルからなり、
次のような内容になっています。

@example
@cartouche
<H>Foo</H><K>foo</K>This is first entry.
<H>Bar Baz</H><K>bar</K><K>baz</K>This is second entry.
...
@end cartouche
@end example

@code{<H>} @dots{} @code{</H>} となっている部分がエントリの見出し、
@code{<K>} @dots{} @code{</K>} となっている部分が検索に用いられる
キーワード、最後の部分が説明内容です。検索は次のようにして行なわれます。

@table @code
@item grep <K>word</K> dict.sdic
完全一致検索
@item grep <K>word dict.sdic
前方一致検索
@item grep word</K> dict.sdic
後方一致検索
@item grep word dict.sdic
全文検索
@end table

より詳細な説明は、SDIC に附属の仕様書を参照して下さい。

@subheading SDIC 辞書の利用

辞書ファイルを適当なディレクトリに用意し、ndic エージェントを設定して下
さい。

@c ---------------------------------------------------------------------
@node Setup dictd, Setup cookie, Setup SDIC, Dictionary Types
@section dictd フォーマット

@cindex dictd フォーマット
@dfn{dictd フォーマット} とは、DICT プロジェクト
@footnote{@url{http://www.dict.org/}} で配布されている辞書サーバ 
@code{dictd} で用いられている比較的単純な辞書形式です。
Lookup では ndic 及び ndict エージェントにより検索が行なえます。
(@pxref{ndic}, @pxref{ndict})

@subheading dictd フォーマットの特徴

@itemize @bullet
@item
インデックスファイルと本文ファイルが分離。
@item
プレーンテキストによる辞書内容の記述。
@item
いくつかのフリー辞書が入手可能。
@end itemize

@subheading dictd フォーマットの概要

dictd 辞書は @file{.index} を拡張子とするインデックスファイルと、
@file{.dict} を拡張子とする本文ファイルからなり、それぞれ次のような
内容になっています。

@example
@file{file.index}
@cartouche
foo     A2      w
bar     Bc      Ab
...
@end cartouche
@end example

@example
@file{file.dict}
@cartouche
foo

  Here is explanation of foo.

bar

  Here is explanation of bar.

...
@end cartouche
@end example

本文ファイルはこのように単なるプレーンテキストであり、インデックスファイ
ルの各行にそれぞれのエントリの情報が並べられます。順に、最初のコラムが見
出し語、二番目が本文の開始位置、三番目が本文の長さを表わします。各コラム
はタブで区切られ、二番目、三番目の値は base64 でエンコードされています。

検索時はまずインデックスファイルから目的の見出し語が見付け出され、そうし
て得られた情報から効率的に本文が取り出されます。

より詳細な説明は、@code{dictd} のマニュアルページを参照して下さい。

@subheading dictd 辞書の利用

dictd 辞書は、ndic 及び ndict エージェントから検索することが可能です。
ndict エージェントを用いる方がより高速な検索が可能ですが、サーバの設定が
必要なぶんいくらか手間が掛かります。dictd の設定については、
@ref{Setup DICT} を参照して下さい。

ndic エージェントであれば設定は最小限で済みますが、ndic は最初にインデッ
クスを全て読み込むため、比較的多くのメモリを必要とすることに注意して下さ
い。少なくとも利用するインデックスファイルよりも十分大きなメモリの余裕の
あることが必要です。

ndic エージェントを用いる場合、インデックスファイルと本文ファイルの両方
をそろえて、適当なディレクトリに置いて下さい。本文ファイルは 
@code{dictd} 配布物に含まれる @code{dictzip} コマンドで圧縮しておいても
構いません。これは次のように実行します。

@example
% dictzip file.dict
@end example

@c ---------------------------------------------------------------------
@node Setup cookie, Setup CD-ROM, Setup dictd, Dictionary Types
@section cookie ファイル

@cindex cookie ファイル
@dfn{cookie ファイル} とは、@code{fortune} プログラムなどで用いられる
fortune cookie @footnote{短かいジョークや格言などを集めたもので、UNIX
では伝統的にログイン時にこれをランダムで表示するようになっている。}
を集めたファイルです。Lookup では ndcookie エージェントにより利用する
ことが出来ます。(@pxref{ndcookie})

@subheading cookie ファイルの特徴

@itemize @bullet
@item
@code{fortune} プログラムなどで利用されている。
@item
検索には向いていない。いずれかの文をランダムに取り出すのが普通。
@end itemize

@subheading cookie ファイルの概要

cookie ファイルは @file{.lines} を拡張子とする単一のファイルからなり、
次のような内容になっています。

@example
@cartouche
Cookie file example
^@@
This is first sentence.^@@
This is second sentence.^@@
@end cartouche
@end example

ここで @samp{^@@} とあるのは ASCII コード 0 の文字です。ファイルの先頭か
ら最初の @samp{^@@} までがコメントとなり、続く行から次の @samp{^@@} まで
が一つの cookie となっています。

@subheading cookie ファイルの利用

ファイルを適当なディレクトリに用意し、ndcookie の設定を行なって下さい。

@c ---------------------------------------------------------------------
@node Setup CD-ROM, Setup NDTP, Setup cookie, Dictionary Types
@section 各種 CD-ROM 辞書

@cindex 電子ブック
@cindex EPWING 規約
日本で市販されている

電子ブック・EPWING 規約

[ この章はまだ整備途中です ]

@ignore
@cindex dictd フォーマット
@dfn{dictd フォーマット} とは、DICT プロジェクト
@footnote{@url{http://www.dict.org/}} で配布されている辞書サーバ 
@code{dictd} で用いられている比較的単純な辞書形式です。
Lookup では ndic 及び ndict エージェントにより検索が行なえます。
(@pxref{ndic}, @pxref{ndict})

@subheading dictd フォーマットの特徴

@itemize @bullet
@item
インデックスファイルと本文ファイルが分離。
@item
プレーンテキストによる辞書内容の記述。
@item
いくつかのフリー辞書が入手可能。
@end itemize

@subheading dictd フォーマットの概要

dictd 辞書は @file{.index} を拡張子とするインデックスファイルと、
@file{.dict} を拡張子とする本文ファイルからなり、それぞれ次のような
内容になっています。

本文ファイルはこのように単なるプレーンテキストであり、インデックスファイ
ルの各行にそれぞれのエントリの情報が並べられます。順に、最初のコラムが見
出し語、二番目が本文の開始位置、三番目が本文の長さを表わします。各コラム
はタブで区切られ、二番目、三番目の値は base64 でエンコードされています。

検索時はまずインデックスファイルから目的の見出し語が見付け出され、そうし
て得られた情報から効率的に本文が取り出されます。

より詳細な説明は、@code{dictd} のマニュアルページを参照して下さい。

@subheading dictd 辞書の準備

インデックスファイルと本文ファイルをそろえて、適当なディレクトリに置いて
おくだけです。本文ファイルは、@code{dictd} の配布物に含まれる 
@code{dictzip} コマンドにより圧縮することも可能です。これは次のように
実行するだけです。

@example
% dictzip file.dict
@end example

@subheading dictd 辞書の利用

dictd 辞書は、ndic 及び ndict エージェントから検索することが可能です。
ndict エージェントを用いる方がより高速な検索が可能ですが、サーバの設定が
必要なためにいくらか手間が掛かります。逆に ndic エージェントは、最初にイ
ンデックスファイルを全て読み込むために比較的多くのメモリを必要とします。
より自分に都合のよい方を選択して下さい。


honmon ではなく catalogs

    辞書を小さくすることが目的であれば、まず epwutil というものを利用す
    ることで、画像などの大きなデータを削除して、辞書をスリムにすることが
    出来ます。辞書にもよりますが、これで 25〜100% 程度の大きさになります。
    次のところで手に入ります。

      http://openlab.ring.gr.jp/edict/

    次に、辞書検索のために eblook あるいは NDTPD を用いるならば、EB ライ
    ブラリに附属の ebzip コマンドを用いることで辞書を圧縮することが可能
    です。これで更に 50〜30% 程度の大きさになります。

    この両方を組み合わせることで、辞書によっては元の 1/10 程度の大きさに
    まで削減出来ます。
@end ignore

@c ---------------------------------------------------------------------
@node Setup NDTP, Setup DICT, Setup CD-ROM, Dictionary Types
@section NDTP 辞書サーバ

@cindex NDTP
@dfn{NDTP} とは、ネットワークで CD-ROM 辞書を共有するために作られた検索
用プロトコルです。Lookup では ndtp エージェントにより NDTP サーバとやり
とりすることが出来ます。(@pxref{ndtp})

@subheading NDTP の特徴

@itemize @bullet
@item
日本の市販 CD-ROM 辞書に根差した内容。
@item
良くも悪くも、いいかげんな設計。
@item
何度か拡張され、今では外字情報も扱えるようになっている。
@end itemize

@subheading NDTP の概要

@sc{ndtp} (Network Dictionary Transport Protocol) は dserver
@footnote{ftp://ftp.pu-toyama.ac.jp/pub/misc/} という検索ソフトウェアの
中で独自に定義されたもので、簡潔なコマンド体系を持つテキストベースの
プロトコルです。次のような応答になります。

@example
@cartouche
   % @b{telnet localhost ndtp}
   Trying 127.0.0.1...
   Connected to localhost.
   Escape character is '^]'.
C> @b{Akei}
S> $A
C> @b{t}
S> 1       国語辞典        KOKUGO  0       0       900
S> 2       英和辞典        EIWA    0       0       900
S> 3       和英辞典        WAEI    0       0       900
S> $*
C> @b{L1}
S> $*
C> @b{Patest}
S> $0
S> テスト
S> 668c:73e
S> $$
C> @b{S668c:73e}
S> $1
S> テスト
S> [名] 1. 試験....
S> $$
C> @b{Q}
   Connection closed by foreign host.
   % 
@end cartouche
@end example

@subheading NDTP サーバの設定

[ この節はまだ整備途中です ]

@c ---------------------------------------------------------------------
@node Setup DICT,  , Setup NDTP, Dictionary Types
@section DICT 辞書サーバ

@cindex DICT プロトコル
@dfn{DICT} とは、@sc{rfc 2229} として定義されている辞書検索用プロトコル
です。Lookup では ndict エージェントにより DICT サーバとやりとりすること
が出来ます。(@pxref{ndict})

@subheading DICT の特徴

@itemize @bullet
@item
@sc{rfc} として明確に定義。
@item
文字コードは @sc{utf-8}(Unicode)。
@end itemize

@subheading DICT の概要

@example
@cartouche
   % @b{telnet localhost dict}
   Trying 127.0.0.1...
   Connected to localhost.
   Escape character is '^]'.
S> 220 localhost dictd 1.4.8/rf <auth.mime> <27831.860032493@@localhost>
C> @b{CLIENT ndict}
S> 250 ok
C> @b{SHOW DB}
S> 110 3 databases present
S> jargon "Jargon File (4.0.0/24 July 1996)"
S> foldoc "The Free On-line Dictionary of Computing (15Feb98)"
S> vera "Virtual Entity of Relevant Acronyms (1.4a)"
S> .
S> 250 ok
C> @b{MATCH * exact "test"}
S> 152 1 matches found
S> jargon "test"
S> .
S> 250 ok [d/m/c = 0/1/27; 0.000r 0.000u 0.000s]
C> @b{DEFINE jargon "test"}
S> 150 1 definitions retrieved
S> 151 "test" jargon "Jargon File (4.0.0/24 July 1996)"
S> test /n./  1. Real users bashing on a prototype long enough to
S>    get thoroughly acquainted with it, with careful monitoring and
S>    followup of the results.  2. Some bored random user trying a couple
S>    of the simpler features with a developer looking over his or her
S>    shoulder, ready to pounce on mistakes.  Judging by the quality of
S>    most software, the second definition is far more prevalent.  See
S>    also @{demo@}.
S>
S>
S> .
S> 250 ok [d/m/c = 1/0/11; 0.033r 0.000u 0.009s]
C> @b{QUIT}
S> 221 bye [d/m/c = 0/0/0; 179.328r 0.000u 0.011s]
   Connection closed by foreign host.
   % 
@end cartouche
@end example

@subheading DICT サーバの設定

[ この節はまだ整備途中です ]

@c *********************************************************************
@node Search Agents, Mode Details, Dictionary Types, Top
@chapter 検索エージェント一覧

この章では、Lookup で利用できる検索エージェントについて、それを利用する
ために行なわなければならない準備や設定項目について詳細に説明します。

@menu
* ndic::                        フリー辞書から検索する
* ndeb::                        CD-ROM 辞書から検索する
* ndtp::                        NDTP サーバから検索する
* ndict::                       DICT サーバから検索する
* ndsrd::                       ランダムハウス英語辞典 Windows 版を検索する
* ndkks::                       日本語の読みを調べる
* ndspell::                     スペルチェックとスペル検索
* ndcookie::                    cookie ファイルから検索する
@end menu

@c =====================================================================
@node ndic, ndeb, Search Agents, Search Agents
@section ndic

`ndic' は、主にフリーに配布されている辞書から、手軽に検索を行なうことを
目的とした検索エージェントです。辞書以外に他に用意すべきものもないので、
とりあえず Lookup を試してみるにはちょうどいいでしょう。

dictd 辞書は ndict エージェントでも利用可能です。性能を重視する場合には、
そちらを参照してみて下さい。(@pxref{ndict})


@menu
* ndic prepare::                ndic の準備
* ndic setup::                  ndic の設定
* ndic dictionary::             ndic の辞書
* ndic customize::              ndic のカスタマイズ
@end menu

@c ---------------------------------------------------------------------
@node ndic prepare, ndic setup, ndic, ndic
@subsection ndic の準備

ndic では現在、dictd-1.4.x 用に用意された辞書 と SDIC 辞書から検索を
行なうことが可能となっています。いくつかのフリーな辞書が、Lookup のホーム
ページから入手出来ます。

@table @asis
@item Lookup dictionary collection
@url{http://openlab.ring.gr.jp/lookup/dicts/}
@end table

dictd 辞書 (@file{*.index} と @file{*.dict}) や SDIC 辞書 (@file{*.sdic})
は適当なディレクトリにインストールして下さい。dictd 辞書は 圧縮 (dictzip) しておいても
構いません。必要な準備はこれだけです。

@c ---------------------------------------------------------------------
@node ndic setup, ndic dictionary, ndic prepare, ndic
@subsection ndic の設定

ndic は次のように設定します。

@lisp
(ndic @var{directory})
@end lisp

@var{directory} には辞書のあるディレクトリを指定します。オプションその他
の特別な設定はありません。

例えば次のようになります。

@lisp
(setq lookup-search-agents
      '((ndic "/usr/lib/dict")))
@end lisp

@c ---------------------------------------------------------------------
@node ndic dictionary, ndic customize, ndic setup, ndic
@subsection ndic の辞書

指定したディレクトリに含まれる、dictd 辞書のインデックスファイル (@file{*.index})
や SDIC 辞書 (@file{*.sdic}) が辞書として認識されます。
その拡張子を取り除いたファイル名が辞書名となります。辞書のタイトルは自動的に認識されます。

全文検索を除く、全ての検索方式が有効です。(@pxref{Search Methods})

@c ---------------------------------------------------------------------
@node ndic customize,  , ndic dictionary, ndic
@subsection ndic のカスタマイズ

@vindex ndic-dictzip-program
辞書が dictzip コマンドにより圧縮してある場合、その展開に dictzip を呼び
出します。変数 @code{ndic-dictzip-program} により、そのプログラム名を指
定します。デフォルトでは "dictzip" になっています。

@c =====================================================================
@node ndeb, ndtp, ndic, Search Agents
@section ndeb

`ndeb' は、電子ブックや EPWING 規約に準拠した CD-ROM 書籍の個人利用に向
いた検索エージェントです。eblook という外部コマンドを用いることで、特別
な設定の必要なしに手元の CD-ROM 辞書が利用出来ます。

@menu
* ndeb prepare::                ndeb の準備
* ndeb setup::                  ndeb の設定
* ndeb dictionary::             ndeb の辞書
* ndeb customize::              ndeb のカスタマイズ
@end menu

@c ---------------------------------------------------------------------
@node ndeb prepare, ndeb setup, ndeb, ndeb
@subsection ndeb の準備

ndeb は外部コマンドとして eblook を使用します。eblook とは、電子ブックや
EPWING 規約に従った CD-ROM 辞書をアクセスするための簡易検索コマンドです。


ndeb は外部コマンドとして eblook を利用しています。eblook は、電子ブック
や EPWING といった規約に従った CD-ROM 書籍をアクセスするためのツールです。

@subsubheading CD-ROM の準備

利用出来る CD-ROM は、一般の書店で購入することが出来ます。大体、数千円か
ら数万円程度で売っています。これから購入する場合には、それが EPWING とい
う規格に従っていることを確認して下さい。パッケージの裏に EPWING というマー
クが付いているはずです。

CD-ROM は適当なディレクトリにマウントしておいて下さい。ディスクに余裕が
ある場合には、ハードディスクにコピーしておいても構いません。ただし、コピー
が許されるかどうかは著作者に権利があるので、辞書の説明書を注意して読んで
下さい。

辞書は eb Library (eblook のビルドや動作に必要) に附属の圧縮コマンドで圧
縮しておくことも可能です。大体、1/2 〜 1/3 のサイズにまで縮小されます。

@subsubheading eblook

eblook は次のところから入手可能です。UNIX 版と、MS Windows で利用出来る
ようにしたバイナリの情報が得られます。

@table @asis
@item eblook
@url{http://openlab.ring.gr.jp/edict/eblook/}
@end table

インストールは適当なディレクトリに行なって下さい。

@subsubheading 外字表示の準備

Lookup は CD-ROM 書籍に含まれる外字の表示をサポートしています。外字表示
を行なうための設定については、@ref{Setup Gaiji} を参照して下さい。

外字を表示したくない、もしくはそれが不可能な場合には、Appendix と呼ばれ
る外字の置き換えテーブルを利用することで、外字を通常の文字列で置き換える
ことも可能です。市販の辞書に対応したいくつかの Appendix が、EB ライブラ
リの Web ページで公開されています。

@table @asis
@item Appendix
@url{http://www.sra.co.jp/people/m-kasahr/eb/}
@end table

あるいは利用する辞書の補助パッケージがある場合には、そこで独自に外字の置
き換えテーブルが用意されている場合があります。目的の補助パッケージがない
か確認してみて下さい。(@pxref{Setup Package})

@c ---------------------------------------------------------------------
@node ndeb setup, ndeb dictionary, ndeb prepare, ndeb
@subsection ndeb の設定

ndeb は、次のように設定します。

@lisp
(ndeb @var{directory})
@end lisp

@var{directory} には辞書のあるディレクトリを指定します。

次のエージェント・オプションが利用できます。

@table @code
@item :appendix
eblook が利用する Appendix のあるディレクト
リを指定します (@inforef{Appendix, , eblook})。省略された場合には、辞書オ
プション @code{:gaiji-table} に従って外字が置き換えられます。
(@pxref{Gaiji Table})
@item :coding
eblook に対する process-coding-system。
デフォルトは @code{euc-jp}。
@end table

次の辞書オプションが利用できます。

@table @code
@item :stop-code
辞書の出力の終了コード。一部の辞書では、これを設定しないと表示がおかしく
なることがある。FAQ を参照。
@end table

例えば次のようになります。

@lisp
(setq lookup-search-agents
      '((ndeb "/cdrom" :appendix "/usr/local/share/eb/appendix")))
@end lisp

@c ---------------------------------------------------------------------
@node ndeb dictionary, ndeb customize, ndeb setup, ndeb
@subsection ndeb の辞書

CD-ROM 書籍に含まれる全ての辞書が有効となります。辞書の名前とタイトルは
eblook から与えられます。

検索方式は「完全一致検索」「前方一致検索」「後方一致検索」です。
(@pxref{Search Methods})

ndeb はメニューコマンドとコピーライトコマンドに対応しています。
(@pxref{Specify Dictionary})

@c ---------------------------------------------------------------------
@node ndeb customize,  , ndeb dictionary, ndeb
@subsection ndeb のカスタマイズ

@vindex ndeb-program-name
変数 @code{ndeb-program-name} により、eblook のコマンド名を指定します。
デフォルトでは "eblook" となっています。

@vindex ndeb-prompt-string
変数 @code{ndeb-prompt-string} により、eblook のプロンプトを指定します。
デフォルトでは "eblook> " となっています。

@c =====================================================================
@node ndtp, ndict, ndeb, Search Agents
@section ndtp

`ndtp' は、主にローカル・ネットワークで共有された CD-ROM 辞書から検索を
行なうことを目的とした検索エージェントです。NDTP (Network Dictionary
Transport Protocol) のバージョン 2 に対応したクライアントとなっています。

辞書を共有する必要のない場合には、より手軽に設定できるエージェントとして
ndeb が利用可能です。(@pxref{ndeb})

@menu
* ndtp prepare::                ndtp の準備
* ndtp setup::                  ndtp の設定
* ndtp dictionary::             ndtp の辞書
@end menu

@c ---------------------------------------------------------------------
@node ndtp prepare, ndtp setup, ndtp, ndtp
@subsection ndtp の準備

ndtp を利用するには NDTP サーバが必要です。自分のネットワークにサーバが
用意されてない場合には、自分で準備する必要があります。

@subsubheading NDTP server

NDTP サーバとして、dserver と NDTPD の二つが入手可能です。どちらも電子ブッ
クや EPWING に準拠した CD-ROM 書籍を扱うためのサーバです。

`dserver' は、以前から使われている辞書サーバで、NDTP の元となったプログ
ラムです。次のところから入手可能です。

@table @asis
@item dserver
@url{ftp://ftp.pu-toyama.ac.jp/pub/misc/}
@end table

`NDTPD' は、新しく作られている辞書サーバで、dserver を置き換えられるよう
開発されています。次のところから入手可能です。

@table @asis
@item NDTPD
@url{http://www.sra.co.jp/people/m-kasahr/ndtpd/}
@end table

サーバの設定については、それぞれのプログラムに附属のドキュメントを参照
して下さい。

@subsubheading 外字表示の準備

NDTP サーバとして NDTPD バージョン 2.0 以降を用いると、辞書の外字情報を
扱えるようになります。外字表示のための設定については、@ref{Setup Gaiji}
を参照して下さい。

@c ---------------------------------------------------------------------
@node ndtp setup, ndtp dictionary, ndtp prepare, ndtp
@subsection ndtp の設定

ndtp は、次のように設定します。

@lisp
(ndtp @var{server})
@end lisp

@var{server} には NDTP サーバのホスト名を指定します。

次のエージェント・オプションが利用できます。

@table @code
@item :service
NDTP のサービス名。
@item :port
NDTP のポート番号。
サービス名とポート番号の両方を省略した場合は、
サービス名として "ndtp" が利用されます。
@item :account
サーバへのアカウント。これはログに残るという以上の意味はない。
デフォルトは "<user>@@<host>")。
@item :coding
サーバに対する process-coding-system。デフォルトは @code{euc-jp}。
@end table

例えば次のようになります。

@lisp
(setq lookup-search-agents
      '((ndtp "dserver" :port 2010 :account "kei@@bamboo")))
@end lisp

@c ---------------------------------------------------------------------
@node ndtp dictionary,  , ndtp setup, ndtp
@subsection ndtp の辞書

サーバが扱っている全ての辞書が有効となります。辞書の名前とタイトルはサー
バから与えられます。

検索方式は「完全一致検索」「前方一致検索」「後方一致検索」です。
(@pxref{Search Methods})

@c =====================================================================
@node ndict, ndsrd, ndtp, Search Agents
@section ndict

`ndict' は、主にインターネットで公開されている辞書サーバから検索を行なう
ことを目的とした検索エージェントです。これは DICT プロトコル (RFC 2229) に
対応したクライアントとなっています。

DICT サーバの一つである dictd 向けにフリーに配布されている辞書は、ndic
エージェントで検索することも可能です。手軽に検索を試してみたい方は、そち
らも参照してみて下さい。(@pxref{ndic})

@menu
* ndict prepare::               ndict の準備
* ndict setup::                 ndict の設定
* ndict dictionary::            ndict の辞書
@end menu

@c ---------------------------------------------------------------------
@node ndict prepare, ndict setup, ndict, ndict
@subsection ndict の準備

ndict は DICT プロトコルに対応した辞書サーバにアクセスします。サーバに接
続できる環境であれば、特別な準備は何も必要ありません。自分でサーバを導入
する場合には、DICT プロジェクトから dictd が入手可能です。

@table @asis
@item DICT project
@url{http://www.dict.org/}
@end table

附属のドキュメントに従って適切に辞書、及びサーバを導入して下さい。dictd
で利用できるいくつかの辞書は、上記ページ以外にも Lookup のホームページか
らも入手可能です。

@table @asis
@item Lookup dictionary collection
@url{http://openlab.ring.gr.jp/lookup/dicts/}
@end table

@c ---------------------------------------------------------------------
@node ndict setup, ndict dictionary, ndict prepare, ndict
@subsection ndict の設定

ndict は、次のように設定します。

@lisp
(ndict @var{server})
@end lisp

@var{server} には DICT サーバのホスト名を指定します。

次のエージェント・オプションが利用できます。

@table @code
@item :service
DICT のサービス名。
@item :port
DICT のポート番号。
@vindex ndict-service-name
サービス名とポート番号の両方を省略した場合は、
サービス名として変数 @code{ndict-service-name} の値 ("dict") が利用されます。
@item :coding
サーバに対する process-coding-system。
デフォルトは @code{euc-jp-dos}。
@item :auth
サーバへの authentication (認証) を指定する。ユーザ名とパスワードの
組 (cons) によって表わす。
@item :methods
サーバが対応している検索方式のリストを指定する。デフォルトでは、
サーバのソフトウェアを見て検索方式を予測している。というのも、
DICT プロトコルでは検索方式はサーバが自由に設けることが出来るので、
プログラムからは完全な自動判定が出来ない。従ってユーザが対応を指定する
必要がある。dictd-1.4.x を普通に用いる場合には、これを指定する
必要はない。次の @code{:method-table} も参照。
@item :method-table
Lookup の検索方式とサーバの strategy との対応関係を alist で指定する。
例えばサーバが dictd-1.4.x である場合、これは自動的に

@lisp
((keyword . "exact") (prefix . "prefix") (suffix . "suffix")
 (substring . "substring") (exact . "exact") (regexp . "re"))
@end lisp

のように設定される。上の @code{:methods} も同時に指定する必要がある。
@end table

例えば次のようになります。

@lisp
(setq lookup-search-agents
      '((ndict "dict.org" :auth ("kei" . "password"))))
@end lisp

@c ---------------------------------------------------------------------
@node ndict dictionary,  , ndict setup, ndict
@subsection ndict の辞書

サーバが扱っている全ての辞書が有効となります。辞書の名前とタイトルはサー
バから与えられます。(しかし、サーバから与えられるタイトルはかなり長い場
合があるので、自分で再設定した方がよいかもしれません
(@pxref{Dictionary Options}))

検索方式は相手のサーバに依存します。サーバが dictd-1.4.x をそのまま用い
ている場合には、「全文検索」以外の全ての検索が有効となります。でなければ、
「キーワード検索」と「前方一致検索」のみ有効となります。
(@pxref{Search Methods})

@c =====================================================================
@node ndsrd, ndkks, ndict, Search Agents
@section ndsrd

`ndsrd' は、ランダムハウス英語辞典 Windows 版を検索する検索エージェントで
す。外部コマンドとして太田純さん作の CSRD を用います。

@menu
* ndsrd prepare::               ndsrd の準備
* ndsrd setup::                 ndsrd の設定
* ndsrd dictionary::            ndsrd の辞書
* ndsrd customize::             ndsrd のカスタマイズ
@end menu

@c ---------------------------------------------------------------------
@node ndsrd prepare, ndsrd setup, ndsrd, ndsrd
@subsection ndsrd の準備

ndsrd はバージョン 1.0 以降の CSRD に対応しています。CSRD
は次のサイトから入手出来ます。

@table @asis
@item CSRD
@url{http://openlab.ring.gr.jp/edict/csrd/}
@end table

CSRD は附属のドキュメントに従ってインストールを行なってください。

@c ---------------------------------------------------------------------
@node ndsrd setup, ndsrd dictionary, ndsrd prepare, ndsrd
@subsection ndsrd の設定

ndsrd は、次のように設定します。

@lisp
(ndsrd @var{directory}
	       :fmt "/somewhere/csrd.fmt"
	       :gai "/somewhere/csrd.gai")
@end lisp
@c ---------------------------------------------------------------------
@node ndsrd dictionary, ndsrd customize, ndsrd setup, ndsrd
@subsection ndsrd の辞書

ランダムハウス英語辞典 Windows 版の辞書データです。

@c ---------------------------------------------------------------------
@node ndsrd customize,  , ndsrd dictionary, ndsrd
@subsection ndsrd のカスタマイズ

@vindex ndsrd-program-name
変数 @code{ndsrd-program-name} により、CSRD のコマンド名を指定します。
デフォルトでは "csrd" となっています。

@c =====================================================================
@node ndkks, ndspell, ndsrd, Search Agents
@section ndkks

`ndkks' は、検索ではなく日本語の読みを調べるための検索エージェントです。
漢字の含まれる検索語を指定した場合、漢字かな変換プログラム KAKASI を用い
てその読みを調べて表示します。

@menu
* ndkks prepare::               ndkks の準備
* ndkks setup::                 ndkks の設定
* ndkks dictionary::            ndkks の辞書
* ndkks customize::             ndkks のカスタマイズ
@end menu

@c ---------------------------------------------------------------------
@node ndkks prepare, ndkks setup, ndkks, ndkks
@subsection ndkks の準備

KAKASI は漢字かな変換プログラムで、次のところから kakasi-2.2.5.tar.gz (本
体ファイル) と kakasidict.940620.gz (辞書ファイル) の名称で入手可能です。

@table @asis
@item KAKASI
@url{http://kakasi.namazu.org/}
@end table

@c ---------------------------------------------------------------------
@node ndkks setup, ndkks dictionary, ndkks prepare, ndkks
@subsection ndkks の設定

ndkks は、次のように設定します。

@lisp
(ndkks)
@end lisp

つまり、それを @code{lookup-search-agents} のリストに加えるだけです。
オプションその他の特別な設定はありません。

@c ---------------------------------------------------------------------
@node ndkks dictionary, ndkks customize, ndkks setup, ndkks
@subsection ndkks の辞書

ndkks 自体が一つの辞書となります。辞書名は変数 @code{ndkks-program-name}
で指定される KAKASI プログラムの名前です。タイトルは変数
@code{ndkks-dictionary-title} により与えられます。

キーワード検索において、漢字の含まれる検索語が指定されたとき出力されます。

@c ---------------------------------------------------------------------
@node ndkks customize,  , ndkks dictionary, ndkks
@subsection ndkks のカスタマイズ

@vindex ndkks-program-name
変数 @code{ndkks-program-name} により、KAKASI のコマンド名を指定します。
デフォルトでは "kakasi" となっています。

@vindex ndkks-dictionary-title
変数 @code{ndkks-dictionary-title} により、ndkks 辞書のタイトルを指定し
ます。デフォルトでは "漢字かな辞典" となっています。

@vindex ndkks-content-format
変数 @code{ndkks-content-format} により、出力内容のフォーマットをリスト
で指定します。リストの各要素には次のものが利用できます。

@table @asis
@item @code{t}
検索語が挿入される。
@item 文字列
それがそのまま挿入される。
@item 文字列のリスト
それをオプション引数として KAKASI を呼び出し、その結果が挿入される。
@end table

@c =====================================================================
@node ndspell, ndcookie, ndkks, Search Agents
@section ndspell

`ndspell' は、Lookup でスペルチェックを行なうための検索エージェントです。
他のエージェントで独自にスペルチェックを行なわずとも、ndspell がそれを処
理して自動的に再検索を行なってくれます。また、スペルの検索も行なえます。

@menu
* ndspell prepare::             ndspell の準備
* ndspell setup::               ndspell の設定
* ndspell dictionary::          ndspell の辞書
* ndspell customize::           ndspell のカスタマイズ
@end menu

@c ---------------------------------------------------------------------
@node ndspell prepare, ndspell setup, ndspell, ndspell
@subsection ndspell の準備

ndspell は外部コマンドとして Ispell と grep を利用しています。Ispell は
対話型のスペルチェックコマンドで、grep は言わずと知れた UNIX ツールです。
どちらも GNU の FTP サイトなどから入手可能です。

@table @asis
@item GNU ftp directory
@url{ftp://ftp.gnu.org/pub/GNU/}
@end table

@c ---------------------------------------------------------------------
@node ndspell setup, ndspell dictionary, ndspell prepare, ndspell
@subsection ndspell の設定

ndspell は、次のように設定します。

@lisp
(ndspell)
@end lisp

つまり、それを @code{lookup-search-agents} のリストに加えるだけです。
オプションその他の特別な設定はありません。

@c ---------------------------------------------------------------------
@node ndspell dictionary, ndspell customize, ndspell setup, ndspell
@subsection ndspell の辞書

ndspell 自体が一つの辞書となります。辞書名は変数
@code{ndspell-ispell-program} で指定される Ispell コマンドの名前です。
タイトルは変数 @code{ndspell-dictionary-title} により与えられます。

次の検索法が有効となります。

@table @code
@item キーワード検索
検索語をスペルチェックし、誤りがある場合には候補をエントリとして生成。
@item 前方一致検索
@itemx 後方一致検索
@itemx 部分一致検索
@itemx 正規表現検索
パターンにマッチする単語を検索し、エントリを生成。
@end table

どの場合も、生成されたエントリは普通に Entry バッファに出力され、それを
選択して内容を表示しようとした段階で再検索が行なわれます。実際に試してみ
て下さい。

@c ---------------------------------------------------------------------
@node ndspell customize,  , ndspell dictionary, ndspell
@subsection ndspell のカスタマイズ

@vindex ndspell-ispell-program
変数 @code{ndspell-ispell-program} により、Ispell のコマンド名を指定しま
す。デフォルトでは "ispell" となっています。

@vindex ndspell-grep-program
変数 @code{ndspell-grep-program} により、grep のコマンド名を指定します。
デフォルトでは "grep" となっています。

@vindex ndspell-words-dictionary
変数 @code{ndspell-words-dictionary} により、スペルを検索する際の単語辞
書を指定します。デフォルトでは @file{/usr/share/dict/words} となっていま
す。

@vindex ndspell-dictionary-title
変数 @code{ndspell-dictionary-title} により、ndspell 辞書のタイトルを指
定します。デフォルトでは "Spell Checker" となっています。

@vindex ndspell-search-dictionaries
変数 @code{ndspell-search-dictionaries} により、再検索の対象とする辞書を
その辞書 ID のリストとして指定します。デフォルトでは @code{t} となってお
り、この場合、選択されている全ての辞書から再検索が行なわれます。

@c =====================================================================
@node ndcookie,  , ndspell, Search Agents
@section ndcookie

`ndcookie' は、cookie ファイル (引用集) から検索を行なうための検索エージェ
ントです。おまけみたいなもんです。

@menu
* ndcookie prepare::            ndcookie の準備
* ndcookie setup::              ndcookie の設定
* ndcookie dictionary::         ndcookie の辞書
@end menu

@c ---------------------------------------------------------------------
@node ndcookie prepare, ndcookie setup, ndcookie, ndcookie
@subsection ndcookie の準備

利用出来るファイルの例としては、Emacs に附属の Zippy ファイルがあります。

@table @asis
@item Zippy
@file{$(EMACS)/etc/yow.lines}
@end table

@c ---------------------------------------------------------------------
@node ndcookie setup, ndcookie dictionary, ndcookie prepare, ndcookie
@subsection ndcookie の設定

ndcookie は、次のように設定します。

@lisp
(ndcookie @var{file})
@end lisp

@var{file} には、利用する cookie ファイルを指定します。ファイルが相対パ
スで指定された場合、変数 @code{data-directory} からの相対パスとして扱わ
れます。

例えば次のようになります。

@lisp
(setq lookup-search-agents
      '((ndcookie "yow.lines")))
@end lisp

@c ---------------------------------------------------------------------
@node ndcookie dictionary,  , ndcookie setup, ndcookie
@subsection ndcookie の辞書

指定した cookie ファイルが一つの辞書となります。辞書名はファイル名に一致
します。タイトルは設定されません。

全ての検索方式が有効となります。(@pxref{Search Methods})

@c *********************************************************************
@node Mode Details, How To Get, Search Agents, Top
@chapter 各モードについての詳細

この章では、Lookup の各モードでの全ての設定・操作について説明します。

@menu
* Select Mode::                 Select モード
* Entry Mode::                  Entry モード
* Content Mode::                Content モード
@end menu

@c =====================================================================
@node Select Mode, Entry Mode, Mode Details, Mode Details
@section Select モード

Select モードでは、利用可能な辞書の一覧を表示し、実際に利用する辞書の選
択状態を切り替えることが出来ます。また、それぞれの辞書に固有の情報を得る
ことも出来ます。

@menu
* Select Mode Details::         Select モードの詳細
* Select Mode Commands::        Select モードのコマンド一覧
@end menu

@c ---------------------------------------------------------------------
@node Select Mode Details, Select Mode Commands, Select Mode, Select Mode
@subsection Select モードの詳細

@findex lookup-select-mode
@vindex lookup-select-mode-map
@vindex lookup-select-mode-hook
最初に @kbd{M-x lookup} を実行するか、検索実行後に Entry バッファで 
@kbd{S} を押すと、辞書一覧バッファが表示され、Select モード
(@code{lookup-select-mode}) に入ります。キーマップは
@code{lookup-select-mode-map} で、最初に @code{lookup-select-mode-hook} 
が呼ばれます。

一覧の @samp{%}、@samp{Identifier}、@samp{Title} とあるコラムには、それ
ぞれ辞書の選択状態、辞書 ID、辞書のタイトルが表示されます。
@ref{Quick Startup} を参照して下さい。

@samp{Methods} とあるコラムには、辞書が対応している検索方式が示されます。
ここに並んでいる記号の列は、一文字がそれぞれ一つの検索方式を表わしていま
す。各記号と検索方式の対応については、@ref{Search Methods} を参照して下
さい。

このバッファでの具体的な操作については、
@ref{Specify Dictionary} を参照して下さい。

@c ---------------------------------------------------------------------
@node Select Mode Commands,  , Select Mode Details, Select Mode
@subsection Select モードのコマンド一覧

@table @kbd
@item @key{SPC}
@itemx n
@itemx M-x lookup-select-next-line
@findex lookup-select-next-line
次の行に進む。

@item p
@itemx M-x lookup-select-previous-line
@findex lookup-select-previous-line
前の行に戻る。

@item m
@itemx M-x lookup-select-do-select
@findex lookup-select-do-select
ポイント行の辞書を選択する。

@item u
@itemx M-x lookup-select-do-unselect
@findex lookup-select-do-unselect
ポイント行の辞書を非選択にする。

@item M-x lookup-select-toggle-selected
@findex lookup-select-toggle-selected
ポイント行の辞書の選択状態をトグルする。

@item a
@itemx M-x lookup-select-do-select-all
@findex lookup-select-do-select-all
全ての辞書を選択する。

@item @key{RET}
@itemx M-x lookup-select-do-select-only
@findex lookup-select-do-select-only
ポイント行の辞書のみを選択する。

@item d
@itemx M-x lookup-select-mark-disable
@findex lookup-select-mark-disable
ポイント行の辞書に無効化のマークを付ける。

@item x
@itemx M-x lookup-select-do-execute
@findex lookup-select-do-execute
無効化を実行する。

@item M
@itemx M-x lookup-select-menu
@findex lookup-select-menu
辞書がメニューに対応している場合、それを参照する。

@item M
@itemx M-x lookup-select-copyright
@findex lookup-select-copyright
辞書がコピーライト表示に対応している場合、それを参照する。

@item f
@itemx M-x lookup-select-search-pattern
@findex lookup-select-search-pattern
選択された辞書から検索を行なう。

@item /
@itemx M-x lookup-select-text-search
@findex lookup-select-text-search
ポイント行の辞書から全文検索を行なう。

@item g
@itemx M-x lookup-select-update
@findex lookup-select-update
現在の検索モジュールを初期化し直す。
ただし、設定ファイルで設定を変更した場合、それを反映させるには
@kbd{M-x lookup-restart} を用いる必要がある。

@item q
@itemx M-x lookup-quit
辞書選択バッファを抜ける。

@item Q
@itemx M-x lookup-exit
Lookup を終了する。

@item R
@itemx M-x lookup-restart
Lookup を再起動する。

@item ?
@itemx M-x lookup-select-help
@findex lookup-select-help
Select モードの簡易ヘルプを表示する。
@end table

@c =====================================================================
@node Entry Mode, Content Mode, Select Mode, Mode Details
@section Entry モード

Entry モードでは、検索の結果見付かったエントリを一覧し、それらを順に参照
していくことが出来ます。

@menu
* Entry Mode Details::          Entry モードの詳細
* Entry Mode Commands::         Entry モードのコマンド一覧
@end menu

@c ---------------------------------------------------------------------
@node Entry Mode Details, Entry Mode Commands, Entry Mode, Entry Mode
@subsection Entry モードの詳細

@findex lookup-entry-mode
@vindex lookup-entry-mode-map
@vindex lookup-entry-mode-hook
各種の検索コマンド (@pxref{Search Commands}) を実行すると、Entry バッファ
が表示され、Entry モード (@code{lookup-entry-mode}) に入ります。キーマップ
は @code{lookup-entry-mode-map} で、最初に @code{lookup-entry-mode-hook} 
が呼ばれます。

バッファにはエントリの一覧が表示され、辞書のタイトルとエントリの見出しが
並びます。モードラインは次のようになります。

@example
----------------------------------------------------------------
-E:%*  Lookup: *Entry* @{*:word@} [2]      (Entry Abbrev)--L1--C20
----------------------------------------------------------------
@end example

ここでブレース (大括弧) に挟まれた部分は、どのような検索が行なわれたかを
示しています。コロン (@samp{:}) の前の一文字は検索方式を表わしており、
その後の @samp{word} となっているのが検索語です。検索方式については
@ref{Search Methods} を参照して下さい。後に続くブラケット (角括弧) と
数字は、見付かったエントリの数です。

このバッファでの具体的な操作については、
@ref{See Result} 参照して下さい。

@c ---------------------------------------------------------------------
@node Entry Mode Commands,  , Entry Mode Details, Entry Mode
@subsection Entry モードのコマンド一覧

@table @kbd
@item M-x lookup-entry-display-content
@findex lookup-entry-display-content
ポイント行のエントリの本文を表示する。
Overview モードになっている場合にはそれを解除し、Content バッファを
オープンする。エントリがリファレンスの場合には、それを参照する。

@item @key{mouse-2}
@item @code{lookup-entry-mouse-follow}
@findex lookup-entry-mouse-follow
マウスでクリックしたエントリの本文を表示する。

@item @key{SPC}
@itemx M-x lookup-entry-next-page
@findex lookup-entry-next-page
エントリ本文の表示を一ページ進める。
バッファの終わりまで達したら、次のエントリに移動する。

@item @key{DEL}
@itemx M-x lookup-entry-previous-page
@findex lookup-entry-previous-page
エントリ本文の表示を一ページ戻す。
バッファの始めまで達したら、前のエントリに移動する。

@item @key{RET}
@itemx M-x lookup-entry-scroll-up-content
@findex lookup-entry-scroll-up-content
エントリ本文をプレフィスクの行数だけスクロール・アップする。

@item M-x lookup-entry-scroll-down-content
@findex lookup-entry-scroll-down-content
エントリ本文をプレフィスクの行数だけスクロール・ダウンする。

@item <
@itemx M-x lookup-entry-beginning-of-content
@findex lookup-entry-beginning-of-content
エントリ本文の表示を先頭まで戻す。

@item >
@itemx M-x lookup-entry-end-of-content
@findex lookup-entry-end-of-content
エントリ本文の表示を末尾まで進める。

@item n
@itemx M-x lookup-entry-next-entry
@findex lookup-entry-next-entry
次のエントリを表示する。プレフィクスの数だけ進む。

@item p
@itemx M-x lookup-entry-previous-entry
@findex lookup-entry-previous-entry
前のエントリを表示する。プレフィクスの数だけ戻る。

@item M-n
@itemx M-x lookup-entry-history-next
@findex lookup-entry-history-next
検索履歴を次に進む。プレフィスクの数だけ進む。

@item M-p
@itemx M-x lookup-entry-history-previous
@findex lookup-entry-history-previous
検索履歴を前に戻る。プレフィスクの数だけ戻る。

@item i
@itemx M-x lookup-entry-info
@findex lookup-entry-info
エントリの情報を出力する。

@item o
@itemx M-x lookup-entry-open
@findex lookup-entry-open
エントリ本文を画面一杯に表示する。

@item O
@itemx M-x lookup-entry-open-other
@findex lookup-entry-open-other
エントリ本文を別プログラムで表示する。

@item v
@itemx M-x lookup-entry-overview-mode
@findex lookup-entry-overview-mode
Overview モードに入る。
Cotent バッファがクローズされ、@kbd{n} と @kbd{p} が単にポイント移動だけを
行なうようになる。

@item t
@itemx M-x lookup-entry-toggle-format
@findex lookup-entry-toggle-format
エントリ本文の整形処理をトグルする。

@item s
@itemx M-x lookup-entry-isearch-content
@findex lookup-entry-isearch-content
Content バッファで isearch-forward を実行する。

@item w
@itemx M-x lookup-entry-cite-content
@findex lookup-entry-cite-content
エントリ本文をキルリングに保存する。
変数 @code{lookup-cite-style} もしくは辞書オプション @code{:cite-style}
により引用のスタイルを指定可能。@kbd{M-x lookup-content-cite-region} も参照。

@item f
@itemx M-x lookup-entry-search-pattern
@findex lookup-entry-search-pattern
ミニバッファから検索式を入力して検索する。

@item L
@itemx M-x lookup-entry-list-references
@findex lookup-entry-list-references
エントリ本文に含まれるリファレンスを一覧する。

@item S
@itemx M-x lookup-select-dictionary
辞書選択バッファに切り換える。

@item r
@itemx M-x lookup-entry-start-window
@findex lookup-entry-start-window
検索を開始したウィンドウに移動する。

@item h
@itemx M-x lookup-entry-content-window
@findex lookup-entry-content-window
Content バッファに移動する。

@item g
@itemx M-x lookup-entry-update
@findex lookup-entry-update
今回と同じ検索語で、エントリを再検索する。

@item M-x lookup-entry-update-content
@findex lookup-entry-update-content
エントリ本文を再表示する。整形処理も全てやり直される。

@item q
@itemx M-x lookup-quit
Entry バッファを抜ける。

@item Q
@itemx M-x lookup-exit
Lookup を終了する。

@item R
@itemx M-x lookup-restart
Lookup を再起動する。

@item ?
@itemx M-x lookup-entry-help
@findex lookup-entry-help
Entry モードの簡易ヘルプを表示する。
@end table

@c =====================================================================
@node Content Mode,  , Entry Mode, Mode Details
@section Content モード

Content モードでは、エントリの本文を表示し、内容を参照することが出来ます。

@menu
* Content Mode Details::        Content モードの詳細
* Content Mode Commands::       Content モードのコマンド一覧
@end menu

@c ---------------------------------------------------------------------
@node Content Mode Details, Content Mode Commands, Content Mode, Content Mode
@subsection Content モードの詳細

@findex lookup-content-mode
@vindex lookup-content-mode-map
@vindex lookup-content-mode-hook
Entry バッファで本文を表示するよう操作すると Content バッファが現れ、
Content モード (@code{lookup-content-mode}) に入ります。キーマップは
@code{lookup-content-mode-map} で、最初に 
@code{lookup-content-mode-hook} が呼ばれます。

バッファにはエントリの本文が表示され、見出しがモードラインに示されます。

このバッファに対する主な操作は Entry バッファから行なうことが出来るので、
直接このモードを利用することはあまりありません。具体的な操作については、
@ref{See Result} 参照して下さい。

@c ---------------------------------------------------------------------
@node Content Mode Commands,  , Content Mode Details, Content Mode
@subsection Content モードのコマンド一覧

@table @kbd
@item @key{SPC}
@itemx M-x scroll-up
バッファをスクロール・アップする。

@item @key{DEL}
@itemx M-x scroll-down
バッファをスクロール・ダウンする。

@item <
@itemx M-x beginning-of-buffer
バッファの先頭に移動する。

@item >
@itemx M-x end-of-buffer
バッファの末尾に移動する。

@item @key{TAB}
@itemx M-x lookup-content-next-link
@findex lookup-content-next-link
次のリンクに移動する。

@item @key{RET}
@itemx M-x lookup-content-follow-link
@findex lookup-content-follow-link
ポイント位置のリンクを参照する。

@item @key{mouse-2}
@itemx @code{lookup-content-mouse-follow}
@findex lookup-content-mouse-follow
マウスでクリックしたリンクを参照する。

@item t
@itemx M-x lookup-content-toggle-format
@findex lookup-content-toggle-format
本文の整形処理をトグルする。

@item w
@itemx M-x lookup-content-cite-region
@findex lookup-content-cite-region
リージョンの内容をキルリングに保存する。
その際、変数 @code{lookup-cite-header} または辞書オプション @code{:cite-header}
により引用時のヘッダを、変数 @code{lookup-cite-prefix} または辞書オプション
@code{:cite-prefix} により引用時のプレフィクスを指定することが出来る。
@footnote{現在、@code{:cite-style} には未対応}

@item h
@itemx M-x lookup-content-entry-window
@findex lookup-content-entry-window
Entry バッファに移動する。

@item g
@itemx M-x lookup-content-update
@findex lookup-content-update
キャッシュを用いずに本文を読み直す。

@item q
@itemx M-x lookup-content-leave
@findex lookup-content-leave
Content バッファを抜ける。

@item ?
@itemx M-x lookup-content-help
@findex lookup-content-help
Content モードの簡易ヘルプを表示する。
@end table

@c *********************************************************************
@node How To Get, Troubleshooting, Mode Details, Top
@appendix 最新情報を手に入れる
@setchapternewpage off

Lookup は Ring Server のオープンラボで開発されています。次のところから
入手可能です。

@table @asis
@item Lookup
@url{http://openlab.ring.gr.jp/lookup/}
@end table

Lookup に関する情報交換は、専用のメーリングリストにて行われています。参
加を希望する方は、@email{lookup-subscribe@@ring.gr.jp} 宛てに、空のメー
ルを送って下さい。

Lookup は、lookup@@ring.gr.jp メイリングリストの有志 
(lookup@@ring.gr.jp) が管理しています。Lookup に関する問い合わせはこちら
までお願いします。

@c *********************************************************************
@node Troubleshooting, Glossary, How To Get, Top
@appendix トラブルシューティング

いくつかのトラブルへの対処法が、Lookup 配布物に含まれるファイル FAQ に
まとめてあるので、そちらを参照して下さい。それでも不明な場合は、メーリ
ングリストなどで質問して下さい。

@page
@c *********************************************************************
@node Glossary, Concept Index, Troubleshooting, Top
@unnumbered 用語集

@table @asis
@item 辞書 (dictionary)
検索の元となる情報源。Lookup では CD-ROM 書籍や辞書サーバなどが使える。

@item CD-ROM 書籍 (CD-ROM book)
電子ブック (EB/EBG/EBXA) や EPWING 規約に準拠した電子書籍。

@item 辞書サーバ (dictionary server)
NDTP や DICT プロトコルなどに対応した、用語検索の機能を提供するサーバ。

@item NDTP (Network Dictionary Transport Protocol)
CD-ROM 書籍をネットワークで利用するためのプロトコル。dserver というソフ
トウェアが独自に定義したもの。

@item DICT プロトコル
ネットワークで検索を行なうためのプロトコル。RFC 2229。

@item 検索エージェント (search agent)
辞書を実際にアクセスするための内部プログラム。

@item 検索モジュール (search module)
一回の検索の対象となる辞書のまとまり。

@item 検索 (search)
Lookup では、辞書から目的のエントリを調べ出すこと。メニューから目的のエ
ントリまでを順に辿っていく「メニュー検索」や、検索語を指定してエントリを
見付け出す「文字列検索」がある。

@item メニュー検索 (menu)
辞書にあらかじめ用意されたメニューを辿って、目的のエントリを見付け出すこ
と。

@item 文字列検索 (search string)
検索語を用いた検索。ミニバッファから検索式を入力する場合を特に
「パターン検索」と呼ぶ。リージョンなどを指定した場合には「単語検索」が
行なわれる。

@item パターン検索 (search pattern)
ミニバッファから検索式を入力して行なう検索のこと。パターンの指定方法によっ
て、次の「単語検索」「完全一致検索」「前方一致検索」「後方一致検索」「中
間一致検索」「正規表現検索」「キーワード検索」「全文検索」を切り換えるこ
とが出来る。

@item 単語検索 (search word)
デフォルトの検索方法。「完全一致検索」や「キーワード検索」などを間接的に
呼び出す。

@item 前方一致検索 (search prefix)
指定した検索語が見出し語の前方と一致するものを検索。

@item 後方一致検索 (search suffix)
指定した検索語が見出し語の後方と一致するものを検索。

@item 中間一致検索 (search substring)
指定した検索語が見出し語の一部に含まれるものを検索。

@item 完全一致検索 (search exactly)
指定した検索語が見出し語と完全に一致するものを検索。

@item 正規表現検索 (search regexp)
正規表現を検索語として見出し語と一致するものを検索。

@item キーワード検索 (search keyword)
辞書に登録されキーワードと一致するエントリを検索。

@item 全文検索 (text search)
指定した検索語と一致するものを辞書の全文から検索。

@item エントリ (entry)
辞書で説明されている一つ一つの項目のこと。

@item 見出し (heading)
エントリの内容を示す表題。

@item 見出し語 (headword)
エントリの検索用の語句。

@item キーワード (keyword)
エントリに関連付けられた追加の語句。

@item 本文 (contents)
エントリの説明内容。

@item リファレンス (reference)
一つのエントリから関連付けられた別のエントリ。

@item リンク (link)
リファレンスを呼び出すために設けられた文字領域。

@item grep
ファイルから特定の文字列やパターンを含む行を抜き出す UNIX のツール。
@end table

@page
@c *********************************************************************
@node Concept Index, Command Index, Glossary, Top
@unnumbered Concept Index
@printindex cp

@page
@c *********************************************************************
@node Command Index, Variable Index, Concept Index, Top
@unnumbered Command Index
@printindex fn

@page
@c *********************************************************************
@node Variable Index,  , Command Index, Top
@unnumbered Variable Index
@printindex vr

@bye

@c Local Variables:
@c mode:outline-minor
@c outline-regexp:"@\\(ch\\|sec\\|subs\\)"
@c fill-column:72
@c End:
