我在 Arch Linux 上的 Emacs 25(最新版本)中运行 AUCTeX。我在网上搜索了一些配置,但它们不起作用。以下是相关配置:
(setq TeX-view-program-selection
'((output-pdf "PDF Viewer")))
(setq TeX-view-program-list
'(("PDF Viewer" "okular --unique %o#src:%n%b")))
(server-start)
(setq LaTeX-command-style '(("" "%(PDF)%(latex) -shell-escape %S%(PDFout)")))
;; use Sumatra PDF to preview pdf
(setq TeX-source-correlate-mode t)
(setq TeX-source-correlate-method 'synctex)
;; Enable synctex generation. Even though the command shows
;; as "latex" pdflatex is actually called
(custom-set-variables '(LaTeX-command "latex -synctex=1") )
出了什么问题?谢谢!
答案1
假设您已经安装了 AUCTeX 12,则只需用以下几行替换您的配置即可:
(server-start)
(setq TeX-view-program-selection '((output-pdf "Okular")))
(setq TeX-source-correlate-mode t)
您的配置不起作用的主要原因是这一行:
(setq TeX-view-program-list
'(("PDF Viewer" "okular --unique %o#src:%n%b")))
AUCTeX 内置了对 Okular 的支持,你只需要按照TeX-view-program-list
上面提到的方法选择它(见点击此处了解详情)。
关于其余代码的一些评论:
(setq LaTeX-command-style '(("" "%(PDF)%(latex) -shell-escape %S%(PDFout)")))
这可以被认为是有害的;它将默认允许从 .tex 文件执行外部命令。我建议您使用文件局部变量在每个文件的基础上解决这个问题,例如%%% Local Variables: %%% mode: latex %%% TeX-master: t %%% TeX-command-extra-options: "-shell-escape" %%% End:
(setq TeX-source-correlate-method 'synctex)
实际上也不是必需的,AUCTeX 有一个合理的默认值,即使用synctex
withpdfLaTeX
。(custom-set-variables '(LaTeX-command "latex -synctex=1") )
同样不需要,当TeX-source-correlate-mode
它t
没有LaTeX-command-style
改变时,AUCTeX 会自动执行此操作。