summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/ifplatform
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-11-22 18:58:32 +0000
committerKarl Berry <karl@freefriends.org>2007-11-22 18:58:32 +0000
commit5f24b7cfebd86d4ec19ff264e850d9e14c193fed (patch)
tree3337c26846b64a7d4fdfa901d3f01d76f1e3017d /Master/texmf-dist/source/latex/ifplatform
parenta56e4d6cbedf78ba65218189765039dc3750d13a (diff)
new latex package ifplatform (20nov07)
git-svn-id: svn://tug.org/texlive/trunk@5555 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/ifplatform')
-rw-r--r--Master/texmf-dist/source/latex/ifplatform/ifplatform.dtx293
-rw-r--r--Master/texmf-dist/source/latex/ifplatform/ifplatform.ins50
2 files changed, 343 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/ifplatform/ifplatform.dtx b/Master/texmf-dist/source/latex/ifplatform/ifplatform.dtx
new file mode 100644
index 00000000000..a220e684bb6
--- /dev/null
+++ b/Master/texmf-dist/source/latex/ifplatform/ifplatform.dtx
@@ -0,0 +1,293 @@
+%\iffalse
+%<*internal>
+\iffalse
+%</internal>
+%<*readme>
+_____________________
+The ifplatform package
+v0.2 2007/11/18
+
+This package uses -shell-escape to establish whether
+the document is being processed on Windows or a *NIX
+platform (Mac OS X, Linux, etc.).
+
+Booleans provided are:
+ - ifwindows
+ - iflinux
+ - ifmacosx
+Please request more platforms if you need them.
+
+Finally, the \platformname macro is also provided that
+expands to a string of the platform name.
+
+Will Robertson wspr 81 at gmail dot com
+Johannes Große
+
+Copyright 2007
+Distributed under the LaTeX Project Public License
+%</readme>
+%<*internal>
+\fi
+\begingroup
+%</internal>
+%<*batchfile>
+\input docstrip.tex
+\keepsilent
+\preamble
+ ___________________________________________________
+ Copyright (C) 2007 Will Robertson & Johannes Große
+ License information appended.
+\endpreamble
+\postamble
+Copyright (C) 2007 by Will Robertson & Johannes Große
+
+Distributable under the LaTeX Project Public License,
+version 1.3c or higher (your choice). The latest version of
+this license is at: http://www.latex-project.org/lppl.txt
+
+This work is "maintained" (as per LPPL maintenance status)
+by Will Robertson.
+
+This work consists of the file ifplatform.dtx
+ and the derived files ifplatform.pdf,
+ ifplatform.sty, and
+ ifplatform.ins.
+\endpostamble
+\askforoverwritefalse
+\generate{\file{\jobname.sty}{\from{\jobname.dtx}{package}}}
+%</batchfile>
+%<batchfile>\endbatchfile
+%<*internal>
+\generate{\file{\jobname.ins}{\from{\jobname.dtx}{batchfile}}}
+\nopreamble\nopostamble
+\generate{\file{README.txt}{\from{\jobname.dtx}{readme}}}
+\generate{\file{prepare.sh}{\from{\jobname.dtx}{prepare}}}
+\endgroup
+%</internal>
+%<*driver>
+\documentclass{ltxdoc}
+\errorcontextlines=999
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+%\OnlyDescription
+\usepackage{array,booktabs,color,enumitem,hyperref}
+\usepackage[sc,osf]{mathpazo}
+\linespread{1.1} % A bit more space between lines
+\frenchspacing % Remove ugly extra space after punctuation
+\definecolor{niceblue}{rgb}{0.2,0.4,0.8}
+\def\theCodelineNo{\textcolor{niceblue}{\sffamily\tiny\arabic{CodelineNo}}}
+\newcommand*\pkg[1]{\textsf{#1}}
+\hfuzz2pt
+\usepackage{ifplatform}% for version info
+\begin{document}
+\DocInput{ifplatform.dtx}
+\end{document}
+%</driver>
+%\fi
+%
+% \GetFileInfo{\jobname.sty}
+% \CheckSum{0}
+% \makeatletter
+%
+% \title{The \pkg{\jobname} package}
+% \author{Code by Johannes Gro\ss{}e\\
+% Package by Will Robertson\\
+% \color[gray]{0.5}
+% \texttt{wspr\,81\,at\,gmail\,dot\,com}}
+% \date{\fileversion \qquad \filedate}
+%
+% \maketitle
+%
+% \section{About}
+% This package provides the following conditionals to test
+% which operating system is being used to run \TeX:
+% \begin{itemize}[nolistsep,label=--]
+% \item \cs{ifwindows}
+% \item \cs{iflinux}
+% \item \cs{ifmacosx}
+% \end{itemize}
+%
+% \TeX\ must be invoked with the |-shell-escape| option (or equivalent) for the
+% package to work. \cs{ifshellescape} is also provided to check
+% whether this is the case.
+%
+% Also, the \cmd\platformname\ command is defined to expand to a
+% macro that represents the operating system. Default definitions are (respectively):
+%
+% \begin{tabular}{@{}l@{\quad$\to$\quad}l}
+% \cmd\windowsname & `Windows' \\
+% \cmd\linuxname & `Linux' \\
+% \cmd\macosxname & `Mac\,OS\,X' \\
+% \cmd\unknownplatform & \emph{whatever is returned by} |uname| \\
+% \end{tabular}
+%
+% \noindent Redefine these macros to customise
+% the output of \cmd\platformname.
+% \ifshellescape
+% This documentation was compiled on \platformname.
+% \fi
+%
+% \section{Other platforms}
+%
+% If greater granularity is required to differentiate between various \textsc{unix}-like operating systems, then \cmd\unknownplatform\ can be interrogated for the platform based on the output of |uname|. Table~\ref{table} lists possible outputs for a range of operating systems.
+%
+% For example, to test whether the AIX operating system is being used, you could use the following code:
+% \begin{verbatim}
+% \def\@tempa{aix6}
+% \ifx\unknownplatform\@tempa
+% ... AIX is being used ....
+% \else
+% ... or not ...
+% \fi
+% \end{verbatim}
+% The \pkg{ifthen} and \pkg{xifthen} packages might be of interest to those who prefer more \LaTeX-like methods of conditional testing.
+%
+% \begin{table}[hp]
+% \centering
+% \begin{tabular}{@{}l>{\ttfamily}c@{}}
+% \toprule
+% Platform & uname \textrm{string} \\
+% \midrule
+% AIX & {aix6} \\
+% Cray UNICOS & {sn5176} \\
+% FreeBSD & {FreeBSD} \\
+% HPUX & {HP-UX} \\
+% IRIX & {IRIX64} \\
+% Solaris & {SunOS} \\
+% OpenBSD & {OpenBSD} \\
+% \bottomrule
+% \end{tabular}
+% \caption{List of operating systems and their \texttt{uname} strings. Adapted from % \url{http://en.wikipedia.org/wiki/Uname}.}
+% \label{table}
+% \end{table}
+%
+% \clearpage
+% \section{Implementation}
+%\iffalse
+%<*package>
+%\fi
+% \begin{macrocode}
+\ProvidesPackage{ifplatform}
+ [2007/11/18 v0.2 Testing for the operating system]
+% \end{macrocode}
+% Conditionals we provide:
+% \begin{macrocode}
+\newif\ifshellescape
+\newif\ifwindows
+\newif\ifmacosx
+\newif\iflinux
+% \end{macrocode}
+% Names of operating systems:
+% \begin{macrocode}
+\newcommand\windowsname{Windows}
+\newcommand\linuxname{Linux}
+\newcommand\macosxname{Mac\,OS\,X}
+\newcommand\unknownplatform{[Unknown]}
+% \end{macrocode}
+% Define test file name and define a hopefully unique string:
+% \begin{macrocode}
+\edef\ip@file{\jobname.w18}
+\edef\ip@sig{write18-test-\the\year\the\month\the\day\the\time}
+\edef\ip@win{'\ip@sig'}
+% \end{macrocode}
+% Macro to read in a one-line file into a temporary location:
+% \begin{macrocode}
+\def\ip@read@file{%
+ \newread\instream
+ \openin\instream=\ip@file
+ \@tempcnta=\endlinechar
+ \endlinechar=-1
+ \read\instream to\@tempa
+ \endlinechar=\@tempcnta
+ \closein\instream}
+% \end{macrocode}
+% Use echo to (maybe) write a test file. If it succeeds, continue; else, bail.
+% \begin{macrocode}
+\immediate\write18{echo \ip@win >"\ip@file"}
+\IfFileExists{\ip@file}{\shellescapetrue}{\shellescapefalse\endinput}
+% \end{macrocode}
+% Now read the test file into a macro:
+% \begin{macrocode}
+\ip@read@file
+% \end{macrocode}
+% The contents of the test file reveals several things:
+% \begin{itemize}[nolistsep,label=--]
+% \item test string correct with single quotes: Windows,
+% \item test string correct without single quotes: Linux/Mac OS X,
+% \item test string not correct: did not really write test file, so \cmd\write18\ is not enabled. (This should never happen.)
+% \end{itemize}
+% \begin{macro}{\ifwindows}
+% First test for Windows.
+% \begin{macrocode}
+\ifx\@tempa\ip@sig
+ \windowsfalse
+\else
+ \ifx\@tempa\ip@win
+ \windowstrue
+ \else
+ \PackageError{ifplatform}
+ {There is a problem. Please delete the file \ip@file.}
+ {Somehow an old file is lying around telling me the wrong things.
+ \MessageBreak This should never happen. Please let us know when it does!}
+ \fi
+\fi
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\iflinux}
+% \begin{macro}{\ifmacosx}
+% Now test for the others; directly test for Linux and Mac~OS~X; but what about Solaris or FreeBSD or \dots\ ?
+% Define \cmd\unknownplatform\ as the output of |uname| rather than enumerate the possibilities.
+% \begin{macrocode}
+\ifwindows\else
+ \immediate\write18{uname -s > "\ip@file"}
+ \ip@read@file
+ \def\@tempb{Linux}
+ \ifx\@tempa\@tempb
+ \linuxtrue
+ \else
+ \def\@tempb{Darwin}
+ \ifx\@tempa\@tempb
+ \macosxtrue
+ \else
+ \edef\unknownplatform{\@tempa}
+ \fi
+ \fi
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\platformname}
+% Defined in terms of macros so the output is user-customisable.
+% \begin{macrocode}
+\edef\platformname{%
+ \ifwindows\noexpand\windowsname\else
+ \iflinux \noexpand\linuxname\else
+ \ifmacosx \noexpand\macosxname\else
+ \noexpand\unknownplatform
+ \fi\fi\fi}
+% \end{macrocode}
+% \end{macro}
+% Clean up:
+% \begin{macrocode}
+\immediate\write18{\ifwindows del \else rm -- \fi "\ip@file"}
+% \end{macrocode}
+%\iffalse
+%</package>
+%<*prepare>
+% \begin{macrocode}
+rm ifplatform.zip
+mv README.txt README
+zip ifplatform.zip ifplatform.dtx ifplatform.ins ifplatform.pdf README
+% \end{macrocode}
+%</prepare>
+%\fi
+%
+% \typeout{------------------------------------------------------}
+% \typeout{ To finish the installation please move the following}
+% \typeout{ file into a directory searched by XeTeX:}
+% \typeout{ \space- ifplatform.sty}
+% \typeout{------------------------------------------------------}
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/ifplatform/ifplatform.ins b/Master/texmf-dist/source/latex/ifplatform/ifplatform.ins
new file mode 100644
index 00000000000..775c63664a7
--- /dev/null
+++ b/Master/texmf-dist/source/latex/ifplatform/ifplatform.ins
@@ -0,0 +1,50 @@
+%%
+%% This is file `ifplatform.ins',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% ifplatform.dtx (with options: `batchfile')
+%% ___________________________________________________
+%% Copyright (C) 2007 Will Robertson & Johannes Große
+%% License information appended.
+\input docstrip.tex
+\keepsilent
+\preamble
+ ___________________________________________________
+ Copyright (C) 2007 Will Robertson & Johannes Große
+ License information appended.
+\endpreamble
+\postamble
+Copyright (C) 2007 by Will Robertson & Johannes Große
+
+Distributable under the LaTeX Project Public License,
+version 1.3c or higher (your choice). The latest version of
+this license is at: http://www.latex-project.org/lppl.txt
+
+This work is "maintained" (as per LPPL maintenance status)
+by Will Robertson.
+
+This work consists of the file ifplatform.dtx
+ and the derived files ifplatform.pdf,
+ ifplatform.sty, and
+ ifplatform.ins.
+\endpostamble
+\askforoverwritefalse
+\generate{\file{\jobname.sty}{\from{\jobname.dtx}{package}}}
+\endbatchfile
+%% Copyright (C) 2007 by Will Robertson & Johannes Große
+%%
+%% Distributable under the LaTeX Project Public License,
+%% version 1.3c or higher (your choice). The latest version of
+%% this license is at: http://www.latex-project.org/lppl.txt
+%%
+%% This work is "maintained" (as per LPPL maintenance status)
+%% by Will Robertson.
+%%
+%% This work consists of the file ifplatform.dtx
+%% and the derived files ifplatform.pdf,
+%% ifplatform.sty, and
+%% ifplatform.ins.
+%%
+%% End of file `ifplatform.ins'.