【LaTex】VSCodeで作る卒論・修論執筆環境【Docker】


この記事は、[鹿児島大学生 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/kagoshima)の8日目の記事です。


![スクリーンショット 2019-12-08 9.03.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128588/6e922aed-ee6e-953c-ebb9-8cd01011c0a4.png)

# やっていき


この時期になるといよいよ卒論や修論を書き始めるぞ、という方が多いのではないでしょうか？
どうせ書くならいい環境を作ってから執筆したいですよね。


2年前、卒論執筆環境は以下の記事を参考に構築したのですが、

- 日常的に使用しているテキストエディタがAtomからVSCodeに変わった
- なんとなくDockerが使えるようになった

といった自身の変化があり、それに合わせた論文執筆環境を構築します。
意外とWordで論文書いてた or 書くつもり という友人・後輩も多かったので、参考になれば幸いです。

(参考)[【必見】Atomで作る快適な論文執筆TeX環境【Mac】【卒論】【LaTeX】](https://qiita.com/ken0nek/items/f98f88c9c45d8499786e#%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB)


# Dockerの導入
まずはDockerの環境です。


macの方はこちらから
・[DockerをMacにインストールする（更新: 2019/7/13）](https://qiita.com/kurkuru/items/127fa99ef5b2f0288b81)

Windowsの方は、
奇しくも[鹿児島大学生 Advent Calendar 2019](https://qiita.com/advent-calendar/2019/kagoshima)7日目の記事がまんまそれなのでこちらを参照してみてください。(さっそくカレンダーが繋がって嬉しい)
[【Docker】Docker for Windowsの環境をセットアップしてDockerを試す](https://gangannikki.hatenadiary.jp/entry/2019/12/07/194000)

# VSCodeの導入

[VSCodeをインストール](https://azure.microsoft.com/ja-jp/products/visual-studio-code/)してください。
インストール後、左のブロックのアイコンから拡張機能を追加できますので、
[Remote Development](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack)をインストールします。

<img width="848" alt="スクリーンショット 2019-12-08 4.15.00.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128588/41c08f1d-f9aa-0959-48e0-32d1a978799a.png">


(参考)
・[VS Code Remote Development で Docker 開発環境を利用する
](https://qiita.com/yito/items/1edd82414dfc2ab2a7bc)・[Dockerで立ち上げた開発環境をVS Codeで開く!](https://qiita.com/yoskeoka/items/01c52c069123e0298660)

余談ですが、VSCode Remoteは本当に便利な機能で、研究室のGPUマシンやGCPのインスタンスにssh接続してVSCode上で開発できるのでとても重宝しています。

# テンプレートをgit clone

[こちら](https://github.com/ken0nek/thesis-sample)のテンプレートをフォークしてオレオレテンプレートを作成しました。
`git clone https://github.com/fuchami/thesis-sample.git`してください。
https://github.com/fuchami/thesis-sample.git


Dockerfileはこちらを参考にしました(ほとんど同じです)
https://github.com/Paperist/docker-alpine-texlive-ja

ハマったところとしては、
- alpine-linuxがbashではなく、ashがデフォルトなところ
- sedコマンドが何故かmacとLinuxでは非互換なところ


sedのスペース要る要らないは初見じゃ絶対分からないです...

(参考)
[sedの-iオプションの非互換](https://qiita.com/blackenedgold/items/3231c8adec40b350cf33)

# 執筆の流れ

#### VSCode Containerへ 
texファイルがあるディレクトリをVSCodeで開いたら、
左下にある青い`><`マークをクリック

#### フォルダーの選択
`Open Folder in Container...`を選択してcloneしてきたディレクトリを開きます。

#### コンテナの選択
コンテナをどこから選ぶか聞かれるので、
`From 'docker-compose.yml'` を選択します。

<img width="599" alt="スクリーンショット 2019-12-08 8.56.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128588/aa052955-ea01-7726-7853-659859c8d260.png">

#### buildを待つ

Dockerのbuildが走るので5分ほど待ちます。
これでDockerでのLatex環境が整いました。

#### Latex Workshopを入れる

<img width="774" alt="スクリーンショット 2019-12-08 9.02.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128588/17f049e5-2bae-9efe-d917-b49fac9873f4.png">
このタイミングで拡張機能の [LaTex Workshop](https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop)も入れましょう。シンタックスハイライトやスニペット機能、VSCode内でPDFファイルが閲覧可能となり、本記事上部の状態が出来上がります。

#### いざ

あとは、下部のターミナルにて、

```.sh
# PDFファイルをコンパイル
$ latexmk thesis.tex

# 監視モードを起動。texファイルが更新されるたびにPDFをコンパイル
$ latexmk -pvc thesis.tex 
```
などなどすればOKです。


![タイトルなし.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128588/e047e99e-4fc2-7c1b-4d59-2a9c3036df58.gif)


# まとめ
Docker&VSCodeを使うことで、環境を汚さずに簡単に論文執筆環境を構築することが出来ました。
VSCode内でPDF閲覧手段がLaTex Workshopでの機能のみ&自動更新が無いのでそのあたりの痒いところに手が届けば完璧かなと思います。