LaTeX
vagrant
初心者

Vagrant Boxを使ってLatexコンパイル環境をラクラク構築

More than 1 year has passed since last update.

概要

tex-boxなるVagrant Boxを作りました。
vagrant upしてSSHするだけで、簡単にLaTeXのコンパイルを行えるようにプロビジョニングされています。
この記事では、このVagrant Boxをつくった背景と、初心者向けの使い方を細かい説明抜きでしてみたいと思います。

背景

作ったきっかけは、毎年僕の研究室に配属される新入生が抱えていたある問題でした。
それはWindows環境へのTeXのコンパイル環境構築でした。

Windowsなどの非Unixライクな環境では、W32TeXやGhostScriptなどを使い無理やりコンパイルができるようにする方法があります。
こうした方法を僕の研究室では、毎年先輩から口頭伝達やブログ参照で伝えられていました。

しかし当然ながらこの方法には以下のような問題が。

  • マシンによっては、途中で失敗したり、何度やっても環境が構築できなかったりすることがある。
  • 今まで動いていたのに、突如Windows Updateか何かの影響で動かなくなる (しかもこういう日に限って論文提出前夜だったりする\(^o^)/)
  • 当然他のマシンでバグの再現もできなければ、原因さえ突き止められないので、アンインストール&再インストールの繰り返し以外に対処法がない
  • マシンとの相性が問題なのに、先輩にはお前が悪いみたいな目で見られて溜息つかれて萎える(;一_一)
  • うまくいっても構築した環境間になぜか違いが出る(例えば同じtexファイルをPDFにしたにもかかわらず、行間や余白がマシンごとに若干違う)
  • そもそもインストール手順が複雑すぎるし面倒だし時間かかる
  • もしブログのソースが突然消えたら...

でも上記の問題の多くはLinuxやMacなら発生しないのです。
学校の推奨環境がWindowsだから仕方なくやっているだけなんです。

そこで僕は思いました。
「こんなことしなくてもVagrantBox作って配ればいいじゃないか」と。

そうです、VagrantでTexのコンパイル用のUbuntuイメージを作成し、スクリプトにまとめて配ってしまえば良いわけです。
こうすればマシン間環境は統一され、どのマシン(たとえWindows以外)でも同じようにTexをコンパイルする環境が
またソースはGitHubに残るので僕以外の誰かによってメンテされていくでしょうし、少なくとも今後10年は消えることはありません

使い方

背景が長くなりましたが、ようやくその後LaTeXコンパイル環境としてプロビジョニングされたtex-boxを公開したのです。

ここではWindowsユーザーで初心者の人向けにgitは使わずにコンパイル環境を整える方法をリポジトリのREADMEよりも掘り下げて解説していきます。

インストール

VirtualBox / Vagrant

まず、VirtualBoxVagrantのインストールが必要です。
これらはWindowsの中に、Linuxのマシンを仮想的に立ち上げるためのツールで、この仮想的なLinuxを「仮想環境」と呼んでいます。

少し古いソースですがこちらを参考にインストールしてください、バージョンは最新のものを使ってください。
またVagrantの基礎知識的な解説は省略しますので、もし時間があればドットインストールとかで勉強してみてほしいです。

putty

続いてputtyを入れます。
puttyは仮想環境にアクセスするためのソフトで、一般にはSSHコマンドと呼ばれるコマンドが使われていますがWindowsでは使用できないためこちらをインストールして使います。
今の時点ではインストールだけで結構です。

tex-box

tex-boxのページの「Download ZIP」からソースをダウンロード後、適当なフォルダに解凍します。

downloadzip.png

フォルダ名はそのままでも良いですが、僕は打つのが面倒になるので"texbox"に改名します。
その後コマンドプロンプトを起動し、解凍したフォルダまでcdしてください
Cドライブ直下にした場合はcd C:\texboxです。

cd.png

仮想環境へのアクセスとTexのコンパイル

vagrantの立ち上げ

cdしたらvagrant upで仮想マシンを起動します。
しばらく時間がかかりますが、勝手に設定してくれるはずなので待ちましょう。

vagrantup.png

puttyを使ったSSH接続

立ち上げが完了し(再びコマンドプロンプトへ入力可能な状態になっ)たら、先ほどのputtyを起動します。
仮想環境へアクセスするのに必要な情報は以下のとおりです。

  • IP: 192.168.33.10
  • PORT: 22
  • User: vagrant
  • Pass: vagrant

はじめにIPとPORTを入力し、下のボックスに適当な名前をつけて保存します。

putty.png

Openで接続を開始します。
Vagrantが正しくインストールされ、vagrant upが成功していれば次のようなログイン画面が出てくるでしょう。

loginas.png

login as(ユーザー名)とパスワードへ"vagrant"を入力して、仮想環境へSSH接続することができました。

success.png

共有フォルダの場所

共有フォルダは仮想マシン内の/vagrantにあり、こことWindows側のtex-boxインストールフォルダ(C:\texboxが対応しています。)

環境 共有フォルダの場所
Vagrant(ゲスト)側 /vagrant
Windows(Host)側 C:\texbox\

実際にputty上でcd /vagrantしてからlsと入力すると、Windowsのtex-box内にあるのと同じファイル名が表示されるはずです。

confirm.png

コンパイル

今回は/vagrant/sample内に移動して、サンプルファイルをコンパイルしてみましょう。
本来コンパイルするためのコマンドは

platex (Texのファイル名=sample.tex)
dvipdfmx (dviのファイル名=sample.tex)

なのでこれを打たないといけないのですが、いちいち入力するのが大変だと思ったのでコンパイル用のシェルスクリプト(convert.sh)を置いてあります。

よってputty上では以下を実行します。

cd /vagrant/sample
./convert.sh

compiled.png

スクリプト実行のため、convert.shの頭に./をつけるのを忘れないで下さい。
上記のコマンドを実行したら、同じ共有フォルダ内にsample.pdfができているはずです。

files.png

コンパイルしたPDFの閲覧

sumatra.png

こうしてあとはtexファイルを編集するたびにputty側で再度./convert.shすればよいのです。
新しくサブフォルダを作ってそこでコンパイルすれば、複数の論文を管理できますし、Texのファイル名が変わったらconvert.shの方も内容を書き換えてくれれば同様に動かせます。

ちなみにAdobe Readerのようなソフトはファイルを開いている間、更新や書き変えをブロックします。
そのため、何度も「閉じる」「コンパイルする」「開く」の繰り返しをするのが嫌な人はSumatraPDFのように、ファイルを閉じることなく更新してくれるビューワーがおすすめです。

終わりに

かなり長くなってしまいましたが、重要部分についてはかなり省略した説明になりました。
あまりUnixやSSH, Vagrant, Shell Scriptに詳しくない人は、これを機に周辺技術を勉強してみてください。
また非エンジニアの方で周りに頼れるエンジニアがいる場合は、その人に助けてもらうのもありでしょう。

自分自身もVagrantを始めたばかりのひよっこなので、tex-boxへのissue, PRは大歓迎です!
機能や改善要望をお待ちしております!!