% \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} % %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesClass{pracjourn} %<*class> [2007/08/25 v0.4n PracTeX Journal 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} % % % \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