% This is LAYOUT.STY from Kent McPherson, SLI Avionic Systems Corp.
%
% Eingetippt von S. Rimmelspacher am 27.05.88
% Geaendert und lauffaehig gemacht von Dietmar Heinrich
% und Harald Meyer, Uni Karlsruhe; 07. Juli 1988
%
% Some correction by A. Samarin, CERN, 11-mar-1990
% 
% Define \bs if it is undefined, redefine
% it if it is already defined.
 
\@ifundefined{bs}{\newcommand\bs{\char '134 }}{}
% [AS]  {\renewcommand\bs{\char '134 }}
\newcount\hofset
\newcount\vofset
\newcount\hofref
\newcount\vofref
\newcount\omargin
\newcount\omarginref
\newcount\emargin
\newcount\emarginref
\newcount\marginref
\newcount\tmargin
\newcount\hheight
\newcount\hsep
\newcount\theight
\newcount\twidth
\newcount\mparsep
\newcount\mparwidth
\newcount\fskip
\newcount\fheight
\newcount\headref
\newcount\bodyref
\newcount\footref
\newcount\margnoteref
\newcount\oneinch
\newcount\paperwidth
\newcount\paperheight
\newcount\baselineyy
\newcount\xworka        % hi
\newcount\yworka        %   lf
\newcount\xworkb        %     sv
\newcount\yworkb        %       ar
\newcount\xworkz        %         ia
\newcount\yworkz        %           bl
\newcount\xworkv        %             en
\newcount\yworkv        %               !!
%
%
% Constants
%
\oneinch=72
\paperwidth=597         % [AS] 210mm for A4
\paperheight=845        % [AS] 297mm for A4
%
% Define the calculations macro
%
\def\layout{
%
% \newpage % neue seite
%
% Convert dimensions to scalar values
% for use in the picture environment
\hofset=\hoffset
  \divide\hofset by 65536
\hofref=\hofset
\advance\hofset by \oneinch
%
\vofset=\voffset
  \divide\vofset by 65536
\vofref=\vofset
\vofset=\paperheight
  \advance\vofset by -\oneinch % [AS]
  \advance\vofset by -\vofref
%
\tmargin=\topmargin
  \divide\tmargin   by 65536
%
\hheight=\headheight
  \divide\hheight   by 65536
\headref=\paperheight           % [AS]
  \advance\headref by -\oneinch % [AS]
  \advance\headref by -\vofref
\advance\headref by -\tmargin
  \advance\headref by -\hheight
%
\hsep=\headsep
  \divide\hsep      by 65536
%
\theight=\textheight
  \divide\theight   by 65536
\bodyref=\headref
  \advance\bodyref by -\hsep
  \advance\bodyref by -\theight
%
\fskip=\footskip
  \divide\fskip     by 65536
%
\fheight=\footheight
  \divide\fheight   by 65536
\footref=\bodyref
  \advance\footref by -\fskip
%
\omargin=\oddsidemargin
  \divide\omargin   by 65536
%\omarginref=\omargin
  \advance\omarginref by \oneinch
%\advance\omarginref by \hofref
%
\emargin=\evensidemargin
  \divide\emargin   by 65536
%\emarginref=\emargin
  \advance\emarginref by \oneinch
%\advance\emarginref by \hofset
%
\twidth=\textwidth
  \divide\twidth    by 65536
%
\mparsep=\marginparsep
  \divide\mparsep   by 65536
%
\mparwidth=\marginparwidth
  \divide\mparwidth   by 65536
%
\baselineyy=\baselineskip
  \divide\baselineyy   by 65536
%
\if@twoside
    \ifodd\count\z@
%
%Twosided, odd page
%
  \typeout{Two-sided document
    style, odd page.}
  \margnoteref=\oneinch
    \advance\margnoteref by \hofref
  \advance\margnoteref by \omargin
  \marginref\margnoteref
  \advance\margnoteref by \twidth
  \advance\margnoteref by \mparsep
 
    \else
%
% Twosided, even page
%
  \typeout{Two-sided document
    style, even page.}
  \margnoteref=\oneinch
    \advance\margnoteref by \hofref
  \advance\margnoteref by \emargin
  \marginref\margnoteref
  \advance\margnoteref by -\mparsep
  \advance\margnoteref by -\mparwidth
 
    \fi
\else
%
% Not twosided, do odd page
%
\typeout{One-sided document style.}
\margnoteref=\oneinch
  \advance\margnoteref by \hofref
\advance\margnoteref by \omargin
\marginref\margnoteref
\advance\margnoteref by \twidth
\advance\margnoteref by \mparsep
\fi
%Dash lines are {\bf one inch} plus 
%{\tt \bs hoffset} and
%{\tt \bs voffset} offsets from left top corner of A4 paper.
% 
%\medskip 
%
%
%Define the picture to be drawn
\setlength{\unitlength}{.5pt}
\begin{picture}(\paperwidth,\paperheight)
\centering
\thicklines
%
% Pagebox and reference lines
%
\put(0,0){\framebox(\paperwidth,\paperheight){\mbox{}}}
\put(0,\vofset){\dashbox{10}(\paperwidth,0){\mbox{}}}
\put(\hofset,0){\dashbox{10}(0,\paperheight){\mbox{}}}
%
% Header 
%
\put(\marginref,\headref){\framebox
  (\twidth,\hheight){\footnotesize Header}}
%
% Body
%
\put(\marginref,\bodyref){\framebox
  (\twidth,\theight){Body}}
%
% zeichne \textwidth
\thinlines
\xworkz = \twidth                       % berechne die...
\divide\xworkz by 2                     % x-koordinate des...
\advance\xworkz by \marginref           % pfeilzentrums
\yworkz = \bodyref                      % pfeil liegt 25 pt ueber..
\advance\yworkz by 50                   % dem unteren ende der body-box
\put(\xworkz,\yworkz){\circle{20}}      % erzeuge einen kringel..
\put(\xworkz,\yworkz){\makebox(0,0){\tiny 8}}
\xworkv = \twidth                       % berechne die...
\divide\xworkv by 2                     % laenge des..
\advance\xworkv by -10                  % pfeils
\advance\xworkz by -10                  % pfeilanfang
\put(\xworkz,\yworkz){\vector(-1,0){\xworkv}}
\advance\xworkz by 20                   % pfeilanfang
\put(\xworkz,\yworkz){\vector(+1,0){\xworkv}}
%
% zeichne \textheight
\yworkz = \theight                      % berechne die...
\divide\yworkz by 2                     % y-koordinate des...
\advance\yworkz by \bodyref             % pfeilzentrums
\xworkz = \marginref                    % pfeil teilt die box im..
\xworka = \twidth                       % verhaeltnis..
\divide\xworka by 5                     % 1:4
\advance\xworkz by \twidth              %
\advance\xworkz by -\xworka             %
\put(\xworkz,\yworkz){\circle{20}}      % erzeuge einen kringel..
\put(\xworkz,\yworkz){\makebox(0,0){\tiny 7}}
\yworkv = \theight                      % berechne die...
\divide\yworkv by 2                     % laenge des..
\advance\yworkv by -10                  % pfeils
\advance\yworkz by -10                  % pfeilanfang
\put(\xworkz,\yworkz){\vector(0,-1){\yworkv}}
\advance\yworkz by 20                   % pfeilanfang
\put(\xworkz,\yworkz){\vector(0,+1){\yworkv}}
%
% show \baselineskip * \baselinestretch  by AS
%
\yworkz = \theight                      
\divide \yworkz by 4
\multiply \yworkz by 3
\advance  \yworkz by \bodyref
\put(\marginref,\yworkz){\framebox(\twidth,\baselineyy){}
}
%\advance  \yworkz by -\baselineyy
%\put(\marginref,\yworkz){\framebox(\twidth,\baselineyy)%
%{Another line of text ...}}
%------------------------
%
% zeichne \hoffset
\yworkz = \footref                      % y-koordinate des pfeilzentrums
\xworkz = \hofset                       % berechne die x-koordinate..
\divide\xworkz by 2                     % des pfeilzentrums
\put(\xworkz,\yworkz){\circle{20}}      % erzeuge einen kringel..
\put(\xworkz,\yworkz){\makebox(0,0){\tiny 1}}
\xworkv = \hofset                       % berechne die...
\divide\xworkv by 2                     % laenge des..
\advance\xworkv by -10                  % pfeils
\advance\xworkz by -10                  % pfeilanfang
\put(\xworkz,\yworkz){\vector(-1,0){\xworkv}}
\advance\xworkz by 20                   % pfeilanfang
\put(\xworkz,\yworkz){\vector(+1,0){\xworkv}}
%
%
% zeichne \oddsidemargin bzw. \evensidemargin
\advance\yworkz by \fheight             % y-koordinate
\xworkz = \marginref                    % berechne die..
\advance\xworkz by \hofset              % x-koordinate
\divide\xworkz by 2                     % des pfeilzentrums
\put(\xworkz,\yworkz){\circle{20}}      % erzeuge einen kringel..
\put(\xworkz,\yworkz){\makebox(0,0){\tiny 3}}
\xworkv = \marginref                    % berechne..
\advance\xworkv by -\hofset             % die..
\divide\xworkv by 2                     % pfeil-..
\advance\xworkv by -10                  % laenge
\advance\xworkz by -10                  % pfeilanfang
\put(\xworkz,\yworkz){\vector(-1,0){\xworkv}}
\advance\xworkz by 20                   % pfeilanfang
\put(\xworkz,\yworkz){\vector(+1,0){\xworkv}}
%
%
% zeichne \marginparwidth
\yworkz = \theight                      % berechne die..
\divide \yworkz by 4                    % y-koordinate..
\advance\yworkz by \bodyref             % des pfeilzentrums
\xworkz = \mparwidth                    % berechne die..
\divide \xworkz by 2                    % x-koordinate..
\advance\xworkz by \margnoteref         % des pfeilzentrums
\put(\xworkz,\yworkz){\circle{20}}      % erzeuge einen kringel..
\put(\xworkz,\yworkz){\makebox(0,0){\tiny 10}}
\xworkv = \mparwidth                    % berechne die..
\divide\xworkv by 2                     % pfeil-..
\advance\xworkv by -10                  % laenge
\advance\xworkz by -10                  % pfeilanfang
\put(\xworkz,\yworkz){\vector(-1,0){\xworkv}}
\advance\xworkz by 20                   % pfeilanfang
\put(\xworkz,\yworkz){\vector(+1,0){\xworkv}}
%
%
% zeichne \marginparsep
\advance\yworkz by 30                   % y-koordinate
%
\if@twoside
    \ifodd\count\z@
%
%Twosided, odd page
%
    \xworkz = \margnoteref                  % pfeilanfang..
    \advance\xworkz by 20                   % rechts
    \put(\xworkz,\yworkz){\vector(-1,0){20}}% pfeil
    \advance\xworkz by 10                   % pfeilzentrum
    \put(\xworkz,\yworkz){\circle{20}}      % erzeuge einen kringel..
    \put(\xworkz,\yworkz){\makebox(0,0){\tiny 9}}
    \xworkz = \margnoteref                  % pfeilanfang..
    \advance\xworkz by -\mparsep            % links..
    \advance\xworkz by -20                  % berechnen
    \put(\xworkz,\yworkz){\vector(+1,0){20}}% pfeil
        \else
%
% Twosided, even page
%
    \xworkz = \marginref                    % pfeilanfang..
    \advance\xworkz by 20                   % rechts
    \put(\xworkz,\yworkz){\vector(-1,0){20}}% pfeil
    \advance\xworkz by 10                   % pfeilzentrum
    \put(\xworkz,\yworkz){\circle{20}}      % erzeuge einen kringel..
    \put(\xworkz,\yworkz){\makebox(0,0){\tiny 9}}
    \xworkz = \marginref                    % pfeilanfang..
    \advance\xworkz by -\mparsep            % links..
    \advance\xworkz by -20                  % berechnen
    \put(\xworkz,\yworkz){\vector(+1,0){20}}% pfeil
    \fi
\else
%
% Not twosided, do odd page
%
\xworkz = \margnoteref                  % pfeilanfang..
\advance\xworkz by 20                   % rechts
\put(\xworkz,\yworkz){\vector(-1,0){20}}% pfeil
\advance\xworkz by 10                   % pfeilzentrum
\put(\xworkz,\yworkz){\circle{20}}      % erzeuge einen kringel..
\put(\xworkz,\yworkz){\makebox(0,0){\tiny 9}}
\xworkz = \margnoteref                  % pfeilanfang..
\advance\xworkz by -\mparsep            % links..
\advance\xworkz by -20                  % berechnen
\put(\xworkz,\yworkz){\vector(+1,0){20}}% pfeil
\fi
%
%
% zeichne \footskip
\xworka = \twidth
\divide\xworka by 8
\xworkz = \marginref                    % berechne die...
\advance\xworkz by \xworka              % x-koordinate des pfeilzentrums
\yworkz = \footref                      % zeichne..
\advance\yworkz by -30                  % unteren..
\put(\xworkz,\yworkz){\vector(0,+1){30}}% pfeil
\advance\yworkz by -10                  %
\put(\xworkz,\yworkz){\circle{20}}      % erzeuge einen kringel..
\put(\xworkz,\yworkz){\makebox(0,0){\tiny 11}}
\yworkz = \bodyref                      % zeichne..
\advance\yworkz by 20                   % oberen..
\put(\xworkz,\yworkz){\vector(0,-1){20}}% pfeil
%
%
% zeichne \footheight
\advance\xworkz by \xworka              % x-koordinate des pfeilzentrums
\yworkz = \footref                      % zeichne..
\advance\yworkz by -30                  % unteren..
\put(\xworkz,\yworkz){\vector(0,+1){30}}% pfeil
\advance\yworkz by -10                  %
\put(\xworkz,\yworkz){\circle{20}}      % erzeuge einen kringel..
\put(\xworkz,\yworkz){\makebox(0,0){\tiny 12}}
\yworkz = \footref                      % zeichne..
\advance\yworkz by \fheight             % den..
\advance\yworkz by 20                   % oberen..
\put(\xworkz,\yworkz){\vector(0,-1){20}}% pfeil
%
%
% zeichne \voffset
\xworkz = \paperwidth                   % x-koordinate des
\advance\xworkz by -50                  % pfeilzentrums
\yworkz = \paperheight                   % berechne..
\yworkv = \paperheight                   % die..
\advance\yworkz by \vofset              % y-koordinate..
\divide\yworkz by 2                     % des pfeilzentrums..
\yworka = \yworkz                       % und..
\advance\yworkv by -\vofset             % die..
\divide\yworkv by 2                     % laenge des..
\advance\yworkv by -10                  % pfeils
\put(\xworkz,\yworkz){\circle{20}}      % erzeuge einen kringel..
\put(\xworkz,\yworkz){\makebox(0,0){\tiny 2}}
\advance\yworkz by -10                  % pfeilanfang
\put(\xworkz,\yworkz){\vector(0,-1){\yworkv}}
\advance\yworkz by 20                   % pfeilanfang
\put(\xworkz,\yworkz){\vector(0,+1){\yworkv}}
%
%
% zeichne \topmargin, headheight, headsep
\xworka = \twidth                       % berechne die
\divide\xworka by 8                     % x-schrittweite
\xworkz = \marginref                    %
\advance\xworkz by \xworka              % x-koordinate des pfeilzentrums
\put(\xworkz,\yworka){\circle{20}}      % erzeuge einen kringel..
\put(\xworkz,\yworka){\makebox(0,0){\tiny 4}}
\advance\xworkz by \xworka              % x-koordinate des pfeilzentrums
\put(\xworkz,\yworka){\circle{20}}      % erzeuge einen kringel..
\put(\xworkz,\yworka){\makebox(0,0){\tiny 5}}
\advance\xworkz by \xworka              % x-koordinate des pfeilzentrums
\put(\xworkz,\yworka){\circle{20}}      % erzeuge einen kringel..
\put(\xworkz,\yworka){\makebox(0,0){\tiny 6}}
\advance\yworka by -10                  % verschiebe..
\xworkz = \marginref                    % den pfeil-..
\advance\xworkz by \xworka              % anfangspunkt
\yworkv = \yworka
\advance\yworkv by -\vofset
\put(\xworkz,\yworka){\vector(0,-1){\yworkv}}
\advance\xworkz by \xworka              % anfangspunkt
\yworkv = \yworka
\advance\yworkv by -\headref
\advance\yworkv by -\hheight
\put(\xworkz,\yworka){\vector(0,-1){\yworkv}}
%
\advance\xworkz by \xworka              % anfangspunkt
\advance\yworkv by \hheight
\put(\xworkz,\yworka){\vector(0,-1){\yworkv}}
%
%
\xworkz = \marginref                    % definiere x-..
\advance\xworkz by \xworka              % anfangspunkt
\yworkv = \headref
\advance\yworkv by \hheight
\advance\yworkv by -20
\put(\xworkz,\yworkv){\vector(0,+1){20}}
%
\advance\xworkz by \xworka              % anfangspunkt
\yworkv = \headref
\advance\yworkv by -20
\put(\xworkz,\yworkv){\vector(0,+1){20}}
%
\advance\xworkz by \xworka              % anfangspunkt
\yworkv = \headref
\advance\yworkv by -20
\advance\yworkv by -\hsep
\put(\xworkz,\yworkv){\vector(0,+1){20}}
%
%
%
\thicklines
% Footer 
%
\put(\marginref,\footref){\framebox
  (\twidth,\fheight){\footnotesize Footer}}
%
% Marginal notes
%
\put(\margnoteref,\bodyref){\framebox
  (\mparwidth,\theight)%
{\footnotesize
\shortstack{Margin\\Notes}}}
%
\end{picture}
 
\medskip 
%
% Display the settings used to make
% the picture.   Note: fractional
% points are truncated, i.e.,
% 72.27pt is displayed as 72pt
%
  \typeout{hoffset = \number\hofref  pt}
  \typeout{voffset = \number\vofref  pt}
  \typeout{textheight = \number\theight  pt}
  \typeout{textwidth  = \number\twidth  pt}
{\tt\footnotesize
\begin{tabular}{l@{\hspace{20pt}}l}
1 one inch + (\bs hoffset = \number\hofref pt) &
2 one inch + (\bs voffset = \number\vofref pt) \\
3 \bs
   \if@twoside
     \ifodd\count\z@ oddsidemargin
     \else evensidemargin
     \fi 
   \else oddsidemargin
   \fi
= \number
   \if@twoside
     \ifodd\count\z@ \omargin
     \else \emargin
     \fi 
   \else \omargin
   \fi
pt & 4 \bs topmargin = \number\tmargin pt \\
5 \bs headheight = \number\hheight pt &
  6 \bs headsep = \number\hsep pt \\
7 \bs textheight = \number\theight pt &
  8 \bs textwidth = \number\twidth pt \\
9 \bs marginparsep = \number\mparsep pt &
  10 \bs marginparwidth = \number\mparwidth pt \\
11 \bs footskip = \number\fskip pt &
  12 \bs footheight = \number\fheight pt \\
?? \bs baselineskip  = \number\baselineyy pt &
?? \bs baselinestretch = \number\baselinestretch
\end{tabular}}
%
}  % end of \def\layout
