概要

今回は私が使っているTeXのエディタ環境を紹介します.

注目機能は以下の通りです.

  • .latexmkでコンパイル
  • 中間生成物を build ディレクトリにまとめる
  • コード補完
  • コード整形
  • TeXコードのとなりにPDFを表示
  • SyncTex: TexファイルとPDFの相互ジャンプ
  • VSCode Vim を使えばvimキーバインドが使える

環境構築

TeXのインストール

TexLiveがいいでしょう.

VSCodeのインストール

Microsoft Visual Studio Code

もうすでに入ってますよね?

拡張機能の追加

以下のVSCode拡張機能をインストールしましょう.

  • LaTeX Workshop
  • Vim (オプション)

VSCodeの設定

デフォルトの設定ではなぜかTeXのコンパイルが通らなかったので,以下の設定を行います.

Ctrl+,でVSCodeの設定を開き, 右上の{}アイコンをクリックして, ワークスペースの設定を選び, settings.jsonに以下の内容を追加します.

ダウンロード: .vscode/settings.json

{
    // 自動保存
    "files.autoSave": "afterDelay",
    // ビルドコマンド
    "latex-workshop.latex.recipes": [
        {
            "name": "latexmk",
            "tools": [
                "latexmk"
            ]
        },
    ],
    "latex-workshop.latex.tools": [
        {
            "name": "latexmk",
            "command": "latexmk",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdfdvi",
                "%DOC%"
            ]
        },
    ],
    // 大きなプロジェクトでは毎回クリーンしない方がいい
    "latex-workshop.latex.clean.enabled": false,
    // .latexmk に書かれたディレクトリに設定すること
    "latex-workshop.latex.outDir": "%DIR%/build",
    // Viewer関係
    "latex-workshop.view.pdf.viewer": "tab",
    "latex-workshop.view.pdf.zoom": "page-width",
}

キーボードショートカットの追加

コマンドパレットCtrl+Shift+PPreferences: Open Keyboard Shortcuts Fileとタイプすると開かれる keybindings.jsonに以下の内容を追記します.

ビルド,クリーン,シンクのショートカットを追加します.

他のショートカットと干渉しないように,TeXファイルを編集中ときだけ適用されるようにします.

[
	{
		"key": "ctrl+alt+b",
		"command": "latex-workshop.build",
		"when": "resourceLangId == latex"
	},
	{
		"key": "ctrl+alt+c",
		"command": "latex-workshop.clean",
		"when": "resourceLangId == latex"
	},
	{
		"key": "ctrl+alt+s",
		"command": "latex-workshop.synctex",
		"when": "resourceLangId == latex"
	}
]

.latexmkrc の追加

TeXにはplatexやlualatexなど様々なコマンドがありますが,エディタのビルド設定を変更してしまうと,コマンドが違うプロジェクトごとにいちいち設定を変えなければならなくなります.

それを解決するために,latexmkというビルドコマンドがあります.

texファイルと同じディレクトリに.latexmkrcという設定ファイルを置くと,そのファイルに書かれたビルドコマンドでビルドしてくれるので,エディタ側の設定を変更する必要がなくなります.

また,コンパイル時に散らかりがちな中間生成物を build ディレクトリにまとめる処理も書かれています.

ダウンロード: .latexmkrc

#!/usr/bin/env perl
# file          .latexmkrc
# author        Ryotaro Onuki
# created_at    2019.01.25
# modified_at   2019.02.05

## latex commands
$latex            = 'platex -synctex=1 -halt-on-error';
$latex_silent     = 'platex -synctex=1 -halt-on-error -interaction=batchmode';
$bibtex           = 'pbibtex -kanji=utf8';
$dvipdf           = 'dvipdfmx %O -o %D %S';
$makeindex        = 'mendex %O -o %D %S';
$max_repeat       = 5;

## pdf mode
$pdf_mode         = 3; # 0: none, 1: pdflatex, 2: ps2pdf, 3: dvipdfmx

## output directory
$aux_dir          = "build/";
$out_dir          = "build/";

使い方

ビルド

デフォルトではTeXファイルを保存すると自動でビルドされます.

画像を変更したときなど,強制的にビルドしたいときは,コマンドパレットでLatex Buildとするか, 上記で設定したキーボードショートカットCtrl+Alt+Bを押します.

PDFの表示

Ctrl + Alt + V でPDFが表示されます.

SyncTex

SyncTexとは,TeXのソースファイルとPDFでカーソルの位置を同期する機能です.

VSCodeのPDFビューワはSyncTexに対応しているので,TeXファイルとPDFファイルの該当箇所を行き来することができます.

PDF -> TeX

PDF上の文字に対し,Ctrlを押しながらマウスでクリックします. すると,TeXソースファイルのその部分にジャンプします.

TeX -> PDF

コマンドパレットCtrl+Shift+PSyncTexとタイプするか, 上記で設定したCtrl+Alt+Sを押します. すると,PDF上の該当箇所にジャンプし,ハイライトされます.

コード補完

単語の一部を入力すると,候補が表示されます.

ESCなどで候補を閉じてしまって,もう一度表示したいときは,Ctrl+Spaceで再表示できます.

コード整形

コマンドパレットCtrl+Shift+PFormatとタイプするか, ショートカットキーShift+Alt+Fでインデントなどがきれいに揃います.

また,表やalignの&もそろって表示され,とても見やすくなります.

\begin{align*}
	\dot{x}      & = \cos \theta u_1          \\
	\dot{y}      & = \sin \theta u_1          \\
	\dot{\theta} & = \frac{1}{l}\tan \phi u_1 \\
	\dot{\phi}   & = u_2
\end{align*}

これは プラグイン latex-formatterの機能です.

ビルドに失敗したら?

とりあえず,中間生成物をすべて消去して,クリーンビルドを試しましょう.

その他

VSCode の最大の魅力は F1または Ctrl+Shift+P を押して実行できる コマンドパレット だと思います.

コマンドパレットでlatexなどと入力すると,コマンドの候補がいろいろ出てきますので,是非いろいろ試してみてください!

まとめ

私自身もそうですが,つい快適な環境を求めて環境構築に熱中しがちです.

言うまでもないですが,TeXの文章を書くとき,一番大事なのは書きやすさではなく,書く内容です.

しかし,書く内容に専念するためにも,心地よいTeX環境があるといいですよね!

もし時間があったら,VSCodeに移行してみてはいかがでしょうか.