Vim の ft-tex-syntax で \reffig も \ref と同様にハイライトする方法

Vim で LaTeX を書く、とにかく書く、はい、書きましょう。

\ref は、\label で設定した章や図表の番号を参照するための LaTex コマンドです。例えば、図の場合、

Figure~\ref{fig:bird}

みたいに書くと参照できますが、

プリアンブル部(main.tex の \documentclass から \begin{document} までの間の部分)に、

\newcommand{\reffig}[1]{Figure~\ref{#1}}

とか書いておくと、

\reffig{fig:bird}

だけで上記の Figure~\ref{fig:bird} と書いた時と同じになったりするんですね。とまぁ、ここまでは知ってる人も使ってる人も多いと思います。

問題は、\reffig に対して、\ref で行われるようなシンタックス処理が行われないことなんです。例えば、ラベルに _(アンダースコア)を使った場合、LaTex では、アンダースコアは特別な意味を持っているので、エラーとして表示されてしまいます。そんなの気にならない、という人は、ここまで読んでそっとこのページを閉じてください。「あ、それ、気になってた!」という人は続きを読んでください。

先に結論を書くと、.vimrc の syntax on の後?に、

autocmd FileTYpe tex syntax region texRefZone matchgroup=texStatement
      \ start="\\ref\(fig\|tab\|sec\|eqn\|chap\|alg\){"
      \ end="}\|%stopzone\>"
      \ contains=@texRefGroup

と書くと、reffig, reftab, refsec, refeqn, refchap, refalg が、ref と同じようにシンタックス処理されるようになります。別のファイルに書く方法もありますが、設定ファイルを増やしたくない場合はこれがおすすめです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です