何かを書き留める何か

数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。

Latexmkのススメ

私はレポートを書くときにはLaTeXを用いて書いている。エディタはTeX Liveに標準でついているTeXworksを用いている。

普通の文章は特に気を使わなくてもよいが複雑な文章、例えばlabelとrefによる相互参照、BibTeXを用いた文献作成となるとタイプセット工程が複雑になる。慣れれば大したことは無いが面倒であり人に教えるとなるとさらに面倒になる。

例えば、labelとrefによる相互参照を行うために(p)latexを2回実行する必要があるし、その後auxファイルにBibTeXをかませてさらに(p)latexを実行、そしてdvipdfmxを…という流れ。もちろんレポートや論文は一発で書けるものではないのでこの工程を複数回行うことになる。ああ面倒。

 

このようなときに一般的に使われるのがMake である。Makeとはプログラムのコンパイル作業を自動で行うツールでありUNIX系統のシステムには大体入っていると思われる。それを使えばLaTeXのタイプセットの比較的簡単に行うことができる(らしい)。

問題は私の手元の計算機のOSはWindows VistaでありMakeなどないことである。さらなる問題はMakeを使うような状況に追い込まれたことがないことである、つまりMakeの使い方をそれほど知らないことである。

 

そこで私はlatexmkというツールを使うことにした。

http://www.phys.psu.edu/~collins/software/latexmk-jcc/

ここから落とせるが、TeXLiveなどには最初から入っている。

 

TeXworksでlatexmkを使うための設定はTeXWikiに書いてあるのだが、なぜか上手くいかないのである。ここで諦めてMakeの勉強をするのもアレであるので試行錯誤してやっと動くようになった。

やり方として、TeXworks を起動し、編集 → 設定 → タイプセットと辿り、「タイプセットの方法」右下方にあるプラスマークをクリックし、「タイプセットの方法を設定する」というダイアグラムにおいて以下のように設定する。

 

----

名前 LaTeXmk-ipaex

プログラム C:/texlive/2012/bin/win32/latexmk.exe

引数

-e
$latex=q/platex %O -synctex=1 -no-guess-input-enc %B/
-e
$bibtex=q/pbibtex %O -kanji=utf8 %B/
-e
$makeindex=q/mendex %O -U %B/
-e
$dvipdf=q/dvipdfmx %O -f ptex-ipaex.map -o %D %S/
-pdfdvi
$fullname

----

texファイルはUTF-8で書かれていることが前提である。TeXworksは標準でUTF-8になる。ptex-ipaex.mapは場合によってはotf-ipaex.mapになるしヒラギノフォントをもっているならばその方がいいかもしれない。

 

論文など大規模になることがわかっているものにはバッチファイルを作るのも有効である。

作業ディレクトリに以下の内容を書いた拡張子なしのlatexmkrcというファイルを作る:

----

$latex= ’platex %O -synctex=1 -guess-input-enc %B’;
$bibtex = ’pbibtex %O %B’;
$dvipdf= ’dvipdfmx %O -f otf-ipaex.map -o %D %S’;
$makeindex= ’mendex %O -U %B’;
$pdf_mode = 3;
$pdf_update_method = 3;

----

これがある状態で、コマンドラインで

latexmk -pdfdvi (jobfile).tex

を実行すればよい。

またはバッチファイル

----

@echo off
latexmk -pdfdvi (jobfile).tex

----

を作ればよい。

掃除のためのバッチファイルは

----

@echo off
latexmk -c

----

とすれば補助ファイルが一掃できる。