もう何度目だって感じなんですがquickfix
を使っている例を余り見ないので.
方針
- 共通の設定は
~/.latexmkrc
に書く. - 特別な設定は作業ディレクトリの
.latexmkrc
に書く quickrun
でlatexmk
を呼び出してタプセットする.- 正常終了するときは何も出さない.
- エラーが出たときは
quickfix
から該当の行に飛べるようにする. synctex
機能を使う.
~/.latexmkrc
~/.latexmkrc
$pdflatex="xelatex -synctex=1 -file-line-error %O %S";$pdf_mode=1;$dvi_mode=$postscript_mode=0;
latexmk
の概要については他に記事があると思うので省略.
普段使うのはXeLaTeXなのでそれに合わせて設定する.latexmk
に--xelatex
オプションを付けたときの動作を少し改造した.
付け加えたのは-synctex=1
と-file-line-error
.
前者はsynctex
を使うため,後者はquickfix
で該当の行に飛べるようにするためのもの.
なおlualatex
uplatex
等にも同様のオプションがある.
quickrun
の設定
インストールはdein.vim
使うなりvim-plug
使うなり.
こうした.
$MYVIMRC
letg:quickrun_config = {
\ 'tex': {
\ 'command': 'latexmk',
\ 'exec': ['%c %o %s'],
\ 'outputter': 'error',
\ 'outputter/error/success': 'null',
\ 'outputter/error/error': 'quickfix',
\ }
\}
タイプセットに成功したときは何も出さず,失敗するとquickfix
を出すような設定.
例
上のようなソースで<Leader>r
するとタイプセットが行われ,
下のquickfix
に\undefined
が定義されていないというエラーが出る.quickfix
ウィンドウでカーソルを合わせてEnter
を押すとmain.tex
の4行目に飛ぶ.
課題
ファイル分割に対応していない.
以下の記事のようにするとよさそう.
TeXをもっと便利に使う!(自動コンパイル・部分コンパイル・分割ファイルから親ファイルのコンパイル)【Vim + vim-quickrun + latexmk】
中間ファイルの削除
タイプセットに成功したときは中間ファイルを削除するようにしたい.hook
のsuccess
を使ってlatexmk -c
をしたいけどよくわからない.