我使用 LaTeX 写论文。我在 Windows XP 计算机上使用 TeXworks/MiKTeX。当我编写 LaTeX 代码时,我可以使用“pdfLaTeX+MakeIndex+BibTeX”毫无问题地进行编译。
但是如果我从 arXiv 下载 LaTeX 源代码并尝试使用“pdfLaTeX+MakeIndex+BibTeX”进行编译,它将无法工作。我收到错误“!未定义的控制序列”。
但是,如果我使用“pdfLaTeX”而不是“pdfLaTeX+MakeIndex+BibTeX”,从 arXiv 编译 LaTeX 源代码时不会遇到任何问题。
为什么会发生这种情况?“pdfLaTeX+MakeIndex+BibTeX”和“pdfLaTeX”有什么区别?
我之所以问这些问题,是因为我想对我的一篇 arXiv 论文做一些小改动,所以我将下载 LaTeX 源代码并在那里进行修改。我想我必须使用“pdfLaTeX”来编译源代码,但我想确保论文中没有不必要的更改。
从 arXiv 下载的 LaTeX 源文件似乎没有 .tex 扩展名。它们似乎属于不同的类型(我猜这是由于 arXiv 处理所致),但无论如何,我可以使用 TeXworks 毫无问题地打开它们。
答案1
尝试将.tex
扩展名重新添加到文件中。我不确定 arXiv 为什么要删除它,但许多编辑器在运行编译序列时会假设它在那里。
要了解我的意思,请比较 pdfLaTeX 和 BibTeX 的编译:
$ pdflatex myfile.tex
$ bibtex myfile
请注意,它bibtex
不需要文件扩展名,因为它还会查看由 LaTeX 运行生成的文件。TeXworks 等编辑器(以及其他编辑器,毫无疑问)会自动为您运行这些序列,但这要求它知道扩展名在哪里,以便可以将其删除。当没有要删除的扩展名时,就会出现歧义:
$ pdflatex myfile
$ bibtex myfile
其中一个程序很可能发现了“错误” myfile
,从而导致您看到的错误。(例如,查看文件内部aux
;pdflatex
直接运行此文件肯定会引发错误。)