将Emacs AUCTeX与Sumatra PDF同步

ant*_*nio 6 emacs latex elisp auctex

在我的这些行中,我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")))
Run Code Online (Sandbox Code Playgroud)

要设置双击PDF以使我获得相关的LaTeX代码,我还在Sumatra选项中Set inverse search command line设置:

"c:\bin86\GNU Emacs 24.2\bin\emacsclient.exe" --no-wait +%l "%f" 
Run Code Online (Sandbox Code Playgroud)

尽管同步工作,我想以不同的方式编码.

如果我没有设置最后一个表达式,(setq TeX-view-program-selection...除了PDF输出的值之外,我将获得与上面相同的默认值:(output-pdf "start").我想将此更改为"Sumatra PDF"并将其他值保留为默认值,也就是说,我想向Emacs询问查看器的默认值并仅更改PDF值.

它主要是关于操纵变量的ELisp问题TeX-view-program-selection.谢谢你的帮助.

PS请告诉我这个问题是否最适合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"))
Run Code Online (Sandbox Code Playgroud)

第一行是可选的,但它使列表看起来"更干净".

在这两种情况下(有或没有assq-delete-all)我现在需要在适当的钩子中插入代码,因为它TeX-view-program-selection是无效的init.el.

ant*_*nio 12

我对lunaryorn的建议!我正在重新包装涉及其他人利益的步骤.

Emacs方面

添加到您的init.el:

(setq TeX-PDF-mode t)
(setq TeX-source-correlate-mode t)
(setq TeX-source-correlate-method 'synctex)
(setq TeX-view-program-list
   '(("Sumatra PDF" ("\"path/to/SumatraPDF/SumatraPDF.exe\" -reuse-instance"
                      (mode-io-correlate " -forward-search %b %n ") " %o"))))

(eval-after-load 'tex
  '(progn
     (assq-delete-all 'output-pdf TeX-view-program-selection)
     (add-to-list 'TeX-view-program-selection '(output-pdf "Sumatra PDF"))))
Run Code Online (Sandbox Code Playgroud)

苏门答腊方面

在设置 - >选项对话框中设置Set inverse search command line为:

"path\to\GNU Emacs ver\bin\emacsclient.exe" --no-wait +%l "%f" 
Run Code Online (Sandbox Code Playgroud)

如何使用

在Emacs中的LaTeX文档中键入C-c C-v或双击Sumatra中的相关PDF并...享受))