LaTexローカル環境整備

# 位置づけ
本メモは私がLaTexの環境をローカルに整備するために行った作業をまとめるもの記事となります。私と類似した目的の方の参考になりますと幸いです。
@passive-radio様の[参考記事](https://qiita.com/passive-radio/items/623c9a35e86b6666b89e)に従って環境構築した際にうまくいかなかったところを修正して構築しています。(mintedなどを利用しない場合は参考元の記事をご覧いただいた方がよいかと思います。）

# 環境
* Windows11
* Python3.11
* VSCode

# 目的
この作業はOverleafの無料プランでのコンパイル制限に引っかかったために行っているものです。このため以下の2つが目的です。
* 巨大なファイルのコンパイルを可能にしたい。
* Overleafで使用しているプロジェクトファイルをそのまま利用できるようにしたい。

# 作業内容
## TeXLiveの導入
[TeXLive](https://www.tug.org/texlive/acquire-netinstall.html)から、[インストーラ](https://mirror.ctan.org/systems/texlive/tlnet/install-tl-windows.exe)(install-tl-windows.exe)ダウンロードしてください。この後、インストーラを実行してください。

インストーラ実行後は別のウィンドウが表示されるまで、画面右下を押下して操作を進めてください(NextとInstallの順に押下)。

この後、下の画像のような画面が表示されると思います。（消去しているところにはダウンロードを行う元となるTeXLiveのミラーが表示されていると思います。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3173264/30f92379-1df3-199f-affd-9f0db5ca5351.png)
ここで、ミラーを指定することもできますが、基本的には指定の必要性はありません。放置していると画面が遷移します。
遷移先の画面ではダウンロードする内容などを変更することができます。（私は高度な設定で使わない言語のコレクションなどを削り、TeXWorksをダウンロードしないようにしました。このあたりはあとでインストールしたりアンインストールすることもできるので、気軽にやってよいかと思います）

設定が終わったらインストールを選択してください。これでインストール作業は完了です。
（インストールにはかなり時間がかかります。その間は他の事をしましょう。）

## latexmk
（上で私と同じ設定を行った方はこの項目は読み飛ばしていただいて構いません。）
TLShell TeX Live Managerを起動し、パッケージリストの検索欄にlatexmkと入力して表示されるもの(latexmk, latexmk.windows)をインストールしてください。

### .latexmkrcの作成
.texlive2023と同じディレクトリに.latexmkrcというファイルを作成してください。ここでコンパイルのコマンドを設定できます。私は以下のように設定を行いました。([参考](https://qiita.com/passive-radio/items/623c9a35e86b6666b89e)の内容を一部変更しました。）
```.latexmkrc
$latex = 'uplatex %O -kanji=utf8 -no-guess-input-enc -synctex=1 -shell-escape -interaction=nonstopmode %S';
$pdflatex = 'pdflatex %O -synctex=1 -shell-escape -interaction=nonstopmode %S';
$lualatex = 'lualatex %O -synctex=1 -shell-escape -interaction=nonstopmode %S';
$xelatex = 'xelatex %O -no-pdf -synctex=1 -shell-escape -interaction=nonstopmode %S';
$biber = 'biber %O --bblencoding=utf8 -u -U --output_safechars %B';
$bibtex = 'upbibtex %O %B';
$makeindex = 'upmendex %O -o %D %S';
# $max_repeat = 5;
$dvipdf = 'dvipdfmx %O -o %D %S';
$dvips = 'dvips %O -z -f %S | convbkmk -u > %D';
$ps2pdf = 'ps2pdf.exe %O %S %D';

$pdf_mode = 3;

$pdf_previewer = "start %S";
```
（変えるとしたらpdf_modeとpdf_previewerだと思います。各自のお好みに変更してください。）
（各コマンドに-shell-escapeを追加しています。これは、mintedを利用するために行っています）


## VS Codeの設定
Ctrl + ,を入力して設定画面を開いてください。そののち、画面右上のマークしたものをクリックしてsetting.jsonを表示してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3173264/e93dc8d1-40f3-f92a-1dc7-4d416f3f9d7b.png)

このファイルの波括弧内に追記を行ってください。（既に記載されている内容がある場合は、その最後にコンマを追加してから記述してください。）[参考](https://qiita.com/passive-radio/items/623c9a35e86b6666b89e)の内容そのままなので内容は省略。ただ、最後はLatexWorkshopの機能でPDFをタブで見れない問題が発生したので、以下のように変更してます。
```settings.json
// 生成ファイルを "out" ディレクトリに吐き出す
    "latex-workshop.latex.outDir": "./",
```
（参考は複数のコンパイル方法に対応するために記述が多くなっているので、[こちら](https://qiita.com/batora/items/092360281e12ad828175)にしてもよいかもしれません）

## Pygmentsの用意
mintedを利用するためにはPygmentsをダウンロードする必要性があります。一部パッケージを利用する場合は以下を実行してください。
（環境によってコマンドは異なると思いますが、普通にライブラリをダウンロードするのと同じ要領で適宜読み替えてください。）
```
pip install Pygments
```

これで準備は終了です。

# 動作確認
以下のようなファイルを使ってコンパイルできるか試してみてください。
```test.tex
\documentclass[a4paper,autodetect-engine,ja=standard]{bxjsarticle}
\input{pkg.tex}
\input{replace}
\begin{mdframed}[userdefinedwidth=\linewidth]
\begin{minted}[breaklines, linenos]{c}
int main(){
  return 0;
}
\end{minted}
\end{mdframed}
\begin{document}
\end{document}

```

# 注意事項
パスが通っていないとpygmentsをダウンロードしても意味がないです。（pipコマンド実行時に警告が出ると思います。）その場合は適宜検索してパスを通してください。

# 参考
@passive-radio(passiveradio), "【大学生向け】LaTeX完全導入ガイド Windows編 (2022年)", 
https://qiita.com/passive-radio/items/623c9a35e86b6666b89e (参考2023-11-26)

@tatmius(タミアス), "0からTeX環境を構築する", 
https://qiita.com/tatmius/items/f63a5c668c4a3dd60e08 (参考2023-11-26)

@Yarakashi_Kikohshi, "LaTeX Workshop を使いこなす", 
https://qiita.com/Yarakashi_Kikohshi/items/a9357dd469320ffb65a0 (参考2023-11-26)


@batora, "簡易的にVSCodeを用いてLaTeX環境を構築する", 
https://qiita.com/batora/items/092360281e12ad828175 (参考2023-11-26)

TEX Wiki,  https://texwiki.texjp.org/?TeX%20Live (参考2023-11-26)