Kazuhiro's blog
ようこそ! Kazuhiro's blog
火曜日, 3月 19 2024 @ 01:18 午後 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"を使った検索が行えるようになります。

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では実際にそのような定義を使用しています。

更新履歴

2022/10/10 古い記述を削除・修正した。

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

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

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

2006/10/0x 公開。

古い履歴


最終更新日: 月曜日, 10月 10 2022 @ 04:19 午後 JST; 12,363 閲覧件数 印刷用画面