ちょっとだけ理解するLaTeX+VSCode
基本
.tex --コンパイル(platex等)-> .dvi --変換(dvipdfmx等)-> .pdf
まず人間が.tex
ファイルを書く。これをplatex
などのコンパイラがコンパイルして.dvi
ファイルが生成される。dvipdfmx
などがこのコンパイルされた.dvi
から.pdf
を生成する。
まずCLIでPDF生成までやってみる
.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
platex
とdvipdfmx
の2個もコマンドを叩くのは面倒である。この辺りを全て自動化してくれるのがlatexmk
である。設定は~/.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
に対してplatex
→dvipdfmx
を呼んでPDFを生成してくれる。
LaTeX Workshop
LaTeX WorkshopはVSCodeの拡張機能で、ボタンをクリックしたらコンパイルをしてくれるようになったり、保存するだけでPDFを生成してくれたりして便利である。
ツールとレシピ
LaTeX Workshopでは「ツール」と「レシピ」をsettings.json
で設定できる。「ツール」とはCLIコマンドのひとつに名前をつけて保存したものである。「レシピ」はこの「ツール」を名前で順番に呼び出すものである。以下のようなイメージ。
ツール(コマンドを定義)
- 「切る」:
$ cut_vegetables
- 「炒める」:
$ fry_vegetables
- 「煮る」:
$ boil
- 「カレールーを入れる」:
$ insert_roux
レシピ(ツールと実行順序を指定)
- スープ作成
- 「切る」
- 「煮る」
- カレー作成
- 「切る」
- 「炒める」
- 「ルーを入れる」
今回はlatexmk
がほとんどやってくれるので、$ latexmk
だけを呼ぶツール(Run latexmk
)と、このツールだけを呼ぶレシピcompile -> PDF with latexmk
を作成する。
ツール
"latex-workshop.latex.tools": [
{
"name": "Run latexmk",
"command": "latexmk"
}
],
これで$ latexmk
コマンドがRun latexmk
という名前で保存された。
レシピ
"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
として登録されているコンパイラplatex
でmain.tex
をコンパイルしてmain.dvi
というコンパイルファイルを生成し、$dvipdf
として登録されているdvipdfmx
でmain.dvi
からmain.pdf
を生成する。
Discussion