1230
982

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

千葉大学Advent Calendar 2019

Day 16

VSCode で最高の LaTeX 環境を作る

Last updated at Posted at 2019-12-15

はじめに

レポートや論文の作成には $\LaTeX$ は欠かせないですよね。卒業論文や修士論文を書き始める方も多い時期だと思うので、今回は LaTeXVisual Studio Code を使い、レポートや論文を快適に書ける環境を構築していきたいと思います。

必要なツールのインストール

ここはあまり詳しい解説は行いません。
LaTeXVisual Studio Code がインストール済みの人はこの節は読み飛ばしてください。

  • LaTeX
    • TeX Live がおすすめです。

    • TeX Wiki に詳細な説明があります。

    • コマンドラインで platexlatexmk が実行できれば成功です。

    • Windows

      • 公式install-tl-windows.exe をクリックしてダウンロード、GUIのインストーラーに従ってください。
    • Mac

      brew install mactex-no-gui --cask
      
    • Linux (Ubuntu)

      sudo apt install texlive-full
      
  • Visual Studio Code
    • Windows

      • 公式からインストーラーをダウンロード、GUIのインストーラーに従ってください。
    • Mac

      brew install visual-studio-code --cask
      
    • Linux (Ubuntu)

      sudo snap install code --classic
      

latexmkの設定

まずは latexmk の設定です。

What is latexmk ?

LaTeX のソースを PDF にビルドする方法で

platex を複数回 → dvipdfmx

という手順がオーソドックスですよね。

でも、

  • 毎回コマンドを打つのが面倒
  • ファイルが変わったら自動でPDFを更新して欲しい

と思うことがありませんか?
これをやってくれるツールが latexmk です。
基本的な使い方は latexmk report.tex です。
ただし、エラー時のインタラクティブな修正をしたくない方は(大抵の人が当てはまると思いますが...)、下記の .latexmkrc の設定後、 latexmk -silent report.tex で実行してください。

.latexmkrc の編集

latexmk ではビルド方法などの設定を ~/.latexmkrc (Windows では %USERPROFILE%\.latexmkrc )に書くのが標準的です。

以下は私の ~/.latexmkrc の内容です。

~/.latexmkrc
#!/usr/bin/env perl

# LaTeX
$latex = 'platex -synctex=1 -halt-on-error -file-line-error %O %S';
$max_repeat = 5;

# BibTeX
$bibtex = 'pbibtex %O %S';
$biber = 'biber --bblencoding=utf8 -u -U --output_safechars %O %S';

# index
$makeindex = 'mendex %O -o %D %S';

# DVI / PDF
$dvipdf = 'dvipdfmx %O -o %D %S';
$pdf_mode = 3;

# preview
$pvc_view_file_via_temporary = 0;
if ($^O eq 'linux') {
    $dvi_previewer = "xdg-open %S";
    $pdf_previewer = "xdg-open %S";
} elsif ($^O eq 'darwin') {
    $dvi_previewer = "open %S";
    $pdf_previewer = "open %S";
} else {
    $dvi_previewer = "start %S";
    $pdf_previewer = "start %S";
}

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

特に変わった設定はしていませんが、コマンドラインから latexmk を実行する場合でも、いい感じに動くように以下のように設定しています。

  • LaTeX のソースから PDF への変換で platexdvipdfmx を利用
  • platex でのエラーをわかりやすく
  • 対応しているエディタでは PDF プレビューから対応する LaTeX ソース箇所にジャンプ可能
  • 簡単に PDF のプレビューを行える
    • latexmk -pv report.tex のようにすることで、ビルド後に PDF を表示
    • latexmk -pvc report.tex のようにすることで、ソースを保存するごとに自動で PDF を更新

Visual Studio Code の設定

ここからは Visual Studio Code の設定をしていきます。

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

LaTeX Workshop は VSCode で TeX ソースを書くに必須と言っても過言ではない拡張機能です。シンタックスハイライトや補完、PDFのプレビューなど様々な機能を提供してくれます。

VSCode 左側の拡張機能パネルを開いて latex と入力し、 一番上の LaTeX Workshop をインストールしてください。

latex_workshop.jpg

settings.json の編集

VSCode では設定を settings.json に書きます。VSCode 内の左下の歯車マークから 設定 を選択し、タブ右上のファイルマークを押すと JSON が開きます。

select_settings.jpg

settings_ui.jpg

以下は私の settings.json です。

settings.json
{
    // ---------- Language ----------

    "[tex]": {
        // スニペット補完中にも補完を使えるようにする
        "editor.suggest.snippetsPreventQuickSuggestions": false,
        // インデント幅を2にする
        "editor.tabSize": 2
    },

    "[latex]": {
        // スニペット補完中にも補完を使えるようにする
        "editor.suggest.snippetsPreventQuickSuggestions": false,
        // インデント幅を2にする
        "editor.tabSize": 2
    },

    "[bibtex]": {
        // インデント幅を2にする
        "editor.tabSize": 2
    },


    // ---------- LaTeX Workshop ----------

    // 使用パッケージのコマンドや環境の補完を有効にする
    "latex-workshop.intellisense.package.enabled": true,

    // 生成ファイルを削除するときに対象とするファイル
    // デフォルト値に "*.synctex.gz" を追加
    "latex-workshop.latex.clean.fileTypes": [
        "*.aux",
        "*.bbl",
        "*.blg",
        "*.idx",
        "*.ind",
        "*.lof",
        "*.lot",
        "*.out",
        "*.toc",
        "*.acn",
        "*.acr",
        "*.alg",
        "*.glg",
        "*.glo",
        "*.gls",
        "*.ist",
        "*.fls",
        "*.log",
        "*.fdb_latexmk",
        "*.snm",
        "*.nav",
        "*.dvi",
        "*.synctex.gz"
    ],

    // 生成ファイルを "out" ディレクトリに吐き出す
    "latex-workshop.latex.outDir": "out",

    // ビルドのレシピ
    "latex-workshop.latex.recipes": [
        {
            "name": "latexmk",
            "tools": [
                "latexmk"
            ]
        },
    ],

    // ビルドのレシピに使われるパーツ
    "latex-workshop.latex.tools": [
        {
            "name": "latexmk",
            "command": "latexmk",
            "args": [
                "-silent",
                "-outdir=%OUTDIR%",
                "%DOC%"
            ],
        },
    ],
}
  • "editor.suggest.snippetsPreventQuickSuggestions": false"editor.tabSize": 2 は言語ごとの設定にしています。もし、全ての言語に適用したい場合は、"[tex]": {} などでラップせず、グローバルに直接書いてください。

スニペットを登録

拡張機能を入れただけでも多くのスニペット(よく出てくるパターンのテンプレート)が提供されますが、独自でスニペットも定義してみましょう。

VSCode 内の左下の歯車マークから ユーザースニペット を選択し、 latex を選択すると latex.json が生成されます。

select_snippet.jpg

select_snippet_latex.jpg

ここでは授業レポートを想定したユーザースニペットを定義してみます。

latex.json
{
    "report": {
        "prefix": "report",
        "body": [
            "\\documentclass[${1:a4paper,11pt}]{${2:jsarticle}}",
            "",
            "",
            "% 数式",
            "\\usepackage{amsmath,amsfonts}",
            "\\usepackage{bm}",
            "% 画像",
            "\\usepackage[dvipdfmx]{graphicx}",
            "${3}",
            "",
            "\\begin{document}",
            "",
            "\\title{${4}}",
            "\\author{${5}}",
            "\\date{${6:\\today}}",
            "\\maketitle",
            "",
            "",
            "$0",
            "",
            "",
            "\\end{document}"
        ],
        "description": "授業レポート用テンプレート"
    }
}
  • 最初の "report" キーは分かりやすい一意の文字列なら何でも構いません。
  • "prefix" の値はスニペットを呼び出すときの名前です。
  • "body" の値はスニペットの内容です。リストの各要素はそれぞれ1行に展開されます。また、 $1 (初期値付きは ${1:foo} ) のようにすることで入力箇所を作成でき、 Tab キーを押すごとに $1 から数字の順に移動します。ただし、 $0 は少し特殊で最終的な移動先を表します。
  • "description" は選択時に表示される説明です。

実際に使ってみよう

設定は以上です。
ここからは実際に LaTeX ソースを書きながら幾つか機能を見ていきましょう。

ユーザースニペット

さきほど設定した report スニペットを呼び出してみましょう。単に report と打って出てきた候補を選択すればスニペットが展開されます。また、Tab キーで次の入力箇所に移動できます。

一瞬でレポートの雛形が出来上がりましたね。

snippet.gif

ビルドとプレビュー

ctrl + alt + b ( Mac では command(⌘) + option(⌥) + b ) で TeX ソースのビルドが出来ます。一度ビルドすると保存するたびに自動でビルドしてくれます。また、 ctrl + alt + vcommand(⌘) + option(⌥) + v ) で横にプレビューが開きます。

これらはコマンドパレットや TeX パネルの中からも実行できます。

build_and_preview.gif

PDF から TeX ソースにジャンプ

PDF ビューワー上での ctrl + クリックcommand(⌘) + クリック ) で対応する TeX ソース箇所にジャンプできます。

jump.gif

まだまだ機能はたくさん

LaTeX Workshop は他にもたくさん機能を持っています。例えば、

  • ctrl + alt + ccommand(⌘) + option(⌥) + c )で生成ファイル( .aux など)を削除
  • 多種多様なスニペット
    • \foo\begin{foo} 〜 \end{foo} といった環境の展開
    • @a\alpha@b\beta といったギリシャ文字の展開
    • MRM\mathrm{}MBF\mathbf といった数学用フォントの展開
  • 多機能なサイドバー
    • ナビゲーション
    • スニペットパネル

などがあります。

ここで紹介した機能はほんの一部なので、時間があるときにでも wiki を見てみるといいと思います。
ぜひ、自分にあった設定を見つけてください。

おわりに

長くなりましたが、かなり快適にレポートや論文を執筆できるようになったかと思います。
もし間違っているところや疑問点がありましたら、コメントでお願いします。
それでは、よい $\LaTeX$ ライフを!

1230
982
26

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1230
982

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?