Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I've been working on a project and compiled it using pdfLaTeX, then tried to compile using pdftex and got a whole lot of errors. I'd like to know why that would happen since it's a very plain file and I did not put a pdflatex option in documentclass or anything like that, and what's the real difference between them.

share|improve this question
Which TeX distribution do you have on your system? It's a bit puzzling, to say the least, that a file you describe as being "very plain" (i.e., plain TeX, right?) would compile when run under pdflatex but won't compile at all under pdftex. –  Mico Jan 13 '12 at 21:22
@Mico: I use Tex Live –  Ayman Elmasry Jan 13 '12 at 21:45
@Mico: I meant plain as in not fancy, but I suppose it doesn't use any of the extra macros provided by Latex over plain Tex. –  Ayman Elmasry Jan 13 '12 at 21:50
"A whole lot of errors" - you expect us to guess them. Sorry, but my crystal ball is out for repair. Please read how to ask smart questions and how to report bugs. You will also find some background about TeX helpful. –  Martin Schröder Jan 13 '12 at 22:38

2 Answers 2

up vote 15 down vote accepted

If a .tex file starts with \documentclass (or, possibly, the obsolete \documentstyle command), it's a file that needs to be compiled by a TeX engine that loads the LaTeX format file rather than the Plain TeX format file. Format files are, loosely speaking, big chunks of precompiled macros. There are many TeX formats; nowadays, the best known TeX formats (other than the original "Plain TeX" format, of course) are (pdf)latex, xe(la)tex, lua(la)tex, and ConTeXt.

The LaTeX format is, to a first approximation, a large superset of the "Plain TeX" format. (Well, it's not a strict superset because there are some "Plain TeX" macros that aren't implemented in LaTeX.) Hence, .tex files that contain LaTeX commands cannot be compiled if the "Plain TeX" format is loaded instead of the "LaTeX" format.

Note that the \documentclass instruction is itself a "LaTeX" macro, i.e., it is not recognized by "Plain TeX". Therefore, pdftex (which loads the "plain TeX" format) cannot proceed properly once it encounters the \documentclass instruction on line 1 of the input file.

Addendum: For more information on TeX formats see, for instance, the webpage TeX formats and engines as well as the TeX.SE page List of TeX formats.

share|improve this answer
Are {pdf,lua,xe}latex really formats? I thought LaTeX and ConTeXt were the only widely used formats nowadays, while XeTeX et. al. are different compilers. –  You Jan 14 '12 at 0:36
@You: I thought ConTeXt was an editor. And I believe what Mico means by format is language or dialect (in the computer languages sense). –  Ben Voigt Jan 14 '12 at 0:39
@You: see the addendum to my answer for more information on TeX formats. –  Mico Jan 14 '12 at 1:00

pdftex expects the file to be plain TeX. pdflatex expects it to be LaTeX. These are two different dialects of TeX. You do not expect a C compiler to work with Java, do you?

Note that in practice pdftex and pdflatex are often the same command, which analyzes how it was called to switch to the proper input language. On some systems gcc behaves in the same way, compiling C if it is called as gcc or Fortran if it is called as gfortran.

share|improve this answer
The latter part is the reason why I asked this question. It seemed like the two engines were used/mentioned everywhere interchangeably as if they were the exact same. –  Ayman Elmasry Jan 13 '12 at 21:12
Well, many plain TeX commands are available in LaTeX, and some packages (pstricks, pgf/tikz, babel and many others) are written to work in plain, LaTeX and even in ConTeXt. So these dialects are close - but not identical. –  Boris Jan 13 '12 at 21:19
@AymanElmasry: pdflatex is not an engine. See this link for more information. –  Martin Schröder Jan 13 '12 at 22:40
@MartinSchröder: Your link: "Engines: TeX, pdfTeX, XeTeX, LuaTeX, … These are the actual executable binaries which implement the different TeX dialects. The LaTeX format is implemented with both the pdfTeX (pdflatex) and XeTeX (xelatex) engines, for example. When someone says “TeX can't find my fonts”, they usually mean an engine." –  Ayman Elmasry Jan 14 '12 at 5:26
@MartinSchröder: "pdflatex is not an engine". What is it then? –  Tim Jul 20 '12 at 14:15

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.