0からTeX環境を構築する

## 環境
2020年5月20日
Windows 10 home
TeXLive2020

##目標
VScodeでLatexで文章を作れるようにする。
## 以下記録
### 1. TeXLive2020を入れる
tm23forestさんの「[TeXLive2020をインストールしてLaTeXを始める](https://tm23forest.com/contents/texlive2020-install-latex-begin)」に従いながらインストールしました。1回目失敗し、2回目はインストールの時に我が家から物理的に一番近いミラーサイトを選び実行するとうまくインストール出来ました。

以下ではtm23forestさんの記事にある内容と全く同じ設定でTeXLive2020がインストールされているものと理解してください。
### 2. Latexmkの設定をする
そのままでも十分使えるのですが、TeXファイルをpdfにするときにコマンドを2回打たなくてはならないので、コマンド1つでpdfが出力されるようにしたいと思います。

TeXLive2020をbasicでダウンロードするとLatexmkは入っていないのでインストールする必要があります。Latexmkが入ってるかわからない時はpowershellで`latexmk -version`と打って、

```powershell
Latexmk, John Collins, 17 Apr. 2020. Version 4.69a
```
と表示されればインストールされています。
#### Latexmkのインストール
TeX Live managerを開き、パッケージリストの状態を「すべて」に変更し、検索欄に`latexmk`と入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/327331/9bd2a281-58d1-c7e5-6689-8c136a57924c.png)
出てきた`latexmk`にチェックをいれ、「選択項目をインストール」でインストールできます。powershellで`latexmk -version`と打ってバージョン情報が表示されれば成功です。


#### latexmkrcの作成
latexmkでどのような処理系を以てTeXファイルをpdfに変換するのかを規定するのが.latexmkrcというファイルです。環境変数HOMEが指定されている場所にこの名前のファイルを作成します。winodows powershellで以下を実行すればどこにこのファイルを作ればよいのか確認できます。

```powershell
echo $HOME
```
#### latexmkrcの編集
TeX Wikiに中に何を書くのかの一般例があります。→[Latexmk](ttps://texwiki.texjp.org/?Latexmk)

以下がその内容ですが、何が何なのかわからないので1行ずつ見ていきたいと思います。

```ruby:.latexmkrc
$latex = 'platex -synctex=1 %O %S';
$bibtex = 'pbibtex %O %B';
$dvipdf = 'dvipdfmx %O -o %D %S';
$makeindex = 'mendex %O -o %D %S';
$max_repeat = 10;
$pdf_previewer = '"C:\Program Files\SumatraPDF\SumatraPDF.exe" -reuse-instance %O %S';
```
<b>一行目</b>
どのlatexの処理系を使うかを決めるものです。TeXLiveを入れた段階でpLatexみたいなので、ここは`platex`でよさそうです。
`-synctex`は[ここ](https://texwiki.texjp.org/?SyncTeX)に詳細があります。[この記事](https://qiita.com/marinescorpion1/items/a50c97dafb4d193c0198)もわかりやすい気がします。
つまり、TeXとPDFを交互に参照して編集するためには必要なようです。
その後の`%O`等は、[本家サイト](https://texwiki.texjp.org/?Latexmk)に
>%O はオプション，%D は出力ファイル，%B は拡張子無しのソースファイルに置き換えられます

とありますが、いまいち何のことかわかりませんでした。知っている方おられたら教えてください。

<b>二行目</b>
`bibtex`は[この記事(BiBTeXとは)](https://qiita.com/SUZUKI_Masaya/items/14f9727845e020f8e7e9)がわかりやすかったです。参考文献を自動でいい感じにしてくれるようです。

<b>三行目</b>
`dvipdf`はtexの処理系によって生成されるdviファイルからpdfファイルを生成するために何を使うのかの設定です。`dvipdfmx`が一般的なようです。

<b>四行目</b>
`makeindex`は索引に関する設定で、`mendex`は索引を自動で形成してくれるソフトのようです。詳細は[こちら](http://tug.ctan.org/info/mendex-doc/mendex.pdf)。

<b>五行目</b>
`repeat_max`はコンパイルの最大の回数を規定します。クロスリファレンス等でpdfの生成がうまくいかず、無限にコンパイルするのを防ぐためのようです。詳細は[「ここ」](http://ftp.yz.yamagata-u.ac.jp/pub/CTAN/support/latexmk/latexmk.pdf)の36pにありました。

<b>六行目</b>
pdfのプレビューをどれで見るかを規定します。edgeかacrobatにしようかと思っていたのですが、edgeは開かないし、acrobatはPDFをロックするからやめた方がいいと[ここ](https://texwiki.texjp.org/?SumatraPDF)に書いてあったので、おとなしくsmatraPDFをインストールして使うことにしました。<b>ところがどっこい</b>コンパイルしてもプレビューは起動しません。
わからないので諦めました(現段階ではなくても困らないので)。

これに加え、あった方がよさそうなものを追加していきます。
最終的なlatexmkrcは以下のような感じ。

```ruby:.latexmkrc
$latex = 'platex  -halt-on-error -synctex=1 %O %S';
$latex_silent = 'platex -synctex=1 -halt-on-error -interaction=batchmode';
$bibtex = 'pbibtex %O %B';
$dvipdf = 'dvipdfmx %O -o %D %S';
$makeindex = 'mendex %O -o %D %S';
$max_repeat = 10;
$pdf_mode = 3;
```
[この記事](https://qiita.com/Rumisbern/items/d9de41823aa46d5f05a8)を参考に、自分の欲しいものだけを取りました。いまいちちゃんと動いてるのかは<b>謎</b>です。
### 3.VScodeの設定をする
#### TeX Workshopのインストール
左側のextentionsからTeX Workshopを検索し、インストールします。使用には再読み込みが必要なので再読み込みし、設定に移ります。

#### TeX Workshopの設定
「表示→」「コマンドパレット」」→「基本設定:設定(JSON)を開く」で`settings.json`をひらきます。
そして以下の内容を書き込みます。

```json:setting.json
{
    "latex-workshop.view.pdf.viewer": "tab",

    "latex-workshop.latex.tools": [
        {
            "name": "latexmk",
            "command": "latexmk",
            "args":[
                "%DOCFILE%"
            ]
          },
    ],

    "latex-workshop.latex.recipes": [
        {
            "name": "latexmk",
            "tools": ["latexmk"]
          },
    ],

    "latex-workshop.latex.autoClean.run": "onFailed"

}

```
LaTeX workshopではTeXファイルからPDFを作る(buildする)のにrecipeとtoolというのを設定します。
`Build LaTeX project`の`Recipe: latexmk`をクリックしてTeXファイルをbuildする際、LaTeX workshopは`latex-workshop.latex.recipes`の中で定められているツールを使ってprojectをbuildします。そして呼び出された`latex-workshop.latex.tools`内のツールがビルドをするようです。今回はlatexmkを使うので以上のように書いています。argsの`%DOCFILE%`はVScodeで開いているTeXファイル名を受け渡すようです(@t_asa さんありがとうございますm(_ _)m)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/327331/2a0869aa-106b-3e38-2f6d-8d0ad05f2291.png)


####使ってみる
適当にTeXファイルを作成し、`Build LaTeX project`の`Recipe: latexmk`でビルド、`View LaTeX PDF` > `View in VSCode tab`で表示させます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/327331/96925efa-7bf0-aee0-80c0-745fc1d9f50e.png)
良い感じです(しらんけど)
### 終わり
以上で今回やったことはすべてです。TeX自体使ったことがないのでこの設定で不具合が出れば加筆しようかと思いますが、現状ではなんかいけてそうなのでこのままいきます。
ふと思ったんですけど、TeX、エラーが調べにくくないですか(出てくる情報が少ない気がする)。自分の知識があまりにもないってのはあるんですけど。

#### 更新
- `settings.json`の中で`"%DOCFILE%"`とすべきところでdouble quotationが抜けていました。(2020/5/29)