EmacsとSkim.appでTeX・PDFシンクロ

最終更新日 2014年12月30日

[追記:2014/12/30]YaTeX 1.78 で、(カーソル位置に応じて振る舞いを変える)ジャンプ機能(C-c C-g)の1つとして、ここで紹介していたことと同等の機能が追加されました。

TeX用のPDFプレビュアSkimは「プレビュアからエディタ」と「エディタからプレビュア」と双方向でジャンプできる機能がある。後者を実現するにはエディタからコマンドを実行する必要があるので、EmacsYaTeX用に関数を書いてみた。

Skim.app に内蔵されているシェルスクリプト displayline に、エディタのカーソルがある行番号とPDFファイル、そして現在開いているTeXファイルの3つの引数を与えて実行するだけ。(メインファイル foo.texから小ファイル bar.tex をインクルードする場合は、2番目の引数が foo.pdf で 3番目の引数は bar.tex)実際に、ターミナルからコマンドを実行すると、どのように動作するのかが分かる。

$ /Applications/Skim.app/Contents/SharedSupport/displayline 行番号 PDFファイル名 TeXファイル

[追記:2012/4/27]ここに紹介していたコードは、TeXWikiにそれを修正したものが紹介されているのでそちらを参考に。

[追記:2013/7/2]YaTeXのMLで問題点を修正してもらったので、再びここに掲載。

こういうエディタとプレビュアの間を自動的に行き来することは本来実現するべき機能だから、pdfTeX が日本語に対応していないために日本語TeX(pTeX)でできないというのは残念なこと。 [追記:2012/4/27] いつのまにかできるようになっていた!"platex -synctex=1"とすればよい。

[追記:2012/4/27] Skimを背面のままに保ちたい場合は、displayline に -g オプションを追加する。