VSCodeでLaTeXの環境を整える

パソコンを買い換えるたびにLaTeXの執筆環境の構築をしているので、方法をメモとして残しておきます。 ファイルを保存すると自動でコンパイルが実行されPDFに反映される、我ながら最強の環境です。

この記事では、(u)platex→dvipdfmxの順でPDFを生成する方法を紹介します。

事前にLaTeXのインストールを済ませてください。

拡張機能のインストール

LaTeX Workshop」をインストール
拡張機能のインストール

拡張機能の検索欄で「LaTeX Workshop」と検索し、James Yuさんが作成された拡張機能をインストールします。 マーケットプレイスのページ にある「Install」ボタンをクリックしてもインストールできます。

自動実行の設定

自動実行の設定は2種類あります。1つ目の「ユーザ設定」はエディタ自体に設定をするものであり、2つ目の「ワークスペース設定」はフォルダごとに設定します。 メリットとデメリットは以下の通りです。

ユーザー設定 ワークスペース設定
メリット 1箇所で設定すればすべての執筆物で
同じ環境が使える
執筆物ごとに設定ができる
デメリット 執筆物ごとの設定ができない
(ワークスペース設定として上書きはできる)
執筆物ごとに設定ファイルを置く必要がある

個人的には、フォルダごとコピーすればどのコンピュータでも環境を再現できるので、ワークスペース設定のほうが好みです。 ユーザー設定はこちら 、ワークスペース設定はこちら で紹介しています。

ユーザー設定

古い(最近のブログ記事等ではあまり紹介されていない)方法ですが、手っ取り早くたくさんのLaTeXファイルをコンパイルできる方法として紹介します。

ここでは、Windowsで日本語化拡張機能を入れない環境のスクリーンショットを載せながら手順を紹介します。 VSCodeのバージョンや日本語化拡張機能の有無で表示は変わりますが、大体同じ手順だと思います。

まず、「File」→「Preferences」→「Setting」を選択します。 (Macで日本語化拡張機能を入れた状態では「Code」→「基本設定」→「設定」です)

設定画面を開く
設定画面を開く

右上にあるファイルのアイコンをクリック。

設定画面
設定画面

個人設定用のJSONファイルが開きます。 このファイルに設定を記述すると、現在コンピュータにサインインしているアカウントでVSCodeを使った時に、この設定が反映されます。

ユーザ設定のJSONファイル
JSONファイルでユーザ設定をする

このファイルに、以下の内容を上書きします。既存の設定がある場合、最後の"ほげほげ": "ふがふが"のような行の最後に,をつけ、以下のテキストの一番外側の{}の内側を"ほげほげ": "ふがふが",の次の行に続けて貼り付けてください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
{
    "latex-workshop.latex.recipes": [
        {
            "name": "platex",
            "tools": [
                "platex",
                "pbibtex",
                "platex",
                "platex",
                "dvipdfmx"
            ]
        }
    ],
    "latex-workshop.latex.tools": [
        {
            "name": "platex",
            "command": "platex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-kanji=utf8",
                "-shell-escape",
                "%DOC%"
            ]
        },
        {
            "name": "dvipdfmx",
            "command": "dvipdfmx",
            "args": [
                "%DOCFILE%.dvi"
            ]
        },
        {
            "name": "pbibtex",
            "command": "pbibtex",
            "args": [
                "-kanji=utf8",
                "%DOCFILE%"
            ]
        }
    ]
}

この設定はこちらのサイト から引用いたしました。これはplatexでコンパイルする時の最低限の設定です。platexでコンパイルする際はこの設定で完璧ですが、他のコマンドでコンパイルしたい場合は書き換えたり追記してください。

これでLaTeXファイルを自動コンパイルできるようになりました。

ワークスペース設定

ここで紹介する全ての設定を実施したものをGitHubにあげました。LaTeX文章を書き始めるテンプレートのようになっています。LaTeX、VSCode、拡張機能をインストールし、あとはこのテンプレートをもとに文章を作成すれば自動コンパイルされます。

GitHub - takameron/vscode-uplatex Contribute to takameron/vscode-uplatex development by creating an account on GitHub. favicon github.com
thumbnail

以下からZipファイルをダウンロードできます。

ファイル構成は以下のようになっています。.vscodeディレクトリの中に、インストールを推奨する拡張機能を指定するextensions.json、設定を記述するsettings.jsonが入っています。.latexmkrcファイルにはLaTeXでのコンパイル方法を記述します。test.texが文書ファイルで、ファイル名は自由です。

ファイル構成
ファイル構成

インストールを推奨する拡張機能を指定(オプション)

LaTeXの自動コンパイルには「LaTeX Workshop」という拡張機能が必要であり、これまでの手順ですでにインストールしています。 しかし、新しい環境ではまだインストールしていないかもしれません。

ここでは、指定した拡張機能がインストールされていない場合に、インストールするように推奨するメッセージをVSCodeが出せるようにします。 そのため、この設定は必須ではありません。

  1. 最初に.vscodeディレクトリを作成します。 Windowsではエラーが表示されるかもしれませんが、その場合はフォルダ名を.vscode.としてみてください。

  2. .vscodeディレクトリの下にextensions.jsonファイルを作成します。 extensions.jsonファイルを開いて、以下のテキストを貼り付けてください。

1
2
3
4
5
{
    "recommendations": [
      "james-yu.latex-workshop"
    ]
}

これで「LaTeX Workshop」がインストールされていない環境でこのフォルダをVSCodeで開くと、「LaTeX Workshop」をインストールするようにメッセージが表示されます。

インストール推奨メッセージ
インストールするか尋ねてくる

VSCodeの設定

.vscodeディレクトリの下にsettings.jsonファイルをおくと、このワークスペース(フォルダ)内でのみ有効な設定が読み込まれます(ユーザ設定と競合していたらこちらの設定が優先されます)。

コンパイルにはLatexmkを使うため、この設定ファイルにLatexmkを呼び出す設定を記述します。 「LaTeX Workshop」によって、LaTeX文書を保存するとこの設定に従って文章のコンパイルが開始されます。

  1. .vscodeディレクトリの下にsettings.jsonファイルを作成します。

  2. settings.jsonファイルを開いて、以下のテキストを貼り付けてください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
{
    "latex-workshop.latex.recipes":[{
        "name": "uplatex",
        "tools" : [
          "latexmk"
        ]
      }],
      "latex-workshop.latex.tools": [{
        "name": "latexmk",
        "command": "latexmk",
        "args" : [

        ]
      }
    ],
      "latex-workshop.view.pdf.viewer":"tab", // 「Ctrl + Alt + v」で使うPDFビューワをタブに設定
      "latex-workshop.latex.autoClean.run": "onBuilt" // ビルド時に一時ファイル(.auxなど)を削除
}

"latex-workshop.view.pdf.viewer":"tab"はPDFの開き方を指定する項目で、他には外部アプリやブラウザを指定できます。設定方法はwebでお探しください。

LaTeXのコンパイル方法の設定

コンパイルにはLatexmkというツールを使います。 Latexmkとは、「文書を作成するのに必要な回数タイプセットしてくれるツール」1で、少ない行数でコンパイル方法の指定ができます。

  1. .latexmkrcファイルを作成します。Windowsではエラーが表示されるかもしれませんが、その場合はフォルダ名を.latexmkrc.としてみてください。

  2. .latexmkrcファイルを開いて、以下のテキストを貼り付けてください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
#!/usr/bin/env perl

$latex            = 'uplatex -shell-escape -kanji=utf8 -synctex=1 -halt-on-error -interaction=nonstopmode -file-line-error %O %S';
$latex_silent     = 'uplatex -shell-escape -kanji=utf8 -synctex=1 -halt-on-error -interaction=batchmode %O %S';
$bibtex           = 'pbibtex %O %S';
$biber            = 'biber --bblencoding=utf8 -u -U --output_safechars';
$dvipdf           = 'dvipdfmx %O -o %D %S';
$makeindex        = 'mendex %O -o %D %S';
$max_repeat       = 5;
$pdf_mode         = 3;
$pvc_view_file_via_temporary = 0;

# clean up
$clean_full_ext = "%R.synctex.gz"

今回の設定では、uplatex, dvipdfmxを使ってPDF化しています。

コンパイルしてみよう!(動作確認)

これで自動コンパイルの設定が終わりました! 動作を確認してみます。

test.texというファイルを作成し、以下のテキストを貼り付けてください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
\documentclass[a4j,uplatex]{jsarticle}

\usepackage[dvipdfmx]{graphicx} % 画像読み込み
\usepackage[dvipdfmx]{color} % カラー出力(色指定ができる)
\usepackage[hidelinks,bookmarksnumbered=true,dvipdfmx]{hyperref} % PDFのメタデータ埋め込み
\usepackage{pxjahyper} % しおり・タイトル等の日本語の文字化け防止
\usepackage{here} % 図表の位置を強制的に指定
\usepackage{url} % URIをそのまま表示&ハイパーリンク化

% PDFのメタデータ設定
% \hypersetup{
%   pdftitle={テスト}, %タイトル
%   pdfauthor={著者}, %著者
%   pdfsubject={VSCode環境におけるLaTeXファイルの扱いに関する研究}, %件名
%   pdfkeywords={Visual Studio Code; LaTeX;} %キーワード
% }

\begin{document}

\section{はじめに}

吾輩は猫である。名前はまだ無い。 

\ref{eq:1}はオイラーの等式である。

\begin{equation}
  \label{eq:1}
  \mathrm{e}^{\mathrm{i}\pi} + 1 = 0
\end{equation}

% 画像読み込み
% \begin{figure}[H]
%     \centering
%     \includegraphics[height=4cm]{image/1.pdf}
%     \caption{画像}
%     \label{fig:1}
% \end{figure}

ほげほげ\cite{refer1}ふがふが\cite{refer2}
% 参考文献
\begin{thebibliography}{9}
  \bibitem{refer1} 著者1, 『タイトル1』, 出版社, 出版年, pp.000-111
  \bibitem{refer2} 著者2, \url{https://www.takameron.info}, 2020年10月10日閲覧
\end{thebibliography}

\end{document}

ファイルを保存すると、自動でコンパイルが開始され、PDFファイルが生成されるはずです。 PDFファイルの開き方は、以下の通りです。

  1. PDFファイルをダブルクリックして「このまま開きますか?」をクリック
  2. LaTeXファイルを開いている時に「Ctrl + Alt + v」(Macなら「option + command + v」)を同時押し

PDFファイルを開いておけば、LaTeXファイルを保存すると自動でコンパイルが開始されPDFが更新されます。

以上です。お疲れ様でした!

【おまけ】web表示用に最適化

QPDFというコマンドを使うと、PDFをweb表示用に最適化できます。PDFの内部構造を変更するだけであり、画質が落ちるなどデメリットが特にあるわけではないので、最適化しておくと良いと思います(しなくてもあまり問題ありませんが)。

ここでは、自動でqpdfコマンドを実行し、web表示用に最適化する方法を紹介します。

まず、QPDFというコマンドがインストールされている必要があります。LaTeXのインストール時にWindowsでは標準でインストールされ、MacやLinuxではインストールされないようです(詳しく確かめていないのでわかりません)。ターミナルでqpdf --versionと入力して実行すると、インストールされているかを確認できます。 インストールされていない場合、インストール方法はここでは紹介しませんのでwebでお探しください。

qpdfコマンドがインストールされていることを確認できたら、.vscode/settings.jsonを以下のテキストに置き換えます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
    "latex-workshop.latex.recipes":[{
        "name": "uplatex",
        "tools" : [
          "latexmk",
          "web_optimisation"
        ]
      }],
      "latex-workshop.latex.tools": [{
        "name": "latexmk",
        "command": "latexmk",
        "args" : [

        ]
      },{
        "name": "web_optimisation",
        "command": "qpdf",
        "args" : [
          "--linearize",
          "%DOCFILE%.pdf",
          "web.pdf"
        ]
      }
    ],
      "latex-workshop.view.pdf.viewer":"tab", // 「Ctrl + Alt + v」で使うPDFビューワをタブに設定
      "latex-workshop.latex.autoClean.run": "onBuilt" // ビルド時に一時ファイル(.auxなど)を削除
}

“latex-workshop.latex.recipes"の"tools"に"web_optimisation"を追加し、“latex-workshop.latex.tools"に"web_optimisation"の設定を追加しました。 これで、元々生成されていたPDFファイルに加えて、web.pdfファイルが生成されます。

実際にWeb表示用に最適化されているか、確認します。

まずはVSCodeでPDFファイルを開きます。PDFの上部にカーソルを持っていきメニューバーを表示させ、「»」というアイコンをクリックし、「文章のプロパティ…」を選択します。

PDFのプロパティを開く
PDFのプロパティを開く

「Web表示用に最適化」の項目を確認し、「はい」になっていれば最適化されています(「いいえ」の場合は最適化されていません)。

PDFのプロパティ
「Web表示用に最適化」を確認