通过我的
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
要更新
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
中是无效的。
感谢lunaryorn的建议! 我正在重新包装所涉及的步骤,以造福其他人。
添加到您的
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 并...享受))
使用
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"))))
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")))))
那是一个小时左右,我永远不会回来:)
我准备了一个批处理文件,
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/
值得一提的是,默认情况下,
Set inverse search command line
在 Settings->Options
对话框中是不可见的。要显示此选项字段,请转至 Settings->Advanced options
或打开 SumatraPDF-settings.txt
并打开 EnableTeXEnhancements = true
。
这些答案在最新版本的 SumatraPDF 中不再适用。要设置从 SumatraPDF 到 emacs 的链接,请执行以下操作:
在苏门答腊岛,选择设置 -> 高级选项。
这将弹出一个带有选项的文本编辑器。在任意位置添加以下行(它们将被重新排序):
ReuseInstance = true
ReloadModifiedDocuments = true
InverseSearchCmdLine = "C:\Program Files\Emacs\emacs-29.4\bin\emacsclientw" -n +%l "%f"
EnableTeXEnhancements = true
显然,适当调整路径。