2014年5月20日火曜日

emacs内でTeX文書の作成からpdf閲覧まで行う

TeX WikiのEmacsに関する記述を見ていると,sheepheadさんのblog記事:Emacs上のPDFでisearch,occur,imenuとかなんでもしてしまうpdf-toolsの紹介が紹介されていました.Emacs23を導入したときに,EmacsでPDFファイルを表示するDocViewを試したことがありましたが,使い勝手が悪かったためすぐに使わなくなりました.

まずdoc-view-modeの基本的な操作法をまとめておきます.
キーコマンド機能
n'doc-view-next-page次のページ
p'doc-view-previous-page前のページ
C-n'doc-view-next-line-or-next-page1行下方へスクロール
C-p'doc-view-previous-line-or-previous-page1行上方へスクロール
SPACE'doc-view-scroll-up-or-next-page下方スクロールまたは次のページ
DEL'doc-view-scroll-down-or-previous-page上方スクロールまたは前のページ
k'doc-view-kill-proc-and-bufferプロセスを終了しバッファを閉じる
g'revert-bufferバッファを閉じる
+'doc-view-enlarge拡大
-'doc-view-shrink縮小
カーソルキー -上下左右方向へスクロール
M-g M-g 'doc-view-goto-page指定したページへ移動
M->'doc-view-first-page最初のページへ移動
M-<'doc-view-last-page最後のページへ移動

上述の記事ではEmacsのdoc-view-modeの使い勝手を良くするEmacs拡張アプリであるpdf-toolsを紹介していたので,早速試してみました.環境はMac OS X MavericksでEmacs 24.4.50を使用しています.

pdf-toolsを検索してみたのですが,検索上位に現れるGitHubのpolitza/pdf-toolsはLinux環境を前提としているようで,そのままソースをコンパイルしてみるとエラーが出ます.ソースコードを少し書き直すとMacでも使えたという情報も見かけたものの,ソースコードをいじる技術力がないので,誰かMacに対応したものを作っていないか他力本願で探してみるとGitHubにありました.

axot/pdf-toolsからzipファイルをダウンロードして展開し,ソースをコンパイルしてみるとすんなり通りました.するとソースを展開したフォルダにpdf-tools-0.20.tarというファイルが出来たので,Emacs上で
M-x package-install-file RET pdf-tools-0.20.tar RET
としてインストールしました.これでdoc-view-mode上で動作する色々なマイナーモードが使用可能になります.

M-x pdf-tools-helpで各マイナーモードや用意されている関数の説明を見ることができます.


EmacsからC-x, C-fでpdfファイルを選択して開き
  • pdf-isearch-minor-mode
  • pdf-sync-minor-mode
  • pdf-link-minor-mode
を試しました.まずdoc-view-modeはimagemagickのconvertコマンドを使ってpdfファイルをpngファイルに変換してEmacsのウィンドウ内に表示します.数ページのpdfファイルであればその変換にかかる時間が気にならないと思いますが,私は普段から数百ページのファイルを扱うことが多いため変換に時間が掛かり,LaTeXファイルのタイプセットの度にpdfファイルを再読み込みして変換をしなければならないため,この時点ですでにげんなりしてしまいます.画像ファイルの解像度が粗いのも気になりました.

pdf-toolsで今回試したマイナーモードはいずれもよく働きます.
isearchでは,検索した語句がハイライトされました.

pdf-links-minor-modeをonにすると,pdfのhyperlinkでジャンプ出来るようになりました.またpdf-sync-minor-modeでは,pdfのダブルクリックした部分に該当するTeXソースファイルの内容が表示されることを確認できます.
逆にソースファイルからpdfへジャンプする機能については,helpを見ると設定のための関数が用意されているので出来るとは思いますがそこまでは試していません.

ページの遷移がコマンドで済むことやisearchが出来ることは便利なのですが,ページ数の多いファイルをタイプセットする毎にpdfファイルを読み直して画像ファイルへ変換するという手間がかかることを考えるとあまり実用的ではないかなぁ.