将Emacs AUCTeX与苏门答腊同步PDF

将Emacs AUCTeX与苏门答腊同步PDF,emacs,latex,elisp,auctex,Emacs,Latex,Elisp,Auctex,通过我的init.el中的这些行,我能够将Emacs LaTeX缓冲区与苏门答腊同步: (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"

通过我的
init.el
中的这些行,我能够将Emacs LaTeX缓冲区与苏门答腊同步:

(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 options
set Reverse search命令行中设置:

"c:\bin86\GNU Emacs 24.2\bin\emacsclient.exe" --no-wait +%l "%f" 
"path\to\GNU Emacs ver\bin\emacsclient.exe" --no-wait +%l "%f" 
尽管同步有效,我还是想用不同的方式来编码

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

这主要是一个关于变量
TeX view程序选择操作的ELisp问题。
谢谢你的帮助

另外,请告诉我这个问题是否最适合你

根据lunaryorn的评论/回答进行更新 要更新
TeX view程序选择
,我可以使用:

(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程序选择在
init.el
中是无效的

TeX view程序选择
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"))))

我感谢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"))))
苏门答腊岛一侧 在设置->选项对话框中,将反向搜索命令行设置为:

"c:\bin86\GNU Emacs 24.2\bin\emacsclient.exe" --no-wait +%l "%f" 
"path\to\GNU Emacs ver\bin\emacsclient.exe" --no-wait +%l "%f" 
如何使用
在Emacs类型的LaTeX文档中,
C-C C-v
或双击苏门答腊岛的相关PDF,然后…享受”)

我准备了一个批处理文件,
Emacs\u SumatraPDF.bat

它与
sumatra forward.el
完美配合,实现向前和向后搜索

例如: 下载

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


准备

;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\u SumatraPDF.bat
SumatraPDF.exe
-->
%Emacs\u Home%/bin

将苏门答腊向前推进.el
-->
%Emacs\u 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新手提供



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

我几乎被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")))))

那是一个小时左右,我再也回不来了:)

这里的问题没问题,但你真的应该接受你的问题的一些答案。@antonio我更新了我的答案,解释了你的代码是如何在正确的位置执行的,也就是在定义了
TeX view程序选择之后。请接受对你有帮助的答案。马丁·施罗德:我想我理解你所观察到的。我为自己的答案准备了一个分步解决方案,所有Emacs Sumatra用户都可以轻松使用,并选中了绿色标记。在
TeX view程序选择中已经有元素
(输出pdf“start”)
。如果我使用:
(添加到列表“TeX view program selection”(输出pdf“Sumatra pdf”)
,我会得到两个密钥对
输出pdf
@antonio
添加到列表中
在列表开头添加新元素,AUCTeX将使用
TeX view program selection
中的第一个
输出pdf
元素。鉴于格式限制,我对编辑问题发表了评论。+1抱歉,我没有注意到您的问题编辑。它现在按预期工作,thanksI还必须创建一个环境变量
ALTERNATE_EDITOR
,指向我的runemacs.exe,并
EMACS_服务器
,指向我的EMACS服务器文件(在
.EMACS.d\SERVER
目录中),因为苏门答腊官方PDF不包含反向搜索对话框,你可以从emacs内部提供必要的信息:
(添加到列表“TeX view程序列表”(“苏门答腊PDF”(“苏门答腊PDF-重用实例”(“模式io关联”-正向搜索%b%n-反向搜索\“EmacClient Tw-无等待+%%l\”\“%%f\”)%o)
以下是正确的引用:
(添加到列表“TeX view程序列表”(“苏门答腊PDF”)(“苏门答腊PDF-重用实例”(模式io关联”-正向搜索%b%n-反向搜索\“EmacClient Tw--无等待+%%l\\\“%%f\\\”)“%o”)
as”根据TeX展开列表展开。另外请注意,如果您用于Emacs和苏门答腊PDF安装,请注意。