% This should be compiled with plain TeX
\input parimacro.tex
%
% START TYPESET
%
\begintitle
\vskip 2.5truecm
\centerline{\mine User's Guide}
\vskip 1.truecm
\centerline{\mine to}
\vskip 1.truecm
\centerline{\mine PARI-GP}
\vskip 1.truecm
\authors
\centerline{last updated 20 June 1999}
\centerline{for version \vers}
\endtitle

\begintitle
\centerline{Table of Contents}\medskip
\ifsecondpass
  \parskip=0pt plus 1pt
  \parindent=0pt
  \obeylines\input\jobname.toc
\else
% toc is 2 pages long
  \newpage
\fi
\endtitle

\chapno=0
{ \input usersch1 }
{ \input usersch2 }
{ \input usersch3 }
{ \input usersch4 }
{ \input usersch5 }
{ \input appa }
{ \input appb }
{ \input appc }
%
%  INDEX
%

\ifsecondpass\else
  \condwrite\index{The End}
  \immediate\condwrite\toc{Index\string\dotfill\the\pageno}
  \expandafter\end
\fi
\newpage

\newdimen\fullhsize
\fullhsize=\hsize
\advance\hsize by -20pt
\divide\hsize by 2

\def\fullline{\hbox to\fullhsize}
\let\lr=L\newbox\leftcolumn

\headline={\hfil Index\hfil\global\headline={\hfil}}

\def\makeheadline{\vbox to 0pt{\vskip-22.5pt
    \fullline{\vbox to8.5pt{}\the\headline}\vss}
    \nointerlineskip}

\def\makefootline{\baselineskip=24pt\fullline{\the\footline}}

\output={\if L\lr   %pique dans le TeXbook, p257
    \global\setbox\leftcolumn=\columnbox\global\let\lr=R
    \else\doubleformat\global\let\lr=L\fi
    \ifnum\outputpenalty>-20000\else\dosupereject\fi}
\def\doubleformat{\shipout\vbox
    {\makeheadline
    \fullline{\box\leftcolumn\hfil\columnbox}
    \makefootline}
    \advancepageno}
\def\columnbox{\leftline{\pagebody}}
\def\parse !#1#2!#3! {%
     \uppercase{\def\theletter{#1}}\def\theword{#1#2}\def\thepage{#3}}
\def\theoldword{}
\def\theend{The End }
\newif\ifencore

\parskip=0pt plus 1pt
\parindent=0pt
\parfillskip=0pt

\newbox\dbox \setbox\dbox=\hbox to 3truemm{\hss.\hss}
\newskip\dfillskip \dfillskip=.5em plus .98\hsize
\def\dotfill{\leaders\copy\dbox\hskip\dfillskip\relax}

%more efficient to parse the glue specs once and keep them in registers
%for later use.  These govern index lines with too many page numbers to
%fit in one line  (currently only `Hermite normal form'.)
% b: indentation for 2nd and further lines / a: compensation for same,
% and shrinkability for the normal word space
\newskip\interskipa \interskipa=-.4\hsize plus -1.5\hsize minus .11em
\newskip\interskipb \interskipb= .4\hsize plus  1.5\hsize

%cf. The TeXBook, App. D, p393 [GN]:
\def\interpage{,\penalty100\kern0.33em%normal space
  \hskip\interskipa\vadjust{}\penalty10000 \hskip\interskipb\relax}

\loop
  \read\std to\theline
  \ifx\theline\theend\encorefalse\else\encoretrue\fi
\ifencore
  \expandafter\parse\theline
  \ifx\theletter\theoldletter\else
    \endgraf\vskip 10pt plus 10pt\centerline
      {\theletter}\vskip 10pt plus 10pt\fi
  \let\theoldletter\theletter
  \ifx\theword\theoldword
    \ifx\thepage\theoldpage\else\interpage\thepage\fi
  \else
    \relax\endgraf\theword\dotfill\thepage\let\theoldword=\theword
  \fi
  \let\theoldpage=\thepage
\repeat
\end
