Bash on Ubuntu on Windows上でTeXLiveのコンパイル&プレビュー環境を構築する（その2）


# Emacの設定

## [yaskkserv](http://umiushi.org/~wac/yaskkserv/)のインストールと設定

skk の辞書サーバとして複数辞書を扱えるのが嬉しいのでyaskkservを手動でインストールする。Ubuntuにはパッケージがあるので、そちらを使っても良いんだろうけれど。

### インストール

基本的には、ソースをダウンロードして./configure && sudo make installでOK。./configureした時にライブラリがないと出たらその都度apt-getでインストールして対応。自分の環境だとpkg-configやlibgnutls-openssl-devなんかを入れる必要があった。

### 辞書の設定と起動ファイル

yaskkservは、yaskkserv_make_dictionaryで専用の辞書を作成する必要があるので、こんなファイルを作成して、辞書を/usr/local/share/yaskkservに置くようにした。元のSKK辞書は、[CVSサーバ](http://openlab.ring.gr.jp/skk/dev-ja.html#dev_cvs)からひっぱってきたもの。

```yaskkserv_convert
#!/bin/sh

DIRPATH=/your/path/of/skk/dic/

for FILE in ${DIRPATH}SKK-JISYO.*
do
  rm -f *.yaskkserv
  /usr/local/bin/yaskkserv_make_dictionary ${FILE} ${FILE}.yaskkserv
  mv ${FILE}.yaskkserv /usr/local/share/yaskkserv/
done

DIRPATH=/your/path/of/skk/dic/zipcode/

for FILE in ${DIRPATH}SKK-JISYO.*
do
  rm -f *.yaskkserv
  /usr/local/bin/yaskkserv_make_dictionary ${FILE} ${FILE}.yaskkserv
  mv ${FILE}.yaskkserv /usr/local/share/yaskkserv/
done
```
でもって、yaskkservを起動するのにこんなファイルを作成。

```yaskkserv-start.sh
#!/bin/sh
/usr/local/sbin/yaskkserv /usr/local/share/yaskkserv/SKK-JISYO.L.yaskkserv /usr/local/share/yaskkserv/SKK-JISYO.law.yaskkserv /usr/local/share/yaskkserv/SKK-JISYO.okinawa.yaskkserv /usr/local/share/yaskkserv/SKK-JISYO.jinmei.yaskkserv /usr/local/share/yaskkserv/SKK-JISYO.JIS2.yaskkserv /usr/local/share/yaskkserv/SKK-JISYO.JIS2004.yaskkserv /usr/local/share/yaskkserv/SKK-JISYO.JIS3_4.yaskkserv /usr/local/share/yaskkserv/SKK-JISYO.itaiji.JIS3_4.yaskkserv
```

で、これを/usr/local/binにでも置いておく。

# Emacs上の設定

## skkに関する設定

とりあえず辞書サーバに関連しそうな部分だけ抜粋。当然通常のautoloadに関する部分とかは別に設定している。

```skk.el
;; server settings
(setq skk-server-inhibit-startup-server nil)
(setq skk-server-portnum 1178)
(setq skk-server-prog "/usr/local/bin/yaskkserv.sh")
(setq skk-large-jisyo nil)

;; server completion
(add-to-list 'skk-search-prog-list
	     '(skk-server-completion-search) t)
(add-to-list 'skk-completion-prog-list
	     '(skk-comp-by-server-completion) t)
```

これでユーザー辞書にない単語が出てくると、yaskkservが起動して候補を表示してくれる。また、Tabでcompletionが効くのが長い単語を何度も入力する際には割と便利。

ちなみに、ファイル名がskk.elなのは、init.elに

```init.el
;;; setting files
(setq skk-init-file    "~/.emacs.d/skk/skk.el"
      skk-jisyo        "~/.emacs.d/skk/skk-jisyo"
      skk-backup-jisyo "~/.emacs.d/skk/skk-jisyo.bak"
      skk-record-file  "~/.emacs.d/skk/skk-record")
```

としているため。いろいろ整理できるんでこの設定は重宝している。

## YaTeXに関する設定

YaTeXに関しては、普通にTeXLiveをインストールしていれば、.texファイルのコンパイルからpdfファイルの作成までは[TeX Wiki](https://texwiki.texjp.org/?YaTeX)を参考に設定すれば問題ない。

作成したPDFファイルのプレビューをどうするかで、前回インストールした[wstart](http://qiita.com/kuro_23/items/6bb7e3d470d04209bd03#wstart%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)の出番となる。

自分の場合は、PDFファイルのプレビューに[SumatraPDF](http://www.sumatrapdfreader.org/free-pdf-reader-ja.html)を使っているので、init.elに次の設定をしておくと、`C-c` `C-t` `p`でSumatraPDFが起動してくれる。パスの変換とかを全く気にしなくていいのですごく便利。

```init.el
(setq dvi2-command "wstart rundll32 shell32,ShellExec_RunDLL SumatraPDF -reuse-instance")
(setq tex-pdfview-command "wstart rundll32 shell32,ShellExec_RunDLL SumatraPDF -reuse-instance")
```

一応、これでwsl-terminal上でEmacsを起動して.texファイルを読み込み、日本語入力してタイプセット、プレビューまではできた。全体的には大してハマる部分もなく、動作も速いので、MSYS2上でやるよりも良いかもしれない。

# 今後の課題

- X WindowでEmacsを起動させたい（でもあまり意味はない）。

wsl-terminalはrun-wsl-file.exeをコピーしてLinuxアプリの名前に変更すると、ダブルクリックで当該アプリが起動するという仕組があるので、それでいいかなという気もしている（まだ試していないけど）。

- forward-search

将来的に何とかなると嬉しい点としては、foward-searchかな。現在の方法だとパスの変換が問題となるので使えない（`C-c` `C-g`してもファイルが開かれるだけで該当部分にまでは移動しない）。

`C-c` `C-g`するときに、Ubuntu上のパス（/home/xxxxx/test.tex）をWindows上のパス（C:\Users\USERNAME\AppData\Local\lxss\home\xxxxx\test.tex）に変換すれば良さげなんだけど、全部のパスをうまいこと変換するスクリプトを書くぐらいなら、将来的にTeX側で対応してくれることを期待したい。