テキストエディタでEPWING辞書を使う
2019-09-15
EPWINGは電子辞書の標準形式です1。EBWin、EBMac、EBPocketなどのGUIソフトウェアを通して使うことができるのですが、テキストエディタ上でも使えるようにできるみたいなので、設定してみました。
今回はEmacsとVimで使えるようにしてみます。なお、私は普段Emacsは使いません(使えません)。これを機に少しは使えるようになりたいです。
環境はmacOS 10.14.6です。EmacsとVimはHomebrew経由でインストールしています。
辞書ファイルはすでに入手していることを前提としていますが、これから辞書を探そうと思っている方は次のサイトを参考にしてみてください。
前準備
まずは前準備として、必要なライブラリとソフトウェアをインストールします。eblook
は、動画・音声データを再生できるパッチをあてたものをインストールします。
brew create ftp://ftp.sra.co.jp/pub/misc/eb/eb-4.4.3.tar.bz2
brew install eb
tar -zxvf eblook-1.6.1+media-20150724.tar.gz
cd eblook-1.6.1+media-20150724/
./configure
make
make install
外字
EPWINGではJIS X 0208以外の文字をビットマップ形式の外字データを使って表示しています。これをそのまま使っても読めなくはないのですが、見た目があまりよろしくないので、外字定義ファイルを使って外字とUnicodeを対応させることで普通の文字として表示させることにします。
外字定義ファイルは、次のサイトから手に入れるか、自分で作成することができます。
- 外字のUnicode置換(EBWin・Emacs・Vimなど)
- 外字のUnicode置換(EBMac・EBPocket for iOS)
- 外字のUnicode設定ファイル(EPWING for the classics)
- 外字定義ファイル自作のヒント
- EPWINGの外字ファイルを解析する
今回は、外字定義ファイルを<辞書名.map>
という名前で辞書ファイルと同じディレクトリに保存します。これとは別に、合字やアクセント付き文字を検索できるようにするUnicode検索置換ファイルのalternate.ini
がある場合も、同じディレクトリに保存します。
Emacs
Emacsには、Lookupという辞書検索インターフェイスがあります。EPWING辞書に限らず、様々なフォーマットの辞書ファイルに対応しています。こちらも+media
パッチがあてられたものをインストールします。
tar -zxvf lookup-1.4+media-20180325.tar.gz
cd lookup-1.4+media-20180325/
EMACS=</path/to/emacs> ./configure --with-lispdir=/Users/<username>/.emacs.d/lisp/site-lisp
あとは次のように設定するだけで、M-x lookup
、M-x lookup-pattern
、M-x lookup-region
が使えるようになります。外字周りの定義ファイルも自動的に読み込んでくれます。便利ですね。
init.el
(add-to-list 'exec-path "/usr/local/bin")
(add-to-list 'exec-path "/usr/bin")
;; Lookup
(add-to-list 'load-path "~/.emacs.d/lisp/site-lisp/lookup")
(setq lookup-enable-splash nil)
(autoload 'lookup "lookup" nil t)
(autoload 'lookup-region "lookup" nil t)
(autoload 'lookup-pattern "lookup" nil t)
(global-set-key (kbd "C-x w") 'lookup-pattern)
(global-set-key (kbd "C-x W") 'lookup-region)
(setq lookup-default-dictionary-options
'((:stemmer . stem-english)))
(setq lookup-use-kakasi nil)
(setq lookup-search-agents
'((ndeb "</path/to/dictionary1>")
(ndeb "</path/to/dictionary2>")
(ndeb "...")))
(setq ndeb-binary-programs
'((wave "afplay")
(mpeg ("qlmanage" "-p") :derect t)))
(setq ndeb-play-binaries-from-entry
'(("x" wave mpeg)))
Vim
Vimには、eblook.vim
というプラグインがあります。
.vimrc
Plug 'deton/eblook.vim'
let eblook_dictlist1 = [
\{
\'book': expand('</path/to/dictionary1>'),
\'name': '<dictionary1>',
\'title': '<DICTIONARY1>',
\'skip': 0,
\},
\{
\'book': expand('</path/to/dictionary2>'),
\'name': '<dictionary2>',
\'title': '<DICTIONARY2>',
\'skip': 0,
\},
\]
以上のように設定することで、:EblookSearch
などのコマンドが使えるようになります。こちらの方は文字化けすることがあるので、もう少し設定をする必要がありそうですが、力尽きました。
ひとまず、EmacsのLookupが便利かなという感じです。そして私は引き続きEBMacを愛用することになるような気がします。