Emacsで青空文庫のテキスト入力

青空文庫の入力作業に使っているEmacsの設定を紹介します。UbuntuでEmacs 23を使っています。

青空文庫入力補助モード

自分が使う機能だけですが、青空文庫入力用のメジャーモードを作っています。

aozora-helper-mode.el

主な機能:

Ctrl+マウススクロールでズーム

普段はわりと小さいフォントサイズで作業しているのですが、青空文庫の作業時には漢字の細部の形を確認するために、大きめのフォントサイズにしたいことがあります。Emacs 23ではデフォルトでC-x C-+(拡大)、C-x C--(縮小)が用意されていますが、もう少し簡単に、WebブラウザのようにCtrl+マウスホイールのスクロールで拡大縮小が出来るようにしています。

;; font size zoom
(if (and (>= emacs-major-version 23) (window-system))
    (progn
      (global-set-key
       (vector (list 'control mouse-wheel-down-event))
       'text-scale-increase)
      (global-set-key
       (vector (list 'control mouse-wheel-up-event))
       'text-scale-decrease)))

Ediffで変更前と変更後の差分を確認

入力者校正を含めた校正作業の差分確認には、Ediffを使っています。

ediff-forward-word-functionforward-charにして、文字単位で色付けされるようにしています。

(setq ediff-window-setup-function 'ediff-setup-windows-plain)
(setq-default ediff-auto-refine-limit 10000)
(setq ediff-forward-word-function 'forward-char)

書きかけ

genkou-modeで原稿用紙の換算枚数

400字詰め原稿用紙の換算枚数を計算するのに、genkou-modeを使っています。入力作業に必須ではありませんが、大まかな長さを知るのに役立ってます。最終的に正確な枚数を知りたいときは、事前にルビ(aozora-helper-remove-ruby)と注記(aozora-helper-remove-annotation)を削除してから実行しています。

SKKで日本語入力

他の日本語入力システムをほとんど使ったことがないので、全く説得力はありませんが、青空文庫に収録するような古い作品の入力にはSKKが適していると思っています。変換する箇所を自分で明示的に指定できるので、方言や旧仮名遣い、不規則な送り仮名にも対応しやすいです。また、その場で辞書登録できるのも非常に便利です。

変換の学習に一応skk-studyを使っています。

(require 'skk-study)
(add-hook 'kill-emacs-hook 'skk-study-save)

旧字旧仮名遣いの入力用に、北極三號という辞書を使っています。

;; http://ling.bun.kyoto-u.ac.jp/Home/Thaejoon/npiii.html
(if (file-exists-p "~/.skk.d/npiii.l.jis")
    (add-to-list 'skk-search-prog-list
                 '(skk-search-jisyo-file
                   (cons "~/.skk.d/npiii.l.jis" 'junet)
                   10000)
                 t))

あと、踊り字の入力用に以下のような設定を追加しています。

(setq skk-rom-kana-rule-list
      (append skk-rom-kana-rule-list
              '(("@" nil "@")
                ("z " nil " ")
                ("z<" nil "《")
                ("z>" nil "》")
                ("z^" nil "★")
                ("z1" nil "○")
                ("zd" nil ("ヽ" . "ゝ"))
                ("zs" nil ("ヾ" . "ゞ"))
                ("zr" nil "々")
                ("z*" nil "×")
                ("!" nil "!"))))

ちなみに、SKKのかなモードで$を入力すると、カーソル位置の文字の文字コードと区点番号を知ることができます。また、Emacsの機能で、what-cursor-position(C-x =)やdescribe-char(C-u C-x =)を使うと、カーソル位置の文字の文字コードやキャラクタセット(jisx0208やjisx0213)が分かります。青空文庫で使える文字(JIS X 0208)かどうかの判断に役立ちます(ファイルのエンコーディングをsjis-dosなどにしておいて範囲外の文字を保存しようとすると警告が出るのでそこでも気づきますが)。

読めない漢字が出てきた時は、skk-busyuを使って部首入力することもあります。

;; skk-tankan
(require 'skk-tankan)
(setq skk-search-prog-list
      (cons (car skk-search-prog-list)
            (cons '(skk-tankan-search 'skk-search-jisyo-file
                                      skk-aux-large-jisyo 10000)
                  (cdr skk-search-prog-list))))

;; skk-busyu
(require 'skk-busyu)
(add-to-list 'skk-search-prog-list
             '(skk-busyu-search skk-busyu-search-charsets))

書きかけ

w3mでオンライン辞書を引く

入力中に辞書を引きたくなったときは、w3m-searchでオンライン辞書を使っています。青空文庫の入力のときはデフォルトで入っているgoogle(Google検索)とkokugo(goo国語辞書)でだいたい足りますが、たまに使うkotobank(コトバンク)とwiktionaryも追加しています。あと、text-modeやaozora-helper-modeなど、w3mの外からも検索しやすいように、キーバインドを割り当てています。

;; w3m
(when (locate-library "w3m")
  (setq browse-url-browser-function 'w3m-browse-url)
  (setq w3m-use-cookies t)
  (require 'w3m-search)
  (setq w3m-search-engine-alist
        (append
         '(("kotobank"
            "http://kotobank.jp/search/result?q=%s&t=0&x=0&y=0"
            utf-8)
           ("wiktionary"
            "http://ja.wiktionary.org/wiki/%s"
            utf-8))
         w3m-search-engine-alist))
  (global-set-key "\C-cg" 'w3m-search))

その他の青空文庫関連Emacs Lisp

戻る
最終更新日: 2011-02-11