Mac をリセットしたときの環境構築 (LaTeX, Python, VSCode)

# はじめに

たまに手持ちの Intel Macbook をリセットしたくなるときがあるので、そういうときにpython が実行できて LaTeX でレポートが書ける環境を作るために必要なことを書きます。

# すること
- Homebrew のインストール
- MacTeX のインストール
- Miniconda のインストール
- vscode のインストール・設定

### 実行環境
- Macbook Pro 16-in. (2019) Intel コア
- macOS Monterey 12.6.2

### 注意事項

コマンドを実行しても上手くいかない場合は、とりあえずターミナルの再起動を試してください。
それでもダメだったらごめんなさい。

# homebrew のインストール
いろんなものをインストールする際に Homebrew は必須です。
Homebrew のウェブサイトからコマンドを拾ってきて実行します。

https://brew.sh/

```terminal
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

XCode のコマンドラインツールのインストールを促される場合がありますが、言われるがままにインストールしましょう。

以下のように実行してバージョンが確認できれば成功です。
```terminal
$ brew -v
Homebrew 3.6.15
```

# MacTeX のインストール　
TeX についてあまり詳しくありませんが、自分は MacTeX をインストールして LuaLaTeX を使うことにしています。
GUI は特に必要ないと思っているので mactex-no-gui をインストールします。GUI が必要ならば mactex をインストールします。
```terminal
$ brew install --cask mactex-no-gui
```
途中、
```terminal
Warning: No available formula with the name "libtiff". Did you mean libff?
```
と出てきてたので libff をインストールしようとすると
```terminal
$ brew install libff
Error: Could not 'git stash' in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core!
Please stash/commit manually if you need to keep your changes or, if not, run:
  cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
  git reset --hard origin/master
...
```
などと言われます。言われるがままにして実行し直します。
```terminal
$ cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
$ git reset --hard origin/master
$ brew install --cask mactex-no-gui
...
🍺  mactex-no-gui was successfully installed!
```

無限時間かかりますが気長に待ちます。自分はワールドカップの決勝戦を見ていました。アルゼンチンおめでとう！
以下のようにバージョンが表示されれば成功のはずです。

```terminal
$ lualatex -v
This is LuaHBTeX, Version 1.15.0 (TeX Live 2022)
```


# Miniconda のインストール

python の仮想環境を Miniconda を使って構築します。
まずはインストールします。ウェブサイトから好きな方法でインストールします。

https://docs.conda.io/en/latest/miniconda.html

Miniconda にパスが通っていることを確認します。以下のよう miniconda を使う設定になっていれば成功です。
```terminal
$ which python3
/Users/[usr_name]/opt/miniconda3/bin/python3
```

### 仮想環境の構成

conda 環境を使えば簡単に仮想環境が構築できます。好きな名前で以下の通りに作成します。

```terminal
$ conda create -n env_name
```

できたか確認します。以下の通り名前とパスが出てくれば成功です。
```terminal
$ conda info -e
# conda environments:
#
base                  *  /Users/[usr_name]/opt/miniconda3
env_name                 /Users/[usr_name]/opt/miniconda3/envs/[envi_name]
``` 

デフォルトでは仮想環境にはほとんど何も入っていないので色々インストールします。
**まずは仮想環境をアクティベートします。** これが一番大事です。
```terminal
$ conda activate env_name
```

きちんと仮想環境の中に移動していることを確認してから、必要なパッケージをインストールしていきます。
ありがちなパッケージをまとめてインストールしてみます。
```terminal
$ conda info

     active environment : env_name
...
$ conda install numpy  pandas matplotlib seaborn jupyter
```
以下のコマンドでパッケージがインストールできているか確認できます。
```terminal
$ conda list
# packages in environment at /Users/[usr_name]/opt/miniconda3/envs/env_name:
#
# Name                    Version                   Build  Channel
blas                      1.0                         mkl  
bottleneck                1.3.5           py310h4e76f89_0  
brotli                    1.0.9                hca72f7f_7  
...
```

使い終わったらディアクティベートできます。
```terminal
$ conda deactivate env_name
```



# VSCode のインストール・設定
VSCodeをダウンロードしてきて、インストールします。簡単にできるはずです。

https://code.visualstudio.com/download


### 種々のパッケージをインストールする
普通にインストールします。

- LaTeX Workshop
- Python
- Jupyter
- Quarto
- Marp for VS Code

上2つがあればとりあえずやっていけるはずです。
下2つについてはここで解説しませんが Markdown ベースの便利な文書作成システムです。

### LaTeX Workshop の設定
`Cmd + Shift + P` でパレットを開き、settings と入力して `settings.json` ファイルを開きます。
ユーザーの方とデフォルトの方が出てきますが、ユーザーの方の `settings.json` を編集します。
以下の内容を記述します。
```json:settings.json
{
	// for build
	"latex-workshop.latex.autoClean.run": "onBuilt",
	"latex-workshop.latex.clean.fileTypes" :[
		"*.aux",
		"*.bbl",
		"*.blg",
		"*.idx",
		"*.ind",
		"*.lof",
		"*.lot",
		"*.out",
		"*.toc",
		"*.acn",
		"*.acr",
		"*.alg",
		"*.glg",
		"*.glo",
		"*.gls",
		"*.fls",
		"*.log",
		"*.fdb_latexmk",
		"*.snm",
		"*.synctex(busy)",
		"*.synctex.gz(busy)",
		"*.nav",
		"*.vrb",
		"*.xml"
	],
	"latex-workshop.latex.autoBuild.run": "onSave",
    
	// pdf viewr
	"latex-workshop.view.pdf.viewer": "tab",

    // recipes
	"latex-workshop.latex.recipes": [
		{
			"name": "LuaLaTeX",
			"tools": [
				"lualatex"
			]
		},
		{
			"name": "LuaLaTeX + biber",
			"tools": [
				"lualatex",
				"biber",
				"lualatex",
				"lualatex"
			]
		},
		{
			"name": "Infinite LuaLaTeX",
			"tools": [
				"lualatex",
				"lualatex"
			]
		},
    ],

	"latex-workshop.latex.tools": [
        {
			"name": "lualatex",
			"command": "lualatex",
			"args": [
			"-synctex=1",
			"-interaction=nonstopmode",
			"-file-line-error",
			"%DOC%",
			]
		},
		{
			"name": "lualatex=non-synctex",
			"command": "lualatex",
			"args": [
				"-interaction=nonstopmode",
				"-file-line-error",
				"%DOC%",
			]
		},
		{
			"name": "biber",
			"command": "biber",
			"args": [
				"%DOCFILE%"
			]
		},
    ]
}


```
- `autoClean.run` : `.out` や `.log` など、コンパイル時に pdf と一緒に生成されるファイルを削除するよう設定します。`onBuilt` でコンパイル時に消すように設定でき、他には `onFail` でコンパイル失敗時に削除、`never` で無効化します。

- `clean.fileTypes` " : どの拡張子を消すか選択します。デフォルトで以下のほぼ全てが消されるよう設定されていますが、LuaLaTex でコンパイル時に出てくる `.run.xml` ファイルを消したいので追加しています。
- `autoBuild.run` : セーブ時に自動でコンパイルしてくれるように設定しています。`onFileChange`　や `never` も選択できます。
- `pdf.viewer` : VSCode 内のタブで生成した pdf を見せてくれるよう設定します。

- `recipes` : 下で設定した tools を用いてどういう手順でコンパイルするか決めます。基本的には `lualatex` で一度コンパイルすれば pdf が出てきますが `biber` が使いたい場合は `LuaLaTeX + biber` を使い、参照が正しく表示されないと気は `Infinite LuaLaTeX` を使うと上手くいきます。
- `tools` : `lualatex` の設定はほぼデフォルト通りです。`-synctex=1` を設定することで、⌘+クリックで pdf 上の位置を参照することができます。`biber` は bibLaTeX を使うためのものです。特に細かい設定なしで動きます（texファイル内での使い方は割愛します。）

TeX ファイルを保存して pdf が出てくれば成功です。
LuaLaTeX の書き方にはまだ慣れないのでテストファイルを置いておきます。
上手く pdf が生成されれば成功です。

```tex:sample.tex
\documentclass[]{ltjsarticle}

\begin{document}
これは\LaTeX のサンプルです。

\[
    u(\nu, T) = \frac{8\pi h \nu^3}{c^3} \frac{1}{\exp(\dfrac{hc}{\lambda k T}) - 1}
\]

\end{document}
```

### Python の実行環境設定

まずは上で作成した仮想環境を実行環境に設定します。
右下に python のバージョンが書いてあるところをクリックするとインタープリタの選択肢が出てくるので使いたい仮想環境を選択します。
`⌘ + Shift + P` から python interpreter などと検索すれば同じ設定が探せます。

![Screen Shot 2022-12-22 at 21.04.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277926/02040e4e-c61b-ad04-51a3-a9f4dab387de.png)


実際の実行の仕方ですが、正直よくわかんないですがちょちょっと実行して計算する分には jupyter で十分だと思います。
Jupyter パッケージをインストールしておけば、あとは色々機能が使えます。
ファイル内に `##%` と記述するとそこから下を1つのセルと見なして実行ができるようになります。
自分はこれが便利でよく使っています。

# おわりに
これで一通りの環境が構築できたはずです。
書きそびれたことがあったら追記する気がします。

# おまけ
### 最近のおすすめ本
キネマの神様：学校をサボって映画を観る生活までもを肯定してもらえるような気持ちになります。これを読んで映画オタクになってください。

### 最近のおすすめ映画
恋人までの距離（原題 : Before Sunrise）： ハラハラしないんだけど観終わると充足感のある、素敵な映画です。みてね。
# 参考文献

- [Homebrewのupdateが上手くいかない時にしたこと](https://qiita.com/sys_cat/items/e417abdfdf1aac5c54b0)
- [ゼロからVSCodeでTeX環境構築（Mac Big Sur）](https://zenn.dev/thor/articles/732c3e007f77ee)
- [Home -  James-Yu/LaTeX-Workshop Wiki](https://github.com/James-Yu/LaTeX-Workshop/wiki)