\def\fileversion{v3.05}
\def\filedate{93/02/03}
\def\docdate {92/09/30}
\def\bs{{\tt\char'134}}% backslash
\def\Lcs#1{{\bs\tt#1}}% command with backslash and text
\let\Lenv\Lcs
\let\Lsty\Lcs
%% \CheckSum{681}
%% \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         \~}
%%
%
%\iffalse   % this is a METACOMMENT !
%
%
%
% Style-file `cernman' to use with LaTeX v2.09
% Copyright (C) 1992 Michel Goossens, all rights reserved.
%
% Copying of this file is authorized only if either
% (1) you make absolutely no changes to your copy, including name, or
% (2) if you do make changes, you name it something other than
%     cernman.doc.
% This restriction helps ensure that all styles developed at CERN
% are identical.
%
% Please send bug reports to:
%
%                          Michel Goossens
%                          CN Division
%                          CH-1211 Geneva 23
%                          Switzerland
%                  Email:  <GOOSSENS@CERNVM.CERN.CH>
%
% \fi                  /
%
% \changes{3.04}{92/09/28}{mg
%   General clean up
%   Eliminate Tablexx command}
% \changes{3.02}{92/04/29}{mg
%   add SKUIP command}
% \changes{3.01}{92/02/16}{mg
%   Complete rewrite and clean-up.
%   Many commands parameterized in function of others to limit code.
%   Provide description in DOC style.}       
% \changes{2.01}{92/02/13}{mg
%   Corrections in SHubrii and SFuncii}
% \changes{2.00}{92/01/24}{mg
%   Completely restructured version based on report.sty
%   crnman10.sty, crnman11.sty, crnman12 eliminated
%   rewrite of condbreak command, new index in Sbox
%   Declare dimensions and counters globally
%   Dimens: Fwidth Length Lengthl Lengthr Tonecol Width
%   Counts: Colme  Colmt  Colm}
% \changes{1.27}{91/10/09}{
%   New commands:
%    condbreak: go to next page if not given length available
%    Example and Examples: print Example(s):
%    Rcall    : like `Rkeep, but definition can contain any char.
%    Remark  and Remarks : print Remark(s):
%    Rindno   : Like `Rind, but only puts index entry (no text)
%    Sboxii   : Allows definition of two routines
%               Like `Sbox, with word `and' between definitions
%    Sboxz    : Like `Sbox, but does not define command
%    Stt      : NFSS Specify size for font (with `size)
%   Changes to old commands:
%    @makecaption, `tableofcontents, `listoftables,
%    `listoffigures, `l@table, `l@figure
%    `Sbox (now takes 2 parameters), old saved as `Sobox
%    `Iind, `Rdef, `Rind
%   Hidden commands:
%    `Price and `numonly}
% \changes{1.26}{91/09/08}{
%   Add environment XMPzskip (XMP w/o `baselineskip)
%   Replace subeqn style}
% \changes{1.25}{91/07/06}{
%   Correct bug in labelwidth for DLTT and DL
%   Increase width for table (figure) number to 2.8em (l@figure)}
% \changes{1.24}{91/07/03}{
%   Move definition of ttsc to main style + define `tensy (NFSS)
%   Protect definition of ttsc in minor styles for pre-NFSS}
% \changes{1.23}{91/05/26}{
%   Add global to definition in `Rkeep
%   Change voffset to -1in
%   Change makelabel and labelsep in DLTT and DL environments}
% \changes{1.22}{91/05/04}{
%   New command `Rkeep (keeps definition of routine)
%   Introduce generic table making environments
%   Tabmult[1] : #1 equal width columns
%   Tabmultr[2]: #1 equal width columns of width #2, rest at right
%   Tabmultl[2]: #1 equal width columns of width #2, rest at left
%   Command DLtt now uses `ttsc for font in item}
% \changes{1.21}{91/05/03}{
%   Add `par at beginning and end of XMPt environment}
% \changes{1.20}{91/04/30}{
%   Change to XMPt environment to include XMP environment
%   Add command SIbox, identical to Sbox but enters arg in index}
% \changes{1.19}{91/04/18}{
%   Make new command XMPt to allow titles above examples}
% \changes{1.18}{91/04/15}{
%   Delete uppercase from running titles}
% \changes{1.17}{91/02/23}{
%   Change DL to proportional font
%   Introduce DLtt for monospaced font}
% \changes{1.16}{91/02/18}{
%   Take out cernlib specific code and put it in cernlib.sty}
% \changes{1.15}{91/03/14}{
%   Correct Ucom (`tt was not protected)}
% \changes{1.14}{91/02/25}{
%   New command `Examples + only `tt in item of DL list}
% \changes{1.13}{91/02/06}{
%   Smaller hyphen in footers and new command `timing}
% \changes{1.12}{91/02/04}{
%   Introduce new commands `Rdef and `Ucom}
% \changes{1.11}{91/02/02}{
%   Introduce new commands `Structure, `Usage, `Method, `Accuracy
%                          `Errorh   , `Refer, `Longwr, `Notes
%                          `Source   , `Restrict
%   Facilitates coupling with SGML}
%
% \DoNotIndex{\@depth,\@ehc,\@fortmp,\@height,\@ifnextchar,\@ifstar}
% \DoNotIndex{\@ifundefined,\@latexerr,\@ne,\@nil,\@tempa,\@tempb}
% \DoNotIndex{\@tempcnta,\@tempd,\@tempdima,\@whilenum,\@width,\\}
% \DoNotIndex{\@tforloop}
% \DoNotIndex{\advance}
% \DoNotIndex{\baselineskip,\begingroup,\bgroup}
% \DoNotIndex{\cr,\crcr,\csname}
% \DoNotIndex{\def,\do,\docdate,\dp}
% \DoNotIndex{\edef,\egroup,\else,\endcsname,\endinput,\expandafter}
% \DoNotIndex{\fi,\filedate,\fileversion}
% \DoNotIndex{\gdef}
% \DoNotIndex{\hbox,\hfil,\hsize,\hskip,\ht}
% \DoNotIndex{\if,\ifcase,\ifdim,\ifnum,\ifx,\ignorespaces}
% \DoNotIndex{\kern}
% \DoNotIndex{\leavevmode,\let,\lineskip}
% \DoNotIndex{\m@ne,\multispan}
% \DoNotIndex{\newcount,\newdimen,\noalign}
% \DoNotIndex{\or}
% \DoNotIndex{\relax}
% \DoNotIndex{\setbox,\space,\strutbox}
% \DoNotIndex{\tabskip,\thr@@,\the,\toks,\toks@,\tw@,\typeout}
% \DoNotIndex{\unhcopy,\unskip}
% \DoNotIndex{\vbox,\vcenter,\vline,\vrule,\vtop,\vskip}
% \DoNotIndex{\xdef}
% \DoNotIndex{\z@}
%
% \title{A standard style for preparing CERN computer manuals\thanks{This file
%        has version number \fileversion, last
%        revised \filedate, documentation dated \docdate.}}
% \author{Michel Goossens\\
%         CN Division\\
%         CH-1211 Geneva 23 \\
%         Switzerland\\
%         Email:  \tt<goossens@cernvm@cern.ch>} 
%
% \date{Printed \today}
%
% \maketitle
%
% \begin{abstract}
% This article describes a major \LaTeX{} style file, which is used at CERN
% for writing computer documentation.
% It is based on the Lamport's ``standard'' {\tt report} style.
% Several of the basic \LaTeX{} commands and environments are redefined
% and other commands are added.
% The New Font Selection Scheme is used throughout, as are several extensions
% to \LaTeX{} available on the major archives.
% The main emphasis has been put on providing high level commands,
% somewhat in the spirit of SGML, so that typographic and page layout 
% conventions can be easily implemented in a coherent and global way.
% The quasi-automatic translation from a file using the commands
% defined in the {\tt cernman} style into SGML, so that the information 
% can be easily included into a hierarchical information retrieval 
% system, e.g. hypertext based, was also an important consideration.
% \end{abstract}
%
% \section{The user commands}
%
% In this first part we describe the commands,
% which the user of the present style has at her/his disposal on
% top of the standard \LaTeX{} commands.
% As far as the layout is concerned, the {\tt report} style 
% has been chosen as starting point, i.e. changes have been introduced
% to the parameter settings defined in that ``standard'' style.
% This has the supplementary advantage that the present style file
% is more robust with respect to future internal changes to that style.
%
% \subsection{Sectioning commands}
%
% To provide the user with more control over the page breaking behaviour at
% the boundaries of sections in the text, the higher level sectioning
% commands \Lcs{section}, \Lcs{subsection} and \Lcs{subsubsection}
% have been given the dual equivalents 
% \Lcs{Section}, \Lcs{Subsection} and \Lcs{Subsubsection}.
% These latter commands have two mandatory parameters, namely
% firstly the space which must still be available on the current page
% to contain the title and the beginning of the section and secondly
% the title of the section (i.e. the standard parameter
% of the original \LaTeX{} commands)
% 
% As an example the following command first verifies whether at least 4cm
% remain available on the current page. If the answer is positive,
% the command acts as a normal \Lcs{section} command, while if the
% answer is negative, the current page is ended by issueing a \Lcs{newpage}
% command, then on the next page the title is written in the 
% conventional way and the section is started.
% \begin{verbatim}
% \Section{4cm}{Title of the section}
% Start of the text of the section...
% \end{verbatim}
%
% \subsection{Array building commands}
%
% In order to profit fully of the work of F. Mittelbach, 
% his {\tt array} style file is inluded by default.
%
% \subsection{Equations, figures and floats}
%
% To increase the functionality of the equation, array and figure
% label handling various style files are included (see ``\TeX{} at CERN''
% for details on the commands available with the \Lsty{subeqnarray}, 
% \Lsty{subeqn} and \Lsty{subfigure} styles in question).
%
% \LaTeX{} is known for its poor handling of floats. 
% All too often one ends up with all tables and figures at the
% end of the document. 
% Sometimes can can get around the problem by using enough 
% \Lcs{clearpage} commands, but a simpler solution is
% to take over the placement control of the material and put it
% were it should go oneself (of course one must then
% be sure that there is enough space available, or else\ldots).
% Two enviroments \Lenv{Tabhere} and \Lenv{Fighere} provide the needed
% functionality of handling the caption material correctly in the 
% case of a table and a figure respectively, in both cases forcing
% at the same time the material to be placed {\bf here}, i.e. no
% float is generated.
%
% \subsection{Simple text generating commands}
%
% In order to retain consistency across documents a series
% of text generating commands which start a new paragraph 
% and may or may not be followed by another start of paragraph
% are defined below. 
%
% \begin{tabular}{ll}
% \multicolumn{1}{c}{\bf command} & \multicolumn{1}{c}{\bf description} \\
% \Lcs{Action}                    & writes {\bf Action: }               \\
% \Lcs{Example}                   & writes {\bf Example: }              \\
% \Lcs{Examples}                  & writes {\bf Examples: }             \\
% \Lcs{Idesc}                     & 
%                            writes {\bf Input parameter description:}  \\
% \Lcs{Iind}                      & enter HIDOPT option into index      \\
% \Lcs{Odesc}                     & 
%                           writes {\bf Output parameter description:}  \\
% \Lcs{Pdesc}                     & writes {\bf Parameter description:} \\
% \Lcs{Remark}                    & writes {\bf Remark: }               \\
% \Lcs{Remarks}                   & writes {\bf Remarks:                \\
% \end{tabular}
%
% \subsection{Simple text inserting commands}
%
% Below is list of simple commands, which allow text to be
% inserted in a document in a generic way, i.e. by specifying what
% its function is, rather than the precise formatting on the page.
%
% \begin{tabular}{lp{.7\textwidth}}
% \multicolumn{1}{c}{\bf command} & \multicolumn{1}{c}{\bf description} \\
% \tt\Lcs{Cdef}\{actual text\} &
% {bf Command-index (definition):} The specified text will be put on the page 
% and entered in the index as main command (defining) entry.
% \tt\Lcs{Cind}[index text]\{actual text\} &
% {bf Command-index (reference):} The specified text will be put on the page 
% and entered in the index.
% When it is desirable to differentiate between the actual text on the 
% page and the one in the index, the text to be entered in the index
% can be specified between square brackets as an optional parameter.   
% Either of the two strings can be empty, having the expected result.   \\
% \tt\Lcs{Command}\{text\}        &
% {\bf Command:} The specified text will be put on the page 
% in the proper presentation.                                           \\
% \tt\Lcs{Copt}\{text\}           &
% {\bf Command option:} The specified text will be put on the page 
% in the proper presentation.                                           \\
% \tt\Lcs{Param}\{text\}          &
% {\bf Parameter:} The specified text will be put on the page 
% in the proper presentation.                                           \\
% \tt\Lcs{Rarg}\{text\}           &
% {\bf Routine argument:} The specified text will be put on the page 
% in the proper presentation.                                           \\
% \tt\Lcs{Rdef}\{actual text\} &
% {bf Routine-index (definition):} The specified text will be put on the page 
% and entered in the index as main routine (defining) entry.
% \tt\Lcs{Rind}[index text]\{actual text\} &
% {\bf Routine-index:} Similar to \Lcs{Cind}, but this entity describes
% routine rather than a command. 
% Either of the two strings can be empty, having the expected result.   \\
% \tt\Lcs{Ropt}\{text\}           &
% {\bf Routine option:} The specified text will be put on the page 
% in the proper presentation.                                           \\
% \tt\Lcs{Ucom}\{text\}           &
% {\bf User command:} The specified text corresponds to the text the
% user should type as an input command. Normally the text will be
% ubderlined to clearly mark it.
% \end{tabular}
%
% \subsection{Commands to highlight calling sequences and commands}
%
% A series of commands are presented below which highlight the
% structure of a command or routine or function calling sequence.
% An optional argument allows the user to enter information
% into the left margin, so that commands can be easily tagged.
% The other parameters specify the name of the label with which 
% the entity being defined will be referenced in the document,
% the next argument the part of the command or sequence to be
% highlighted and finally the parameters themselves.
% Apart from the optional (first) parameter between square 
% brackets, all other parameters, as described below {\bf must}
% be specified. In particular if there are no parameters, the last
% parameter to the command should be a blank string {\tt\{ \}}.
%
% The general structure of the commands is as described above
% \begin{verbatim}
% \Sxxx[margintext]{labeltext}{maintext}{parameters}
% \end{verbatim}
% \begin{description}
% \item[{\tt margintext}] This optional parameter specifies the text
%                         should be written into the left margin.
% \item[{\tt labeltext}]  Character string to be used to refer
%                         to the entity in the text.
% \item[{\tt maintext}]   Character string corresponding to the command
%                         being defined. In some cases this string acts
%                         also as {\tt labeltext}. 
% \item[{\tt parameters}] List of the parameters which the command has.
% \end{description}
%
% \begin{verbatim}
% \Shubr[margintext]{Rname}{parameters}
% \end{verbatim}
%
% \Lcs{Shubr} describes a Fortran subroutine. 
% The first {\bf obligatory} parameter {\tt Rname}, which is the
% routine's name, acts in this
% case also as label to be used in a \Lcs{ref} command.
% This means that one can reference the page where the given command
% is defined as \verb+\pageref{Rname}+.
%
% \begin{verbatim}
% \Shubrz[margintext]{Rname}{parameters}
% \end{verbatim}
%
% \Lcs{Shubrz} describes a Fortran subroutine, which should only
% be shown at that point in the text, but for which no index entry
% or \Lcs{label} definition is required. 
% This is sometimes necessary when one wants to show the definition
% of a command in various places, but of course one sets up
% the main pointing reference only at one point in the text.
%
% \begin{verbatim}
% \Shubrii[margintext]{Rname1}{parameters1}{Rname2}{parameters2}
% \end{verbatim}
%
% \Lcs{Shubrii} describes two similar Fortran subroutines
% at the same time, with the word {\bf and} between the two definitions. 
% Of course only one marginal comment can ne specified
% as an optional parameter {\tt margintext} if needed.
%
% \begin{verbatim}
% \Sfunc[margintext]{Fname}{Value=Func(parameters)}
% \end{verbatim}
%
% \Lcs{Sfunc} describes a Fortran function. 
% In this case, as there should always be at least one function
% parameter, the last parameter is parsed and the part between
% the equal sign and the opening bracket will be highlighted.
% As in the case of \Lcs{Shubr} the first obligatory parameter
% is used as reference tag and entered into the index. 
%
% \begin{verbatim}
% \Sfuncii[margintext]{Fnam1}{Val1=Func1(pars1)}{Fnam2}{Val2=Func2(pars2)}
% \end{verbatim}
%
% In complete analogy with \Lcs{Shubrii} the command
% \Lcs{Sfuncii} allows the description of two similar functions in one
% go. The two definitions are seperated by the word {\bf and}.
%
% \begin{verbatim}
% \SCubr[margintext]{Rname}{parameters}
% \end{verbatim}
%
% \Lcs{SCubr} describes a C routine. 
% Its calling sequence is completely identical to the one of \Lcs{Shubr}.
% The only difference is that the word {\tt CALL}, characteristic
% of a Fortran language's calling sequence is not prepended to the
% output string.
%
% \begin{verbatim}
% \SCubrii[margintext]{Rname1}{parameters1}{Rname2}{parameters2}
% \end{verbatim}
%
% \Lcs{SCubrii} describes two similar C routines.
% Similar remarks as for \Lcs{Shubrii} and \Lcs{SCubr} apply.
%
% \subsection{Extended list environments}
%
% The usefulness of the list environments has been increased by the
% introduction of an additional parameter, specifying the width
% of the widest entry in a description type list, of by making the
% lists denser (less spacing between the items) for numbered 
% (enumerated) and unnumbered (itemize) lists.
%
% \begin{tabular}{ll}
% \multicolumn{1}{c}{\bf Environment} & \multicolumn{1}{c}{\bf Description} \\
% \Lenv{DL}{width}                    & 
%  Description list with width of largest item                              \\
%                                     & Item text in bold font              \\
% \Lenv{DLtt}{width}                  & 
%  Description list with width of largest item                              \\
%                                     & Item text in monospaced font        \\
% \Lenv{DLc}{width}                   & 
%  Dense description list with width of largest item                        \\
%                                     & Item text in bold font              \\
% \Lenv{DLttc}{width}                 & 
%  Dense description list with width of largest item                        \\
%                                     & Item text in monospaced font        \\
% \Lenv{OL}                           & Numbered (ordered) list             \\
% \Lenv{OLc}                          & Dense numbered (ordered) list       \\
% \Lenv{UL}                           & Unnumbered (itemize) list           \\
% \Lenv{ULc}                          & Dense unnumbered (itemize) list     \\
% \end{tabular}
%
% \subsection{(Almost) verbatim environments}
%
% Often it is necessary to show text (computer programs, listings) 
% as verbatim, but it would still to be able to use some commands inside
% the environment, to e.g. highlight some text.
% The \Lenv{XMP} like environments, which are inspired by \Lenv{verbatim},
% provide such a possibility.
% Inside all characters, but \bs{}, \{ and \} are output asis,
% and all blanks and lines are output as such.
%
% \begin{tabular}{lp{.75\linewidth}}
% \multicolumn{1}{c}{\bf Environment} & \multicolumn{1}{c}{\bf Description} \\
% \tt\Lenv{XMP}                       & 
%  The basic variant, with the text in a smaller font                       \\
% \tt\Lenv{XMPt}\{Head text\}         & 
%        Like \Lenv{XMP} but with horizontal rule separator and
%        the argument output as accompanying text.                          \\
% \Lenv{XMP}                          & 
%        Special variant pf \Lenv{XMP} with zero vertical separation
%        between text and the environment.                                  \\
% \tt\Lenv{XMPfont}\{Fontsize}        & 
%  Like \Lenv{XMP} but the fontsize must be specified as the parameter.
%  Note that this fontsize must be known to \LaTeX{}                        \\
% \tt\Lenv{XMPfrac}\{Fontsize\}       & 
%  Like \Lenv{XMPfont}, but 
%  this works only with the PostScript font {\tt Courier}.   
%  The parameter {\tt Fontsize} can be chosen completely freely,
%  but each time a new font definition is issued.
%  This option works of course only when working with PostScript fonts      \\
%  \tt\Lenv{XMPin}[pagefrac]\{Title Text\}& 
%         Like \Lenv{XMPt}, but a \Lenv{minipage} is defined, 
%         covering half the width of the page (or else a fraction 
%         {\tt pagefrac} as given by the optional parameter).               \\
%  \tt\Lenv{XMPout}[pagefrac]\{Title Text\}& 
%         Companion command to \Lenv{XMPin}.
%         It likewise defines a \Lenv{minipage} 
%         covering half the width of the page (or else a fraction 
%         {\tt pagefrac} as given by the optional parameter).
%         It however occupies the right side of the page.   
%         Together these two environments allow to show the input
%         to and output from a given command side by side.                 \\
%  \end{tabular}
%
% \section{Reading the {\tt report} styles and redefinitions}
%
% First we will define the current version of this file:
%    \begin{macrocode}
\@ifundefined{@SCubrii}{}{\typeout{Style-Option: `cernman' already 
                          loaded}\endinput}
     \typeout{Style-Option: `cernman' \fileversion 
         \space\space <\filedate> (M.G.)}
%    \end{macrocode}
%
% We define the {\tt twoside} option and desire Marginpars 
% going beyond the page.
%    \begin{macrocode}
\@twosidetrue
\@mparswitchtrue
%    \end{macrocode}
% 
% Next the standard {\tt report} style is read as well as one of its
% substyles {\tt rep1?}, where {\tt?} stands for 0, 1 or 2, depending
% on the pointsize of the document.
%    \begin{macrocode}
\input report.sty\relax
%    \end{macrocode}
%
% The page layout style is chosen to be {\tt headings} 
% (report use by default {\tt plain}).
% As I do not like the uppercasing of the chapter and section
% titles in the running headings, the \Lcs{ps@headings} command
% is changed accordingly (taken from {\tt report.sty}).
%
%    \begin{macrocode}
\if@twoside \def\ps@headings{\let\@mkboth\markboth
\def\@oddfoot{}\def\@evenfoot{}\def\@evenhead{\rm \thepage\hfil \sl
\leftmark}\def\@oddhead{\hbox{}{\sl \rightmark}\hfil
\rm\thepage}\def\chaptermark##1{\markboth{\ifnum \c@secnumdepth>\m@ne
 \@chapapp\ \thechapter. \ \fi ##1}{}}
\def\sectionmark##1{\markright{\ifnum \c@secnumdepth >\z@ \thesection. \ \fi ##1}}}
\else \def\ps@headings{\let\@mkboth\markboth
\def\@oddfoot{}\def\@evenfoot{}\def\@oddhead{\hbox {}\sl \rightmark \hfil
\rm\thepage}\def\chaptermark##1{\markright{\ifnum \c@secnumdepth>\m@ne
 \@chapapp\ \thechapter. \ \fi ##1}}}
\fi
\ps@headings
%    \end{macrocode}
%
% \subsection{Font definitions}
%
% To ease later on we define a few new basic fonts. 
% We make sure that those poor blokes whoh do not yet run with the
% New Font Selection Scheme (NFSS) do not have too many problems by defining
% a simplified functionality in that case.
%    \begin{macrocode}
\ifx\selectfont\undefined% pre-NFSS
  \newcommand{\Stt}[2]{\tt}
  \newcommand{\ttbf}[1]{{\tt#1}}
\else% NFSS
  \newcommand{\ttsc}[1]{{\family{courier}\series{m}\shape{sc}\selectfont#1}}%
  \newcommand{\tensy}{\family{cmsy}\series{m}\shape{n}\size{10}{12pt}\selectfont}%
  \newcommand{\Stt}[2]{\tt\size{#1}{#2}\selectfont}
  \newcommand{\ttbf}[1]{{\tt\bf#1}}
\fi
%    \end{macrocode}
%
% \subsection{Page parameters}
%
% Global typesize independent page layout parameters for a DIN A4 page
% are defined here.
% The definition of these sizes leaves enough space at the sides of the 
% page to also get acceptable results for U.S. folio ({\tt11"$\times$8.5"})
% paper.
%
%    \begin{macrocode}
\setlength{\hoffset}{-1in}
\setlength{\voffset}{-1cm} 
\setlength{\textwidth}{160mm}
\setlength{\evensidemargin}{25mm}
\setlength{\oddsidemargin}{25mm}
\setlength{\marginparwidth}{25mm}
\setlength{\marginparsep}{25mm}
\setlength{\marginparpush}{25mm}
\setlength{\topmargin}{2cm}
\setlength{\headheight}{5mm}
\setlength{\headsep}{8mm}
\setlength{\footheight}{4mm}
\setlength{\footskip}{9mm}
%    \end{macrocode}
%
% Commands which depend on the pointsize or on the use of a specific 
% font are limited to a strict minimum.
% First, in the case of non-NFSS usage, the {\tt ttsc} font is defined,
% Then the baselineskip, i.e. the interline distance is defined.
% From that value and the desired number of lines on the page 
% the height of the text is calculated.
%
%    \begin{macrocode}
\ifcase \@ptsize\relax % 10 pt
\ifx\selectfont\undefined\newfont{\ttsc}{cmtcsc10}\fi
\setlength{\baselineskip}{13pt}
\setlength{\textheight}{48\baselineskip}
\or                    % 11 pt
\ifx\selectfont\undefined\newfont{\ttsc}{cmtcsc10 scaled 1095}\fi
\setlength{\baselineskip}{14pt}
\setlength{\textheight}{45\baselineskip}
\or                    % 12 pt
\ifx\selectfont\undefined\newfont{\ttsc}{cmtcsc10 scaled 1200}\fi
\setlength{\baselineskip}{15pt}
\setlength{\textheight}{41\baselineskip}
\fi
%    \end{macrocode}
%
% \subsection{Titles and headings}
%
% The chapter titles of Lamport really are ways too large.
% Therefore we rebuild the heading part of the \Lcs{chapter} 
% and \Lcs{chapter*} commands.
%    \begin{macrocode}
\def\@makechapterhead#1{             % Heading for \chapter command
  { \parindent 0pt \raggedright 
    \ifnum \c@secnumdepth >\m@ne     % IF secnumdepth > -1 THEN
      \Large\bf \@chapapp{} 
      \thechapter:\ \fi              % Print 'Chapter' and number.
    #1\par 
    \nobreak                         % TeX penalty to prevent page break.
    \vskip 10pt                      % Space between title and text.
  } }
%    \end{macrocode}
%
%    \begin{macrocode}
\def\@makeschapterhead#1{             % Heading for \chapter* command
  { \parindent 0pt \raggedright 
    \Large \bf                        % Title.
    #1\par 
    \nobreak                          % TeX penalty to prevent page break.
    \vskip 10pt                       % Space between title and text.
  } }
%    \end{macrocode}
%
% The other section levels are defined with the help of the 
% \Lcs{@startsection} command, defined in \LaTeX{} as follows:
%
% \begin{verbatim}
% \@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 -- e.g., chapter=1,
%                 section = 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.
% \end{verbatim}
%
%    \begin{macrocode}
\def\section{\@startsection {section}{1}{\z@}{-2.ex plus -1ex minus 
    -.2ex}{2.ex plus .2ex}{\large\bf}}
\def\subsection{\@startsection{subsection}{2}{\z@}{-2.ex plus -1ex minus 
   -.2ex}{1.5ex plus .2ex}{\large\bf}}
\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-2.ex plus
 -1ex minus -.2ex}{1.5ex plus .2ex}{\normalsize\bf}}
\def\paragraph{\@startsection
     {paragraph}{4}{\z@}{2.ex plus 1ex minus .2ex}{-1em}{\normalsize\bf}}
\def\subparagraph{\@startsection
     {subparagraph}{5}{\parindent}{2.ex plus 1ex minus 
     .2ex}{-1em}{\normalsize\bf}}
%    \end{macrocode}
%
% To give the user more control for keeping material together
% on ae same page a few sectioning commands are defined, which have
% as first argument the space (in any of the valid \TeX{} units),
% which must be available on the current page to actually start 
% the section in question and as second argument the section title.
% 
%    \begin{macrocode}
\newcommand{\Section}[2]{\condbreak{#1}\par\section{#2}}
\newcommand{\Subsection}[2]{\condbreak{#1}\par\subsection{#2}}
\newcommand{\Subsubsection}[2]{\condbreak{#1}\par\subsubsection{#2}}
%    \end{macrocode}
%
% \section{Array building commands}
%
% In order to profit fully of the work of F. Mittelbach, 
% his {\tt array} style file is by default included
% and some of its style parameters are defined.
%
%    \begin{macrocode}
\input{array.sty} 
\extrarowheight2pt
\arrayrulewidth.6pt
%    \end{macrocode}
%
%
% \section{Display information}
%
% It is sometimes interesting to be able to define subfigures
% inside a larger figure. Therefore we use {\tt subfigure} style.
% The same holds for the definitions of subdivisions in equations
% and equation arrays. We make use of the {\tt subeqnarray} and 
% {\tt subeqn} styles in this case.
%
%    \begin{macrocode}
\input{subfigure.sty}
\input{subeqnarray.sty}
\input{subeqn.sty}
%    \end{macrocode}
%
% \LaTeX{} is known for its poor handling of floats. 
% Two enviroments {\tt Tabhere} and {\tt Fighere} provide the needed
% functionality of handling the caption material correctly in the 
% case of a table and a figure respectively, in both cases forcing
% at the same time the material to be placed {\bf here}, i.e. no
% float is generated.
%    \begin{macrocode}
\newenvironment{Tabhere}%
     {\condbreak{3cm}\par\leavevmode\def\@captype{table}}{\par}
\newenvironment{Fighere}%
     {\condbreak{3cm}\par\leavevmode\def\@captype{figure}}{\par}
%    \end{macrocode}
%
% While we are at it, we refine the {\tt caption} command a little,
% then go on to tailor the titles for the table of contents,
% the list of tables and figures, and the leaders in the latter two.
%
%    \begin{macrocode}
\long\def\@makecaption#1#2{\vskip10pt
   \setbox\@tempboxa\hbox{#1: #2}
   \ifdim \wd\@tempboxa >\hsize   % IF longer than one line:
       #1: #2\par                 %   THEN set as ordinary paragraph.
     \else                        %   ELSE  center.
       \hbox to\hsize{\hfil\box\@tempboxa\hfil}
   \fi\par\vspace*{10pt}}
\def\tableofcontents{\section*{Table of Contents}\@starttoc{toc}}
\def\listoffigures{\section*{List of Figures}\@starttoc{lof}}
\def\listoftables{\section*{List of Tables}\@starttoc{lot}}
\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}% Align with section titles
\let\l@table\l@figure
%    \end{macrocode}
%
% \subsection{Simple text generating commands}
%
%    \begin{macrocode}
\newcommand{\Action}{\par{\bf Action: }}% Action of  routine
\newcommand{\Example}{\par{\bf Example:}\par}% Example
\newcommand{\Examples}{\par{\bf Examples:}\par}% Examples
\newcommand{\Idesc}{\par{\bf Input parameter description:}\par}% Input
\newcommand{\Iind}[1]{\index{HIDOPT@{\protect\tt HIDOPT\protect\rm option}!#1@{\protect\tt#1}}%
                      \index{#1@{\protect\tt#1}}}% Straight to index
% The command \@minisanitize changes the catcode of $ & # ^ _ % ~ to other 
\def\@minisanitize{\@makeother\$\@makeother\&%\@makeother\ % Blank NOT sanitized
\@makeother\#\@makeother\^\@makeother\_\@makeother\%\@makeother\~}
\def\Lit{\begingroup\@minisanitize\@Lit}
\def\@Lit#1{\tt#1\endgroup}%  Literal string
\newcommand{\Odesc}{\par{\bf Output parameter description:}\par}% Output
\newcommand{\Pdesc}{\par{\bf Parameter Description:}\par}% parameter desc.
\newcommand{\Remarks}{\par{\bf Remarks:}\par}% Reamrks
\newcommand{\Remark}{\par{\bf Remark:}\par}% Remark for routine
\newcommand{\Ucom}[1]{\mbox{\tt\underline{#1}}}% User command to be typed
\def\Cdef#1{{\tt#1}\index{#1@{\protect\tt#1}|Sidef}}% Command definition
\def\Cind{\@ifnextchar [{\@Cind}{\@@Cind}}% Command reference
\def\@Cind[#1]#2{\ifx\empty#2\else{\tt#2}\fi%
     \ifx\empty#1\else\index{#1@{\protect\tt#1}}\fi}% Optional parameter
\def\@@Cind#1{\ifx\empty#1\else{\tt#1}\index{#1@{\protect\tt#1}}\fi}% Straight to index
\def\Pdef#1{{\tt#1}\index{#1@{\protect\tt#1}|Sidef}}% Program definition
\def\Pind{\@ifnextchar [{\@Cind}{\@@Cind}}% Program reference
\def\Rdef#1{{\tt#1}\index{#1@{\protect\tt#1}|Sidef}}% Routine definition
\def\Rind{\@ifnextchar [{\@Cind}{\@@Cind}}% Routine reference
\def\Command#1{\Lit{#1}}% Command
\def\Param#1{\Lit{#1}}% Parameter
\def\Copt#1{\Lit{#1}}% Command option
\def\Ropt#1{\Lit{'#1'}}% Routine option
\def\Rarg#1{\Lit{#1}}% Routine argument
\def\Sidef#1{{\bf#1}}
%    \end{macrocode}
%
%    \begin{macrocode}
\newcommand{\Bbfm}{\mbox{\boldmath}}
\newcommand{\Ebfm}{\mbox{\unboldmath}}
\newcommand{\Dstm}{\displaystyle}
\newcommand{\Tstm}{\textstyle}
\newcommand{\Sstm}{\scriptstyle}
\newcommand{\SSstm}{\scriptscriptstyle}
%\newcommand{\bs}{{\tt\char'134}}% backslash
% Non straightforward characters
\newcommand{\amp}{{\tt\char'046}}
\newcommand{\apos}{{\tt\char'023}}
\newcommand{\Ast}{{\tt\char'052}}
\newcommand{\bsol}{{\tt\char'134}}
\newcommand{\Circ}{{\tt\char'136}}
\newcommand{\Colon}{{\tt\char'072}}
\newcommand{\commat}{{\tt\char'100}}
\newcommand{\dollar}{{\tt\char'044}}
\newcommand{\excl}{{\tt\char'041}}
\newcommand{\us}{{\tt\char'137}}%underscore
\newcommand{\hyphen}{{\tt\char'055}}
\newcommand{\lcub}{{\tt\char'173}}
\newcommand{\lpar}{{\tt\char'050}}
\newcommand{\lsqb}{{\tt\char'133}}
\newcommand{\lsquo}{{\tt\char'022}}
\newcommand{\num}{{\tt\char'043}}
\newcommand{\percnt}{{\tt\char'045}}
\newcommand{\period}{{\tt\char'056}}
\newcommand{\quest}{{\tt\char'077}}
\newcommand{\quot}{{\tt\char'042}}
\newcommand{\rcub}{{\tt\char'175}}
\newcommand{\rpar}{{\tt\char'051}}
\newcommand{\rsqb}{{\tt\char'135}}
\newcommand{\rsquo}{{\tt\char'023}}
\newcommand{\semi}{{\tt\char'073}}
\newcommand{\sol}{{\tt\char'047}}
\newcommand{\Tilde}{{\tt\char'176}}
\newcommand{\verbar}{{\tt\char'174}}
\newcommand{\sbl}{{\tt\char'040}}% significant blank
\let\percent\percnt
\let\lcb\lcub
\let\rcb\rcub
\let\lsb\lsqb
\let\rsb\rsqb
\def\lab{{\tt\char`<}}
\def\rab{{\tt\char`>}}
\let\atsign\commat
\let\US\horbar

\newcommand{\Rule}{\rule[-.9ex]{0ex}{3.1ex}} 

%    \end{macrocode}
%
% \subsection{Definition of extended list environments}
%
%    \begin{macrocode}
\newenvironment{DLtt}[1]% The parameter is the width of the term
                        {\def\DLH{\tt}\begin{DLgen}{#1}}{\end{DLgen}}
\newenvironment{DL}[1]% The parameter is the width of the term
                        {\def\DLH{\bf}\begin{DLgen}{#1}}{\end{DLgen}}
\newenvironment{DLttc}[1]% The parameter is the width of the term
                        {\def\DLH{\tt}\begin{DLgenc}{#1}}{\end{DLgenc}}
\newenvironment{DLc}[1]% The parameter is the width of the term
                        {\def\DLH{\bf}\begin{DLgenc}{#1}}{\end{DLgenc}}
\newenvironment{DLgen}[1]{% Generic description list
    \begin{list}{\phantom{\DLH#1}}%
   {\settowidth{\labelwidth}{\DLH#1\quad}% define global width
    \setlength{\leftmargin}{\labelwidth}%  set global width
    \setlength{\itemindent}{0pt}%          set global width
    \setlength{\labelsep}{0pt}%            horizontal sep. term/item
    \setlength{\itemsep}{1pt}%             vertical sep. item/item
    \setlength{\parsep}{0pt}%              vertical sep. 2 pars in item
    \setlength{\topsep}{.2\baselineskip}%  vertical sep. text/list
    \renewcommand{\makelabel}[1]{\DLH##1\hfil}}}% parameter from item
{\end{list}}% ***** end of environment{DLtt}
\newenvironment{DLgenc}[1]{% Generic dense description list
\begin{list}{\phantom{\DLH#1}}%
   {\settowidth{\labelwidth}{\DLH#1\quad}% define global width
    \setlength{\leftmargin}{\labelwidth}%  set global width
    \setlength{\itemindent}{0pt}%          Everything else 0pt
    \labelsep0pt\itemsep0pt\topsep0pt\partopsep0pt\parskip0pt\parsep0pt
    \renewcommand{\makelabel}[1]{\DLH##1\hfil}}}% get parameter from item
{\end{list}}% ***** end of environment{DLttc}
\newcounter{cOL}
\newenvironment{OL}{% Ordered list
\begin{list}{\hfill{\bf\arabic{cOL}}\hskip6pt}%
   {\setlength{\labelsep}{0pt}% horizontal separation between term and item
    \setlength{\itemsep}{2pt}% vertical separation between two items
    \setlength{\parsep}{0pt}% vertical separation two paragraphs in an item
    \setlength{\topsep}{.5\baselineskip}% vertical separation text/list
    \usecounter{cOL}}}{\end{list}}
\newenvironment{OLc}{% Dense order list
\begin{list}{\hfill{\bf\arabic{cOL}}\hskip6pt}%
   {\setlength{\labelsep}{0pt}% horizontal separation between term and item
    \labelsep0pt\itemsep0pt\topsep0pt\partopsep0pt\parskip0pt\parsep0pt
    \usecounter{cOL}}}{\end{list}}
\newenvironment{UL}{% Unnumbered list
\begin{list}{}
   {\setlength{\labelsep}{0pt}% horizontal separation between term and item
    \setlength{\itemsep}{2pt}% vertical separation between two items
    \setlength{\parsep}{0pt}% vertical separation two paragraphs in an item
    \setlength{\topsep}{.5\baselineskip}% vertical separation text/list
    \renewcommand{\makelabel}{\hfill--\hskip6pt}}}%
{\end{list}}
\newenvironment{ULc}{% Dense unnumbered list
\begin{list}{}{%
    \labelsep0pt\itemsep0pt\topsep0pt\partopsep0pt\parskip0pt\parsep0pt
    \renewcommand{\makelabel}{\hfill--\hskip6pt}}}%
{\end{list}}
\newenvironment{Note}{{\bf Note:}\par}{\par}
\newenvironment{Notes}{{\bf Notes:}\begin{list}{}{%
      \labelsep0pt\itemsep0pt\topsep0pt\partopsep0pt\parskip0pt\parsep0pt
      \renewcommand{\makelabel}{\hfill--\hskip6pt}}}%
    {\end{list}}
%    \end{macrocode}
%
%  \subsection{Literal environemnts}
%  These environments look live \Lenv{verbatim}, but they allow commands
%  inside (inspired by {\tt alltt} style).
%
%    \begin{macrocode}
\newenvironment{XMP}%  All characters verbatim but { } \
{\begingroup\trivlist \item[]\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}
\obeylines \tt \catcode``=13 \@noligs 
\@makeother\ \@makeother\$\@makeother\&\@makeother\#\@makeother\^
\@makeother\^^K\@makeother\_\@makeother\^^A\@makeother\%\@makeother\~
\frenchspacing\@vobeyspaces\footnotesize}{\endtrivlist\endgroup}

\newenvironment{XMPt}[1]%  All characters verbatim but { } \
{\condbreak{2cm}
\begin{center}
\mbox{}\\[-1cm]
\makebox[\linewidth][l]{\vrule width .4pt height 0mm depth 3mm \hrulefill
\vrule width .4pt height 0mm depth 3mm}\\[-1.5ex]
\mbox{\bf\footnotesize#1}
\end{center}
\vspace*{-5mm}
\begin{XMP}}% beginning XMP environment
{\end{XMP}\vspace*{-2.5ex}  % end XMP environment followed by bottom line
\makebox[\linewidth][l]{\vrule width .4pt height 2mm depth 0mm \hrulefill
\vrule width .4pt height 2mm depth 0mm}
\vskip1ex\par}% End of environment XMPt

\newenvironment{XMPzskip}%  All characters verbatim but { } \
{\begingroup\partopsep\z@\parsep\z@\listparindent\z@\topsep\z@
\leftskip\@totalleftmargin\rightskip\z@
\parindent\z@\parfillskip\@flushglue\parskip\z@
\trivlist\partopsep\z@\parsep\z@\listparindent\z@\topsep\z@
\item[]\leftskip\@totalleftmargin\rightskip\z@
\parindent\z@\parfillskip\@flushglue\parskip\z@
\@tempswafalse \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par}
\obeylines \tt \catcode``=13 \@noligs
\@makeother\ \@makeother\$\@makeother\&\@makeother\#\@makeother\^
\@makeother\^^K\@makeother\_\@makeother\^^A\@makeother\%\@makeother\~
\frenchspacing\@vobeyspaces\footnotesize}{\endtrivlist\endgroup}

\newenvironment{XMPfont}[1]{% integer font size as parameter      
\begin{XMP}
  \tt\size{#1}{1.2#1pt}\selectfont\hyphenchar\the\font-1}%
{\end{XMP}}% ***** end of environment{XMPfont} 

\newenvironment{XMPfrac}[1]{% font as parameter                  
\begin{XMP}
  \font\Localfont=pcrr at #1pt%
  \Localfont\baselineskip1.2\fontdimen6\font\hyphenchar\the\font-1}%
{\end{XMP}}% ***** end of environment{XMPfrac}
\def\XMPin{\@ifnextchar [{\@XMPin}{\@XMPin[.49]}}
\def\@XMPin[#1]#2{\par\begin{minipage}[t]{#1\linewidth}\vspace*{5mm}\begin{XMPt}{#2}}
\def\endXMPin{\end{XMPt}\end{minipage}\hfill}
\def\XMPout{\@ifnextchar [{\@XMPout}{\@XMPout[.49]}}
\def\@XMPout[#1]#2{\begin{minipage}[t]{#1\linewidth}\vspace*{5mm}\begin{XMPt}{#2}}
\def\endXMPout{\end{XMPt}\end{minipage}\vspace{.5\baselineskip}\par}
%    \end{macrocode}
%
%  \subsection{Literal environemnts}
%  These environments look live \Lenv{verbatim}, but they allow commands
%  inside (inspired by {\tt alltt} style).
%
%    \begin{macrocode}
\def\condbreak#1{\par\@tempdima=#1
\ifdim\pagetotal>0pt
\advance\@tempdima by -\pagegoal
\advance\@tempdima by \pagetotal
\ifdim\@tempdima>0pt\newpage\fi\fi}
%    \end{macrocode}
%
%    \begin{macrocode}
%\def\ps@plain{\let\@mkboth\@gobbletwo
%     \let\@oddhead\@empty\def\@oddfoot{\reset@font\rm\hfil\thepage
%     \hfil}\let\@evenhead\@empty\let\@evenfoot\@oddfoot}
 
%       psboxes.sty
%
% This package enables to put a PostScript drawing behind a TeX box.
% The drawing is parametrized by the position and the size of the
% TeX box. To put a gray [rounded] box behind a word use

%       \PScommands % Once at the begining
%
%       ... text text \psboxit{25 cartouche}{THE WORD} text text
%       \psboxit{/box 0.5 setgray fill}{\spbox{ANOTHER WORD}}
%       text text ...
%
% WARNINGS : * This was written for dvips translator. You may want to
% change ``ps::'' to ``pstext='' to adapt it to others.
%
%            * If your boxes are ill sized try to change 16384 to
% something else (original code used 65536).
% % 65536 is the internal unit of TeX (scaled point, TeXBook page 57)
% Those macros were adapted from Tom Sheffler (CMU)'s psframe.sty style. In
% particular, the spacebox macro was just copied from his style.
%
%       Je'ro^me MAILLOT, INRIA
%       maillot@bora.inria.fr
%       August 1991
%
 
%%
%% PSBOXIT
%%
%% \psboxit{PS program}{TeX stuff}
%%
%% The bounding box of the TeX stuff is pushed on the PostScript stack
%% and then the program in the first argument is called
%%
%% EXAMPLE: set some text on a gray background, Use the SPBOX macro to
%% give some space around the text.
%%
%%      \psboxit{/box 0.5 setgray fill}{\spbox{Some Text}}
%%
%% See \PScommands for the \box definition
%%
 
\long\def\psboxit#1#2{%
\begingroup\setbox0=\hbox{#2}%
\dimen0=\ht0 \advance\dimen0 by \dp0%
    % Write out the PS code to set the current path using HEIGHT,
    % WIDTH , DEPTH of box0.
    \hbox{%
    \special{ps: gsave currentpoint translate
        0
        \number\dp0 \space 15800 div    % hand tuned for dvips
        \number\wd0 \space 15800 div    % hand tuned for dvips
        \number\ht0 \space -15800 div   % hand tuned for dvips
%        \number\dp0 \space 16384 div
%        \number\wd0 \space 16384 div
%        \number\ht0 \space -16384 div   % Bounding box
%        \number\dp0 \space 65536 div
%        \number\wd0 \space 65536 div
%        \number\ht0 \space -65536 div   % Bounding box
        #1 grestore}%
    \copy0%
}%HBOX
\endgroup%
}%
 
% SPACEBOX
%
% This macro simply takes some TeX stuff, and puts FOUR sides on it
% so that the box is the same size as the thing you'd get with
% an \fbox{} command.  (All I did was modify the code for \fbox{}
% so that all rules were replaced with struts).
%
% USAGE: \spbox{text} is just like \fbox{text} but makes no rules
%
% REASON: so that if using \pspath{...}{\fbox{stuff}}
%         there is a way to get another box the same size:
%         \pspath{...}{\spbox{stuff}}
%
\long\def\spbox#1{\leavevmode\setbox1\hbox{#1}%
    \dimen0\fboxrule \advance\dimen0 \fboxsep%
    \advance\dimen0 \dp1%
    \hbox{\lower \dimen0\hbox%
    {\vbox{\hrule height \fboxrule width 0pt%
          \hbox{\vrule width \fboxrule height 0pt \hskip\fboxsep%
          \vbox{\vskip\fboxsep \box1\vskip\fboxsep}\hskip%
                 \fboxsep\vrule width \fboxrule height 0pt}%
                 \hrule height \fboxrule width 0pt}}}}%
 
%
% A Few PostScript definitions to use with \psboxit
% Call \PScommands once at the begining of your program, this will
% define : box roundedbox rectcartouche and cartouche. They are 4
% PostScript programs. Change the values before setlinewidth end
% setgray to customize your boxes
%
%     Ex : \psboxit{25 cartouche}{blah blah}
%          \psboxit{rectcartouche}{blah blah}
%
\long\def\PScommands{\special{! TeXDict begin
/box{%                  Processes the path of a rectangle.
%                       Needs : x0 y0 x1 y1.
newpath 2 copy moveto 3 copy pop exch lineto 4 copy pop pop
lineto exch pop exch pop lineto closepath } bind def
% lineto 4 copy exch pop exch pop lineto closepath } bind def
%
%
/roundedbox{%           Processes the path of a rounded rectangle.
%                       Needs : x0 y0 x1 y1 radius.
%       The bounding box is augmented by +/- radius to allow easily to
%       frame several rounded boxes around the same Texture box. Ex:
%  \psboxit{4 copy 15 roundedbox 25 roundedbox} {\spbox{Some Text}}
%       draws two scaled boxes arond the same word. Delete the `radius
%       sub' and `radius add' commands to suppress that enlargement.
%
/radius exch store
3 2 roll %              x0 x1 y1 y0
2 copy min radius sub /miny exch store max radius add /maxy exch store
2 copy min radius sub /minx exch store max radius add /maxx exch store
newpath
minx radius add miny moveto
maxx miny maxx maxy radius arcto
maxx maxy minx maxy radius arcto
minx maxy minx miny radius arcto
minx miny maxx miny radius arcto 16 {pop} repeat
closepath
}bind def
%
%
/rectcartouche{%        Draws a filled and framed box
%                       Needs : x0 y0 x1 y1
4 copy .9 setgray 5 setlinewidth box fill .25 setgray box stroke
}bind def
%
%
/cartouche{%            Draws a filled and framed rounded box
%                       Needs : x0 y0 x1 y1 radius
5 copy .9 setgray 5 setlinewidth roundedbox fill .25 setgray roundedbox stroke
}bind def
%
%
end }%                  Closes dictionnary
}%


\newdimen\Length%%%%%%%%%%%%%%%%%%%% Define once for further use
\def\Sbox{\@ifnextchar [{\@Sbox}{\@Sbox[ ]}}
\def\@Sbox[#1]#2#3#4{\@Sboxni[#1]{#3}{#4}% 2 is label
\label{#2}\index{#3@{\protect\tt#3}|Sidef}}% ***** end of \newcommand{\Sbox}
\def\Sboxni{\@ifnextchar [{\@Sboxni}{\@Sboxni[ ]}}
\def\@Sboxni[#1]#2#3{\par% margin note, highlight, parameters
\setbox\@tempboxa\hbox{\quad\small\bf#2}
\Length\linewidth
\advance\Length by -\wd\@tempboxa
\advance\Length by -4\tabcolsep
\medskip
\setbox0\hbox{\begin{tabular}{lp{\the\Length}}\box\@tempboxa &\tt #3\end{tabular}}
\condbreak{2cm}
\psboxit{box 0.90 setgray fill}{\llap{\small\bf#1\ }\hbox{\box0}}%
\medskip\par}% ***** end of \newcommand{\Sboxni}

\def\Shubr{\@ifnextchar [{\@Shubr}{\@Shubr[ ]}}
\def\@Shubr[#1]#2#3{\par
\setbox\@tempboxa\hbox{\quad{\tt CALL }\small\bf#2}
\Length\linewidth
\advance\Length by -\wd\@tempboxa
\advance\Length by -4\tabcolsep
\medskip
\setbox0\hbox{\begin{tabular}{lp{\the\Length}}\box\@tempboxa &\tt #3\end{tabular}}
\condbreak{2cm}
\psboxit{box 0.90 setgray fill}{\llap{\small\bf#1\ }\hbox{\box0}}
\label{#2}\index{#2@{\protect\tt#2}|Sidef}%
\medskip\par}% ***** end of \newcommand{\Shubr}

\def\Shubrii{\@ifnextchar [{\@Shubrii}{\@Shubrii[ ]}}
\def\@Shubrii[#1]#2#3#4#5{\par%#1 tag #2 abb. 1 #3 contents 1 #4 abb. 2 #5 contents 2
\condbreak{2cm}
\medskip
\psboxit{box 0.90 setgray fill}{\llap{\small\bf#1\ }\hbox to \hsize{\rule[-.9ex]{0ex}{3.1ex}
\quad{\tt CALL }{\small\bf#2}\hspace{8pt}{\tt#3}{\rm\quad and\quad}
{\tt CALL }{\small\bf#4}\hspace{8pt}{\tt#5}\hfill}}
\label{#2}\index{#2@{\protect\tt#2}|Sidef}\label{#4}\index{#4@{\protect\tt#4}|Sidef}
\medskip\par}% ***** end of \newcommand{\Shubr}

\def\Shubrz{\@ifnextchar [{\@Shubrz}{\@Shubrz[ ]}}
\def\@Shubrz[#1]#2#3{\par
\setbox\@tempboxa\hbox{\quad\small\bf#2}
\Length\linewidth
\advance\Length by -\wd\@tempboxa
\advance\Length by -4\tabcolsep
\setbox0\hbox{\begin{tabular}{lp{\the\Length}}\box\@tempboxa &\tt #3\end{tabular}}
\condbreak{2cm}
\medskip
\psboxit{box 0.90 setgray fill}{\llap{\small\bf#1\ }\hbox{\box0}}%
\medskip\par}

\def\Sfunc{\@ifnextchar [{\@Sfunc}{\@Sfunc[ ]}}
\def\@Sfunc[#1]#2#3{%
 \def\@@Sfunc##1=##2(##3){% Function to parse last argument
  \setbox\@tempboxa\hbox{\quad{\tt##1 = }\small\bf##2}\def\@@Farg{(##3)}}%
 \par\@@Sfunc#3
 \Length\linewidth
 \advance\Length by -\wd\@tempboxa
 \advance\Length by -4\tabcolsep
 \setbox0\hbox{\begin{tabular}{lp{\the\Length}}\box\@tempboxa &\tt\@@Farg\end{tabular}}
 \condbreak{2cm}
 \medskip
 \psboxit{box 0.90 setgray fill}{\llap{\small\bf#1\ }\hbox{\box0}}
 \label{#2}\index{#2@{\protect\tt#2}|Sidef}
 \medskip\par}% ***** end of \newcommand{\Sfunc}

\def\Sfuncii{\@ifnextchar [{\@Sfuncii}{\@Sfuncii[ ]}}
\def\@Sfuncii[#1]#2#3#4#5{\par%#1 tag #2 abb. 1 #3 contents 1 #4 abb. 2 #5 contents 2
 \def\@@Sfunc##1=##2(##3){% Function to parse last argument
  \setbox0\hbox{\quad{\tt##1 = }{\small\bf##2}{\tt (##3)}\hfill}}%
 \par\@@Sfunc#3\setbox1\hbox{\box0}\@@Sfunc#5
 \condbreak{2cm}
 \medskip
 \psboxit{box 0.90 setgray fill}{\llap{\small\bf#1\ }%
              \hbox to \hsize{\rule[-.9ex]{0ex}{3.1ex}\box1{\rm\quad and\quad}\box0}}
 \label{#2}\index{#2@{\protect\tt#2}|Sidef}\label{#4}\index{#4@{\protect\tt#4}|Sidef}
 \medskip\par}% ***** end of \newcommand{\Sfuncii}

\def\SCubr{\@ifnextchar [{\@SCubr}{\@SCubr[ ]}}
\def\@SCubr[#1]#2#3{\par
\setbox\@tempboxa\hbox{\quad\bf#2}
\Length\linewidth
\advance\Length by -\wd\@tempboxa
\advance\Length by -4\tabcolsep
\setbox0\hbox{\begin{tabular}{lp{\the\Length}}\box\@tempboxa &\tt #3\end{tabular}}
\condbreak{2cm}
\medskip
\psboxit{box 0.90 setgray fill}{\llap{\small\bf#1\ }\hbox{\box0}}
\label{#2}\index{#2@{\protect\tt#2}|Sidef}%
\medskip\par}% ***** end of \newcommand{SCubr}

\def\SCubrii{\@ifnextchar [{\@SCubrii}{\@SCubrii[ ]}}
\def\@SCubrii[#1]#2#3#4#5{\par%#1 tag #2 abb. 1 #3 contents 1 #4 abb. 2 #5 contents 2
\condbreak{2cm}
\medskip
\psboxit{box 0.90 setgray fill}{\llap{\small\bf#1\ }\hbox to \hsize{\rule[-.9ex]{0ex}{3.1ex}
\quad{\bf#2}\hspace{8pt}{\tt#3}{\rm\quad and\quad}{\bf#4}\hspace{8pt}{\tt#5}}}
\label{#2}\index{#2@{\protect\tt#2}|Sidef}\label{#4}\index{#4@{\protect\tt#4}|Sidef}
\medskip\par}% ***** end of \newcommand{SCubr}

\def\SKUIP{\@ifnextchar [{\@SKUIP}{\@SKUIP[ ]}}
\def\@SKUIP[#1]#2#3{\vspace{\baselineskip}% #1 to index, #2 in bold #3 parameters
\setbox\@tempboxa\hbox{\quad\small\bf#2}
\Length\linewidth
\advance\Length by -\wd\@tempboxa
\advance\Length by -4\tabcolsep
\setbox0\hbox{\begin{tabular}{lp{\the\Length}}\box\@tempboxa &\tt #3\end{tabular}}
\condbreak{2cm}
\medskip
\psboxit{box 0.90 setgray fill}{\llap{\small\bf#1\ }\hbox{\box0}}
 \label{#2}\index{#2@{\protect\tt#2}|Sidef}
 \medskip\par}% ***** end of \newcommand{\SKUIP}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\@ifundefined{verbatim@font}{\input{verbatim.sty}}{}

\def\load@courier{%
\postscript@fontdef{Courier}{courier}%
{pcrr}{pcrro}{pcrb}{pcrbo}{pcrr}{pcrr}
}
\def\load@helvetica{%
\postscript@fontdef{Helvetica}{helvetica}%
{phvr}{phvro}{phvb}{phvbo}{phvrc}{phvro}
}
\def\load@times{%
\postscript@fontdef{Times}{times}%
{ptmr}{ptmri}{ptmb}{ptmbi}{ptmrc}{ptmro}
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%\input{newarray.sty}% Extensions to array.sty

\parindent=0pt
\parskip.2\baselineskip plus2pt minus2pt
%    \end{macrocode}
%
\endinput
\newdimen\x
{%
\catcode`\p=12
\catcode`\t=12
\gdef\numonly#1pt{%
\def\xx{#1}%
}%
}%
\newcommand{\Prix}{%
  \newcount\Pagec\Pagec=\c@page\advance\Pagec by 2
  \x=\Pagec pt\x=.05\x
\def\Price{%
\expandafter\numonly\the\x
\xx
}%
  \vfill
  {\it Printed at CERN. Price \Price Swiss Centimes}
}

