VSCode+latexmk on Windowsの設定

VSCodeとlatexmkからLaTeXを使用するためのメモ。for Windows。

Cloud LaTeXで執筆もコンパイル(PDF化)もするなら、ここでの設定は不要。VSCodeで書いた文章をCloud LaTeXにコピペしてコンパイルするならVSCodeに「LaTeX language support」拡張機能をインストールすればTEXファイルの色付けや整形できるようになる。

以下、自分のPC上でTEXファイルをコンパイルしたい人向け。

TeXLiveのインストールと設定

インストール用のファイルは[ここ]から「texlive.iso」をダウンロードする。ダブルクリックすると中身が表示されるので、「install-tl-windows.bat」を右クリック→管理者として実行する。指示に従ってインストールすればOK。編集とコンパイルにVSCodeを使うなら「TeXWorks」は不要なのでチェックを外す。ダウンロードにもインストールにも相当時間がかかる(インストールは下手したら1時間以上かかる)。

SumatraPDFのインストール

PDFビューアとしてフリーソフトのSumatraPDFを使用する。AdobeのAcrobat Readerは、開いているPDFファイルが更新されたときに自動で再読み込みしてくれないので都合が悪い。

ここ]からインストーラをダウンロードして指示どおりにインストールする。最近のPCはほぼ64bitだと思うので「SumatraPDF-3.2-64-install.exe」でよい。

latemkの設定

VSCodeのデファクトスタンダード拡張機能といえば「LaTeX Workshop」だが、TEXファイルまでのPathに日本語が入ってしまっているとエラーになる。Google File Streamを使用するとPathに必ず日本語が入ってしまう(マイドライブなど)ので、LaTeX Workshopは使えない。

代わりに、VSCodeのターミナルからlatexmkコマンドを打ち込んでコンパイルする。latexmkコマンドはTeXLiveに含まれているのでインストールの必要はない。

VSCodeでファイルを新規作成し、以下の内容をコピペして「.latexmkrc」という名前でホームディレクトリに保存する。Windowsの場合、ホームディレクトリは(環境変数HOMEを設定していなければ)「C:\Users\<ユーザ名>」だと思う。

#!/usr/bin/env perl
$pdf_mode         = 3;
$latex            = 'uplatex %O -kanji=utf8 -no-guess-input-enc -interaction=nonstopmode -file-line-error %S';
$bibtex           = 'upbibtex %O %B';
$dvipdf           = 'dvipdfmx %O -o %D %S';
$makeindex        = 'mendex %O -o %D %S';

$biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %S';
$makeindex = 'mendex %O -o %D %S';

$pvc_view_file_via_temporary = 0;
$pdf_previewer = 'SumatraPDF -reuse-instance'

.latexmkファイルの内容については[ここ]などが詳しいが、あちこちに情報が分散している。VSCodeを使うならLaTeXエンジンとして「uplatex」を選択するのが無難だと思う。

なお、ググって出てくるサンプルには大抵記述されている「-synctex=1」というオプションを上記では省略しているが、このオプションによって使えるようになるSyncTeXという機能もPathに日本語ファイルが含まれるとうまく機能しないためである。

VSCodeの設定

冒頭にも書いたが、TEXファイルを色付けするために「LaTeX language support」という拡張機能をインストールする。

VSCodeのターミナルがBashではない場合は[ここ]を参照してGit Bashをインストールしたり環境変数を設定する。

使い方

VSCodeでターミナルを起動し(Ctrl-@)、TEXファイルのあるフォルダ(ディレクトリ)に移動する。そこで以下のコマンドを入力してEnterキーを押せば、TEXファイルのコンパイルが始まり、うまくいけばSumatraPDFが起動してPDFファイルが表示される。
(以下、$はプロンプトなので打ち込まなくてよい)

$ latexmk -pv ファイル名.tex

なお、そのフォルダに一つしかTEXファイルがなければ、ファイル名.texは省略して「latexmk -pv」とだけ打ち込めばよいようだ(私の環境では2回このコマンドを実行しないとPDFはプレビューしてくれないが深追いはしない)。

ターミナルで「ls」と打ち込んでファイルを確認すると、様々な拡張子のファイルが生成されていることがわかる。必要なのはTEXファイルとPDFだけなので、編集作業が一段落したら以下のコマンドで不要なファイルを削除する。

$ latexmk -c

TEXファイルとPDFの他にdviという拡張子のファイルが残ってしまうが、これは通常不要なので削除してよい。

TEXファイルを編集して保存するたびに自動で「latexmk -pv」を実行したい場合は、以下のように -pvc をオプションにつける。

$ latexmk -pvc ファイル名.tex

ターミナルにはつらつらと英語のメッセージが表示され、最後に「=== Watching for updated files. Use ctrl/C to stop ...」と表示されて止まる。ファイルが更新されるのを待っている状態である。このままTEXファイルを編集して保存してみると、自動的にコンパイルが実行されてSumatraPDFに表示されているPDFが更新される。自動更新を終了したいときはターミナルでCtrl-Cする(Ctrlキーを押しながらCキーを押す)。



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