% File: ifpdf.sty % Version: 2005/07/22 v1.3 % Author: Heiko Oberdiek % Email: % % Copyright: Copyright (C) 2001, 2005 Heiko Oberdiek. % % This work may be distributed and/or modified under % the conditions of the LaTeX Project Public License, % either version 1.3 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.3 or later is part of all distributions % of LaTeX version 2003/12/01 or later. % % This work has the LPPL maintenance status "maintained". % % This Current Maintainer of this work is Heiko Oberdiek. % % Function: This package 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 % % Installation: % CTAN location: CTAN:macros/latex/contrib/oberdiek/ifpdf.sty % TDS location: TDS:tex/generic/oberdiek/ifpdf.sty % (Rationale: ifpdf.sty can be used with both plain and % LaTeX formats.) % % History: 2001/06/14 v1.0: % * first public version, % 2001/07/14 v1.1: % * documentation addition: global options % 2001/09/26 v1.2: % * documentation typo corrected. % * version number corrected. % * line number in log entry removed. % 2005/07/22 v1.3: % * Some source code comments from Robin Fairbairns added. % * Bug fix for negative values of \pdfoutput % (Oleg Katsitadze) % * LPPL 1.3 % * Installation section with locations added. % % 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}% [2005/07/22 v1.3 % 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 % so \pdffalse, initally \ifx\pdfoutput\undefined \else \ifx\pdfoutput\relax % \pdfoutput was undefined, but someone has used LaTeX internal % \@ifundefined, or something else involving \csname pdfoutput\endcsname \else \ifnum\pdfoutput<1 % % \pdfoutput=0 or negative, so not generating pdf \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 \expandafter\let\csname on@line\endcsname\empty \fi \x{ifpdf}{pdfTeX in pdf mode \ifpdf\else not \fi detected}% \endgroup \endinput