英辞郎第四版買ってみた。emacsで使いたい。 sdic編
[id:eiel:20090110]のつづき。
テキスト形式にしてしまえばこっちのものです。
とはいえ、sdicについてくるeijirou.perlで変換すればいいというわけにもいかないです。*1というわけで、rubyでかいてみた。gene.perlを参考にした。
#!/usr/bin/ruby -Ku def make_key(key) head = key.clone key.tr!('A-Z', 'a-z') key.sub!(/\s+/, ' ') # key.sub!(/ \+\d+/, '') # これなんの処理だろ? ret = "" if head != key ret = "<H>#{head}</H>" end ret + "<K>#{key}</K>" end $stdin.each do |line| line.gsub!('&', '&') line.gsub!('<', '<') line.gsub!('>', '>') line.gsub!(' \ ', '&lf; ') key, content = line.split(' /// ') puts make_key(key) + content.chomp end
あとはこれを使ってsdic形式に変換します。
上記の内容をpdic1line2sdic.rbという名前で保存してて、辞書ファイルの名前がeijiro112.txtみたいな感じにしているならば。以下の感じでインストール。適宜修正してください。
出力先は/usr/shar/dictにしてます。
sudo sh -c "cat eijiro112.txt ryakuji112.txt| nkf -w8| ruby pdic1line2sdic.rb > /usr/share/dict//eijiro112.sdic" sudo sh -c "cat waeiji112.txt | nkf -w8| ruby pdic1line2sdic.rb > /usr/share/dict//waeiji112.sdic"
あとは.emacsに設定。なにを思ったかutf-8を採用したので余計な設定があります。
debianでsdicをインストール済の場合以下の感じ。Ubuntuでも大丈夫かと。
(global-set-key "\C-cw" 'sdic-describe-word) (global-set-key "\C-cW" 'sdic-describe-word-at-point) (setq sdic-eiwa-dictionary-list '((sdicf-client "/usr/share/dict/eijiro112.sdic"))) (setq sdic-waei-dictionary-list '((sdicf-client "/usr/share/dict/waeiji112.sdic" (add-keys-to-headword t)))) (setq sdic-default-coding-system 'utf-8-unix)
追記。
和英がこのままだとぐだぐだな予感。そのうち調査しよう。
補足
pdic1行テキスト形式のフォーマット
http://pdicviewer.naochan.com/glossary.html
テキスト形式で、見出し語、訳語、用例が1行で表されたファイル。見出し語 /// 訳語 / 用例
※見出し語部と訳語部の区切りは " /// "(半角スペース + スラッシュ3つ + 半角スペース)
※訳語部と用例部の区切りはPDICテキスト形式と同様 " / "(半角スペース + スラッシュ1つ + 半角スペース)※訳語部、用例部には改行コードを含めることができる。改行コードは " \ "(半角スペース + 円マーク + 半角スペース)
※見出し語部には改行コードは使えない。
sdic形式についてはinfo参照とかかいてごまかしておく。
*1:ダメなことはないけど、つかってみるとつかいづらいので