こんにちは。とある大学院生です。
前回、LaTeX Workshop はどのように TeX ソースをコンパイルしているのかという記事にて、 LaTeX Workshop が VS Code の settings.json
をどのように解釈しているのかの記事を書きました(と言っても公式ドキュメントを和訳しただけですが)
その続きとして、更に別のファイルを読み込む必要のある latexmk を呼び出すまでの流れを書いていきます。
settings.json
前回の記事と重複しますが、 まず LaTeX Workshop が settings.json
を読みに行きます。
settings
からレシピが読み込まれて、通常一番上にあるものが実行されます。
"latex-workshop.latex.recipes": [
{
"name": "latexmk",
"tools": [
"latexmk"
]
}
]
ここから更に "tools"
と同じ "name"
を持つオブジェクトが latex-workshop.latex.tools
から読み込まれて、そこに記述されたコマンドが実行されます
"latex-workshop.latex.tools": [
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOC%"
],
"env": {}
}
]
この場合は latexmk -synctex=1 -interaction=nonstopmode -file-line-error -pdf -outdir=%OUTDIR% %DOC
が実行されています。
なお、この中の %OUTDIR%
や %DOC%
は VS Code で利用できる環境変数です (command prompt で環境変数を呼び出す文法と同じなのは開発元が同じ Microsoft だからかしら)
.latexmkrc
settings.json
から latexmk
が呼び出された後に、 %HOME%
ディレクトリにある .latexmkrc
ファイルが呼び出されます。
- OS の違いについての補足:
- Windows で環境変数
%HOME%
を設定しているとこのような動作をします - 設定がない場合は多分
%USERPROFILE%
と同じ値になっていたと思います - UNIX では環境変数
$HOME
の.latexmkrc
ファイルを読み込みに行きます
- Windows で環境変数
おわりに
この記事は LaTeX Workshop 内部でどういう流れで処理が行われるのかを記述しているものです。
このため、単体では直接的な問題解決の役に立たないかもしれませんが、処理の流れを知っておくことで、どこで問題が発生しているのかを特定するための見通しをつけやすくなると思います。