latexmkテンプレートと簡単な解説
本記事は, Mac OSを対象に書いています.
latexmkを使う理由
LaTeXで何かを執筆しているときに
- ラベルをpdfに反映させるためにタイプセットを何回かするのめんどくさい
- 参考文献を引用する際にpLaTeXとbibtexを何回かタイプセットするのがめんどくさい
- texファイルとpdfファイルだけしか必要としないのに, auxファイルとかdviファイルとかいらない.
と思ったことが一度はあるんじゃないだろうか.
そんなときに役立つのがlatexmk(ラテフメイク)というソフトである.
latexmkを使用すれば, 一度のタイプセットでpLaTeXやbibtex等, 正しい出力がなされるまで自動的に複数回タイプセットしてくれる.
また, オプションの設定を行うことで, 不必要な補助ファイルを一気に削除してくれる.
これは使ってみるしかない, ということで私が使用しているlatexmkの設定と, 簡単な解説をしたいと思う.
.latexmkrc
の設定
まずはテキストエディットを開き, 新規書類を作成する.
中身は一旦何も書かず, ファイル名を.latexmkrc
と変更し, 自分のユーザー名のディレクトリに保存する(書類とかムービーとかのフォルダがあるとこ).
ただし, 拡張子が非表示になっていて実は.latexmkrc.txt
のようなファイル名になっている, なんてことがあれば, .txt
の部分を消しておく.
次にファインダーを開き, ユーザーのディレクトリに移動する.
そしてShift
+Command
+.
を押すことで, 隠しフォルダを表示させる. (もう一度押せば非表示になる)
先ほど作成した.latexmkrc
ファイルがあると思うので, ダブルクリックして開く.
そこに, latexmkの設定を自由に記述して保存すれば設定完了.
私は以下のように設定している.
#!/usr/bin/env perl # file .latexmkrc # author Nekodesu # created_at 2022.06.11 # modified_at 2022.08.28 $latex = 'platex -synctex=1 -interaction=nonstopmode -file-line-error %O %S'; $bibtex = 'pbibtex -kanji=utf8 %O %S'; $dvipdf = 'dvipdfmx %O -o %D %S'; $pdf_mode = 3; $max_repeat = 5;
$latex
変数
$latex = 'platex -synctex=1 -interaction=nonstopmode -file-line-error %O %S';
まずは拡張子tex
のファイルから拡張子dvi
のファイルを作成するための処理系の設定を行う.
基本的に私はpLaTeXを使用するので
$latex = 'platex %O %S';
と書き込む.
ここで, %O
というのは実行時オプション, %S
というのは入力ファイル名を表す.
つまり, 何かpLaTeXで処理を行う際に付けるオプションが%O
に, 実行するファイル名が%S
に代入される.
しかし毎回付けるオプションもあるので, それは固定しておくべきである.
それが-synctex=1 -interaction=nonstopmode -file-line-error
の部分である.
synctex
: 1に設定するとSyncTeXが有効になり, 適切なpdf viewerを用いることでpdfの文章から該当するソースコードに飛べたりする.interaction=nonstopmode
: タイプセット中にエラーが起きても、ユーザーにどう処理するかの指示を求めずコンパイルを続行する.file-line-error
: texファイルの何行目でエラーが発生したかを表示.
$bibtex
変数
$bibtex = 'pbibtex -kanji=utf8 %O %S';
bibtexを実行する際の設定.
日本語の参考文献も引用することがあるので, 処理系はpbibtexにする.
また, オプションkanji=utf8
を設定しておく.
$dvipdf
変数
$dvipdf = 'dvipdfmx %O -o %D %S';
拡張子.dvi
のファイルから拡張子.pdf
のファイルを作成するためのコマンドの設定.
標準なものであるdvipdfmxに設定をする. (あまり分かっていない)
$pdf_mode
変数
$pdf_mode = 3;
使用するコマンドによってpdfの出力形式を合わせる設定.
- 0: pdf化しない
- 1: $pdflatex変数で指定されたコマンドを使う
- 2: $ps2pdf変数で指定されたコマンドを使う
- 3: $dvipdf変数で指定されたコマンドを使って, dviファイルからpdfを作成する
- 4: $lualatexでpdfを作成する
- 5: $xelatexでpdfを作成する
先ほどの$dvipdf`変数で設定したコマンドを使いたいので, ここでは3に設定する.
$max_repeat
変数
$max_repeat = 5;
最大タイプセット回数を指定. 警告が出なくなるまで無限にタイプセットを繰り返される可能性を防ぐ.
latexmkの使い方
1. 適当にtest.tex
というファイルを作成する. (適当に中身を書いていてもよい)
2. ターミナルを開き, test.tex
があるディレクトリ上で以下を実行する.
latexmk test.tex
3. そのディレクトリ上でtest.dvi
, test.aux
, test.pdf
等のファイルが作成される.
また, オプションを付けて実行することで様々な機能を使用することができる. 例えば
latexmk -c test.tex
と実行すると, test.dvi
やtest.aux
等の中間生成ファイルを削除してくれる. しかし
- 一度のタイプセットで済むのはいいが, ターミナル上で実行するのがめんどくさい. だったらTeXShop等のエディタで複数回タイプセットする方が視覚的にも分かりやすくていい
なんて難点が浮かび上がる.
この点は, 別の記事で書く予定である, Visual Studio CodeによるTeX執筆環境の構築により回避する.