diff options
Diffstat (limited to 'macros/latex/contrib/iftex/iftex.tex')
-rw-r--r-- | macros/latex/contrib/iftex/iftex.tex | 256 |
1 files changed, 180 insertions, 76 deletions
diff --git a/macros/latex/contrib/iftex/iftex.tex b/macros/latex/contrib/iftex/iftex.tex index a247e22b5b..67703b93c5 100644 --- a/macros/latex/contrib/iftex/iftex.tex +++ b/macros/latex/contrib/iftex/iftex.tex @@ -1,80 +1,184 @@ -\documentclass{artikel3} -\usepackage{calc} -\usepackage{pifont} -\usepackage{bbding} -\usepackage[colorlinks=true,linkcolor=mybrown,urlcolor=mygreen]{hyperref} -\usepackage{bidicode} -\newcounter{local} -\renewcommand\theenumi{\protect\setcounter{local}% - {201+\the\value{enumi}}\protect\ding{\value{local}}} -\renewcommand\labelenumi{\theenumi} -\renewcommand\labelitemi{\HandRight} -\renewcommand\labelitemii{\HandRightUp} -\renewcommand\labelitemiii{\HandCuffRight} -\renewcommand\labelitemiv{\HandPencilLeft} -\definecolor{mybrown}{rgb}{.6,0,0} -\definecolor{mygreen}{rgb}{0,.43,0} -\definecolor{Orange}{rgb}{1,.4,.2} -\newcommand\PDFTeX{PDF\TeX} -\newcommand\XeTeX{Xe\TeX} -\newcommand\LuaTeX{Lua\TeX} -\title{The \textsf{iftex} Package\\ \href{https://github.com/persian-tex/iftex}{\texttt{https://github.com/persian-tex/iftex}}} -\author{Persian TeX Group\\ \href{mailto:persian-tex@tug.org}{\texttt{persian-tex@tug.org}}} -\date{Version 0.2} +\documentclass{article} +\usepackage[T1]{fontenc} +\usepackage{hyperref} +\hypersetup{colorlinks} +\usepackage{iftex} + +\title{The iftex package} +\author{The \LaTeX\ Project Team\thanks{% +\url{https://github.com/latex3/iftex}}} + +\date{\csname ver@iftex.sty\endcsname} + +\newcommand\cs[1]{{\ttfamily\textbackslash #1}} +\renewcommand*\descriptionlabel[1]{\makebox[\dimexpr\textwidth][l]{% + \normalfont\bfseries #1}} + \begin{document} + \maketitle \tableofcontents + + \section{Introduction} -This package provides a way to check if a document is being processed with \PDFTeX, or \XeTeX, or \LuaTeX. -\section{Loading The Package} -The package can be loaded in the usual way both in Plain \TeX\ and \LaTeX. -\subsection{Loading The Package in Plain \TeX} -\begin{BDef} -\Lcs{input}\quad \Larg{iftex.sty} -\end{BDef} -\subsection{Loading The Package in \LaTeX} -\begin{BDef} -\Lcs{usepackage}\Largb{iftex} -\end{BDef} -\section{Defined Conditionals} -\subsection{For \PDFTeX} -\begin{BDef} -\Lcs{ifPDFTeX}\\ -\qquad\Larga{material for \PDFTeX}\\ -\Lcs{else}\\ -\qquad\Larga{material not for \PDFTeX}\\ -\Lcs{fi} -\end{BDef} -\subsection{For \XeTeX} -\begin{BDef} -\Lcs{ifXeTeX}\\ -\qquad\Larga{material for \XeTeX}\\ -\Lcs{else}\\ -\qquad\Larga{material not for \XeTeX}\\ -\Lcs{fi} -\end{BDef} -\subsection{For \LuaTeX} -\begin{BDef} -\Lcs{ifLuaTeX}\\ -\qquad\Larga{material for \LuaTeX}\\ -\Lcs{else}\\ -\qquad\Larga{material not for \LuaTeX}\\ -\Lcs{fi} -\end{BDef} -\section{Defined Commands} -\subsection{For \PDFTeX} -\begin{BDef} -\Lcs{RequirePDFTeX} -\end{BDef} -This command tests for \PDFTeX\ use and throws an error if a different engine is being used. -\subsection{For \XeTeX} -\begin{BDef} -\Lcs{RequireXeTeX} -\end{BDef} -This command tests for \XeTeX\ use and throws an error if a different engine is being used. -\subsection{For \LuaTeX} -\begin{BDef} -\Lcs{RequireLuaTeX} -\end{BDef} -This command tests for \LuaTeX\ use and throws an error if a different engine is being used. -\end{document}
\ No newline at end of file +This original \textsf{iftex} was written as part of the \textsf{bidi} +collection (by the Persian TeX Group / Vafa Khalighi) +and provided checks for whether a document was being +processed with PDF\TeX, or Xe\TeX, or Lua\TeX. This version recodes +the package and incorporates similar tests from the \textsf{ifetex} +package by Martin Scharrer, the \textsf{ifxetex} package by Will +Robertson, the \textsf{ifluatex} and \textsf{ifvtex} +packages from Heiko Oberdiek and parts of \textsf{ifptex} by Takayuki +Yato. + +For each \TeX\ variant engine supported two commands are provided: +\begin{itemize} +\item + a conditional, \verb|\iffootex| that is true if the \textsf(footex) +engine (or a compatible extension) is being used. + +For compatibility with earlier packages which did not all use the same +naming convention all these conditionals are provided in two forms, a +lowercase name \verb|\iffootex| and a mixed case name \verb|\ifooTeX|. + +\item a command \verb|RequireFooTeX| which checks that \textsf{footex} + is being used, and stops the run with an error message if a + different engine is detected. +\end{itemize} + +\section{Loading the package} +The package can be loaded in the usual way in both Plain \TeX\ and \LaTeX. +\subsection{Loading the package in plain \TeX} +\begin{verbatim} +\input iftex.sty +\end{verbatim} + +\subsection{Loading the package in \LaTeX} +\begin{verbatim} +\usepackage{iftex} +\end{verbatim} + +\subsection{Loading the package in ini\TeX} +The package assumes no existing macros and may be loaded +during format setup in a format without the plain \TeX\ or \LaTeX\ +format being loaded. From an initial ini\TeX\ setup the package may +be loaded as for plain \TeX. + +\section{Engine test conditionals} +All the conditionals defined here are used in the same way: +\begin{verbatim} +\ifluatex + luatex specific code +\else + code for other engines +\fi +\end{verbatim} + + + +\begin{description} +\item[\cs{ifetex}, \cs{ifeTeX}] +True if an e\TeX\ enabled format is in use. (This is necessarily true +in all \LaTeX\ variants.) +\item[\cs{ifpdftex}, \cs{ifPDFTeX}] +True if PDF\TeX\ is in use (whether writing PDF or DVI), so this is +true for documents processed with both the \textsf{latex} and +\textsf{pdflatex} commands. +\item[\cs{ifxetex}, \cs{ifXeTeX}] +True if Xe\TeX\ is in use. +\item[\cs{ifluatex}, \cs{ifLuaTeX}] +True if Lua\TeX\ and extensions such as LuaHB\TeX\ are in use. +\item[\cs{ifluahbtex}, \cs{ifLuaHBTeX}] +True if the \textsf{luaharftex} Lua module is available. +This will be true in \textsf{luahbtex} and may be true in +\textsf{luatex} if a binary Lua \textsf{luaharftex} module has been +compiled and is available in Lua's search path. +\item[\cs{ifptex}, \cs{ifpTeX}] +True if any of the p\TeX\ variants are in use. +\item[\cs{ifuptex}, \cs{ifupTeX}] +True if any of the up\TeX\ variants are in use. (\verb|\ifetex| could +be used in addition to distinguish \textsf{uptex} and \textsf{euptex}.) +\item[\cs{ifptexng}, \cs{ifpTeXng}] +True if p\TeX-ng (Asiatic p\TeX) is in use. +\item[\cs{ifvtex}, \cs{ifVTeX}] +True if V\TeX\ is in use. +\item[\cs{ifalephtex}, \cs{ifAlephTeX}] +True if Aleph is in use. (The \textsf{aleph}-based \LaTeX\ command is +\textsf{lamed}.) +\item[\cs{iftutex}, \cs{ifTUTeX}] +This is not strictly an engine variant, but it is true if +\verb|\Umathchardef| is available, which essentially means that it is +true for Lua\TeX\ and Xe\TeX, allowing constructs such as +\begin{verbatim} +\iftutex + \usepackage{fontspec} + \setmainfont{TeX Gyre Termes} + \usepackage{unicode-math} + \setmathfont{Stix Two Math} +\else + \usepackage{newtxtext,newtxmath} +\fi +\end{verbatim} + +\end{description} + +\section{Requiring specific engines} +For each supported engine, the package provides a command +\verb|\Require...| which checks that the document is being processed +with a suitable engine, and stops with an error message if not. + +\begin{description} +\item[\cs{RequireeTeX}] +\item[\cs{RequirePDFTeX}] +\item[\cs{RequireXeTeX}] +\item[\cs{RequireLuaTeX}] +\item[\cs{RequireLuaHBTeX}] +\item[\cs{RequirepTeX}] +\item[\cs{RequireupTeX}] +\item[\cs{RequirepTeXng}] +\item[\cs{RequireVTeX}] +\item[\cs{RequireAlephTeX}] +\item[\cs{RequireTUTeX}] +\end{description} + + +\section{Output mode conditional} +This package also provides an \verb|\ifpdf| conditional that is true +if the format is set up to output in PDF mode rather than DVI. This is +equivalent to the test in the existing \textsf{ifpdf} package. + +Unlike the engine tests above this is defined as if by \verb|\newif| +with user-documented commands \verb|\pdftrue| and \verb|\pdffalse| that can +change the boolean value. These would be needed to reset the boolean +if the output mode is reset (for example by setting +\verb|\pdfoutput=0| in PDF\LaTeX). + +Unlike the original \textsf{ifpdf} package, the version here also +detects PDF output mode if running in V\TeX. + +\section{Additional packages} +This extended \textsf{iftex} is designed to replace the original +\textsf{iftex} and also the packages +\textsf{ifetex}, +\textsf{ifluatex}, +\textsf{ifvtex}, +\textsf{ifxetex}, +\textsf{ifpdf}. + +This collection includes small packages with these names that include +the main \textsf{iftex} package, and in some cases define additional +commands for increased compatibility. These packages should mean that +authors do not need to change existing documents, although it is +recommended that new documents use the \textsf{iftex} package +directly. + + +Note that while this package provides basic support for detecting +p\TeX\ (Japanese \TeX) variants and is broadly compatible with the +\textsf{ifptex} package, the \textsf{ifptex} package has many more detailed +tests for p\TeX\ variants and this package does \emph{not} replace the +\textsf{ifptex} (or \textsf{ifxptex}) packages, which are maintained +by their original authors and recommended for Japanese documents that +need fine control over the Japanese \TeX\ system in use. + +\end{document} |