【WSLでも確認済み】Ubuntu18.04/20.04でのLaTeX環境構築 (TeXLive2019/2020/2021)

# 環境構築基本
`apt install` で入るTeXLiveは1,2年分くらい古かったりするので注意が必要．以下，Ubuntu18.04，TeXLive2019で成功．
(2020/4追記: TeXLive2020で成功)
(2021/4追記: TeXLive2021で成功)

**(2020/4 追記)また、Windows Subsydtem for Linux 2 (WSL2)でもTexLive 2020の導入ができることを確認しています。**

参考ページ: http://www.tug.org/texlive/doc/texlive-ja/texlive-ja.pdf#c

1: http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet/install-tl-unx.tar.gz からダウンロード．
2: 展開してインストール

```bash
# インターネット・インストーラのダウンロード
$ wget http://ftp.jaist.ac.jp/pub/CTAN/systems/texlive/tlnet/install-tl-unx.tar.gz
$ tar xzf install-tl-unx.tar.gz
$ cd install-tl-20YYMMDD
$ sudo ./install-tl
```
3: 途中でどうやってインストールするか聞かれるが，そのままでも大丈夫。

```bash
======================> TeX Live installation procedure <=====================

======>   Letters/digits in <angle brackets> indicate   <=======
======>   menu items for actions or customizations      <=======

 Detected platform: GNU/Linux on x86_64

 <B> set binary platforms: 1 out of 16

 <S> set installation scheme: scheme-full

 <C> set installation collections:
     40 collections out of 41, disk space required: 6955 MB

 <D> set directories:
   TEXDIR (the main TeX directory):
     /usr/local/texlive/2020
   TEXMFLOCAL (directory for site-wide local files):
     /usr/local/texlive/texmf-local
   TEXMFSYSVAR (directory for variable and automatically generated data):
     /usr/local/texlive/2020/texmf-var
   TEXMFSYSCONFIG (directory for local config):
     /usr/local/texlive/2020/texmf-config
   TEXMFVAR (personal directory for variable and automatically generated data):
     ~/.texlive2020/texmf-var
   TEXMFCONFIG (personal directory for local config):
     ~/.texlive2020/texmf-config
   TEXMFHOME (directory for user-specific files):
     ~/texmf

 <O> options:
   [ ] use letter size instead of A4 by default
   [X] allow execution of restricted list of programs via \write18
   [X] create all format files
   [X] install macro/font doc tree
   [X] install macro/font source tree
   [ ] create symlinks to standard directories

 <V> set up for portable installation

Actions:
 <I> start installation to hard disk
 <P> save installation profile to 'texlive.profile' and exit
 <H> help
 <Q> quit

Enter command: I
```

4: 数十分待機
5: こんなことを言われるのでパスを通す．

```bash
Welcome to TeX Live!

See /usr/local/texlive/2019/index.html for links to documentation.
The TeX Live web site (https://tug.org/texlive/) contains any updates and
corrections. TeX Live is a joint project of the TeX user groups around the
world; please consider supporting it by joining the group best for you. The
list of groups is available on the web at https://tug.org/usergroups.html.

Add /usr/local/texlive/2020/texmf-dist/doc/man to MANPATH.
Add /usr/local/texlive/2020/texmf-dist/doc/info to INFOPATH.
Most importantly, add /usr/local/texlive/2020/bin/x86_64-linux
to your PATH for current and future sessions.
Logfile: /usr/local/texlive/2020/install-tl.log
```
年(2020)は入ったバージョンにより異なります．

6: パスを通す
手っ取り早いのは `~/.bashrc` に下記を追記。

```bash:~/.bashrc
export PATH="$PATH:/usr/local/texlive/2020/bin/x86_64-linux"
export MANPATH="$MANPATH:/usr/local/texlive/2020/texmf-dist/doc/man"
export INFOPATH="$INFOPATH:/usr/local/texlive/2020/texmf-dist/doc/info"
```
最低限はこれでOK．コマンドでやるなら

```bash
$ echo 'export PATH="$PATH:/usr/local/texlive/2021/bin/x86_64-linux"' >> ~/.bashrc
$ echo 'export MANPATH="$MANPATH:/usr/local/texlive/2021/texmf-dist/doc/man"' >> ~/.bashrc
$ echo 'export INFOPATH="$INFOPATH:/usr/local/texlive/2021/texmf-dist/doc/info"' >> ~/.bashrc
```

 `source ~/.bashrc` は忘れないで下さい．このとき，.bashrcなどに書き，スーパーユーザーが認識できない状態にしてしまうと，この先 `mktexlsr`などができなくなるので，[sudo mktexlsrの注意事項](#sudo-mktexlsrの注意事項)などの処理が必要になる．

# emath導入(したいなら)
- emathのインストール: http://emath.s40.xrea.com/ydir/Wiki/index.php?emath%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB
- emathの置き場所: http://emath.s40.xrea.com/ydir/Wiki/index.php?emath.sty%A4%CE%C3%D6%A4%AD%BE%EC%BD%EA
- 自分の置き場所は `/usr/local/texlive/texmf-local/tex/platex/misc/emath` だった．
- パスを通すのに `sudo mktexlsr` が必要
- sudo mktexlsrの注意事項は[下記](sudo-mktexlsrの注意事項)．

# フォント導入
**TexLive2020以降、デフォルトのフォントが原ノ味フォントになっていて結構きれいです。このままでもいいとは思います。**

Ubuntu18.04ではNotoSansCJK-Regular.ttc: "Noto Sans CJK JP" "Regular"などといったNoto系のフォントがデフォルトで入っていてデフォルトのフォントになっている．pxchfonで簡単に埋め込むことができ，源ノ明朝、源ノ角ゴシックとほぼ同じらしいので，これを使ってみる．

1. `/usr/share/fonts/` にフォントがある．`/usr/share/fonts/opentype/noto/` の中にNoto系のものが入っている．
2. `/usr/local/texlive/texmf-local/fonts/` がTeXのフォント置き場．ここにシンボリックリンクを張りたい
3. NotoSansCJK-*は `/usr/local/texlive/texmf-local/fonts/opentype/google/notosanscjk/` ，NotoSerifCJKは `/usr/local/texlive/texmf-local/fonts/opentype/google/notoserifcjk/` にないといけない（pxchfonの関係）
4. シンボリックリンクを張ったら，`mktexlsr` で更新（[下記](sudo-mktexlsrの注意事項)）．

## やったこと
ここでの処理は `~/.bashrc` にパスを書いたときの処理．ちゃんと環境変数にすれば，最初の2行と `sudo mktexlsr` でOK．

```bash
sudo ln -s /usr/share/fonts/opentype/noto/NotoSansCJK-* /usr/local/texlive/texmf-local/fonts/opentype/google/notosanscjk/
sudo ln -s /usr/share/fonts/opentype/noto/NotoSerifCJK-* /usr/local/texlive/texmf-local/fonts/opentype/google/notoserifcjk/
sudo su
source .bashrc
mktexlsr
```

- 参考: （pLaTeXでも利用可能）upLaTeX文書で源ノ明朝／Noto Serif CJKを簡単に使う方法（最新のdvipdfmxとpxchfonを使用）: https://qiita.com/zr_tex8r/items/9dfeafecca2d091abd02

##WSL2を用いていてWindows側のフォントを用いたい場合
例えば游明朝・游ゴシックなら

```bash
sudo mkdir /usr/local/texlive/texmf-local/fonts/truetype/windows/YuWin
sudo ln -s /mnt/c/Windows/Fonts/yumin* /usr/local/texlive/texmf-local/fonts/truetype/windows/YuWin/
sudo ln -s /mnt/c/Windows/Fonts/YuGoth* /usr/local/texlive/texmf-local/fonts/truetype/windows/YuWin/

sudo su
source .bashrc
mktexlsr
```

# ここまでできれば
```latex
\documentclass[dvipdfmx, class=jsarticle]{standalone}
\usepackage{graphicx}
\usepackage{emath}
\usepackage[deluxe]{otf}
\usepackage[noto-otc]{pxchfon}
```
が動く．

# sudo mktexlsrの注意事項
1. 適当に入れ，パスを.bashercに書いてexportする感じにすると，あくまでユーザーの中にある
2. TeXLiveは普通 `/usr` 以下に入れるが，ということは `sudo` が必要

このとき，sudoしても~/.bashrcはユーザーのものであってスーパーユーザーのものではないのでパスが読み込まれない．（sudoが読めるように環境変数にしてもいいが…）このときは

```bash
sudo su
source .bashrc
mktexlsr
```
のような手順を踏む必要があることを覚えておかないといけない．

# 一番単純なコンパイルのためのシェルスクリプト？
```bash:pdfplatex.sh
filepath=$1
base=`basename ${filepath}`
dir=`dirname ${filepath}`
filename=${base%.*}

platex -shell-escape --synctex=1 -jobname=${dir}/${filename} ${filepath}
dvipdfmx -o ${dir}/${filename}.pdf ${dir}/${filename}
ls ${dir}/${filename}* | grep -v -e ${dir}/${filename}.tex -e ${dir}/${filename}.pdf | xargs rm
```

.texファイルを引数に指定すると，texからpdfを生成（bibtexなどは考えていない）．また，中間ファイルを全て削除している．

実行時には

```bash
sh pdfplatex.sh /path/to/target_file.tex
```

で実行できます。

# Ubuntuでのapt利用時のTeXLiveアンインストール方法
https://tex.stackexchange.com/questions/95483/how-to-remove-everything-related-to-tex-live-for-fresh-install-on-ubuntu

# 質問
TeXLive2019利用時？にstandaloneクラス利用で，

```LaTeX
\documentclass[dvipdfmx,tikz]{standalone}
```
ではなく，

```LaTeX
\documentclass{standalone}
\usepackage{tikz}
```

とするとなぜか同じサイズの空白ページが1ページ出力されてしまいます．バグ修正の方法をご存じの方がいらっしゃいましたらコメント等で教えていただけると幸いです．

## 答え

@Yarakashi_Kikohshi 様よりコメントをいただき、解決しましたので載せておきます。 `\documentclass[tikz]{standalone}`は

```latex
\documentclass[multi=tikzpicture,varwidth=false,dvipdfmx]{standalone}
\usepackage{tikz}
```
と同義のためこうなるとのことでした。dvipdfmx以外のオプションについては以下のことをしているようです。

- `multi=tikzpicture` でそれぞれのtikzpicture環境を独立したページになるように処理
- `varwidth=false` でstandaloneパッケージの横幅の制約を解除

standaloneパッケージのマニュアルのtikzオプション部にたしかに説明がありました。ありがとうございました。