6

通过我的这些行,我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 值。

这主要是关于变量操作的 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"))

第一行是可选的,但它使列表看起来“更干净”。

在这两种情况下(有或没有assq-delete-all)我现在都需要将代码插入到正确的钩子中,TeX-view-program-selection因为init.el.

4

5 回答 5

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"))))

苏门答腊一侧

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

"path\to\GNU Emacs ver\bin\emacsclient.exe" --no-wait +%l "%f" 

如何使用

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

于 2013-01-31T15:53:27.673 回答
1

使用add-to-list而不是setq. 有关C-h f add-to-list更多信息,请参阅。

TeX-view-program-selection在 中定义tex.el,因此您需要在加载此库后执行此代码:

(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"))))
于 2013-01-23T09:37:38.417 回答
1

windows -> emacs 的引用约定让我几乎发疯了如果您在默认位置安装 SumatraPDF,那么这适用于 windows 8.1

(setq TeX-view-program-list
   '(("Sumatra PDF" ("\"C:/Program Files (x86)/SumatraPDF/SumatraPDF.exe\" -reuse-instance"
          (mode-io-correlate " -forward-search %b %n ") " %o")))))

那是一个小时左右,我永远不会回来:)

于 2015-01-29T02:39:52.973 回答
0

我准备了一个批处理文件,Emacs_SumatraPDF.bat.

它可以完美sumatra-forward.el地实现向前和向后搜索。

例如:

下载

http://www.ai.soc.i.kyoto-u.ac.jp/~shi/files/Emacs_SumatraPDF.bat

http://william.famille-blum.org/software/sumatra/sumatra-forward.el


准备

Emacs_SumatraPDF.batSumatraPDF.exe--> %Emacs_Home%/bin

sumatra-forward.el——>%Emacs_Home%/site-lisp


用法

;Emacs_Home=C:/Program Files (x86)/GNU Emacs 23.4
;~\.emacs add following information


;;; Emacs_SumatraPDF.bat
;;  @info: pdf viewer 
;   @refer: 
(setq TeX-view-program-list '(
      ("Sumatra" "C:/Program Files (x86)/GNU Emacs 23.4/bin/Emacs_SumatraPDF.bat 
                   %o %t %n") ))         

(setq TeX-view-program-selection '(
     (output-pdf "Sumatra") 
     (output-dvi "Yap") 
     ((output-dvi style-pstricks) "dvips and start") 
     (output-html "start"))) 

 ;;; sumatra-forward.el
 ;;  @info: forward search. 
 ;   @refer: http:/william.famille-blum.org/blog/static.php?page=static081010-000413
 (require 'sumatra-forward)

就这些。


除了

Emacs 4 Latex 支持Windows 7 下的 Emacs 新手。

http://chunqishi.github.io/emacs4ls/


于 2013-04-25T17:53:57.947 回答
0

值得一提的是,默认情况下在对话框中Set inverse search command line是不可见的。Settings->Options要显示此选项字段,请转到Settings->Advanced options或打开SumatraPDF-settings.txt并打开EnableTeXEnhancements = true

于 2014-06-24T11:30:58.187 回答