WSL に TeX Live の導入(+AucTeX の設定)

## 1. はじめに
Windows 側でも構わないのですが，基本的には Emacs から利用するので，WSL 側に導入しました．プロキシ環境だと WSL にインストールする方が面倒が少ないと思います．また，随時 `tlmgr` でアップデートするので，Package (apt) を利用しないことにします．そろそろ，環境も整ってきたので `WSL` シリーズも終わりかもしれません．手間取った作業があれば，備忘録代わりに `Qiita` にメモします．

## 2. TeX Live 2018
### `ISO` イメージのダウンロード
私の環境からは，ネットワークインストールすると結構な時間がかかるので，DVD イメージをダウンロードしてインストールします（数分でダウンロードが終わりました）．

[TeX Live](http://www.tug.org/texlive/) の `on DVD` → ` downloading the TeX Live ISO image and burning your own DVD` → `download from a nearby CTAN mirror` → `texlive2018-20180414.iso` からダウンロードする(`20180414` は変わると思います)．

### ISO イメージのマウント
WSL 上でマウントできなかったので，Windows 側でマウントする（右クリック → マウント）．私の環境では，E ドライブにマウントされたので，WSL 上にマウントポイントを作成してマウントする．

```bash
$ sudo mkdir -p /mnt/e
$ sudo mount -t drvfs E: /mnt/e
```

### インストール
SSD の容量が 500 GB と心許ないので，`scheme-small` でインストールして，足りないものは，`tlmgr` から個別に導入します．

```bash
$ sudo /mnt/e/install-tl
```

メニューが立ち上がるので【Schme】から `s`→`c`→`r`，【Collections】から `c`→`x`→`m`→`r`，【Options】`o`→`p`→`d`→`s`→`r` に変更後，`i` でインストールする．

`upLaTeX` が使えればいいので，この設定でインストールしていますが，`LuaLaTeX` をタイプセットするには不足していると思います．もう少し早くなれば `LuaLaTeX` に移行したいのですが……．

### 設定
* PATH の設定

`.bashrc` に `PATH` を通してもいいのですが，今回は `/usr/local/bin` にシンボリックリンクをはることにします．ついでに用紙の設定もします．

```bash
$ sudo /usr/local/texlive/2018/bin/x86_64-linux/tlmgr path add
$ sudo tlmgr paper a4
$ sudo umount /mnt/e
```

* ダミーパッケージの導入

詳しい内容は，[TeX Wiki](https://texwiki.texjp.org/?texlive-dummy) を確認してください．

WSL では，`SYSVIPC` が完全（?）に実装されていないので，[https://github.com/Microsoft/WSL/issues/2465](https://github.com/Microsoft/WSL/issues/2465) を参考に，`fakeroot` を `fakeroot-tcp` に変更します．これをしないと，`equivs-build` で止まります．

```bash
$ sudo update-alternatives --set fakeroot /usr/bin/fakeroot-tcp
```

なぜダミーパッケージに `freeglut3` が必要なのかわからないのですが，`TeX Live` の [for TL 2018](http://www.tug.org/texlive/files/debian-equivs-2018-ex.txt) では依存しているので導入しておきます．

```bash
$ sudo apt install freeglut3
```

下記の手順でダミーパッケージを導入します．

```bash
$ cd ~/downloads/src
$ sudo -E apt install equivs
$ curl -O  http://www.tug.org/texlive/files/debian-equivs-2018-ex.txt
$ equivs-build debian-equivs-2018-ex.txt
$ sudo dpkg -i texlive-local_2018-1_all.deb
```

* Tex Live のアップデート

```bash
$ sudo tlmgr option repository http://mirror.ctan.org/systems/texlive/tlnet
$ sudo -E tlmgr update --self
$ sudo -E tlmgr update --list
$ sudo -E tlmgr update --all
```

必要なものを追加でインストールします．フォント関連は省いています．

```bash
$ sudo -E tlmgr install pdfcrop latexmk dvipng
$ sudo -E tlmgr path add
```

## 3. Emacs の設定
### PDF Tools の導入
[pdf-tools](https://github.com/politza/pdf-tools) を使ってみます．`epdinfo` のビルドに必要なパッケージを導入する．

```bash
$ sudo apt install automake autoconf
$ sudo apt install libpng-dev zlib1g-dev libpoppler-glib-dev libpoppler-private-dev
$ sudo apt install imagemagick
```

`init.el` などに下記内容を追加して，`pdf-tools` を `use-package` でインストールする．

```lisp:init.el
;;; pdf-tools
(use-package pdf-tools
  :ensure t
  :magic ("%PDF" . pdf-view-mode)
  :config
  (pdf-tools-install)
  (define-key pdf-view-mode-map (kbd "C-s") 'isearch-forward)
  (setq pdf-view-resize-factor 1.1)
  )
```

- `M-x pdf-tools-install RET` で `epdfindo` をコンパイル
- `M-x pdf-info-check-epdfinfo RET` でテスト

### AUCTeX の導入
`init.el` などに下記内容を追加してインストールする．今回は，AUCTeX から Latexmk を使わない設定をしています（どうしても，View との連携がうまくいかなかったので）．

```lisp:init.el
(use-package tex-jp
  :ensure auctex
  :defer t
  :mode ("\\.tex\\'" . japanese-latex-mode)
  :custom
  (TeX-PDF-mode t)
  (TeX-PDF-from-DVI "Dvipdfmx")
  :config
  (setq TeX-parse-self t
        ;; japanese-TeX-engine-default 'uptex
        TeX-clean-confirm nil
        TeX-auto-save t
        TeX-auto-local (expand-file-name "auctex/auto" temp-dir)
        TeX-style-local (expand-file-name "auctex/style" temp-dir)
        TeX-auto-untabify t
        TeX-view-program-selection '((output-pdf "PDF Tools"))
        TeX-electric-sub-and-superscript t
        TeX-electric-math '("\\(" . "\\)")
        TeX-quote-after-quote t
        TeX-source-correlate-mode t
        TeX-source-correlate-method 'synctex
        TeX-source-correlate-start-server t
        font-latex-fontify-sectioning 1.0
        font-latex-fontify-script nil
        font-latex-script-display nil)
  (add-hook 'LaTeX-mode-hook 'TeX-PDF-mode)
  (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)
  (add-hook 'TeX-after-compilation-finished-functions #'TeX-revert-document-buffer)
  )
```

- `C-c C-a` でタイプセットとプレビュー
- `C-c C-g` でソースの場所を表示

【補足】
'temp-dir'は別途下記のように設定しています．

```lisp
(defvar temp-dir (expand-file-name "temp/" user-emacs-directory))
```

* おまけ
`org-mode` で PDF を管理．
[Using Emacs 44](http://cestlaz.github.io/posts/using-emacs-44-pdf/#.WzxKrfZuLb0) の動画を見てください．

```lisp:init.el
(use-package org-pdfview
  :ensure t
  )
```

`PDF`の 書き出しが面倒なので，[Organizing my papers in org-mode](https://stackoverflow.com/questions/10864824/organizing-my-papers-in-org-mode) のシェルスクリプトを変更して，PDF を管理します（メモやら感想など）．
実際はもう少し変更してますが，下記のスクリプトは相対パスから絶対パスに変更したものです．

```
#!/bin/sh
#
# make-org -- generates an org-mode file from a directory of PDFs
#
# AUTHOR:
#   Jon-Michael Deldin
# USAGE:
#   cd ~/path/to/papers && make-org > papers.org
#

echo "#+TITLE:   Research Papers"
echo "#+STARTUP: align hidestars indent lognotedone"
echo

for f in $(find `pwd` -name '*.pdf'); do
name=$(basename $f .pdf)
path=$(echo $f | sed 's/ /%20/') # encode spaces as %20
echo "* TODO $name :unread:"
echo
echo "[[pdfview:$path::1][$name]]"
echo
done
```

(`C-u C-c C-q` to realign the tags)