Diary over Finite Fields

515ひかるが書き溜めたメモとコラムと雑記

Vim の LaTeX 環境を作ってみた

ずっと EmacsLaTeX 文書を書いていたのだけれど, 最近 Emacs Lisp も書く気力もわかなく, LaTeX のためだけに Emacs のことを勉強するのも苦痛になってきたので, とうとう Vim に乗り換えてしまった. たぶんいちばんまともなのは TeXStudio を使うことなのだけれど, まぁ普段日本語を書くとき以外は Vim を使用しているのだが, これを機に Vim の使い方の幅を広げてみようと思ってとりあえず環境をつくり始めていた. だいたい固まってきたので, ここに自分用メモとして(重要)まとめておく.

ちなみに, Vim でやるかと思わせてくれたのは Vim で Beamer を使ってスライドを作った人の完成度が高くてすっげーと思った次第. 僕ミーハーなので……

プラグイン

まず大前提ですが, 僕は NeoVim を使っています. 差はよく知りませんが, 一部のプラグインは NeoVim のみのサポートです.

プラグイン管理は dein.vim, 補完プラグインは deoplete.vim, スニペットは neosnippet.vim. この辺の話は真面目には書かない.

github.com

github.com

github.com

インストール方法などは上記の GitHub などに掲載されているので, 興味のある方は自分で調べるなりなんなりしていただくことにする.

LaTeX 関連のプラグインには vimtex を採用.

github.com

dein.vim で管理している場合は .vimrc に次のように記述.

call dein#add('lervag/vimtex')

ちなみに僕自身はこのプラグインはメインファイルの再帰検索と, latexmk -pvcvim から起動する以外に使ってないので, 実際にはもっと高機能なのだろうけどあまり使い方を知らない. リポジトリの doc を読むなりすべき(僕がサボっているので全く説得力がない).

TeXWiki を参考に次のように設定.

vimtex - TeX Wiki

""
"" vimtex
""
let g:vimtex_latexmk_continuous = 1
let g:vimtex_latexmk_options = '-pdfdvi'
let g:vimtex_view_general_viewer = 'okular'
let g:vimtex_view_general_options = '--unique @pdf\#src:@line@tex'

vimtex というプラグインは latexmk でタイプセットをするので, .latexmkrc はちゃんと設定しておく.

上のコードは let g:vimtex_latexmk_continuous = 1latexmk -pvc を自動で起動させるもの. let g:vimtex_view_general_viewer = 'okular' は, PDF viewer は okular を使う, let g:vimtex_view_general_options = '--unique @pdf\#src:@line@tex'okular --unique コマンドでビューワーを起動するという意味. Windows の設定は TeXWiki を見てね.

再帰検索

たとえば, つぎのようなディレクトリ構成になっていたとする.

├── main.tex
└── src
    ├── section1.tex
    └── section2.tex etc...

このとき, Vim で section1.tex を編集しているがコンパイルの対象は main.tex である, ということはよくある. しかし, この状態で vimtex のコンパイルコマンド :VimtexCompile を起動しても section1.texコンパイルしようとして(\documentclass がないから)失敗する. おそらく一度は経験がある人が多いのでは. それを避けるために, main ファイルを空ファイルを作ることで指定する. すなわち,

├── main.tex
├── main.tex.latexmain
└── src
    ├── section1.tex
    └── section2.tex etc...

という構成にする(main.tex.latexmain は空ファイルでよい). すると, secton1.texvim で開いて :VimtexCompile を叩くと, main.texコンパイルしてくれる. 詳細は :help vimtex 参照.

ちなみに :VimtexCompile のデフォルトのキーバインドがよくわからないので, 自分で割り当てた.

 nnoremap <C-x>t :VimtexCompile<Enter>

これで Ctrl-x , t と入力すればコンパイルが始まる. なに? Emacs っぽいだって? わざとです.

もっと便利にしよう!

スニペットなどを登録すれば自作マクロも補完されるようになったり, いろいろと便利なのでよく使うものはなるべくスニペット作ったりして行きましょうという話. そういうのは Gist に置いてある.

gistc1217ec7f51ed483f966

gist2f9a051a1b74917d16dd

これは僕の自作のもの. 今の所完全手動なのだけど, 自動で登録する方法とかないんかなとか思っていたりいなかったりするし思っているだけだったりする. まぁこれだけでもかなり便利になった.

とりあえず環境がだいたいできてきた. 大学院生になって今までよりは LaTeX 文書を書く機会が増えるようになるのでもっと便利にしていきたいですね.