いやーなんと2020年7月以来約2年ぶりの記事である.本業多忙でしばらく放置していると,ブログの書き方まで忘れてしまいすっかり億劫になり,今回この夏休みにようやく取り掛かる決心がついた.まずはリハビリも兼ねて軽めの記事を書く事にした.以前の記事(Emacsのorg-modeで論文を書く(その1:pdfとhtmlへの出力))でorg-modeで文書を書いてpdfにexportする方法をまとめた.ただ,exportする際にC-c C-e l oと打ってcompileされるのを待つのが結構面倒なのである.この部分を自動化する方法,つまり,org-mode文書を保存すれば何もしなくても自動的にpdfが更新されるようになる設定を見つけたので,それについてまとめてみた.
Table of Contents
References
- Org-mode need a real-time document preview : 例によってredditを探ってみると,そのものズバリがあった.この記事のlarstvei氏の投稿でうまくいった.
Setup
- latexmkをインストールする.LaTeXをインストールし,texファイルが変更されると,自動的にcompileしてskimでのpdfも自動で更新されるようにする(2018年9月1日追記) にlatexmkのインストール方法,設定を既述したが,ほとんどそのままでいける.
- ~/.latexmkrcを以下のように設定する
$pdflatex = 'xelatex -interaction=nonstopmode -synctex=1 %O %S';
$pdf_mode = 1;
$postscript_mode = $dvi_mode = 0;
$pdf_previewer = 'open -a Skim';
$preview_continuous_mode = 1; # equivalent to -pvc
- 上記の $pdf_previewer = ‘open -a Skim’; の行で,skimでpdfを開くようにしているが,
$pdf_previewer="emacsclient -e '(find-file-other-window %S)'";
とすれば,emacsのpdf-toolで見られる.
- そして,org文書の最後に以下を追加すれば良い.
* COMMENT Local Variables
# Local Variables:
# eval: (server-start)
# eval: (add-hook 'after-save-hook 'org-latex-export-to-latex nil t)
# eval: (compile "latexmk -pdf -pvc -pdflatex='xelatex -shell-escape -interaction nonstopmode'")
# End:
- 以上の設定が終わると,org-modeの文書を開くたびにlocal variablesを評価するかどうかを訊かれるようになる.yesと答えると(‘y’を叩けば良い),emacsclientが接続できるようにサーバーが立ち上がって保存するたびにorg-mode文書がLaTeXにexportされ,最後にバックグランドでlatexmkを用いてコンパイルされ,pdfが更新される.実に快適である.
- なお,上記の操作の前に一度,C-c C-e loを行なってtex fileを作成しておかないとうまく動かない.1回やっておけば,あとは自動でやってくれるようになる.
- 私は,xelatexを使用しているが,他のlatexを使用している方はそこの部分を書き換えれば使えるはずである.
- MacBook Pro (16inch, 2019) 8コアIntel Core i9, 2.4 GHz メモリ: 64 GB (macOS Monterey 12.4)では,保存するたびに少しcompilationを待たないといけないが,MacBook Pro(16インチ、2021)Apple M1 Max コアの総数:10(パフォーマンス: 8、効率性: 2)メモリ: 64 GB (macOS Monterey 12.4)では,待ち時間が明らかに短縮されているのを実感できる.