latexmk設定メモ
LaTeX文書のコンパイルをよしなにやってくれるlatexmkについて。
全体設定である ~/.latexmkrc
には以下のように記入してある。
#!/usr/bin/env perl $pdf_mode = 3; $latex = 'uplatex -kanji=utf8 -synctex=1 -file-line-error -halt-on-error -interaction=nonstopmode %O %S'; $bibtex = 'upbibtex %O %B'; $dvipdf = 'dvipdfmx %O -o %D %S'; $biber = 'biber --bblencoding=utf8 -u -U %O %S'; $makeindex = 'mendex %O -o %D %S'; $pvc_view_file_via_temporary = 0; $pdf_previewer = 'SumatraPDF -reuse-instance'
この設定は、ディレクトリごとの.latexmkrc
で上書きできる。
運用
ディレクトリごとに.latexmkrc
を置いて作業している。上の設定ファイルのうちビューワー設定以外の部分を、各状況にあわせて変更して使っている。
latexmk
pdfを作りたいだけのときlatexmk -pvc
継続ビルド。pdfを見ながら編集したいときlatexmk -pvc document.tex
上に同じ、ただしカレントディレクトリに*.tex
が複数あるときはこのように指定する
ビューワー設定
$pvc_view_file_via_temporary = 0; $pdf_previewer = 'SumatraPDF -reuse-instance'
$pvc_view_file_via_temporary
...latexmk -pvc
でPDFを作成するとき、既定では一時ファイルに出力してから目的のファイルに移動する仕様になっているが、この設定ではこれを0
にしている。$pdf_previewer
... Adobeなどファイルをロックするビューワーは使わないほうがよいだろう。この環境ではSumatraPDFにパスを通しているが、普通はフルパスを指定する
各種latexに共通のオプション
$latex = 'uplatex -kanji=utf8 -synctex=1 -file-line-error -halt-on-error -interaction=nonstopmode %O %S';
-synctex=1
...*.synctex.gz
を生成する。-file-line-error
... エラー出力がわかりやすくなるらしい。-interaction=nonstopmode
... 文法エラーなどのときにユーザーに尋ねなくなる。-halt-on-error
... ファイルが存在しないなどのときにユーザーに尋ねなくなる。
特に最後の2つは、継続ビルドして作業するのには必須だろう
なお、%O %S
はそれぞれオプションとソースファイルを表す。コマンド指定系の変数では、%
が全くない場合は自動的に適切なものが付与される。位置を変えたら何故か-interaction=nonstopmode
が効かなくなったので上のような順番がよいだろう。
latexごとの設定
生成経路に応じて数パターンあるが、ここではtex→dvi→pdfの場合と、tex→pdfの場合を書く。$pdf_mode
が生成経路を指定している。
tex→dvi→pdf
uplatexを使う例。
$pdf_mode = 3; $latex = 'uplatex -kanji=utf8 -synctex=1 -file-line-error -halt-on-error -interaction=nonstopmode %O %S'; $bibtex = 'upbibtex %O %B'; $dvipdf = 'dvipdfmx %O -o %D %S';
dvipdf
とdvipdfm(x)
ではオプションの順序が違うらしいので注意
tex→pdf
lualatexを使う例。(upbibtexにしない理由があるらしいが、こちらでは肯定的にも否定的にも未確認)
$pdf_mode = 1; $pdflatex = 'lualatex -synctex=1 -file-line-error -halt-on-error -interaction=nonstopmode %O %S'; $bibtex = 'pbibtex %O %B';
auxdirについて
-auxdir
/ $aux_dir
というオプションがあり、これを使うと各種の中間生成物の場所を別のディレクトリにできるような気がしてくるが、これは半分正しくない。現在はこのオプションが有効なのはMikTeX版のlatex系コマンドだけらしいので、残念ながら避けるのが無難だろう。