我psfrag
经常使用图形并以eps
格式生成图形。我想设置我的 AUCTeX 以latex->dvips->ps2pdf
自动使用。最后,借助 AUCTeX 查看按钮从 Emacs 内部查看 pdf 文件。
我查看了这个帖子
如何用 latex->dvips->ps2pdf 链替换 AUCTeX 的“LaTeX”命令?
但我猜自从我升级到最新版本的 AUCTeX 后选项应该会有所不同。
关于如何启用此功能并使用我的初始化文件使其成为我的默认编译过程,有什么想法吗?
编辑:这是我这边更新的部分。我想我在以下答案中输入 Arash 方面取得了很大进展,但有一个非常小的事情不清楚。下面的代码是一个最小示例,它也使用 psfrag 并执行我想要执行的操作,如果我C-c C-t C-p
在将此代码保存在文件(例如 simple.tex)中后明确设置,即遵循的步骤如下,
- 将以下代码保存在名为 simple.tex 的文件中:
\documentclass{article} \usepackage{psfrag} \usepackage{graphicx} \usepackage[sc,osf]{mathpazo} % With old-style figures and real smallcaps. \linespread{1.025} % Palatino leads a little more leading % \begin{document} \begin{figure} \centering % \psfrag{X}[][]{$x$} \psfrag{Y}[][]{$y$} \psfrag{Z}[][]{$z$} % \psfrag{0}[][]{$0$} \psfrag{0}[][]{$0$} \psfrag{0.6}[][]{$0.65$} \psfrag{1.2}[][]{$1.2$} \psfrag{0.25}[][cl]{$0.25$} \psfrag{0.5}[][cl]{$0.5$} % get the image from imagebin: % test.eps location, https://imagebin.ca/v/3x1gUN0CmKbo % save it as test.eps \includegraphics[width=\textwidth]{test} \end{figure} \end{document}
额外信息:我有这条线
(setq-默认 TeX-master 为 nil)
在我的初始化文件中,正如 AUCTeX 手册所建议的那样。要求打开每个文件的主文件
如果在步骤 1 之后我执行了 Cc Cc,那么 emacs 会要求输入主文件,默认将上述文件设置为主文件,只需输入回车即可
键入 return 后,文件中会添加以下 4 行新行,以表明它是主文件:
%%% Local Variables: %%% mode: latex %%% TeX-master: t %%% End:
并要求保存文件,确定,按 y 并保存。
然后它跳转到 Command (默认 LaTeX): 然后按回车键。Latex 成功将文档编译为 dvi 格式。
现在如果我再执行一次 Cc Cc,我会得到
Cannot find "dvips and gv" viewer. Select another one in 'TeX-view-program-selection'
这是无法将输出文件作为 PDF 输出查看的部分,尽管我在初始化文件中添加了以下内容,这些内容是在执行 Mx 自定义变量后添加的
TeX-PDF-mode -> setting it to on
Tex-PDF-from-DVI -> setting it to dvips - ps2pdf under Value Menu
从 emacs 内部打开这些功能后,添加到 init 文件中的具体设置如下:
(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.
'(TeX-PDF-mode t)
'(TeX-PDF-from-DVI "Dvips"))
此时,我无法查看 pdf 输出,因为它是在 latex 模式下编译的(我相信只是为了 dvi 输出),尽管上面的 init 文件中将 TeX-PDF 模式设置为 true(t)(这很奇怪)。
出现上述错误消息后,如上所述,如果我使用 明确切换到 pdf 模式C-c C-t C-p
,则会C-c C-a
给出包含所有 psfrag 替换的正确输出。但我仍然不明白为什么它在打开文档时没有默认设置,因为 TeX-PDF-mode 设置为 true。
最后,我得到了我想要的,但我不完全明白为什么当“TeX-PDF-mode t”在初始化文件中时文件不能以 pdf 模式打开。
答案1
TeX-PDF-from-DVI
使用最新版本的 AUCTeX,如果按照以下描述自定义变量就足够了手册。尝试一下 M-x customize-variable RET TeX-PDF-from-DVI RET ,单击Value Menu
并选择dvips - ps2pdf sequence
,点击Apply and Save
,然后就完成了。
我不确定您的工作流程是怎样的,因为您没有描述它。考虑这个文件:
\documentclass[10pt,a4paper]{article}
\begin{document}
foobar
\end{document}
%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% TeX-PDF-mode: t
%%% TeX-PDF-from-DVI: "Dvipdfmx"
%%% End:
打开此文件时,变量TeX-PDF-from-DVI
设置为"Dvipdfmx"
。 想法是,您使用C-c C-cwhich编译文件latex
,然后运行该文件,C-c C-c然后第二次运行dvipdfmx
。 您可以使用 which 的快捷方式,C-c C-a随后运行这两个命令。
以下是手册中的相关部分:
用户选项:
TeX-PDF-from-DVI
此选项控制是否以及如何通过转换 DVI 文件来生成 PDF 文件。
当
TeX-PDF-mode
非零时,如果TeX-PDF-from-DVI
非零,则文档将编译为 DVI 而不是 PDF。当文档准备好时,C-c C-c将建议运行转换器转换为 PDF 或中间格式。如果非零,
TeX-PDF-from-DVI
则应为命令的名称(字符串),用于将 DVI 文件转换为 PDF 或中间格式。当前支持的值包括:
"Dvips"
:用dvips将DVI文件转换为PS,运行成功后ps2pdf会成为默认的PS文件转PDF命令。"Dvipdfmx"
:使用dvipdfmx将DVI文件转换为PDF。当 PDF 文件最终准备好时,下一个建议的命令将是打开查看器。
此选项还可以设置为文件局部变量,以便在每个文档的基础上使用此转换。
回想一下,整个C-c C-c命令序列可以被单个命令所取代C-c C-a。