[macOS + VSCode] ローカルでLaTeXを書けるようにするよ [TeX Live 2025]

Overleafとかよくわからないので

# macOS上でローカルでLaTeXを書けるようにする
:::note info
macOSに乗り換えて間もない人が書きました
多分1からの解説になりますよん
:::

# 動作環境
* Computer: MacBook Air 13-inch, M3, 2024
* OS: macOS Sonoma 14.5 → macOS Sequoia 15.5
* Homebrew: 4.3.2 → 4.5.3
* Mac TeX: 2024.0312 → 2025.0308

# 手順
以下の通りに進めてください
すでにやっている/分かっているところは飛ばしてOKです

## -2. LaTeXって何
[調べてね](https://texwiki.texjp.org/?LaTeX%E5%85%A5%E9%96%80)

## -1. ターミナルの起動
WindowsでいうコマンドプロンプトないしPower Shell．
`⌘ + スペース`でSpotlight検索を呼び出します
`ターミナル`（`terminal`)と打てば候補にターミナルアプリケーションが出てくるので開いてください

Launchpadの中を探してもあります

## 0. 隠しフォルダの表示設定
Finderが選択された状態で(デスクトップ上，あるいはなんか開いた状態のFinderウィンドウを選択)，`⌘ + Shift + .`を押すと，半透明で隠しフォルダが出てきます．もう一回押すと消える
トラブル対応時とかに便利なので推奨

Macintosh HDで試すとわかりやすい
![Screenshot 2024-05-31 at 23.47.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659604/a8e6b282-d40c-93f6-3d6c-e2e00ba8f482.png)

以降の解説はこの設定を前提とします

## 1. Homebrewのインストール
HomebrewとはmacOS(とUnix)のパッケージマネジメントソフトですね
[公式サイト](https://brew.sh/)に載ってるコマンドをターミナルに打てばOK

典型的にはこれです↓
```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

### パスを通す
インストール後，英語でパスを通せ🤪🤪と言われるので，指示に従ってコマンドを打ってね

典型的には以下の通りだと思います
```
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/(ユーザ名)/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
```
ターミナルが何も処理していないことを確認したのち，`⌘ + Q`で終了させて，再び起動させてください

:::note warn
どうしてもうまくいかないなら，`/Users/(ユーザ名)/.zshrc`を開いていじいじしてね
PATH=と書いている行(複数表に見えていても実は1行)の**最初**に以下を書く
```
/opt/homebrew/bin:
```
すると，`.zshrc`は以下のようになります．
```.zshrc
ごちゃごちゃ
PATH=/opt/homebrew/bin:ごちゃごちゃ
```

(ここにHomebrew本体の他，Homebrewでインストールするソフトウェア(のエイリアス)が入ります．最初に書かないとvimなどは標準で入っているものが優先されてしまいます)

ターミナルの終了，再起動も忘れずに
:::

ターミナルで`brew -v`と打った時に，`zsh: command not found: brew`とか言われたらパスがうまく通ってないよ．よく見直ししてください．

:::note alert
.zshrc内にPATH=が二つあったりするとうまくいきません．一つにまとめてください
なんかのソフトのせいでそのようになっていることがあります
:::

`brew -v`で`Homebrew 4.3.2`みたいになったら成功です．次に進む

## 2. MacTeXのインストール
MacTeXなるものをHomebrewでインストールします．TeX LiveというローカルでTeXを動かすやつをmacOS用にチューンナップしたみたいなやつです．

ターミナルで以下を打つ
```
brew install --cask mactex-no-gui
```
MacTeXは公式のインストール方法だと環境にファイルをまき散らかすらしいが，Homebrewを用いれば安全にインストールできるらしい
no gui版じゃないとApplicationsにいらんGUIアプリケーションがごちゃごちゃ入ってきちゃいます

### TeX Liveのアップデート
MacTeX内のTeX Liveをアップデートするよ
sudoなのでパスワードを聞かれたらmacのパスワードを打ちます
```
sudo tlmgr update --self --all
sudo tlmgr paper a4
```
時間がかかるので待ちます．

:::note warn
`zsh: command not found: tlmgr`と言われたら，ターミナルを再起動するか，以下を打ちます
`2025`の部分など，TeX Liveのバージョンによって違うと思うので，本当に以下の場所にtlmgrがあるかFinderで確認しに行ったほうがいいよ
```
sudo /usr/local/texlive/2025/bin/universal-darwin/tlmgr path add
```
:::


## 3. VSCodeの準備
[ここ](https://code.visualstudio.com/)からVSCodeをダウンロード
ちなみにVSCode = Visual Studio Codeね．Microsoftが作ったエディタです

LaTeX Workshopなる拡張機能をインストールしてください．
以下はインストール済みの画像
![Screenshot 2024-06-01 at 0.22.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659604/0e94f6e1-d8df-119e-9f0e-5d0e21af3583.png)

ここまで終わったら，拡張機能の設定に入ります

### 拡張機能の設定
左下の⚙️ボタンを押し，設定をクリックします

![Screenshot 2024-06-01 at 0.28.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659604/c446c549-3738-5e1d-1412-72970419974b.png)

こんなの開くので，右上の![Screenshot 2024-06-01 at 0.28.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659604/7d05837e-f279-7ea4-f735-0401ac8e744c.png)をクリックしてください．settings.jsonが開きます

```json:settings.json
{

    [ココ]

    ごちゃごちゃ
}
```


多分上のようになっているので，`[ココ]`ってとこに以下を書きます
なお，[こちらの記事](https://qiita.com/fuku_uma/items/e5ad46125a9612320273#mac%E3%81%AE%E5%A0%B4%E5%90%88)を参考にしています
```json:settings.jsonの[ココ]ってとこ
    // ------------ LaTeX ここから -----------------
    // 設定: LaTeX Workshop
    
    // LaTeX Workshop ではビルド設定を「Tool」と「Recipe」という2つで考える
    //   Tool: 実行される1つのコマンド。コマンド (command) と引数 (args) で構成される
    //   Recipe: Tool の組み合わせを定義する。Tool の組み合わせ (tools) で構成される。
    //           tools の中で利用される Tool は "latex-workshop.latex.tools" で定義されている必要がある。
    
    
    "latex-workshop.latex.recipes": [
        {
    //論文用レシピ
            "name": "platex",
            "tools": [
                "platex",
    //            "pbibtex",
                "platex",
    //            "mendex",
                "platex",
                "dvipdfmx",
                "move",
                "delete"
            ]
        }
    ,
        {
    //要旨用レシピ
            "name": "preliminary",
            "tools": [
                "platex",
    //            "pbibtex",
                "platex",
    //            "mendex",
                "platex",
                "dvipdfmx",
                "move",
                "delete"
            ]
        }
    ],
    "latex-workshop.latex.tools": [
        {
            "name": "platex",
            "command": "platex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-kanji=utf8",
                "-shell-escape",
                "%DOCFILE%.tex"
            ]
        },
        {
            "name": "dvipdfmx",
            "command": "dvipdfmx",
            "args": [
                "%DOCFILE%.dvi"
            ]
        },
        {
            "name": "pbibtex",
            "command": "pbibtex",
            "args": [
                "-kanji=utf8",
                "%DOCFILE%"
            ]
        },
        {
            "name":"move",
            "command":"cp",
            "args":[
                "%DOCFILE%.pdf",
                "out"
            ]
        },
        {
            "name":"mendex",
            "command":"mendex",
            "args":[
                "-r",
                "-c",
                "-g",
                "-s",
                "dot.ist",
                "-p",
                "any",
                "%DOCFILE%.idx"
            ]
        },
        {
            "name":"delete",
            "command":"rm",
            "args":[
            "-f",
            "%DOCFILE%.aux",
            "%DOCFILE%.bbl",
            "%DOCFILE%.blg",
            "%DOCFILE%.dvi",
            "%DOCFILE%.idx",
            "%DOCFILE%.ilg",
            "%DOCFILE%.ind",
            "%DOCFILE%.lof",
            "%DOCFILE%.log",
            "%DOCFILE%.lot",
            "%DOCFILE%.toc",
            "%DOCFILE%.synctex.gz",
            "%DOCFILE%.pdf"
            ]
        }
    ],
    // latex-workshop.latex.magic.args: マジックコメント付きの LaTeX ドキュメントをビルドする設定
    // '%!TEX' で始まる行はマジックコメントと呼ばれ、LaTeX のビルド時にビルドプログラムに解釈され、
    // プログラムの挙動を制御する事ができる。
    // 参考リンク: https://blog.miz-ar.info/2016/11/magic-comments-in-tex/
    "latex-workshop.latex.magic.args": [
    "-f", "-gg", "-pv", "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOC%"
    ],
    
    // latex-workshop.latex.clean.fileTypes: クリーンアップ時に削除されるファイルの拡張子
    // LaTeX 文書はビルド時に一時ファイルとしていくつかのファイルを生成するが、最終的に必要となるのは
    // PDF ファイルのみである場合などが多い。また、LaTeX のビルド時に失敗した場合、失敗時に生成された
    // 一時ファイルの影響で、修正後のビルドに失敗してしまう事がよくある。そのため、一時的なファイルを
    // 削除する機能 (クリーンアップ) が LaTeX Workshop には備わっている。
    "latex-workshop.latex.clean.fileTypes": [
        "*.aux", "*.bbl", "*.blg", "*.idx", "*.ind", "*.lof", "*.lot", "*.out", "*.toc", "*.acn", "*.acr", "*.alg", "*.glg", "*.glo", "*.gls", "*.ist", "*.fls", "*.log", "*.fdb_latexmk", "*.synctex.gz",
        // for Beamer files
        "_minted*", "*.nav", "*.snm", "*.vrb",
    ],
    
    // latex-workshop.latex.autoClean.run: ビルド失敗時に一時ファイルのクリーンアップを行うかどうか
    // 上記説明にもあったように、ビルド失敗時に生成された一時ファイルが悪影響を及ぼす事があるため、自動で
    // クリーンアップがかかるようにしておく。
    
    "latex-workshop.latex.autoClean.run": "onBuilt",
    
    // latex-workshop.view.pdf.viewer: PDF ビューアの開き方
    // VSCode 自体には PDF ファイルを閲覧する機能が備わっていないが、
    // LaTeX Workshop にはその機能が備わっている。
    // "tab" オプションを指定すると、今開いているエディタを左右に分割し、右側に生成されたPDFを表示するようにしてくれる
    // この PDF ビュアーは LaTeX のビルドによって更新されると同期して内容を更新してくれる。
    "latex-workshop.view.pdf.viewer": "tab",
    
    // latex-workshop.latex.autoBuild.run: .tex ファイルの保存時に自動的にビルドを行うかどうか
    // LaTeX ファイルは .tex ファイルを変更後にビルドしないと、PDF ファイル上に変更結果が反映されないため、
    // .tex ファイルの保存と同時に自動的にビルドを実行する設定があるが、文書が大きくなるに連れてビルドにも
    // 時間がかかってしまい、ビルドプログラムの負荷がエディタに影響するため、無効化しておく。
    "latex-workshop.latex.autoBuild.run": "never",
    
    "[tex]": {
        // スニペット補完中にも補完を使えるようにする
        "editor.suggest.snippetsPreventQuickSuggestions": false,
        // インデント幅を2にする
        "editor.tabSize": 2
    },
    
    "[latex]": {
        // スニペット補完中にも補完を使えるようにする
        "editor.suggest.snippetsPreventQuickSuggestions": false,
        // インデント幅を2にする
        "editor.tabSize": 2
    },
        
    "[bibtex]": {
        // インデント幅を2にする
        "editor.tabSize": 2
    },
    
    
    // 使用パッケージのコマンドや環境の補完を有効にする
    "latex-workshop.intellisense.package.enabled": true,
    
    // 生成ファイルを "out" ディレクトリに吐き出す
    "latex-workshop.latex.outDir": "out",
    "editor.unicodeHighlight.allowedCharacters": {
        "，": true,
        "．": true
    },
    //レシピの設定
    "latex-workshop.latex.recipe.default":"lastUsed",
```
pbibtexやmendexを使う場合は，適宜レシピ(`"latex-workshop.latex.recipes"`)中のコメントアウトをはずしてください

---
pbibtexやmendexの使い方は以下の記事がとてもわかりやすいです

https://qiita.com/fuku_uma/items/185c8694486db945f4f7#pbibtex

https://qiita.com/fuku_uma/items/6aa0853b5fcc3a85537b

---

あとは，てきとーなTeXファイル作って，`⌘ + S`で保存して`⌘ + ⌥ + B`でビルドすれば勝手にコンパイルされてout/***.pdfが出てくるよ
```latex:test.tex
\documentclass[dvipdfmx]{jsarticle}

\title{タイトル}

\begin{document}

\maketitle

\section{セクション}

\LaTeX だよ〜ん

\end{document}
```

![Screenshot 2024-06-01 at 0.46.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2659604/95fec6ce-2d3e-47ab-6d7f-384683d23189.png)
コンパイル後，`⌘ + ⌥ + V`でTeXファイルとpdfファイルを左右に表示すると，以降コンパイル時に変更内容がすぐに確認できて便利だよ．

# 環境のアップデート
TeX Liveおよびmactex-no-guiはバージョンアップされていきます(配信タイミングは典型的には年度の初め付近？)
適当なタイミングでアップデートしてやると良いです
一応バックアップを取ることをお勧めします
## mactex-no-guiのアップデート
まずhomebrewくんをアップデート
```
brew update
```
次にmactex-no-guiのバージョン確認
```
brew info mactex-no-gui
```
上のコマンドを打つと以下のように出ます．
```
==> mactex-no-gui: 2025.0308
https://www.tug.org/mactex/
Installed
/opt/homebrew/Caskroom/mactex-no-gui/2025.0308 (5.9GB)
・・・
```
矢印`==>`の先が配信されている最新バージョン，Installedの下にあるパスのバージョンが現在インストールされているバージョンです．
最新版があれば，以下でmactex(および古いパッケージやCask)のアップデートをします
```
brew upgrade
```
最新版がないようなら今のところ環境アップデートの必要はありません．来年度また来てね

## TeX Liveのアップデート(再掲)
MacTeX内のTeX Liveをアップデートするよ
sudoなのでパスワードを聞かれたらmacのパスワードを打ちます
```
sudo tlmgr update --self --all
sudo tlmgr paper a4
```
時間がかかるので待ちます．

:::note warn
`zsh: command not found: tlmgr`と言われたら，ターミナルを再起動するか，以下を打ちます
`2025`の部分など，TeX Liveのバージョンによって違うと思うので，本当に以下の場所にtlmgrがあるかFinderで確認しに行ったほうがいいよ
```
sudo /usr/local/texlive/2025/bin/universal-darwin/tlmgr path add
```
:::

VS Codeで正常にコンパイルが通れば成功です．通らなくなったならば何らかのプロセスで失敗しています(⑉･̆༥･̆⑉)やり直してください

# 失敗してやり直す時

**MacTeXアンインストール**
以下のコマンドでMacTeXを完全にアンインストールできるようです
実行前に，ターミナルにディスクフルアクセスを許可しているか確認してね(設定->プライバシー->ディスクフルアクセス)
```
brew uninstall --zap mactex-no-gui
```

**Homebrewアンインストール**

[公式サイト](https://docs.brew.sh/FAQ#how-do-i-uninstall-homebrew)参照
以下のコマンドを打てばアンインストールできます．
```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
```

# 終わりに
詰まりまくって大変でしたねこれ

# 参考文献
https://qiita.com/wooooo/items/6d8a7de5ffafed1cc66c

https://qiita.com/tofu/items/6f590abb11a344b1fe7a

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

https://blog.wtsnjp.com/2020/07/07/about-mactex/

https://zenn.dev/hash_yuki/articles/31855fbdb5fdf7

https://qiita.com/arailly/items/5bfdfaf786f6ac0c9808

https://qiita.com/fuku_uma/items/e5ad46125a9612320273