\
pdfoutput
. So you try
\ifx\pdfoutput\undefined <not running PDFTeX> \else <running PDFTeX> \fi
Except that neither branch of this conditional is rock-solid. The first branch can be misleading, since the “awkward” user could have written:
\let\pdfoutput\undefined
so that your test will falsely choose the first alternative. While this is a theoretical problem, it is unlikely to be a major one.
More important is the user who loads a package that uses LaTeX-style testing for the command name’s existence (for example, the LaTeX graphics package, which is useful even to the Plain TeX user). Such a package may have gone ahead of you, so the test may need to be elaborated:\ifx\pdfoutput\undefined <not running PDFTeX> \else \ifx\pdfoutput\relax <not running PDFTeX> \else <running PDFTeX> \fi \fi
If you only want to know whether some PDFTeX extension (such as marginal kerning) is present, you can stop at this point: you know as much as you need.
However, if you need to know whether you’re creating PDF output, you also need to know about the value of\
pdfoutput
:
\ifx\pdfoutput\undefined <not running PDFTeX> \else \ifx\pdfoutput\relax <not running PDFTeX> \else <running PDFTeX, with...> \ifnum\pdfoutput>0 <...PDF output> \else <...DVI output> \fi \fi \fi
The above is, in essence, what Heiko Oberdiek’s ifpdf package does; the reasoning is the FAQ’s interpretation of Heiko’s explanation.
This question on the Web: http://www.tex.ac.uk/cgi-bin/texfaq2html?label=ifpdf