1. latexmkとは

latexmkは、Texとして作成したテキストをコンパイルしてPDFにするまでの作業を簡易化させるツールである。latexmkを使用することで、毎度platexを2回、dvipdfmxを1回としなくても、すべて自動で行ってくれるので、日々の作業が効率化される。

2. latexmkの設定ファイル

latexmkはそのままでも使えるが、設定ファイルを書くことで更に使いやすくなる。latexmkの設定ファイルは、$HOME/.latexmkrcに設置する。(他の場所にも設置できるが、一番編集しやすいのはホームディレクトリ直下であると思う。)以下に私の.latexmkrcの内容を表示する。
以下の設定ファイルでは、Linux、MacOS、Windowsの場合で使用するPDFビュワーが自動で変更されるようになっている。また、LinuxとMacOS限定で、「、」と「。」を「,」と「.」に自動変換してくれる機能がある。

	 
#!/usr/bin/env perl

# LaTeX
$latex = 'platex -synctex=1 --shell-escape -halt-on-error -file-line-error %O %S';
$max_repeat = 5;

# BibTeX
$bibtex = 'pbibtex %O %S';
$biber = 'biber --bblencoding=utf8 -u -U --output_safechars %O %S';

# index
$makeindex = 'mendex %O -o %D %S';

# DVI / PDF
$dvipdf = 'dvipdfmx %O -o %D %S';
$pdf_mode = 3;

# sed
$pdf_update_method = 4;
if ($^O eq 'darwin') {
    $pdf_update_command = "find . -type f -name '*.tex' -print0 | xargs -0 sed -i '' -e 's/、/,/g' -e 's/。/./g'";
} elsif ($^O eq 'linux') {
    $pdf_update_command = "find . -type f -name '*.tex' -print0 | xargs -0 sed -i -e 's/、/,/g' -e 's/。/./g'";
}

# preview
$pvc_view_file_via_temporary = 0;
if ($^O eq 'linux') {
	if ($ENV{WSL_DISTRO_NAME}) {
		$dvi_previewer = "start %S";
		$pdf_previewer = '/mnt/c/Users/ユーザ名/AppData/Local/SumatraPDF/SumatraPDF.exe -reuse-instance %O %S';
    } else {
    	$dvi_previewer = "xdg-open %S";
    	$pdf_previewer = "evince %S";
	}
} elsif ($^O eq 'darwin') {
    if (-f '/Applications/Skim.app/Contents/MacOS/Skim'){
    $dvi_previewer = "/Applications/Skim.app/Contents/MacOS/Skim %S";
    $pdf_previewer = "/Applications/Skim.app/Contents/MacOS/Skim %S";
    } else {
    $dvi_previewer = "open %S";
    $pdf_previewer = "open %S";
    }
} else {
    $dvi_previewer = "start %S";
    $pdf_previewer = '"C:\Program Files\SumatraPDF\SumatraPDF.exe" -reuse-instance %O %S';
}

# clean up
$clean_full_ext = "%R.synctex.gz"
	 
	

2.1. .latexmkrcを使う際の注意点

上記の.latexmkrcは、いくつかのプログラムが必要である。

2.1.1. Windowsの場合

SumatraPDFをインストールする必要がある。インストール先ディレクトリはデフォルトのディレクトリにしてほしい。インストール後は.latexmkrcのユーザ名の部分を自分のユーザ名に置き換える必要がある。自分のユーザ名は、エクスプローラーから確認できる。

2.1.2. MacOSの場合

Skim PDFが必要である。

2.1.3. Linuxの場合

現在の.latexmkrcではevinceにのみ対応している。他のPDFビュワーに対応させたければ自分で書き直してください。

3. 使い方

以下にlatexmkの使い方を示す。latexmkには、いくつかの使い方があり、代表的なものは、「Texファイルに変更があるときにコンパイルしてPDFビュワーを更新する」、「ログや一時ファイルなどを削除する」、「一度だけコンパイルする」、「Texファイルの変更を監視して、変更があればコンパイルする(PDFビュワーなし)」である。

3.1. Texファイルに変更があるときにコンパイルしてPDFビュワーを更新する

	  
$ latexmk -pvc Texファイル
	  
	 

3.2. ログや一時ファイルなどを削除する

	  
$ latexmk Texファイル
	  
	 

3.3. 一度だけコンパイルする

	  
$ latexmk Texファイル
	  
	 

3.4. Texファイルの変更を監視して、変更があればコンパイルする(PDFビュワーなし)

	  
$ latexmk -pvc -view=none Texファイル