====== 概要 ====== * LaTeXで作ったファイルをPDFにするためには、TeXファイルをコンパイルしたものをDVIファイルとして出力し、PDFファイルに変換する、という一連の作業が必要です。 * latexmkはユーザーの代わりにこの一連の流れを自動で行ってくれます。 * 英語のファイルであれば特に設定しなくてもTeXファイルをPDFにできますが、日本語の場合はpLaTeXというものを使う必要があるために設定が必要です。 ====== 使い方 ====== ===== 設定ファイル ===== ホーム・ディレクトリ(ユーザー名がUSERNAMEの場合、Mac, Linuxの場合は /home/USERNAME/、Windowsの場合は C:\Users\USERNAME)に次の .latexmkrc というファイルを作成します。 #!/usr/bin/env perl $latex = 'platex -synctex=1 -halt-on-error -interaction=nonstopmode -file-line-error %O %S'; $bibtex = 'pbibtex %O %S'; $biber = 'biber --bblencoding=utf8 -u -U --output_safechars %O %S'; $makeindex = 'mendex %O -o %D %S'; $dvipdf = 'dvipdfmx %O -o %D %S'; $max_repeat = 5; $pdf_mode = 3; # preview $pvc_view_file_via_temporary = 0; if ($^O eq 'linux') { $dvi_previewer = "xdg-open %S"; $pdf_previewer = "xdg-open %S"; } elsif ($^O eq 'darwin') { $dvi_previewer = "open %S"; $pdf_previewer = "open %S"; } else { $dvi_previewer = "start %S"; $pdf_previewer = "start %S"; } %Sはソースファイル、%Oはオプション、%Dは出力ファイルに置き換えられます(もし指定しなくてもlatexmkが自動的に補完してくれます) * $latex ... TeXファイルをコンパイルしてDVIファイルを作成するのに使うコマンドを指定します。日本語の文章では platex がよく使われます * -synctex=1 ... プレビュー画面からソースコードの該当箇所に移動できるようにします * -halt-on-error ... コンパイル中にエラーが発生した場合、コンパイルを終了します。 * -interaction=nonstopmode ... コンパイル中にエラーが起きても、ユーザーにどう処理するかの指示を求めずにコンパイルを続行します * -file-line-error ... TeXファイルの何行目でエラーが発生したかを表示します * https://tex.stackexchange.com/questions/258814/what-is-the-difference-between-interaction-nonstopmode-and-halt-on-error * $bibtex ... BiblatexのバックエンドにBibTeXを使用するときのコマンドを指定します。日本語の文章では pbibtex がよく使われます * $biber ... Bibtexのバックエンドにbiberを使用するときのコマンドを指定します。 * --bblencoding=utf8 ... bblファイル(参考文献ファイル)の文字コードをUTF-8にします * -u ... 入力ファイルの文字コードをUTF-8にします * -U ... 出力ファイルの文字コードをUTF-8にします * --output_safechars ... ユニコード文字をLaTeXの命令を使ってエンコードした形で出力させます * $makeindex ... 索引を作成するときのコマンドを指定します。\usepackage{makeidx}を使うときに必要になります。日本語の文章ではmendexがよく使われます * $dvipdf ... LaTeXにより出力されたDVIファイルをPDFファイルに変換するコマンドです。日本語の文章ではdvipdfmxがよく使われます。 * $max_repeat ... 最大何回コンパイルするかを指定します。 * $pdf_mode ... PDFの出力形式を指定します * 0 ... \$latexにより dviファイルを生成する。PDFを出力しない * 1 ... \$pdflatexを使って、DVIファイルなどを経由せずに直接PDFを作成 * 2 ... \$latexにより生成されたDVIファイルを\$dvipsによりPSファイルに変換したあと、\$ps2pdfによりPDFを作成 * 3 ... \$latexにより dviファイルを生成し、\$dvipdfによりPDFを作成 * 4 ... (おまけ機能)\$lualatexにより直接PDFを作成 * 5 ... (おまけ機能)\$xelatexによりDVIを生成後、\$xdvipdfmxによりPDFを作成 * $pvc_view_file_via_temporary ... latexmkを-pvcオプションをつけて実行すると、texファイルに変更があるたびに自動で再コンパイルする。その際に、昔のデータをいくつ残しておくかを指定する(0だと残さない) * $dvi_previewer ... DVIのプレビューを表示するためのプログラムを指定します。synctexに対応しているものを使います * $pdf_previewer ... PDFのプレビューを表示するためのプログラムを指定します。synctexに対応しているものを使います ===== TeXファイルのコンパイル ===== 設定ファイルが作成できたら、TeXファイルはコマンドラインからコンパイルできるようになります。 例えば、test.texというファイルをDVI経由でPDFにしたあと、プレビュー画面を開き、texファイルに更新があれば再コンパイルしたい場合は、次のようにします $ latexmk -pdfdvi -pvc test.tex よく使うオプションは次のとおりです。 * -pdfdvi ... \$latexを使ってDVIファイルを生成したあと、\$dvipdfによりPDFファイルに変換する(pdf_mode=3に相当)。-latex=uplatex などで一時的に\$latexを変更可能 * -pdf ... \$pdflatexを使ってPDFファイルを生成する(pdf_mode=1に相当)。-pdflatex=lualatex などで一時的に\$pdflatexを変更可能 * -pv ... TeXファイルをコンパイル後にPDFのプレビューを開く * -pvc ... -pvの機能に加えて、texファイルを監視し、変更があったときに自動で再コンパイルを行う(PDFのプレビューを閉じるまで)。 * -c ... 中間ファイル(.logや.auxなど)を削除(コンパイルは行わない) * -C ... 出力ファイル(.dviや.pdfなど)を削除(コンパイルは行わない) オプション一覧は $ latexmk -h で確認してください。 その他のオプションをつけたときは %O に代入されます。