User Tools

Site Tools


Sidebar

latex:latexmkの設定

This is an old revision of the document!


概要

  • LaTeXで作ったファイルをPDFにするためには、TeXファイルをコンパイルしたものをDVIファイルとして出力し、PDFファイルに変換する、という一連の作業が必要です。
  • latexmkはユーザーの代わりにこの一連の流れを自動で行ってくれます。
  • 英語のファイルであれば特に設定しなくてもTeXファイルをPDFにできますが、日本語の場合はpLaTeXというものを使う必要があるために設定が必要です。

使い方

設定ファイル

ホーム・ディレクトリ(ユーザー名がUSERNAMEの場合、Mac, Linuxの場合は /home/USERNAME/、Windowsの場合は C:\Users\USERNAME)に次の .latexmkrc というファイルを作成します。

.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ファイルの何行目でエラーが発生したかを表示します
  • $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 … XeTeXにより直接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 … DVI経由でPDFを作成 ($pdf_mode=3)
  • -pdfps … DVI, PS経由でPDFを作成 ($pdf_mode=2)
  • -pdf … pdflatexを使用して、DVIを経由せずにPDFを作成 ($pdf_mode=1)
  • -lualatex … lualatex(pdflatexの拡張版)を使用してPDFをつくる ($pdf_mode=4)
  • -pdflua … 同上
  • -pdfxe … xelatexを使ってDVIファイルを生成したあと、xdvipdfmxによってPDFに変換 ($pdf_mode=5)
  • -pv … TeXファイルをコンパイル後にPDFのプレビューを開く
  • -pvc … -pvの機能に加えて、texファイルを監視し、変更があったときに自動で再コンパイルを行う(PDFのプレビューを閉じるまで)。
  • -c … 中間ファイル(.logや.auxなど)を削除(コンパイルは行わない)
  • -C … 出力ファイル(.dviや.pdfなど)を削除(コンパイルは行わない)

また、$latexを一時的にuplatexにしたいときなどは次のオプションをつけます。

  • -latex=uplatex

それ以外の環境を変更する場合は次のようにします

  • -e "$dvipdf='dvipdfmx %O %S';$bibtex='pbibtex';$makeindex='mendex';"

その他のオプションをつけたときは $O に代入されます。

latex/latexmkの設定.1591855187.txt.gz · Last modified: 2021/06/27 21:59 (external edit)