我一直在做一个项目,使用 pdfLaTeX 编译它,然后尝试使用 pdftex 编译,结果出现一大堆错误。我想知道为什么会发生这种情况,因为它是一个非常简单的文件,我没有添加任何选项pdflatex
或documentclass
类似的东西,它们之间真正的区别是什么。
答案1
如果 .tex 文件以\documentclass
—— 或者可能是现在已经过时的\documentstyle
命令 —— 开头,则该文件需要由加载LaTeX
格式文件而不是Plain TeX
格式文件。格式文件(或简称为“格式”)大致就是宏的大型集合。TeX 格式有很多种;如今,除了原始的 PlainTeX 格式之外,最知名的格式是 LaTeX(更准确地说是 LaTeX2e)和 ConTeXt。
LaTeX(2e) 格式大致是 Plain-TeX 格式的超集。它不是严格的但是,这是超集,因为有些“Plain TeX”宏未在 LaTeX 中实现。因此,.tex
如果加载的是 PlainTeX 格式而不是 LaTeX 格式,则无法编译包含 LaTeX 命令的文件。
请注意,该\documentclass
指令本身是“LaTeX”特有的宏,也就是说,“Plain TeX”无法识别它。因此,pdftex
(加载“plain TeX”格式)一旦遇到\documentclass
输入文件第 1 行的指令,就无法正常进行。
答案2
pdftex
期望文件是纯 TeX。 pdflatex
期望文件是 LaTeX。这是 TeX 的两种不同方言。您不会期望 C 编译器能够与 Java 一起工作吧?
请注意,实际上pdftex
和pdflatex
通常是相同的命令,它会分析如何调用它以切换到正确的输入语言。在某些系统上,gcc
其行为方式相同,如果以 调用,gcc
则编译 C;如果以 调用,则编译 Fortran gfortran
。