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