VSCodeでLaTeX環境構築

これまでLaTeXで文章を書くときはTeXLive標準のTeXWorksを使っていましたが、いろいろな人が書かれているのと同じくエディタがしょぼいと感じるようになってきたのでVSCodeに環境を移します。ついでにlatexmkを使うようにしました。また前出の記事と同じくsubfilesを使えるようにします。

下準備

TeXLive、VSCode、LaTeX Workshopを導入。
これらについてはたくさん記事が出ています(一番下に参考ページを載せています)ので、すでに入っている前提で進めます。

latexmk

この構成ではほとんどがlatexmkを使っているということもあり、.latexmkrcというファイルを作ります。最初はこの記事にある内容を全てコピーして持ってくるのがいいと思います。大まかに説明も入れてくださっていて、とても親切です。ありがとうございます。ビルドコマンドについては以下のように書いています。


 $latex = 'uplatex %O -shell-escape -kanji=utf8 -no-guess-input-enc -synctex=1 -interaction=nonstopmode %S';
 $latex_silent = 'uplatex %O -shell-escape -kanji=utf8 -no-guess-input-enc -synctex=1 -interaction=batchmode %S';

-shell-escapeはmintedを使えるようにするためのおまじないです。

settings.json

ここでもこの記事の内容を全てコピーして持ってくるのがいいと思います。toolsとrecipesは次のようにしています。

   "latex-workshop.latex.tools": [
       {
         "name": "Latexmk (upLaTeX)",
         "command": "latexmk",
         "args": [
           "-f", "-gg", "-silent", //"-pv", //-pv:previewする場合の設定
           "-file-line-error", "%DOC%"
         ]
       },
   ],

   "latex-workshop.latex.recipes": [
       {
         "name": "upLaTeX",
         "tools": [
           "Latexmk (upLaTeX)"
         ]
       },
   ],

ビルドコマンドはtoolsに書いても.latexmkrcに書いても同じで私はlatexmkrcの方に書いています。

個人的にpdfのプレビューはタブで見るよりも外部のpdfビューワーのほうが見やすいので以下のように設定しています。タブで表示する場合は"latex-workshop.view.pdf.viewer"を"tab"にするだけです(ただし、タブは自動で開いてくれずCtrl+Alt+vが必要)。

   "latex-workshop.view.pdf.viewer": "external",
   "latex-workshop.view.pdf.external.synctex.command": "C:/Users/<ユーザ名>/AppData/Local/SumatraPDF/SumatraPDF.exe",
   "latex-workshop.view.pdf.external.synctex.args": [
     "-reuse-instance",
     "%PDF%",
     "-forward-search",
     "%TEX%",
     "%LINE%",
     "-inverse-search",
     "\"C:\\Users\\<ユーザ名>\\AppData\\Local\\Programs\\Microsoft VS Code\\bin\\code.cmd\" -r -g \"%f:%l\""
   ],
   "latex-workshop.synctex.afterBuild.enabled": true,

pdfビューワーにSumatraPDFを使用していますが、synctexを使うためにはSumatraPDFでも設定が必要です。TeX Wikiに書かれているようにオプション設定の逆順検索コマンドラインの設定にVScodeのコマンドを設定します。使い方は、SumatraPDFから検索する場合はダブルクリック、VScodeの原稿から検索する場合はCtrl+Alt+jです。

またコンパイル時の中間生成ファイルが気になっていたので、毎回消すように設定しました。

"latex-workshop.latex.clean.fileTypes": [
       "*.aux", "*.bbl", "*.blg", "*.idx", "*.ind", "*.lof", "*.lot", "*.out", "*.acn", "*.acr", "*.alg", "*.glg", "*.glo", "*.gls", "*.ist", "*.fls", "*.log", "*.fdb_latexmk", 
       //"*.toc",
       //"*.synctex.gz",
       // for Beamer files
       "_minted*", "*.nav", "*.snm", "*.vrb",
   ],
"latex-workshop.latex.autoClean.run": "onBuilt",

subfiles

公式ドキュメントのMulti File projectsに説明があります。

setting.json
以下のように設定しました。意訳するとuseSubFileはsubfile単体で(オート)ビルドするかどうか(これはデフォルトtrueなので書かなくて良さそう)、doNotPromptはsubfile単体でビルドするかを聞くかどうか(falseだと毎回選択する)、みたいな感じです。

   "latex-workshop.latex.rootFile.useSubFile":true,
   "latex-workshop.latex.rootFile.doNotPrompt":true,

.latexmkrc
パッケージの開発経緯(上手く説明できません)で-cdオプションを付ける必要があり、以下のように書きます。

  $do_cd = 1;

参考

VSCodeで最高のLaTeX環境を作る
VSCodeでLaTeXを書く(2018)
LaTeX-Workshop公式ドキュメント
TeX Wiki
VSCodeでTeXを書こう


この記事が気に入ったらサポートをしてみませんか?