最速で綺麗なLaTeX環境を構築する手順をまとめてみた(MacOS)

# 前書き

卒業論文を書くために構築した自分のLaTeX環境をこの記事では紹介します。LaTeXをほとんど使ったことがない状態から構築したので、**特に初心者の方に役に立つと思います**。また、この記事で環境構築が完結するように**それぞれの操作を丁寧に解説したので**、<font color="red">**最速で綺麗なLaTeX環境が作れると思います**</font>[^10]。


# 環境の確認

macOS BigSur 11.1

# LaTeXとは

[LaTeX](https://ja.wikipedia.org/wiki/LaTeX)とは組版システムのTeX上で開発された文書処理システムのことです。CUIで操作することができるので、慣れれば**ワープロソフトより格段に速く表現力の高い文書を作ることができます**。

# Homebrewのインストール

**TeXはパッケージ管理システムのHomebrew[^11]を利用してインストールする**と良いです。[こちらの記事](https://qiita.com/DaikiSuyama/items/5a2a96859b44595cba76)にしたがって、Homebrewのインストールを行ってください。

すでにインストールしている方は、以下のコマンドを実行してください[^9]。それぞれのコマンドの意味についても以下の通りです[^12]。

```zsh
% brew update && brew upgrade && brew cleanup
```


- `% brew update`：Homebrew自体を更新する
- `% brew upgrade`：Homebrewでインストールしたパッケージを更新する
- `% brew cleanup`：Homebrewでインストールした以前のバージョンのパッケージのキャッシュなどを削除する


# MacTeXのインストール

次に、Homebrewを利用して[MacTeX](https://ja.wikipedia.org/wiki/MacTeX)のインストールを行います。MacTexにはGUIアプリケーション(LaTeXitとTexShop)とTeXLiveとGhostScriptの三つが含まれます。一つ目のコマンドでMacTexをインストールすることができ、二つ目のコマンドでMacTexからGUIアプリケーションを除いたものをインストールすることができます。**今回はGUIアプリケーションが必要ないので、二つ目のコマンドを実行すれば良いです**。

```zsh
% brew install --cask mactex 
% brew install --cask mactex-no-gui 
```

また、インストール後に`tlmgr`などのTeXに関わるコマンドを実行するには[環境変数](https://ja.wikipedia.org/wiki/%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0)のPATHに`/usr/local/texlive/2022/bin/universal-darwin`を追加する必要があります[^2]。`% echo $PATH`の出力に`/usr/local/texlive/2022/bin/universal-darwin`が含まれていない場合は以下のコマンドを実行してください[^2]。ちなみに、`export`は環境変数を設定するコマンドです。

```zsh
% export PATH=$PATH:/usr/local/texlive/2022/bin/universal-darwin
```

また、その後に以下のコマンドでTeXLiveのアップデートをしてください[^3]$^,$[^4]。

```zsh
% sudo tlmgr update --self --all
```

## 確認

LaTeXのサンプルファイル`hoge.tex`を用意して`% platex hoge.tex`と`% dvipdfmx hoge.dvi`を順に実行してPDFができることを確認してください。


<!--
\# TeXのアンインストール

アンインストールについては別の記事(途中です)にて扱います。

-->

# Latexmkの設定

ここまででLaTeX環境を作成することができました。次に、**毎回コマンドをいくつも打たなくても済むように**、文書の作成時に必要回数だけタイプセットするためのツールとしてLatexmkを使います。Latexmkの説明は省略しますが、ホームフォルダ(`~`)に設定ファイルの`.latexmkrc`を作成しておくとLatexmkの使用時に読み込んでくれます[^5]$^,$[^13]。

従って、以下では`.latexmkrc`を作成して編集していきます。まずは`% touch ~/.latexmkrc`を実行して`.latexmkrc`を生成してください。その後はエディタで編集すれば良いですが、編集できない場合はfinderの"フォルダへ移動"の検索画面に`~`を打ち込んで移動した後に隠しファイルを見れるようにすると[^13]、直接ファイルを開いて編集できます。

編集できる状態になったら`.latexmkrc`に以下を貼り付けてください。それぞれのコードの意味は書いてある通りで、%Sはソースファイル,%Oはオプション,%Dは出力ファイルにそれぞれ置き換えられることを表します[^5]。


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

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

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

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

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

## 確認


LaTeXのサンプルファイル`hoge.tex`を用意して`%latexmk hoge.tex`と実行してPDFができることを確認してください。

# VSCodeのインストール

[MacでのVSCode入門](https://qiita.com/DaikiSuyama/items/06e09b22fb11d888320c)のインストールの項に従ってインストールしてください。また、VSCodeについてもHomebrewでのインストールをお勧めします。

# VSCodeの設定

LatexmkをVSCodeと組み合わせるとさらに便利になり、**変更して保存するだけでPDFの生成と更新を行うことができます**。また、**タブでPDFとLaTeXのソースファイルを同時に見ながら作業することもできます**。

VSCodeでLaTeXを使うには拡張機能の[LaTeX Workshop](https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop)をインストールすると良いです。インストール後に`settings.json`[^6]$^,$[^8]でLaTeX Workshopの設定をします。VSCodeを開いた状態で`Cmd + ,`のショートカットキーを用い、画面右上に出てくる下記のマークを押して開いたファイルを編集します。

![スクリーンショット 2020-12-29 10.48.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/331393/bedbbe98-5f83-4c96-1c4a-526891ee4c12.png)

また、`settings.json`に以下のLaTeXの設定の部分を貼り付ければ問題なく動きますが、自分でカスタマイズしてください。


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

    //----latex settings----
    //viewerをタブで開く
    "latex-workshop.view.pdf.viewer": "tab",
    //intellisenseを有効にする
    "latex-workshop.intellisense.package.enabled": true,
    //生成ファイルを格納するディレクトリ名
    "latex-workshop.latex.outDir": "latex_out",
    //自動で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": ["-outdir=%OUTDIR%","%DOC%.tex"]
        },
    ]

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

## 確認

LaTeXのサンプルファイル`hoge.tex`を開いて保存するだけで`hoge.pdf`と`hoge.log`のみが`latex_out`に保存されることを確認してください。


# Mathpix

もう一つ便利なツールとしてMathpixを紹介します。このツールは**論文中の数式をスクショするとLaTeXの数式に変換してくれます**。

以下のコマンドを実行するとHomebrew経由でインストールすることができます。もちろん[公式サイト](https://mathpix.com/)からdmgファイルをダウンロードしてインストールすることもできます。

また、使い方については難しくないので、[公式サイト](https://mathpix.com/)を眺めてください。

```zsh
% brew install --cask mathpix-snipping-tool
```


# 参考にすべきサイト

## [TeX Users Group](http://www.tug.org/)

- TeXの本家のサイトなので、全て載っている
- ただし、英語

## [TeX Wiki](https://texwiki.texjp.org/)

- Texに関することが日本語で書かれている
- 読者参加型なので大抵の内容は書いてある

# Latexのサンプルファイル


環境構築の確認用のサンプルファイルです。

```tex:hoge.tex
\documentclass[dvipdfmx]{jreport}

\begin{document}

\title{test}
\author{hogefuga}

\maketitle

\section{hoge1}

This is sample.

\section{hoge2}

これはサンプルです。

\end{document}
```





[^2]: `2022`と`universal-darwin`の部分は環境により異なるので、確かめるようにしてください。

[^3]: 環境によりますが、5分~15分程度はかかると思います。

[^4]: --selfがtlmgrのアップデートで,--allがインストールしたパッケージのアップデートを表します。詳しくは`man`で確認してください。

[^5]: 詳しくは[Latexmk](http://personal.psu.edu/jcc8/software/latexmk/)のドキュメントを参照することをお勧めします。

[^6]: `$HOME/Library/Application\ Support/Code/User`にある`settings.json`を編集してください。

[^8]: 。[VSCodeを快適に使うためのJSON入門](https://qiita.com/DaikiSuyama/items/fa09f9660b2b24113ede)にてJSON記法を理解するとスムーズに設定等を行うことができます。

[^9]: これ以降、`% コマンド名`で実行するコマンドを示します。シェルによっては%が$ですが、適宜読み替えてください。

[^10]: LaTeXの環境構築に焦点を当てるために省略した部分がある点はご了承ください。

[^11]: Homebrewの概要は[homebrewとは何者か。仕組みについて調べてみた](https://qiita.com/omega999/items/6f65217b81ad3fffe7e6)を読むと把握できます。

[^12]: 詳しくはmanコマンドで確認してください。

[^13]: .がついているファイルを隠しファイルと呼びます。finder上で`command`と`shift`と`.`を同時に押すと、開いているディレクトリにある隠しファイルが表示されます。