Yu's Blog
気ままに書いているブログ。
2018年10月23日火曜日
vimでTexを書く(vim-tex)
レポートをTexで書くのにTexShopを使っていたけどやっぱりvimで書きたくなった。vim-texを導入してみたのでそのメモ+つまずいたところなど。
## vim-texとは 有名なvimプラグインらしくvimでtexが書きやすくなるすごいやつ。バックグラウンドで自動コンパイルしてくれたり、カーソル位置の文章が実際のpdfのどこにあるかを表示してくれたり、目次が見れたり盛りだくさん。vimでtex書くなら入れるしかないと思った。 ## 導入したmacの環境 * macOS Sierra * TexShopインストール済み * あとで出てくる`latexmk`コマンドはこれについてきてたっぽい * iterm 3.2.3 * Skim(pdfビューワー) * vim * vim v8.1 (homebrewでインストール) * nvim v0.3.1 (homebrewでインストール) ## 手順 1. latexmkrcを用意する。 ここでは`latexmk`コマンドがすでにあるものとして進める。このコマンドは`~/.latexmkrc`を設定ファイルとしてつかうので、これをしっかり書いておく。この見つけたサイトを参考にして自分は以下のような感じになった。 ``` #!/usr/bin/env perl $latex = 'ptex2pdf -l -ot "-synctex=1 -file-line-error" %S'; $bibtex = 'pbibtex'; $biber = 'biber -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"; ``` `$latex`の項目がコンパイル用のコマンドらしいので、TexShop.appから使っていたコンパイルコマンドを拝借した。`$bibtex`以降の項目は参考サイトそのまんま。念の為、設定項目についての内容を引用しておく。 >$bibtex
>参考文献参照のための設定. 今回はpbibtexを使用 > >$biber
>biblatexと組み合わせて使うと参照のソートなどもできるらしい.この辺はまた詳しく調べてみる. >-uは-input-encoding=UTF-8の,-Uは-output-encoding=UTF-8のエイリアス. それぞれ入力ファイルと出力ファイルのエンコーディングをUTF-8と指定する --output_safecharsはユニコード文字をエンコードした形で出力させるためのオプション. > >$dvipdf
>中間ファイルであるdviからpdfを生成する際のコマンド.ここではdvipdfmxを使用. >%Oはオプション,%Dは入力ファイル名, %Sは出力ファイル名がlatexmkによって補完される.本来であれば明示しなくても補完してくれるらしいが,dvipdfmxの場合はうまくいかないらしく明示的に書くらしい. > >$makeindex
>索引を作成するコマンド.ここではmendexを使用. >こちらでも変数を明示しておく. > >$max_repeat
>ソースの変更なしでコンパイルできる上限. >警告が出なくなるまでコンパイルしようとして発散するのを防ぐ. > >$pdf_mode
>pdfの出力形式を設定する..
>0:pdf化しない
>1:pdflatexを使用
>2:ps2pdfを使用
>3:dviファイルからpdfを生成
>今回はplatex(dviからpdfを生成)を使うのでモードを3に指定. > >$pdf_viewer
>生成したpdfを開くアプリケーションの設定.僕の環境ではOSX上でskimを使うのでskimを指定. >-gaとするとskimで開くがウィンドウを前面に持ってこない. 引用元:vim+vimtex+latexmkで修論を書く - 雑記帳 http://applepine1125.hatenablog.jp/entry/2017/11/13/021152 もし、設定を確認したかったら自分が過去に書いたTexファイルをコンパイルしてみるといい。うまくpdfがでてきたらそれが多分正解。 1. vim-texをインストール 自分はdein.vimを使っているので、tomlファイルに以下のように追記した。 ``` #tex [[plugins]] repo = 'lervag/vimtex' on_ft = ['tex'] ``` deinは素晴らしい... 1. .vimrcに設定を追記 これも参考サイトそのまま。にわかvimmerであることがバレてしまう... ``` " vimtexの設定 let g:vimtex_compiler_latexmk = { \ 'background': 1, \ 'build_dir': '', \ 'continuous': 1, \ 'options': [ \ '-pdfdvi', \ '-verbose', \ '-file-line-error', \ '-synctex=1', \ '-interaction=nonstopmode', \], \} let g:vimtex_view_general_viewer \ = '/Applications/Skim.app/Contents/SharedSupport/displayline' let g:vimtex_view_general_options = '-r @line @pdf @tex' ``` tomlファイルにadd_hockで書いている記事もあったけど、自分はvimrcでやることにした。 これで導入はこれでOK!この状態texファイルを開くと、\\beginや\\endにカーソルを合わせると対応する\\endや\\beginがハイライトされるようになるので、プラグインが効いているなってすぐわかるはず。 ## vim-texの機能 texファイルを開いて`:nmap`コマンドを叩くとどんな機能があるのかなんとなくわかる。 ``` n \lm @
(vimtex-imaps-list) n \lv @
(vimtex-view) n \lT @
(vimtex-toc-toggle) n \lt @
(vimtex-toc-open) n \lG @
(vimtex-status-all) n \lg @
(vimtex-status) n \lC @
(vimtex-clean-full) n \lc @
(vimtex-clean) n \le @
(vimtex-errors) n \lK @
(vimtex-stop-all) n \lk @
(vimtex-stop) n \lL @
(vimtex-compile-selected) n \lo @
(vimtex-compile-output) n \ll @
(vimtex-compile) n \lq @
(vimtex-log) n \ls @
(vimtex-toggle-main) n \lX @
(vimtex-reload-state) n \lx @
(vimtex-reload) n \lI @
(vimtex-info-full) ``` 自分がよく使うのは以下の4つ * `\ll` 継続コンパイル開始
ファイルを開いたらこれを一発打っておくだけで保存の度にコンパイルしてくれるので、完成品がリアルタイムで見られるようになる。本当にありがたい。 * `\lL` 選択した範囲だけをコンパイルして表示
vで選択した範囲だけをコンパイルして別ファイルとして開いてくれる。数式だけの確認のときは結構便利。 * `\lv` コンパイルしたpdfを開く/カーソル位置を表示
文字通りの機能。これで表示したpdfとvimで画面2分割で書くといい感じ。 * `\lt` 目次を表示 左に目次だけのペインが開く。ここで章を選んでEnterを押せばその章の位置までジャンプできる。 あとはインストールしただけでdeoplateにtexの候補が追加されるので作業効率が格段に上がる。subsubsectionとか打たなくていい。 ## つまずいたところ ### vimで「clientserverが有効じゃない」のエラーがでる 導入直後texファイルを開いたら、「clientserverオプションがないからなにか?をoffにするから」というエラーが毎回出るようになった。しかも保存時の継続コンパイルが動かない。調べて見ると、vimにはそういうオプションがあって普通にインストールするとこれが無効な状態でコンパイルされているらしい。しかも継続コンパイルはこのオプションが必要だと。 オプションの有効化には再インストールが必要なようなので、一度vimを削除してから再インストールした。 ``` $ brew uninstall vim # clientserverオプションにはxquartzが必要らしいのでなければ入れる $ brew cask install xquartz $ brew install vim --with-client-server --with-override-system-vi ``` `--with-client-server`は件のclientserverを有効にするオプション、`--with-override-system-vi`は標準のviより優先度を高くするオプション。 > 参考 > vimtex on macOS でハマったときのメモ - Qiita > https://qiita.com/tYohei/items/8b047b6566bc0c946abd 上記サイトでは`--with-client-server`をつけてインストールしたらInsertModeでクリップボードが使えなくなったと書かれているけど、自分は問題なくコピペも使えている。 ### そもそもコンパイルできない 何のエラーも出なくなったのに、vim-texでコンパイルができなかった。よくよく確認すると`.latexmkrc`の設定がおかしかった。自分はTexShopではptex2pdfを使っていたのだが、導入当初は参考サイトからのまるごとコピペだったのでplatexを使ったコンパイルコマンドを実行していた。基本的にはコンパイルはできるんだが、レポートで使っていたjlistingパッケージはptex2pdfでしか使えないらしくそのせいでコンパイルに失敗していた。TexShopではコンパイルできていたので、TexShopのptex2pdfのコンパイルコマンドをまるごと拝借して上記のような設定になった。 ## おわり これで快適なレポート執筆環境が手に入ったので頑張ってdocxで配布された雛形をtexにして提出し続けていこうと思う。Wordが滅ぶその日まで。
0 件のコメント:
コメントを投稿
次の投稿
前の投稿
ホーム
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿