我正在尝试使用 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 无缝地进行反向搜索。