我发现 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-mode
t
TeX-PDF-from-DVI
nil
\usepackage[pdftex]{geometry}
TeX-PDF-from-DVI
C-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。
我的问题如下。
- 我怎样才能使编译为 PDF 成为默认行为,同时最好保留解析文件以查找需要通过 DVI 编译的内容?
- 除了定制之外还有什么设置
TeX-PDF-from-DVI
(显然不起作用)?
答案1
我想我明白了这个问题。简而言之,Emacs 将auto/geometry.el
编辑不相关文件生成的本地样式文件geometry.tex
与对应于包的样式文件混淆了geometry.sty
。
在使用 之前,我在同一目录中test.tex
编辑和编译。Emacs 创建了本地样式文件。由于使用了 PSTricks,因此包含指令。反过来, 中包含的 PSTricks 样式钩子合理地将“Dvips”分配给。 *Messages* 缓冲区表示,打开 后,Emacs 为 geometry 包加载了一个全局样式文件,然后将其作为该包的本地样式文件加载。这就是最终得到值“Dvips”的原因。geometry.tex
auto/geometry.el
geometry.tex
auto/geometry.el
(TeX-run-style-hooks "latex2e" ... "pstricks" ...)
pstricks.el
TeX-PDF-from-DVI
test.tex
~/.emacs.d/elpa/auctex-13.0.13/style/geometry.elc
auto/geometry.el
TeX-PDF-from-DVI
这表明,将文件命名为与同一项目中某个文件加载的包相同的名称是危险的。我猜 AUCTeX 手册在第 5.5 节中对此发出了警告:“请注意,在中找到的所有匹配文件都将TeX-style-path
被加载,并且文件中定义的所有钩子都将被执行”。不过,引入 LaTeX 包的样式文件和本地文件的样式文件之间的差异可能是有意义的。