VSCodeで快適に卒論を書く

[こちら](https://adventar.org/calendars/2281)のアドベントカレンダーの13日目の記事になります。

この記事は、「Visual Studio Codeで卒論を書けばストレスなく書けるよ！」というのを伝えたい記事です。

## 快適なところ
- `.tex`ファイル保存時に自動でpdf作成、pdfプレビュー。
- スニペット + IntelliSenseで楽に書ける
- 普段コードを書くように作業できる（`[⌘+C]`1行コピー、`[⌘+/]`コメントアウトなどのショートカットがそのまま出来る。）
- 画像ファイルをrenameしたい時もVSCode上で完結できる
- そのまま研究室サーバーにアップしたいなどやりたいこと大体プラグインで解決できる

個人的には、普段コードを書くように作業できるのが非常にストレスなくて気に入ってます。

こんな雰囲気です(一応中身サンプルにして解像度落としました）
気合で感じ取ってください。
![スクリーンショット 2017-12-12 16.05.09.png](https://qiita-image-store.s3.amazonaws.com/0/83373/371194bb-8b7a-8e60-1bc1-079c61d56fad.png)

## ぶっちゃけイケてない所
- （Macだと？）エラー文が文字化けするので、記述ミスが見つけづらい。
 - こまめにコンパイルしとくと良いです。
- コンパイル方式が色々あることで、違う方式だと先輩の論文が読み込めない。
 - pdfでもらいましょう。

## VSCode + Tex
環境構築については[VS CodeでTeXを使う方法 - elechoのぶろぐ](http://elecho.hatenablog.com/entry/2017/04/27/175500)が非常によくまとまっているので参考にして下さい。

※1 私はTeXLive 2017を使用しました。
※2 現在は、記事にある`LaTeX Language Support`は入れる必要ないです。

拡張機能である「[LaTeX Workshop](https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop)」を入れるだけで、以下が出来るようになり超快適になります。

- 保存時、コンパイル
- 分割画面でpdfプレビュー
- スニペット + IntelliSense

ちなみに、`latex`の`language id`が使用できるようになるので、個別の設定追加もできます。

タイプセットの設定の[ptex2pdf](https://texwiki.texjp.org/?ptex2pdf)について補足。
> ptex2pdf は uplatex, euptex, uptex, platex, eptex, ptex の中から指定したコマンドと dvipdfmx とを連続して実行する Lua スクリプトです．

```setting.json
  "latex-workshop.latex.toolchain": [
        {
            "command": "ptex2pdf",
            "args": [
                "-l",
                "-ot",
                "-kanji=utf8 -synctex=1",
                "%DOC%"
            ]
        }
    ]
```

|args|説明|
|:--|:--|
|-l|platexを使用する|
|-ot|Texコンパイラオプションを使用する|
|-kanji=utf8|ファイルの文字コードにutf8指定|
|-synctex=1|SyncTeXを使うようにする<br>（編集行にあたるpdfの箇所にジャンプできるようになる）|
|%DOC%|出力ファイル名の指定。詳しくは[LaTeX-Workshop#faq](https://github.com/James-Yu/LaTeX-Workshop#faq)|

## VSCode + スタイルファイルの読み込み
大学、研究室では指定されている論文のスタイルファイルがあると思います。
`.sty`のやつですね。他にも`.cls`など色々あります。

基本的に、`.tex`ファイルと同ディレクトリにあれば読み込んでくれるのですが、Tex側で管理させるようにした方が、作業フォルダを分けた際のストレスがなくなります。

1. スタイルファイルの文字コード変更
 - Macの場合はスタイルファイルがshiftjisだと読み込めないので、nkfなどで、utf8に変換。
2. `/usr/local/texlive/2017/texmf-dist/tex/latex/`配下にコピー
 - TeXLive 2017 + Macの場合です。。Windowsだとどうなんでしう。。
3. `sudo mktexlsr`
 - これをしないと参照できないです。
 - [一覧表の更新 (mktexlsr) について](https://texwiki.texjp.org/?LaTeX%E5%85%A5%E9%96%80%2F%E5%90%84%E7%A8%AE%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E5%88%A9%E7%94%A8#tc299bdb)

> 「あらかじめファイルの一覧表を作っておき，ファイルを探すときにはそれを参照する」という仕組みで，この一覧表 (ls-R) を作るコマンドが mktexlsr です。



## VSCode + 研究室サーバー
私の研究室では、研究室サーバーへの提出を促されます。

最初はFileZillaというFTPクライアントアプリを使ってアップロードしていたのですが、毎回起動するのも面倒なのでVSCodeからアップロードしてます。

VSCodeには[stfp](https://github.com/liximomo/vscode-sftp)というありがたいプラグインがあるのでそれを使います。

1. 拡張機能sftpをインストール
2. `Ctrl+Shift+P` -> `SFTP: config`コマンド実行
 - `.vscode/sftp.json`が作成されます。
3. `sftp.json`内に設定を記述
 - 各項目はsftpリポジトリの[README.md](https://github.com/liximomo/vscode-sftp#config)を参照して下さい。
 - 下記は私の設定項目だけ抜粋してます。

```.vscode/sftp.json
{
    "host": "研究室サーバURL",
    "username": "ユーザー名",
    "password": "パスワード",
    "protocol": "sftp",
    "remotePath": "アップロードパス",
    "ignore": [
        "**/.vscode/**",
        "**/.git/**",
        "**/.DS_Store",
        "*.DS_Store"
    ]
}
```
あとは、アップロードしたいときに`SFTP: Upload`コマンドを実行すればアップロード完了です。とても快適。

（え、Gitで管理してるだって！そんなあなたに つ [CircleCIで卒論リポジトリを研究室サーバに自動アップロードする](https://qiita.com/y428_b/items/f146634b5b5b57e58c02)）


## VSCode + 卒論 どうですか
卒論を初めた5月頃からこのVSCode環境でやっていますが、問題なく出来てます。
友達にまだWordでやってるひとや、TexStudio動かなくなった人が居たらおすすめしてみてください。