Chanomic Blog

VimでLaTeXを使うための環境構築(Mac)

(last modified:
)

備忘録。基本的にはMacのTerminalでやることを想定。Macをインストールしたての状態を仮定する。

homebrewを使って、TeXLiveとSkimをインストールする。latexmkの設定をした後、vimにdein.vimを入れて、それを用いてvimtexを入れるところまでやる。おまけでvimrcの他の設定や、colorschemeの設定もやる。

注意

なるべくコマンドを載せるようにするが、それを実行しても上手くいかない場合は、公式サイトなどを参照すること。この記事が古くなっていて、打つべきコマンドが変わっている可能性がある。

homebrewのインストール

homebrewをインストールしておくと、いろいろなソフトがbrew (cack) install ...だけでインストールできる。便利なので入れる。

homebrewの公式サイトのインストールを参照。

念のため、Terminalを再起動しておく。

TeXLive(MacTeX)のインストール

TeXLiveの説明についてはWikiを参照。TeX関連のあらゆるパッケージやソフトの詰め合わせ。そのMac版がMacTeX。

MacTeXやそのインストール方法については、Wikiを参照。homebrewをインストールしたので、次のコマンドでインストールできる。以下はmactex-no-guiとしているが、もしguiアプリも入れたい場合はmactexとする。どんなguiアプリが入るのかについてはWikiを参照。

かなり巨大なファイル群のため、インストールにかなり時間がかかった気がする。

$ brew cask install mactex-no-gui
$ sudo tlmgr update --self --all
$ sudo tlmgr paper a4

念のため、Terminalを再起動しておく。

Skimのインストール

SkimとはPDFビュワーの一種で、PDFの自動リロードを行ってくれる。こちらもhomebrewでインストールできる。

$ brew cask install Skim

起動して、環境設定を開く。「同期」タブに移動して、「ファイルの変更をチェック」と「自動的にリロードする」にチェックを入れておく。

latexmkの設定

後でインストールするVimのプラグイン(vimtex)がlatexmkを利用するので、設定しておく。

こちらのページは、latexmkについて分かりやすく説明してくれているので見ておくと良い。

~/.latexmkrcを作成し、内容を以下のようにする。これは上の参考サイトの引用。

#!/usr/bin/env perl
$latex            = 'platex -synctex=1 -halt-on-error';
$latex_silent     = 'platex -synctex=1 -halt-on-error -interaction=batchmode';
$bibtex           = 'pbibtex';
$biber            = 'biber --bblencoding=utf8 -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";

Vimのインストール

恐らく標準で入っていると思われる。もし入っていなかったら以下のコマンドでインストールする。

$ brew install vim

dein.vimのインストール

Vimのプラグインを管理するためのプラグイン。

公式のQuick Startの1を参考に、以下のコマンドを実行。

すると以下のメッセージが表示される。

$ curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > installer.sh
$ sh ./installer.sh ~/.cache/dein
...
Done.                                                                                        

Please add the following settings for dein to the top of your vimrc (Vim) or init.vim (NeoVim) file: 

"dein Scripts-----------------

if &compatible
  set nocompatible               " Be iMproved
endif

...(略)

" If you want to install not installed plugins on startup.
" if dein#check_install()
"   call dein#install()
" endif

"End dein Scripts-------------------------

Done.
Complete setup dein!

言われた通り、"dein Scripts----から"End dein Scripts----までの内容を~/.vimrcに記載する。

ただし、恐らく最後の3行になっているであろう以下の記述はコメントを外しておく。これを行っておくと、vimが起動する度に、登録したプラグインを自動でインストールしてくれる。登録方法については後の項でやる。

if dein#check_install()
  call dein#install()
endif

sourceコマンドを打つか、Vimを再起動する。

helpが見られるようにする

Vimを起動して、以下のコマンドを実行する。

:helptags ~/.cache/dein/repos/github.com/Shougo/dein.vim/doc/

これで、:h deinでdeinのhelpが見られるようになる。

tomlファイルの設定

プラグインの登録は~/.config/dein.toml、遅延ロードしたいプラグインの登録は~/.config/dein_lazy.tomlに記載することにする。遅延ロードとは、ある特定の状況のみプラグインがロードされる仕組みのこと。例えば「挿入モードに入った時」「texのファイルを読み込んだ時」などのタイミングで、然るべきプラグインをロードすることができる。これにより、すべてのプラグインをロードしなくて済むため、vimの動作が遅くなりにくくなる。

:h deinでhelpを開き、tomlという単語で検索をかける。色々調べていくと、結局以下のように設定すれば良いことが分かる。さっき書いた設定ファイルにおいて、dein#load_statedein#beginの直後に文を追加する。

let s:toml = '~/.config/dein.toml` "追加
let s:toml_lazy = '~/.config/dein_lazy.toml` "追加

if dein#load_state('...')
  call dein#begin('...')

  call dein#load_toml(s:toml, {'lazy': 0}) "追加
  call dein#load_toml(s:toml_lazy, {'lazy': 1}) "追加

  ...()

  call dein#end()
  call dein#save_state()
endif

sourceコマンドを打つか、Vimを再起動する。

プラグインの登録

~/.config/dein.tomlを作っておく。とりあえず中身は空にする。~/.config/dein_lazy.tomlの内容を以下のようにする参考

[[plugins]]
repo = 'lervag/vimtex'
on_ft=['tex']
hook_source='''
  let g:vimtex_view_general_viewer = 'displayline'
  let g:vimtex_view_general_options = '-r @line @pdf @tex'
'''    

軽く説明すると、

g:vimtex_view_general_viewerでは、開くPDFビュワーを設定する。ここではdisplaylineを設定している。これはSkimをインストールした際に付属するスクリプト。Skimの公式Wikiを漁ってみたところ、説明はこのページにあった。pdfを、行番号指定付きで開くためのもの。vimtexは<localleader>lvというコマンドで「該当行をハイライトしてpdfを開く」ことが可能なので、その機能の実現のためにdisplaylineを使っているのだと思われる。g:vimtex_view_general_optionsでは、displaylineに指定するコマンドライン引数を設定している。

texファイルのfiletypeをlatexにする

空のtexファイルを作ったときに限って、vimtexが読み込まれない。これは、空のtexファイルのfiletypeはplaintexとして認識されているかららしい(参考)。よく調べたら、:h vimtex-comment-internalにも書いてあった。

~/.vimrcに以下の記述を追加。

let g:tex_flavor = "latex"

localleaderの設定

詳細は:h mapleader:h maplocalleaderを参照。vimtexでは<LocalLeader>llで自動コンパイルモードをオンにしたり、<LocalLeader>lvでpdfを開いたりする。

以下の設定をすることで、<LocalLeader>の部分を半角スペースに設定する。つまり、[Space]ll [Space]lvというコマンドを認識するようになる。

let maplocalleader=' '

vimtexを使う

適当なtexファイルを書いて、

ができる。これでひとまず、LaTeXができる環境が整った。

おまけ

colorschemeの設定

ここではicebergを利用する。dein.tomlにcolorschemeの設定をしてもうまく動かない。:h dein-faqに詳細が載っていたので、それに沿って設定。.vimrcにおいて、dein#load_stateの中と外に文を追加する。別の解決方法もあるみたい。

"dein Scripts-----------------------------

...()

if dein#load_state('...')

  ...()

  " Let dein manage dein
  " Required:
  call dein#add('...')

  " Add or remove your plugins here like this:
  call dein#add('cocopon/iceberg.vim') " 追加

  " Required:
  call dein#end()
  call dein#save_state()
endif

...()

"End dein Scripts-------------------------

set background=dark "追加
colorscheme iceberg "追加

vimrcの設定

そもそもvimでtexを使うような人はvimをよく使っている人がほとんどだと思うので、この節は必要ないかもしれないが…

とりあえずこちらを参考にして、必要なものだけ設定するのがありだと思う。

それに加えて、個人的には以下の設定をやったほうが良い。こちらからの引用。~/.vimrcに追記する。これは、挿入モードに入った時にカーソルの形を変える設定。いま自分が挿入モードとノーマルモードのどちらにいるのかが分かりやすくなる。

" カーソルの形についての設定
if has('vim_starting')
    " 挿入モード時に非点滅の縦棒タイプのカーソル
    let &t_SI .= "\e[6 q"
    " ノーマルモード時に非点滅のブロックタイプのカーソル
    let &t_EI .= "\e[2 q"
    " 置換モード時に非点滅の下線タイプのカーソル
    let &t_SR .= "\e[4 q"
endif

何かわからないことがあったら、こまめに:hコマンドで調べてみると良い。素のvimのhelpなら日本語版もある

参考