% \iffalse meta-comment %<=*COPYRIGHT> %% Copyright (C) 2011 by Martin Scharrer %% --------------------------------------------------------------------------- %% 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 2005/12/01 or later. %% %% This work has the LPPL maintenance status `maintained'. %% %% The Current Maintainer of this work is Martin Scharrer. %% %% This work consists of the files ifetex.dtx and ifetex.ins %% and the derived filebase ifetex.sty. %% %<=/COPYRIGHT> % \fi % % \iffalse %<*driver> \ProvidesFile{ifetex.dtx}[% %<=*DATE> 2011/12/15 %<=/DATE> %<=*VERSION> v1.2 %<=/VERSION> Conditional to test for e-TeX] \documentclass{ydoc} \GetFileInfo{ifetex.dtx} \usepackage{ifetex}[\filedate] \EnableCrossrefs \CodelineIndex \RecordChanges \begin{document} \DocInput{\jobname.dtx} \PrintChanges \PrintIndex \end{document} % % \fi % % \CheckSum{73} % % \CharacterTable % {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z % Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z % Digits \0\1\2\3\4\5\6\7\8\9 % Exclamation \! Double quote \" Hash (number) \# % Dollar \$ Percent \% Ampersand \& % Acute accent \' Left paren \( Right paren \) % Asterisk \* Plus \+ Comma \, % Minus \- Point \. Solidus \/ % Colon \: Semicolon \; Less than \< % Equals \= Greater than \> Question mark \? % Commercial at \@ Left bracket \[ Backslash \\ % Right bracket \] Circumflex \^ Underscore \_ % Grave accent \` Left brace \{ Vertical bar \| % Right brace \} Tilde \~} % % % \changes{v1.0}{2011/10/31}{First version.} % \changes{v1.1}{2011/11/06}{Changed to manual, local declaration of \cs{ifetex}.} % \changes{v1.2}{2011/12/15}{Added \cs{NeedsETeX} \protect\LaTeX\ macro.} % % \DoNotIndex{\newcommand,\newenvironment} % % \GetFileInfo{ifetex.dtx} % \author{Martin Scharrer} % \email{martin@scharrer.me} % \ifdefined\repository % \repository{https://bitbucket.org/martin_scharrer/ifetex} % \fi % % \maketitle % % \providecommand\eTeX{$\epsilon$-\TeX} % \begin{abstract}\noindent % This small package provides the if-switch \Macro\ifetex which % indicated whether \eTeX\ is available or not. % \end{abstract} % % \section{Usage} % The package can be loaded as \LaTeX\ package using \Macro\usepackage{ifetex} or in plain\TeX\ using \Macro\input' ifetex'. % In both cases it aborts silently if the \Macro\ifetex macro is already defined. % % The package currently test if \Macro\eTeXversion is defined as a primitive and assumes \eTeX\ if so. % % Note that almost all modern \LaTeX\ distributions use \eTeX. % The two major distributions \TeX\ Live and Mik\TeX\ support it and use it by default (except for the classic |tex|). % The \LaTeX\ which comes with \emph{Scientific Work Place} by MacKichan seems to not support \eTeX\ yet. % Package authors can use this package to test for missing \eTeX\ and provide fall-back code. % % \DescribeMacro\NeedsETeX[] % The \LaTeX\ package provides this macro which can be used in packages or classes to produce an error if \eTeX\ is not available, % similar to \Macro\NeedsTeXFormat. In addition an optional version number can be given in the format x.y, where x is the main version and y the revision. % This number is checked against \Macro\eTeXversion and \Macro\eTeXrevision and an appropriate error is raised if the available % \eTeX\ is too old. % % \StopEventually{} % \section{Implementation} % % \subsection{\texttt{ifetex.sty}} % \iffalse %<*ifetex.sty> % \fi % \begin{macrocode} % \ProvidesPackage{ifetex}[% % % %<*DRIVER> 2099/01/01 develop % ifetex] % \end{macrocode} % % \begin{macrocode} \@@input ifetex % \end{macrocode} % % % \begin{macro}{\NeedsETeX}[1]{optional version number (x.y)} % Produces error if e-TeX is not available or if its version is too old. % \begin{macrocode} \newcommand*\NeedsETeX[1][]{% \ifetex \ifx\@nnil#1\@nnil\else \ifdim\the\eTeXversion\eTeXrevision\p@<#1\p@\relax \@latex@error{This file needs e-TeX with version #1% \MessageBreak but only version \the\eTeXversion\eTeXrevision is available}{% The current input file will not be processed further,\MessageBreak because it was written for a newer version of e-TeX. \MessageBreak\@ehd}% \endinput \fi\fi \else \@latex@error{This file needs e-TeX}{% The current input file will not be processed further,\MessageBreak because it was written for e-TeX which is not available. \MessageBreak\@ehd}% \endinput \fi } % \end{macrocode} % \end{macro} % % \iffalse % % \fi % % \subsection{\texttt{ifetex.tex}} % \iffalse %<*ifetex.tex> % \fi % \begin{macrocode} % % \end{macrocode} % % Abort if \Macro{ifetex} is already defined. % \begin{macrocode} \expandafter\ifx\csname ifetex\endcsname\relax\else \expandafter\endinput \fi % \end{macrocode} % % \begin{macro}{ifetex} % Checks if \Macro\eTeXversion is a primitive. % \begin{macrocode} \begingroup \edef\tempa{\meaning\eTeXversion}% \edef\tempb{\string\eTeXversion}% \ifx\tempa\tempb \endgroup \expandafter\let\csname ifetex\expandafter\endcsname\csname iftrue\endcsname \else \endgroup \expandafter\let\csname ifetex\expandafter\endcsname\csname iffalse\endcsname \fi % \end{macrocode} % \end{macro} % \iffalse % % \fi % % \Finale \endinput