はじめに
- この記事ではVisual Studio Code (以下VS Code)でLaTeX環境をサクっと作ります。
- 参考にもありますが、過去にも同様の記事はあります。が、本記事執筆時点 (2020年8月) ではlatexmkrcを使えば特に苦労なく設定できることから、新しく記事を起こしました。
- 過去記事を執筆された方はこの設定とは異なることにチャレンジしているのかもしれません。どなたか違いを教えて下さい!
- EmacsからVS Codeに乗り換えたばかりのVS Code初心者の説明であるため、VS Code初心者に優しい記事 (になってるはず) です。
- しかし、間違いがあるかもしません。VS Code玄人の方々、何か間違いがあればぜひご指摘ください。
検証環境
筆者の環境は以下の通りです。
- macOS Catalina 10.15.6
- Docker version 19.03.12, build 48a66213fe
- VS Code Version 1.48.1, commit 3dd905
- LaTeX Workshop 8.11.1
- docker image: pman0214/alpine-texlive-ja-epspdf:2020a
(Aug 23, 2020追記)
以下の環境でも動作しました。
- Windows 10
前提
Docker及びVS Codeはインストール済みであるとします。
手順
Step1: dockerイメージの取得
paperist/alpine-texlive-ja
を使用する方が多いようですが、筆者はいまだにEPS画像を使うことも多いので上記にghostscriptを追加した拙作のイメージを利用します。
$ docker pull pman0214/alpine-texlive-ja-epspdf
Step2: LaTeX Workshopの取得
VS Codeの拡張であるLaTeX Workshopを取得します。
VS Codeを起動し、左側のExtensionsタブ (あるいはCommand+Shift+x
) から「LaTeX Workshop」を検索してインストールします。
Step3: LaTeX Workshopの設定
VS Code上でCommand + ,
して設定を開き、右上のボタンを押してsettings.json
を開きます。
以下の設定を追加します。
参考に示しているQiita記事では色々な設定をしていますが、docker上のLaTeXを使用するだけなら後ほど示すlatexmkrc
ファイルさえ用意すればrecipeを追加する必要はありません。
"latex-workshop.latex.recipe.default": "latexmk (latexmkrc)",
"latex-workshop.docker.enabled": true,
"latex-workshop.docker.image.latex": "pman0214/alpine-texlive-ja-epspdf",
"latex-workshop.latex.autoBuild.run": "onFileChange",
まだsettings.json
に何も書いていなかった場合には以下のようになるはずです。
{
"latex-workshop.latex.recipe.default": "latexmk (latexmkrc)",
"latex-workshop.docker.enabled": true,
"latex-workshop.docker.image.latex": "pman0214/alpine-texlive-ja-epspdf",
"latex-workshop.latex.autoBuild.run": "onFileChange",
}
各設定を簡単に説明しますと以下の通りです。
-
latex-workshop.latex.recipe.default
でコンパイル (正確にはタイプセット?) に使うrecipeを指定します。
ここではLaTeX Workshopインストール時にデフォルトで存在するrecipeを指定しています。 -
latex-workshop.docker.enabled
とlatex-workshop.docker.image.latex
は、docker上のlatexを使う場合の設定です。latex-workshop.docker.image.latex
に使用するイメージ名を指定します。- これらの設定の詳細はLaTeX Workshopのドキュメントを参照してください。
-
latex-workshop.latex.autoBuild.run
ではファイルを保存したときにコンパイルする設定をしています。こちらはお好みで。
テスト
このVS Code LaTeX環境ではlatexmkrc
ファイルの作成はほぼ必須です。
日本語texと英語texでそれぞれ異なる設定をするので分けてテストします。
日本語texのテスト
適当なディレクトリを作り、latexmkrc
ファイルを作ります。
なお、以下はplatex+dvipdfmxを使っている前提の設定になっています。uplatexを使っている人などは適宜書き換えてください。
以下では/tmp/textest
で作業する例を示しています。
$ mkdir /tmp/textest
$ cd !$
$ touch latexmkrc
$ code !$
$latex = 'platex';
$bibtex = 'pbibtex';
$dvipdf = 'dvipdfmx %O -o %D %S';
$makeindex = 'mendex %O -o %D %S';
$pdf_mode = 3;
$ENV{TZ} = 'Asia/Tokyo';
$ENV{OPENTYPEFONTS} = '/usr/share/fonts//:';
$ENV{TTFONTS} = '/usr/share/fonts//:';
(2021/10/07追記 ここから)
synctexを使ってvscode内のtexソースとpdfの間でカーソルを同期したい人は、 $latex
は $latex = 'platex -synctex=1';
などとしましょう。
↓の方の英語版では $latex
がないため、追加しましょう。
$latex = 'latex -synctex=1';
$pdflatex = 'pdflatex -synctex=1';
(2021/10/07追記 ここまで)
つづいてtexファイルを作成します。
ファイル名は何でもよいですが、ここではmain.tex
であるものとします。
$ touch main.tex
$ code !$
\documentclass{jsarticle}
\begin{document}
テストです.
\end{document}
VS Codeでmain.tex
を開いた状態で、Command + Option + b
を押し、コンパイルしてみます。
VS Code下部のステータスバー (呼び名は違うかも・・・) にBuild
が表示され、終了すればBuild
の表示が消えます。
コンパイルに成功したのであれば、Command + Option + v
を押すとPDFファイルを閲覧できます。
上述の設定のように、"latex-workshop.latex.autoBuild.run": "onFileChange"
としている場合は、一度コンパイルした後はファイルを保存するたびに自動的にコンパイルされます。
英語texのテスト
手順は日本語texのときと同様です。
latexmkrc
ファイルは必須ではありませんが、筆者は必ず作成するようにしています。
$ mkdir /tmp/etextest
$ cd !$
$ touch latexmkrc
$ code !$
$pdf_mode = 1;
$ENV{TZ} = 'Asia/Tokyo';
$ENV{OPENTYPEFONTS} = '/usr/share/fonts//:';
$ENV{TTFONTS} = '/usr/share/fonts//:';
$ touch main.tex
$ code !$
\documentclass{article}
\begin{document}
Let's use \LaTeX.
\end{document}
コンパイルできないとき
左側のTeXタブからCOMMANDS > View Log messages > View LaTeX compiler logとたどってログを確認し、問題を解決しましょう。
コンパイルエラーになる場合以外にも、コンパイル時間がやけに長いときは途中で止まっていることがあります。上述の例であれば長くても1秒ほどでコンパイルが終わるはずです。やけに時間がかかっているな、と思う場合はログを確認してみましょう。
おわりに
VS Codeでlatex on dockerを使う環境をQiitaの記事を参考にして構築していましたが、ドキュメントを見たらきちんと書いてありました。
ドキュメントの確認、大切です。
筆者はPDFビューアとしてSkimを利用していますが、Skim使用時の設定例もドキュメントに書いてありました (公式にはサポートされていないとドキュメントに書いてありますが) 。