WSL2 + VSCode + LuaLaTexでレポートを書く

# 目的

WSL2上に`LaTex`環境を整えたい．

# 環境

- Windows 11 Home (21H2)
- WSL2 (Ubuntu 20.04.4 LTS)

この記事は，`LaTex`のインストールのみに焦点を当てています．
よって，WSL2やVisual Studio Codeのインストール・設定については解説を行いません．

また，今回はLuaLaTexを用いてビルドできるように設定を行いますが，たぶん(u)pLaTexなどでもあまり変わりはないと思います．
相違点は，VSCodeでの拡張機能，LaTex Workshopの設定ぐらいだと思います．

# 実際にやったこと
## 1. Tex-Live のインストール

初めに，[Tex Wiki](https://texwiki.texjp.org/?cmd=read&page=Linux%2FLinux%20Mint#texlive)の通りにインストールします．

```bash
$ sudo apt update
$ sudo apt install -y texlive-lang-japanese
```

:::note warn
ここでは，日本語パッケージのみをインストールする`texlive-lang-japanese`をインストールしましたが，上記のサイトにある通り，`texlive-full`でフルインストールすることもできます．
私の場合は前者をインストールしましたが，いろいろ足りないパッケージがあって若干面倒くさかったです(後述)．ストレージに余裕のある方は後者のほうが何かと不便しないと思います．
:::

インストールはそれほど時間もかからず意外とすんなり終わりました．

## 2. VSCode拡張機能：LaTex Workshop のインストールと設定

初めに，VSCodeを開いてWSLに接続し，「拡張機能」を開きます(Ctrl+Shift+X)．
検索窓に適当な語句を入力し，「LaTex Workshop」という拡張機能をインストールします．

次に，ビルドの設定を行います．
VSCode上でコマンドパレットを開き(Ctrl+Shift+P)，「Settings jason」などの適当な語句を入力して「Preferences: Open Settings (JSON)」を選択，`settings.json`ファイルを開きます．
ここに，下記を追記します．

```json
{
    // -- ほかの設定事項 --
    // ↓ここから追記
    "latex-workshop.latex.tools": [
        {
            "name": "lualatex",
            "command": "lualatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOCFILE%.tex"
            ]
        },
        {
            "name": "platex",
            "command": "wsl.exe",
            "args": [
                "platex",
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-kanji=utf8",
                "-guess-input-enc",
                "%DOCFILE%.tex"
            ]
        },
        {
            "name": "dvipdfmx",
            "command": "wsl.exe",
            "args": [
                "dvipdfmx",
                "-f",
                "yu-win10.map",
                "%DOCFILE%"
            ]
        }
    ],
    "latex-workshop.latex.recipes": [
        {
            "name": "lualatex",
            "tools": [
                "lualatex",
                "lualatex"
            ]
        },
        {
            "name": "platex",
            "tools": [
                "platex",
                "platex",
                "dvipdfmx"
            ]
        }
    ],
}
```

出所：[Windows Subsystem for LinuxとVSCodeで快適LaTeX](https://qiita.com/Engr_Coal33/items/bc1dc187f8b993afc2f9)
参考：[VSCode と WSL2 で LaTeX 執筆環境を作ろう](https://zenn.dev/minatoneko/articles/b4038eb6524199#latex-workshop-%E3%81%AE%E8%A8%AD%E5%AE%9A)

なお，`"latex-workshop.latex.recipes"`の`"tools"`で，2回`lualatex`を呼び出しています．
これで，自動的に2回コンパイルが行われるようになり，1回実行ボタンをポチるだけで`\ref{}`などの参照が張られます．

## 3. これでビルドできる，と思いきや．．．

一通り設定が終わったので，以下のソースファイルをビルドしてみましょう．

```LaTeX
\documentclass{ltjsarticle}
\usepackage{luatexja} % ltjclasses, ltjsclasses を使うときはこの行不要
\begin{document}
\section{はじめてのLua\TeX-ja}
ちゃんと日本語が出るかな？
\subsection{出たかな？}
長い文章を入力するとちゃんと右端のところで折り返されるかな？
大丈夫そうな気がするけど．ちょっと不安だけど何事も挑戦だよね．
\end{document}
```

出所：[LuaTex-jaの使い方 - LuaTex-ja Wiki - LuaTex-ja - OSDN](https://ja.osdn.net/projects/luatex-ja/wiki/LuaTeX-ja%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9#h2-.21LaTeX.20.E3.81.A7.E3.81.AE.E4.BD.BF.E3.81.84.E6.96.B9)

すると，以下のようなエラーが．．．

```
! LaTex Error: File 'luatexbase.sty' not found.
```

でもこれは想定内，全知全能[Tex Wiki](https://texwiki.texjp.org/?cmd=read&page=Linux%2FLinux%20Mint#texlive)に書いてあります．ということで素直に次を実行．

```bash
$ sudo apt install texlive-luatex
```

これで今度こそビルドできるかと思いきや，またエラーが．．．

```
! LaTex Error: File 'pdftexcmds.sty' not found.
```

この`.sty`ファイルは，次のパッケージに入っています．

```bash
$ sudo apt install texlive-latex-recommended
```

これで，上記のソースファイルはビルドできました！

ﾒﾃﾞﾀｼﾒﾃﾞﾀｼ...で終わらないのが世の常です．


### +α：さらなる不足パッケージのインストール

しめしめ，これで環境が整った...と思ったのもつかの間，`here.sty`とかほかにもいろいろと使えないではありませんか．

結局，追加で以下の二つのパッケージもインストールしました．

```bash
$ sudo apt install texlive-pictures texlive-latex-extra
```

これで，今のところ一通りビルドできるようになりました．

これまででお分かりの通り，`texlive-lang-japanese`は容量を食わないかわりに結構不足しているパッケージがあります．
platexを使う分にはよい(?)のかもしれませんが，lualatexの場合は初めからフルインストールしたほうがよさそうですね．

:::note
ちなみに，aptでインストールできるパッケージの詳細については[こちら](https://packages.ubuntu.com/focal/tex/)のサイトが詳しいです(詳しいというかUbuntuの公式ですが)．ここから各パッケージに含まれるファイル一覧が見られます．
例えば，`texlive-pictures`パッケージに含まれるファイル一覧は[こちら](https://packages.ubuntu.com/focal/all/texlive-pictures/filelist)です．`here.sty`ファイルが含まれていることがわかりますね．

`なんちゃら.sty`が見つからないよとErrorが出たら，それが含まれるパッケージを探して`apt install`すればよいという訳です．
:::

:::note
[追記]
パッケージは，[CTAN](https://www.ctan.org/)から直接ダウンロードすることもできます．
この場合，ダウンロードしたzipファイルを展開し，適切な場所に設置することによってインストールできます．(詳細は[こちら](https://texwiki.texjp.org/?LaTeX%E5%85%A5%E9%96%80%2F%E5%90%84%E7%A8%AE%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%81%AE%E5%88%A9%E7%94%A8, "TeX Wiki"))
:::

# 例

```LaTeX
\documentclass{ltjsarticle}
\usepackage{luatexja} % ltjclasses, ltjsclasses を使うときはこの行不要
\usepackage{amsmath,amssymb,ascmac,graphicx,here,booktabs}
\usepackage{bookmark}
\usepackage{xurl}
\hypersetup{unicode, bookmarksnumbered=true,final}

\begin{document}
\section{はじめてのLua\TeX-ja}
ちゃんと日本語が出るかな？

English appears like this.

\subsection{出たかな？}
長い文章を入力するとちゃんと右端のところで折り返されるかな？
大丈夫そうな気がするけど．ちょっと不安だけど何事も挑戦だよね．
\begin{equation}
    \label{euler}
    e^{i\pi} - 1 = 0
\end{equation}

\eqref{euler}式と下図\ref{test_graph}はまったく無関係である．

\begin{figure}[H]
    \centering
    \includegraphics[keepaspectratio, scale=0.5]{./test_graph.png}
    \caption{$y=\sin x$}
    \label{test_graph}
\end{figure}

\begin{table}[H]
    \centering
    \caption{表の挿入もこのとおり}
    \begin{tabular}{ccc}
        \toprule
        hoge & hogehoge \\
        \midrule
        1 & 2 \\
        \bottomrule
    \end{tabular}
\end{table}

参考文献への参照も無問題．~\cite{text}

\url{http://www.google.co.jp/}

\begin{thebibliography}{9}
    \bibitem{text} hage ojisan, hogeの由来, hage hage出版.
\end{thebibliography}

\end{document}
```

これをビルドすると，以下(画質はご容赦を)：

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/597415/6f52cb32-5660-060a-cb08-42821c5cfaa1.png)

なんかフォントが気に入りませんね．
このスクショの画質が低いのを抜きにしても，**何かが違う**．
ゆくゆくは，フォント回りも，[こちら](https://ja.osdn.net/projects/luatex-ja/wiki/LuaTeX-ja%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9#h3-.E3.83.95.E3.82.A9.E3.83.B3.E3.83.88.E3.81.AE.E6.8C.87.E5.AE.9A)などを参考にして変更したいですね．

また，`hyperref`や`bookmark`，`url`や`xurl`に関して有用そうな記事をいくつか貼っておきます．
[hyperref利用時の2つの注意点 - 0番染色体](https://0-chromosome.hatenablog.jp/entry/2015/04/10/175912)
[【基本】LuaLaTeXのPDFを便利にしよう　～hyperrefパッケージほか～ - LuaLaTex Lab](https://lualatexlab.blog.fc2.com/blog-entry-43.html)

# 結論

フルインストールしよう．