Skip to content

最近のVim+LaTeX事情

Published: at 05:29

メインで使っているのはMacBookPro Late 2013だが(そろそろ買い換えたい), MacBookPro Early 2015をバイト先で支給されて自由に使えることになったので, LaTeX環境を構築しようと思った.
MacTexをインストールしようと思っていたけど,「それDockerでよくない?」と言われて確かに,となった.
なぜ今まで気が付かなかったんだろう.

“texlive docker” で適当に検索をかけると既存のイメージがヒットした.
harshjv/texlive-2015 public - Docker Hub

これをpullして手持ちの.texをコンパイルしてみると,includegraphicsで エラーを吐かれて画像が全く出力されなかった.
どうやらImageMagickあたりが足りていないようだったので, 必要なパッケージを追加インストールするだけのDockerfileを作ってビルドしたらコンパイル通った.
GitHub - itkq/docker-texlive2015

これまでVimでLaTeXのコンパイルは,Quickrunを使ってlatexmkを呼ぶように設定していた. そのため,Docker上のlatexmkを呼ぶように設定を変更する.

パスの通った場所に次のスクリプトを作成して実行権限を与える.

~/bin/latexmk

. ~/bin/docker-latex.sh
init
docker run --rm -v $(pwd):/var/texlive $(get_image_name) latexmk

~/bin/docker-latex.sh

#!/usr/bin/env bash

function get_machine_name() {
  echo dev
}

function get_image_name() {
  echo texlive2015
}

function init() {
  local MACHINE=$(get_machine_name)
  if ! docker-machine ls | grep $MACHINE | grep -q "Running"; then
    docker-machine start $MACHINE
  fi
  docker ps > /dev/null 2>&1
  if [ $? -ne 0 ]; then
    eval $(docker-machine env $MACHINE)
  fi
}

.vimrc中のQuickrunの設定を次のように変更する.

" Quickrun
let g:quickrun_config = {
  \ "_" : {
  \     "runner" : "vimproc",
  \     "runner/vimproc/updatetime" : 40,
  \     'outputter' : 'error',
  \   }
  \ }
let g:quickrun_config["latexmk"] = {
  \ "command"   : "latexmk",
  \ "outputter/error/error" : "quickfix",
  \ "exec"      : "%c",
  \ }
autocmd BufWritePost *.tex :QuickRun latexmk

これでローカルの.texファイルを保存する度にDocker上でlatexmkが走るようになった.
Skimで自動更新プレビューしておくとさらに便利.また,Vim-LaTeXを導入して次の設定をしておくと,\lvでSkimを立ち上げることができる.

let g:Tex_DefaultTargetFormat = 'pdf'
let g:Tex_ViewRule_pdf = 'open -ga /Applications/Skim.app'