日記

日本語の勉強のためのブログ

【Windows】VSCode+pLaTeX環境を構築する(2023)

結論

まずこの記事を読んで環境構築し、以下のようにsettings.jsonを修正してください。
なお.latexmkの変更は必要ないはずです。

// latexmk を利用した platex によるビルドコマンド
// 古い LaTeX のテンプレートを使いまわしている (ドキュメントクラスが jreport や jsreport ) 場合のため
{
  "name": "Latexmk (pLaTeX)",
  "command": "latexmk",
  "args": [
    "-f",
    "-gg",
    // "-pv", // 削除
    "-pdfdvi", // 追加
    "-latex=\"platex\"", // 修正
    "-latexoption=\"-kanji=utf8 -no-guess-input-env\"", // 修正
    "-synctex=1",
    "-interaction=nonstopmode",
    "-halt-on-error", // 追加
    "-file-line-error",
    "%DOC%",
    "-outdir=out" // 追加
  ]
}
  // latex-workshop.latex.autoBuild.run: .tex ファイルの保存時に自動的にビルドを行うかどうか
  // LaTeX ファイルは .tex ファイルを変更後にビルドしないと、PDF ファイル上に変更結果が反映されないため、
  // .tex ファイルの保存と同時に自動的にビルドを実行する設定があるが、文書が大きくなるに連れてビルドにも
  // 時間がかかってしまい、ビルドプログラムの負荷がエディタに影響するため、無効化しておく。
   "latex-workshop.latex.autoBuild.run": "never", // 自動コンパイルしたいならこの行を削除する
  // ---------- LaTeX Workshop ----------
  // 使用パッケージのコマンドや環境の補完を有効にする
  "latex-workshop.intellisense.package.enabled": true,
  // 生成ファイルを "out" ディレクトリに吐き出す
  "latex-workshop.latex.outDir": "out",
  "latex-workshop.latex.clean.method": "glob", // 追加

また、一番良く使うビルドレシピを最上段に持ってきてください。例えばpLaTeXを一番良く使う場合は、以下のようにpLaTeXのレシピを一番上に移動してください。
※ 一番上にあるレシピがデフォルトレシピとして扱われるため

  // latex-workshop.latex.recipes: Recipe の定義
  "latex-workshop.latex.recipes": [
    // LaTeX(pLaTeX) で書かれた文書のビルドレシピ
    {
      "name": "pLaTeX",
      "tools": [
        "Latexmk (pLaTeX)"
      ]
    },
    // LuaLaTeX で書かれた文書のビルドレシピ
    {
      "name": "LuaLaTeX",
      "tools": [
        "Latexmk (LuaLaTeX)"
      ]
    },
    // XeLaTeX で書かれた文書のビルドレシピ
    {
      "name": "XeLaTeX",
      "tools": [
        "Latexmk (XeLaTeX)"
      ]
    },
    // LaTeX(upLaTeX) で書かれた文書のビルドレシピ
    {
      "name": "upLaTeX",
      "tools": [
        "Latexmk (upLaTeX)"
      ]
    },
  ],

以下は詳細な説明なので読む必要はありません。


以前の記事↓を書き直した。 everykalax.hateblo.jp

環境

  • Windows 11 Pro (version: あとで追記する)
  • Visual Stusio Code (version: 1.78.0)
  • LaTeX Workshop (v9.10.0)
  • TeXLive 2023

手順

まず次の記事を読んで基本的なLaTeX環境を構築する。
https://qiita.com/passive-radio/items/623c9a35e86b6666b89e

しかし上記記事の設定のままでは、platex文書をコンパイルする際に7つの問題が発生するため、それを修正する。
※LuaLaTeXなどを使う場合でも以下の3-5の問題が発生するので修正が必要。

以下に説明を書くが、上の「結論」の項を見てもらえばそれで済むので、読み飛ばしてもらって構わない。

1. latexmkに渡す引数の指定を間違えている

Latexmk(pLaTeX)args

"-latex='platex'", 
"-latexoption='-kanji=utf8 -no-guess-input-env'"

のように指定してしまうと、platexではなく'platex'(シングルクォーテーションが含まれてしまっている!)というコマンドを実行することになる。
そのため、

"-latex=\"platex\"", 
"-latexoption=\"-kanji=utf8 -no-guess-input-env\""

に修正する。

参考: https://okumuralab.org/tex/mod/forum/discuss.php?d=2947#p17327

2. pdfの作成方法が違う

.latexmkmcファイルでは$pdf_mode = 4;と指定されている。これはLuaLaTeXを使ってdviファイルからpdfを生成する方法である。

しかし今やりたいのはdvi -> dvipdfmx -> pdfである。$pdf_mode = 3;と指定すればこの方法で作成してくれるが、そうすると逆にLuaLaTeXを使う際に困ってしまう。
そのため、Latexmk(pLaTeX)args-pdfdviを追加する。こうすることで$pdf_modeを書き換えることなく、dvipdfを使ってpdfを生成してくれるようになる。

3. outディレクトリにpdf等が出力されない

Latexmk(pLaTeX)args-outdir=outを追加する。

4. コンパイル後に不要なファイル(auxなど)が自動削除されない

settings.json"latex-workshop.latex.clean.method": "glob"を追加する。

5. コンパイル毎にpdfビューアが起動してしまう

Latexmk(pLaTeX)argsにある-pvを削除する。このオプションはコンパイル後にビューアの起動を行うものである。
※ちなみに-pvcを指定するとTeXファイルを監視して変化があれば勝手にコンパイルしてくれる。しかしVSCode上では次に示すlatex-workshop.latex.autoBuild.runを変えればよいので、おそらく-pvcオプションを使うことはないと思う。

6. ファイル保存時に自動コンパイルしてほしい

先のページでは重くなるから無効化すると書かれているが、もし自動コンパイルしたい場合はsettings.json"latex-workshop.latex.autoBuild.run": "never"を削除すればよい。

7. 出力が多すぎてエラー箇所がわかりづらい

Latexmk(pLaTeX)args-halt-on-errorを追加することで、エラー発生時即座にコンパイルを停止することができる。それでも出力は多いが、少しは見やすくなると思う。


トラブルシューティング

  • 右下にCan not find latexindent in PATH.と出る
    • → TeXLiveでlatexindentをインストールする