%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% The REDUCE Style option File --- LaTeX version. %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% The document should start with:
% \documentstyle[11pt,reduce,makeidx]{...}
%
% This style adds the following commands:
% \COMPATNOTE{...} For compatibility notes.
% \f{...} Sets function name is \tt.
% \k{...} Sets BNF keyword bold.
% \REDUCE REDUCE when needed as a word.
% \RLISP RLISP when needed as a word.
% \s{...} Sets BNF sentential form \em in <...>
% \meta An alternative for BNF italics in <...>
% \ttindex{...} Puts index entry in \tt font.
%
%
%
% Basic religion about REDUCE documentation. No paragraph indentation,
% bigger skip between lines, ragged bottom, and not as much vertical
% space.
%% RmS: setup of size dependent parameters. 11pt is assumed, so let's force it.
\typeout{Document style option `reduce' -- released 28 Jul 1998.}
% ****************************************
% * FONTS *
% ****************************************
%
\lineskip 1pt % \lineskip is 1pt for all font sizes.
\normallineskip 1pt
\def\baselinestretch{1}
% Each size-changing command \SIZE executes the command
% \@setsize\SIZE{BASELINESKIP}\FONTSIZE\@FONTSIZE
% where:
% BASELINESKIP = Normal value of \baselineskip for that size. (Actual
% value will be \baselinestretch * BASELINESKIP.)
%
% \FONTSIZE = Name of font-size command. The currently available
% (preloaded) font sizes are: \vpt (5pt), \vipt (6pt),
% \viipt (etc.), \viiipt, \ixpt, \xpt, \xipt, \xiipt,
% \xivpt, \xviipt, \xxpt, \xxvpt.
% \@FONTSIZE = The same as the font-size command except with an
% '@' in front---e.g., if \FONTSIZE = \xivpt then
% \@FONTSIZE = \@xivpt.
%
% For reasons of efficiency that needn't concern the designer,
% the document style defines \@normalsize instead of \normalsize. This
% is done only for \normalsize, not for any other size-changing
% commands.
\def\@normalsize{\@setsize\normalsize{13.6pt}\xipt\@xipt
\abovedisplayskip .5\baselineskip
\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip \z@ plus3\p@
\belowdisplayshortskip 6.5\p@ plus3.5\p@ minus3\p@
\let\@listi\@listI} % Setting of \@listi added 9 Jun 87
\def\small{\@setsize\small{12pt}\xpt\@xpt
\abovedisplayskip .5\baselineskip
\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip \z@ plus3\p@
\belowdisplayshortskip 6\p@ plus3\p@ minus3\p@
\def\@listi{\leftmargin\leftmargini %% Added 22 Dec 87
\topsep \z@\parsep 3\p@ plus2\p@ minus\p@
\itemsep .5\baselineskip}}
\def\footnotesize{\@setsize\footnotesize{11pt}\ixpt\@ixpt
\abovedisplayskip .5\baselineskip
\belowdisplayskip \abovedisplayskip
\abovedisplayshortskip \z@ plus\p@
\belowdisplayshortskip 4\p@ plus2\p@ minus2\p@
\def\@listi{\leftmargin\leftmargini %% Added 22 Dec 87
\topsep \z@ \parsep 2\p@ plus\p@ minus\p@
\itemsep .5\baselineskip}}
\def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
\def\large{\@setsize\large{14pt}\xiipt\@xiipt}
\def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
\def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
\def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
\def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
\normalsize % Choose the normalsize font.
% ****************************************
% * PAGE LAYOUT *
% ****************************************
%
% All margin dimensions measured from a point one inch from top and side
% of page.
% SIDE MARGINS:
\if@twoside % Values for two-sided printing:
\oddsidemargin 36pt % Left margin on odd-numbered pages.
\evensidemargin 74pt % Left margin on even-numbered pages.
\marginparwidth 100pt % Width of marginal notes.
\else % Values for one-sided printing:
\oddsidemargin 54pt % Note that \oddsidemargin = \evensidemargin
\evensidemargin 54pt
\marginparwidth 83pt
\fi
\marginparsep 10pt % Horizontal space between outer margin and
% marginal note
% VERTICAL SPACING:
% Top of page:
\topmargin 27pt % Nominal distance from top of page to top
% of box containing running head.
\headheight 12pt % Height of box containing running head.
\headsep 25pt % Space between running head and text.
% \topskip = 10pt % '\baselineskip' for first line of page.
% Bottom of page:
\footskip 30pt % Distance from baseline of box containing
% foot to baseline of last line of text.
% DIMENSION OF TEXT:
% 24 Jun 86: changed to explicitly compute \textheight to avoid
% roundoff. The value of the multiplier was calculated as the floor of
% the old \textheight minus \topskip, divided by \baselineskip for
% \normalsize. The old value of \textheight was 530.4pt.
% \textheight is the height of text (including footnotes and figures,
% excluding running head and foot).
\textheight = 38\baselineskip
\advance\textheight by \topskip
\textwidth 360pt % Width of text line.
% For two-column mode:
\columnsep 10pt % Space between columns
\columnseprule 0pt % Width of rule between columns.
% A \raggedbottom command causes 'ragged bottom' pages: pages set to
% natural height instead of being stretched to exactly \textheight.
% FOOTNOTES:
\footnotesep 7.7pt % Height of strut placed at the beginning of every
% footnote = height of normal \footnotesize strut,
% so no extra space between footnotes.
\skip\footins 10pt plus 4pt minus 2pt % Space between last line of text
% and top of first footnote.
% FLOATS: (a float is something like a figure or table)
%
% FOR FLOATS ON A TEXT PAGE:
%
% ONE-COLUMN MODE OR SINGLE-COLUMN FLOATS IN TWO-COLUMN MODE:
\floatsep 12pt plus 2pt minus 2pt % Space between adjacent floats
% moved to top or bottom of
% text page.
\textfloatsep 20pt plus 2pt minus 4pt % Space between main text and
% floats at top or bottom of
% page.
\intextsep 12pt plus 2pt minus 2pt % Space between in-text figures
% and text.
% In LaTeX2e, \@maxsep no longer exists
\@ifundefined{@maxsep}{}%
{\setlength{\@maxsep}{20pt}} % The maximum of \floatsep,
% \textfloatsep and \intextsep
% (minus the stretch and
% shrink).
% TWO-COLUMN FLOATS IN TWO-COLUMN MODE:
\dblfloatsep 12pt plus 2pt minus 2pt % Same as \floatsep for
% double-column figures in
% two-column mode.
\dbltextfloatsep 20pt plus 2pt minus 4pt % \textfloatsep for
% double-column floats.
% In LaTeX2e, \@dblmaxsep no longer exists
\@ifundefined{@dblmaxsep}{}%
{\setlength{\@dblmaxsep}{20pt}} % The maximum of \dblfloatsep
% and \dbltexfloatsep.
% FOR FLOATS ON A SEPARATE FLOAT PAGE OR COLUMN:
% ONE-COLUMN MODE OR SINGLE-COLUMN FLOATS IN TWO-COLUMN MODE:
\@fptop 0pt plus 1fil % Stretch at top of float page/column. (Must
% be 0pt plus ...)
\@fpsep 8pt plus 2fil % Space between floats on float page/column.
\@fpbot 0pt plus 1fil % Stretch at bottom of float page/column. (Must
% be 0pt plus ... )
% DOUBLE-COLUMN FLOATS IN TWO-COLUMN MODE.
\@dblfptop 0pt plus 1fil % Stretch at top of float page. (Must be 0pt
% plus ...)
\@dblfpsep 8pt plus 2fil % Space between floats on float page.
\@dblfpbot 0pt plus 1fil % Stretch at bottom of float page. (Must be
% 0pt plus ... )
% MARGINAL NOTES:
%
\marginparpush 5pt % Minimum vertical separation between two
% marginal notes.
% ****************************************
% * PARAGRAPHING *
% ****************************************
%
\parskip 6pt plus 1pt %% RmS % Extra vertical space between
% paragraphs.
\parindent 0pt %% RmS % Width of paragraph indentation.
\topsep 0pt %% RmS % Extra vertical space, in addition
% to \parskip, added above and below
% list and paragraphing environments.
\partopsep 0pt %% RmS % Extra vertical space, in addition
% to \parskip and \topsep, added when
% user leaves blank line before
% environment.
\itemsep \topsep %% RmS % Extra vertical space, in addition
% to \parskip, added between list
% items.
% See \@listI for values of \topsep and \itemsep
% The following page-breaking penalties are defined
\@lowpenalty 51 % Produced by \nopagebreak[1] or \nolinebreak[1]
\@medpenalty 151 % Produced by \nopagebreak[2] or \nolinebreak[2]
\@highpenalty 301 % Produced by \nopagebreak[3] or \nolinebreak[3]
\@beginparpenalty -\@lowpenalty % Before a list or paragraph
% environment.
\@endparpenalty -\@lowpenalty % After a list or paragraph
% environment.
\@itempenalty -\@lowpenalty % Between list items.
% \clubpenalty % 'Club line' at bottom of page.
% \widowpenalty % 'Widow line' at top of page.
% \displaywidowpenalty % Math display widow line.
% \predisplaypenalty % Breaking before a math display.
% \postdisplaypenalty % Breaking after a math display.
% \interlinepenalty % Breaking at a line within a paragraph.
% \brokenpenalty % Breaking after a hyphenated line.
% ****************************************
% * SECTIONS *
% ****************************************
%
% \@startsection {NAME}{LEVEL}{INDENT}{BEFORESKIP}{AFTERSKIP}{STYLE}
% optional * [ALTHEADING]{HEADING}
% Generic command to start a section.
% NAME : e.g., 'subsection'
% LEVEL : a number, denoting depth of section -- i.e.,
% section=1, subsection = 2, etc. A section number will
% be printed if and only if LEVEL < or = the value of
% the secnumdepth counter.
% INDENT : Indentation of heading from left margin
% BEFORESKIP : Absolute value = skip to leave above the heading.
% If negative, then paragraph indent of text following
% heading is suppressed.
% AFTERSKIP : if positive, then skip to leave below heading,
% else - skip to leave to right of run-in heading.
% STYLE : commands to set style
% If '*' missing, then increments the counter. If it is present, then
% there should be no [ALTHEADING] argument. A sectioning command
% is normally defined to \@startsection + its first six arguments.
\def\section{\@startsection {section}{1}{\z@}{-3.5ex plus-1ex minus
-.2ex}{2.3ex plus.2ex}{\reset@font\Large\bf}}
\def\subsection{\@startsection{subsection}{2}{\z@}{-3.25ex plus-1ex
minus-.2ex}{1.5ex plus.2ex}{\reset@font\large\bf}}
\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-3.25ex plus
-1ex minus-.2ex}{1.5ex plus.2ex}{\reset@font\normalsize\bf}}
\def\paragraph{\@startsection
{paragraph}{4}{\z@}{3.25ex plus1ex minus.2ex}{-1em}{\reset@font
\normalsize\bf}}
\def\subparagraph{\@startsection
{subparagraph}{4}{\parindent}{3.25ex plus1ex minus
.2ex}{-1em}{\reset@font\normalsize\bf}}
% Default initializations of \...mark commands. (See below for their
% use in defining page styles.
%
% \def\sectionmark#1{} % Preloaded definitions
% \def\subsectionmark#1{}
% \def\subsubsectionmark#1{}
% \def\paragraphmark#1{}
% \def\subparagraphmark#1{}
% The value of the counter secnumdepth gives the depth of the
% highest-level sectioning command that is to produce section numbers.
%
\setcounter{secnumdepth}{3}
% APPENDIX
%
% The \appendix command must do the following:
% -- reset the section and subsection counters to zero
% -- redefine the section counter to produce appendix numbers
% -- redefine the \section command if appendix titles and headings
% are to look different from section titles and headings.
\def\appendix{\par
\setcounter{section}{0}
\setcounter{subsection}{0}
\def\thesection{\Alph{section}}}
% ****************************************
% * LISTS *
% ****************************************
%
% The following commands are used to set the default values for the list
% environment's parameters. See the LaTeX manual for an explanation of
% the meanings of the parameters. Defaults for the list environment are
% set as follows. First, \rightmargin, \listparindent and \itemindent
% are set to 0pt. Then, for a Kth level list, the command \@listK is
% called, where 'K' denotes 'i', 'ii', ... , 'vi'. (I.e., \@listiii is
% called for a third-level list.) By convention, \@listK should set
% \leftmargin to \leftmarginK.
%
\leftmargini 2.5em
\leftmarginii 2.2em % > \labelsep + width of '(m)'
\leftmarginiii 1.87em % > \labelsep + width of 'vii.'
\leftmarginiv 1.7em % > \labelsep + width of 'M.'
\leftmarginv 1em
\leftmarginvi 1em
\leftmargin\leftmargini
\labelsep .5em
\labelwidth\leftmargini\advance\labelwidth-\labelsep
%\parsep 4.5pt plus 2pt minus 1pt %(Removed 9 Jun 87)
% \@listI defines top level and \@listi values of
% \leftmargin, \topsep, \parsep, and \itemsep
% (Added 9 Jun 87)
\def\@listI{\leftmargin\leftmargini \parsep 4.5\p@ plus2\p@ minus\p@
\topsep \z@ \itemsep \topsep}
\let\@listi\@listI
\@listi
\def\@listii{\leftmargin\leftmarginii
\labelwidth\leftmarginii\advance\labelwidth-\labelsep
\topsep \z@ \itemsep \topsep
\parsep 2\p@ plus\p@ minus\p@}
\def\@listiii{\leftmargin\leftmarginiii
\labelwidth\leftmarginiii\advance\labelwidth-\labelsep
\topsep \z@ \itemsep \topsep
\parsep \z@ \partopsep\z@}
\def\@listiv{\leftmargin\leftmarginiv
\labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
%% RmS: which at the same time makes the vertical space in lists (verbatim...)
%% too large if not other precautions are taken.
\setlength{\parindent}{0pt}
\setlength{\parskip}{6pt}
\raggedbottom
% Various boxes.
\newlength{\reduceboxwidth}
\setlength{\reduceboxwidth}{4in}
\newlength{\redboxwidth}
\setlength{\redboxwidth}{3.5in}
\newlength{\rboxwidth}
\setlength{\rboxwidth}{2.6in}
% These are here in case the name changes or we someday want a special
% font.
\newcommand{\REDUCE}{REDUCE}
\newcommand{\RLISP}{RLISP}
% This is useful for putting function names in \tt format in the index.
\newcommand{\ttindex}[1]{\index{#1@{\tt #1}}}
% Use this when you are speaking about problems across systems.
\newcommand{\COMPATNOTE}{{\em Compatibility Note:\ }}
\pagestyle{headings}
%% For BNF notation.
% \s{...} is a sentential form in descriptions. Enclosed \em text in <...>
\newcommand{\s}[1] {$<${\em #1}$>$}
% \meta{...} is an alternative sentential form in descriptions using \it.
\newcommand{\meta}[1]{\mbox{$\langle$\it#1\/$\rangle$}}
% \k{...} is a keyword. Just do in bold for the moment.
\@ifundefined{k}{}{\let\k\relax} % undefine \k (LaTeX2e)
\newcommand{\k}[1] {{\bf #1}}
% \f is a function name. Just do this as tt.
\newcommand{\f}[1] {{\tt #1}}
% An example macro for numbering and indenting examples.
\newcounter{examplectr}
\newcommand{\example}{\refstepcounter{examplectr}
\noindent{\bf Example \theexamplectr}}
% The following are currently only used in the GENTRAN document. However,
% there's no objection to using them elsewhere.
\begingroup
\catcode `|=0
\catcode `[= 1
\catcode`]=2
\catcode `\{=12
\catcode `\}=12
\catcode`\\=12
|gdef|@xframedverbatim#1\end{framedverbatim}[#1|end[framedverbatim]]
|gdef|@sxframedverbatim#1\end{framedverbatim*}[#1|end[framedverbatim*]]
|endgroup
\newdimen\@mcdheight
\def\@sframedverbatim{\obeyspaces\@framedverbatim}
\def\@mcdrule{\@mcdheight=\baselineskip\advance\@mcdheight by-2pt
\setbox0=\hbox{\vrule height\@mcdheight depth 2pt width 1pt}%
\ht0=\@mcdheight\dp0=0pt\wd0=1pt\box0}
\def\@mcdendrule{\@mcdheight=\baselineskip%
\setbox0=\hbox{\vrule height\@mcdheight depth 2pt width 1pt}%
\ht0=\@mcdheight\dp0=0pt\wd0=1pt\box0}
\def\@framedverbatim{\trivlist \item[]
\parskip \z@
\hrule \@height \p@ \@depth \z@ \@width\textwidth
\everypar{\global \@minipagefalse \global \@newlistfalse \if@inlabel
\global \@inlabelfalse \hskip -\parindent \box \@labels \penalty \z@ \fi
\hbox to6\p@{\rlap{\@mcdrule}\hskip\textwidth\llap{\@mcdrule}\hss}}%
\if@minipage\else\vskip\parskip\fi
\leftskip\@totalleftmargin\rightskip\z@
\parindent\z@\parfillskip\@flushglue\parskip\z@
\@tempswafalse \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par
\penalty\interlinepenalty}% % fix \samepage bug
\obeylines \tt \catcode``=13 \@noligs \let\do\@makeother \dospecials}
\def\framedverbatim{\@framedverbatim \frenchspacing\@vobeyspaces
\@xframedverbatim}
\def\endframedverbatim{\nointerlineskip
{\everypar{}\baselineskip 4\p@\vbox to4\p@{\par\noindent\hbox
to6pt{\rlap{\@mcdendrule}\hskip\textwidth\llap{\@mcdendrule}\hss}}%
\vskip\p@\hrule \@height \p@ \@depth \z@ \@width\textwidth}\endtrivlist}
\@namedef{framedverbatim*}{\@framedverbatim\@sxframedverbatim}
\expandafter\let\csname endframedverbatim*\endcsname =\endtrivlist
% Will print out a heading in bold, and then indent the following text.
\def\indented{\list{}{
\itemindent\listparindent
\rightmargin\leftmargin}\item[]}
\let\endindented=\endlist
\newenvironment{describe}[1]{\par{\bf #1}\begin{indented}}{\end{indented}}
\@ifundefined{reset@font}{\let\reset@font\@empty}{}
\endinput