通过在我的init.el
文件中添加以下代码,我可以将Emacs的LaTeX缓冲区与Sumatra同步:
(setq TeX-source-correlate-mode t)
(setq TeX-source-correlate-method 'synctex)
(setq TeX-view-program-list
'(("Sumatra PDF" ("\"C:/bin86/SumatraPDF/SumatraPDF.exe\" -reuse-instance"
(mode-io-correlate " -forward-search %b %n ") " %o"))))
(setq TeX-view-program-selection
'(((output-dvi style-pstricks) "dvips and start") (output-dvi "Yap")
(output-pdf "Sumatra PDF") (output-html "start")))
为了在PDF上双击后跳转到相关的LaTeX代码,我还在Sumatra选项中设置了Set inverse search command line
为:
"c:\bin86\GNU Emacs 24.2\bin\emacsclient.exe" --no-wait +%l "%f"
尽管同步正常工作,但我想用不同的方式编写代码。
如果我没有设置最后一个表达式
(setq TeX-view-program-selection...
,我将得到默认值,这些值与上面相同,除了PDF输出的值为:(output-pdf "start")
。我想将其更改为“ Sumatra PDF”,并将其他值保留为默认值,也就是说,我想要求Emacs查找查看器的默认值,并仅更改PDF值。这主要是关于变量
TeX-view-program-selection
的ELisp问题。谢谢帮助。P.S.请告诉我这个问题是否最适合在tex.stackexchange上。
根据lunaryorn评论/答案的更新:
要更新
TeX-view-program-selection
,可以使用以下方法:(assq-delete-all 'output-pdf TeX-view-program-selection)
(add-to-list 'TeX-view-program-selection '(output-pdf "Sumatra PDF"))
第一行是可选的,但它使列表看起来更加清洁。
在这两种情况下(有或没有“assq-delete-all”),我现在需要将代码插入到适当的钩子中,因为在“init.el”中,“TeX-view-program-selection”为空。
TeX-view-program-selection
定义之后。 - user355252