如何用 latex->dvips->ps2pdf 链替换 AUCTeX 的“LaTeX”命令?

如何用 latex->dvips->ps2pdf 链替换 AUCTeX 的“LaTeX”命令?

就 AUCTeX 的设计而言,解决这个问题的正确方法是什么——我的意思是,如何做到这一点,它仍然可以识别错误,按需显示日志,在成功编译时使“查看”命令成为默认命令,等等。或者,有什么方法可以定义具有相同功能的命令并使其成为默认值?

答案1

对于当前的 AUCTeX 编译器管理,我认为最干净的解决方案是添加一个新命令,dvips并添加另一个命令,ps2pdf每次发出C-c C-c三次,但这肯定不舒服。

这里有以下解决方案(略有改进):将此代码添加到您的.emacs文件中

(eval-after-load "tex"
  '(progn
     (add-to-list
      'TeX-command-list
      '("LaTeX + dvips + ps2pdf"
    "latex%(mode) %t && dvips %d -o %f && ps2pdf14 %f"
    TeX-run-TeX nil t))))

这不是最好的解决方案,但至少能够捕获错误报告。

答案2

自 AucTeX 11.89 起,这是一个内置功能;只需将变量设置TeX-PDF-via-dvips-ps2pdf为非零即可。相关文档可在此处找到这里


用户选项:TeX-PDF-via-dvips-ps2pdf

如果 TeX-PDF-mode 设置为非零,并且 TeX-PDF-via-dvips-ps2pdf 也为非零,则文档将使用 tex(或 latex)而不是 pdftex(或 pdflatex)进行编译。文档准备就绪后,Cc Cc 将建议运行 dvips,然后运行 ​​ps2pdf,以便将 DVI 文件转换为 PDF。PDF 文件最终准备就绪后,下一个建议的命令将是打开查看器。

此选项还可以设置为文件局部变量,以便在每个文档的基础上使用序列 tex–dvips–ps2pdf。


因此您只需输入(setq TeX-PDF-via-dvips-ps2pdf t)您的内容即可.emacs使每个文件都以这种方式进行编译。

答案3

我只是个普通的 latex 用户,但我得到了结果,这是我最好的结果。我根本不了解 LISP,我只使用 aquamacs 及其类似 GUI 的 AUCtex 自定义菜单。无论如何,现在我使用 psfrag,在 Skim 查看器中从 pdflatex 和 dvips + ps2pdf 反向搜索 pdf。

这是我最好的办法。首先,我把 (latex) 和 (dvips + ps2pdf) 分开。原因是如果我不这样做,Cc Cv 会尝试显示 dvi,这对我的 Mac 来说不是一个好主意。

在 AUCtex 自定义菜单 -> TeX 命令列表中,LaTex 默认与 PdfLatex 绑定。所以我又添加了两个命令列表,PdfLatex 和 dvips + ps2pdf,我只是将 LaTex 列表中的原始命令复制到 PdfLatex 列表中,即

%`%l%(mode)%' %t

在 LaTex 列表中,我将其替换为

%(latex) --synctex=1 %s

在 dvips + ps2pdf 列表中,我放了

dvips %s.dvi && ps2pdf %s.ps %s.pdf

然后,aquamacs 中的 LaTex 图标仅作为 latex 编译运行。 Cc Cc 运行 dvips + ps2dvi 后,我可以使用 Cc Cv 查看 pdf 文件。

另外,在将 Tex Source Correlate Method 菜单中的 DVI 值更改为 synctex 后,我能够在 Skim 查看器中使用由 dvips + ps2pdf 生成的反向搜索。

整体变化导致了以下 LISP,我不明白,但我把它们放在这里。

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(LaTeX-clean-intermediate-suffixes nil)
 '(LaTeX-clean-output-suffixes nil)
 '(LaTeX-command "latex")
 '(LaTeX-mode-hook
   (quote
    (preview-mode-setup smart-dnd-latex
            (lambda nil
              (TeX-fold-mode t))
            turn-on-bib-cite turn-on-reftex flyspell-mode abbrev-mode)))
 '(TeX-clean-confirm nil)
 '(TeX-command-list
   (quote
    (("TeX" "%(PDF)%(tex) %(extraopts) %`%S%(PDFout)%(mode)%' %t" TeX-run-TeX nil
      (plain-tex-mode texinfo-mode ams-tex-mode)
      :help "Run plain TeX")
     ("LaTeX" "%(latex) --synctex=1 %s" TeX-run-TeX nil
      (latex-mode doctex-mode)
      :help "Run LaTeX")
     ("PdfLaTex" "%`%l%(mode)%' %t" TeX-run-command nil t)
     ("dvips + ps2pdf" "dvips %s.dvi && ps2pdf %s.ps %s.pdf " TeX-run-TeX nil t)
 '(TeX-view-program-selection
   (quote
    ((output-dvi "Skim")
     (output-pdf "Skim")
     (output-html "open"))))
 '(TeX-source-correlate-method (quote ((dvi . synctex) (pdf . synctex))))

相关内容