猫ですの備忘録

ハンドルネームが「猫です」なだけであって, お嬢様言葉で「猫ですの」と言っているわけではありません.

latexmkテンプレートと簡単な解説

本記事は, Mac OSを対象に書いています.

latexmkを使う理由

LaTeXで何かを執筆しているときに

  • ラベルをpdfに反映させるためにタイプセットを何回かするのめんどくさい
  • 参考文献を引用する際にpLaTeXbibtexを何回かタイプセットするのがめんどくさい
  • texファイルとpdfファイルだけしか必要としないのに, auxファイルとかdviファイルとかいらない.

と思ったことが一度はあるんじゃないだろうか.

そんなときに役立つのがlatexmk(ラテフメイク)というソフトである.

latexmkを使用すれば, 一度のタイプセットでpLaTeXbibtex等, 正しい出力がなされるまで自動的に複数回タイプセットしてくれる.

また, オプションの設定を行うことで, 不必要な補助ファイルを一気に削除してくれる.

これは使ってみるしかない, ということで私が使用している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.dvitest.aux等の中間生成ファイルを削除してくれる. しかし

  • 一度のタイプセットで済むのはいいが, ターミナル上で実行するのがめんどくさい. だったらTeXShop等のエディタで複数回タイプセットする方が視覚的にも分かりやすくていい

なんて難点が浮かび上がる.

この点は, 別の記事で書く予定である, Visual Studio CodeによるTeX執筆環境の構築により回避する.

参考文献