kenban nikki    archives   tags   

テキストエディタでEPWING辞書を使う

2019-09-15

EPWINGは電子辞書の標準形式です1EBWinEBMacEBPocketなどのGUIソフトウェアを通して使うことができるのですが、テキストエディタ上でも使えるようにできるみたいなので、設定してみました。

今回はEmacsとVimで使えるようにしてみます。なお、私は普段Emacsは使いません(使えません)。これを機に少しは使えるようになりたいです。

環境はmacOS 10.14.6です。EmacsとVimはHomebrew経由でインストールしています。

辞書ファイルはすでに入手していることを前提としていますが、これから辞書を探そうと思っている方は次のサイトを参考にしてみてください。

前準備

まずは前準備として、必要なライブラリとソフトウェアをインストールします。eblookは、動画・音声データを再生できるパッチをあてたものをインストールします。

EB Library

brew create ftp://ftp.sra.co.jp/pub/misc/eb/eb-4.4.3.tar.bz2
brew install eb

eblook 1.6.1+media

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を対応させることで普通の文字として表示させることにします。

外字定義ファイルは、次のサイトから手に入れるか、自分で作成することができます。

今回は、外字定義ファイルを<辞書名.map>という名前で辞書ファイルと同じディレクトリに保存します。これとは別に、合字やアクセント付き文字を検索できるようにするUnicode検索置換ファイルのalternate.iniがある場合も、同じディレクトリに保存します。

Emacs

Emacsには、Lookupという辞書検索インターフェイスがあります。EPWING辞書に限らず、様々なフォーマットの辞書ファイルに対応しています。こちらも+mediaパッチがあてられたものをインストールします。

Lookup 1.4+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 lookupM-x lookup-patternM-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を愛用することになるような気がします。

参考にしたサイト