请教下 Windows 10下使用auctex配合sumatra pdf 正向反向搜索的配置

我按照http://juanjose.garciaripoll.com/blog/latex-with-emacs-on-windows 配置了,现在能从tex定位到pdf去,但不能Sumatra返回到tex代码上去,每次双击pdf,都会报emacsclietw句柄错误

如果我把sumatra里头的命令改成emacs.exe的话,就会新建一个新的emacs应用

请问有没有配置成功的呢?

3 个赞

你把 sumatra 命令路径中的/改为\试试 我一直都在用 synctex,可以从 pdf 跳到 TeX 文件上。但是比较好奇你说的正向定位。点击 TeX 文件跳到 pdf 上?

因为我一直都在用 org 导出 pdf,这个功能对我意义不大。

我说的正向就这样,我设定了shift加鼠标右键进行跳转

1 个赞
  (setq TeX-source-correlate-start-server t)

emacs端还缺一句这个,现在好了,sumatra端还是用emacsclientw.exe的路径

我也试试,这个要是能在 org 和 pdf 进行就好了

你绑定到 shift+鼠标右键的函数名称是什么?

Edit:我试出来了,就是 TeX-view

1 个赞

但是我的TeX-source-correlate-start-server的值是设为nil的,一样可以正向反向搜索。因为我用的是 Linux 的缘故?

maybe,我还没在linux上测试,我记得配合evince很好弄

是的,有些事情在 Linux 上面做是比在 Windows 上面容易些

请问你的org导pdf的工作流是怎么样的呢?主要用来做什么呢?我这里是为了做课件的,公式太多了。

写文章或者做课件都可以的,没有什么特别的,就是 LaTeX 都写成 latex-fragment 的形式,方便预览。为了方便编辑,我自己还写了一个 org-edit-latex 插件,现在在 melpa 上。

但是我发现用 org 写比较麻烦的地方是,一旦调整章节位置以后,所生成的 PDF 文档中 Reference link 全都指向错误的位置,这个比较令人头痛。不知道有没有什么好的解决办法。用 AucTeX 写是不是没有这方面的问题?

PS:用 edit-server 编辑论坛帖子简直停不下来啊,总想一直写下去 :joy:

1 个赞

刚才看了下,使用edit-server有啥特别的好处么?我在windows上用了autohotkey,模拟了大量emacs键位

好处是显而易见的,你在用 emacs 的时候所有那些函数,Snippets,modes 都可以用在这里,而不仅仅是移动光标的快捷键。

写论坛帖子的时候自动补全不要太爽 :joy:

缺点就是我还没有想好怎样插图 :blush:

1 个赞

写帖子的时候能用snippet,有代码高亮(论坛上高亮有点问题),方便缩进。而且他用的是 evil ,本身系统也是linux,能用readline快捷键。

1 个赞

一个小例子说明用 edit-server 的优越性:

(add-hook 'edit-server-edit-mode-hook (lambda () (goto-char (point-max)) (evil-hybrid-state)))

这样我编辑帖子的时候就自动切换到 hybrid-state,并且将光标移动到帖子的末尾。

PS: 在 chrome 插件上我设置的是双击编辑。

PPS:这个帖子好像楼歪得有点远。

说实话,这个latex跟pdf之间互相跳转的功能看似很酷,然而我却不觉得这有什么作用,自己的代码,还不知道哪儿对应着哪儿吗?我也用 emacs 写 latex 代码。

道理就和能用记事本写为什么还要用Emacs一样。

Emacs用户花了一个小时写一段代码解决一个小操作,但是这个操作能节约不下万次。

写毕业论文就有用了

这个是可以在tex的文件里直接跳转到pdf文件,但是跳转位置不对要怎么解决 另外,我在pdf里面双击文字跳转不到emacs,没有反应,下面是在sumtra pdf里面设置的,不知道对不对:

"C:\TC\Software\Emacs\Emacs-64bit\bin\emacsclientw.exe" -n +%l "%f"

还有,怎么实现在org与pdf之间的跳转啊?

(setq TeX-PDF-mode t)
      (setq TeX-source-correlate-mode t)
      (setq TeX-source-correlate-method 'synctex)
      (setq TeX-view-program-list
            '(("Sumatra PDF" ("\"c:/Program Files/SumatraPDF/SumatraPDF.exe\" -reuse-instance"
                              (mode-io-correlate " -forward-search %b %n -inverse-search \"c:/Users/kirchhoff/Desktop/emacs/bin/emacsclientw.exe -n +%%l %%f\"") " %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"))))
      ;; ctrl+shitf 从pdf跳回emacs
      (add-hook 'LaTeX-mode-hook
                #'(lambda ()
                    (add-to-list 'TeX-command-list '("XeLaTeX" "%`xelatex --synctex=1%(mode)%' %t" TeX-run-TeX nil t))
                    (setq TeX-command-extra-options "-file-line-error -shell-escape")
                    (setq TeX-command-default "XeLaTeX")
                    (setq TeX-save-query  nil ) ;; 这一行不用确认保存就开始执行编译;
                    ))

      (setq TeX-view-program-selection '(((output-dvi style-pstricks) "dvips and start") (output-dvi "Yap") (output-pdf "SumatraPDF") (output-html "start"))) 
      (setq TeX-output-view-style '(("^dvi$" "^pstricks$\\|^pst-\\|^psfrag$" "dvips %d -o && start \"\" %f") ("^dvi$" "." "yap -1 %dS %d") ("^pdf$" "." "c:/Program Files/SumatraPDF/SumatraPDF.exe -reuse-instance \"\" %o") ("^html?$" "." "start \"\" %o"))) 

      (setq TeX-source-correlate-start-server t)
      ;; 相当关键, pdf调回的成败在此一句 

      (add-hook 'LaTeX-mode-hook
                (lambda () (local-set-key (kbd "<S-mouse-3>") #'TeX-view)) ;shift+鼠标右键
                )
      )

这么弄的话,不用设置Sumatra pdf,你C-c C-c后产生的Sumatra实例里会自动填好 另外,org和pdf我没弄过