File failed to load: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/extensions/TeX/AmsMath.js

2019年12月2日月曜日

VS Code で LaTeX の執筆環境を整える

Sublime Text の台頭から始まった第2次エディタ戦争も Visual Studio Code (以下 VS Code)に収束した感があるので,学生さんにも LaTeX な原稿を VS Code で執筆することをお勧めしています.
しかし,なんか微妙なビルド環境になっていることが多いので,お勧めのパターンをメモしておきます.

※ TeX一式と VS Code がインストールされていることが前提です.TeXについては TeX Live をネットワーク経由でインストールするのがお勧めです.ミラーサーバーの引きが悪いと一向に作業がすすまないことがあるので,その時は中断してやり直すか,上記ページの説明をよく読んだ方がいいです.

LaTeX Workshop を入れる

インストール

LaTeX 原稿のビルドやプレビュー,入力補完などを行うための Extension
を入れます.VS Code をインストールした状態であれば上のリンク先で Install のボタンをクリックすればインストールできると思います.

ビルドの設定

LaTeX Workshop は色々な手順・方法でのビルドに対応しています.
文書ごとに設定ファイル latexmkrc (先頭にドットは付かない・拡張子もつかない)を作成し,Latexmk でビルドする方法をお勧めします.
ホームディレクリに .latexmkrc (先頭にドットが付く) を置いて全ての文書でもその設定を使うやり方もありますが,お勧めしません.
余分な dvipdfmx の呼び出しが避けられなくなるので ptex2pdf を使うのもお勧めしません.
この方法のメリットは
  • BiBTeX を使っている場合(普通はそうしたほうが良いです),効率が良く正しい手順は面倒で間違いやすいが,Latexmk にお任せすればうまくやってくれる
  • 日本語の文書は大抵の場合 pLaTeX でコンパイルする必要がある.
    しかし,pLaTeX のベースは古く,国際会議などのテンプレートに対応できない場合があるので,英語の原稿は pdfLaTeX でビルドするほうが無難である.
    したがってビルド手順は文書ごとに保持するほうが簡単
  • たとえ VS Code を使うのをやめても Latexmk で簡単にビルドできる.
    (Latexmk は20年以上持続的に開発されており,LaTeXの処理系と同程度には将来も使えることが期待できます.エディタはこの20年で3回は乗り換えたので…)
  • 他の人に渡してもビルドが簡単
    (TeX のディストリビューションをインストールすればほとんどの場合 Latexmk は入っています)
ことです.

エディタのビルド設定(settings.json)

まず,LaTeX Workshop がLatexmkを呼んでくれるように下記の内容を settings.json に追記します.settings.json の編集方法はちょいちょい変わっていますが,2019年12月時点ではこの辺の情報が正しいです.

{
// 他の設定の続きに以下の設定を追記,追記の際,区切りのカンマ(,)が必要な場合もあるので注意
"latex-workshop.latex.tools": [
{
"command": "latexmk",
"args": [],
"name": "latexmk"
}
],
"latex-workshop.latex.recipes": [
{
"name": "toolchain",
"tools": [
"latexmk"
]
}
]
}
view raw settings.json hosted with ❤ by GitHub

各文書ごとのビルド設定(latexmkrc)

VS Code を使う場合は各文書ごとにフォルダを一つ作るのがおすすめです.
推敲の履歴を残したい場合は hoge_old.tex などを作るのではなく Git を使いましょう.

フォルダの直下にlatexmkrcという名前のファイルを作成します.
日本語の文書の場合は
#!/usr/bin/perl
$latex = 'platex %O -src-specials -shell-escape -interaction=nonstopmode -synctex=1 -kanji=utf8 %S';
$bibtex = 'pbibtex %O %B -kanji=utf8';
$dvipdf = 'dvipdfmx %O -o %D %S';
$pdf_mode = 3; # use dvipdfmx
view raw latexmkrc hosted with ❤ by GitHub
英語の文書の場合は
#!/usr/bin/perl
$pdflatex = 'pdflatex -synctex=1 -src-specials -shell-escape -interaction=nonstopmode -halt-on-error -file-line-error %O %S';
$bibtex = 'bibtex %O %B';
$pdf_mode = 1;
view raw latexmkrc hosted with ❤ by GitHub
のようにすると良いです.

スペルチェッカーを入れる

スペルチェッカーにかけていない原稿を人に見せるのは時間の無駄なのでやめましょう.
簡単にインストールできるのは Code Spell Checker だと思います.
機能的にはOSのスペルチェック機能を使う Spell Right が優秀だと思いますが,Windows ではOS側の設定が面倒です.Macだと簡単かもしれません.