Xdvi 到 Emacs 的反向搜索在 Ubuntu 12.04 中的 Emacs 24.3.1 / AucTeX-11.87 中不起作用

Xdvi 到 Emacs 的反向搜索在 Ubuntu 12.04 中的 Emacs 24.3.1 / AucTeX-11.87 中不起作用

我正在尝试使用 AUCTeX 编写我的 LaTeX 文档。但是,我在从 Xdvi 到 Emacs 执行反向搜索时遇到了问题。

软件规格

我目前使用Ubuntu 12.04 中的 Emacs 24.3.1 / AUCTeX-11.87。

  • Emacs 是从ppa:卡苏并使用其推荐的命令进行安装。

  • AUCTeX-11.87 是从 AUCTeX 网站下载的,然后在文件夹内进行配置(使用./configure)和安装(使用 make~/.emacs.d

在初始化文件 () 中设置了以下 AUCTeX 环境~/.emacs

(add-to-list 'load-path "~/.emacs.d/auctex-11.87")
(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-master nil)

(add-hook 'LaTeX-mode-hook 'visual-line-mode)
(add-hook 'LaTeX-mode-hook 'flyspell-mode)
(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)

(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(setq reftex-plug-into-AUCTeX t)

;; Inverse DVI Search
(tex-dvi-view-command "xdvi -editor 'emacsclient -a emacs --no-wait +%l %f'")
(setq TeX-source-correlate-method 'source-specials)
;;(setq TeX-source-correlate-method 'SyncTeX)  ;; auctex 10.86  

(TeX-source-correlate-mode)
(setq TeX-source-correlate-start-server t)

;;(TeX-source-correlate-mode)  
;;(add-to-list 'TeX-command-list '("View" "%V" TeX-run-discard nil t))

;;update the dvi file after each successful compilation
(add-to-list 'TeX-output-view-style 
        '("^dvi$" "." 
          "%(o?)xdvi -watchfile 1 %dS %d"))

问题

我面临的最重要的问题是

  • 尽管指定了环境,但TeX-source-correlate-mode打开.tex文件时不会自动启用。每次使用命令时我都需要启用它C-c C-t C-s

  • .tex当我使用选项编译文件时,AUCTeX 不会自动附加源特殊项Command -> LaTeX。因为当我打开.dvi使用 xdvi 打开输出时,它会向我抱怨以下警告 此 DVI 文件中没有源特效 - 无法进行反向搜索

如果我执行以下命令行选项,源特辑就会附加到 dvi 文件

latex --src-specials main.tex

如果有人能帮助我找出我在尝试创建反向搜索时犯的错误,那将会很有帮助

答案1

最好将TeX-source-correlate-mode同名选项设置为非零。

.emacs这是根据您的情况(对我而言)的工作:

(setq tex-dvi-view-command "xdvi -editor 'emacsclient -a emacs --no-wait +%l %f'")
(eval-after-load "tex"
  '(progn
     ;;update the dvi file after each successful compilation
     (add-to-list 'TeX-output-view-style
          '("^dvi$" "."
            "%(o?)xdvi -watchfile 1 %dS %d"))
     (setq TeX-source-correlate-start-server t
       TeX-auto-save t
       TeX-parse-self t
       reftex-plug-into-AUCTeX t
       ;; Activate TeX-source-correlate-mode
       TeX-source-specials-mode t
       ;; Inverse DVI Search
       TeX-source-correlate-method 'source-specials)
     (setq-default TeX-master nil)
     (add-hook 'LaTeX-mode-hook
           (lambda
         (visual-line-mode)
         (flyspell-mode)
         (LaTeX-math-mode)
         (turn-on-reftex)))))

答案2

实际上我通过使用命令调试初始化文件解决了这个问题

emacs --debug-init

根据调试,我编译了 AucTeX 下的预览子文件夹并加载了其路径。我还对 .emacs 文件进行了其他更改,如下所示

(add-to-list 'load-path "~/.emacs.d/auctex-11.87")
(add-to-list 'load-path "~/.emacs.d/auctex-11.87/preview")

(load "auctex.el" nil t t)
(load "preview-latex.el" nil t t)
(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-master nil)

(add-hook 'LaTeX-mode-hook 'visual-line-mode)
(add-hook 'LaTeX-mode-hook 'flyspell-mode)
(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)

(add-hook 'LaTeX-mode-hook 'turn-on-reftex)
(setq reftex-plug-into-AUCTeX t)
(setq TeX-source-correlate-method 'source-specials)

(setq TeX-source-correlate-mode t)
(setq TeX-source-correlate-start-server t)

此外,我还通过添加以下导出命令来确保 emacs 是 xdvi 的默认编辑器~/.bashrc

export XEDITOR="emacsclient --alternate-editor=emacs --no-wait +%l %f"

AucTeX 现在能够从 Xdvi 到 Emacs 无缝地进行反向搜索。

相关内容