Le problème de base :
J'ai besoin d'écrire une fonction Emacs lisp qui gère la recherche en avant d'un fichier TeX dans Emacs vers une ligne de la sortie PDF correspondant à la position actuelle dans le fichier TeX. Synctex permet ce type d'opération. Cependant, les fichiers synctex sont référencés différemment depuis la nouvelle version de TeXlive 2011, ce qui nécessite l'écriture de la fonction Emacs.
Contexte :
Synctex dans TeXlive 2011 utilise une syntaxe différente pour référencer les sources TeX (techniquement, je suppose que cela est lié à la façon dont pdflatex dans TeXlive 2011 crée les fichiers synctex). Dans TeXlive 2010, les sources TeX sont simplement référencées en utilisant un chemin relatif ; dans TeXlive 2011, les sources TeX sont référencées en utilisant /full/path/to/tex/source/./tex-source-file.tex
.
Quoi qu'il en soit, cela rend la recherche en aval de la source TeX dans Emacs vers la sortie pdf dans Okular impossible. Une façon de faire de la recherche en aval dans Emacs vers Okular impliquait une fonction comme :
(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)))
(et
(add-to-list 'TeX-expand-list
'("%u" okular-make-url))
(setq TeX-view-program-list '(("Okular" "okular --unique %u")))
)
Cela génère une commande comme :
okular --unique my-file.pdf#src:88my-file.tex
Ce qui, à partir de TeXlive 2010, permet de sauter correctement à la ligne de la sortie pdf correspondant à la ligne 88 de l'entrée TeX. Mais, comme indiqué ci-dessus, cela ne fonctionne pas avec TeXlive 2011, en raison de la nouvelle façon de gérer les chemins synctex vers les sources TeX.
Ce qui est nécessaire :
Ce qu'il faut, c'est une réécriture de okular-make-url
qui génère quelque chose comme :
okular --unique my-file.pdf#src:88/full/path/to/my/tex/source/./my-file.tex
C'est-à-dire avec (1) le chemin complet du fichier + (2) "./" + (3) le nom du fichier.
Je ne suis pas assez habile avec les commandes Emacs lisp (et le code elisp AUCTeX en particulier) pour être sûr de la manière de procéder. De toute évidence, il s'agit de modifier la dernière partie de la ligne de commande okular-make-url
fonction.
Suggestions ?