summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/oberdiek/ifpdf.dtx
blob: e4e205d8224e4beec2dda5ae87ed95c0f5c28949 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
% \iffalse
%% Source File: ifpdf.dtx
%% Copyright 2016 Heiko Oberdiek and LaTeX3 project
%%
%% This file may be distributed under the terms of the LPPL.
%% See README for details.
%
%<*dtx>
          \ProvidesFile{ifpdf.dtx}
%</dtx>
%<package>\ifx\ProvidesPackage\undefined
%<package>\def\next#1#2[#3]{\wlog{#2 #3}}
%<package>\expandafter\next\fi
%<package>\ProvidesPackage{ifpdf}
%<driver> \ProvidesFile{ifpdf.drv}
% \fi
%         \ProvidesFile{ifpdf.dtx}
[2016/04/04 v3.0 Provides the ifpdf switch]
%
% \iffalse
%<*driver>
\documentclass{ltxdoc}
\begin{document}
\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}