aspellでTeX文書のスペルチェック
TeX文書のスペルチェックにはいくつかの方法がある.ひとつが今日紹介するコマンドラインからispellやaspellを用いる方法,そしてもう一つがflyspellに代表されるようにエディターでオンザフライでやる方法だ.後者の方法もスペルチェックのエンジンとしてはispell/aspellを利用していることが多い.詳しいことはaspellの公式ドキュメントを参照.
aspellのインストール
コマンドラインから使えるaspellはispellに機能を追加した新しい(といってもすでに結構古いが...)スペルチェッカーだ.macの場合はhomebrew/macportsから簡単にインストールできる.
# homebrewの場合
brew install aspell
# macportsの場合
sudo port install aspell
基本的な使い方
基本的な使い方は以下のように-l
で言語を,-c
でファイルを指定する.-t
はファイルがTeXファイルであることを示すオプションである.これを指定すると環境やTeXコマンドについてはエラーを出さないようになる.
aspell -t -l en -c <file>
このコマンドを実行すると,インタラクティブにスペルを修正できる.修正は複数の修正候補が画面上に表示されるので対応する番号を押すことでひとつづつ修正していく.まずはこれで使い勝手を見てみるのが良いだろう.
応用的な使い方
実際上はもう少し高等な使い方をしたいことが多い.以下にいくつか例をあげるが,これらはあくまでオプションである.
aspellの設定ファイルをつくる
aspellの設定ファイルは.aspell.conf
という名前で,通常ホームディレクトリに置かれる1.よく使うオプションはこちらに記述した方がよい.一例を示す.personal
は個人辞書の指定である.(後述)
lang en_US
mode tex
personal ~/.aspell.en.pws
もしプロジェクトごとに設定ファイルを変更したい場合は,aspell
実行時に--conf
オプションで指定する.
aspell --conf=<path/to/aspell.conf> -c <file>
本格的に使いたい場合は設定ファイルを書くことを強くおすすめしたい.可能なオプションについては公式のマニュアルに詳しい説明がある.基本的には辞書に関する設定,エンコーディングに関する設定,チェッカーに関するオプション,フィルター(ファイル形式)に関するオプションの4つを色々と指定できる.それぞれのオプションで可能な値についてはaspell dump <options>
コマンドで調べられる.例えばファイル形式について知りたい場合はaspell dump modes
とすると以下のように可能な形式の一覧が表示される.
$ aspell dump modes
nroff mode for checking Nroff documents
perl mode for checking Perl comments and string literals
email mode for skipping quoted text in email messages
tex mode for checking TeX/LaTeX documents
markdown mode for checking Markdown/CommonMark documents
ccpp mode for checking C++ comments and string literals
sgml mode for checking generic SGML/XML documents
none mode to disable all filters
texinfo mode for checking Texinfo documents
html mode for checking HTML documents
comment mode to check any lines starting with a #
url mode to skip URL like constructs (default mode)
辞書に単語を追加する
専門用語や個人名などは予め辞書に登録しておくといちいち修正候補として表示されないので楽になる.デフォルトでは辞書はホームディレクトリ直下に~/.aspell.en.pws
という名前で保存される.aspellで修正中もa
でユーザー辞書に登録できる.辞書はただのテキストファイルなので各自で自由に編集できる.辞書のフォーマットは,まず一行目に
personal_ws-1.1 lang num [encoding]
という行が必要.lang
は言語,num
は辞書に含まれる単語の数なのだが数字はいくつでもよいらしい.例えば英語の場合は
personal_ws-1.1 en 0
でOK.二行目以降に一行一単語で追加していくだけ.たとえばファイルの一例は以下のような感じ.
personal_ws-1.1 en 0
Bach
Beethoven
Chopin
Mozart
`
話は脱線するが,そもそも略語のたぐいを多様する場合はacronym
パッケージやGlossaries
パッケージなどを使って略語自体を管理するようにするほうが運用としてはスマートだろうということは付言しておく.
プロジェクトごとに辞書を使い分ける
もしプロジェクトごとに辞書を使いわけたい場合は追加で辞書ファイルを作成してaspell実行時に辞書を指定する.
aspell --personal <path/to/dictionary> -l en -c <file>
もしくは上にあげたようにaspell.conf
のpersonal
オプションで個人辞書を指定する.また,複数の辞書を扱いたい場合はextra-dicts
オプションで追加指定できる.
emacs上から直接利用する
emacsで編集している場合は,コマンドラインからではなくemacs上から直接aspellを利用できるが,これは今回の趣旨と違うのでまた別の機会に紹介する.
実際の運用についてのコメント
実際の運用では,私はプロジェクトごとに辞書ファイル,設定ファイルを作るようにしている.全ての文書で同一の個人辞書を使ってしまうと辞書が大きくなって意図せずスペルミスを見逃す可能性がありそうだからだ.gitでの管理が楽になるというのもある.
emacsでのflyspellや,最近のIDEの優れた機能を利用すればエディターで編集中にオンザフライでスペルチェックはできるが,文書を書いている最中は内容を考える方に頭が行っていてスペルチェックまで完璧にできることは少ない.aspellは文書が出来上がったあとで一括で全体のスペルチェックができるので修正漏れが起こりにくいというメリットがあると思う.というわけでどんな場合でも文書完成後に一回aspellにかけておくと安心できる.
また,これはaspellに限らないがこの手のスペルチェッカーはあくまで単純なスペルミスを修正してくれるにすぎず,文法の誤りや表現の誤りは一切修正できないことにも留意すべきだ.それらの修正にはより高等なアプリで確認する必要がある.これらのアプリでは同時にスペルミスも直してくれるが,TeXファイルを直接確認できるものはおそらく存在しない(?)ため,一回pdfに起こしてから文書をコピーして... とする必要がある.そうするとどうしてもTeXファイルを直接チェックできるaspellに比べてミスを逃しすくなる印象がある.
まとめると(あくまで私の場合は)文書を書く,スペルチェックをする,文法/表現の修正をするの3ステップを別々にやることでより漏れのすくない自己校正ができると考えており,そのためのツールとしてaspellは必須である,ということだ.
参考
aspellの公式ドキュメント TeX Wiki Aspell 英語の文章を aspell でスペルチェック #英語 - Qiita
備考
-
より具体的にはglobal configuration fileが
/usr/etc
または/usr/local/etc
に存在し,ホームディレクトリにおかれたpersonal configuration fileがその設定を上書きする. ↩