我使用 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
直接在此文件上運行肯定會引發錯誤。)