% 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}} %