Emacs
TeX
WSL

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


1. はじめに

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


2. TeX Live 2018


ISO イメージのダウンロード

私の環境からは,ネットワークインストールすると結構な時間がかかるので,DVD イメージをダウンロードしてインストールします(数分でダウンロードが終わりました).

TeX Liveon DVDdownloading the TeX Live ISO image and burning your own DVDdownload from a nearby CTAN mirrortexlive2018-20180414.iso からダウンロードする(20180414 は変わると思います).


ISO イメージのマウント

WSL 上でマウントできなかったので,Windows 側でマウントする(右クリック → マウント).私の環境では,E ドライブにマウントされたので,WSL 上にマウントポイントを作成してマウントする.

$ sudo mkdir -p /mnt/e

$ sudo mount -t drvfs E: /mnt/e


インストール

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

$ sudo /mnt/e/install-tl

メニューが立ち上がるので【Schme】から scr,【Collections】から cxmr,【Options】opdsr に変更後,i でインストールする.

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


設定


  • PATH の設定

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

$ sudo /usr/local/texlive/2018/bin/x86_64-linux/tlmgr path add

$ sudo tlmgr paper a4
$ sudo umount /mnt/e


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

詳しい内容は,TeX Wiki を確認してください.

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

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

なぜダミーパッケージに freeglut3 が必要なのかわからないのですが,TeX Livefor TL 2018 では依存しているので導入しておきます.

$ sudo apt install freeglut3

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

$ 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 のアップデート

$ 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

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

$ sudo -E tlmgr install pdfcrop latexmk dvipng

$ sudo -E tlmgr path add


3. Emacs の設定


PDF Tools の導入

pdf-tools を使ってみます.epdinfo のビルドに必要なパッケージを導入する.

$ 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-toolsuse-package でインストールする.


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 RETepdfindo をコンパイル


  • M-x pdf-info-check-epdfinfo RET でテスト


AUCTeX の導入

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


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'は別途下記のように設定しています.

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


  • おまけ
    org-mode で PDF を管理.
    Using Emacs 44 の動画を見てください.


init.el

(use-package org-pdfview

:ensure t
)

PDFの 書き出しが面倒なので,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)