summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/pracjourn
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/pracjourn
Initial commit
Diffstat (limited to 'macros/latex/contrib/pracjourn')
-rw-r--r--macros/latex/contrib/pracjourn/README40
-rw-r--r--macros/latex/contrib/pracjourn/pjsample.ltx136
-rw-r--r--macros/latex/contrib/pracjourn/pjsample.pdfbin0 -> 122311 bytes
-rw-r--r--macros/latex/contrib/pracjourn/pracjourn.dtx1309
-rw-r--r--macros/latex/contrib/pracjourn/pracjourn.ins45
-rw-r--r--macros/latex/contrib/pracjourn/pracjourn.pdfbin0 -> 301180 bytes
6 files changed, 1530 insertions, 0 deletions
diff --git a/macros/latex/contrib/pracjourn/README b/macros/latex/contrib/pracjourn/README
new file mode 100644
index 0000000000..48d4957f5f
--- /dev/null
+++ b/macros/latex/contrib/pracjourn/README
@@ -0,0 +1,40 @@
+___________________
+The PRACJOURN class
+
+This class file is used for typesetting articles in the PracTeX Journal
+(<http://tug.org/pracjourn>). It is based on the article class with
+modifications to allow for more flexible front-matter and revision control,
+among other small changes.
+
+It uses Palatino (12/15.5 pt) for the main text font, and Latin Modern Sans
+and Typewriter for the companion fonts. It is not essential to have
+the Latin Modern fonts installed, since the class file will fall back to
+the older Computer Modern-based versions if necessary.
+
+_____
+USAGE
+
+No class options are necessary. \title, \author, and \abstract metadata is
+required. Please see pracjourn.pdf for the full documentation.
+
+\documentclass{pracjourn}
+\title{...}
+\author{...}
+\abstract{...}
+\begin{document}
+\maketitle
+...
+\end{document}
+
+_______
+LICENCE
+
+This class is distributed under the GNU General Public License.
+Please see the documented source file pracjourn.dtx for further
+information.
+
+Will Robertson
+Art Ogawa
+Karl Berry
+
+Copyright (C) 2005, 2006, 2007 TeX Users Group \ No newline at end of file
diff --git a/macros/latex/contrib/pracjourn/pjsample.ltx b/macros/latex/contrib/pracjourn/pjsample.ltx
new file mode 100644
index 0000000000..7f7b0f9b85
--- /dev/null
+++ b/macros/latex/contrib/pracjourn/pjsample.ltx
@@ -0,0 +1,136 @@
+\documentclass{pracjourn}[2006/02/20]
+
+%%% Revision control
+\TPJrevision{2006}{02}{20}
+%%%
+
+%%% Mandatory article metadata %%%
+\title{Example of a \PracTeX\ Journal article}
+\author{Will Robertson}
+\abstract{This is an example document created with the
+ \PracTeX\ Journal's class file. It is based on the article class,
+ using 12\,pt Palatino with 15.5\,pt leading. This new version
+ obviously has a modified layout, with a bunch of
+ optional extra author info commands.
+
+ Some people have more than a single paragraph in their
+ abstract. In fact, it is quite common.}
+%%%
+
+%%% Optional article metadata %%%
+\email{will@guerilla.net.au}
+%\hyperlinkemail
+\website{http://www.mecheng.adelaide.edu.au/~will/}
+\address{Adelaide, Australia}
+% Please adjust the copyright statement to your needs:
+\license{Copyright \textcopyright\ 2006 Will Roberton.\\
+ Permission is granted to distribute verbatim or modified\\
+ copies of this document provided this notice remains intact.}
+%%%
+
+%%% Defining more metadata:
+\addinfospace{1ex}
+\addinfo[\color{blue}\scshape]{Hobby}
+\hobby{Sleeping in.}
+%%%
+
+%%% Changing the hyperlink colour:
+\definecolor{linkcolour}{rgb}{0.7,0.2,0.2}
+%%%
+
+\begin{document}
+\maketitle
+
+\section{Introduction}
+This is an example of the \texttt{pracjourn} document class.
+Articles should always start with a section title, which will usually be `Introduction' or somesuch.
+
+This document demonstrates the features of the document class.
+Here are some logos and abbreviations:
+ \note{Tuned for Palatino, but refinements welcomed.}
+\TeX, \pdfTeX, \BibTeX, \MF, \MP, \LaTeX, \LaTeXe,
+\mbox{\ConTeXt}, \pdfLaTeX, \XeTeX, \PracTeX, \TPJ, \PS.
+
+On the following pages are shown the document divisions and list environments.
+
+\newpage
+\section{Section headings}
+\itshape The fact is that his precocity in vice was awful. At five months of age he
+used to get into such passions that he was unable to articulate. At six
+months, I caught him gnawing a pack of cards. At seven months he was in
+the constant habit of catching and kissing the female babies. At eight
+months he peremptorily refused to put his signature to the Temperance
+pledge.
+ \note{Text from Edgar Allen Poe's `Never bet the Devil your head'.}
+
+\subsection{Subsection}
+
+Poverty was another vice which the peculiar physical deficiency of
+Dammit's mother had entailed upon her son. He was detestably poor, and
+this was the reason, no doubt, that his expletive expressions about
+betting, seldom took a pecuniary turn. I will not be bound to say that I
+ever heard him make use of such a figure of speech as ``I'll bet you a
+dollar.'' It was usually ``I'll bet you what you please,'' or ``I'll bet you
+what you dare,'' or ``I'll bet you a trifle,'' or else, more significantly
+still, \emph{``I'll bet the Devil my head.''}
+
+\subsubsection{Subsubsection}
+
+\begin{figure}
+\centering test
+\caption{test}
+\end{figure}
+\upshape Subsubsections are in the same font size as the body text, so I guess
+it's possibly a little small. I doubt many people really will wish to
+use a subsubsection in a journal article. But if they wish, there's
+nothing stopping 'em.
+ \note{Another footnote test.
+ This one has to be really long to see what happens
+ when a footnote extends over more than one line.
+ I.e., two or more.}
+
+\paragraph{Paragraphs} Named paragraphs are very similar to description lists; however, these may be useful more \emph{multiple} paragraphs, whereas description lists work better with only a single paragraph per item.
+
+\subparagraph{Subparagraphs} For those who want them\dots.
+
+\newpage
+\section{Lists}
+An itemized list:
+\begin{itemize}
+\item one,
+\item two, and
+\item three.
+ A nested itemised list:
+ \begin{itemise}
+ \item one,
+ \item two, and
+ \item three.
+ \end{itemise}
+\end{itemize}
+An enumerated list:
+\begin{enumerate}
+\item one,
+\item two, and
+\item three.
+\end{enumerate}
+A description list:
+\begin{description}
+\item [one] the first,
+\item [two] the second, and
+\item [three] the third. A nested description list:
+ \begin{description}
+ \item [one] the first,
+ \item [two] the second, and
+ \item [three] the third.
+ \end{description}
+\end{description}
+
+%Here is the content of the revision file, \verb+_rev.tex+:
+%\begingroup\makeatletter\def\@tempa{\begin{verbatim}\@@input _rev.tex}%
+%\expandafter\endgroup\@tempa\end{verbatim}
+
+%Here is the content of the issue file, \verb+_iss.tex+:
+%\begingroup\makeatletter\def\@tempa{\begin{verbatim}\@@input _iss.tex}%
+%\expandafter\endgroup\@tempa\end{verbatim}
+
+\end{document}
diff --git a/macros/latex/contrib/pracjourn/pjsample.pdf b/macros/latex/contrib/pracjourn/pjsample.pdf
new file mode 100644
index 0000000000..015ba1b7be
--- /dev/null
+++ b/macros/latex/contrib/pracjourn/pjsample.pdf
Binary files differ
diff --git a/macros/latex/contrib/pracjourn/pracjourn.dtx b/macros/latex/contrib/pracjourn/pracjourn.dtx
new file mode 100644
index 0000000000..423db39c8a
--- /dev/null
+++ b/macros/latex/contrib/pracjourn/pracjourn.dtx
@@ -0,0 +1,1309 @@
+% \iffalse
+% Copyright (C) 2004 TeX Users Group.
+%
+% This program is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 2 of the License, or
+% (at your option) any later version.
+%
+% This program is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this program; if not, write to the Free Software
+% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+%
+%<*driver>
+\ProvidesFile{pracjourn.dtx}
+%</driver>
+%<class>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<class>\ProvidesClass{pracjourn}
+%<*class>
+ [2007/08/25 v0.4n PracTeX Journal Class]
+%</class>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{hyperref,multicol}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+
+\makeatletter
+\usepackage{amsmath,amssymb,array,calc,graphicx,hyperref,ifpdf,ifthen,varioref}
+\usepackage[osf]{mathpazo}
+\renewcommand\sfdefault{lmss}
+\renewcommand\ttdefault{lmtt}
+\usepackage[T1]{fontenc}
+\ifpdf\IfFileExists{microtype.sty}{\usepackage[protrusion=true,expansion=false]{microtype}}{}\fi
+\linespread{1.069} % Palatino needs more space between lines
+\frenchspacing % Remove ugly extra space after punctuation
+\hypersetup{colorlinks, breaklinks, linktocpage,
+ linkcolor=red, citecolor=red, filecolor=blue, urlcolor=blue}
+\setlength\extrarowheight{2pt} % Make tables bearable
+% Crude referencing commands:
+\newcommand\tabref[1]{Table~\vref{tab:#1}}
+\newcommand\figref[1]{Figure~\vref{fig:#1}}
+\newcommand\secref[1]{Section~\vref{sec:#1}}
+% Various labelling commands:
+\newcommand*\name[1]{\textsc{#1}}
+\newcommand*\pkg[2][]{\relax
+ \edef\@tempa{#1}\relax
+ \ifx\@tempa\@empty
+ \textsf{#2}\else
+ \href{#1}{\textsf{#2}}\fi}
+\newcommand*\env[1]{\textsf{#1}}
+\let\latin\textit
+\def\eg{\latin{e.g.}}
+\def\ie{\latin{i.e.}}
+\def\etc{\@ifnextchar.{\latin{etc}}{\latin{etc.}\@}}
+% Better float parameters: (from the TeX FAQ)
+\renewcommand{\topfraction}{.85}
+\renewcommand{\bottomfraction}{.7}
+\renewcommand{\textfraction}{.15}
+\renewcommand{\floatpagefraction}{.66}
+\renewcommand{\dbltopfraction}{.66}
+\renewcommand{\dblfloatpagefraction}{.66}
+\setcounter{topnumber}{9}
+\setcounter{bottomnumber}{9}
+\setcounter{totalnumber}{20}
+\setcounter{dbltopnumber}{9}
+% Section heading customisation:
+\renewcommand\section{\@startsection {section}{1}{\z@}%
+ {-3ex \@plus -1ex \@minus -.2ex}%
+ {2ex \@plus 0.2ex}%
+ {\centering\normalsize\scshape}}
+\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
+ {-2.5ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus 0.2ex}%
+ {\centering\normalsize\itshape}}
+\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-2ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus 0.2ex}%
+ {\centering\normalfont\normalsize}}
+\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\normalfont\normalsize\itshape}}
+\let\subparagraph\undefined
+\def\@maketitle{%
+ \newpage
+ {\centering
+ {\large\@title\par}\vskip1em
+ \textsc\@author\par\vskip1em
+ \@date\par}\vskip2em}
+% Abstract customisation:
+\renewenvironment{abstract}{%
+ \begin{trivlist}\item[]
+ \setlength\leftskip{0.15\textwidth}
+ \setlength\rightskip{0.15\textwidth}
+ \small\textit{Abstract}\quad}{\end{trivlist}}
+% TOC customisation: Make it two-column to save space;
+% Remove leaders in the TOC, replace with \quad.
+\setcounter{tocdepth}{2}
+\renewcommand\tableofcontents{%
+ \section*{\contentsname}
+ \begin{trivlist}\item[]
+ \begin{multicols}{2}
+ \setlength\parskip{0pt}
+ \small
+ \@starttoc{toc}%
+ \end{multicols}
+ \end{trivlist}}
+\renewcommand*\l@section[2]{%
+ \ifnum \c@tocdepth >\z@
+ \addpenalty\@secpenalty
+ \addvspace{1.0em \@plus\p@}%
+ \setlength\@tempdima{1.5em}%
+ \begingroup
+ \raggedright
+ \parindent \z@
+ \rightskip \z@
+ \parfillskip \@flushglue
+ \leavevmode
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ #1\quad\nobreak#2\hfil\par
+ \endgroup
+ \fi}
+\def\@dottedtocline#1#2#3#4#5{%
+ \ifnum #1>\c@tocdepth \else
+ {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip \@flushglue
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \raggedright
+ \@tempdima #3\relax
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {#4}\quad\nobreak#5\hfil\par}%
+ \fi}
+% Better footnotes:
+\let\old@makefntext\@makefntext
+\renewcommand\@makefntext[1]{%
+ \vspace{2pt}%
+ \setlength\parindent{-1.8em}%
+ \setlength\leftskip{1.8em}%
+ \makebox[1.8em][l]{\normalfont\small\@thefnmark.}#1}
+% LOGOS, tuned for Palatino:
+\def\TeX{T\kern-.15em\lower.5ex\hbox{E}\kern-.07em X\spacefactor1000\relax}
+
+\newcommand\TODO[1]{\marginpar{\raggedright\itshape\color{red}TODO: #1}}
+
+\begin{document}
+ \DocInput{pracjourn.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+% \CheckSum{0}
+%
+%
+% \changes{v0.0}{2004/10/03}{KB: Initial version}
+% \changes{v0.2}{2004/11/13}{KB: Palatino, no date printing}
+% \changes{v0.3}{2005/01/03}{AO: Add \cmd\TPJissue, \cmd\TPJrevision, \cmd\TPJcopyright}
+% \changes{v0.3}{2005/01/03}{AO: Rewrite using \LaTeXe{} idioms}
+% \changes{v0.3a}{2005/01/03}{AO: changes to \cmd\TPJissue, \cmd\TPJrevision, \cmd\TPJcopyright}
+% \changes{v0.3b}{2005/01/07}{AO: change \cmd\evensidemargin}
+%
+%
+% \GetFileInfo{pracjourn.dtx}
+%
+% \DoNotIndex{\if}
+%
+% \title{The \textsf{pracjourn} class}
+% \author{%
+% Karl Berry \\
+% Arthur Ogawa\\
+% Will Robertson\\
+% Correspondence to: \texttt{pracjourn@tug.org}}
+% \date{\filedate\qquad\fileversion}
+%
+% \maketitle
+%
+% \begin{abstract}
+% \noindent\textsf{pracjourn} is a class based on \texttt{article.cls},
+% to be used for typesetting articles in The Prac\TeX\ Journal,
+% \url{http://tug.org/pracjourn}.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \section{Introduction}
+%
+% The \pkg{pracjourn} \LaTeX{} document class is to be used for
+% articles written for the The Prac\TeX\ Journal,
+% \url{http://tug.org/pracjourn}. The source for the document class
+% resides at \url{http://tug.org/pracjourn/dtx}, and is also
+% available at CTAN.
+%
+% \section{Usage}
+%
+% Refer to the sample document, \url{www.tug.org/pracjourn/dtx/pjsample.tex},
+% for context. Issue a |\documentclass{pracjourn}| command at
+% the beginning of your document as usual. No class options are necessary.
+%
+% This document class automatically loads the packages
+% \pkg{color}, \pkg{graphicx}, \pkg{hyperref}, and \pkg{textcomp}.
+% These are all standard packages in every \TeX\ distribution.
+%
+% \subsection{Formatting}
+%
+% Page metrics are appropriate for printing on either A4 or
+% letter size paper. The type size is 12/15.5 Palatino.
+% Except in exceptional circumstances, please refrain from
+% using typefaces other than those defined by this class.
+%
+% Hyperlinks are inserted automatically in the relevant locations in
+% a dark blue colour. If you wish to adjust this colour to suit your
+% own colour requirements, simply redefine the \texttt{linkcolour}. E.g.,
+% to change it to dark red,\\
+% \indent|\definecolor{linkcolour}{rgb}{0.7,0.2,0.2}|.
+%
+% \subsection{Author/article metadata}
+%
+% All author and article information must be defined before \cmd\maketitle, which
+% should probably be the first thing after |\begin{document}|.
+%
+% \DescribeMacro{\author}
+% \DescribeMacro{\title}
+% \DescribeMacro{\abstract}
+% The \cmd\author, \cmd\title, and \cmd\abstract\ commands are used to
+% define those pieces of metadata about the article, and are mandatory.
+% Note that the \cmd\abstract\ is a plain old command, \emph{not} an environment.
+%
+% \DescribeMacro{\noabstract}
+% Should you have a reason for not having an abstract,
+% this may be signified by declaring \cmd\noabstract\ instead.
+%
+% \DescribeMacro{\license}
+% It is optional to specify a copyright and/or license declaration,
+% to be typeset in the footer of the first page, with the \cmd\license\
+% command.\footnote{The \cmd\TPJcopyright\ command, which used to provide this
+% functionality is still provided for backwards compatibility.}
+%
+% \DescribeMacro{\email}
+% \DescribeMacro{\website}
+% \DescribeMacro{\address}
+% Additional author information may be specified, to be typeset appropriately,
+% with the following commands: \cmd\email, \cmd\website, and \cmd\address.
+%
+% If the \pkg{switcheml} package is installed somewhere that
+% \TeX\ will find it, it is loaded for the purpose of obfuscating
+% the typeset email address. This is done to prevent harvesting by
+% spammers, but if the package cannot be found the email address
+% will by typeset as a hyperlink.
+%
+% \DescribeMacro{\hyperlinkemail}
+% Should you wish to typeset your
+% email address as a hyperlink (that is, theoretically harvestable
+% by spammers) despite having \pkg{switcheml} installed, you may
+% simply include the command \cmd\hyperlinkemail\ anywhere before
+% \verb|\begin{document}|.
+%
+% \subsubsection{Adding more author/article information}
+%
+% As previously
+% mentioned, this class provides the \cmd\email, \cmd\website, and \cmd\address\
+% macros for typesetting that information in the header block. These commands are defined
+% in the source code of the class file with (something like) the following:\footnote{\cmd\typesetemail\ is an internal command defined by either \cmd\hyperlinkemail\ or \cmd\obfuscateemail.}
+% \begin{quote}
+% |\addinfo[\typesetemail]{Email}|\\
+% |\addinfo[\url]{Website}|\\
+% |\addinfo{Address}|
+% \end{quote}
+% Additional blocks my be added on a per-article basis in the same manner.
+%
+% \DescribeMacro{\addinfo}
+% To be specific, the \cmd\addinfo\ command takes one mandatory argument,
+% which is the title of the item to be added to the list, and one optional
+% argument, which is used to define the formatting of the block.
+%
+% This command will then define the macro used to input the additional information
+% by taking the lowercase of the title of the information and turning it into
+% a \TeX\ macro.
+%
+% \DescribeMacro{\newinfo}
+% If lowercasing the heading to create the macro name is impractical
+% (due to accents, for example), then this command can be used instead:
+% \begin{quote}
+% |\newinfo\resume[\color{red}]{R\'esum\'e}|
+% \end{quote}
+%
+% The names used in the article metadata (`Email', `R\'esum\'e', etc.) can be redefined as follows:
+% \begin{quote}
+% |\renewcommand\emailname{Email}|\\
+% |\renewcommand\resumename{Resume}|
+% \end{quote}
+% These macros are defined automatically by \cmd\addinfo/\cmd\newinfo.
+%
+% \DescribeMacro{\addinfospace}
+% If you wish to add some vertical space after the previous item in the front matter,
+% the \cmd\addinfospace\marg{height} command will insert some. This may be necessary
+% after multi-line blocks, which require some breathing room.
+%
+% \DescribeMacro{\clearinfo}
+% If you don't like the ordering of the information blocks or you wish to edit
+% the formatting of the current setup, the \cmd\clearinfo\ command allows you to start
+% fresh and redefine the info blocks however you may wish.
+%
+% \subsection{Additional user commands}
+% \DescribeMacro{\dash} For `smart' dashes in text. Thinly spaced from the text, it ignores surrounding spaces, and permits only succeeding line breaks.
+% \begin{quote}
+% |use like this \dash for consistent dashes|
+% \end{quote}
+% produces `use like this \unskip\thinspace\nobreak\textemdash\thinspace for consistent dashes'.
+%
+%
+% \DescribeMacro{\note} For easier footnotes. This command ignores preceding space, so linebreaks before the footnote text in the source will not give the wrong spacing.
+% \begin{quote}
+% |And here's an example.|\\
+% | \note{Albeit a trivial one.}|\\
+% |And continuing|
+% \end{quote}
+% produces `And here's an example.
+% \unskip\footnote{Albeit a trivial one.}
+% And continuing'.
+%
+% \DescribeEnv{itemise} For non-US writers, it is probably more natural
+% to use |\begin{itemise}| over what \LaTeX\ provides by default.
+%
+% \DescribeMacro{\ctanfile}
+% \changes{v0.4j}{2006/02/09}{Implemented.}
+% \DescribeMacro{\ctanloc}
+% \changes{v0.4j}{2006/02/09}{Implemented.}
+% These commands are used to refer to online locations and documentation within the Comprehensive \TeX\ Archive Network. Usage is as follows:
+% \begin{quote}
+% |\ctanfile{macros/latex/contrib/titlesec/titlesec.pdf}|\\
+% |\ctanloc{macros/latex/contrib/titlesec/}|
+% \end{quote}
+% It will print the input prefixed with `CTAN:' and provide a hyperlink to the location.
+%
+% \subsection{TPJ internal commands}
+%
+% Two commands are to be used at the direction of the Prac\TeX\
+% production team: \cmd\TPJrevision\ and \cmd\TPJissue. These
+% commands typeset information in the header of the first page
+% relating to the revision number (or date) of the article and the
+% issue number of the journal.
+%
+% This document class creates a file \verb+_rev.tex+ in the
+% current directory (if a \cmd\TPJrevision{} statement is present)
+% and reads a file \verb+_iss.tex+, if present. Please keep a
+% separate directory for each article you develop for TPJ.
+%
+% \subsection{Logos}
+%
+% \begingroup
+%
+% \DeclareRobustCommand\TeX{T\kern-.15em\lower.5ex\hbox{E}\kern-.07em X\spacefactor1000\relax}
+% \DeclareRobustCommand\LaTeX{L\kern-.32em\raise.37ex\hbox{\scalebox{0.76}{A}}\kern-.15em\TeX}
+% \DeclareRobustCommand\LaTeXe{\LaTeX2$_{\textstyle\varepsilon}$}
+% \DeclareRobustCommand\BibTeX{B{\textsc i\kern-.025em\textsc b}\kern-.08em\TeX}
+% \DeclareRobustCommand\logofamily{%
+% \not@math@alphabet\logofamily\relax
+% \fontencoding{U}\fontfamily{logo}\selectfont}
+% \def\textlogo#1{{\logofamily#1}}
+% \DeclareRobustCommand\MF{\textlogo{METAFONT}\@}
+% \DeclareRobustCommand\MP{\textlogo{METAPOST}\@}
+% \DeclareRobustCommand\ConTeXt{C\kern-.03em on\-\kern-.10em\TeX\kern-0.04em t}%
+% \DeclareRobustCommand\pdfTeX{pdf\/\TeX}
+% \DeclareRobustCommand\pdfLaTeX{pdf\/\LaTeX}
+% \DeclareRobustCommand\PS{PostScript}
+% \DeclareRobustCommand\PracTeX{Prac\kern-0.07em\TeX}
+% \DeclareRobustCommand\TPJ{The \PracTeX\ Journal}
+% \DeclareRobustCommand\XeTeX{\relax
+% X\lower.5ex\hbox{\kern-.07em\reflectbox{E}}\relax
+% \kern-.15em\TeX}
+% \DeclareRobustCommand\ExTeX{\textrm{\relax
+% \ensuremath{\textstyle\varepsilon\sb{\kern-0.15em\mathcal{X}}}\relax
+% \kern-.15em\TeX}}
+% The following logos and abbreviations are defined for your
+% convenience:
+% \begin{multicols}{2}\everypar{\parindent0pt\parskip0pt}
+% \def\showlogo#1{\@for\@ii:=#1\do{\expandafter\cmd\@ii:\hfill\@ii\endgraf}}
+% \noindent\showlogo{\noexpand\TeX,\LaTeX,\LaTeXe,\BibTeX,\MF,\MP,
+% \ConTeXt,\pdfTeX,\pdfLaTeX,\XeTeX,\ExTeX,\PracTeX,\TPJ,\PS}
+% \end{multicols}
+% \endgroup
+%
+% \StopEventually{\clearpage\PrintChanges\clearpage\PrintIndex}
+%
+% \section{History}
+%
+% The first revision of this class was written by Karl Berry.
+% KB: Gratefully based on the \texttt{dtxtut} skeleton.
+%
+% Revised by Arthur Ogawa, 2004/01/03, to include new features, per
+% Lance Carnes, as follows:
+%
+% \begin{enumerate}
+% \item Define an \cmd\articleID{} macro which typesets the article
+% identification in a block somewhere on the first page of the
+% article, and which can be used to identify the article/revision
+% date for reader comments. E.g. if this appears in the article
+% source file:
+% \begin{verbatim}
+% \author{A.U. Thor}
+% \title{Pracjourn Sample}
+% \TPJissue{TPJ Vol 1 No 1, 2005-1-15}
+% \TPJrevision{2005-2-12}%
+% \TPJcopyright{\textcopyright\ 2005 TeX Users Group}
+% \end{verbatim}
+% it will become a block of text typeset on the first page of the
+% article. See
+% e.g. \href{http://www.ams.org/bull/2004-41-04/S0273-0979-04-01032-8/S0273-0979-04-01032-8.pdf}{this example PDF}.
+%
+% \item Write the information from the argument of the
+% \cmd\articleID{} macro into a file called \verb+_id.tex+. Put
+% this file in the same directory as the source file, and overwrite
+% any previous files of the same name.
+%
+% \item Define a \cmd\TPJcopyright{} macro which will print a
+% copyright notice at the bottom of the first page.
+% E.g. \cmd\TPJcopyright\verb+{2005 TeX Users Group}+ will produce
+% ``\copyright2005 TeX Users Group'' in the page footer of the title
+% page.
+%
+% \item The page measures should work with both Letter and A4 paper
+% sizes.
+% \end{enumerate}
+%
+% Revised again by Will Robertson, mid-2005, to implement some
+% extra things. This snow-balled into the current version, a description
+% of which here would be redundant.
+%
+% \clearpage
+% \section{Implementation}
+%
+% The is fairly poorly documented, and the
+% class has undergone a multitude of small changes over the TPJ issues
+% 2005-4, 2006-1. It should now be fairly stable, and over time it's
+% conceivable (but unlikely) that the descriptions herein will be improved.
+%
+% \subsection{Base class and options}
+%
+% Use \LaTeX's \pkg{article} class, but at a bigger default type size.
+%
+% KB: 12pt seems a little too big, 11pt seems a little too small.
+% Implementing 11.5pt is not obvious.
+%
+% \changes{v0.3}{2004/01/03}{AO: Override the default option list of
+% \pkg{article.cls}}
+%
+% If the document instance calls for options that conflict with the
+% following choices, then the document wins. However our default
+% option list is not the same as those of \pkg{article.cls}.
+% \begin{macrocode}
+\let\ExecuteOptions@ltx\ExecuteOptions
+\def\ExecuteOptions#1{%
+ \ExecuteOptions@ltx{letterpaper,12pt,oneside,onecolumn,final}%
+}%
+\LoadClassWithOptions{article}
+\let\ExecuteOptions\ExecuteOptions@ltx
+% \end{macrocode}
+%
+% \subsection{Metrics}
+%
+% Default leading (from \texttt{classes.dtx}) for 11pt is 13.6pt
+% leading, for 12pt is 14.5pt. We want more---this factor gives us
+% 12pt type on 15.5pt leading.
+% \begin{macrocode}
+\linespread{1.069}
+% \end{macrocode}
+%
+% Change the text width to something that works for both A4 and
+% Letter paper, as well as possible.
+%
+% xx The vertical dimensions need to be changed as well, perhaps
+% for a 9in text height, taking account of the headline and
+% footline.
+% \begin{macrocode}
+\setlength\textwidth{432pt}
+\setlength\oddsidemargin{18pt}% xx depend on letter/a4
+\setlength\evensidemargin{18pt}
+% \end{macrocode}
+%
+% \subsection{Package loading}
+%
+% Palatino, including math (sc option for true small caps, not in TL
+% 2003). Try for \pkg{mathpazo}; if not available use \pkg{palatino}.
+%
+% Enable pdf\TeX's margin kerning, if available, but \emph{not} font expansion,
+% which increases the size and complexity of the resultant PDF. This side-effect
+% may be deemed negligible in the future.
+%
+% \changes{v0.3}{2004/01/03}{AO: rewrite using \cs{IfFileExists} idiom.}
+% \changes{v0.4e}{2005/08/22}{WR: requires the textcomp package}
+% \changes{v0.4g}{2005/11/04}{WR: use \pkg{microtype}, if available}
+% \changes{v0.4l}{2006/08/14}{WR: use LM fonts if available, with T1 encoding}
+%
+% The \pkg{textcomp} package is loaded in order to provide a nice looking copyright logo, amongst other things.
+%
+% \begin{macrocode}
+\IfFileExists{lmodern.sty}{%
+ \RequirePackage{lmodern}
+ \usepackage[T1]{fontenc}}{}
+\IfFileExists{mathpazo.sty}
+ {\RequirePackage[sc]{mathpazo}}
+ {\renewcommand\rmdefault{ppl}}
+\IfFileExists{microtype.sty}{%
+ \RequirePackage[protrusion=true,expansion=false]{microtype}}{}
+\RequirePackage{textcomp}
+% \end{macrocode}
+% \pkg{hyperref} is used for creating live hyperlinks, as well as
+% providing \cmd\url\ for typesetting URLs easily. All hyperlinks
+% are coloured in a dark shade of blue.
+% \begin{macrocode}
+\RequirePackage{color,hyperref,graphicx}
+\definecolor{linkcolour}{rgb}{0,0.2,0.6}
+\hypersetup{colorlinks,breaklinks,
+ linkcolor=linkcolour,citecolor=linkcolour,
+ filecolor=linkcolour, urlcolor=linkcolour}
+% \end{macrocode}
+% \TODO{update this to use the successor to the switcheml package}
+% If the \pkg{switcheml} package is installed in the author's
+% system, use it to obfuscate their email address by default. Otherwise, just
+% use a hyperlink. The commands to do this are defined in a later section.
+%
+%
+% An author may specify \cmd\hyperlinkemail\ explicitly
+% should they not care to obfuscate their email address even with the \pkg{switcheml}
+% package installed.
+% \begin{macrocode}
+\IfFileExists{switcheml.sty}
+ {\RequirePackage{switcheml}
+ \AtBeginDocument{\@ifx@undefined{\typesetemail}{\obfuscateemail}{}}}
+ {\AtBeginDocument{\@ifx@undefined{\typesetemail}{\hyperlinkemail}{}}}
+% \end{macrocode}
+%
+%
+% \subsection{Amendments from \pkg{article}}
+%
+% \begin{macro}{\maketitle}
+% Printing the date of the last \TeX\ run in the title block does
+% not seem warranted---if someone reprocesses the document with no
+% changes, we wouldn't want the date to change.
+%
+% xx use rcs.sty or something?
+%
+% xx include bibtex id?
+%
+% \changes{v0.3}{2004/01/03}{AO: reproduce entire definition from
+% \texttt{article.cls}, with modifications.}
+% \changes{v0.3}{2004/01/03}{AO: \cmd\thispagestyle{titlepage}. Do
+% not empty out \cmd\@author, \cmd\@title, etc.}
+% \changes{v0.4b}{2005/06/26}{WR: removed some twocolumn conditional code.}
+% \changes{v0.4b}{2005/06/26}{WR: added check for an abstract}
+% \begin{macrocode}
+\renewcommand\maketitle{\par
+ \iftpj@noabstract\else
+ \@ifx@undefined{\tpj@info@\string\abstract}
+ {\ClassError{pracjourn}
+ {Please specify an \string\abstract\space before \string\maketitle}
+ {It is a PracTeX Journal requirement to include an abstract. \MessageBreak
+ \MessageBreak
+ If you have exceptional reasons for not having one in this \MessageBreak
+ article, write \string\noabstract\space somewhere before \string\maketitle.}}{}
+ \fi
+ \begingroup
+ \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+ \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
+ \long\def\@makefntext##1{\parindent 1em\noindent
+ \hb@xt@1.8em{%
+ \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
+ \newpage
+ \global\@topnum\z@ % Prevents figures from going at top of page.
+ \@maketitle
+ \thispagestyle{titlepage}\@thanks
+ \endgroup
+ \setcounter{footnote}{0}%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+ \global\let\@maketitle\relax
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\and\relax
+}%
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\@maketitle}
+%
+% \changes{v0.4a}{2005/06/13}{WR: various changes to accommodate extras.}
+% \begin{macrocode}
+\def\@maketitle{%
+ \newpage
+ \null
+ \write@ID@aux\read@issue
+ \begin{flushleft}
+ \let\footnote\thanks
+ \begingroup\LARGE \@title \par\endgroup
+ \vspace{2ex}%
+ \begingroup\large \@author \par\endgroup
+ \end{flushleft}
+% \end{macrocode}
+% This is where the extra author information is typeset. As various
+% pieces of information are defined, they fill up the \cmd{\tpj@optional@author@info}
+% macro, which is subsequently used here as per the definition of the author.
+% \begin{macrocode}
+ \tpj@optional@author@info
+ \iftpj@noabstract\else
+ \vspace{2ex}%
+ \tpj@info@container{\abstractname}{\abstract}
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsubsection{Formatting changes}
+% \begin{macro}{\section}
+% \begin{macro}{\subsection}
+% \begin{macro}{\subsubsection}
+% \begin{macro}{\paragraph}
+% \begin{macro}{\subparagraph}
+% Remove bold from the all the section headings, just for something a
+% little different. This is verbatim from \texttt{article.cls} with a
+% bunch of \cmd\bfseries's omitted. \TODO{just use titlesec instead}
+% \begin{macrocode}
+\renewcommand\section{\@startsection {section}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\normalfont\Large\raggedright}}
+\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\large\raggedright}}
+\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\normalsize\raggedright}}
+\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
+ {3.25ex \@plus1ex \@minus.2ex}%
+ {-1em}%
+ {\normalfont\normalsize\itshape}}
+\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
+ {3.25ex \@plus1ex \@minus .2ex}%
+ {-1em}%
+ {\normalfont\normalsize\itshape}}
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}\end{macro}
+% \changes{v0.4i}{2006/01/19}{Added \cs{raggedright} to section headings.}
+% \end{macro}
+%
+% \paragraph{Lists}
+% \begin{environment}{itemize}
+% \begin{environment}{enumerate}
+% \begin{environment}{description}
+% \TODO{just use enumitem instead}
+% Decrease the amount of vertical space between items in the list environments. To do this, save the old environment macros under new names, and then change the `real' environments to call the originals plus some space-adjusting parameters.
+%
+%
+% Note that description lists shouldn't contain more than on paragraph.
+% \begin{macrocode}
+\let\tpj@itemize\itemize
+\let\tpj@enditemize\enditemize
+\let\tpj@enum\enumerate
+\let\tpj@endenum\endenumerate
+\let\tpj@desc\description
+\let\tpj@enddesc\enddescription
+\renewenvironment{itemize}
+ {\tpj@itemize\parskip0pt}{\tpj@enditemize}
+\renewenvironment{enumerate}
+ {\tpj@enum\parskip0pt}{\tpj@endenum}
+\renewenvironment{description}
+ {\tpj@desc\parskip0pt\parindent1.8em}{\tpj@enddesc}
+% \end{macrocode}
+% \changes{v0.4g}{2006/01/05}{Space removed between list items.}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \begin{environment}{itemise}
+% Provide an environment with the correct spelling of `itemize'.
+% \begin{macrocode}
+\let\itemise\itemize
+\let\enditemise\enditemize
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\labelitemi(...)}
+% Get rid of the nasty blob that is the \cmd\textbullet, and replace
+% it with more unobtrusive dashes.
+% \begin{macrocode}
+\renewcommand\labelitemi{\normalfont\bfseries\textendash}
+\renewcommand\labelitemii{\normalfont\bfseries\textperiodcentered}
+% \end{macrocode}
+% \changes{v0.4g}{2006/01/05}{Itemise bullets changed.}
+% \end{macro}
+%
+% \begin{macro}{\descriptionlabel}
+% Change the description label to italics instead of bold.
+% \begin{macrocode}
+\renewcommand*\descriptionlabel[1]{\hspace\labelsep
+ \normalfont\itshape #1}
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Footnotes}
+% Here we change the footnote formatting a little bit from the default.
+% \begin{macro}{\@makefntext}
+% Make the footnote number at the bottom of the page not a superscript (recommended by Bringhurst, if you're curious---the superscript is there originally to get the number out of the way, but that's no longer needed when you're labelling the note with the number).
+% \begin{macrocode}
+\def\@makefntext#1{%
+ \parindent 0em\relax
+ \makebox[1.5em][l]{\normalfont\footnotesize\@thefnmark.}#1}
+% \end{macrocode}
+% \changes{v0.4f}{2005/10/06}{WR: Removed the footnote superscript.}
+% \changes{v0.4g}{2005/11/01}{WR: Added a period after the footnote number.}
+% \changes{v0.4l}{2006/08/05}{WR: Fixed number \& text size difference. Oops. Removed \cmd\strut\ to allow \textsf{bigfoot} compatibility.}
+% \end{macro}
+%
+% \subsection{TPJ additions}
+%
+% \subsubsection{Boolean logic}
+%
+% \begin{macro}{\@ifx@empty}
+% \begin{macro}{\@ifx@undefined}
+% \begin{macro}{\@ifeof}
+% The following three procedures implement part of the boolean logic
+% facility, an expansion-only calculating engine.
+% \begin{macrocode}
+\def\@ifx@empty#1{% Implicit #2#3
+ \ifx#1\@empty
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}%
+\def\@ifx@undefined#1{% Implicit #2#3
+ \ifx#1\@undefined
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}%
+\def\@ifeof#1{% Implicit #2#3
+ \ifeof#1
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi}%
+\def\boolean@true#1{\let#1\@firstoftwo}%
+\def\boolean@false#1{\let#1\@secondoftwo}%
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsubsection{Titlepage pagestyle}
+%
+% \begin{macro}{\ps@titlepage}
+% The \cmd{\ps@titlepage} procedure effects a page style
+% called \texttt{titlepage}, which applies only to the title page.
+% The \cmd{\titlepage@head} procedure sets type in the page header,
+% \cmd{\titlepage@foot} in the page footer.
+%
+% \changes{v0.3}{2004/01/03}{AO: add page header and footer to title page}
+% \begin{macrocode}
+\def\ps@titlepage{%
+ \def\@oddhead{\titlepage@head\hfil}%
+ \let\@evenhead\@oddhead
+ \def\@oddfoot{\hfil\titlepage@foot}%
+ \let\@evenfoot\@oddfoot}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\titlepage@head}
+%
+% This is the text block before the article title. Changes depending
+% on the production stage.
+%
+% \changes{v0.4b}{2005/06/26}{WR: More conditional text.}
+% \changes{v0.4b}{2005/06/26}{WR: Added hyperref link to email article
+% comments for both reviewers and readers.}
+% \changes{v0.4c}{2005/06/27}{WR: Tweaked conditionals; revision date is important even after publication!}
+% \changes{v0.4c}{2005/06/27}{WR: Added error check for \cmd\TPJrevision\ defined without \cmd\TPJissue.}
+% \changes{v0.4d}{2005/07/17}{WR: Make the header \cmd\small.}
+% \changes{v0.4e}{2005/07/17}{WR: Removed email comments links.}
+% \changes{v0.4k}{2006/02/20}{WR: Simplified \& made smaller.}
+% \begin{macrocode}
+\def\titlepage@head{\footnotesize
+ \parbox{\linewidth}{%
+ \@ifx@empty\@TPJissue{For submission to \TPJ}{\@TPJissue}\par
+ \@ifx@empty\@TPJissue
+ {\@ifx@empty\@TPJrevision{Draft of \today}{Article revision \@TPJrevision}}%
+ {\@ifx@empty\@TPJrevision
+ {\ClassError{pracjourn}
+ {\string\TPJrevision\space must be defined if
+ \string\TPJissue\space is also}
+ {It is a requirement for PracTeX Journal articles to contain\MessageBreak
+ revision information for version tracking. Please input this\MessageBreak
+ information, or omit \protect\TPJissue.}}
+ {Article revision \@TPJrevision}}}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\titlepage@foot}
+% To typeset the optional copyright declaration by the author.
+%
+% \changes{v0.4d}{2005/07/17}{WR: Removed \cmd\copyright\ from the copyright
+% notice and put the whole thing in a lowered \cmd\vbox\ to allow multi-line declarations.}
+% \changes{v0.4k}{2006/02/20}{WR: Made smaller.}
+% \begin{macrocode}
+\def\titlepage@foot{%
+ \vtop{\raggedleft\footnotesize\@TPJcopyright}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+% Better float parameters: (from the TeX FAQ)
+\renewcommand{\topfraction}{.85}
+\renewcommand{\bottomfraction}{.7}
+\renewcommand{\textfraction}{.15}
+\renewcommand{\floatpagefraction}{.66}
+\renewcommand{\dbltopfraction}{.66}
+\renewcommand{\dblfloatpagefraction}{.66}
+\setcounter{topnumber}{9}
+\setcounter{bottomnumber}{9}
+\setcounter{totalnumber}{20}
+\setcounter{dbltopnumber}{9}
+% \end{macrocode}
+%
+% \subsubsection{Additional author/article information}
+%
+% \begin{macro}{\addinfo}
+%
+% This command defines a new block of information to be typeset
+% in the title block of the document. For every new item, a new
+% \cmd{\tpj@info@container} is appended to \cmd{\tpj@optional@author@info}, which
+% is called in \cmd{\@maketitle}.
+%
+% \begin{macrocode}
+\newcommand\addinfo[2][]{%
+ \def\@tempa{\new@addinfo{#1}{#2}}%
+ \lowercase{\expandafter\@tempa\expandafter{\csname#2\endcsname}}}
+\newcommand\new@addinfo[3]{%
+ \tpj@define@info@block{#3}%
+ \expandafter\newcommand
+ \csname\expandafter\@gobble\string#3name\endcsname{#2}%
+ \g@addto@macro\tpj@optional@author@info{%
+ \tpj@info@container[#1]{\csname\expandafter\@gobble\string#3name\endcsname}{#3}}}
+% \end{macrocode}
+% \changes{v0.4d}{2005/07/30}{WR: Name change to user-space.}
+% \end{macro}
+%
+% \begin{macro}{\newinfo}
+% E.g., |\newinfo\resume[\resfont]{R\'esum\'e}|
+% \begin{macrocode}
+\newcommand\newinfo[1]{%
+ \@ifnextchar[{\@newinfo{#1}}{\@newinfo{#1}[]}}
+\def\@newinfo#1[#2]#3{%
+ \tpj@define@info@block{#1}%
+ \expandafter\newcommand
+ \csname\expandafter\@gobble\string#1name\endcsname{#3}%
+ \g@addto@macro\tpj@optional@author@info{%
+ \tpj@info@container[#2]{%
+ \csname\expandafter\@gobble\string#1name\endcsname}{#1}}}
+% \end{macrocode}
+% \changes{v0.4n}{2007/08/13}{WR: A better \cmd\addinfo}
+% \end{macro}
+%
+% \begin{macro}{\addinfospace}
+% Adds some space after the previous item in the frontmatter.
+% \begin{macrocode}
+\newcommand\addinfospace[1]{\g@addto@macro\tpj@optional@author@info{\vspace{#1}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tpj@define@info@block}
+% \changes{v0.4a}{2005/06/13}{WR: Implemented for new \cmd{\@maketitle}.}
+% This macro actually does the work of \cmd\addinfo.
+% It takes the name of a piece of info to be typeset in the
+% title block of the article.
+%
+% This is much easier (but uglier, in hindsight |:(| ) than
+% |\begin{abstract}...\end{abstract}| contortions
+% (cf. \texttt{ltugboat.cls}).
+% \begin{macrocode}
+\newcommand\tpj@define@info@block[1]{%
+ \newcommand#1[1]{\expandafter\def\csname tpj@info@\string#1\endcsname{##1}}}
+% \end{macrocode}
+% \changes{v0.4n}{2007/08/13}{Change for better info blocks}
+% \end{macro}
+%
+% \begin{macro}{\clearinfo}
+% If the \cmd{\tpj@optional@author@info} macro needs to be cleared for some reason,\footnotemark
+% the \cmd\clearinfo\ command will come quite in handy. This command is also used to
+% initialise the macro in question.
+% \footnotetext{The only reason I can think of to do this is to re-arrange the order of
+% the items in the title block of the article.}
+% \changes{v0.4d}{2005/07/30}{WR: Implemented to allow for re-definition of standard information blocks.}
+% \begin{macrocode}
+\newcommand\clearinfo{\let\tpj@optional@author@info\@empty}
+\clearinfo
+% \end{macrocode}
+% \end{macro}
+%
+% \paragraph{Optional fields}
+%
+% These are the default information blocks.
+% \cmd\typesetemail\ is defined by one of either \cmd\hyperlinkemail\ or \cmd\obfuscateemail.
+%
+% \begin{macrocode}
+\addinfo[\typesetemail]{Email}
+\addinfo[\url]{Website}
+\addinfo[\linespread{0.9}\selectfont]{Address}
+% \end{macrocode}
+%
+% \paragraph{Abstract} We bypass \cmd\addinfo\
+% so that the abstract info block is not added
+% to the \cmd{\tpj@optional@author@info} macro.
+%
+% The abstract block itself is called directly in \cmd{\@maketitle}.
+%
+% \begin{macrocode}
+\let\abstract\relax
+\tpj@define@info@block\abstract
+\def\abstractname{Abstract}
+% \end{macrocode}
+%
+% \begin{macro}{\noabstract}
+% However, the abstract may indeed be suppressed if that is the author's wish.
+% \changes{v0.4d}{2005/07/25}{WR: Implemented to turn off the abstract.}
+% \begin{macrocode}
+\newif\iftpj@noabstract
+\newcommand\noabstract{\tpj@noabstracttrue}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\endabstract}
+% If an abstract environment is used, give an error. Maybe I should
+% just support the environment, instead.
+% \begin{macrocode}
+\def\endabstract{%
+ \ClassError{pracjourn}
+ {Please input the abstract with \string\abstract{...}, before \string\begin{document}}
+ {Instead of the \string\begin{abstract}...\string\end{abstract} \MessageBreak
+ environment, use \string\abstract{...}. Paragraphs are allowed!\MessageBreak
+ \MessageBreak
+ Because the abstract is typeset with the title block, \MessageBreak
+ it must be input before the \string\begin{document}\space command.}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\TPJissue}
+% \changes{v0.4k}{2006/02/20}{WR: More user-friendly.}
+% \begin{macro}{\TPJrevision}
+% \changes{v0.4k}{2006/02/20}{WR: More user-friendly.}
+% \begin{macro}{\TPJcopyright}
+%
+% \changes{v0.3}{2004/01/03}{AO: add commands specifying issue,
+% revision, copyright.}
+%
+% The three user-level commands
+% \cmd\TPJissue, \cmd\TPJrevision, and \cmd\TPJcopyright{} specify
+% the issue, the revision, and the copyright information of the
+% document.
+%
+% Since these commands are like \cmd\author{} and \cmd\title, one
+% might wish to disable them upon executing the \cmd\titlepage{}
+% procedure. But we do not.
+%
+% If the document has a \cmd\TPJrevision{} statement, the title page
+% header contains words to that effect, otherwise it bears the current
+% date.
+%
+% If the document lacks a \cmd\TPJcopyright{} statement, the title
+% page footer contains nothing.
+% \begin{macrocode}
+\newcommand{\TPJissue}[2]{\gdef\@TPJissue{\TPJ, #1, No.\,#2}}%
+\newcommand{\TPJrevision}[3]{\gdef\@TPJrevision{#1/#2/#3}}%
+\newcommand{\TPJcopyright}[1]{\gdef\@TPJcopyright{#1}}%
+\let\@TPJissue\@empty
+\let\@TPJrevision\@empty
+\let\@TPJcopyright\@empty
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\license}
+%
+% For consistency with the other user commands of this class, \cmd\license\
+% is defined as an alias of \cmd\TPJcopyright.
+%
+% \changes{v0.4d}{2005/07/30}{WR: name change from \cmd\TPJcopyright\
+% for consistency with other commands.}
+%
+% \begin{macrocode}
+\let\license\TPJcopyright
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\tpj@info@container}
+% This is the macro that typesets the optional author info for
+% fields defined as above. It splits it all up in minipages, in a
+% smaller font and with more compressed leading than the main
+% document text.\footnote{\LaTeX's \cmd\@hangfrom\ (or whatever it is) could well
+% have been much easier.} It takes the name of the info as a mandatory
+% argument, which is used to typeset the info label as well as
+% retrieve the actual data from the |\tpj@info@#3| macro (see
+% \cmd{\addinfo}).
+%
+% An optional argument is used as a hook to typeset the info data in
+% the equivalent form |#1{#2}|.
+%
+% For example, to typeset the info defined by the author in the
+% \cmd\abstract\ (recall, this is set up due to a corresponding
+% |\addinfo{Abstract}{\abstract}|---see above), input
+% |\tpj@info@container{Abstract}|. To typeset it, say, in italics,
+% it would be possible to write
+% |\tpj@info@container[\textit]{Abstract}|.
+%
+% \changes{v0.4a}{2005/06/13}{WR: Implemented for new \cmd\@maketitle.}
+% \changes{v0.4d}{2005/06/29}{WR: Warn if a title block command is used after \cmd\maketitle.}
+%
+% \begin{macrocode}
+\newcommand\tpj@info@container[3][]{%
+% \end{macrocode}
+% After \cmd\maketitle, redefine the info command to return an error.
+% \begin{macrocode}
+ \gdef#3{\ClassError{pracjourn}{#2 must be defined BEFORE \string\maketitle}{}}
+% \end{macrocode}
+% Now, we typeset the info block, but only if the info has actually been specified by the author.
+% \begin{macrocode}
+ \expandafter\ifx\csname tpj@info@\string#3\endcsname\relax\else
+ \noindent\small
+% \end{macrocode}
+% On the left, right-aligned sans serif item label, e.g., `Abstract':
+% \begin{macrocode}
+ \begin{minipage}[t]{0.15\textwidth}
+ \noindent\hfill\sffamily#2
+ \end{minipage}\hfill
+% \end{macrocode}
+% On the right, the content, defined by, e.g., \cmd\abstract:
+% \begin{macrocode}
+ \begin{minipage}[t]{0.825\textwidth}
+ \linespread{1.0}\selectfont
+ \setlength\parindent{1.5em}%
+ \noindent\ignorespaces
+ \expandafter#1\expandafter{\csname tpj@info@\string#3\endcsname}
+ \end{minipage}\par
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Email \& hyperlink macros}
+%
+% \begin{macro}{\typesetemail}
+%
+% We define the macro \cmd\typesetemail\ to be used for self-explanatory purposes.
+% The class contains methods to define it in one of two ways.
+%
+% \begin{macro}{\hyperlinkemail}
+%
+% The \cmd\hyperlinkemail\ command defines \cmd\typesetemail\ to use the \pkg{hyperref}
+% package's facilities to create a hyperlink email address in the output document.
+%
+% \begin{macro}{\obfuscateemail}
+%
+% The \cmd\obfuscateemail\ command defines \cmd\typesetemail\ to use the \pkg{switcheml}
+% package's facilities to create a machine-obfuscated email address in the output
+% document.\footnote{The \pkg{switcheml} package defines, among a couple of other things, a macro for
+% typesetting email addresses that obfuscates their representation in the PDF file,
+% ensuring protection against harvesting email addresses from web-public
+% PDF documents.}
+%
+% \begin{macrocode}
+\newcommand\obfuscateemail{%
+ \def\typesetemail##1{\ttfamily\switchemail{##1}}}
+\newcommand\hyperlinkemail{%
+ \def\typesetemail##1{\ttfamily\tpj@compose@mailto{##1}{Re: PracTeX Journal article}{##1}}}
+% \end{macrocode}
+% \end{macro}\end{macro}\end{macro}
+%
+% \begin{macro}{\tpj@compose@mailto}
+%
+% This macro takes three arguments to typeset a mailto email
+% hyperlink. The |#1| takes the email address, |#2| takes the
+% default subject of the email, and |#3| is the text to appear in
+% the output as the hyperlink.
+%
+% All spaces in the hyperlink source are converted to |%20| to
+% accommodate Mac~OS~X's PDF reader; this isn't necessary for Adobe
+% Reader. Oh well.
+%
+% \changes{v0.4b}{2005/06/26}{WR: Implemented; creates a workable mailto
+% hyperlink.}
+%
+% \begin{macrocode}
+\newcommand\tpj@compose@mailto[3]{%
+ \edef\@tempa{mailto:#1?subject=#2 }%
+ \edef\@tempb{\expandafter\html@spaces\@tempa\@empty}%
+ \href{\@tempb}{#3}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\html@spaces}
+% \changes{v0.4b}{2005/06/25}{WR: Implemented to overcome the mailto
+% problems in Mac~OS~X's PDF reader.}
+
+% This macro takes a string and (hopefully) converts all spaces (or
+% is it all whitespace?) to `\%20', creating a string that can be
+% used for encoding the subject of the email comments hyperlink in
+% \cmd{\titlepage@head}. Using \cmd\catcode, we remove the comment
+% ability of the \verb|%| character, making it a normal letter.
+% (This code was heavily influenced by the \LaTeX\ kernel's
+% \cmd{\zap@space} command.)
+% \begin{macrocode}
+\catcode`\%=11
+\def\html@spaces#1 #2{#1%20\ifx#2\@empty\else\expandafter\html@spaces\fi#2}
+\catcode`\%=14
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{User commands}
+%
+% \begin{macro}{\note}
+% \begin{macro}{\dash}
+% \begin{macro}{\ctanfile}
+% \begin{macro}{\ctanloc}
+% Fairly straightforward.
+% \begin{macrocode}
+\newcommand\note[1]{\unskip\footnote{#1}}
+\DeclareRobustCommand\dash{%
+ \unskip\nobreak\thinspace\textemdash\thinspace\ignorespaces}
+\pdfstringdefDisableCommands{\renewcommand{\dash}{ - }}
+\newcommand\ctanfile[1]{%
+ \href{http://www.ctan.org/get?fn=/#1}
+ {\path{CTAN:#1}}}
+\newcommand\ctanloc[1]{%
+ \href{http://www.ctan.org/tex-archive/#1}
+ {\path{CTAN:#1}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsubsection{Logos}
+%
+% \begin{macro}{\tpf@deflogo}
+% Wrapper for both \cmd\DeclareRobustCommand\ and \cmd\pdfstringdefDisableCommand.
+% \begin{macrocode}
+\newcommand\tpj@deflogo{\@dblarg\tpj@@deflogo}
+\newcommand\tpj@@deflogo[3][\@nil]{%
+ \expandafter\DeclareRobustCommand\csname#2\endcsname{#3}%
+ \pdfstringdefDisableCommands{%
+ \expandafter\def\csname#2\endcsname{#1}}}
+% \end{macrocode}
+% \changes{v0.4m}{2006/11/19}{WR: Implemented to improve logo/hyperref handling.}
+% \end{macro}
+%
+% \changes{v0.4a}{2005/06/05}{WR: Incorporated code from \pkg{texnames}
+% and \pkg{mflogo}.}
+%
+% The \pkg{texnames} and \pkg{mflogo} packages have been incorporated
+% into the class in order to remove the dependence on external
+% packages and to tune the logos for Palatino. First, here are the
+% relevant parts\footnote{No-one still refers to AMSTeX and SLITeX and
+% so on, right?} of \texttt{texnames.sty}, v1.10, tuned for Palatino
+% and adapted to use \cs{textsc} where appropriate:
+% \begin{macrocode}
+\tpj@deflogo{TeX}{T\kern-.15em\lower.5ex\hbox{E}\kern-.07em X\spacefactor1000\relax}
+\tpj@deflogo{LaTeX}{L\kern-.32em\raise.37ex\hbox{\scalebox{0.76}{A}}\kern-.15em\TeX}
+\tpj@deflogo{LaTeXe}{\LaTeX2$_{\textstyle\varepsilon}$}
+\tpj@deflogo{BibTeX}{B{\textsc i\kern-.025em\textsc b}\kern-.08em\TeX}
+% \end{macrocode}
+% And now \texttt{mflogo.sty}, unchanged in its entirety:
+% \begin{macrocode}
+\DeclareRobustCommand\logofamily{%
+ \not@math@alphabet\logofamily\relax
+ \fontencoding{U}\fontfamily{logo}\selectfont}
+\DeclareTextFontCommand{\textlogo}{\logofamily}
+\tpj@deflogo[MetaFont]{MF}{\textlogo{META}\@dischyph\textlogo{FONT}\@}
+\tpj@deflogo[MetaPost]{MP}{\textlogo{META}\@dischyph\textlogo{POST}\@}
+% \end{macrocode}
+% Now some new definitions. Despite the fact that it makes no
+% difference with the main font used for this class, I define
+% \cs{pdfTeX} with some italic correction to set a good
+% precedent. Compare Computer Modern with and without:
+% {\usefont{OT1}{cmr}{m}{n}pdf\/\TeX}
+% vs.~{\usefont{OT1}{cmr}{m}{n}pdf\TeX}; I find the former more
+% attractive because the ascender of the `f' doesn't collide.
+% \begin{macrocode}
+\tpj@deflogo{ConTeXt}{C\kern-.03em on\-\kern-.10em\TeX\kern-0.04em t}%
+\tpj@deflogo{pdfTeX}{pdf\/\TeX}
+\tpj@deflogo{pdfLaTeX}{pdf\/\LaTeX}
+\newcommand\PS{PostScript}
+\tpj@deflogo{PracTeX}{Prac\kern-0.07em\TeX}
+\newcommand\TPJ{The \PracTeX\ Journal}
+\tpj@deflogo{XeTeX}{%
+ X\lower.5ex\hbox{\kern-.07em\reflectbox{E}}%
+ \kern-.15em\TeX}
+\tpj@deflogo{ExTeX}{\textrm{\relax
+ \ensuremath{\textstyle\varepsilon_{\kern-0.15em\mathcal{X}}}\relax
+ \kern-.15em\TeX}}
+% \end{macrocode}
+% \changes{v0.4j}{2006/02/09}{Added \cmd\XeTeX\ logo.}
+% \changes{v0.4k}{2006/02/09}{Added \cmd\ExTeX\ logo.}
+%
+% \subsubsection{Version tracking}
+%
+% \begin{macro}{\write@ID@aux}
+% \changes{v0.3}{2004/01/03}{AO: add ID file}
+% Establish an auxiliary file, \verb+_id.tex+, for TPJ tracking information.
+%
+% \begin{macrocode}
+\def\write@ID@aux{%
+ \@ifx@empty\@TPJrevision{}{%
+ \begingroup
+ \let\thanks\@gobble
+ \immediate\openout\ID@aux _rev.tex
+% \immediate\write\ID@aux{\@percentchar\space
+% This file generated by the pracjourn document class}%
+ \immediate\write\ID@aux{\@TPJrevision}%
+ \immediate\closeout\ID@aux
+ \endgroup
+ }%
+}%
+\newwrite\ID@aux
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\read@iss@aux}
+% \begin{macrocode}
+\def\read@issue{%
+ \openin\@inputcheck _iss.tex
+ \@ifeof\@inputcheck{}
+ {\ifx\@TPJissue\@empty\else
+ \typeout{---------^^J
+ pracjourn: \protect\TPJissue\space info overwritten due to _iss.tex file^^J
+ ---------}
+ \fi
+ \read\@inputcheck to\@TPJissue
+ \closein\@inputcheck
+ \expandafter\parse@iss\@TPJissue\@nil}}
+% \end{macrocode}
+% \changes{v0.3}{2004/01/03}{AO: read the "issue" file.}
+% \changes{v0.4i}{2006/02/02}{WR: {\ttfamily\char`\_iss.tex} behaviour finally sorted out.}
+% \end{macro}
+%
+% \begin{macro}{\parse@iss}
+% \changes{v0.4k}{2006/02/20}{WR: Implemented for better article headers.}
+% \begin{macrocode}
+\def\parse@iss TPJ #1 No #2, #3-#4-#5\@nil{%
+ \@tempcnta#2\relax
+ \protected@xdef\@TPJissue{\TPJ, #1, No.\,\the\@tempcnta}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Miscellaneous}
+%
+% \begin{macro}{\set@pdfpage}
+% \changes{v0.3}{2004/01/03}{AO: add commands setting pdftex's page
+% metrics from LaTeX's}
+%
+% The PDF\TeX{} parameters \cmd\pdfpagewidth\ and
+% \cmd\pdfpageheight\ determine the
+% CropBox/BleedBox/TrimBox/ArtBox. The procedure \cmd\setpdfpage{}
+% sets them to the values of the \LaTeX{} \cmd\paperwidth{} and
+% \cmd\paperheight. If PDF\TeX{} is not the engine, nothing is
+% done.
+%
+% We arrange for the procedure to be executed at Begin Document
+% time.
+% \begin{macrocode}
+\def\set@pdfpage{%
+ \@ifx@undefined\pdfoutput{}{%
+ \pdfpagewidth =\paperwidth
+ \pdfpageheight=\paperheight
+ \relax}}
+\AtBeginDocument{\set@pdfpage}
+% \end{macrocode}
+% \end{macro}
+%
+% \makeatother
+% \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 \~}
+%
+% \Finale
+\endinput
diff --git a/macros/latex/contrib/pracjourn/pracjourn.ins b/macros/latex/contrib/pracjourn/pracjourn.ins
new file mode 100644
index 0000000000..4fa932030c
--- /dev/null
+++ b/macros/latex/contrib/pracjourn/pracjourn.ins
@@ -0,0 +1,45 @@
+%% This file will generate documentation and runtime files
+%% from pracjourn.dtx when run through LaTeX or TeX.
+%% See copyright notice below.
+\input docstrip
+\keepsilent
+\usedir{tex/latex/pracjourn}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2004 TeX Users Group.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+\endpreamble
+\askforoverwritefalse
+\generate{%
+ \file{pracjourn.cls}{\from{pracjourn.dtx}{class}}%
+}%
+
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation, please move}
+\Msg{* \space\space pracjourn.cls}
+\Msg{* into a directory searched by TeX.}
+\Msg{*}
+\Msg{* To produce the documentation, run pracjourn.dtx through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{***********************************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/pracjourn/pracjourn.pdf b/macros/latex/contrib/pracjourn/pracjourn.pdf
new file mode 100644
index 0000000000..aae58c7537
--- /dev/null
+++ b/macros/latex/contrib/pracjourn/pracjourn.pdf
Binary files differ