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 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
|
% ifxptex-doc.tex
% !TeX encoding = UTF-8
% !TeX program = pdfLaTeX
\RequirePackage{fix-cm}
\documentclass[a4paper]{article}
\usepackage{amsfonts}
\usepackage[OT1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[UKenglish]{babel}
\usepackage[babel]{microtype}
\usepackage{etoolbox}
\usepackage{amstext}
\usepackage{booktabs}
\AtBeginEnvironment{verbatim}{\microtypesetup{activate=false}}
\abovetopsep=\medskipamount
\newcommand\NormalSans{\normalfont\sffamily}
\newcommand\pkg[1]{{\protect\NormalSans#1}}
\newcommand\pTeX{p\kern-0.15em\TeX}
\newcommand\e{\ensuremath{\varepsilon}}
\newcommand\eTeX{\e-\TeX}
\newcommand\epTeX{\e-\pTeX}
\newcommand\upTeX{u\pTeX}
\newcommand\eupTeX{\e-\upTeX}
\newcommand\ApTeX{A\kern-0.1em\pTeX}
\newcommand\dpx{DVI\-PDFM\ensuremath{x}}
\newcommand\FooTeX{Foo\kern-0.1em\TeX}
\newcommand\yes{\checkmark}
\newcommand\UNI{(Unicode)}
\newcommand\uni{{\footnotesize\UNI}}
\begin{document}
\title{The \pkg{ifxptex} package%
\thanks{CTAN Homepage: \texttt{https://ctan.org/pkg/ifxptex}}
\thanks{Repository: \texttt{https://github.com/Man-Ting-Fang/ifxptex}}}
\author{Yue \textsc{Zhang}}
\date{2017-12-27\quad v0.2}
\maketitle
\begin{abstract}
This package provides commands for detecting \pTeX\ and its derivatives (\epTeX,
\upTeX, \eupTeX, and \ApTeX). Both \LaTeX\ and plain \TeX\ are supported.
\end{abstract}
\section{Introduction}
\pTeX\ is an extension of \TeX. It has several derivatives:
\begin{itemize}
\item \epTeX: \( \text{\pTeX} + \text{\eTeX} + \cdots \)
\item \upTeX: \( \text{\pTeX} + \text{native Unicode support} + \cdots \)
\item \eupTeX: \( \text{\epTeX} + \text{\upTeX} \)
\item \ApTeX:\footnote{Full name: Asiatic \pTeX; synonym: \pTeX-ng; obsolete
names: Asian \pTeX, toua-\pTeX, toua-\TeX, toua\TeX, \ldots}
\( \text{\upTeX} + \text{\eTeX} + \cdots \)
\end{itemize}
Table \ref{tab:cmds} shows the command line commands for invoking them.%
\footnote{Old implementations and other \TeX\ formats are not taken into
consideration.}
\vskip-10pt\relax
\begin{table}[!ht]\centering
\caption{Commands for invoking *\pTeX}
\label{tab:cmds}
\begin{tabular}{cccc}
\toprule
& \multicolumn{2}{c}{Command} & \\
\cmidrule(lr){2-3}
Engine & Plain \TeX & \LaTeX & Output format(s)\footnotemark \\
\midrule
\pTeX & \verb|ptex| & n/a & DVI (extended) \\
\epTeX & \verb|eptex| & \verb|platex| & DVI (extended) \\
\upTeX & \verb|uptex| & n/a & DVI (extended) \\
\eupTeX & \verb|euptex| & \verb|uplatex| & DVI (extended) \\
\ApTeX & \verb|ptex-ng| & \verb|platex-ng| & DVI (extended) and PDF \\
\bottomrule
\end{tabular}
\end{table}
\footnotetext{DVI files produced by *\pTeX\ can be converted to PDF files by
\dpx, or some scripts for convenience (also use \dpx\ internally), but this
subject is outside the scope of this document. (Note that \ApTeX\ outputs both
DVI and PDF files directly.)}
\noindent Both \LaTeX3 and the \pkg{ifptex} package (and its alias, the
\pkg{ifuptex} package) have already provided commands for detecting some *\pTeX\
engines. However, they do not satisfy the author, thus this package is written.
For compatibility, all user commands provided by this package have an extra
letter ``\verb|x|'' or ``\verb|X|''.
\section{Naming conventions}
There are two more naming conventions in this package:
\begin{itemize}
\item Suppose that there is a \TeX\ engine called \FooTeX, then both
\verb|FooTeX| and \verb|footex| are used in commands' names, but they refer to
different things: \verb|FooTeX| stands for the \FooTeX\ engine itself, while
\verb|footex| stands for all engines (mostly) compatible with \FooTeX\
(including \FooTeX).
\item Furthermore, \verb|UniFooTeX| and \verb|unifootex| stand respectively for
\verb|FooTeX| and \verb|footex| when using Unicode as the internal encoding.
(Similarly, ``\UNI'' used in the following tables indicates that the engine
should be the corresponding \verb|UniFooTeX|.) (Note that \ApTeX\ always uses
Unicode as its internal encoding.)
\end{itemize}
\section{Usage}
This package has no options, just load it as usual:
\begin{itemize}
\item \LaTeX: \verb|\usepackage{ifxptex}|
\item Plain \TeX: \verb|\input ifxptex.sty|
\end{itemize}
\subsection{Conditionals}
Table \ref{tab:cond} lists the conditionals provided by this package.
\vskip-10pt\relax
\begin{table}[!ht]\centering
\caption{Conditionals provided by this package}
\label{tab:cond}
\begin{tabular}{lccccc}
\toprule
& \multicolumn{5}{c}{True when using (one of)} \\
\cmidrule(lr){2-6}
Conditional & \pTeX & \epTeX & \upTeX & \eupTeX & \ApTeX \\
\midrule
\verb|\ifxpTeX| & \yes & & & & \\
\verb|\ifxepTeX| & & \yes & & & \\
\verb|\ifxupTeX| & & & \yes & & \\
\verb|\ifxeupTeX| & & & & \yes & \\
\verb|\ifxApTeX| & & & & & \yes \\
\verb|\ifxUniupTeX| & & & \yes\ \uni & & \\
\verb|\ifxUnieupTeX| & & & & \yes\ \uni & \\
\verb|\ifxptex| & \yes & \yes & \yes & \yes & \yes \\
\verb|\ifxeptex| & & \yes & & \yes & \\
\verb|\ifxuptex| & & & \yes & \yes & \yes \\
\verb|\ifxeuptex| & & & & \yes & \\
\verb|\ifxaptex| & & & & & \yes \\
\verb|\ifxuniuptex| & & & \yes\ \uni & \yes\ \uni & \yes \\
\verb|\ifxunieuptex| & & & & \yes\ \uni & \\
\bottomrule
\end{tabular}
\end{table}
\noindent These conditionals can be used as usual. For example:
\medskip
\noindent{\ttfamily\hskip2em}%
\verb|\ifxeupTeX|%
\ensuremath{\langle}material for \eupTeX\ensuremath{\rangle}%
\verb|\else|%
\ensuremath{\langle}material not for \eupTeX\ensuremath{\rangle}%
\verb|\fi|
\subsection{Declarations}
Table \ref{tab:decl} lists the declarations provided by this package. (This
table is very similar to Table \ref{tab:cond}.)
\vskip-10pt\relax
\begin{table}[!ht]\centering\advance\tabcolsep by -0.1pt\relax
\caption{Declarations provided by this package}
\label{tab:decl}
\begin{tabular}{lccccc}
\toprule
& \multicolumn{5}{c}{Reports an error if the engine in
use is not (one of)} \\
\cmidrule(lr){2-6}
Declaration & \pTeX & \epTeX & \upTeX & \eupTeX & \ApTeX \\
\midrule
\verb|\RequireXpTeX| & \yes & & & & \\
\verb|\RequireXepTeX| & & \yes & & & \\
\verb|\RequireXupTeX| & & & \yes & & \\
\verb|\RequireXeupTeX| & & & & \yes & \\
\verb|\RequireXApTeX| & & & & & \yes \\
\verb|\RequireXUniupTeX| & & & \yes\ \uni & & \\
\verb|\RequireXUnieupTeX| & & & & \yes\ \uni & \\
\verb|\RequireXptex| & \yes & \yes & \yes & \yes & \yes \\
\verb|\RequireXeptex| & & \yes & & \yes & \\
\verb|\RequireXuptex| & & & \yes & \yes & \yes \\
\verb|\RequireXeuptex| & & & & \yes & \\
\verb|\RequireXaptex| & & & & & \yes \\
\verb|\RequireXuniuptex| & & & \yes\ \uni & \yes\ \uni & \yes \\
\verb|\RequireXunieuptex| & & & & \yes\ \uni & \\
\bottomrule
\end{tabular}
\end{table}
\end{document}
|