MacでVSCodeを使ってtexを編集する環境構築をしてみたよ

VSCodeを使ってLateXを使えるようになりたい。今までは、[Overleaf](https://ja.overleaf.com/)や[Cloud Latex](https://cloudlatex.io/)のオンラインエディターを使ってLatexを書いていていました。Overleafは共同編集ができて便利なのですが、なにぶんデータサイズが大きくなるとコンパイルがtime outするようになって限界を感じました。仕方なく自分のPCにTex環境を作ることにしました。

MacにTex環境を構築する方法はたくさん解説があります。自分も最初は下記の記事を参考に進めてみました。しかし、自分の環境では次の記事の通りに実行してエラーで止まる箇所があってこの記事の通りにやるのは諦めました。結局、MacTeXを使わずにVSCodeでLateXを編集できるようになったみたいなので、そのやり方をまとめます。

https://qiita.com/DaikiSuyama/items/d463c5b7afdabc5fcde5#fn-6

# 目標
・VSCodeでLateXを編集できる
・MacTeXを使わずにbasictexのみでLatexを動かす
・VSCode上で.texを保存するとpdfが自動更新される
→MacにTex環境を構築する王道はMacTeXだと思うのですが、MacTeXは4GBくらい容量を食うそうなのでできれば入れずにできると嬉しい

-まだできてないこと
・コンパイルはpdfLatexでやっているので日本語対応できてないです、pLateXやLuaLaTeXの日本語対応のLateXを使えるようにしたい
・

# 環境
OS: macOS Monterey Version 12.7.3
Processor: 1.6 GHz Dual-Core Intel Core i5

・Homebrew、VSCodeは既にインストール済み

# うまくいった実施事項

(1) Homebrewのアップデート
```
brew update && brew upgrade && brew cleanup
```

(2) BasicTeXのインストール
```
brew install --cask basictex
```

ここで、`/usr/local/texlive/2024basic/bin/universal-darwin`内に`tlmgr`がインストールされるので確認しましょう。`2024basic`がBasicTeXのバージョンに対応して変わるみたいです。

(3) tlmgrのアップデート
```
export PATH=$PATH:/usr/local/texlive/2024basic/bin/universal-darwin
sudo tlmgr update --self --all
```
最初は`tlmgr`のPATHが通ってないのでエラーが出ます。最初にexportでPATHを通し、tlmgrのupdateをします。


(4) latexmkのエイリアスを設定
```
alias latexmk='/usr/local/texlive/2024basic/bin/universal-darwin/latexmk'
```
ここで、コンパイルしたい`test.tex`を用意して次のコマンドを実行するとpdfを作成してくれるはずです。

```
latexmk -pdf hoge.tex
```


(5) latexmkrcの作成
```
touch ~/.latexmkrc
```
これでまず、ホームディレクトリに.latexmkrcを作ります。この.latexmkrcをVSCodeで開いて次を書き込みます

```
# 最大のタイプセット回数
$max_repeat = 5;
# DVI経由でPDFをビルドすることを明示
$pdf_mode = 3;

# pdfLaTeXを使う
# -halt-on-error:初めのエラーで終わらせる
$latex = 'pdflatex %O %S -halt-on-error';

# pBibTeXを使う(参考文献)
$bibtex = 'bibtex %O %S';

# Mendexを使う(索引)
$makeindex = 'mendex %O -o %D %S';

# DVIからPDFへの変換
$dvipdf = 'dvipdfmx %O -o %D %S';

```

基本的に[参考の記事](https://qiita.com/DaikiSuyama/items/d463c5b7afdabc5fcde5#fn-6)と同じですが、`latex = 'pdflatex %O %S -halt-on-error';`のところが、platexをpdflatexに置き換えています。

(6) VSCodeの設定 その1 〜LaTeX Workshopのインストール〜

1. アクティビティバーの拡張機能マークをクリック（四角が4つあるマーク）
2. LaTeX Workshopと検索
3. LaTeX Workshopのインストールをクリック
4. `cmd + shift + P`でコマンドパレットを表示．
5. `LaTeX Workshop: Build with recipe` > `latexmk` を選択

(7) VSCodeの設定 その2 〜settings.jsonの設定〜
`settings.json`を開いて、次を貼り付けます。[参考の記事](https://qiita.com/DaikiSuyama/items/d463c5b7afdabc5fcde5#fn-6)ほぼそのままですが、`"latex-workshop.latex.tools"`の`"args"`に`"-interaction=nonstopmode"`を追加しています。これによりコンパイル中にエラーで止まってしまうことを回避します。他の設定が既にある場合は、`{}`で全体を括り、最後以外の全ての設定の後ろに`,`を忘れずに打ちます。

```json-doc
{
    //----other settings----

    //----latex settings----
    //viewerをタブで開く
    "latex-workshop.view.pdf.viewer": "tab",
    //intellisenseを有効にする
    "latex-workshop.intellisense.package.enabled": true,
    //生成ファイルを格納するディレクトリ名
    "latex-workshop.latex.outDir": "",
    //自動でPDFを更新
    "latex-workshop.latex.autoBuild.run":"onFileChange",
    //生成ファイルで削除するファイル
    "latex-workshop.latex.autoClean.run": "onBuilt",
    "latex-workshop.latex.clean.fileTypes": [
        "*.aux","*.bbl","*.blg","*.dvi","*.fdb_latexmk","*.fls","*.synctex.gz","*.toc"
    ],
    //ビルドの動作
    "latex-workshop.latex.recipes": [
        {
            "name": "latexmk",
            "tools": ["latexmk"]
        },
    ],
    //ビルドのコマンド
    "latex-workshop.latex.tools": [
        {
            "name": "latexmk",
            "command": "latexmk",
            "args": [
                "-interaction=nonstopmode",
                "-l",
                "%DOC%",
            ]
        },
    ]

    //----other settings----
}
```

以上で一回VSCodeを再起動します。それでVSCode上で.texを保存するとpdfが自動更新されるようになりました。

# うまくいかなかった実施事項
途中までは[参考の記事](https://qiita.com/DaikiSuyama/items/d463c5b7afdabc5fcde5#fn-6)を参考にして進めたので、その際のエラーを列挙します。

(0) MacTeXのインストール
```
brew install --cask mactex-no-gui 
```
ここで下記のエラーが出ました。


-エラー1: `Failed to download resource "openjpeg"`
mactexをインストールするときいろんな物も一緒にインストールするんですが、そのうちのopenjpegがインストールできないとのこと。次のようにbrewでopenjpegを別個にインストールすることで次に進みました。
```
brew install openjpeg
```

-エラー2: `Failed to download resource "ghostscript"`
openjpegと同様にghostscriptがインストールできないとのこと。これも、次のようにbrewで別個にインストールすることで次に進みました。

```
brew install ghostscript
```

-エラー3: `Cask 'mactex-no-gui' conflicts with 'basictex'.`
basictexとmactex-no-guiが競合するというので、次のようにbasictexを一回アンインストールしました。するとこのエラーは消えます。
```
brew uninstall basictex
```


-エラー4: `No space left on device - fcopyfile`

"Instaling Cask mactex-no-gui"を実行中にストレージの容量がいっぱいになって止まりました。いらないファイルを消してきれいにして続けました。

# その他参考にしたサイト

https://qiita.com/nebusoku3e/items/abcc675f83ad388b1b8c

https://qiita.com/lon9/items/50c6086b79e073a73da0

https://pyteyon.hatenablog.com/entry/2019/12/24/225305

https://texwiki.texjp.org/?BasicTeX