Lookupについて

Lookupは、Emacs 上で動作する辞書検索インターフェイスです(公式サイトより)。 現在は電子辞書オープンラボでメンテナンスされています。 しかし、Lookup 1.4が出た後は更新もなく2年以上が経過し、残念ながら現在は事実上更新は停止している状態です(2006年3月時点。2007/1/30にセキュリティに関する修正が加わったLookup 1.4.1がリリースされました。)。 そこで、このページではLookup及び関連するソフトウェアに対するbug fixや機能追加を行った改造版やパッチを提供しています。

Lookup 1.4+media

EPWINGに含まれる動画・音声データの再生を可能にしたLookup 1.4の改造版です。 動画データの再生は白井さんから提供頂いたパッチによるものです。 eblookへのパッチと併せて使用して下さい。 細かいバグ修正も入っています。

for your download

lookup-1.4+media-20130903.tar.gz

アーカイブの使い方

インストールは通常のLookupと同様の手順で行って下さい。 ただし、configureスクリプトからの--with-emacsオプションは無効のようなので、指定する場合はbash等のシェル上から

$EMACS=/your/emacs ./configure .....

とするか、make時に

$make EMACS=/your/emacs install

のようにして下さい。 また、eblookにもこのページにあるパッチを当てる必要があります。 20061204以降のLookupを使用する場合は、EB Libraryのバージョンを上げない場合でも「必ず」20061204以降のeblook 1.6.1+mediaを使用して下さい。

追加される機能、従来からの変更

ndebエージェントでの音声・動画リンクの生成

パッチをあてたeblookを使う事で音声・動画に対するリンクが生成されます。 対応する音声・動画はEB Libraryに依存しており、EPWINGのWAVE形式の音声とMPEG1形式の動画となります。 (詳細はEB Libraryのドキュメントを参照して下さい。)

た、補助パッケージを使用している場合はarrangeも正しく設定しないといけません。 arrangeの先頭あるいはndeb-arrange-jpeg等のイメージデータのarrangeの直前または直後にndeb-arrange-wavendeb-arrange-mpegを、arrangeの最後にndeb-arrange-snd-autoplayを追加して下さい。

ndeb-binary-programsの拡張

ndeb-binary-programsに、関数名のシンボルを指定する事で外部プログラムの代わりに関数を呼び出す事ができるようになりました。 この際にはプロパティの指定は無視されます。 音声再生用の関数として、play-sound-file関数を使用するndeb-binary-play-sound-fileと、Meadow専用のndeb-binary-play-with-mciが用意されています。

また、プロパティに:directが追加されました。 マルチメディアデータは、一般にHONMONファイル等に収録されており、Lookupではデータを抽出し、一時ファイルを作成した後にプログラムの起動・関数の呼出しを行います。 しかし、動画については抽出せずとも元々一つのファイルとして存在しています。 :directnon-nilにすると、動画の再生時には、最初から存在するファイルを引数にしてプログラムの起動を行うようになります。 このファイルには拡張子が付いていないので、動画を再生するプログラムは拡張子に依らず再生が可能である必要があります。 加えて、対応するeblook (20080116以降)が必要です。

音声・動画リンクの再生

ndeb-binary-programsに、wavempegに対応した記述を追加する事で音声・動画の再生が可能になります。 MCI機能を持つMeadowや、play-sound-file関数を持つEmacsでは外部プログラムを使用せずに音声再生が可能です。 この機能を利用する場合は、ndeb-binary-programswaveに対応する記述としてndeb-binary-play-with-mci、あるいはndeb-binary-play-sound-fileを指定するか、ndeb-binary-programsを一切指定しないでデフォルト値を使用して下さい。 一例としては~/.lookupに以下のような記述を行います。

(setq ndeb-binary-programs
      '((wave ndeb-binary-play-sound-file)
        (jpeg "gv")))

尚、ndeb-binary-play-sound-fileは、Meadowでは使用しないで下さい。 play-sound-fileの挙動が他のEmacsと異なる為に不具合を起こします。 また、ndeb-binary-play-sound-fileを使用する場合、音声再生中はEmacs上で他の操作が一切できなくなります。 この為、後述する:snd-autoplayオプションを有効にすると、音声再生が終了するまでcontentが表示されません。

上記以外の場合の音声再生、及び動画の再生には外部プログラムが必要になります。 ndeb-binary-programsは例えば以下のように設定します。

(setq ndeb-binary-programs
      '((wave "mplayer")
        (mpeg ("mplayerc" "/play") :direct t)
        (bmp "gv")))

ここではmplayerを音声再生プログラムの例に出していますが、音声の最後が再生されない不具合が確認されています(2006/5/1)ので、mplayerは使わない方がよいようです。 お勧めの外部プログラムがあれば教えてください。

Meadowではユーザー側でndeb-binary-programsを設定しない場合、音声に関しては可能であればndeb-binary-play-with-mciを使用し、そうでない場合と、その他の画像・動画データに関してはfiber.exeを起動するように自動的に設定されます。

辞書オプション:snd-autoplayの追加

non-nilにするとarrangeの最後で音声を再生します。 補助パッケージを使用している場合はそのままではオプションが有効になりませんのでarrangeを前述のように設定して下さい。

変数ndeb-play-sound-from-entry, ndeb-play-movie-from-entryの追加

これらの変数にkey(define-keyのdocstringを参照して下さい)を指定する事でEntryモードから音声・動画の再生が可能になります。 例えば、以下の様な内容を~/.lookupに記述を行います。

(setq ndeb-play-sound-from-entry "z")
(setq ndeb-play-movie-from-entry "x")

上記の場合、Entryモードからzを押す事でカーソル位置にあるentryの音声を、xを押す事で動画を再生します。 この際にprefix argumentを指定すると、先頭からn番目の音声、あるいは動画を再生できます。

尚、これらの変数による設定は、後述する変数ndeb-play-binaries-from-entryで、ほぼ同様の事が行えます。 違いはdescribe-keyの時の表示とエラーメッセージの一部だけ(の筈)です。 また、ndeb-play-binaries-from-entryも含め、同じkeyを指定した場合はndeb-play-binaries-from-entryndeb-play-movie-from-entryndeb-play-sound-from-entryの順に設定が優先されます。

変数ndeb-play-binaries-from-entryの追加

この変数にkey(define-keyのdocstringを参照して下さい)とリンクのタイプを指定したリストのリストを設定する事でEntryモードから音声・動画・画像の再生が可能になります。 例えば、以下の様な内容を~/.lookupに記述を行います。

(setq ndeb-play-binaries-from-entry
      '(("z" wave)
        ("x" mpeg)))

上記の場合、Entryモードからzを押す事でカーソル位置にあるentryの音声を、xを押す事で動画を再生します。 この際にprefix argumentを指定すると、先頭からn番目の音声、あるいは動画を再生できます。 変数ndeb-play-sound-from-entry, ndeb-play-movie-from-entryの設定例と同じ状態になる設定です。

リンクのタイプは複数指定する事も可能です。

(setq ndeb-play-binaries-from-entry
      '(("z" wave mpeg)
        ("x" xbm bmp jpeg)))

上記の場合、Entryモードからzを押す事でカーソル位置にあるentryの最初にある音声または動画を、xを押す事でentryの最初にある画像を再生します。 この際にprefix argumentを指定すると、keyに対応するタイプのうち、先頭からn番目のリンクを再生できます。

BMPイメージの表示方法の変更、変数ndeb-binary-bmp-display-typeの追加

Meadowを除く多くのemacsではBMPイメージを直接表示する事はできず、Lookup 1.4では一旦TIFFファイルに変換してから表示しています(ちなみにTIFFイメージが扱えない場合はBMPイメージとして直接表示、それもできない場合は表示しないという実装になっています)。 BMPイメージを直接扱えるMeadowでもその様になっているのはRLE圧縮されたBMPが表示できない頃があった為だったと思うのですが(あまり覚えていません)、現在のMeadowではRLE圧縮されたBMPも表示できるのでBMPで直接表示、ppm、TIFFの順番で表示に使える画像形式を調べるようにしました。 TIFFよりppmを優先して使用するようにしたのは、TIFFは避けたほうがよいという意見があったのと、私のところではNTEmacsでeblookが出力するTIFFファイルを表示できなかった為です。

実際に表示に使用する形式はndeb-binary-bmp-display-typeに設定されます。 不都合がある場合は~/.lookupで直接指定する事もできます。

インライン画像の表示方法の変更

Lookup 1.4では画像は全て前後に改行をはさんで表示するようにしていますが、(理化学辞典等でよく使われている)インライン画像に関しては本文のテキスト中に、改行をはさまずに表示するようになります。 eblookへのパッチも必要です。 尚、この変更により、ndeb-arrange-fill-linesがうまく動かない場合が出てくると思われます。

変数ndeb-gaiji-sizeの追加、辞書オプション・エージェントオプション:gaiji-sizeの追加

ndebエージェントでビットマップイメージによる外字表示を行っている場合、辞書が対応していれば外字の大きさをより大きなものに変更できるようになります。 変数ndeb-gaiji-sizeに、使用する外字の大きさ(高さ)を整数値で指定して下さい。 通常は16, 24, 30, 48のいずれかです。 指定した大きさの外字が無い場合は指定した値を越えない最も大きな外字を探し、それも無い場合は16ドットの外字を使用します。

個々の辞書について指定する場合は辞書オプションまたはエージェントオプション:gaiji-sizeを整数値で指定して下さい。 オプションで指定した大きさの外字が無い場合は16ドットの外字を取得します。 オプションが指定されていない辞書については、初めて外字データを取得する際に変数ndeb-gaiji-sizeの値に応じて自動的にオプションが設定されます。

bitmap-muleによる外字表示を行っている場合は、外字のサイズを大きくすると表示が乱れるので変更できないようにしています。

図版メニューの表示

EPWINGの広辞苑第五版などに含まれる図版メニューに対応しました。 対応するEB Library (4.3以上)とパッチをあてたeblook (20061204以降)が必要です。 selectモードかentryモードからMを押す(lookup-select-menuまたはlookup-entry-show-menu)事で図版メニューが存在する場合はentryに出現します。 同様にイメージマップも表示できるようになりました。

イメージからの参照先は、画像上の領域を示したリンクとして画像の下に表示されます。 また、emacs22以上では画像をクリックする事で該当する参照先を表示させる事ができます。

ndebのキーワード検索への対応

広辞苑第五版のような条件検索やクロス検索に対応した辞書と20070120以降のeblookを使用する事で、キーワード検索に対応します。 キーワード検索を行うには辞書オプション:default-methodや変数lookup-default-methodを設定するか、検索文字列の先頭に"@"をつけて下さい。 複数語を指定する場合はスペースやタブで区切ります。 例えば、広辞苑第五版では

@犬 猿 雉

のように検索文字列を指定します。 条件検索とクロス検索の両方の結果をそのまま返す為、最大でlookup-max-hitsの倍の項目数がヒットする可能性があります。

ndebでワイルドカード検索に対応

ワイルドカード検索に対応したeblookと、対応した辞書を使用する事でa?ple*の様なパターンで検索できるようになります。

ndebにおけるebnet対応

EB Libraryはversion 4から遠隔サーバにある辞書へのアクセスが可能になりました。 ebnetとはこの際に使用されるプロトコルです。 サーバ側にはebnetdが必要です。 同様の事はndtpによっても可能ですが、ebnetを使用すればndtpでは対応していない画像、音声等のマルチメディアデータが扱えます。 UNIX環境ではEB Libraryがebnetに対応していればeblookも自動的に対応しますが、Windows環境(厳密にはコンパイル時にDOS_FILE_PATHがdefineされる環境)ではeblookのソースにも変更が必要です。

ndeb-program-arguments, ndeb-process-coding-systemの変更

ndeb-program-argumentsが文字列から文字列のリストに変更になりました。 Windows上のeblook.exeが従来のndeb-program-argumentsの値を一つの引数として受け取るので、このままでは空白を含まない一つのオプションしか指定できない為です。 自動的に追加されていた-qオプションもこの変数で指定するようにしています。 また、ndeb-process-coding-systemもEUCに明示的に設定しています。 これらの値を~/.lookupで変更している場合は注意して下さい。

ndebにおける字下げの対応
変数ndeb-minimum-indentの追加
辞書オプション:minimum-indentの追加

EPWING辞書に含まれる字下げ情報に対応しました。 20070806以降のeblook 1.6.1+mediaが必要です。 字下げ量の指定が辞書オプション:minimum-indentで指定された値を越えた場合に、越えた文字数分の字下げを行います。 指定しない場合は変数ndeb-minimum-indentの値が参照されます。 デフォルトでは1です。 字下げ量の最小値が0である書籍を使用している場合はこれらの値を0にした方が良いかもしれません。

ndebにおける上付き・下付き文字への対応
変数ndeb-default-script-heightの追加
辞書オプション:script-heightの追加

Emacs 21.1以降でEPWING辞書に含まれる上付き・下付き文字情報に対応しました。 文字の大きさは、displayプロパティでheightを設定して変更しています。 設定する値は辞書オプション:script-heightの値が参照されます。 指定されていない場合は変数ndeb-default-script-heightの値が使用されます。 設定できる値に関してはEmacs lispのリファレンスを参照してください。

ndebにおける文字修飾への対応
ndeb-italic-face, ndeb-bold-face, ndeb-emphasis-faceの新設

EPWING辞書に含まれる文字修飾情報に対応しました。 イタリック体・ボールド体については20090219以降のeblook 1.6.1+mediaが必要です。 イタリック体・ボールド体・強調表示について、それぞれndeb-italic-face, ndeb-bold-face, ndeb-emphasis-faceを割り当てます。 表示が気に入らない場合はfaceの設定を変更してください。 手抜き実装のため、入れ子になっている場合は一番内側の指定のみ有効になります 。

ndebにおけるUnicode外字拡張表示への対応

Boookendsで提供される書籍で使用されている、Unicode外字拡張表示に対応しました。 対応するEmacs (23以降、もしくはMULE-UCSが利用可能) とeblook (1.6.1+media-20100515以降) およびEB Library (4.4.3以降) が必要です。

ndebにおける見出し語への文字修飾情報の出力

ndebエージェントでは、見出し語を得るときはeblookの内部変数decorate-modeoffにする為、上付き・下付き・文字修飾といった情報は捨てていましたが捨てないようにしました。

ndebにおけるJIS X 4081 UTF-8 extensionの書籍への対応

eblookが対応していれば、エージェントオプション:codingutf-8を指定する事でJIS X 4081 UTF-8 extensionの書籍も扱えます。

ndebにおける辞書オプション:backward-methods:backward-headingの新設

:backward-methodsに検索方法のリストを指定した場合にはそれらの検索方法で検索して得られたエントリについて、また、:backward-headingに正規表現を指定した場合はそれに見出しがマッチするエントリについて、エントリの位置は項目の途中を指しているとみなして遡って項目全体を表示するように試みます。 20100515以降のeblook 1.6.1+mediaが必要です。 通常は指定する必要はありません。

ndebエージェントにおけるEBWinのUnicode検索置換ファイルの読み込み
変数ndeb-set-alternates-automaticallyの新設

エージェントの場所として指定したディレクトリ (CATALOGもしくはCATALOGSファイルが存在するディレクトリ)にalternate.iniというファイルがあると、Unicode検索置換ファイルとして読み込みます。 この置換は後述の:expanders:normalizersの処理には影響を与えず、該当するエージェントでの全ての検索時に、実際の検索の直前に常に行われます。 おそらくEmacs 21以前では動作しません。 また、完全な動作にはEmacs 23以降が必要です。 内部的には新設された:alternatesオプションを設定しますが、この部分は変更されるかもしれません。

この動作は変数ndeb-set-alternates-automaticallynil、もしくはエージェントオプション:alternatesが設定されている場合は行われません。

ndebエージェントにおけるEBWinの外字定義ファイルの読み込み
変数ndeb-set-gaiji-table-automaticallyの新設

エージェントの場所として指定したディレクトリ (CATALOGもしくはCATALOGSファイルが存在するディレクトリ)に、例えば辞書の実体が存在するSUBDIRというサブディレクトリとsubdir.mapというファイルがあると、subdir.map外字定義ファイルとして読み込みます。 おそらくEmacs 21以前では動作しません。 また、完全な動作にはEmacs 23以降が必要です。 内部的には:gaiji-tableオプションを設定します。

この動作は変数ndeb-set-gaiji-table-automaticallynil、もしくは辞書オプション:gaiji-tableが指定されている場合は行われません。

ndebsエージェントの新設

ndebsエージェントが新しく使用可能になります。 これはndebエージェントのvariantです。 ndebではエージェント一つに対してeblookのプロセスが一つ必要ですが、ndebsでは複数のエージェントで一つのeblookのプロセスを共有して使います。

利点は起動にかかる時間を短縮できる事と、MeadowやNTEmacsのように同時に起動できる子プロセスの数に制限がある場合に、制限に届きにくくなる事です。 逆に、UNIX環境やエージェントの数が少ない場合にはあまりメリットはありません。 加えて、検索時にはndebエージェントよりeblookへのコマンドの発行数が増える為、ndebよりも時間がかかるかもしれません。

設定はほとんどndebエージェントと変わりません。例えば、以下のように設定します。

(setq lookup-search-agents
      '((ndebs "/usr/local/dic/kojien")))

エージェントオプション、辞書オプションについてもndebエージェントと同じものがほとんど使えます。 多くのケースでは~/.lookupに書かれたエージェントや辞書名に使用している"ndeb""ndebs"に書き換えるだけでそのまま使えます。 ただし、ndeb-binary-*等のカスタマイズ変数まで書き換えないように注意して下さい。

ndebエージェントと異なり、辞書のあるディレクトリの指定が誤っていた場合等にエラーにならずに辞書数0のエージェントとなります。 また、ndeb-program-arguments, ndeb-process-coding-systemによる指定は無視され、ndebs-program-arguments, ndebs-process-coding-systemが参照されます。 辞書オプション:codingによる指定も無視されますが、エージェントオプションによる指定は有効です。

変数ndeb-set-coding-automaticallyの新設

この値がnon-nilかつ、ndebsエージェントにおいてエージェントオプション:codingが指定されていない場合、初回アクセス時に自動的にエージェントオプション:codingと (Emacs23以降で、かつ設定されていなければ) :charsetsを設定します。 環境によっては初回アクセス時の速度が目に見えて落ちます。 耐えられない人はnilに変更するか、エージェントオプション:codingを全てのndebsエージェントで設定してください。

ndebs辞書における検索方法の自動設定

ndebs辞書では初期化の際に利用可能な検索方法が設定されます。

ndsrdでワイルドカード検索、正規表現検索に対応

a?ple*の様なパターンで検索できるようになります。

ndsrdで検索語の正規化

正規表現検索以外の場合に空白文字などを検索語から取り除くようにしました。

変数ndsrd-program-argumentの追加

ndsrdエージェントがcsrdを呼び出す際に付加するオプションを文字列のリストで指定できるようになりました。 Meadowからcsrdを呼び出す際に、文字列のコードがEUCだとcsrdにうまく渡されない場合があった為、オプションを指定してシフトJISで呼び出せるようにする為です。

ndspellエージェントにおける候補の並び順の変更

ndspellエージェントが複数の候補を返す際に、ispell等が返すのとは逆の順番に候補を並べていたのを合わせるようにしました。

ndicエージェントにおけるエージェントオプション:codingの有効化

ndicエージェントでSDIC形式の辞書を検索する場合、エージェントオプション:codingによって辞書の文字コードを指定できます。

文字コードの異なる辞書が混在する場合は辞書のディレクトリを分け、複数のエージェントを設定する必要があります。

ndicエージェントにおけるsalook, saryのサポート

ndicエージェントでSDIC形式の辞書を検索する場合、SUFARY (の古い版) に付属するarrayコマンドを利用することで高速に検索が行えますが、salookコマンド及びsaryに付属するsaryコマンドも利用できるようにしました。 array, salook, saryの順番で検索を行い、最初に見つかったコマンドを使用するようになります。 この時、SDIC辞書オブジェクトのstrategyにはそれぞれarray, salook, saryが指定されます。

sdicf.elを改造して実現していますので、SDICに付属するsdicf.elが読み込まれると機能しません。

ndicエージェントにおける、SDIC辞書での検索結果のソート

SDIC辞書をarraysaryで検索した場合、その結果が辞書の登録順にならない (事がある) ので、見出し語を使ってソートするようにしました (saryは検索結果をソートしていました)。 主に英辞郎対策です。

sdicf.elを改造して実現していますので、SDICに附属するsdicf.elが読み込まれると機能しません。

ndicエージェントにおける、SDIC辞書でのcontentの書式の変更
変数ndic-sdic-default-content-formatの追加
ndicエージェントによるSDIC辞書検索時に辞書オプション:content-formatの追加

元々の設定ではSDIC辞書の内容の表示の際に見出しとの間に空行を挟んで4桁インデントされるなど、かなりゆったりとした表示になっていますが、個人的な好みによりもっと詰めて表示するようにしました。 また、変数ndic-sdic-default-content-formatにformat stringを指定することでカスタマイズ可能としました。 以前と同様の表示にするには(setq ndic-sdic-default-content-format "%s\n\n %s\n")と設定してください。 また、辞書オプション:content-formatが設定されている場合はndic-sdic-default-content-formatの代わりに参照されます。

ndictエージェントにおける検索文字列のチェックの廃止

ndictエージェントは検索文字列にASCII以外の文字があると検索しないようになっていますが、困る時があるのでチェックしないようにしました。

ndestエージェントの新設

これは、平林幹雄さんが作成された全文検索システムであるHyper Estraierのインデックスを検索するエージェントです。 まだ実験段階のものですが、分けて管理するのが面倒になったので一緒に入っています。 説明は別ページに分けています。

ndwnjエージェントの新設

これは、日本語WordNetのsqlite3用データベースを検索するエージェントです。 説明は別ページに分けています。

ワイルドカード検索と正規表現検索の分離

ワイルドカード検索(?*を使った検索)は、Lookup本体側で正規表現検索としてクエリーを作り、エージェントに渡していました。 しかし、ndsrdやndeb[s]エージェントでは正規表現に変換する前の文字列を受け取った方が都合がいいのと、正規表現検索の書式はエージェント依存という建前から、ワイルドカード検索を検索メソッドの一つになるように変更しました。 正規表現への変換等が必要な場合はエージェントが行わなければなりません。 ワイルドカード検索が可能な辞書はSelectモードではmethodに"w"と表記されるようになります。 また、ワイルドカード検索のクエリーにlookup-query-methodを行うとシンボルwildが返ってきます。

ターミナル上での外字表示の変更

ターミナル等のビットマップイメージでの外字表示ができない環境において、外字テーブル(辞書オプション:gaiji-table)で指定のない文字は<gaiji=za423>等の文字列がそのまま表示されます。 この改造版では代替文字(デフォルトでは"_")が表示されるようになります。

変数lookup-reference-default-captionの追加

referenceを貼り付ける文字列や、referenceの見出しの文字列が指定されていない場合に使われる文字列です。 本来はエージェント側で対応する事のような気もしますが、このパッチではLookup側で対応しています。

大きなサイズの画像表示に関する変更

インラインでの画像表示の際に、画像のサイズがndeb-max-image-sizeバイトよりも大きいと先頭からndeb-max-image-sizeバイトまで読み込んで表示しようとしますが、危険なので読み込まないようになります。 尚、XEmacs上ではndeb-max-image-sizeの設定はおそらく無視されます。

辞書オプション:normalizersの新設

関数名のシンボルもしくは関数名のシンボルと引数のリストを要素とするリストを指定する事で、検索文字列の正規化をかけることができます。 ここで指定された正規化は検索前に常に行われます。 例えば、特定の辞書に対しては検索をかける前に検索文字列のアルファベットから常にアクセントを取り除くといった事が行えます。

関数は第一引数として文字列を受け取り、文字列のリスト、もしくはnilを返すものが利用できます。 関数は指定された順番に、直前の関数が返した文字列に対して実行されます。 例えばa, b, c三つの関数を指定した時に、元の検索文字列が"0"に対して関数a("1" "2")という結果を返した場合、関数b"1""2"をそれぞれ引数として計2回実行されます。 関数bが返した結果が("1" "2")("2" "3")だったとすると、関数c"1""2""3"を引数として3回実行されます。

検索は最後の関数によって得られる文字列のリスト (複数回実行された場合はLookup側でまとめます) を使って行われます。 ndsrdエージェントでは実際に使用している例があります。

予め用意している関数として以下のものがあります。

lookup-normalizer-strip-chars

検索文字列から指定された文字を取り除きます。 追加の引数で取り除く文字のリスト、もしくは取り除く文字を含んだ文字列を指定します。

lookup-normalizer-japanese-old-to-new
lookup-normalizer-japanese-new-to-old

日本語の旧字を新字に、もしくは新字を旧字にそれぞれ変換します。 変換テーブルはLookup 2.0のものを利用しています。 文字コードutf-8が扱える環境が必要です。

lookup-normalizer-strip-latin-alphabet-accent

アルファベットからアクセント類を取り除きます。 変換テーブルはLookup 2.0のものを利用しています。 文字コードutf-8が扱える環境が必要です。

lookup-normalizer-wrapper

追加の引数に、文字列を受け取り文字列を返す関数名のシンボルを指定するとnormlizerとして利用できます。 更に追加の引数があれば呼び出す関数に渡されます。

辞書オプション:expandersの新設
変数lookup-query-expansion-methodsの新設
辞書オプション:expansion-methodsの新設

辞書オプション:expandersは辞書オプション:expander, :expand-filter, :hiragana, :stemmerを統合・拡張したようなオプションです。 指定された内容に基づき、検索の際に対象の辞書でヒットしなかった場合に新たな検索文字列候補により検索をかけ、結果を取捨選択できます。

具体的にはexpanderとfilter関数のconsを要素とするリストを指定します。 expanderに指定できる内容は:normalizersオプション、もしくはその要素と同様で、関数名のシンボルもしくは関数名のシンボルと引数のリスト、もしくはそれらを要素とするリストです。 expanderに指定できる関数の仕様も:normalizersオプションの要素と同様で、また、従来の:expanderオプションで指定できる関数も指定できます。 filter関数は従来の:expand-filterオプションで指定できる関数をそのまま指定できます。 すなわち、文字列とエントリのリストを取り、エントリのリストを返す関数名のシンボル、もしくはnilが利用できます。 nilの場合は得られた全てのエントリを結果として用います。

指定された順番にexpanderによる検索とfilterによる選別を行い、最初にエントリが得られた時点で検索を打ち切ります。 例えば従来の:hiraganaオプションと:stemmerオプションでstem-english関数を指定した状態と同等にする場合は

(lookup-set-dictionary-option
 "dictionary-id" ':expanders
 '((lookup-kanji-get-readings . lookup-kanji-filter)
   (stem-english . nil)))

のように設定します。

尚、デフォルトの設定ではワイルドカード検索・正規表現検索・全文検索時にはexpander/filterによる拡張検索は行いません。 これは、辞書オプション:expansion-methodsもしくは変数lookup-query-expansion-methodsで設定できます。 いずれの場合も拡張検索を行う検索方法のシンボルのリストを指定します。 勿論辞書オプションの方が優先されます。

辞書オプション:expander, :expand-filterの廃止

上述の様に、辞書オプション:expandersオプションに統合されたので廃止しました。 :hiragana, :stemmerオプションは使用可能です。

変数lookup-expanded-heading-prefixの新設

expander/filterによる拡張検索でヒットしたエントリの見出しの先頭につける文字列を指定します。 文字列は拡張検索をかける前の検索後を引数にしてformat関数にかけ、その結果を表示に用います。 エントリの本来の見出しはその後に続いて表示されます。

辞書オプション:charsetsの新設

キャラクターセットのリストを指定します。 指定されたキャラクターセットのいずれにも存在しない文字を検索文字列が含んでいた場合に検索を試みなくなります。 不要な検索を試みないことで検索時間の短縮を図ることができます。

このオプションはLookup 2.0に実装されたものを移植したもので、Emacs 23以降でのみ有効です。

辞書オプション:codingの拡張

検索文字列が指定された文字コードで正しくエンコードできない場合には検索を試みなくなります。Emacs 23以降で、:charsetsオプションが指定されている場合はこのチェックは行われません。

辞書オプション:reference-regexpの新設

referenceの開始・終了文字列の正規表現のconsを設定する事で、関数lookup-arrange-referenceが辞書オプション:reference-patternに従ってreferenceを検索する際の検索範囲を制限します。 通常、ユーザが直接指定する事はありません。

辞書コマンドsetup-dictionaryの新設

辞書の初期化時にエージェント/辞書に特有の処理を加えることができるようになります。 辞書IDは設定されていますが、辞書のタイトル、拡張検索の検索方法の一覧への追加、外字テーブルの設定等は行われていない段階で設定されたコマンドが呼び出されます。 通常、ユーザーが直接指定する事はありません。

検索語の切り出し、ndkksエージェント、lookup-kanji-get-readings関数の統合

Lookupではテキストからの検索語の切り出し、読みを検索するndkksエージェント、漢字を含む検索語から読みを検索するlookup-kanji-get-readings関数において形態素解析エンジンとしてKAKASIを利用しています。 Lookup 1.4+mediaでは、これらのコードを統合し、また、ChaSenMeCabの様な他の形態素解析エンジンを利用しやすいように変更を加えています。 詳しい変更内容は別ページにて解説します。

キャッシュ機構の新設

外部ファイルに保存することでLookupやEmacs終了後も内容を保持できるキャッシュ機構を導入しました。 EPWING書籍の副本の一覧や、ndicエージェントにおけるディレクトリ中のファイル一覧等、一度設定してしまえばあまり変更されないであろう部分をキャッシュさせることで起動にかかる時間を短縮させるのがねらいです。

デフォルトでは~/.lookup-cacheにキャッシュの内容を保持します。 ファイル名は変数lookup-cache-file-nameで変更できます。 また、キャッシュファイルの文字コードはlookup-cache-file-coding-systemで指定できますが、デフォルト値はEmacs22以前と23以降で異なります。 複数のバージョンのEmacsを併用している場合は自分で設定してください。 例えば以下のような記述を~/.lookupに追加します。

(setq lookup-cache-file-coding-system 'emacs-mule-unix)

lookup-enable-cachenilにするとキャッシュは無効になりますが、キャッシュデータの収集と保存は行われます。

キャッシュの内容と実際の状態に不整合が生じた場合はキャッシュをクリアしてください。 Lookupを起動した事があるEmacsを全て終了させた状態でキャッシュファイル(デフォルトでは~/.lookup-cache)を削除するか、M-x lookup-cache-clearM-x lookup-cache-saveを実行してEmacsを終了すればクリアできます。

現在キャッシュしている内容は以下の通りです。

ndebエージェント

各エージェントにおけるUnicode検索置換ファイルの解析結果。各辞書における外字定義ファイルの解析結果。

ndebsエージェント

ndebエージェントと同じもの。

加えて、各エージェントにおける書籍の一覧。各辞書におけるメニューの有無・利用可能な外字サイズの一覧・利用可能な検索方法の一覧。

ndicエージェント

各エージェントにおけるファイル名の一覧。dictd形式の辞書における(インデックスではない)辞書ファイル名。

ndictエージェント

サーバーのプログラム名と辞書の一覧。

補助パッケージの自動読み込み

Lookupには個々のエージェントや辞書の細かな調整を行うために補助パッケージという仕組みが存在しています。 通常、補助パッケージの利用は~/.lookup等でlookup-use-package関数を使用して明示的に読み込む必要がありますが、ndeb, ndebs, ndic, ndsrdエージェントで、辞書の場所として指定されたディレクトリに特定の名前の補助パッケージを置くことで自動的に読み込むようになります。

デフォルトでは例えば/path/to/DIRECTORYというディレクトリが指定されているエージェントでは/path/to/DIRECTORY/directory-pkg.elというファイルがあれば補助パッケージとして読み込まれます。 読み込みはエージェントのセットアップの際に行われ、~/.lookup等で同一のエージェントに対して別の補助パッケージを指定している場合も設定を上書きします。 -pkgの部分はlookup-package-autoload-suffixで文字列を指定できます。

また、この機能は変数lookup-enable-package-autoloadnilにするかエージェントオプション:package-autoloadを負数にすると無効になります。

ドキュメントの更新、info形式のファイルの削除

texi/lookup.texitexi/lookup-guide.texiを更新しました。 元が古いこともあって、現状にそぐわない点とか表現の統一が取れてない点とかまだまだあると思います。 修正・追記案等あればお知らせ下さい。

また、Lookupのパッケージにはinfo形式のファイルが同梱されています。 私の記憶によれば、これはインストール時に非NT系のWindows OS上のMule for Windowsでtexi形式のファイルからinfo形式のファイルが作成できない(と私が言った)為です。 しかし、Lookup 1.4からはemacs 19以前はサポート外という事になっているので、info形式のファイルはパッケージから外しました。 インストール時には Emacs を使って自動的に生成します。

バージョン番号の変更

バージョン番号は1.4から1.4+media-yyyymmddに変更されます。 splash画面、関数lookup-version、変数lookup-versionで確認できます。

修正される不具合

ndeb[s]エージェントでのの改行処理

ndeb, ndebsエージェントでのcontentの表示の際にlookup-arrange-fill-linesでの改行処理がうまくいかずに折り返しが生じることがあります。 不完全ですが応急的に対処しました。

eblookの起動

eblookを起動した際にエラーがあった場合にlookup-debug-modeの値によって挙動が異なります。 また、Windows環境ではeblookの文字コードの指定に不具合があります。

ndkksと:hiraganaオプション

MS WindowsやOS/2環境においてはkakasiを-uオプション付きで起動させないとうまく機能しません。

ndspellにおける異常動作

ndspellが返す候補を再検索した際に一つもマッチしなかった場合に動作がおかしくなります。 マッチしなかった場合は、ndspell自身がentryを一つ返すようにしました。

ndtpでの外字表示

詳細はMeadowのチケットを参照して下さい。 Meadowで、xbmの先頭に空行があると画像が正しく表示されないというものです。 meadow-users-jp MLではImageMagickの問題の可能性が高いとの事だったのであまり積極的に対応するつもりはありませんでしたが、現在のパッチでは修正されているはずです。 ただし、ndtpを使用していないので確認はしていません。

外字によるreferenceの分断

referenceの文字列内に外字があるとreferenceが分断されます。 Entryモードでこのようなreferenceがあるentry上でLを押すと分断されたreferenceに応じて多数のreferenceがentryに並びます。

外字の色

画像による外字表示の際に常に白黒(正確にはdefaultというfaceの色)で表示され、テキストの色が反映されません。 ちなみに、bitmap-muleを使用した場合や、NTEmacsではパッチをあてなくても反映されます。 また、XEmacsやUNIX系OSで動いているEmacsではどうなっているのかは知りません。 尚、変更部分はXEmacsとEmacsではほぼ独立した実装になっており、XEmacsに関しては触っていないので従来通りになります。

連続する外字の表示

同じ外字が連続する場合に1つしか表示されません。

文字等を含まないreference

ndebエージェントで、referenceの開始タグと終了タグの間に何も含まれない場合にreferenceが生成されません。 EPWINGの書籍で、メニューからreferenceをたどると該当するreferenceを認める事があるようです。

外部プログラムの起動

一部の環境で画像表示や音声再生時に外部プログラムを起動しようとすると、下記のようなエラーがでて、外部プログラムの起動に失敗します。

(wrong-type-argument listp :directory-separator)

エラーが確認できたのはEmacs 21.4と、それをベースにしたMeadowです。 property listが余分な要素を含まない完全な形である事を想定しているようです。

splashの表示

bitmap-muleとMule-UCSを併用している場合にsplashが正しく表示されません。 このパッチではlookup-ja MLに投稿された水戸さんが書かれた修正を取り込んでいます。 また、NTEmacsでsplashの表示ができないバグも修正しています。こっちは例外処理を入れただけです。

インタラクティブなインストール時の不具合

Lookupには、インストールの手段の一つとして、Emacsを起動し、diredからinstall.elLで実行してインストールするという方法があります。 しかし、画像表示が可能な状態のEmacsでこの操作を行うと、ファイルのコピーは終了するものの途中でエラーになってしまいます。

message関数呼び出し時の不具合

message関数の呼び出し時に表示させたい文字列をformat-stringとして与えている部分がありますが、明らかに問題のない部分を除いてformat-stringを指定するように変更しました。

この変更をしない場合、例えばモジュール名に'%'を含むモジュールにlookup-module-forwardlookup-module-backwardで切り替えた時にエラーになります。

splash表示後の不具合

Lookupを起動させた時のbufferによってはsplash表示後に元のbufferに戻らない事があります。 lookup-pattern関数等によって初回起動した際にこの現象が起きると、コマンド実行時とは異なるbufferから単語をピックアップしてしまいます。

adjust関数実行後のポイント位置に関する不具合

contentの整形にadjust関数を使用している場合、最後のadjust関数を抜けた際のpointが見えるようにContentバッファは表示されます。 しかし、Contentバッファが予め表示されていた場合には常にバッファの先頭が表示されてしまいます。

著作権情報表示の不具合

Lookupの初回起動直後に、著作権情報の表示に対応した辞書に対してその表示を行おうとするとエラーになります。

補助パッケージを絶対パスで指定する際の不具合

補助パッケージを読み込む際に、lookup-package-directory以外の場所から絶対パスを指定されると、lookup-package-file-directoryの値が不適切なものとなり、特に複数ファイルから成る補助パッケージが正しく動作しません。

eblook 1.6.1+media

eblookに音声・動画タグを出させるようにした改造版です。 動画対応は白井さんから提供頂いたパッチによるものです。 Lookup 1.4+mediaで使用して下さい。 EB Libraryは4.2.2以上 (2010/05/19現在での最新は4.4.3です) を使用して下さい。

for your download

eblook-1.6.1+media-20130919.tar.gz

eblook-1.6.1+media-20130919-ebu-4.4.3-20130920.exe Win32用のバイナリです。EB Library with UTF-8 supportと静的にリンクしています。 IPv6に対応しています。 IPv6に未対応の環境 (Windows 2000等) でも実行できるはずです (IPv6が使えるという意味ではありません)。

eblook-1.6.1+media-20130919-ebu-4.4.3-20130920-win64.exe Win64用のバイナリです。EB Library with UTF-8 supportと静的にリンクしています。 IPv6に対応しています。 あんまり真面目にチェックしていないので、おかしかったらお知らせください。

アーカイブの使い方

インストールは通常のeblookと同様の手順で行って下さい。 (特に32ビット環境では)off_tの大きさがEB Libraryと一致するように注意してください。

追加される機能、従来からの変更

音声リンクの生成、音声データをダンプするコマンドの新設

EPWINGの音声データへのリンクが生成されます。 media patchをあてたLookupで使用する事でLookup上で音声データへのリンクが生成されるようになります。 これに伴い、音声データをダンプするコマンド"wave"および"wav"が新設されます。 両者はコマンド名以外は同一のものです。

動画リンクの生成、動画データをダンプするコマンドの新設

音声データと同様にEPWINGの動画データへのリンクが生成されます。 これに伴い、動画データをダンプするコマンド"mpeg"および"mpe"が新設されます。 両者はコマンド名以外は同一のものです。

動画データのファイルパスを表示するコマンドの新設

EPWINGでは、動画データはHONMONファイル等に収録されるのではなく、単一のファイルとしてファイルシステム上に存在します。 この、特定の動画に対応するファイル名を表示させるコマンド"mpeg_path"が新設されます。

図版メニューを表示するコマンドの新設、イメージマップへのリンクの生成

EPWINGの広辞苑第五版などに含まれる図版メニューに対応しました。 対応するEB Library (4.3以上)とリンクする事で図版メニューを表示するコマンドimage_menuコマンドが新設されます。 また、イメージマップに関して、従来はリンクは表示されるもののリンク先が表示できない状態でしたが正しく表示するようになりました。

inlineタグの新設

インライン画像に関してはimgタグではなく、inlineタグを出力するようになります。

indタグの新設

書籍に含まれる字下げ情報を出力するようにしました。 字下げ量が10以上の場合はすべて9として出力します。 また、内部変数decorate-modeonになっていないと出力されません。

fontタグの新設

書籍に含まれる文字修飾情報を出力するようにしました。 内部変数decorate-modeonになっていないと出力されません。

テキストのエスケープ処理の提供

内部変数escape-texttrueになっていると、テキストに含まれる&, <, >&amp;, &lt;, &gt;と出力するようになります。

16色RLE圧縮なBMPデータの展開

bmp2ppmおよびbmp2tiffコマンドにおいて、16色RLE圧縮なBMPデータからの出力に対応しました。 実際にそのようなBMPデータが含まれているEPWINGの辞書は知りません。 ただし、FreePWINGではそのようなデータを含む辞書の作成は可能です。 (EBStudioでも可能だと思いますが確認はしていません。) また、従来のBMPの展開ルーチンはBMPヘッダに含まれているファイルサイズの情報を参照していましたが、参照しないように変更しました。 ヘッダの情報が正しくない場合もそれなりにある(らしい)為です。

検索文字列の判定方法の変更

searchコマンドで入力した文字列について、従来は 先頭が"="あるいは":"の場合は変数search-methodの値によらず条件検索または複合検索が実行されていました。 この為、条件検索や複合検索のインデックスを持った辞書では"="あるいは":"で始まる項目が検索できなくなっていました。 これを回避する為、search-methodが設定されている場合はその内容に従った検索が実行されるようにしました。

また、変数search-methodkeywordと設定すると条件検索が、multiと設定すると複合検索が選択されるようになりました。 ただし、これらの検索はsearch-methodをunsetするだけで自動選択されます。

クロス検索に対応

クロス検索に対応しました。 検索方法は条件検索とほぼ同様ですが、単語の区切りに"="ではなく"&"を使用します。 明示的に検索方法を指定するにはsearch-methodcrossに設定して下さい。

ワイルドカード検索に対応

限定的ですがワイルドカード検索を可能にしました。 前方一致検索用の表記インデックスを持つ、EBGやEBXA-Cではない、テキストがJIS X 0208で収録されいてる辞書でワイルドカード検索が可能になります。 無条件にインデックス全体から検索を試みるので検索には時間がかかります。 また、かなインデックスは見ないので、かなインデックスにしかない項目はヒットしません。

今のところ、ワイルドカード検索の実行には変数search-methodwildを指定しておく必要があります。

EB Library with UTF-8 supportへの対応

subinfoコマンドでの表示にutf-8のケースを入れただけですが、一応対応しました。

オプション-iおよび--non-interactiveの追加

Lookupからeblookを利用する場合は、GNU readlineとリンクしたバイナリであってもreadlineの機能は利用しないようになっています。 しかし、実際にはLookupから利用していてもreadlineの機能が有効になることがあります。 その為、明示的に機能を利用しないようにするオプションを新設しました。 Lookup 1.4+mediaでは、デフォルトでこのオプションを使用します。

contentコマンドの拡張

contentコマンドで指定するentryの先頭に'-'を付加すると、entryの位置は項目の途中であるとみなし、項目の先頭から表示するように試みます。

バージョン番号の変更

バージョン番号は1.6.1から1.6.1+media-yyyymmddに変更されます。 オプション--versionで確認できます。

修正される不具合

Windows環境におけるebnet対応

コンパイル時にDOS_FILE_PATHがdefineされる環境ではEB Libraryがebnetに対応していてもebnet経由でのアクセスができません。

appendixの解除

コマンドライン引数やbookコマンドでappendixを指定すると二度とappendixが選択されていない状態にできません。 このパッチではbookコマンドでappendixを指定しなかった時にappendixの設定を解除するようになります。

一部の環境で正常動作しない

strcpy関数の使い方が間違っている為に、一部の環境で正しく動作しません。 参照先に倣ってmemmoveを使用するように変更しています。

修正されない不具合

cygwin環境におけるebnet対応

(2008/07/19 時点ではcygwin側で対策されているようで、この不具合は再現しません。)

cygwin環境では(おそらく)select関数に不備があり、cygwin用にビルドしたEB Libraryはebnetクライアントの機能が正常動作しません。 この為、cygwin環境でビルドしたeblookもebnetに対応できません。 このページにあるeblookのバイナリはcygwin環境で動作するものではないのでこの不具合の影響は受けません。

Readline, iconvサポート時の異常動作

Linux環境でReadlineあるいはiconvサポートを有効にしたeblookでEBGの書籍がひけない(eblookのプロセスが落ちる)という報告がされています。 筆者が確認できるNetBSDの環境ではReadlineサポートを有効にすると、iso-8859-1に含まれるウムラウトつきアルファベット等を入力(EBGの書籍を利用する場合には起こりうる状態です)すると動作がおかしくなるようでした。 このページにあるバイナリはどちらも無効になっているので影響は受けません。

ndsrd-pkg

ndsrdエージェントでビットマップによる外字表示を可能にするパッケージです。 使用にはLookup 1.4+mediaが必要です。 このパッケージに含まれる外字データはかずひこさんが公開されているsrd-fpwからほとんどそのまま流用させて頂いています。

for your download

ndsrd-pkg-20100824.tar.gz

パッケージのインストール、設定

アーカイブに含まれるndsrd-pkg.elと、ndsrd-gaijiディレクトリ以下のファイルを、ディレクトリ構造を保持したままlookup-package-directoryで指定された(した)ディレクトリにコピーして下さい。 それから~/.lookupを変更し、ndsrdの:fmtオプションと:gaiオプションを指定しないようにして下さい。 最後に、~/.lookupに以下のような記述を追加します。

(lookup-use-package "ndsrd+srd" "ndsrd-pkg")

インストール後は今まで通りにLookupを使用して下さい。

追加される機能

ビットマップによる外字表示

ndebやndtpエージェントで外字が表示される環境ではビットマップで外字が表示されるようになります。 以下はHero's formulaの項目を表示した例です。 発音記号の一部、公式の根号を含んだ部分、1/2がビットマップで表示されています。

ビットマップで外字が表示された項目の例

face, インデントの設定

標準の状態に比べてfaceの割り当てやインデントの設定を積極的に行うようになります。 Lookup 1.4+mediaを2006/9/2以降のものにしないとインデントのせいで余計に見苦しくなるかもしれません。

Tips

辞書のグループ化

Lookupのマニュアル(texi/lookup.texi)には辞書のグループ化ができると書かれていますがその具体的な方法については書かれていません。 せっかくなのでこのページで紹介しておきます。 まず、lookup-search-agentsの設定を行っておいて下さい。

Lookupではグループ化された辞書のグループの事をモジュールと呼んでいます。 このモジュールを利用するには、~/.lookuplookup-search-modulesを設定します。 lookup-search-modulesは、モジュール名と使用する辞書のリストを要素としたリストです。 使用する辞書については、辞書名の最初の一部分だけを記入する事で、同じエージェントの辞書などの複数の辞書を一度に指定することができます。 一例として以下のように書きます。

(setq lookup-search-modules
    '(("english" 
       "ndtp+localhost:GENIUS/GENIUS"
       "ndtp+localhost:PLUS/PLUS"
       "ndtp+localhost:CHUJITEN/CHUJITEN"
       "ndsrd+/arc/eb/srd:srd"
       "ndict+localhost"
       )
      ("japanese" 
       "ndtp+localhost:DAIJIRIN/DGX01" 
       "ndtp+localhost:KOUJIEN/KOUJIEN"
       )
      ("all"           
       "ndsrd+/arc/eb/srd:srd"
       "ndtp+localhost"
       "ndict+localhost")
      ))

上記の例では3つのモジュールが作られます。 1つ目のモジュール"english"ではndtpエージェントを利用した3冊の辞書と、ndsrdエージェントを利用した辞書が1冊、localhostに接続した ndictエージェント(辞書は複数冊含まれるかもしれません)を使用します。 2つ目のモジュール"japanese"では別の ndtpエージェントを利用した2冊の辞書を使用します。 最後の、モジュール"all"では ndsrdエージェントと、localhost に接続したndtpエージェントとndictエージェントを利用した辞書全てを使用します。

Lookupの起動時には最初に設定されているモジュール(上記の例では"english")が使用されます。 モジュールの切り替えは SelectモードかEntryモードで、M-f, M-bで行うことができます。

特定のモジュールで検索するコマンド

通常の検索コマンドに対してC-uを最初に入力する事で検索に使用するモジュールを入力することができます。また、

(defun lookup-pattern-module-english ()
  (interactive)
  (lookup-pattern (lookup-input-pattern) (lookup-get-module "english")))
(global-set-key "\C-cle" 'lookup-pattern-module-english)

または、

(global-set-key "\C-cle"
  '(lambda ()
     (interactive)
     (lookup-pattern (lookup-input-pattern) (lookup-get-module "english"))))

の様な内容を~/.emacsに書いておくとC-c l eでモジュール"english"を使った検索が行えるようになります。

条件検索と複合検索

(この項目は20070120以降のeblook 1.6.1+mediaを使用した場合には当てはまらなくなりました。)

EPWINGの辞書には条件検索や複合検索が可能な辞書があります。 Lookupでは特別な対応をしていませんがeblookでは対応している為、完全一致検索において検索方法を指定する文字を含んだ検索文字列を入力する事でこれらの検索を実行できます。 ただし、複合検索に関しては現在のところ限定的です。 例えば広辞苑第五版では

=犬=猫

のように、"=キーワード1=キーワード2..."という形式の検索語を指定する事で条件検索が可能です。また、

:日本:18世紀:文化

のように、":キーワード1:キーワード2..."という形式の検索語を指定する事で複合検索が可能です。

複合検索の制限として、キーワードは予めeblookのcandidateコマンド等で調べておく必要があります。 加えて、外字を含むキーワードは指定できず、検索は複合検索IDが1の複合検索でしか実行できません。 また、複合検索においてはキーワードに"*"を指定する事ができますが、その際には

':日本:*:文化'

のように検索文字列全体を"'"でクォートし、Lookupに対しては完全一致検索を行うように明示的に指示する必要があります。 複合検索に関する用語等についてはeblookのドキュメントを参照して下さい。

UTF-8な外字を使う

Lookupでは、補助パッケージを用意したり辞書オプション:gaiji-tableを設定する事で外字をテキストへの置き換える事ができます。 簡単に書いておくと(詳細はLookupのマニュアルを参照して下さい)、

(defconst kojien-gaiji-table
 (lookup-new-gaiji-table
 '((code1 glyph1 [alternate1])
   (code2 glyph2 [alternate2])
   ...)))

(lookup-set-dictionary-option "ndebs+kojien:kojien"
                              ':gaiji-table kojien-gaiji-table)

のようにして外字テーブルを定義し、辞書オプションとして指定します。 外字テーブルのcodeは外字を一意に決定するコードを文字列で指定します。 ndeb[s]エージェントでは"ha138"等のようになります。 具体的な値はeblookで項目を表示させた時や、Lookupからcontentを表示した状態でフォーマットを解除('t')すれば確認できます。 また、全てを一気に確認する場合はebfontを使用すると便利です。 この場合は、フォントのファイル名に半角外字では"h"、全角外字では"z"を先頭につけたものが外字コードに相当します。 glyphは実際に表示に使う文字を文字列で指定します。 alternateは代替文字で、省略可能です。

ndeb[s]エージェントで使用できるappendixによる置き換えとは異なり、置き換え先はemacsが文字として認識できるものが使えます。 ですので、UTF-8が扱えるemacsでは当然UTF-8な文字への置き換えが可能です。 UTF-8な外字テーブルはEBPocketコトノコebmini等で使用されており、機械的に変換する事でLookupからも使用することができます。 Lookup 1.4+media では所定の位置にあるEBWin/EBPocketの外字定義ファイルを自動的に読み込みます。

代替文字のみの設定(外字テーブルの)

前項では外字テーブルの定義の際はglyphを指定しalternateを省略可能と書きましたが、実際にはglyphを省略(nilにする)しalternateのみ設定する事も可能です。 この場合はビットマップイメージな外字が表示可能であれば表示し、できない場合はalternateの文字列を表示します。 ちなみにndsrd-pkgでは実際にそのような定義を使用しています。

音声データのない辞書で英単語の発音を聞く

Lookup sound extenderのページを参照して下さい。

更新履歴

2013/09/21 eblookを更新。 Windows環境でbookコマンドを使った場合にebnet辞書を指定できないのを修正した。

2013/09/03 Lookupを更新。 Lookup側のsalookサポートを入れ損ねていたのを修正した。

2013/09/01 Lookupを更新。 salookによるSDIC辞書の検索に対応した。 SDIC辞書での検索結果のソートはSDIC側で行うようにした。 2013/07/04のlisp/ndebs.elの変更でエンバグしていたのを修正した。

2013/08/29 Lookupを更新。 Emacs21以前でバイトコンパイルが通らなくしてしまっていたのを修正した。 SDIC辞書での検索結果をソートするようにした。 SDIC辞書のcontentの書式を変更した。 以前と同様にするには(setq ndic-sdic-default-content-format "%s\n\n %s\n")とすること。

2013/07/15 Lookupを更新。 ndestエージェントを更新した。

2013/07/11 Lookupを更新。 ndebsエージェントで、UNIX環境などでもディレクトリ名にASCII以外の文字も指定できる様にした。 ndestエージェントを更新した。 ndwnjエージェントを更新した。

2013/06/23 Lookupを更新。 ファイルの文字コードを明記した。 ndeb[s]エージェントで、モノクロ画像が文字の色に影響を受けないようにした。

2013/05/01 Lookupを更新。 ndestエージェントを更新した。 細かいリファクタリングなど。

2013/01/07 Lookupを更新。 Emacs 24.2で初回検索時などに、ヒットした最初の項目の内容が自動で表示されないのを修正した。

2012/11/22 Lookupを更新。 ndestエージェントを更新した。

2012/06/11 Lookupを更新。 CygwinからWindows nativeなEmacs23を使ってinstall.elを実行すると、大抵の場合はinfoファイルの作成に失敗するのを修正した。 Unicode外字拡張表示に対応した。 ndestエージェントを更新した。 キャッシュの保存に時間がかかりすぎるのを修正した。

2011/12/27 eblookのバイナリを更新。 SJISでの入出力をできなくしてしまっていたのを修正した。 64ビット用のバイナリも公開した。

2011/08/01 eblookを更新。 EB Library with UTF-8 supportの変更に追従した。 バイナリは機能的な変更は無いので未更新。

2011/06/28 Lookupを更新。 expanderとnormalizerの適用順位を変更した。 内部動作を一部変更した。 未サポートな環境向けのコードをより積極的に削った。 old style backquotesをなくした。 拡張検索でヒットしたエントリの見出しの一部をカスタマイズできるようにした。

2011/02/12 Lookupを更新。 並列makeが正しく動作しないのを修正した。上野さんありがとうございます。 一部内部動作を変更した。 ndeb[s]で、EBWinの外字定義ファイルUnicode検索置換ファイルを読み込めるようにした。 キャッシュファイルのデフォルトの名前にtypoがあったのを直した。

2010/10/30 eblookを更新。 contentコマンドの拡張部分が正しく動作しない時があるのを修正した (のを取込み忘れていたのを修正した)。 バイナリのビルドをMinGW + MSYSで行うようにした。 20100818と20100814のバイナリは何故か前項目の表示がおかしいのも直った。

2010/10/13 Lookupを更新。 NTEmacsで外字の前景色と背景色が入れ換わるのを回避するようにした。 同じ外字が連続して存在する時に一つしか表示されないのを修正した。

2010/08/25 ndsrd-pkgを更新。 lookup-package-directory以外のディレクトリにあると正しく動作しないのを修正した。 ビットマップイメージがxbmとして正しくないものが多数含まれているのを修正した。

2010/08/25 Lookupを更新。 SDIC形式の検索に特別な設定をせずにsaryを利用できるようにした。 複数のファイルから成る補助パッケージを、絶対パスを指定して使用するとエラーになるのを修正した。 補助パッケージを自動的に読み込めるようにした。

2010/08/25 eblookを更新。 文字コード変換まわりのバグの元になりそうなコードを修正した。

2010/07/04 Lookupを更新。 辞書の初期化時にエージェント毎に特有の処理が行えるようにした。 ndebsエージェントで利用可能な検索方法をチェックするようにした。 ndictエージェントで検索文字のキャラクターセットをチェックしないようにした。

2010/07/04 Lookupを更新。 NTEmacs23でsplashが表示されないバグを修正した。 キャッシュ機構を新設した。 ~/.lookup-cacheを使うので同名のファイルがある場合は退避させること。

2010/05/22 Lookupを更新。 ndeb[s]エージェントで辞書オプション:backward-methods:backward-headingが新設された。 最後のadjust関数終了後に意図した位置にpointが移動しない事があるのを修正した。 ドキュメントを更新した。 eblookを更新。 contentコマンドを拡張した。

2010/04/03 Lookupを更新。 2009/09/15 にエンバグし、KAKASIによる検索語の切り出しが行われなくなっていたのを修正した。normalizerとexpanderのキャッシュが効いていなかったのを修正した。漢字を含む文字列の判定に文字のカテゴリを使用するようにした。検索語の切り出し、ひらがなへの変換、ndkksエージェントに使用する外部プログラムをChaSen, KAKASI, MeCabから選択できるようにした (詳細は別ページにて)。

2010/02/27 eblookを更新。 strcpy関数の使い方が間違っているのを修正した。 バイナリは影響を受けないので未更新。

2010/01/21 eblookのバイナリを更新。 EB Library with UTF-8 supportの更新に追従した。

2009/11/08 Lookupを更新。 ndwnjエージェントを更新した。 古いeblook 1.6.1+mediaへの対応をやめた。 expanderでひっかけた項目を通常の検索で表示させると、見出し語がexpanderでひっかけた時と同様に表示されてしまうのを修正した。

2009/09/15 Lookupを更新。 ndwnjエージェントを追加した。

2009/09/15 Lookupを更新。 Emacs19用のコードとファイル (の一部) を取り除いた。

2009/09/15 Lookupを更新。 検索語の正規化が行なえるようにした (:normalizersオプション)。 検索語にマッチしなかった場合の拡張検索を拡張した (:expandersオプション)。 なるべく不要な検索を行なわなくて済むようにできるようにした (:codingオプション、:charsetsオプション)。 ndebsエージェントで文字コードを自動で設定できるようにした。 ndebsエージェントで初回アクセスがあまりに遅い場合は:codingを設定するかndeb-set-coding-automaticallynilにすること。

2009/07/24 Lookupを更新。 ndebエージェントでもJIS X 4081 UTF-8 extensionの書籍を扱えるようにした。

2009/07/09 eblookを更新。 24ビットBMPを他形式に変換する際の動作がおかしいのを修正した。

2009/05/27 eblookを更新。 JIS X 4081 UTF-8 extensionのテキストを出力する際に不正な文字列を出力することがあるのを修正した。

2009/04/21 パッチを更新。 ndebsエージェントでJIS X 4081 UTF-8 extensionの書籍を扱えるようにした。 eblookを更新。 EB Library with UTF-8 supportをサポートするようにした。 eblook のバイナリを更新。 EB Library with UTF-8 supportとリンクするようにした。

2009/03/16 eblookのバイナリを更新。 EB Library 4.4.1とリンクするようにした。

2009/03/03 パッチを更新。 文字修飾情報に対応した。 上付/下付き文字の大きさをカスタマイズできるようにした。 eblookが出力するタグと地のテキストの区別がつくように、テキストの&, <, >&amp;, &lt;, &gt;と出力できるようにした。 eblookのバイナリをEB Library 4.4とリンクするようにした。 eblookへのパッチでの提供をやめてアーカイブで公開するようにした。 IPv6に未対応の環境でも動作する、IPv6に対応した環境ではIPv6に対応したバイナリを作成できるようになったのでバイナリは1種類のみ公開するようにした。

2008/12/23 パッチを更新。 ndeb[s]エージェントで、上付き・下付き文字が入れ子になっている場合に表示が乱れていたのを修正し、外側のタグのみ有効になるようにした。 ndsrdエージェントで重複エントリを検索結果から排除するようにした。

2008/11/15 パッチを更新。 ndeb[s]エージェントで上付き・下付き文字情報に対応した。 typoを修正した。

2008/09/27 パッチを更新。 ndicエージェントで辞書がSDIC形式である場合に、文字コードを指定できるようにした。

2008/07/31 パッチを更新。 ndsrdエージェントで、検索文字列に簡単な正規化をかけるようにした。 ndestエージェントを更新した。

2008/05/17 EB LibraryをIPv6対応でビルドできるようになったので、eb.dllとリンクするeblookのバイナリの公開をやめた。

2008/03/21 eblookの、Readlineあるいはiconvリンク時における異常動作について記載した。

2008/03/21 パッチを更新。 白井さんからパッチを頂く。 参照先一覧を表示 (lookup-entry-list-references) した時に重複するものは表示しないようにした。

2008/03/21 パッチを更新。 eblookの起動時オプションのデフォルトに-iを追加した。 ndebsエージェントでエージェントオプション:codingを使用可能にした。 これにより、ndebsエージェントでndebエージェントと同様にEPWINGとEBGの辞書の混在が可能になった (はず)。

2008/03/02 EB Libraryのバージョンアップに伴い、eblookのバイナリと記述の一部を更新した。

2008/03/02 パッチを更新。 初回起動直後に著作権情報の表示 (lookup-select-copyright) を行うとエラーになるのを修正した。

2008/02/01 パッチを更新。 2008/01/19にエンバグし、MeadowのMCI機能による音声再生後に一時ファイルを削除しなくなっていたのを修正した。

2008/01/19 パッチを更新。 外部プロセスを呼び出してマルチメディアデータを再生する辺りがごちゃごちゃになってきたので一部書き換えた。 ndeb-binary-programsに指定できる関数の仕様が変わったので、自作している人は要注意。

2008/01/19 パッチを更新。 買ってないけど広辞苑第六版対策に、動画再生時に一時ファイルを作成せずに再生させられるようにした。 41MBってなんだー。

2007/11/11 パッチを更新。 パーミッションが (また) おかしくなっていたのを修正した。 ndic.elに余分な文字が入っていたのを取り除いた。 いずれも白井さんからの御指摘。

2007/10/08 パッチを更新。 (多分) 2006/06/21にエンバグし、外字テーブルでglyphとalternateの両方を指定していると表示が乱れるようになっていたのを修正した。

2007/10/04 パッチを更新。 message関数の呼び出し方法が適切でない部分を一部修正した。 splash表示後に元のbufferに戻らないことがあるのを修正した。

2007/09/14 パッチを更新。 8/6にエンバグし、一部の画像が表示されなくなっていたのを修正した。 ndeb[s]で、マルチメディアデータ再生時に無限ループに入ることがあったのを修正した。

2007/08/29 掲示板を復活させた。

2007/08/06 パッチを更新。 ndeb[s]エージェントで字下げに対応した。

2007/07/10 パッチを更新。 画像表示可能な状態のEmacs上で、インタラクティブにinstall.elを実行した際にエラーになるのを修正した。

2007/06/12 eblookのパッチを更新。 明示的にreadlineを無効化できるようにした。

2007/05/29 パッチを更新。 BSD makeでmakeできるようにした (つもり)。

2007/05/21 パッチを更新。 texi/以下を更新した。 したけどまだ追いついていない。 info形式のファイルの同梱をやめた。

2007/05/05 いつの間にか掲示板が消えていたのでリンクを外した。

2007/04/24 パッチを更新。 ndestエージェントを更新した。

2007/04/21 パッチを更新。 ndestエージェントを更新した。 それからコードの細かい変更が少しあり。

2007/04/16 パッチを更新。 ndeb[s]で要求した大きな外字が存在しない場合にエラーにならずに16ドットの外字を取得するようにした。 MyPaedia Toolkit + EBStudioで変換した辞書の大きな外字が、16ドットの外字より文字が少ない事に対する対策。 ndestエージェントを更新した。

2007/03/20 パッチを更新。 ndestエージェントを更新した。

2007/03/14 パッチを更新。 ndestエージェントを追加した。 ドキュメントは別ページ

2007/03/05 eblookのパッチを更新。 ワイルドカード検索時に検索文字列をある程度正規化するようにした。 一部動作未確認。

2007/02/19 ndspellにおいて、候補を後ろから順番に並べていたのを変更。 ndspellの候補を再検索した際に、一つもマッチないと動作がおかしくなるのを修正した。

2007/02/18 EBNETD cygwin patch を別ページに移動した。

2007/02/06 パッチを更新。 ワイルドカードから正規表現への変換に失敗するパターンがあったので修正した。 dictdの辞書を利用したndicエージェントではクエリーから正規表現への変換は完全にエージェント側で行うようにした。

2007/02/05 パッチを更新。 Lookup 1.4.1になされたセキュリティ修正を取り込んだ。 ワイルドカード検索と正規表現検索を分離した。 eblookでワイルドカード検索を可能にし、Lookup側も対応させた。

2007/02/05 冒頭部分にLookup 1.4.1に関する記述を追加した。

2007/01/29 eblookのパッチを更新。 ndebsエージェントで、appendixが有るエージェントと無いエージェントが混在していると動作がおかしくなるのを修正した。

2007/01/24 ndeb[s]エージェントで条件検索やクロス検索によるキーワード検索を可能にした。 複合検索はできないまま。

2007/01/24 eblookのパッチを更新。 search-methodを指定しても条件検索や複合検索が優先的に行われるのはバグのような気がするので変更した。 結果としてTipsにあるような方法では条件検索や複合検索が行えなくなった。 クロス検索に対応した。

2007/01/24 パッチを更新。 ndeb[s]エージェントで大きな外字を使用できるようにした。

2007/01/18 Lookup sound extenderのページを作ったのでリンクをはった。

2007/01/11 外字に関するTipsを追加した。 既に実行している人はそれなりにいそうな気もするが。

2007/01/08 パッチを更新。 Entryモードからいろいろ再生する時にcontentの先頭にあるリンクを見つけられないのを修正した。図版メニューの画像とか。

2006/12/15 パッチを更新。 図版メニューの対応コードの一部がndeb専用になっていたのを修正した。 一部のアレンジ関数に入っている必要ではないコードを外した。

2006/12/13 EB Library 4.3をリンクしたeblookのバイナリを更新。 ebnetが有効になった。

2006/12/12 eblookのパッチを更新。 イメージマップや参照先表示だけのときは前項目次項目の表示を行わないようにした。 16色RLE圧縮なBMPの展開に対応した。 展開ルーチンは結局ほとんど書き換えになったのでエンバグしているかも。 ちなみにWindows版のランダムハウス英語辞典には16色RLEかつヘッダの情報がおかしいBMPデータが多数含まれている。 EB Library 4.3をリンクしたeblookのバイナリがmingwのzlibのDLLとリンクしていたのを静的リンクに修正した。

2006/12/04 パッチを更新。 図版メニューに対応した。 私がebnet対応の状態でEB Libraryをビルドできない為、eblookのバイナリはebnet対応か図版メニュー対応かの二者択一になっている。 Lookupがイメージマップ (正式名称不明) へのリンクをたどるようになったので古いeblook (リンクは表示するがたどった先はまともに表示できない) と混ぜると危険かも。

2006/12/01 「なんだか設定がよくわからない」との事なのでndebsエージェントの記述をもう少し人に優しくした。

2006/11/01 Tipsに条件検索と複合検索に関する説明を追加した。

2006/10/22 パッチを更新。 ndebsを (自分の環境では体感できる程度に) 高速化した。 ndebも同様の処理にしたが普段使ってないので速くなったか不明。 この変更でndebでeblookの起動時にエラーとなっていたケースはndebsではエラーにならずに無視されるようになった。

2006/09/22 パッチを更新。 lookup-arrange-fill-linesで処理を失敗する不具合を一部修正した。 パッケージをndebsに対応させた。こっちは動作確認なし。

2006/09/04 パッチを更新。 (多分) Emacs 21以降でndeb-arrange-no-newlineがうまく動かない時があるのを修正した。 ndeb[s]エージェントでreference開始と終了タグの間に"<"があるとreferenceが正しく作られないのを修正した。

2006/09/04 パッチを更新。 前回の更新の際にtypoでndeb[s]エージェントを動かなくしていたのを修正した。

2006/09/03 パッチを更新。 ndsrd-pkgでも使う為にlookup-arrange-fill-linesndeb-arrange-fill-linesで上書きした。 ndsrd-pkgも更新。 faceをちょっとにぎやかにした。

2006/08/21 パッチを更新。 ndsrdがcsrdを呼び出す時のオプションを追加できるようにした。 ndsrdでワイルドカード検索がうまくできないパターンがあったので修正した。

2006/08/09 パーミッションがおかしかった (ほとんど全部777) のでアップロードし直した。

2006/08/08 パッチを更新。 ファイルの削除や追加もあったのでLookup media patchはパッチではなくアーカイブで公開するようにした。 ndebsエージェントを追加した。 (automakeとautoconfが) configure, Makefile.in等を作り直した。 texiディレクトリは触り出すと面倒そうなのでそのまま。

2006/07/25 パッチを更新。 インライン画像をインラインで表示するようにした。 広辞苑第五版の「位置ベクトル」とかカクテル・レシピ集とか。

2006/07/12 パッチを更新。 Lookupとeblookのパッチの名称と、パッケージのバージョンを変更した。 Lookupのパッチは7/5にエンバグし、Entryモードからいろいろ再生する時にprefix argumentを指定するとエラーになっていたのを修正した。 eblookのパッチはエラーメッセージのtypoだけ。

2006/07/05 パッチを更新。 Entryモードからいろいろ再生の実装を更に変更し、より複雑なキーを設定しても大丈夫になった。 BMP表示に使うイメージのフォーマットをbmp, ppm, tiffの順番に調べて使えるものを使用するようにした。 ndeb-max-image-sizeより大きな画像は表示しようとしないようにした。 白井さん毎回ありがとうございます。

2006/07/03 パッチを更新。 文字等を一切含まないreferenceを参照可能にした。 Entryモードからいろいろ再生の実装を変更した。 これでdescribe-keyでlambda式が出てきたりはしなくなった。

2006/07/01 パッチを更新。 Entryモードからいろいろ再生可能にできるようにした。

2006/06/29 パッチを更新。 白井さんから再びパッチを頂く。 ndeb, ndtpで、連続して現れない重複エントリも検索結果から排除するようになった。

2006/06/28 パッチを更新。 白井さんの動画対応パッチを取り込んだ。多謝。 でも名前はsound patchのまま。

2006/06/21 ndsrd-pkgを更新。 例に出していた外字の作成に失敗して式が化けていたのを修正。

2006/06/21 パッチを更新。 外字が元のテキストの色を反映するようにした。 時々おかしい気がするので更にいじるかもしれない。

2006/06/20 パッチを更新。 6/16のつづき。 本当にプロパティを指定してみたら動かなかったので更に修正。

2006/06/16 パッチを更新。 一部の環境で (多分Emacs 21.4)、外部プログラムの呼び出し時にエラーになるのを修正した。 動く方が少数派だったような気がしないでもない。

2006/06/09 ndsrd-pkgを公開した。

2006/05/16 パッチを更新。 (ビットマップイメージの) 外字が表示できない場合は代替文字を使用するようにした。

2006/05/02 パッチを更新。 Entryモードからの音声再生を可能にできるようにした。 play-sound-fileを使った音声再生を実装した。

2006/04/30 sound patchを含まないpatchの提供を中止し、 soud patchのページと統合した。

2006/04/24 EBNETD cygwin patchを公開した。

2006/04/12 パッチを更新。 ndebエージェントでebnetに対応した。 また、Windows用のeblookのバイナリも提供を開始した。

2006/04/01 パッチを更新。 個人的事情により外字取得時にxbmを正規化するようにした。

2006/03/19 Lookup sound patchの項目を作った。

2006/03/19 パッチを更新。 NTEmacsでsplashが表示されないバグに対応 (したのを取り込み忘れていたのを修正)。

2006/03/17 パッチを更新。 ndeb-process-coding-systemの設定時にevi-muleの読み込みを確認するようにした。

2006/03/17 モジュールに関する説明をTipsとして追加。

2006/03/14 ひっそりと公開。 何だかページがおおげさな気がする。

(Lookup sound patchのページの) 更新履歴

2006/04/28 パッチを更新。 細かい修正のみ。

2006/04/27 パッチを更新。 MCI機能による音声再生に対応した。 かなりやっつけ仕事。

2006/04/12 パッチを更新。 patch for Lookupの更新に追従。 eblookのバイナリはeb.dllとリンクするようにした。 というより、mingwでebnetを有効にできない。

2006/04/01 パッチを更新。 patch for Lookupの更新に追従。

2006/03/24 パッチを更新。 一部の辞書でcontentが表示できなくなっていたのを修正。

2006/03/19 ひっそりと公開。

written by Kazuhiro Ito (mailto: mailto)

PC用眼鏡【管理人も使ってますがマジで疲れません】 Amazon Yahoo 楽天 NTT-X Store

無料ホームページ 無料のクレジットカード 海外格安航空券 転職 海外旅行保険が無料! 海外ホテル