0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LaTeX Workshop はどのように TeX ソースをコンパイルしているのか

Last updated at Posted at 2024-09-30

こんにちは。とある大学院生です。

私は 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.recipeslatex-workshop.latex.tools として定義されたいくつかの基本的なレシピがデフォルトの LaTeX Workshop に含まれる
  • 以下に 2 つのよくある例を示す
    • 1 つめは単純に latexmk コマンドに依存する
    • 2 つめは以下に示すコマンド列 pdflatexbibtexpdflatexpdflatex を実行する
.settings.json
"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

更に、レシピ内に書かれた toolslatex-workshop.latex.tools を参照することで呼び出されます

ドキュメントには以下のように書かれています

  • レシピの tools フィールドに現れる各 tool は latex-workshop.latex.tools に定義される。レシピに tool を含むには、 tool の name がレシピの tools リストに含まれなければならない
  • デフォルトの値は以下で与えられる
settings.json
"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 と言った各種ツールの説明を読みに行くことになります。

最後に

ここに記述された内容は二次資料なので一次資料(公式ドキュメント)の変更を反映していません。正確な情報は一次資料を見に行け。

参考資料

[1] Compile · James-Yu/LaTeX-Workshop Wiki · GitHub

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?