Kazuhiro's blog
ようこそ! Kazuhiro's blog
金曜日, 7月 28 2017 @ 01:43 午後 JST

Tips for Lookup

辞書のグループ化

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からも使用することができます(多分)。 ごめんなさい試してません。

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

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

更新履歴

2007/01/24 eblookの変更に伴いTipsにあるような方法では条件検索や複合検索が行えなくなったので追記。

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

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

2006/10/0x 公開。

古い履歴


最終更新日: 水曜日, 1月 24 2007 @ 04:18 午後 JST; 9,098 閲覧件数 印刷用画面