[備忘録]macOSにTeX-Emacs環境を構築する手順

#1. はじめに
この記事はmacOS端末にEmacsとLaTeXをインストールするまでの手順をまとめた備忘録です．ここでは，これまでQiitaに投稿した記事を引用しながら，ソフトウェア・パッケージ等のインストールの手順を整理しています．

将来，EmacsやLaTeXの導入方法についてさっぱり忘れてしまった場合でも，こちらの記事を参照すれば難なく環境構築できるようにするという方針に基づいて記事を書いています．そのため，くどいと感じる内容となっています．

またこの方針に関連して，設定ファイルは極力1つに集約することを目指します．Emacsであれば，初期化ファイル`~/.emacs.d/init.el`に各種設定をまとめます．そうすれば，新しく環境構築をする手間を少なくすることができます．

なお，Emacs環境の構築については入力支援環境（パッケージ）のYaTeXの利用を前提としています．YaTeXまで必要ないという方は，依存関係に注意しながら，適切に読み飛ばしていただければと思います．同様の入力支援環境であるAUCTeXについては利用したことがないのでわかりません．なぜYaTeXなのか，と聞かれたら初めて利用したのがYaTeXだった，が答えです．日本人がAUCTeXよりもYaTeXのユーザーの方が多い（らしい）というのは後付けです．






##1.1. 作業環境
環境は主に次の通りです．記事によってバージョンが異なる場合もあります（が，ほとんど同じなので影響ないと思います）．

- macOS: Catalina 10.15.5

##1.2. 最終的にインストールする環境

- Emacs: emacsmacport (Emacs 26.3)
- TeX: MacTeX-2020


#2. 手順

#2.1 手順

以下，これまで書いた記事を引用しながら，TeX-Emacs環境を構築する手順を整理します．

**Step 1:** Homebrewを使ってemacsmacport (Emacs 26.3)をインストールする．

- 手順：[こちらの記事](https://qiita.com/walking_with_models/items/7d618aed1c045e507ea2)
- 内容：XcodeとHomebrewのインストールを行った後にEmacsをインストール．

**Step 2:** Homebrewを使ってMacTeX-2020をインストールする．

- 手順：[こちらの記事](https://qiita.com/walking_with_models/items/0f2ba9e2c359e95c032c)．
- 内容：Homebrewを使ってMacTeX-2020をインストール．
- MacTeXのインストール自体はHomebrewを使って行い，その後はMacTeX(TeXLive)のパッケージ管理プログラムtlmgrを使って作業を進めますが，その準備としてTeXパッケージリポジトリのTLContribを登録します．そして，このリポジトリ登録にはRSA暗号鍵のやり取りに必要なソフトウェアのGnuPGをHomebrewでインストールします．

**Step 3:** Emacsの初期化ファイル`init.el`の用意とパッケージリポジトリMELTA等の追加，及びパッケージ管理ツール（のパッケージ）use-packageをインストールする．

- 手順：[こちらの記事](https://qiita.com/walking_with_models/items/66bedf2316859ae3657e)
- 内容：Emacsの初期化ファイル`init.el`を用意し，そこに必要なコードを記入することで，パッケージリポジトリの登録やパッケージ管理ツールのためのパッケージをインストールします．

**Step 4:** YaTeX等をインストールする．

- 手順：[こちらの記事](https://qiita.com/walking_with_models/items/29383fe960e8f187c65b)
- 内容：まずuse-packageを使ってYaTeX，RefTeX，company(-math)の順にパッケージをインストールします．

**Step 5:** Emacsでスペルチェックを行う環境をインストールする．

- 手順：[こちらの記事](https://qiita.com/walking_with_models/items/da8eaf4afa39cf4ecd4a)
- 内容：Homebrewを使ったAspellをインストール．use-packageを使ったパッケージFlyspellのインストール．

**Step 6:** EmacsでBibTeXファイルの管理を行うEbibをインストールする．

- 手順：[こちらの記事](https://qiita.com/walking_with_models/items/6ed3d540f470fc0f7ce1)
- 内容：use-packageを使ってBibTeX管理パッケージEbibをインストール．

**Step 7:** EmacsとSkimを連携させる．

- 手順：[こちらの記事](https://qiita.com/walking_with_models/items/b54c824021e83260bf25)
- 内容：Homebrewを使ってPDFビューアーSkimをインストールした後，Skimの環境設定とEmacs初期化ファイル`init.el`の設定でBackward Searchの機能を実装し，初期化ファイル`init.el`の設定でForward Searchを実装します．


##2.2 コメント

- 一番最初にMacTeX及びその周辺のインストール（**Step 2**の内容）を持ってくることも可能です．その方が流れ（MacTex関連のインストール->Emacs関連のインストール）が分かり易いですよね．作業しながら記事を書いていて最初にEmacsをインストールしたことから，現在のような手順になってしまいました．
- **Step 5**から**Step 7**については，この順序でなければならないというものではありません．YaTeXと関連させて利用する場合，**Step 4**以降に行う以上の意味はありません．
    - なお，現時点では**Step 6**はYaTeXとの関連がないため，**Step 4**より前に行っても問題ありません．


#3. おわりに

このように整理してみると，MacTeX及びEmacsの環境を整備するのって素人の自分にでも十分できるものだなあと感じました．それを可能にしているのは，パッケージ管理システムでしょうか．MacTeXとEmacsのインストールではHomebrew，MacTeX関連のパッケージ管理についてはデフォルトで同梱のtlmgr，Emacs関連のパッケージについてはMELPA(-stable)というリポジトリとパッケージ管理のためのパッケージ（ややこしい！）use-packageの存在が欠かせません．インストールする時間は掛かりますが，作業内容自体は難しくないと思います．

ちなみに，この記事やここでリンクしている一連の記事は今後も適宜改訂する可能性があります．特に，Emacsのパッケージに関する内容は加筆するかもしれません．**Step 6**のEbibについては，単にインストールするだけの内容です．それ以外にも，使ってみたいパッケージがあるので，インストールする際に整理できればと思います（いつになるかはわかりませんが...）．


最後に，重要な注意点です．ここでの整理で不十分な内容はアンインストールやアップグレードについてです．一連の記事を整理したのは，新品のMacBookやiMacを購入して，それに最新のTeX-Emacs環境をインストールすることがきっかけだったためです．10年くらい前に試行錯誤でTeX-Emacs環境を構築したときと比べると，素人にはよくわからないパスの設定とか，面倒な作業を回避することができるようになったのはかなりの進歩です．しかし，今後予想されるアップグレードに際して，ここで整理した方法が頑健かはよくわかっていません．上記の一部の記事ではアップグレード時の対応について整理している部分もありますが（フォントのリンクを更新する作業），それ以外は特に問題ないか，と聞かれても私にはわかりません．今後の課題です．

#3.1 VSCode?

近年はVSCode (Visual Studio Code)というエディタを使ってLaTeXを使う方法も出てきているようです（Emacsはオワコン？）．VSCodeのユーザーが急速に増えているのが背景にあるようです．私自身はプログラマーではないし，VSCode人口の急速な増加を額面通りに受け取る意味はないのですが，より簡単にTeX環境を構築できるとなれば気にせざるを得ません．

この点，VSCodeは[LaTeX Workshop](https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop)という拡張機能を使えばLaTeXの編集環境を構築できるようです．さらに，YaTeX-likeな拡張をしてくれる[CaTeX](https://konn-san.com/articles/2018-11-26-happy-latex-with-catex.html)なるものも登場しているようです．VSCode内でPDFを出力したり，SyncTeXのようなBackward/Forward Searchもできるようです．さらに，マウスオーバーやSnippetsといった機能はとても魅力的です（@moinslut氏の[記事](https://qiita.com/moinslut/items/bc1d1b1e13cb38377406)）．

残る課題は文献関連が弱い？ということでしょうか（誤りならすいません）．RefTeXのような参考文献の引用ができないっぽいですし（[StackExchangeの投稿](https://tex.stackexchange.com/questions/377526/visual-studio-code-as-latex-ide)に基づいく．3年も前の記事なので注意が必要）．個人的には，`C-c [`で参考文献を挿入するといった機能やEbibのような文献管理パッケージの存在は移行するための必要条件です．

VSCodeであってもLaTeX環境構築の手間は掛かるし，中途半端な機能のままで移行する理由はないように思います．特に，ここで整理したようにEmacs環境の構築は作業時間（主にダウンロード時間）がかかるとしても難しくない場合はそう言えるのではないでしょうか．私のようなライトユーザーは自身でElispを使ってゼロからカスタマイズするわけでもなく，既存のパッケージをインストールしたり，少し修正するくらいなので，Elispへの投資を理由にVSCodeへの移行を考えるわけにはいきません．プログラマーでもないので，VSCode人口が増えているからといって急いで乗り換える必要もありません．もう少し様子を見ていきたいと思います．

##3.1.1. VSCodeへ移行しない理由が「EmacsではOrg-modeが使えるから」にはなり得ない？

VSCode人口の急速な増加とEmacs人口の減少を目の当たりにすると，プログラマーでないにしても，やはり「なぜEmacsを使うのか？」という理由を考えざるを得ません．

残念ながら，この問いに対する回答を持ち合わせていません（なんとなく使い慣れてて，好きだし，移行が面倒くさい以上の理由が）．しかし，この問いを意識することで，Emacsに対する理解が深まることは間違いありません（もちろん，VSCodeに対しても）．例えば，今回TeX-Emacs環境構築について整理している中で，Org-modeという存在を知りました！これは10年以上Emacsを使っている私が大きな声で言うのは大変恥ずかしいことなんでしょうけどね（LaTeXのファイルを直接編集することしかやってなかったんです）．

興味深いことに，Emacs愛好家の人々にはこのOrg-modeをEmacsを使う理由に挙げている場合がよく見られます（いや，あくまで印象です）．実際，Org-modeに関する動画や記事を調べたり，使ってみたりすると，便利です．個人的にはアウトライナーの機能が魅力的です（Beamerへ出力する）．

しかし，VSCodeにはOrg-modeを使うための拡張機能[VS Code Org Mode](https://vscode-org-mode.github.io/vscode-org-mode/)が存在します．Emacsと比べると関連するパッケージの数自体は少なくてOrg-modeを使うならEmacsに軍配が上がりそうと推測していますが，Org-modeの存在をEmacsを使い続ける理由にはもはやできなくなっている状況ではないでしょうか．

このような状況で新しい問いとして持ち上がるのは，「VSCodeでEmacsで使ってたような機能を拡張機能として実装できるけど，その実装自体に手間暇が掛かるとすれば，EmacsからVSCodeに移行する意義が薄れるのではないか」（特に，VSCodeの環境構築が簡単という理由で移行している場合）だと思います．

もちろん，VSCodeを使うか否かは機能性と環境構築のための時間費用のバランスや個人的な好みだけの要因では決まりません．職場や業界の人たちが何を使っているか，使っている人が多いほどコミュニケーションやコラボがし易いといった，経済学でいうところの「ネットワーク外部性」も当然影響します．

引き続き様子を見ながら，そして自身が必要とする機能を見極めながら，Emacsを使い続けるのか否かを検討していきたいと思います．