俺のPCにTeX Live fullスキームなんて入るはずがない

ちゃんとした題：WindowsでLuaLaTeXの最小環境を構築してみる

こんにちは。油断すると$\TeX$を「テックス」と呼んでしまうすずともです。
僕の持ち運び用PC「初代SurfaceBook SSD128GB」。容量が少ないので約7.5GBもあるTeX Live fullスキームなんて入りません。それどころか空き容量0バイトで死にたくなりました。

https://twitter.com/SuzuTomo2001/status/1422288424812220429

ということで、この記事ではWindows上でLuaLaTeXを使ってLaTeXのPDFを作成する最小環境を構築してみようという記事です。
まぁ、ちょっとめんどくさいのでPCの容量がある人はTex Liveのfullスキーム入れた方が早いし問題ない気がします。

# 最小環境とは
この記事での最小環境の定義を、
>Tex Liveのインストーラでminimamスキームを選択し、後から必要なパッケージのみをインストールすることでLuaLaTeXが書ける環境

としておきます。（つまり最小容量ってことかな。）

# 達成条件
自分は日本人なので、日本語組版が行えることを前提とします。
したがって、[LuaTeX-jaの使い方](https://ja.osdn.net/projects/luatex-ja/wiki/LuaTeX-ja%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9)に載っている以下の典型的なソース`test.tex`からPDFが作成できれば、最小環境の構築が出来たということにします。

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

# 結論
とっととLuaLaTeXを使えるようにしてレポート書きたい人もいると思うので、先に結論を書いておきます。

① Tex Live 2021をminimamスキームでインストールする
② Tex Live Managerで以下のパッケージをインストールする。

- `etoolbox`
- `harunoaji`
- `infwarerr`
- `latex-bin`
- `ltxcmds`
- `luatexja`
- `pdftexcmds`
- `xkeyval`

③ 以下のコマンドでPDF作成

```console
$ lualatex test.tex
```

④ 以下のようなPDFが作成されれば目的達成！

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/271c7f4b-bd70-68c4-b952-6069682d2976.png)|
|-|
⑤ VSCodeで書きたい人は以下の記事を参考にどうぞ！

https://qiita.com/SuzuTomo2001/items/f5368084aa7351bb3f80

# 順序に沿ってやってみる

ここからは、上記の結論がどうやって出たかを一つずつ見ていってるだけなので暇な人は一緒にやってみてね！

## TeX Live 2021のインストール

https://www.tug.org/texlive/acquire-netinstall.html

上記URLからインストーラをダウンロードします。
自分の環境では`install-tl-windows.exe`がきちんと起動しなかった(ミラーリポジトリの選択から一向に進まない)ので、`install-tl.zip`をダウンロードしてきました。

`install-tl.zip`を解凍して、中にある`install-tl-windows.bat`を実行します。
しばらくすると、下記のような画面が出てくると思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/56ae5168-fc52-9164-ff01-cdea83167b08.png)

初期設定のままでは、`必要なディスク容量(MB): 7434`となっている通り、約7.5GBも容量をパクパクしてしまいます。

今回は「最小環境」なので、左下の`高度な設定`から`スキーム`を`minimalスキーム`に変更します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/1d368d20-7afa-6db2-bb52-42c0adba328c.png)

これで必要なディスク容量が203MBまで減りました！オプションは弄らない方がいいみたいなので、TeXworksのチェックだけ外した状態にしてインストールします。

203MBなのですぐに終わりますね！

# 現在の状態の確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/8c64835b-20db-2eaf-cddf-5723de0a2ad1.png)

インストール先のtexliveフォルダは343MB。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/d372e089-dc35-56f9-907e-283c07261fe5.png)

こんな感じで、ざっとコマンド実行してみた感じ`tex`と`luatex`が使えてそうですね。肝心の`lualatex`は使えないのでTeX Live Managerを使ってインストールしてみましょう。

# LuaLaTexを使えるようにする

Tex Live Managerから`latex-bin`パッケージを検索してインストールします。
依存するパッケージは勝手に入れてくれるので、チェックするのは`latex-bin`だけでOKです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/ea29e133-a0cb-6131-827a-bc093a85d03d.png)

`lualatex`コマンドを実行するとなにか表示されてるので使えそうな予感がします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/6da70941-8f4e-3a76-a7de-b1d7c1962369.png)

なので、とりあえずコンパイル。

```console
$ lualatex test.tex
This is LuaHBTeX, Version 1.13.2 (TeX Live 2021/W32TeX) 
 restricted system commands enabled.
**
! End of file on the terminal... why?
PS C:\Users\kamekyame\Documents\GithubProject\tex-test> lualatex test.tex
This is LuaHBTeX, Version 1.13.2 (TeX Live 2021/W32TeX) 
 restricted system commands enabled.
(./test.tex
LaTeX2e <2021-06-01> patch level 1
 L3 programming layer <2021-07-12>

! LaTeX Error: File `ltjsarticle.cls' not found.
```

`ltjsarticle.cls`がないと怒られます。

## `luatexja`のインストール
`ltjsarticle`はLuaTex-jaに入っているので、`luatexja`パッケージをインストールします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/20020a53-7a9c-18b1-c9a8-efa938d5bfe4.png)

そして、とりあえずコンパイル。

```console
$ lualatex test.tex
This is LuaHBTeX, Version 1.13.2 (TeX Live 2021/W32TeX) 

(中略)

! LaTeX Error: File `ltxcmds.sty' not found.
```

今度は`ltxcmds.sty`がないと怒られます。

## `ltxcmds`のインストール

`ltxcmds`パッケージをインストールします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/d17c34e5-e5e6-ea95-7ba7-8fe536c45164.png)

そして、とりあえずコンパイル。

```console
$ lualatex test.tex
This is LuaHBTeX, Version 1.13.2 (TeX Live 2021/W32TeX) 

(中略)

 LaTeX Error: File `pdftexcmds.sty' not found.
```

## Errorが消えるまで繰り返す

`.sty`がないよと言われたら、その名前のパッケージがないということなので、検索してインストール→実行→エラー→インストール→実…
としていきましょう。

ってことで、`pdftexcmds`パッケージのインストール。
そして、とりあえずコン（ry

```console
$ lualatex test.tex
This is LuaHBTeX, Version 1.13.2 (TeX Live 2021/W32TeX) 

(中略)

! LaTeX Error: File `infwarerr.sty' not found.
```

`infwarerr`パッケージのイン（ry
そしてとりあ（ry

```console
$ lualatex test.tex
This is （ry

! LaTeX Error: File `xkeyval.sty' not found.
```

`xkeyval`の（ry
そして（ry

```console
$ luala（ry
! LaTeX Error: File `etoolbox.sty' not found.
```

`etoolbox`（ry
そ（ry

```console
$ lualatex test.tex
This is LuaHBTeX, Version 1.13.2 (TeX Live 2021/W32TeX) 

(中略)

luaotfload | db : Reload initiated (formats: otf,ttf,ttc); reason: File not found: "HaranoAjiMincho-Regular.otf".
```

おっ。なんか違うエラーが出てきましたね。これは`HaranoAjiMincho-Regular.otf`がないといわれていますね。

## 原ノ味フォント

LuaTeX-jaではデフォルトで原ノ味フォントを使用します。これもTeX Live Managerからインストールできます。
`haranoaji`パッケージをインストールしましょう。（ちょっと容量が大きいけど日本語フォントなのでしょうがないところはある…）

余談ですが、原ノ味フォントの名前の由来、おもしろいですね。

>「原ノ味」というのは、 源ノフォントからグリフやテーブルが抜けていることを表すために 「氵（さんずい）」を取り、 AJ1 をもじって AJI にして 音から「味」という字をあてたものです。

>引用元：[原ノ味フォントGithub](https://github.com/trueroad/HaranoAjiFonts)

余談はこのくらいにして、コンパイル。

```console
$ lualatex test.tex
This is LuaHBTeX, Version 1.13.2 (TeX Live 2021/W32TeX) 

（中略）

Output written on test.pdf (1 page, 21344 bytes).
Transcript written on test.log.
```

`Output written on test.pdf`って出来てるんじゃね！！

## PDFの確認

`test.pdf`を開くと、

|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/271c7f4b-bd70-68c4-b952-6069682d2976.png)|
|-|

おおっ。無事出力されてそうですね！

## texliveフォルダの容量

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/255360/1deb2cf5-6046-95f9-768d-3a3e5371c704.png)

最終的なtexliveフォルダの容量は395MB。原ノ味フォントいれた割には少ない気がするけど、まぁいいか。
もしかして別のとこに入ってたりするのだろうか。

まぁこれだったら僕の持ち運び用よわよわSSD128GBの初代SurfaceBookでも容量気にならなさそうですね！

# 気になったこと
一応、PDF出力まで出来たので、条件達成です！

とはいえ、試行錯誤してるうちに気になったことがあったのでメモがてらに残しておきます。

- lualatexコマンドを使うのに`latex-bin`を入れる必要があるのか。（というか`latex-bin`でなぜlualatexコマンドが使えるようになるのか）
- たくさんパッケージをインストールしたけど、もしかして依存関係で一発インストール出来る別のパッケージorインストール順序があったのか
- ~~`\usepackage{luatexja}`が無くてもコンパイルできたが、必要ないのか（コメントには`ltjclasses`と`ltjsclasses`を使うときにはこの行不要と書いてあったが…）~~どうも、`ltjsclasses`は`ltjsarticle/ltjsreport/ltjsbook`の総称のようです。つまり、今回は`ltjsarticle`を使っているのでコメント通り不要ということでした。
- 原ノ味フォントではなく、自分の環境に既に入っている源ノ角フォントやNotoフォントは使えないのか
- 友人はWSL上で環境構築してて、どうやらLinuxの方のコンパイルが結構早いと聞いたが実際どうなのか。
- 自分がこれからLaTeXを勉強するため無知なだけだが、目次や図番号、参考文献などのパッケージがLuaLaTeXで使えるものがあるのか
- 日本語組版には`collection-langjapanese`を入れよという記事をよく見る（UpLaTeXなどの環境構築で）が無くても別にいいのか。それとも今後問題が出てくるのか

ざっと出した感じこのような気になることが出てきました。
だれか知っている方いたらコメントなどで教えて下さるとうれしいです。（まぁそもそもLaTeXまともに知らんのにこんな記事書くなって話ですけど…）

# VSCodeで使う
やっぱりエディタはVSCodeしか勝たんってことで、~~VSCodeで使う方法を紹介したいのですが、これはまた別記事ということにしておきます。でき次第この記事にもリンク貼っておきますね。~~VSCodeでの環境構築を別記事にまとめました。よかったらこちらもどうぞ

https://qiita.com/SuzuTomo2001/items/f5368084aa7351bb3f80