基本的な問題:
EmacsのTeXファイルからTeXファイル内の現在の位置に対応するPDF出力の行への前方検索を処理するEmacslisp関数を作成する必要があります。Synctexでは、この種の操作が可能です。ただし、新しいバージョンのTeXlive 2011では、synctexファイルの参照方法が異なるため、Emacs関数を作成する必要があります。
バックグラウンド:
TeXlive 2011のSynctexは、TeXソースを参照するために異なる構文を使用します(技術的には、TeXlive 2011のpdflatexがsynctexファイルを作成する方法に関係していると思います)。TeXlive 2010では、TeXソースは相対パスを使用して参照されるだけです。TeXlive 2011では、TeXソースはを使用して参照されます/full/path/to/tex/source/./tex-source-file.tex
。
いずれにせよ、これにより、EmacsのTeXソースからOkularbreakのpdf出力への前方検索が行われます。EmacsでOkularにフォワード検索を行う1つの方法には、次のような機能が含まれていました。
(defun okular-make-url () (concat
"file://"
(expand-file-name (funcall file (TeX-output-extension) t)
(file-name-directory (TeX-master-file)))
"#src:"
(TeX-current-line)
(TeX-current-file-name-master-relative)))
(と
(add-to-list 'TeX-expand-list
'("%u" okular-make-url))
(setq TeX-view-program-list '(("Okular" "okular --unique %u")))
)。
これにより、次のようなコマンドが生成されます。
okular --unique my-file.pdf#src:88my-file.tex
これは、TeXlive 2010の時点で、TeX入力の88行目に対応するPDF出力の行に正しくジャンプします。ただし、前述のように、TeXソースへのsynctexパスを処理する新しい方法のため、TeXlive2011では機能しません。
必要とされていること:
okular-make-url
必要なのは、次のようなものを生成する書き直しです。
okular --unique my-file.pdf#src:88/full/path/to/my/tex/source/./my-file.tex
つまり、(1)ファイルのフルパス+(2) "./" +(3)ファイル名。
私はこれを行う方法を確信するためにEmacslispコマンド(そして特にAUCTeX elispコード)に十分に精通していません。明らかに、それは関数の最後の部分を変更することと関係がありokular-make-url
ます。
提案?