将 Emacs AUCTeX 与 Sumatra PDF 同步

问题描述 投票:0回答: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 代码,我还在苏门答腊岛选项

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问题。 谢谢你的帮助。

附注请告诉我这个问题是否最适合 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
中是无效的。

emacs latex elisp auctex
6个回答
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"))))

苏门答腊岛一侧

在“设置”->“选项”对话框中将

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 并...享受))


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

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

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


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.bat
SumatraPDF.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)

仅此而已。


此外

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

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



0
投票

值得一提的是,默认情况下,

Set inverse search command line
Settings->Options
对话框中是不可见的。要显示此选项字段,请转至
Settings->Advanced options
或打开
SumatraPDF-settings.txt
并打开
EnableTeXEnhancements = true


0
投票

这些答案在最新版本的 SumatraPDF 中不再适用。要设置从 SumatraPDF 到 emacs 的链接,请执行以下操作:

在苏门答腊岛,选择设置 -> 高级选项。

这将弹出一个带有选项的文本编辑器。在任意位置添加以下行(它们将被重新排序):

ReuseInstance = true
ReloadModifiedDocuments = true
InverseSearchCmdLine = "C:\Program Files\Emacs\emacs-29.4\bin\emacsclientw" -n +%l "%f"
EnableTeXEnhancements = true

显然,适当调整路径。

© www.soinside.com 2019 - 2024. All rights reserved.