vim+vimtex+latexmkで修論を書く
久しぶりにvimの話題です
現在M2なのでそろそろ修論を書くためのアレヤコレヤが始まってくる季節だが,やる気が起きないので修論を書かざるをえない状況に自分を追いやるために外堀から埋めていくことにした.
その第一段階が今回の執筆環境のセットアップである.
今まではOSX上のTexShopでたまーに執筆していたが,ここ1年はvimばかり使っていてどこまでvimでできるかチャレンジしてみたくなり,修論もvimで書いてみようと思い立った.
導入の流れ
- vimをインストールする(説明省略)
- texliveをインストールする(vimtexで使うlatexmkもインストールされる)
- vimtexをインストールする
- latexmkの設定
- vimtexの設定
texliveのインストール
TeX Live - TeX Wiki
日本語ドキュメントなのでここを参考にしながらインストールすると楽
これでvimtexでtexをコンパイルする際に必要なlatexmkもインストールされた.
vimtexのインストール
vimのプラグインマネージャを使ってインストールする.
ぼくはdein.vimを使っているのでインストールするプラグインを記述する部分に
#tex [[plugins]] repo = 'lervag/vimtex' on_ft = ['tex']
と記述した.
latexmkの設定
latexmkは~/.latexmkrc内の設定を見て各操作を行う.
latexmk で楽々 TeX タイプセットの薦め(& biblatex+biberで先進的な参考文献処理) - konn-san.com
僕はこのサイトを参考にした.というかほぼそのまま使った.
#!/usr/bin/env perl $latex = 'platex -synctex=1 -halt-on-error'; $bibtex = 'pbibtex'; $biber = 'biber -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; $pdf_previewer = "open -ga /Applications/Skim.app";
$latex
texをコンパイルする際のコマンドを指定.今回は日本語論文なのでplatexを設定.
-synctex=1
にするとエディタとビューワーのカーソル位置と同じ箇所を行き来できる.
-halt-on-error
はコンパイルエラーの際に最初のエラーの時点で処理を終了するオプション
$bibtex
参考文献参照のための設定. 今回はpbibtexを使用
$biber
biblatexと組み合わせて使うと参照のソートなどもできるらしい.この辺はまた詳しく調べてみる.
-u
は-input-encoding=UTF-8
の,-U
は-output-encoding=UTF-8
のエイリアス. それぞれ入力ファイルと出力ファイルのエンコーディングをUTF-8と指定する
--output_safechars
はユニコード文字をエンコードした形で出力させるためのオプション.
$dvipdf
中間ファイルであるdviからpdfを生成する際のコマンド.ここではdvipdfmxを使用.
%Oはオプション,%Dは入力ファイル名, %Sは出力ファイル名がlatexmkによって補完される.本来であれば明示しなくても補完してくれるらしいが,dvipdfmxの場合はうまくいかないらしく明示的に書くらしい.
$makeindex
索引を作成するコマンド.ここではmendexを使用.
こちらでも変数を明示しておく.
$max_repeat
ソースの変更なしでコンパイルできる上限.
警告が出なくなるまでコンパイルしようとして発散するのを防ぐ.
$pdf_mode
pdfの出力形式を設定する.
0:pdf化しない
1:pdflatexを使用
2:ps2pdfを使用
3:dviファイルからpdfを生成
今回はplatex(dviからpdfを生成)を使うのでモードを3に指定.
$pdf_viewer
生成したpdfを開くアプリケーションの設定.僕の環境ではOSX上でskimを使うのでskimを指定.
-ga
とするとskimで開くがウィンドウを前面に持ってこない.
vimtexの設定
vimtexの設定は, vimrc内に以下のように記述している
let g:vimtex_compiler_latexmk = { \ 'background': 1, \ 'build_dir': '', \ 'continuous': 1, \ 'options': [ \ '-pdfdvi', \ '-verbose', \ '-file-line-error', \ '-synctex=1', \ '-interaction=nonstopmode', \], \} let g:vimtex_view_general_viewer \ = '/Applications/Skim.app/Contents/SharedSupport/displayline' let g:vimtex_view_general_options = '-r @line @pdf @tex'
background
latexmkをバックグラウンドで実行するオプション
build_dir
コンパイルしたファイルの保存先を指定.今回はカレントディレクトリでよいので空文字.
continuous
-pvc
と同じような機能のオプション.
保存を検知して自動でコンパイルが走ってプレビューに反映されるようにする.
options
latexコマンド実行時の各オプションを指定.
vimtex_view_general_viewer
とvimtex_view_general_options
でvimtex内でのコンパイル,プレビュー実行の際のビューワーを指定している.
latexmk関連の設定は既にlatexmkrcでしてあるので,正直vimtex_compiler_latexmk
のところは
let g:vimtex_compiler_latexmk = {'options': [ ]}
でも動くのだが,まだ他のオプション等をあまり理解できていないので残してある.
optionsを残してないとうまくコンパイルしてくれないのも理由はよくわかっていないのでまた今度調べる.
実際に操作する
以上でvim上でtexを楽して書く準備ができた.
texファイルを開いて<localreader>ll
(僕の場合は
<localreader>lv
するとカーソル位置に対応したpdf内の位置へとジャンプできる.
<localreader>lc
でコンパイル時の中間ファイルを削除してくれる.因みにこれを走らすと継続コンパイルモードがオフになるのでgitでtexファイルを管理しててgit addする前とかだけ入力している.
他のコマンドは:nmap
すれば色々見える.
おわりに
ここまでvimで楽してtexを書くための諸々の導入について説明してきた.
今はbibファイルを見てvim内で\citeの自動補完したり, 参考文献の自動追加をやろうとしてるのでそれについてもできるようになったらそのうち書く.
参考にしたサイト
Latexmkから学ぶPDF化までの処理の流れ - Qiita
vimtex - Alainp's blog
【メモ】vimtexでLuaTeXの環境構築|rago1975の部屋
latexmk で楽々 TeX タイプセットの薦め(& biblatex+biberで先進的な参考文献処理) - konn-san.com