#やりたいこと
前回は、Emacsはターミナル上で動かして、PDFファイルのプレビューをWindowsのソフトを呼び出していたけど、EmacsをX Window上で動くようにすれば、PDFファイルもBash on Ubuntuで何とかなるのではないかと考えたのが事の発端。それでSyncTeXのforward searchが使えるようになれば嬉しいな、ということでいろいろ試してみる。
#X Serverのインストール
いろいろあるけど、シンプルそうなのでVcXsrvをインストールする。スタートアップフォルダに入れておけば自動的に起動するので便利。
##DISPLAY環境変数
export DISPLAY=:0.0
VcXsrvを起動して得られる数字に適宜変更する必要はあるけど、普通はこれで問題ないはず。適当にX Windowのアプリケーションを起動してウィンドウが開けば取りあえずはOK。
#Emacsのビルド
UbuntuのパッケージにあるEmacsだとエラーが出てきどうせず、また、こちらで紹介されているsnapshotを利用する形だと、表示はできるけどウィンドウサイズ周りの挙動がおかしいので、自分でビルドする。
ビルド自体はこちらを参考に。ポイントとしては、x-toolkitはgtk3以外を選択するということと、D-Busはそのままにしておくということ。configureのオプションはこんな感じでビルドする。あ、あと、クリップボード周りのパッチは当ててある。
$ ./configure x86_64-pc-linux-gnu --with-x-toolkit=gtk2 --with-libotf --with-m17n-flt
$ make
$ make install
これでドラッグしてウィンドウサイズを変更してもきちんと追従してくれるし、init.elでウィンドウサイズや位置を指定してもその通りに動くようになった(と思う)。
#D-Bus設定
このままだと、D-Busは起動時にエラーが出るし、またEmacsからアプリの起動もできないので、こちらを参照して、TCPで通信できるようにする。
$ sudo sed -i 's$<listen>.*</listen>$<listen>tcp:host=localhost,port=0</listen>$' /etc/dbus-1/session.conf
シェルを再起動してからEmacsを起動すればD-Bus周りのエラーは出なくなった。
#X Window上のPDFビューワー
##Evinceのインストール
SyncTeX対応のものはいくつかあるけど、Ubuntuのパッケージだと例えばZathuraはどうもSyncTeXを外しているようなので野良ビルドになる(これやったけどかなり面倒くさい)ので、Evinceをパッケージで入れる。
# apt-get install evince
##fwdevinceのインストール
TeX Wikiで紹介されているfwdevinceをインストールする。うちの環境だとPythonは2と3と両方インストールされていて2がデフォルトだったので、必要に応じてアプリケーションのリンクを変更するか、スクリプトファイルの先頭を/usr/bin/python3
にしておく。
うまく動作しない場合、ライブラリをインストールすれば動くようになるはず。うちの環境だとpyhotn-dbusが入ってなかったので入れる必要があった。
##Emacs上の設定
YaTeXを利用しているので、TeX Wikiを参照して以下のように。
(setq YaTeX-inhibit-prefix-letter t)
(setq YaTeX-dvi2-command-ext-alist
'(("TeXworks\\|texworks\\|texstudio\\|mupdf\\|SumatraPDF\\|Preview\\|Skim\\|TeXShop\\|evince\\|okular\\|zathura\\|qpdfview\\|Firefox\\|firefox\\|chrome\\|chromium\\|Adobe\\|Acrobat\\|AcroRd32\\|acroread\\|pdfopen\\|xdg-open\\|open\\|start" . ".pdf")))
(setq dvi2-command "evince")
(setq tex-pdfview-command "evince")
これで、.texファイルが開かれているバッファ上で、C-c``````C-g
とすればPDFファイルの当該部分を参照してくれるはず。ただし、Evinceは精度がイマイチ。Zathuraはこの点は良い。
#参考
- https://www.reddit.com/r/Windows10/comments/4rsmzp/bash_on_windows_getting_dbus_and_x_server_working/
- https://www.reddit.com/r/emacs/comments/4vxoug/emacs_on_windows_10_anniversary_update/d658nd7/
- https://m.reddit.com/r/bashonubuntuonwindows/comments/4tpn5r/running_emacs_master_branch_in_recent_wsl_and/
- https://linuxconfig.org/how-to-change-from-default-to-alternative-python-version-on-debian-linux
- http://tonop.cocolog-nifty.com/blog/2016/11/bash-on-ubuntu-.html