% File:      ifpdf.sty
% Version:   2001/07/14 v1.1
% Author:    Heiko Oberdiek
% Email:     &lt;oberdiek@uni-freiburg.de&gt;
%
% Copyright: Copyright (C) 2001 Heiko Oberdiek.
%
%            This program may be distributed and/or modified under
%            the conditions of the LaTeX Project Public License,
%            either version 1.2 of this license or (at your option)
%            any later version. The latest version of this license
%            is in
%              http://www.latex-project.org/lppl.txt
%            and version 1.2 or later is part of all distributions
%            of LaTeX version 1999/12/01 or later.
%
% Function:  This packages looks for pdfTeX in pdf mode and
%            implements and sets the switch \ifpdf.
%            The detection is based on \pdfoutput and
%            the package will not change this value.
%            It works with plain or LaTeX formats.
%
% Use:       LaTeX: \usepackage{ifpdf}
%            plain: \input ifpdf.sty
%            The package provides the switch \ifpdf:
%              \ifpdf
%                ... do things, if pdfTeX is running in pdf mode ...
%              \else
%                ... other TeX or pdfTeX in dvi mode ...
%              \fi
%            The package can also be used to set global
%            documentclass options:
%              \RequirePackage{ifpdf}
%              \ifpdf
%                \documentclass[pdftex,...]{...}
%              \else
%                \documentclass[...]{...}
%              \fi
%
% History:   2001/06/14 v1.0:
%              * first public version,
%            2001/07/14 v1.1:
%              * documentation addition: global options
%
% Prevent reloading more than one:
\begingroup
  \expandafter\let\expandafter\x\csname ver@ifpdf.sty\endcsname
  \ifcase 0%
    \ifx\x\relax % plain
    \else
      \ifx\x\empty % LaTeX
      \else
        1%
      \fi
    \fi
  \else
    \expandafter\ifx\csname PackageInfo\endcsname\relax
      \def\x#1#2{%
        \immediate\write-1{Package #1 Info: #2.}%
      }%
    \else
      \def\x#1#2{\PackageInfo{#1}{#2, stopped}}%
    \fi
    \x{ifpdf}{The package is already loaded}%
    \endgroup
    \expandafter\endinput
  \fi
\endgroup
%
% Package identification:
\begingroup
  \expandafter\ifx\csname ProvidesPackage\endcsname\relax
  \def\x#1#2#3[#4]{\endgroup
    \immediate\write-1{Package: #3 #4}%
    \xdef#1{#4}%
  }%
  \else
    \def\x#1#2[#3]{\endgroup
      #2[#3]%
      \ifx#1\relax
        \xdef#1{#3}%
      \fi
    }%
  \fi
\expandafter\x\csname ver@ifpdf.sty\endcsname
\ProvidesPackage{ifpdf}%
  [2001/06/14 v1.0 %
   Providing \expandafter\string\csname ifpdf\endcsname\space (HO)]
%
% Check, whether \ifpdf is already defined:
\begingroup
  \expandafter\ifx\csname ifpdf\endcsname\relax
  \else
    \edef\i/{\expandafter\string\csname ifpdf\endcsname}%
    \expandafter\ifx\csname PackageError\endcsname\relax
      \def\x#1#2{%
        \edef\z{#2}%
        \expandafter\errhelp\expandafter{\z}%
        \errmessage{Package ifpdf Error: #1}%
      }%
      \def\y{^^J}%
      \newlinechar=10
    \else
      \def\x#1#2{%
        \PackageError{ifpdf}{#1}{#2}%
      }%
      \def\y{\MessageBreak}%
    \fi
    \x{Name clash, \i/ is already defined}{%
      Incompatible versions of \i/ can cause problems,\y
      therefore package loading is aborted.%
    }%
    \endgroup
    \expandafter\endinput
  \fi
\endgroup
%
% Implementing the switch:
\newif\ifpdf
\ifx\pdfoutput\undefined
\else
  \ifx\pdfoutput\relax
  \else
    \ifcase\pdfoutput
    \else
      \pdftrue
    \fi
  \fi
\fi
%
% Log comment:
\begingroup
  \expandafter\ifx\csname PackageInfo\endcsname\relax
    \def\x#1#2{%
      \immediate\write-1{Package #1 Info: #2.}%
    }%
  \else
    \let\x\PackageInfo
  \fi
  \x{ifpdf}{pdfTeX in pdf mode \ifpdf\else not \fi detected}%
\endgroup
\endinput

