如何在 AUCTeX 中配置 latex 和生成的 pdf 之间的同步?

如何在 AUCTeX 中配置 latex 和生成的 pdf 之间的同步?

我在 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 有一个合理的默认值,即使用synctexwith pdfLaTeX

  • (custom-set-variables '(LaTeX-command "latex -synctex=1") )
    同样不需要,当TeX-source-correlate-modet没有LaTeX-command-style改变时,AUCTeX 会自动执行此操作。

相关内容