% \iffalse meta-comment
%
% Copyright 1994 the LaTeX3 project and the individual authors.
% All rights reserved. For further copyright information see the file
% legal.txt, and any other copyright indicated in this file.
% 
% This file is part of the LaTeX2e system.
% ----------------------------------------
% 
%  This system is distributed in the hope that it will be useful,
%  but WITHOUT ANY WARRANTY; without even the implied warranty of
%  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
% 
% 
% IMPORTANT NOTICE:
% 
% For error reports in case of UNCHANGED versions see bugs.txt.
% 
% Please do not request updates from us directly.  Distribution is
% done through Mail-Servers and TeX organizations.
% 
% You are not allowed to change this file.
% 
% You are allowed to distribute this file under the condition that
% it is distributed together with all files mentioned in manifest.txt.
% 
% If you receive only some of these files from someone, complain!
% 
% You are NOT ALLOWED to distribute this file alone.  You are NOT
% ALLOWED to take money for the distribution or use of either this
% file or a changed version, except for a nominal charge for copying
% etc.
% \fi
% \iffalse
%%
%% File `graphpap.dtx'.
%% Copyright (C) 1994 by Leslie Lamport
%%                       all rights reserved.
%%
%
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{graphpap}
%<package>      [1994/08/09 v1.0c Standard LaTeX graphpap package (LL)]
%
%<*driver>
\documentclass{ltxdoc}
\usepackage{graphpap}
\GetFileInfo{graphpap.sty}
\begin{document}
\title{The \textsf{graphpap} package\thanks{This file
        has version number \fileversion, last
        revised \filedate.}}
\author{Leslie Lamport}
\date{\filedate}
 \maketitle
 \DocInput{graphpap.dtx}
\end{document}
%</driver>
% \fi
%
% \CheckSum{114}
%
% \changes{v1.0b}{1994/04/28}{(DPC) convert to doc format}
%
%
% |\graphpaper|\oarg{N}\parg{X,Y}\parg{DX,DY}
%    Makes a grid with left-hand corner at \parg{X,Y}, extending
%    \parg{DX,DY} units in the X and Y directions, where the lines are
%    \emph{N} units apart.  Every fifth line is thick and is numbered.
%    The default value of \emph{N} is 10.  The arguments must all be integers.
%
% \StopEventually
%
%  First, we define three counters.  The first two are defined
%  as raw TeX counters since multiplication and division must be
%  performed in them. 
%    
% \changes{v1.0b}{1994/04/28}{(DPC) Remove allocations.}
%    \begin{macrocode}
%<*package>
% \newcount\@gridx% now  (\@tempcnta)
% \newcount\@gridy% now  (\@tempcntb)
% \newcounter{@grid}
\let\c@@grid\count@
%    \end{macrocode}
%
% Next we define the following commands to draw vertical and horizontal
% grids.  The ``nonum'' commands just draw the grids; the other commands
% also print numbers.  All the arguments must be integers.
%
%   VERTICAL GRIDS
%
%   |\@vgrid|\parg{xpos,ypos}\marg{xincrement}^^A
%              \marg{number-of-lines}\marg{length-of-lines}\\
%   |\@nonumvgrid|\parg{xpos,ypos}\marg{xincrement}\marg{number-of-lines}^^A
%              \marg{length-of-lines}
%     
%   HORIZONTAL GRIDS
%
%     |\@hgrid|\parg{xpos,ypos}\marg{yincrement}^^A
%                \marg{number-of-lines}\marg{length-of-lines}\\
%     |\@nonumhgrid| same as |\@hgrid| but no numbers drawn
% 
%    \begin{macrocode}
\def\@vgrid(#1,#2)#3#4#5{%
  \setcounter{@grid}{#1}%
  \multiput(#1,#2)(#3,0){#4}{\line(0,1){#5}}%
  \multiput(#1,#2)(#3,0){#4}{\@vgridnumber{#3}}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\@vgridnumber#1{%
  \makebox(0,0)[t]{%
    \shortstack{\rule{0pt}{10pt}\\\arabic{@grid}}}%
  \addtocounter{@grid}{#1}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\@nonumvgrid(#1,#2)#3#4#5{%
  \multiput(#1,#2)(#3,0){#4}{\line(0,1){#5}}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\@hgrid(#1,#2)#3#4#5{%
  \setcounter{@grid}{#2}%
  \multiput(#1,#2)(0,#3){#4}{\line(1,0){#5}}%
  \multiput(#1,#2)(0,#3){#4}{\@hgridnumber{#3}}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\@hgridnumber#1{%
  \makebox(0,0)[r]{\arabic{@grid}\hspace{10pt}}%
  \addtocounter{@grid}{#1}}
%    \end{macrocode}
%
%    \begin{macrocode}
\def\@nonumhgrid(#1,#2)#3#4#5{%
  \multiput(#1,#2)(0,#3){#4}{\line(1,0){#5}}}
%    \end{macrocode}
%
% Finally, |\graphpaper| is defined in a straightforward way in terms of
% the commands above.
%    
%  \begin{macro}{\graphpaper}
% \changes{v1.0c}{1994/08/09}{(DPC) add \cs{leavevmode}}
%    \begin{macrocode}
\newcommand\graphpaper[1][10]{\leavevmode\@grid{#1}}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@grid}
% 
% \changes{v1.0b}{1994/04/28}
%     {(DPC) convert ignore spaces between arguments}
%    \begin{macrocode}
\def\@grid#1(#2,#3)#4{\@grid@i{#1}{#2}{#3}(}
%    \end{macrocode}
%  \end{macro}
%
%  \begin{macro}{\@grid@i}
% 
% \changes{v1.0b}{1994/04/28}
%     {(DPC) macro introduced}
%    \begin{macrocode}
\def\@grid@i#1#2#3(#4,#5){%
  \@tempcnta=#4\relax
  \divide\@tempcnta#1\relax
  \advance\@tempcnta1\relax
   {\thinlines\@nonumvgrid(#2,#3){#1}{\@tempcnta}{#5}
    \@tempcnta#4\relax
    \divide\@tempcnta5\relax
    \divide\@tempcnta#1\relax
    \advance\@tempcnta1\relax
    \@tempcntb5\relax
    \multiply\@tempcntb#1\relax
    \thicklines\@vgrid(#2,#3){\@tempcntb}{\@tempcnta}{#5}
    \@tempcnta#5\relax
    \divide\@tempcnta #1\relax
    \advance\@tempcnta1\relax
    \thinlines\@nonumhgrid(#2,#3){#1}{\@tempcnta}{#4}
    \@tempcnta#5\relax
    \divide\@tempcnta5\relax
    \divide\@tempcnta#1\relax
    \advance\@tempcnta1\relax
    \thicklines\@hgrid(#2,#3){\@tempcntb}{\@tempcnta}{#4}}%
  \ignorespaces}
%</package>
%    \end{macrocode}
%  \end{macro}
%
% \Finale
%

