NeoVim + vimtexでSyncTeXを使う

SyncTeXを使うためには色々設定項目があって、さらにOS毎に違っており面倒臭いという話。 この記事は

qiita.com

と被るところも多い。 以降に書くことも大抵のことはvimtexのドキュメントを見れば書いてあるが、メモも兼ねて書いておく。

vimtexのインストール、最低限の設定がしてあることを前提とする。 基本的にNeoVimが対象だが、Vimでもそのまま使えるところはその都度明記しておく。

まずneovim-remoteをインストールする。

$ pip3 install neovim-remote

vimrcには次を追記する。 これでMacでもLinuxでも、VimでもNeoVimでも対応できる。 PDFビューアとしてはMacではSkim、LinuxではZathuraを用いている。

if has('mac')
  let g:vimtex_view_method='skim'
else
  let g:vimtex_view_method='zathura'
endif
if has('nvim')
  let g:vimtex_compiler_progname
        \ = 'nvr'
endif

TeXファイルを開くときは

$ NVIM_LISTEN_ADDRESS=/tmp/nvimsocket nvim file.tex

で開く。 /tmp/nvimsocket のところは任意の文字列で良さそう。 aliasを作っておくと便利。

TeX → PDF

上だけでVimでもNeoVimでもOK。 vim上で <localleader>lv を実行すればPDFの該当箇所が開く。

PDF → TeX

Linuxの場合

同じく上だけでVimでもNeoVimでもOK。 PDF上でCtrl+クリックをすれば、(Neo)Vimのカーソルが該当箇所に移動する。 残念ながらウィンドウのフォーカスまでは移動しないようだ。

Macの場合

こちらはNeoVim (CLI)を前提とする。 Skimの設定が必要になる。

環境設定の「同期する」タブを選ぶ。 「PDF-TeX同期サポート」で初期値を「カスタム」にして、 コマンドを nvr、引数を --remote-silent "%file" -c %line にする。 Skimを再起動したり、OSを再起動しないと設定が有効にならないかもしれない。 反映されるタイミングが謎。

これでPDFをCmd+Shift+クリックすれば、該当箇所にNeoVimのカーソルが移動する。

WindowsのVirtualBox上のArch Linuxでxmodmapが効かない

訳あってWindowsVirtualBox上でArch Linuxを動かしているのだが、xmodmapがうまく効かなくて困ったのでメモ。

Macユーザーだったこともあり、個人的にスラッシュの隣のキーはバックスラッシュであってほしい。 そこでxmodmapの出番となるのだが、正しく設定ファイルを書いても反映されなかった。

VirtualBoxアクセラレーション設定を「デフォルト」にしたところ解決した。 KVMが早いと聞いたのでそちらを使っていたのだが、こちらではうまく行かないらしい。 結局これでもうまくいっていないようだ。一体何が問題なのか。

Arch Linuxにrbenvでバージョンの古いrubyをインストール

例えば2.3.4など。普通にやると失敗する。

github.com

にあるとおり、

$ PKG_CONFIG_PATH=/usr/lib/openssl-1.0/pkgconfig \
  rbenv install 2.3.4

でOK。

GNOME、fcitxで候補リストの向きを縦にする

わかりにくい上にググっても出てこなかったのでメモ。

Input Method Panel - GNOME Shell Extensions

をインストールした上で、右上に出てくるパネルから"Panel Preferences"をクリックして、"Vertical List"を有効にすれば良い。

デフォルトが横向きってキー操作も直感的じゃないし、良くないと思う。

源ノ明朝と源ノ角ゴシックをupLaTeXで使用する

前から試したかったのだが、無事成功した。 f:id:htlsne:20170505225128p:plain

源ノ明朝と源ノ角ゴシックをupLaTeXで使ってみるテスト(pxchfon+otfパッケージ使用)

Arch LinuxでMacの3本指ドラッグを再現する

github.com

で実現できる。Arch LinuxではAURの AUR (en) - xf86-input-mtrack-git をインストールする。 あとはREADMEの最後にあるとおりに設定すれば、3本指ドラッグが実現できる。

しかしそれだけやって再起動すると、トラックパッドが反応しなくなってしまう。 (このような自体に陥った場合はCtrl-Alt-F1(~F7)で端末に入れるので、そこで設定すればいい。) 原因は

github.com

で、あらかじめ自分のユーザをinputグループに追加しておけば良い。 具体的には、

# gpasswd -a [Username] input

で良い。 これでタッチパッドが動くようになった。

ちなみに参考までに、私の設定は

github.com

に公開してある。

Arch Linux (GNOME)でBluetoothスピーカーの音質が悪くなる問題の解決

私は部屋では

で音楽を再生している。Arch Linux (GNOME)上でこれを使おうとしたところ、ペアリングと再生自体はできるのだが、音質が極端に悪くなってしまって困った。具体的には酷いノイズが乗る。

解決策を調べたのだが、再生ができないという報告はあっても音質が悪いという報告は見つからず、少し手間取った。 備忘録的に試したことと結論を記しておく。 解決策だけ知りたい人は、最後の結論だけ読めば大丈夫。

今までの操作

GNOMEの設定からBluetoothを有効化、GUI上でペアリング。同じく「サウンド」の「出力」でデバイスを選択すると、一応音は出る。 プロファイルがHSP/HFPA2DPの2種類選択できるが、どちらを選んでも酷いノイズが乗る。

試したこと

Bluetoothスピーカーやイヤホンについては、

Bluetooth ヘッドセット - ArchWiki

にArch Wikiの記事がある。

読んでみると、プロファイルにA2DPを選択すればいいらしい。しかしGNOME上から選択しても効果はない。 bluetoothctlで設定してみるが、結果は同じ。

pavucontrolというのをインストールしてみる。これはGUIでpulseaudioの設定ができるツールらしい。 開いてこちらでA2DPを選ぼうとすると、こちらでは無効(だったか?詳細は忘れた)と表示されている。 つまりA2DPに設定できていなかったのが原因らしい!

Bluetooth ヘッドセット - ArchWiki

の箇所にそれらしきことが書いてあるので、pacmdコマンドを試してみるが、エラーが出て失敗する。

そこで、「GDM ユーザーで pulseaudio ソケットをマスク」というのを試してみたところ、無事A2DPが選べるようになり、ノイズを消すことができた。

結論

「GDM ユーザーで pulseaudio ソケットをマスク」すればよい。 具体的には、

# mkdir -p ~gdm/.config/systemd/user
# ln -s /dev/null ~gdm/.config/systemd/user/pulseaudio.socket

を実行する。sudoでやらないと権限が足りないはず。 その後再起動してA2DPを選べば、問題は解決するはず。

残る問題

これをやっても何かの拍子に音声が遅延して乱れたりすることが非常に多い。 接続直後は問題ないのだが、音声が途切れたりすると起こるようだ。 結局相性が悪いのかもしれない。