% -- -- Hyperfweb.tex -- -- % % This one does the same thing for fweb as Tanmoy Bhattacharyya's % hyperweb.tex does for Pascal web but without the input hacking hacks % % It rather assumes an fweave where every occurrence of a module number % is screened by a macro call, so that the macros downbelow % only have to swich meaning of one macro, according to context % % Please note that this is a supplement not a replacement % for fwebmac.sty % % \input hyperbasics \def\HySRnull#1{#1} \let\HySR=\HySRnull \def\HySRef#1{\hyperref{}{section}{#1}{#1}} % % % % % \def\note#1#2.{\WY\noindent{\let\HySR=\HySRef \hangindent2em\baselineskip10pt\eightrm#1~#2.\par}} \def\startsection{\WQ\noindent{\let\*=\empty\bf\hyperdef\hypernoname {section}{\modstar}{\let\*=\lapstar\modstar.}% \ifx\includefile\empty\else\ [{\tt\includefile}]\fi\quad}} \def\WX#1:#2\X#3\X{\ifmmode\gdef\XX{\null$\null}\else\gdef\XX{}\fi \XX$\langle\,$#2{\let\HySR=\HySRef \eightrm\kern.5em#1}$\,\rangle^{\rm #3}$\XX} \def\lheader{\mainfont\hyperdef\hypernoname{page}{\the\pageno}% {\the\pageno}\eightrm\qquad\Whead\hfill\Wtitle\qquad \ifnum\pageno=\contentspageno\else \tensy x\mainfont\Wmodno \fi} \def\rheader{\ifnum\pageno=\contentspageno\else \tensy x\mainfont\Wmodno \fi \eightrm\qquad\Wtitle\hfill\Whead \qquad\mainfont\hyperdef\hypernoname{page}{\the\pageno}% {\the\pageno}} \newbox\hyperbox \newif\iffooter\footertrue \def\normaloutput#1#2#3{ \ifodd\pageno\hoffset=\pageshift\fi \shipout\vbox { \vbox to\fullpageheight { \iftitle\global\titlefalse \else \hbox to\pagewidth {\vbox to10pt{}% \ifidenticalpageheads#2\else \ifodd\pageno #3% Pg nos alternate left \& right. \else#2\fi \fi }% \fi \vfill#1% Parameter |#1| is the page itself. \iffooter\vfill\copy\hyperbox\fi } } \global\advance\pageno by1} {\boxmaxdepth=0pt\relax\global \setbox\hyperbox\hbox to \pagewidth{GO TO:\hfil\hyperref{}{page}{1}{first page}\hfil\hyperref{}{section}{INDEX}{Index}\hfil\hyperref{}{section}% {SECTIONS}{Section Names}\hfil\hyperref{}{section}{CONTENTS}{Contents}}} \iffooter\advance\pageheight by -\ht\hyperbox\setpage\relax\fi \def\Winx{\par\vskip6pt plus 1fil \let\HySR=\HySRef \write\cont{}% Ensure that the contents file isn't empty \closeout\cont % The contents information has been fully gathered \output{\ifpagesaved\normaloutput{\box\Sbox}\lheader\rheader\fi \global\setbox\Sbox=\page \global\pagesavedtrue} \pagesavedfalse \eject % Eject the page-so-far and predecessors \setbox\Sbox\vbox{\unvbox\Sbox}% Take it out of its box \vsize=\pageheight \advance\vsize by -\ht\Sbox % The remaining height \hsize=.5\pagewidth \advance\hsize by -10pt % Column width for the index (20pt between cols) \parfillskip 0pt plus .6\hsize % Try to avoid almost empty lines \def\lr{L}% This tells whether the left or right column is next \output{\if L\lr\global\setbox\Lbox=\page \gdef\lr{R} \else\normaloutput{\vbox to\pageheight{\box\Sbox\vss \hbox to\pagewidth{\box\Lbox\hfil\page}}}\lheader\rheader \global\vsize\pageheight\gdef\lr{L}\global\pagesavedfalse\fi} %% \message{Index:} \parskip 0pt plus .5pt \outer\def\:##1, {\par\hangindent2em\noindent##1:\kern1em}% Index entry \def\[##1]{$\underline{##1}$}% Underlined index item \def\(##1){$^{\rm ##1}$}% Language marker \hyperdef\hypernoname{section}{INDEX}{}% \let\Windexspace\medskip % Spacing between letter groups in index. \rm \rightskip0pt plus 2.5em \tolerance 10000 \let\*=\lapstar \hyphenpenalty 10000 \parindent0pt} \def\Wfin{\par\vfill\eject \ifpagesaved\null\vfill\eject\fi % Output a null index column \if L\lr\else\null\vfill\eject\fi % Finish the current page \parfillskip 0pt plus 1fil \def\rhead{NAMES OF THE SECTIONS} \output{\normaloutput\page\lheader\rheader} \setpage \hyperdef\hypernoname{section}{SECTIONS}{}% \def\note##1##2.{\quad{\eightrm##1 ##2.}} \def\WU{\note{Used in }}% Cross-reference for uses of sections \def\:{\par\hangindent 2em}\let\*=*} \def\Wcon{\par\vfill\eject \rightskip 0pt \hyphenpenalty 50 \tolerance 200 \setpage \output{\normaloutput\page\lheader\rheader} \titletrue % Prepare to output the table of contents \hyperdef\hypernoname{section}{CONTENTS}{} \pageno=\contentspageno \def\rhead{TABLE OF CONTENTS} \topofcontents \catcode`\@=11 \hbox to\hsize{\hfil Section\hbox to3em{\hss Page}} \def\WZ##1##2##3##4{\hbox to\hsize{\kern##1em\ignorespaces##2 \leaders\hbox to .5em{.\hfil}\hfil\ % \let\preserve=\*\let\*=\empty \hyperref{}{section}{##3}{\let\*=\preserve##3}% \hbox to3em{\hss\hyperref{}{page}{##4}{##4}}}} \let\WIM\WIN % Restore the proper definition. \readcontents\relax % Read the contents info. \botofcontents \FWEBend}