TeXShop + VSCode + git on Mac 設定 メモ

# 前提
+ pdfファイルが欲しい
+ VSCode上で完結させる
    + CLIはなるべく使いたくない
+ latexmkで以下を一括で起爆する
    + uplatex
    + upbibtex
    + biber
    + upmendex
    + dvipdfmx
    + 1回のコマンド内で済む
+ gitでバージョン管理したい
    + 致命的なミスを回避したいので
+ macOSでスマン



## 下準備


### gitインスコ
```
$ brew install git
$ echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bashrc
$ source ~/.bashrc
```
homebrew入れてない人は適宜に導入してくれたほうが良い
シェルのパスも通しておこうな（VSCodeから叩きたいので）

### VSCodeインスコ

```
brew install --cask visual-studio-code
```


### TeXShop on Macインスコ
[ここ](http://tug.org/mactex/)から`.pkg`を落とす
適当に全部インスコする
こっちはなんとなくだがhomebrewはおすすめしない
TeXの管理にhomebrewを使うのは直感的ではなさそう




# 設定



## GUIアプリケーション

## TeXShop
実質的に不要（使わないので）

## TeX Live Utility
適宜にライブラリをアプデしておこう
ちなみに年度バージョン切り替えはこれじゃないと面倒



## git
実質的に不要（GitHub使わないなら）



## VSCode


### latex関係

+ 拡張機能の欄を開いて`LaTeX`で検索
+ 以下をインストール
  + `LaTeX Workshop`
  + `LaTeX Utilities`
+ `LaTeX Workshop`の「拡張機能の設定」を開く
  + 右上の「設定（json）を開く」を選択
+ `settings.json`に以下をコピペ

```json:settings.json
{
"files.associations": {
    "*.sty": "latex",
    "*.cls": "latex"
},
"latex-workshop.latex.tools": [{
	"name": "latexmk",
	"command": "latexmk",
	"args": [
	"-e","$latex=q/uplatex %O -synctex=1 -interaction=nonstopmode -file-line-error %S/",
    "-e","$bibtex=q/upbibtex %O %B/",
    "-e","$biber=q/biber %O --bblencoding=utf8 -u -U --output_safechars %B/",
    "-e","$makeindex=q/upmendex %O -o %D %S/",
    "-e","$dvipdf=q/dvipdfmx %O -o %D %S -z 0/",
    "-norc",
    "-gg",
    "-pdfdvi",
    "%DOC%"
	]
}],
"latex-workshop.view.pdf.viewer": "tab",
"latex-workshop.chktex.enabled": true,
"latex-workshop.chktex.delay": 0,
"latex-workshop.latex.autoBuild.run": "never",
"latex-workshop.latex.watch.delay": 0
}
```
+ 設定内容イメージ
  + ビルドにlatexmkを指定する
     + uplatexとdvipdfmxの組み合わせを想定 
     + 最終ビルドでは`"$dvipdf=q/dvipdfmx %O -o %D %S -z 0/"`を`"$dvipdf=q/dvipdfmx %O -o %D %S -z 3/"`にしておくとファイル容量がむちゃくちゃ減少
     + これを雛形からやろなんて思たらクソダルいしコピペした方がええでマジ
  + セーブ時の自動ビルドを無効化する
  + pdfビューワをtabで開く
  + chktex（エラー検出ソフト，デフォルトでTeXLiveに入ってる）をオンにする
  + スタイルファイル（スクリプト置き場）`.sty`とクラスファイル（雛形設定置き場）`.cls`をlatexファイルとして扱う


### git関係

+ 拡張機能の欄を開いて`@popular git`で検索
+ 以下をインストール
  + `Git History`
  + `GitLens`
  + `Git Graph`
  + `Project Manager`
  + `gitignore`
  + `Git Blame`
+ とりあえずこれででいいと思います…




# 使い方



+ ルートフォルダを開き.`tex`ファイル，`.sty`ファイル，`.cls`ファイルを用意する
 + `.bib`ファイルも必要なら
 + 画像とかを管理するフォルダは別に作った方がよさそう
+ `.tex`ファイル，`.sty`ファイル，`.cls`ファイルを開いて編集する
+ 様式を満たした上で右上の再生ボタンを押す
  + latexmkなので1回で完全にビルドされる
  + 「View LaTeX PDF File」するとpdfが開く
     + でも動作が重いので別のビューワを持ってきた方がいいよ
  + エラー吐いたらコンパイラのログを読もう
     + ggれば高確率で[TeX Wiki](https://texwiki.texjp.org/?TeX%20%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%83%A1%E3%83%83%E3%82%BB%E3%83%BC%E3%82%B8)のどこかにぶち当たる
+ ワークスペースを保存しておく
  + 次回以降にVSCodeを立ち上げると勝手にセッティングしてくれるので
+ gitが用意できているなら
  + 初回は拡張機能から`git init`
     + 画像とかあると時間がかかる，気を付けてね
  + 更新したらステージング，気が済んだらコミット
     + ブランチ，マージ，スタッシュ…などはそれ専用の解説記事を見てくれた方がいいです
+ 日本語の名前を使ってるフォルダかファイルがあると**新規ファイルの追加でエラー吐く**（ステージングできなくなる）
  + どうやらVSCode拡張機能gitのステージングは**絶対パスを使ってスクリプトを打ってる**らしく，そのどこかに日本語が入っているとgitがエラーを吐く
  + ターミナル開いて`git add -A`するとできる場合がある
     + こっちは相対パスで動いてるくさい（`../a/b/c`みたいなヤツか？）
     + ルートフォルダ含むプロジェクト内で日本語を使わなければこれで解決しそう
+ Git Graph
  + 更新履歴をツリーで見せてくれる
+ Git History
  + 更新履歴を細かく見せてくれる
+ GitLens
  + コミット当時のファイルと現在編集中のファイルを比較してくれる
+ Git Blame
  + GitLensのコンパクト版


## 初回でルートフォルダを選択し作業スペースとして開いたらgit系拡張機能が勝手に`$HOME`をルートフォルダにして大量にファイルを漁り始める件について

+ 選択したフォルダの中に`.git`がないと勝手にそうなっちゃうらしい
  + 自動`git init`はされないっぽい
  + `settings.json`に`"git.autoRepositoryDetection": "subFolders"`を入れればこの動作自体は止まるっぽい
+ ちゃんと`git init`で`.git`を作ってからブラウザやタブを再読み込みすると治るっぽい
  + シェルはちゃんと移動しているので安心してくれ


# このやり方の利点

### gitが有能
+ 自分の進捗が時刻や変更箇所と共に記録されるので，単純に進度管理にも便利だと思います
+ 取り返しのつかないミスをした時のリカバリーにもなると思います
+ パターンを分けながら制作する時にも役に立つと思います

### VSCodeが有能
+ 圧倒的補完機能
+ 圧倒的検索機能
+ 圧倒的拡張機能
+ 圧倒的GUI