📄

ちょっとだけ理解するLaTeX+VSCode

2023/12/25に公開

基本

.tex  --コンパイル(platex等)->  .dvi  --変換(dvipdfmx等)-> .pdf

まず人間が.texファイルを書く。これをplatexなどのコンパイラがコンパイルして.dviファイルが生成される。dvipdfmxなどがこのコンパイルされた.dviから.pdfを生成する。

まずCLIでPDF生成までやってみる

.texファイルの作成

main.texというファイルを作成し、中に以下のように書く。

main.tex
\documentclass{jsarticle}
\begin{document}
これはサンプルです。
\end{document}

コンパイル

$ platex path/to/main.tex

これでmain.texからコンパイルされたmain.dviが生成される。main.dviファイルはパソコンがパソコンのために作る中間ファイルである。

PDF生成

$ dvipdfmx path/to/main.dvi

これでmain.dviからお目当てのmain.pdfが生成される。

latexmk

platexdvipdfmxの2個もコマンドを叩くのは面倒である。この辺りを全て自動化してくれるのがlatexmkである。設定は~/.latexmkrcに書く。最も基本的な設定は以下である。

~/.latexmkrc
#!/usr/bin/env perl

# .tex -> .dvi に使うコマンド
$latex = 'platex %O %S';

# .dvi -> pdf に使うコマンド
$dvipdf = 'dvipdfmx %O -o %D %S';

# コンパイル後にPDFを生成するモードにしておく
$pdf_mode = 3;

なお、実行時には

%S: TeXファイルのパス ex. ~/Documents/LaTeX/mydoc.tex
%D: 出力先ファイルの名前 ex. ~/Documents/LaTeX/mydoc.pdf
%O: 実行時オプション ex. -file-line-error

と置き換えられる。

このように設定しておくことで、main.texファイルがあるディレクトリまでcdして

$ latexmk

とすればmain.texに対してplatexdvipdfmxを呼んでPDFを生成してくれる。

LaTeX Workshop

LaTeX WorkshopはVSCodeの拡張機能で、ボタンをクリックしたらコンパイルをしてくれるようになったり、保存するだけでPDFを生成してくれたりして便利である。

ツールとレシピ

LaTeX Workshopでは「ツール」と「レシピ」をsettings.jsonで設定できる。「ツール」とはCLIコマンドのひとつに名前をつけて保存したものである。「レシピ」はこの「ツール」を名前で順番に呼び出すものである。以下のようなイメージ。

ツール(コマンドを定義)
  • 「切る」: $ cut_vegetables
  • 「炒める」: $ fry_vegetables
  • 「煮る」: $ boil
  • 「カレールーを入れる」: $ insert_roux
レシピ(ツールと実行順序を指定)
  • スープ作成
    1. 「切る」
    2. 「煮る」
  • カレー作成
    1. 「切る」
    2. 「炒める」
    3. 「ルーを入れる」

今回はlatexmkがほとんどやってくれるので、$ latexmkだけを呼ぶツール(Run latexmk)と、このツールだけを呼ぶレシピcompile -> PDF with latexmkを作成する。

ツール

settings.json
"latex-workshop.latex.tools": [
	{
	    "name": "Run latexmk",
	    "command": "latexmk"
	}
],

これで$ latexmkコマンドがRun latexmkという名前で保存された。

レシピ

settings.json
"latex-workshop.latex.recipes": [
	{
	    "name": "compile -> PDF with latexmk",
	    "tools": [
		"Run latexmk"
	    ]
	}
],

これでRun latexmkツールを呼ぶレシピを保存できた。

おさらい

これで準備は整った。例のmain.texをVSCodeで開き、変更を加えて保存するとPDFが生成されるはずである。

ここまでの流れをおさらいしよう。main.texファイルを保存すると、LaTeX Workshopは登録されている唯一のレシピのcompile -> PDF with latexmkを呼び出す。このレシピはRun latexmkというLaTeX Workshopのツールを呼ぶ。Run latexmkは登録されている$ latexmkを実行する。

呼び出されたlatexmk~/.latexmkrcを見に行き、$latexとして登録されているコンパイラplatexmain.texをコンパイルしてmain.dviというコンパイルファイルを生成し、$dvipdfとして登録されているdvipdfmxmain.dviからmain.pdfを生成する。

Discussion