Emacs で EPWING

Mac OS X 上での EPWING 辞書の利用

先日の記事 で Mac OS X の「辞書.app」の利用について書いたが、電子辞書の標準形式である EPWING (JISX4081) の辞書を所有している方も多いだろう。現在 Mac OS X 上で EPWING 形式の辞書を検索できるアプリケーションには以下のような選択肢がある。

他にも Web ブラウザで読むための let me see… やコマンドラインベースの ebminieblook などたくさんの選択肢があるが、Emacs からは Lookup という Emacs-lisp で実装された辞書インターフェースが利用出来る。私は、マルチメディア対応や全文検索システム Hyper Estraier のインデックス検索、UTF-8 Extension の書籍対応などの拡張がほどこされた Kazuhiro さんの lookup 1.4 + media を使用させていただいている。インストールや設定方法は lookup 1.4 + media 同梱の README.org に書いてあるが、現在 Macports でインストールできる Lookup パッケージはこの media patch を含んだものであるようである。

$ port search lookup 
  ...
lookup @1.4-media-20110207 (textproc, japanese)
    Dictionary search interface for Emacs, including the media patch
  ...

私自身はソースから configure プログラムと make を用いてインストールしたのだが、Emacs を Macports 経由でインストールしているならば、

$ sudo port install lookup

で依存関係にある eb や eblook など必要なものもあわせて入るはずだ。使用方法も本家の Lookup ユーザーマニュアルKazuhiro さんのページ がとても親切で詳しいのでここで加えるべきことがないが (Lookup ページの Sample Screenshot で設定されている辞書の数は圧巻!)、細かい設定について少しだけ触れておく。

Lookup のマルチメディア再生機能

lookup 1.4 + media は EPWING に含まれるマルチメディアの再生を可能としているが、Mac OS X 上で音声や動画の再生プログラムを何に設定するかは色々選択があり迷う。私は以下のように wave に afplay, mpeg に qlmanage (Quick Look) を設定している。

(setq ndeb-binary-programs
      '((wave "afplay")
        (mpeg ("qlmanage" "-p") :derect t)))

次のような設定を加えると entry モードで “x” を押すとカーソル位置にある entry の最初にある音声または動画を自動で再生してくれる。

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

広辞苑第六版で「ねぶた」の動画再生を行っている様子。「ねぶた」の上にカーソルを合わせ “x” を押すと Quick Look での動画再生画面が現れる。広辞苑に含まれる動画は情報も古く、残念ながら実際に役に立つことはあまりないのだが、昭和時代の Retro な映像がけっこうあって見ていて楽しい。

https://skalldan.files.wordpress.com/2011/06/wpid-nebuta_lookup.png

Lookup で Unicode 外字表示

EPWING は JIS 規格の文字コード (JIS X 0208) 以外の文字は外字データ (ビットマップ) を用いて表示している。そのため外字として表示される文字は他の文字ともバランスが悪く可読性や可視性に優れない。EBSeries の辞書ソフトや コトノコ では EPWING の外字と Unicode の対応を定義するファイル (外字定義ファイル) を用いてこの問題に対処している。Lookup でも dictionary-option に外字テーブルを指定することで、 Unicode の文字で表示することが可能である。

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

(lookup-set-dictionary-option "ndebs+/path/to/DICT:DICT"
                               ':gaiji-table DICT-gaiji-table)

EBWin などの作者 hishida さんが EBWin 外字定義ファイルを公開してくださっているので (このページ の真ん中あたり)、それらを Lookup 用に機械的に変換して利用することも可能である。EBWin 用の外字定義ファイル(*.map)から、EBPocket for iPhone/iPod touch の plist 形式に変換する Ruby スクリプトが こちら で公開されているので参考になるが、実は開発版の Lookup (CVS Repository) では、この外字テーブルの設定も含んだ、各辞書ごとのかなりの数のサポートファイルが用意されているようだ。

残念ながらこの開発版の Lookup は GNU Emacs 23 のみのサポートで、Carbon Emacs (Emacs 22.3) ではそのままでは動作しないので (実際に試したわけではないが “古いバージョンの Emacs では動作しない” とはっきり書いてある)、適宜必要な情報のみ利用させていただいている。ここでは『広辞苑第六版』を例にとってみてみる。

まず、CVS Repository から最新版 (lookup/lisp) を取得する。

$ cvs -d:pserver:anonymous@lookup.cvs.sourceforge.net:/cvsroot/lookup login
$ cvs -z3 -d:pserver:anonymous@lookup.cvs.sourceforge.net:/cvsroot/lookup co -P lookup/lisp

check out した lookup/lisp フォルダの中には support-xxxx.el と言う名前のファイルがいくつもあるはずだ。これらの中の support-kojien.el を以下のように変更して、 (何でもいいが、ここでは) Kojien-map.el という名前で保存する。

;; Kojien-map.el
;; based on support-kojien.el --- suport file for "Kojien"

;;; Code:

(require 'lookup)

(defconst KOJIEN-gaiji-table
  (lookup-new-gaiji-table
   '(
      ("ha121" "á")
      ("ha122" "à")
      ("ha123" "â")
      ... (中略) ...
      )))

;; Kojien-map.el ends here

これを例えば ~/.emacs.d/lookup/map/Kojien-map.el という場所に置いて、設定ファイル (.lookup) に、

(load-file "~/.emacs.d/lookup/map/Kojien-map.el")

(lookup-set-dictionary-option "ndebs+/path/to/KOJIEN:kojien" ; 辞書のパスは適宜変更
                              ':gaiji-table KOJIEN-gaiji-table)

と書いておく。多少面倒だがこれで綺麗に外字が表示されるはずだ。

外字データで表示https://skalldan.files.wordpress.com/2011/06/wpid-toriten_gaiji2.png

Unicode フォントで表示https://skalldan.files.wordpress.com/2011/06/wpid-toriten_uni1.png

「忉利天」の「忉」(JIS X 0212, U+5FC9) や、”Trāyastriṃśa” の “ā” “ṃ” “ś” (Unicode character, U+0101, U+1E43, U+015B) などが綺麗に表示されている。後者は mode-line にも Unicode 文字が表示されている。

Lookup で外字テーブルを設定しておくと、以上のように見た目がよくなるが、その利点に加えて、辞書の内容をコピー&ペーストするときに、外字を Unicode (または置換文字列) に置き換えてキルリングに保存することができる、という利点もある。entry モードで “w” を押すと (lookup-entry-cite-content)、エントリの本文に JIS 規格の文字コード以外の文字が入っていても Unicode として保存できるのが確認されるだろう。

とうり‐てん【忉利天】
〔仏〕(梵語Trāyastriṃśa 三十三天と漢訳)六欲天の第2。須弥山しゅみせんの頂上にある。中央に帝釈天たいしゃくてんの止住する大城があり、その四方の峰に各8天があり、合して三十三天となる。

【追記 2011/07/13】

私は上記のように、lookup cvs Repository のサポートファイルを利用したり、EBWin の外字定義ファイルを Emacs 用に変換したりして、Lookup で 外字を表示させていたが、kazuhiro さんのページ をよく見ると、すでに Lookup の ndeb[s] エージェントで EBWin の外字定義ファイル (*.map) と Unicode 検索置換ファイル (alternate.ini) が読み込まれるように更新が加えられていた orz… 2011/02/12 にこの変更が通知されているので、しばらく行っていなかったパッケージのアップデートをこの機会に行った (lookup-1.4+media-20110625.tar.gz)。EBWin の外字定義ファイルに関しては、現在所有している辞書に関してはすでに Emacs 用に変換して使用していたので、しばらくはそちらを使用し続けることにして、「Unicode 検索置換ファイル (alternate.ini) の読み込み」の方を早速試してみたが、アクセント付き文字などもそのまま lookup-region で検索できる。これもまた素晴らしい。

Advertisements

4 thoughts on “Emacs で EPWING

  1. Pingback: 辞書.app を活用する (3) | Amrta

  2. Pingback: mac の emacs に lookup.el | miyazakikenji

  3. Pingback: 仕事環境 | いつでもセンター返し\↑/

  4. Pingback: emacs | yangsw.info

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s