AUCTeX:TeX-PDF-from-DVI 始终为“Dvips”,并且文件被编译为 DVI 而不是 PDF

AUCTeX:TeX-PDF-from-DVI 始终为“Dvips”,并且文件被编译为 DVI 而不是 PDF

我发现 AUCTeX 的变量有一种奇怪的行为TeX-PDF-from-DVI:它一直被设置为“Dvips”,而 Emacs 一直调用 latex 而不是 pdflatex。

我从一个最小文件开始test.tex

\documentclass{article}
\begin{document}
Some text.
\end{document}

我还有一个最小.emacs文件。

(add-to-list 'load-path "~/emacs.d/lisp")

(setq TeX-auto-save t)
(setq TeX-parse-self t)
(setq-default TeX-master nil)

当我在 Emacs 中打开时,变量的test.tex值为,而的值为。这正是我想要的。但是,当我将该行添加为第 2 行,保存文件,重新启动 Emacs 并重新加载文件时, 的值变为“Dvips”。相应地,当我输入 时,文件被编译为 DVI 而不是 PDF。TeX-PDF-modetTeX-PDF-from-DVInil\usepackage[pdftex]{geometry}TeX-PDF-from-DVIC-c C-c

之后,我尝试将变量自定义TeX-PDF-from-DVI为“无 DVI 到 PDF 转换”。这增加了

(custom-set-variables
...
 '(TeX-PDF-from-DVI nil)
 ...

改为.emacs,正如预期的那样,但它并没有改变缓冲区TeX-PDF-from-DVI中的 的值test.tex,仍然是“Dvips”。当我重新启动 Emacs 并加载 时test.tex, 的值TeX-PDF-from-DVI仍然是“Dvips”。即使在文件末尾的局部变量部分添加该行也%%% TeX-PDF-from-DVI: nil无济于事:重新加载文件后,值仍然是“Dvips”。

我不知道它是怎么开始的。很长一段时间我只使用 pdflatex,而 Emacs 从未编译为 DVI。然后我使用 PSTricks 处理一个文件,Emacs 识别出它需要通过 DVI 编译为 PS。但现在我无法恢复原始行为。(setq TeX-PDF-from-DVI nil)每次启动 Emacs 时,我都必须运行或选择 Command | TeXing Options | PDF from DVI | Compile directly to PDF。

我的问题如下。

  1. 我怎样才能使编译为 PDF 成为默认行为,同时最好保留解析文件以查找需要通过 DVI 编译的内容?
  2. 除了定制之外还有什么设置TeX-PDF-from-DVI(显然不起作用)?

答案1

我想我明白了这个问题。简而言之,Emacs 将auto/geometry.el编辑不相关文件生成的本地样式文件geometry.tex与对应于包的样式文件混淆了geometry.sty

在使用 之前,我在同一目录中test.tex编辑和编译。Emacs 创建了本地样式文件。由于使用了 PSTricks,因此包含指令。反过来, 中包含的 PSTricks 样式钩子合理地将“Dvips”分配给。 *Messages* 缓冲区表示,打开 后,Emacs 为 geometry 包加载了一个全局样式文件,然后将其作为该包的本地样式文件加载。这就是最终得到值“Dvips”的原因。geometry.texauto/geometry.elgeometry.texauto/geometry.el(TeX-run-style-hooks "latex2e" ... "pstricks" ...)pstricks.elTeX-PDF-from-DVItest.tex~/.emacs.d/elpa/auctex-13.0.13/style/geometry.elcauto/geometry.elTeX-PDF-from-DVI

这表明,将文件命名为与同一项目中某个文件加载的包相同的名称是危险的。我猜 AUCTeX 手册在第 5.5 节中对此发出了警告:“请注意,在中找到的所有匹配文件都将TeX-style-path被加载,并且文件中定义的所有钩子都将被执行”。不过,引入 LaTeX 包的样式文件和本地文件的样式文件之间的差异可能是有意义的。

相关内容