%                          CRL Extensions to LaTeX
%
\typeout{CRDS Extensions to LaTeX,  V1.1.  (RL Aurbach, 09-Sep-1986)}
%
%****************************************************************************
%*                                                                          *
%*			    Outline Environment				    *
%*									    *
%* Description:								    *
%*	The outline environment is a modified enumerate environment in	    *
%*	which the numbering is done using standard outlining conventions.   *
%*									    *
%* Syntax:                                                                  *
%*	\begin{outline}	    \item text	\end{outline}			    *
%*									    *
%****************************************************************************
%
\@definecounter{outlni} \@definecounter{outlnii} \@definecounter{outlniii}
\@definecounter{outlniv} \@definecounter{outlnv}
\newcount\@outlndepth  \@outlndepth =0
\def\outline{\ifnum \@outlndepth >4 \@toodeep \else \advance\@outlndepth\@ne
  \edef\@outlnctr{outln\romannumeral\the\@outlndepth}\list
  {\csname label\@outlnctr\endcsname}{\usecounter{\@outlnctr}
  \def\makelabel##1{\hss\llap{##1}}}\fi}
\let\endoutline =\endlist
\def\labeloutlni{\Roman{outlni}.}       \def\theoutlni{\Roman{outlni}}
\def\labeloutlnii{\Alph{outlnii}.}      \def\theoutlnii{\Alph{outlnii}}
\def\labeloutlniii{\arabic{outlniii}.}  \def\theoutlniii{\arabic{outlniii}}
\def\labeloutlniv{\alph{outlniv}.}      \def\theoutlniv{\alph{outlniv}}
\def\labeloutlnv{(\roman{outlnv})}      \def\theoutlnv{\roman{outlnv}}
\def\p@outlnii{\theoutlni.}             \def\p@outlniii{\p@outlnii\theoutlnii.}
\def\p@outlniv{\p@outlniii\theoutlniii.}\def\p@outlnv{\p@outlniv\theoutlniv.}
%
%****************************************************************************
%*                                                                          *
%*			    InfoMap Environment				    *
%*									    *
%* Description:								    *
%*	The infomap environment is a modified description environment in    *
%*	which the label is set off from the text as a signpost.  The	    *
%*	signpost is implemented in a \parbox to allow for a multi-line	    *
%*	label.								    *
%*									    *
%* Syntax:                                                                  *
%*	\begin{infomap}  \item[label] text  \end{infomap}		    *
%*									    *
%* Where:								    *
%*	label	is the text to be placed in the Signpost at the current	    *
%*		left margin.						    *
%*									    *
%* Note:								    *
%*	The signpost is implemented as a \parbox set in a \raisebox which   *
%*	has a depth of 0pt.  This is necessary to make a multi-line sign-   *
%*	work correctly, but occasionally, you will need to add extra	    *
%*	vertical space if the signpost occupies more lines than the text.   *
%*									    *
%****************************************************************************
%
\newdimen\infomapmargin
\newdimen\infomapwidth
\infomapmargin 115pt
\infomapwidth 103pt
\def\infomaplabel#1{\raisebox{0pt}[1em][0pt]{\makebox[\labelwidth][l]
    {\parbox[t]{\infomapwidth}{\bf #1}}}}
\def\infomap{\list{}{\leftmargin\infomapmargin
    \labelwidth\leftmargin\advance\labelwidth-\labelsep
    \let\makelabel\infomaplabel}}
\let\endinfomap\endlist
\def\ttitem[#1]{\item[{\tt #1}]}
%
%****************************************************************************
%*                                                                          *
%*			    Note Environment				    *
%*									    *
%* Description:								    *
%*	The note environment is a modified version of the quote environment.*
%*	It is distinctive in that it has a centered title for the note	    *
%*	prior to the beginning of the text.  The title may be specified,    *
%*	using the optional argument.  If no title is specified, the title   *
%*	"Note" is used.							    *
%*									    *
%* Syntax:                                                                  *
%*	\begin{note}[title]  text  \end{note}				    *
%*									    *
%* Where:								    *
%*	title	    is the text to be used as the title.  If not specified  *
%*		    "Note" is used.  The title is centered above the text,  *
%*		    in boldface.					    *
%*									    *
%* Note:								    *
%*	It is possible for the title and text of a note to be separated	    *
%*	across a page break.  So far, I haven't been able to discover a	    *
%*	fool-proof way to prevent this from occurring, so check the output. *
%*									    *
%****************************************************************************
%
\def\note{\@ifnextchar [{\@note}{\@note[Note]}}
\def\@note[#1]{\par \list{}{\leftmargin 2em \rightmargin\leftmargin }
    \item[] \hfil {\bf #1} \hfil \par \item[]}
\let\endnote\endlist
%
%****************************************************************************
%*                                                                          *
%*			    Ctl Command					    *
%*									    *
%* Description:								    *
%*	The \ctl command is used to place a representation of a control	    *
%*	character in the document.  \ctl{x} is represented as ^x.	    *
%*									    *
%* Syntax:                                                                  *
%*	\ctl{ch}							    *
%*									    *
%* Where:								    *
%*	ch	is the character to be represented.			    *
%*									    *
%* Note:								    *
%*	The character is displayed in \tt.				    *
%*									    *
%****************************************************************************
%
\def\ctl#1{{\tt $^\wedge$#1}}
%
%****************************************************************************
%*                                                                          *
%*			    Trademark Command				    *
%*									    *
%* Description:								    *
%*	This command generates a trademark symbol (an R in a circle).  The  *
%*	symbol is normally used as "foo$^\trademark$".			    *
%*									    *
%* Syntax:                                                                  *
%*	\trademark							    *
%*									    *
%* Note:								    *
%*	Thanks to Kent McPherson of Lear/Siegler for this command.	    *
%*									    *
%****************************************************************************
%
\def\trademark{{\ooalign
   {\tiny \hfill \raise .085ex\hbox{R}\hfill \crcr
    \scriptsize \mathhexbox20D}}}
%
%****************************************************************************
%*                                                                          *
%*			    ULine Command				    *
%*									    *
%* Description:								    *
%*	The \uline command is used to underline text.  Unlike the	    *
%*	\underline command, \uline provides the user with the ability to    *
%*	control the thickness of the line.				    *
%*									    *
%* Syntax:                                                                  *
%*	\uline{text}{thickness}						    *
%*									    *
%* Where:								    *
%*	text	    is the text which will be underlined.		    *
%*									    *
%*	thickness   is the thickness of the line.  This dimension is	    *
%*		    typically .3pt --.5pt.				    *
%*									    *
%* Note:								    *
%*	Thanks to Kent McPherson of Lear/Siegler for this command.	    *
%*									    *
%****************************************************************************
%
\newlength{\ulength}
\newcommand{\uline}[2]{\settowidth{\ulength}{#1}
    \parbox{\ulength}{{#1} \\[-.75\baselineskip] \rule{\ulength}{#2}}}
%
%****************************************************************************
%*                                                                          *
%*			    ClearDoublePage Command			    *
%*									    *
%* Description:								    *
%*	This command is a modification of the standard LaTeX command of the *
%*	same name.  Unlike standard LaTeX, this command uses the "empty"    *
%*	pagestyle for the blank page it throws, so that the page is totally *
%*	blank.								    *
%*									    *
%* Syntax:                                                                  *
%*	\cleardoublepage						    *
%*									    *
%****************************************************************************
%
\def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
  \if@twocolumn\hbox{}\newpage\fi\hbox{}\thispagestyle{empty}\newpage\fi\fi}
%
%****************************************************************************
%*                                                                          *
%*			ForceRightPage Command				    *
%*									    *
%* Description:								    *
%*	The \forcerightpage command is a variant on the \cleardoublepage    *
%*	command.  It conditionally throws a blank page to force the text    *
%*	which follows to appear on a right-hand page.  The blank page will  *
%*	contain an optional, centered message.				    *
%*									    *
%* Syntax:                                                                  *
%*	\forcerightpage[text]						    *
%*									    *
%* Where:								    *
%*	text	    is the text to be displayed centered on the page.  If   *
%*		    not specified, "This page intentionally left blank"     *
%*		    is used.						    *
%*									    *
%* Note:								    *
%*	This command will not correctly handle a two-column document and    *
%*	should not be used in that environment.				    *
%*									    *
%****************************************************************************
%
\def\forcerightpage{\@ifnextchar [{\@forcerightpage}
    {\@forcerightpage[This page intentionally left blank]}}
\def\@forcerightpage[#1]{\clearpage\if@twoside \ifodd\c@page\else
    \hbox{} \vfill \centerline{#1} \vfill \newpage\fi\fi}
%
%****************************************************************************
%*									    *
%*			ForceLeftPage Command				    *
%*                                                                          *
%* Description:								    *
%*	The \forceleftpage command is a variant on the \cleardoublepage	    *
%*	command.  It conditionally throws a blank page to force the text    *
%*	which follows to appear on a left-hand page.  The blank page will   *
%*	contain an optional, centered message.				    *
%*									    *
%* Syntax:                                                                  *
%*	\forceleftpage[text]						    *
%*									    *
%* Where:								    *
%*	text	    is the text to be displayed centered on the page.  If   *
%*		    not specified, "This page intentionally left blank"     *
%*		    is used.						    *
%*									    *
%* Note:								    *
%*	This command will not correctly handle a two-column document and    *
%*	should not be used in that environment.				    *
%*									    *
%****************************************************************************
%
\def\forceleftpage{\@ifnextchar [{\@forceleftpage}
    {\@forceleftpage[This page intentionally left blank]}}
\def\@forceleftpage[#1]{\clearpage \if@twoside \ifodd\c@page
    \hbox{} \vfill \centerline{#1} \vfill \newpage\fi\fi}
%
%****************************************************************************
%*									    *
%*			Input Command					    *
%*                                                                          *
%* Description:								    *
%*	The \input command is a variation of the standard LaTeX command of  *
%*	the same name.  It reads in an external file.  It differs from the  *
%*	normal LaTeX command in that if the specified file is not found,    *
%*	the routine displays a message and continues, rather than prompting *
%*	for a new file name.						    *
%*									    *
%* Syntax:                                                                  *
%*	\input{file}							    *
%*									    *
%* Where:								    *
%*	file	    is the file specification of the input file to be read. *
%*		    By default, the file has the file type ".tex" unless    *
%*		    specified otherwise.  If the file is not found in the   *
%*		    current default directory, it will be searched for in   *
%*		    TEX$INPUTS.						    *
%*									    *
%****************************************************************************
%
\def\input{\@ifnextchar \bgroup{\@input}{\@@input }}
%
%****************************************************************************
%*									    * 
%*			CoverStyle Command				    *
%*                                                                          *
%* Description:								    *
%*	This routine defines a cover style for a document.  It reads in a   *
%*	".cvrsty" file, which contains the necessary information.	    *
%*									    *
%* Syntax:                                                                  *
%*	\coverstyle{name}						    *
%*									    *
%* Where:								    *
%*	name	    is the name of a coverstyle.  The file name.cvrsty will *
%*		    be input.						    *
%*									    *
%****************************************************************************
%
\def\coverstyle#1{\def\@coverstyle{#1}
  \makeatletter \input \@coverstyle.cvrsty \relax \makeatother}
%
%****************************************************************************
%*									    *
%*			ScreenPix Environment				    *
%*                                                                          *
%* Description:								    *
%*	The screenpix environment is used to display the image of a screen  *
%*	in a document.  A curved line is drawn at the top, which represents *
%*	the beginning of the screen.  After the verbatim text, another line *
%*	is drawn at the bottom to represent the bottom of the screen.	    *
%*									    *
%*	Lines up to 80 characters long may appear.  You should place a	    *
%*	leading space at the beginning of each line, so that the text will  *
%*	not overwrite the curved lines.  Since tabs are not expanded in	    *
%*	verbatim mode, they should be explicitly converted to spaces.	    *
%*									    *
%* Syntax:                                                                  *
%*	\begin{screenpix}						    *
%*	\begin{verbatim}						    *
%*	 lines of verbatim screen-image text				    *
%*	\end{verbatim}							    *
%*	\end{screenpix}							    *
%*									    *
%* Where:								    *
%*	The lines of verbatim text may be up to 80 characters long, not	    *
%*	counting the REQUIRED leading space on each line.		    *
%*									    *
%* Note:								    *
%*	This environment assumes that a text width of 6 inches is available *
%*	for the display of the screen.					    *
%*									    *
%****************************************************************************
%
\def\screenpix{\small \setlength{\unitlength}{1in} \thicklines
    \begin{picture}(6,.35) \put(3,0){\oval(6,.7)[t]} \end{picture}\par
    \vspace*{-3\parskip}}
\def\endscreenpix{\vspace*{-3\parskip}
    \begin{picture}(6,.35) \put(3,.35){\oval(6,.7)[b]} \end{picture}}
%
%****************************************************************************
%*									    *
%*			    Glossaryfile Command			    *
%*                                                                          *
%* Description:								    *
%*	This command is used to specify one or more Glossary Definition	    *
%*	files which will be searched for glossary definitions by GloTeX.    *
%*									    *
%* Syntax:                                                                  *
%*	\glossaryfile{filelist}						    *
%*									    *
%* Where:								    *
%*	filelist    is a file specification of a .gdf file or a comma-list  *
%*		    of file specifications.				    *
%*									    *
%* Note:								    *
%*	This command writes a \glofile command to the .glo file		    *
%*									    *
%****************************************************************************
%
\def\glossaryfile#1{\if@filesw\write\@glossaryfile{\string
    \glofile{#1}}\fi}
%
%****************************************************************************
%*									    *
%*			    InsertGlossary Command			    *
%*                                                                          *
%* Description:								    *
%*	This command causes a .gls file to be read in and processed.	    *
%*									    *
%* Syntax:                                                                  *
%*	\insertglossary							    *
%*									    *
%* Note:								    *
%*	The .gls file is assumed to have the same name as the root latex    *
%*	source file.							    *
%*									    *
%****************************************************************************
%
\def\insertglossary{\@input{\jobname.gls}}
%
%****************************************************************************
%*									    *
%*			    InsertIndex Command				    *
%*                                                                          *
%* Description:								    *
%*	This command causes an .ind file to be read in and processed.	    *
%*									    *
%* Syntax:                                                                  *
%*	\insertindex							    *
%*									    *
%* Note:								    *
%*	The .ind file is assumed to have the same name as the root latex    *
%*	source file.							    *
%*									    *
%****************************************************************************
%
\def\insertindex{\@input{\jobname.ind}}	
%
