% \iffalse
%% Source File: ifpdf.dtx
%% Copyright 2016-2018 Heiko Oberdiek and LaTeX3 project
%%
%% This file may be distributed under the terms of the LPPL.
%% https://www.latex-project.org/lppl/
%
%<*ignore>
\ifx\ProvidesFile\undefined\let\install y\fi
\ifx\install y\else
\long\def\tmp#1\endbatchfile{}
\expandafter\tmp
\fi
%</ignore>
%<*install>
\input docstrip
\keepsilent
\preamble
\endpreamble

\askforoverwritefalse

\generate{
%<*ignore>
\file{ifpdf.ins}{\from{ifpdf.dtx}{install}}
%</ignore>
\file{ifpdf.sty}{\from{ifpdf.dtx}{package}}
}

\endbatchfile
%</install>
%<*dtx>
          \ProvidesFile{ifpdf.dtx}
%</dtx>
%<*!install>
%<package>\ifnum1=0\ifx\ProvidesPackage\undefined1\else\ifx\ProvidesPackage\relax1\fi\fi
%<package>\def\next#1#2[#3]{\wlog{#2 #3}\expandafter\gdef
%<package>\csname ver\string @ifpdf.sty\endcsname{#3}}
%<package>\expandafter\next\fi
%<package>\ProvidesPackage{ifpdf}%
%<driver> \ProvidesFile{ifpdf.drv}
% \fi
%         \ProvidesFile{ifpdf.dtx}
[2018/09/07 v3.3 Provides the ifpdf switch]
% \iffalse
%</!install>
%
%<*driver>
\documentclass{ltxdoc}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\DocInput{ifpdf.dtx}
\end{document}
%</driver>
% \fi
%
% \GetFileInfo{ifpdf.dtx}
%
% \title{The \textsf{ifpdf} Package\thanks{This file
%        has version number \fileversion, last
%        revised \filedate.
% Please report any issues at https://github.com/ho-tex/oberdiek/issues}}
% \author{LaTeX3 project}
% \date{\filedate}
% \maketitle
%
% \section{Introduction}
% 
% A re-implementation of Heiko Oberdiek's \textsf{ifpdf} package
% with simplified structure and updated to work with current Lua\TeX.
%
% The package defines a new boolean, \verb|\ifpdf| which is true
% for pdf\TeX\ and Lua\TeX\ in PDF mode, and false otherwise.
%
% \section{Implementation}
%
%    \begin{macrocode}
%<*package>
%    \end{macrocode}
%
% If \verb|\ifpdf| is not defined define it, taking care that it is
% outer in plain \TeX.
%    \begin{macrocode}
\expandafter\ifx\csname ifpdf\endcsname\relax
 \csname newif\expandafter\endcsname\csname ifpdf\endcsname
\else
%    \end{macrocode}
% If \verb|\ifpdf| is already defined but \verb|\pdftrue| is not defined
% give up.
%    \begin{macrocode}
 \ifx\pdftrue\undefined
  \ifx\PackageError\undefined
  \begingroup\def\PackageError#1#2#3{\endgroup\errmessage{#2}}
  \fi
  \PackageError{ifpdf}{incompatible ifpdf definition}{}
  \expandafter\expandafter\expandafter
 \fi
\fi
%    \end{macrocode}
% Otherwise set the boolean to false unless pdfoutput (outputmode) is greater than zero.
% For Lua\TeX, do the test in Lua as the tex primitivies may not be enabled, and
% the primitive name may be \verb|\pdfoutput| or \verb|\outputmode| depending 
% on the Lua\TeX\ version number.
%    \begin{macrocode}
\let\ifpdf\iffalse
%    \end{macrocode}
% 
%    \begin{macrocode}
\ifx\directlua\undefined
%    \end{macrocode}
% Not Lua\TeX.
%    \begin{macrocode}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname pdfoutput\endcsname\relax
\else
  \ifnum\pdfoutput>0 %
    \pdftrue
  \fi
\fi
\else
%    \end{macrocode}
% Lua\TeX.
%    \begin{macrocode}
\directlua{%
if (tex.outputmode or tex.pdfoutput or 0) > 0 then
  tex.print('\string\\pdftrue')
end
}
\fi
%    \end{macrocode}
%
%    \begin{macrocode}
%</package>
%    \end{macrocode}
%
% \endinput
% 2016/04/04 v3.0  rewrite to be self standing and work with new luatex/
% 2016/05/14 v3.1  define ver@ifpdf.sty in plain tex.
% 2017/03/15 v3.2  define ver\string@ifpdf.sty in amstex tex.
%                  https://github.com/ho-tex/oberdiek/issues/23
% 2018/09/07 v3.3  guard against \ProvidesPackage being \relax
%                  https://github.com/ho-tex/oberdiek/issues/38
