508 lines
18 KiB
OpenEdge ABL
508 lines
18 KiB
OpenEdge ABL
|
%%% csug8.cls
|
||
|
%%% Based on tspl4.cls
|
||
|
%%% Copyright (c) 1998 R, Kent Dybvig
|
||
|
%%%
|
||
|
%%% Permission is hereby granted, free of charge, to any person obtaining a
|
||
|
%%% copy of this software and associated documentation files (the "Software"),
|
||
|
%%% to deal in the Software without restriction, including without limitation
|
||
|
%%% the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||
|
%%% and/or sell copies of the Software, and to permit persons to whom the
|
||
|
%%% Software is furnished to do so, subject to the following conditions:
|
||
|
%%%
|
||
|
%%% The above copyright notice and this permission notice shall be included in
|
||
|
%%% all copies or substantial portions of the Software.
|
||
|
%%%
|
||
|
%%% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
|
%%% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
|
%%% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||
|
%%% THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
|
%%% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||
|
%%% FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||
|
%%% DEALINGS IN THE SOFTWARE.
|
||
|
|
||
|
\NeedsTeXFormat{LaTeX2e}
|
||
|
\ProvidesClass{csug8}[2009/07/12 CSUG8]
|
||
|
|
||
|
\newif\ifdropfolios\dropfoliosfalse
|
||
|
|
||
|
\newif\if@openright
|
||
|
\newif\if@mainmatter \@mainmattertrue
|
||
|
\newif\ifchapterpictures \chapterpicturestrue
|
||
|
\newif\ifdraft\draftfalse
|
||
|
\newcommand{\@ptsize}{}
|
||
|
|
||
|
%%% to support hypertext index entries
|
||
|
\def\hindex#1{\index} % ignore the label here---no links in printed version
|
||
|
|
||
|
\newcommand{\hyperlink}[3][ref]{#3}
|
||
|
\newcommand{\href}[3][ref]{#3}
|
||
|
\newcommand{\hpageref}[3][ref]{#3}
|
||
|
\let\true@ref=\ref\renewcommand{\ref}[2][]{\true@ref{#2}}
|
||
|
\let\true@pageref=\pageref\renewcommand{\pageref}[2][]{\true@pageref{#2}}
|
||
|
|
||
|
\newif\iflatex\latextrue
|
||
|
\newif\ifhtml\htmlfalse
|
||
|
|
||
|
\newlength{\trimwidth}
|
||
|
\newlength{\trimheight}
|
||
|
\newlength{\gutterwidth}
|
||
|
\newlength{\edgewidth}
|
||
|
|
||
|
% paperheight is total height of paper before trimming
|
||
|
% paperwidth is total width of paper before trimming
|
||
|
% trimwidth is amount that will be trimmed on outside (unbound) edge
|
||
|
% trimheight is amount that will be trimmed on both top and bottom
|
||
|
% gutterwidth is margin on the inside (bound) edge
|
||
|
% edgewidth is margin on all the outside (unbound) edges
|
||
|
|
||
|
% text height will be paperheight - 2*trimheight - 2*edgeheight
|
||
|
% text width will be paperwidth - trimwidth - gutterwidth - edgewidth
|
||
|
% inside (bound) margin will be gutterwidth
|
||
|
% outside (unbound) margins will be edgewidth
|
||
|
|
||
|
%%% options
|
||
|
\DeclareOption{crownquarto}
|
||
|
% lulu lies or their converter is broken and we shouldn't include the trim
|
||
|
% {\setlength\paperheight {25.235cm}% % 24.6cm + 2 * .125
|
||
|
% \setlength\paperwidth {19.535cm}% % 18.9cm + .25in
|
||
|
% \setlength\gutterwidth{1.0in}%
|
||
|
% \setlength\edgewidth{1.0in}%
|
||
|
% \setlength\trimwidth{.25in}%
|
||
|
% \setlength\trimheight{.125in}}
|
||
|
{\setlength\paperheight {24.6cm}%
|
||
|
\setlength\paperwidth {18.9cm}%
|
||
|
\setlength\gutterwidth{1.0in}%
|
||
|
\setlength\edgewidth{1.0in}%
|
||
|
\setlength\trimwidth{0in}%
|
||
|
\setlength\trimheight{0in}}
|
||
|
\DeclareOption{tspl4size}
|
||
|
{\setlength\paperheight {9.25in}%
|
||
|
\setlength\paperwidth {7.0in}%
|
||
|
\setlength\gutterwidth{.875in}% % isn't this actually 1in?
|
||
|
\setlength\edgewidth{1.0in}%
|
||
|
\setlength\trimwidth{.125in}%
|
||
|
\setlength\trimheight{.125in}}
|
||
|
\DeclareOption{ninebysix}
|
||
|
{\setlength\paperheight {9.25in}%
|
||
|
\setlength\paperwidth {6.125in}%
|
||
|
\setlength\gutterwidth{.75in}%
|
||
|
\setlength\edgewidth{.75in}%
|
||
|
\setlength\trimwidth{.125in}%
|
||
|
\setlength\trimheight{.125in}}
|
||
|
\DeclareOption{a4paper}
|
||
|
{\setlength\paperheight {297mm}%
|
||
|
\setlength\paperwidth {210mm}}
|
||
|
\DeclareOption{a5paper}
|
||
|
{\setlength\paperheight {210mm}%
|
||
|
\setlength\paperwidth {148mm}}
|
||
|
\DeclareOption{b5paper}
|
||
|
{\setlength\paperheight {250mm}%
|
||
|
\setlength\paperwidth {176mm}}
|
||
|
\DeclareOption{letterpaper}
|
||
|
{\setlength\paperheight {11in}%
|
||
|
\setlength\paperwidth {8.5in}}
|
||
|
\DeclareOption{legalpaper}
|
||
|
{\setlength\paperheight {14in}%
|
||
|
\setlength\paperwidth {8.5in}}
|
||
|
\DeclareOption{executivepaper}
|
||
|
{\setlength\paperheight {10.5in}%
|
||
|
\setlength\paperwidth {7.25in}}
|
||
|
\DeclareOption{landscape}
|
||
|
{\setlength\@tempdima {\paperheight}%
|
||
|
\setlength\paperheight {\paperwidth}%
|
||
|
\setlength\paperwidth {\@tempdima}}
|
||
|
\DeclareOption{10pt}{\renewcommand{\@ptsize}{0}}
|
||
|
\DeclareOption{11pt}{\renewcommand{\@ptsize}{1}}
|
||
|
\DeclareOption{12pt}{\renewcommand{\@ptsize}{2}}
|
||
|
\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
|
||
|
\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
|
||
|
\DeclareOption{draft}{\drafttrue}
|
||
|
\DeclareOption{final}{\draftfalse}
|
||
|
\DeclareOption{titlepage}
|
||
|
{\ClassError{proc}{Option `titlepage' is not supported}{}}
|
||
|
\DeclareOption{notitlepage}{\relax}
|
||
|
\DeclareOption{openright}{\@openrighttrue}
|
||
|
\DeclareOption{openany}{\@openrightfalse}
|
||
|
\DeclareOption{onecolumn}{\relax}
|
||
|
\DeclareOption{twocolumn}
|
||
|
{\ClassError{proc}{Option `twocolumn' is not supported}{}}
|
||
|
\DeclareOption{leqno}{\input{leqno.clo}}
|
||
|
\DeclareOption{fleqn}{\input{fleqn.clo}}
|
||
|
\ExecuteOptions{crownquarto,10pt,twoside,onecolumn,final,openright}
|
||
|
\ProcessOptions
|
||
|
\input{csug81\@ptsize.clo}
|
||
|
|
||
|
\setlength\lineskip{1\p@}
|
||
|
\setlength\normallineskip{1\p@}
|
||
|
\renewcommand{\baselinestretch}{}
|
||
|
% block paragraphs:
|
||
|
\setlength\parskip{4\p@ \@plus \p@}
|
||
|
\setlength\parindent{0\p@}
|
||
|
\@lowpenalty 51
|
||
|
\@medpenalty 151
|
||
|
\@highpenalty 301
|
||
|
\setcounter{topnumber}{2}
|
||
|
\renewcommand{\topfraction}{.7}
|
||
|
\setcounter{bottomnumber}{1}
|
||
|
\renewcommand{\bottomfraction}{.3}
|
||
|
\setcounter{totalnumber}{3}
|
||
|
\renewcommand{\textfraction}{.2}
|
||
|
\renewcommand{\floatpagefraction}{.5}
|
||
|
\setcounter{dbltopnumber}{2}
|
||
|
\renewcommand{\dbltopfraction}{.7}
|
||
|
\renewcommand{\dblfloatpagefraction}{.5}
|
||
|
|
||
|
%%% headers and footers
|
||
|
\if@twoside
|
||
|
\def\ps@headings{%
|
||
|
\let\@oddfoot\@empty\let\@evenfoot\@empty
|
||
|
\def\@evenhead{\thepage\hfil\slshape\leftmark}%
|
||
|
\def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
|
||
|
\def\chaptermark##1{%
|
||
|
\markboth{\if@mainmatter\thechapter.\ \fi##1}%
|
||
|
{\if@mainmatter\thechapter.\ \fi##1}}
|
||
|
\def\sectionmark##1{%
|
||
|
\markright{\thesection.\ ##1}}}
|
||
|
\else
|
||
|
\def\ps@headings{%
|
||
|
\let\@oddfoot\@empty
|
||
|
\def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
|
||
|
\def\chaptermark##1{%
|
||
|
\markright{\if@mainmatter\@chapapp\ \thechapter.\fi\ ##1}}}
|
||
|
\fi
|
||
|
\newcommand*{\chaptermark}[1]{}
|
||
|
\setcounter{secnumdepth}{2} % must be at least two
|
||
|
\newcounter {chapter}
|
||
|
\newcounter {section}[chapter]
|
||
|
\newcounter{exercise}[section]
|
||
|
\renewcommand{\thechapter}{\arabic{chapter}}
|
||
|
\renewcommand{\thesection}{\thechapter.\arabic{section}}
|
||
|
\renewcommand{\theexercise}{\thechapter.\arabic{section}.\arabic{exercise}}
|
||
|
\newcommand{\@chapapp}{\chaptername}
|
||
|
|
||
|
%%% illustrated chapter heads
|
||
|
\newlength{\chframesize}
|
||
|
\setlength{\chframesize}{\textwidth}
|
||
|
\addtolength{\chframesize}{-\fboxrule}
|
||
|
\addtolength{\chframesize}{-\fboxrule}
|
||
|
\newlength{\chpicsize}
|
||
|
\setlength{\chpicsize}{\chframesize}
|
||
|
\addtolength{\chpicsize}{-6pt}
|
||
|
\def\chpic#1{\begingroup%
|
||
|
\fboxsep=3pt
|
||
|
\fbox{\includegraphics[height=\chpicsize]{#1}}\endgroup}
|
||
|
%\def\chpic#1{\begingroup%
|
||
|
% \fboxsep=0pt
|
||
|
% \vbox{\noindent%
|
||
|
% \fbox{\vbox{\hbox to \chframesize{\hfil\vbox to \chframesize{\vfil%
|
||
|
% \includegraphics{#1}\vfil}\hfil}}}}\endgroup}
|
||
|
|
||
|
%\def\picturechapterhead#1{
|
||
|
% \thispagestyle{empty}
|
||
|
% \null\vfill\vfill
|
||
|
% {\LARGE\bfseries\hbox to \textwidth{\hfil CHAPTER \thechapter}}
|
||
|
% \vfill}
|
||
|
|
||
|
\def\picturechapterhead#1{
|
||
|
\thispagestyle{empty}
|
||
|
\vbox to 6pc{\null\vfill
|
||
|
{\Large\hbox to \textwidth{\hfil CHAPTER \thechapter}}
|
||
|
\hbox to \textwidth{\leaders\hrule\hfil}}
|
||
|
\vskip 10pt
|
||
|
{\titlefont\hbox to \textwidth{\hfil#1}}
|
||
|
\vfill\vfill\vfill\noindent
|
||
|
\chpic{pic/ch\thechapter}
|
||
|
\par\eject
|
||
|
\thispagestyle{empty}
|
||
|
\null
|
||
|
\vfill
|
||
|
\noindent
|
||
|
{\it \input{pic/ch\thechapter.tex}}\par\break
|
||
|
\thispagestyle{empty}}
|
||
|
|
||
|
%%% document structure
|
||
|
\newcommand{\frontmatter}{\cleardoublepage
|
||
|
\@mainmatterfalse\pagenumbering{roman}}
|
||
|
\newcommand{\mainmatter}{\cleardoublepage
|
||
|
\@mainmattertrue\pagenumbering{arabic}}
|
||
|
\newcommand{\backmatter}{\if@openright\cleardoublepage\else\clearpage\fi
|
||
|
\@mainmatterfalse}
|
||
|
\def\chapter#1{
|
||
|
\if@openright\cleardoublepage\else\clearpage\fi
|
||
|
\global\@topnum\z@
|
||
|
\if@mainmatter
|
||
|
\refstepcounter{chapter}%
|
||
|
\typeout{\@chapapp\space\thechapter.}%
|
||
|
\addcontentsline{toc}{chapter}%
|
||
|
{\protect\numberline{\thechapter}#1}%
|
||
|
\else
|
||
|
\addcontentsline{toc}{chapter}{#1}%
|
||
|
\fi
|
||
|
\addtocontents{lof}{\protect\addvspace{10\p@}}%
|
||
|
\addtocontents{lot}{\protect\addvspace{10\p@}}%
|
||
|
\chaptermark{#1}%
|
||
|
\if@mainmatter
|
||
|
\ifchapterpictures
|
||
|
\picturechapterhead{#1}%
|
||
|
\else
|
||
|
\plainchapterhead{#1}%
|
||
|
\fi
|
||
|
\else
|
||
|
\plainchapterhead{#1}%
|
||
|
\fi
|
||
|
\@afterindentfalse
|
||
|
\@afterheading}
|
||
|
\def\plainchapterhead#1{%
|
||
|
\ifdropfolios\thispagestyle{plain}\else\thispagestyle{empty}\fi%
|
||
|
\vspace*{50\p@}%
|
||
|
{\parindent \z@ \raggedright \reset@font
|
||
|
\interlinepenalty\@M
|
||
|
\if@mainmatter
|
||
|
\titlefont\makebox[\hsize][l]{\thechapter. #1}\par\nobreak
|
||
|
\else
|
||
|
\titlefont\makebox[\hsize][l]{#1}\par\nobreak
|
||
|
\fi
|
||
|
\vskip 40\p@
|
||
|
}}
|
||
|
\newcommand{\section}{\@startsection{section}{1}{\z@}%
|
||
|
{-3.5ex \@plus -1ex \@minus -.2ex}%
|
||
|
{2.3ex \@plus.2ex}%
|
||
|
{\reset@font\Large\bfseries}}
|
||
|
|
||
|
%%% page layout
|
||
|
\setlength\leftmargini {2.5em}
|
||
|
\setlength\leftmarginii {2.2em}
|
||
|
\setlength\leftmarginiii {1.87em}
|
||
|
\setlength\leftmarginiv {1.7em}
|
||
|
\setlength\leftmarginv {1em}
|
||
|
\setlength\leftmarginvi {1em}
|
||
|
\setlength\leftmargin {\leftmargini}
|
||
|
\setlength \labelsep {.5em}
|
||
|
\setlength \labelwidth{\leftmargini}
|
||
|
\addtolength\labelwidth{-\labelsep}
|
||
|
\@beginparpenalty -\@lowpenalty
|
||
|
\@endparpenalty -\@lowpenalty
|
||
|
\@itempenalty -\@lowpenalty
|
||
|
\renewcommand{\theenumi}{\arabic{enumi}}
|
||
|
\renewcommand{\theenumii}{\alph{enumii}}
|
||
|
\renewcommand{\theenumiii}{\roman{enumiii}}
|
||
|
\renewcommand{\theenumiv}{\Alph{enumiv}}
|
||
|
\newcommand{\labelenumi}{\theenumi.}
|
||
|
\newcommand{\labelenumii}{(\theenumii)}
|
||
|
\newcommand{\labelenumiii}{\theenumiii.}
|
||
|
\newcommand{\labelenumiv}{\theenumiv.}
|
||
|
\renewcommand{\p@enumii}{\theenumi}
|
||
|
\renewcommand{\p@enumiii}{\theenumi(\theenumii)}
|
||
|
\renewcommand{\p@enumiv}{\p@enumiii\theenumiii}
|
||
|
\newcommand{\labelitemi}{$\m@th\bullet$}
|
||
|
\newcommand{\labelitemii}{\normalfont\bfseries --}
|
||
|
\newcommand{\labelitemiii}{$\m@th\ast$}
|
||
|
\newcommand{\labelitemiv}{$\m@th\cdot$}
|
||
|
|
||
|
\setlength\arraycolsep{5\p@}
|
||
|
\setlength\tabcolsep{3\p@}
|
||
|
\setlength\arrayrulewidth{.4\p@}
|
||
|
\setlength\doublerulesep{2\p@}
|
||
|
\setlength\tabbingsep{\labelsep}
|
||
|
\skip\@mpfootins = \skip\footins
|
||
|
\setlength\fboxsep{3\p@}
|
||
|
\setlength\fboxrule{.4\p@}
|
||
|
|
||
|
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
|
||
|
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
|
||
|
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
|
||
|
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
|
||
|
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
|
||
|
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
|
||
|
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
|
||
|
\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
|
||
|
\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
|
||
|
|
||
|
%%% table of contents
|
||
|
\newcommand{\@pnumwidth}{1.55em}
|
||
|
\newcommand{\@tocrmarg} {2.55em}
|
||
|
\newcommand{\@dotsep}{4.5}
|
||
|
\setcounter{tocdepth}{2}
|
||
|
\newcommand*{\l@chapter}[2]{%
|
||
|
\addpenalty{-\@highpenalty}%
|
||
|
\vskip 3pt \@plus4\p@
|
||
|
\setlength\@tempdima{1.5em}%
|
||
|
\begingroup
|
||
|
\parindent \z@ \rightskip \@pnumwidth
|
||
|
\parfillskip -\@pnumwidth
|
||
|
\leavevmode \bfseries
|
||
|
\advance\leftskip\@tempdima
|
||
|
\hskip -\leftskip
|
||
|
#1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par
|
||
|
\penalty\@highpenalty
|
||
|
\endgroup}
|
||
|
% \newcommand*{\l@section} {\@dottedtocline{1}{1.5em}{2.3em}}
|
||
|
\newcommand*{\l@section}[2]{%
|
||
|
\vskip \z@ \@plus2\p@
|
||
|
{\leftskip 1.5em\relax \rightskip \@tocrmarg \parfillskip -\rightskip
|
||
|
\parindent 1.5em\relax\@afterindenttrue
|
||
|
\interlinepenalty\@M
|
||
|
\leavevmode
|
||
|
\@tempdima 2.3em\relax
|
||
|
\advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
|
||
|
{#1}\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par}}
|
||
|
\newcommand{\tableofcontents}{%
|
||
|
\if@openright\cleardoublepage\else\clearpage\fi
|
||
|
\ifdropfolios\thispagestyle{plain}\else\thispagestyle{empty}\fi%
|
||
|
\global\@topnum\z@
|
||
|
\chaptermark{\contentsname}%
|
||
|
\plainchapterhead{\contentsname}%
|
||
|
\@starttoc{toc}}
|
||
|
|
||
|
%%% bibliography
|
||
|
\newdimen\bibindent \bibindent=1.5em
|
||
|
\newcommand{\newblock}{}
|
||
|
\newenvironment{thebibliography}[1]
|
||
|
{\chapter{References}
|
||
|
\list{\@biblabel{\arabic{enumiv}}}%
|
||
|
{\settowidth\labelwidth{\@biblabel{#1}}%
|
||
|
\leftmargin\labelwidth
|
||
|
\advance\leftmargin\labelsep
|
||
|
\usecounter{enumiv}%
|
||
|
\let\p@enumiv\@empty
|
||
|
\renewcommand{\theenumiv}{\arabic{enumiv}}}%
|
||
|
\renewcommand{\newblock}{\hskip .11em \@plus.33em \@minus.07em}%
|
||
|
\sloppy\clubpenalty4000\widowpenalty4000%
|
||
|
\sfcode`\.=\@m}
|
||
|
{\def\@noitemerr
|
||
|
{\@latex@warning{Empty `thebibliography' environment}}%
|
||
|
\endlist}
|
||
|
|
||
|
%%% index
|
||
|
\newenvironment{theindex}
|
||
|
{\if@openright\cleardoublepage\else\clearpage\fi
|
||
|
\begingroup\raggedright\schemeindexsize\footnotesize
|
||
|
\columnseprule \z@
|
||
|
\columnsep 35\p@
|
||
|
\twocolumn[\plainchapterhead{\indexname}]%
|
||
|
\addcontentsline{toc}{chapter}{\indexname}%
|
||
|
\chaptermark{\indexname}%
|
||
|
\ifdropfolios\thispagestyle{plain}\else\thispagestyle{empty}\fi\parindent\z@
|
||
|
\indexintrotext\medskip
|
||
|
\parskip\z@ \@plus .3\p@\relax
|
||
|
\let\item\@idxitem}
|
||
|
{\clearpage\endgroup}
|
||
|
\newcommand{\@idxitem} {\par\hangindent 40\p@}
|
||
|
\newcommand{\subitem} {\par\hangindent 40\p@ \hspace*{20\p@}}
|
||
|
\newcommand{\subsubitem}{\par\hangindent 40\p@ \hspace*{30\p@}}
|
||
|
\newcommand{\indexspace}{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
|
||
|
|
||
|
%%% latex.ltx redefinitions
|
||
|
%% leave padding page blank (no header)
|
||
|
\def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
|
||
|
{\pagestyle{empty}\hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi}\fi\fi}
|
||
|
%% change section headers to "1.1. foo" instead of "1.1 foo"
|
||
|
\def\@seccntformat#1{\csname the#1\endcsname. }
|
||
|
%% change numbered table of contents lines to "1.1. foo" instead of "1.1 foo"
|
||
|
\def\numberline#1{#1. }
|
||
|
|
||
|
\newenvironment{description}
|
||
|
{\list{}{\labelwidth\z@ \itemindent-\leftmargin
|
||
|
\let\makelabel\descriptionlabel}}
|
||
|
{\endlist}
|
||
|
\newcommand*\descriptionlabel[1]{\hspace\labelsep #1}
|
||
|
|
||
|
\def\itemvdots{\item[] \mbox{\vdots}}
|
||
|
|
||
|
\def\parheader#1 {\medskip\noindent{\bf #1.}~~}
|
||
|
|
||
|
\newenvironment{grammar}
|
||
|
{\begingroup
|
||
|
\def\orbar{\hbox to 2em{\hfil}$\vert$\hbox to .75em{\hfil}}
|
||
|
\def\longis{ $\longrightarrow$\hbox to .75em{\hfil}}
|
||
|
\penalty-100\vskip 6pt plus 1pt\parindent=0pt\interlinepenalty=5000}
|
||
|
{\penalty-200\vskip6pt plus 1pt\endgroup}
|
||
|
|
||
|
\def\bar{$\vert$}
|
||
|
\def\ang#1{$\langle${\small\rm{}#1}$\rangle$}
|
||
|
\def\kstar{\raise.5ex\hbox{\scheme{*}}}
|
||
|
\def\kplus{\raise.5ex\hbox{\scheme{+}}}
|
||
|
|
||
|
% for fft example in examples.stex
|
||
|
\def\W#1{W_{\!\!#1}}
|
||
|
\def\fftcases#1{\left\{\,\vcenter{\m@th\baselineskip=18pt
|
||
|
\ialign{$##\hfil$&\quad##\hfil\crcr#1\crcr}}\right.}
|
||
|
|
||
|
%%% adapted from old tspl macros.tex
|
||
|
%%% argument #1 is the \label{anslab} inserted by tspl4-prep
|
||
|
\def\exercise#1{
|
||
|
\vskip 9pt plus 1pt minus 1pt\refstepcounter{exercise}\noindent
|
||
|
{\bf Exercise \arabic{chapter}.\arabic{section}.\arabic{exercise}.#1~}}
|
||
|
|
||
|
\newcounter{alphacount}
|
||
|
\def\alphalabel{\textit{\alph{alphacount}}.}
|
||
|
\newenvironment{alphalist}
|
||
|
{\begingroup\let\beforeschemedisplay=\relax\let\afterschemedisplay=\relax
|
||
|
\begin{list}{\alphalabel}{\usecounter{alphacount}\itemsep=0pt\parsep=0pt%
|
||
|
\topsep=0pt}}
|
||
|
{\end{list}\endgroup}
|
||
|
|
||
|
\newdimen\formdefwidth\formdefwidth=\textwidth\advance\formdefwidth by -2.5pt
|
||
|
\def\entryheader{\par\penalty-200\vskip15pt plus 6pt\noskipentryheader}
|
||
|
\def\noskipentryheader{\vbox\bgroup\parskip=0pt
|
||
|
\def\formdef##1##2{\par\begingroup\fboxsep=0pt\@@line{\colorbox{formdefcolor}{\hbox to \textwidth{\strut##2\hfil{\small\bf{##1}}}}\hss}\endgroup}
|
||
|
\def\returns{\par\noindent{\small\bf returns:} }
|
||
|
\def\libraries{\par\noindent{\small\bf libraries:} }}
|
||
|
\def\endnoskipentryheader\par{\egroup\nobreak\vskip6pt plus 1pt\relax}
|
||
|
\let\endentryheader=\endnoskipentryheader
|
||
|
\def\categorysyntax{syntax}
|
||
|
\def\categoryprocedure{procedure}
|
||
|
\def\categorythreadparameter{thread parameter}
|
||
|
\def\categoryglobalparameter{global parameter}
|
||
|
\def\categorymodule{module}
|
||
|
\def\categoryftype{ftype}
|
||
|
|
||
|
\newwrite\forms
|
||
|
\openout\forms=\jobname.rfm
|
||
|
% \formsummary{sort key}{type}{form}{label}
|
||
|
\def\formsummary{\begingroup\@sanitize\addsummary}
|
||
|
\def\addsummary#1#2#3#4{\endgroup
|
||
|
\edef\formhead{\write\forms}%
|
||
|
\edef\formentry{{"#1" \string\sfentry{#3}{#2}{\string\pageref{#4}}}}%
|
||
|
\expandafter\formhead\formentry}
|
||
|
\def\sfentry#1#2#3{\par
|
||
|
\hbox to \hsize{%
|
||
|
\hbox to 24pc{#1\ \hfil}%
|
||
|
\hbox to 5pc{#2\ \hfil}%
|
||
|
\hfil #3}}
|
||
|
\newenvironment{thesummary}
|
||
|
{\begingroup\schemesummarysize\small\bigskip
|
||
|
\sfentry{{\slshape Form}}{{\slshape Category}}{{\slshape Page}}
|
||
|
\kern3pt\hrule\kern3pt}
|
||
|
{\endgroup}
|
||
|
|
||
|
\newwrite\answers
|
||
|
\openout\answers=\jobname.ans
|
||
|
\def\answer{\begingroup\@sanitize\addanswer}
|
||
|
\long\def\addanswer#1#2{\endgroup
|
||
|
\edef\anshead{\write\answers}%
|
||
|
\edef\ansentry{{\string\ansentry{#1}{#2}}}%
|
||
|
\expandafter\anshead\ansentry}
|
||
|
\def\theanswers{\begingroup
|
||
|
\long\def\ansentry##1##2{\par\vskip 9pt plus 3pt minus 1pt\noindent\textbf{Exercise~\ref{##2}.~}(page~\pageref{##2})\par\nobreak\vspace{6pt}##1}
|
||
|
\immediate\closeout\answers
|
||
|
\input \jobname.ans
|
||
|
\endgroup}
|
||
|
|
||
|
%%% final set up
|
||
|
\newcommand{\contentsname}{Contents}
|
||
|
\newcommand{\bibname}{References}
|
||
|
\newcommand{\indexname}{Index}
|
||
|
\newcommand{\chaptername}{Chapter}
|
||
|
\newcommand{\today}{\ifcase\month\or
|
||
|
January\or February\or March\or April\or May\or June\or
|
||
|
July\or August\or September\or October\or November\or December\fi
|
||
|
\space\number\day, \number\year}
|
||
|
\setlength\columnsep{10\p@}
|
||
|
\setlength\columnseprule{0\p@}
|
||
|
\pagestyle{headings}
|
||
|
\pagenumbering{arabic}
|
||
|
|
||
|
\if@twoside\else\raggedbottom\fi
|
||
|
\endinput
|