シチュエーション
あなたはTeXで資料を作っているところです。
(Beamerでスライドを作っていると置き換えてもいいです)
箇条書きって,書くの面倒くさくないですか?
\begin{itemize}
\item
hoge
\item
huga
\item
piyo
\end{itemize}
ましてローマ数字(I
, II
, ...)で番号を振りたいとなったら
\begin{enumerate}
\def\labelenumi{\Roman{enumi})}
\item
hoge
\item
huga
\item
piyo
\end{enumerate}
書きたいのはhoge, huga, piyoとかなのに。
Vimのformat機能 + pandocを使って解決
gq
コマンドとformatprg
:help formatting
もしくは:help gq
の項を見ると,
gq
(+モーションコマンド)を使えば
-
formatexpr
が空でなければその内容を実行 -
formatprg
が空でなければその外部プログラムが使われる - 上記に当てはまらなければ内部でフォーマッティングが行われる
みたいなことが書いてあると思います。
注目するのは2番めのformatprg
を指定してフォーマットを行う方法です。
文書変換ツールpandoc
pandoc
というツールを使えば,markdownからLaTeXに変換するのも楽ちんです。
したがって,tex形式のファイルにおいてgq
コマンドを実行した時にはpandocを使って選択範囲に対して markdown -> LaTeX 変換を行うようにすれば良さそうです。~/.vimrc
に
augroup texfile
autocmd BufRead,BufNewFile *.tex set filetype=tex
let md_to_latex = "pandoc --from=markdown --to=latex"
autocmd Filetype tex let &formatprg=md_to_latex
augroup END
のように書いておきます。
使い方
texファイルを編集している最中に,「markdownで書いたらすぐなのになぁ」という事案に遭遇したら,とりあえずその場でmarkdownで書いて,範囲選択して,gq
と押したら,その部分がTeX形式に変換されて編集終了です。
まとめ
pandoc万能。Vim拡張性高すぎ。
スニペット挿入機能とかを使ってもいいのかもしれないけれど,そのコマンドを覚えるくらいなら,markdownで書いてしまったほうが速いよねって話。
あと,以前はmarkdownで全部書いてからpandocを通してTeXに変換していたのだけれど,変換後にTeX側を細かく修正してしまい,手直ししようと思うと結局TeXファイルを直にいじることになるので,逆に,基本はtexファイルを直接編集して,書きづらいところだけmarkdownで書くようにすればいいかなと思いました。
例ではTeXのリストしかあげていませんが,画像の貼り付けなどでも威力を発揮するので,TeX書かないといけない人はぜひお試しあれ。
(追記: 2016/07/20)
formatprg
を活用する例
(追記ここまで)