こんにちは。とある大学院生です。
私は VS Code の LaTeX Workshop プラグインを用いて TeX ファイルをコンパイルして論文を書いています。その中で、ファイルをコンパイルしようとするたびに LaTeX Workshop がエラーを吐き、エラーコードをググっては出てくる場当たり的な解決策を適当にコピペして凌ぐ日々を過ごしています。
この原因として、調べてもそもそも内部で何が起きているのかを解説する日本語記事がない事 (と英語記事と公式ドキュメントを読みにいかなかった自分の怠慢) が考えられます。
そこで、自分の備忘録と、公式ドキュメントを読みに行くハードルを下げるため、以下に LaTeX Workshop のドキュメントから必要箇所を日本語訳したものを記事として残しておくことにしました。
LaTeX recipes
LaTeX Workshop で「LaTeX プロジェクトをビルド」すると、settings.json
からレシピ ("latex-workshop.latex.recipes"
) が呼び出されます。
LaTeX Workshop のドキュメントには以下のように書かれています。
- LaTeX プロジェクトをビルドする際、 LaTeX Workshop が順番に実行するコマンド列が LaTeX recipe と呼ばれ、
latex-workshop.latex.recipes
に定義される。 - 変数
latex-workshop.latex.recipes
とlatex-workshop.latex.tools
として定義されたいくつかの基本的なレシピがデフォルトの LaTeX Workshop に含まれる - 以下に 2 つのよくある例を示す
- 1 つめは単純に
latexmk
コマンドに依存する - 2 つめは以下に示すコマンド列
pdflatex
→bibtex
→pdflatex
→pdflatex
を実行する
- 1 つめは単純に
"latex-workshop.latex.recipes": [
{
"name": "latexmk",
"tools": [
"latexmk"
]
},
{
"name": "pdflatex -> bibtex -> pdflatex * 2",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
}
]
- プロジェクトをビルドする際に、基本的に最初のレシピが使用される
- 設定(
latex-workshop.latex.recipe.default
)を見よ。コマンドlatex-workshop.recieps
により他のレシピでのコンパイルをすることもできる - デフォルトでは
latexmk
が使用される。このツールは大抵の LaTeX ディストリビューションにバンドルされ、実行には perl を要求される
LaTeX Tools
更に、レシピ内に書かれた tools
は latex-workshop.latex.tools
を参照することで呼び出されます
ドキュメントには以下のように書かれています
- レシピの
tools
フィールドに現れる各 tool はlatex-workshop.latex.tools
に定義される。レシピに tool を含むには、 tool のname
がレシピのtools
リストに含まれなければならない - デフォルトの値は以下で与えられる
"latex-workshop.latex.tools": [
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOC%"
],
"env": {}
},
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
],
"env": {}
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
],
"env": {}
}
]
ここでいう command
というのはターミナル上で叩くコマンドのことであり、args
はそのコマンドに渡す引数のことです。
これ以上の詳細は latexmk
, pdflatex
, bibtex
と言った各種ツールの説明を読みに行くことになります。
最後に
ここに記述された内容は二次資料なので一次資料(公式ドキュメント)の変更を反映していません。正確な情報は一次資料を見に行け。