gpt4 book ai didi

Emacs/AUCTeX : Rewriting the Okular-make-url function to work with new synctex (full path + "./") syntax

转载 作者:太空宇宙 更新时间:2023-11-03 18:43:34 26 4
gpt4 key购买 nike

<分区>

基本问题:

需要编写一个 Emacs lisp 函数来处理从 Emacs 中的 TeX 文件向前搜索到 PDF 输出中对应于 TeX 文件中当前位置的一行。 Synctex 允许这种操作。但是新版TeXlive 2011对synctex文件的引用有所不同,需要编写Emacs函数。

背景:

TeXlive 2011 中的 Synctex 使用不同的语法来引用 TeX 源(从技术上讲,我认为它与 TeXlive 2011 中的 pdflatex 创建 synctex 文件的方式有关)。在 TeXlive 2010 中,TeX 源仅使用相对路径引用;在 TeXlive 2011 中,使用 /full/path/to/tex/source/./tex-source-file.tex 引用 TeX 源代码。

无论如何,这使得从 Emacs 中的 TeX 源代码到 Okular 中的 pdf 输出的正向搜索中断了。在 Emacs 中对 Okular 进行正向搜索的一种方法涉及如下函数:

(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 开始,它正确地跳转到 pdf 输出中对应于 TeX 输入的第 88 行的行。但是,如上所述,它不适用于 TeXlive 2011,因为处理 TeX 源的 synctex 路径的新方法。

需要什么:

所需要的是重写 okular-make-url 生成如下内容:

okular --unique my-file.pdf#src:88/full/path/to/my/tex/source/./my-file.tex

即 (1) 文件的完整路径 + (2)"./"+ (3) 文件名。

我对 Emacs lisp 命令(尤其是 AUCTeX elisp 代码)不够熟练,无法确定如何执行此操作。显然,它与更改 okular-make-url 函数的最后一部分有关。

建议?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com