From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/blu/tools.dat | 2082 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 2082 insertions(+) create mode 100644 macros/blu/tools.dat (limited to 'macros/blu/tools.dat') diff --git a/macros/blu/tools.dat b/macros/blu/tools.dat new file mode 100644 index 0000000000..b50429d1fb --- /dev/null +++ b/macros/blu/tools.dat @@ -0,0 +1,2082 @@ +%Tools database to cooperate with blue.tex +%Januari 95, cgl@rc.service.rug.nl +%To print the formats properly, copy +%the following 11-lines job and +%substitute the semicolon token +%(=escape char) for `semi-col'. (2x) +% ---Kees--- +%\input blue.tex +%\hfuzz25pt +%\title{File: tools.dat} +%\issue{Version 1.0} +%\beginscript +%\thisverbatim={\catcode`\`semicol'=0 +% \catcode`\!=12 +% \catcode`\|=12 +% \input tools.dat} +%\beginverbatim +%`semi-col'endverbatim +%\endscript +% +% +% +%Syntax included tools +%\tool\tool +%...the file which otherwise would +%...have been input +%\endinput +%Disadvantages: +%-No outer defs allowed. +% (\newtoks\x via \csname x\endcsname) +%-No \par-s, use \endgraf +% +% +% +%Contents: +%- binarytreetool +%- bridgetool +%- crosswordstool +%- hanoitool +%- indextool +% (Sorting in BLUe, quick.tex +% heap.tex and BLUe's Index) +%- language english, russian +%- ntglogo +%- smileys +%- toc +%- xyztool +%- partlogotool +%- pascaltool +% +% +% +%Tools are sorted on name. %;newcol +% +% +% +%begin%%%%%%%%%%%%%%%%%%%%%%%%%binarytree% +\tool\bintreetool +%Because redefined in manmac & BLUe's system. +\catcode`\^=7 +% +\def\startbintree{\catcode`\^^M=9 + \nodes}%neglect e-o-l +% +\def\nodes#1#2{\ifx\sedon#2 + \levelone#1 \sedon\fi + \ea\def\csname#1\endcsname{#2}\nodes} +\def\sedon#1\nodes{\fi + \setbintree\endgroup} +\let\endbintree\sedon +% +\def\fork{\vbox{\offinterlineskip +%Connection lines ____|____ +% | | +\hbox{\ea%empty branche? + \ifx\csname\the\ltree\the\m + \endcsname\relax + \vrule width\tophnshalf + height0pt depth0pt + \else%non-empty branche + \vrule height\vnodesep + \vbox to\vnodesep{\hrule + width\tophnshalf\vss}% + \kern-.2pt\vrule height + 2\vnodesep + depth-\vnodesep\relax + \fi\advance\m1 \ea%empty branche + \ifx\csname\the\ltree\the\m + \endcsname\relax + \vrule width\tophnshalf + height0pt depth0pt + \else%non-empty branch + \kern-.4pt\vrule height + 2\vnodesep + depth-\vnodesep\relax + \vbox to\vnodesep{\hrule + width\tophnshalf\vss}% + \vrule height\vnodesep\relax + \fi}\kern1ex%Separation below + %connection lines +%The sibling nodes +\hbox to\tophns + {\hbox to0pt{\strut\hss + \csname\the\ltree\the\m + \endcsname\hss}\hss + \global\advance\m1 + \hbox to0pt{\strut\hss + \csname\the\ltree\the\m + \endcsname\hss}}}} +% +\def\setbintree{%level >=1 +\ltree0 \m0 +%bounds for recursion +\lu1 %dynamic for the rows +\advance\levelone1 +%defaults +\tophns30ex \vnodesep3ex +%hook to override defaults if neede +\the\everybintree +\the\thisbintree +%dependent quantities +\treewidth3\tophns +\tophnshalf\tophns \divide\tophnshalf2 +%root, level 00 +\vbox{\levelline{\vbox{\offinterlineskip + \hbox to0pt{\strut\hss + \csname\the\ltree\the\m + \endcsname\hss}}}% +\loop\advance\ltree1 \multiply\lu2 +\levelline{\noindent\m1 \fork + \loop\ifnum\m<\lu + \kern\tophns \advance\m1 \fork + \repeat}\tophns\tophnshalf + \divide\tophnshalf2 +\ifnum\ltree<\levelone +\repeat}\thisbintree{}}%end \bintree +% +\def\levelline#1{\hbox to\treewidth{\hss#1\hss}} +\endinput +%end%%%%%%%%%%%%%%%%%%%%binarytreel%!cgl;newcol +% +% +% +%begin%%%%%%%%%%%%%%%%%%b(inary)t(ree)l%!cgl;newcol +\tool\bttool +\message{ ---bttool, Aug 95, cgl--- } +\def\drawbt{\whiteS{120}% + \trttxt{\hss{\small\csname\node\endcsname}}% + \ea\ifx\csname\node0\endcsname\relax + \tbward\fi%Backtrack + \S{80}\advance\k-125 + {\W{\the\k}\S{80}\edef\node{\node0}% + \drawbt}% + \E{\the\k}\S{80}\edef\node{\node1}% + \drawbt\relax} +\def\tbward#1\relax{\fi} +% +\everybt{\k1024\unitlength.02ex\x0pt\y0pt} +%\thisbt{} +\prebt{$$\multiply\count1by280 + \ea\ydim\ea{\the\count1} + \ea\yoffset\ea{\ea-\the\count1}} +\postbt{$$} +\obeylines% +\def\bt#1 #2 + {\ifx\endbt#2\count1=#1 \tbdne\fi% + \ea\def\csname#1\endcsname{#2}\bt}% +\def\tbdne#1\bt{\fi\def\node{1}% + \the\prebt\the\everybt\the\thisbt% + \beginpicture\drawbt\endpicture% + \the\postbt\endgroup}% +\endinput +%end%%%%%%%%%%%%%%%%%b(inary)t(ree)l%!cgl;newcol +% +% +% +%begin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%brd% +\tool\bridgetool +\message{ ---bridgetool, Jan 95, cgl--- } +%Typesetting bridge publications +%via (plain) TeX. Version May 92. +%The macros can als be used within LaTeX. +%Version: 1.1 March 1994 (basically +%unmodified since publication in 1990) +%Author: Kees van der Laan +% Hunzeweg 57, 9893PB, Garnwerd (Gr) +% The Netherlands. 05941-1525, +% cgl@rc.service.rug.nl +%Examples of use have been published in +%TUGboat, 11, 2, 265--276, and MAPS 91.2. +%(A few are appended at the end.) +%The macros consists of 3 indep. parts: +%- dec.tex ((language) declarations, +% used register and +% control sequences) +%- bid.tex (macros for bidding and +% layout of games) +%- play.tex (macros for discussing the +% course of a play) +% %;numvrb +%%%%%%%dec.tex%%%%%%% +%Card definitions +\def\sp{$\spadesuit$} +\def\h{$\heartsuit$} +\def\d{$\diamondsuit$} +\def\cl{$\clubsuit$} +%(Toks register) control sequences +%for hands used by play macros: +%showgame, pc, strip +\ea\let\ea\NT\csname newtoks\endcsname +\NT\hnd%Dynamically one of: +\NT\Ns\NT\Es\NT\Ss\NT\Ws +\NT\Nh\NT\Eh\NT\Sh\NT\Wh +\NT\Nd\NT\Ed\NT\Sd + \NT\Wd %Beware! Already +%in TUGboat.sty in lower case +\NT\Nc\NT\Ec\NT\Sc\NT\Wc +% +\def\bridgeenglish{ +%In central figure NESW +\def\N{N}\def\E{E}\def\S{S}\def\W{W} +%In heading bplay +\def\NS{NS}\def\EW{EW} +\def\TRICK{Trick} +%Definition of hands +%used by bbid +\def\FIH{North}\def\SEH{East} +\def\THH{South}\def\FOH{West} +}% end \bridgeenglish +\bridgeenglish%default +% +\def\LEADN{\gdef\FIP{N}\gdef\SEP{E}% + \gdef\THP{S}\gdef\FOP{W}} +\def\LEADE{\gdef\FIP{E}\gdef\SEP{S}% + \gdef\THP{W}\gdef\FOP{N}} +\def\LEADS{\gdef\FIP{S}\gdef\SEP{W}% + \gdef\THP{N}\gdef\FOP{E}} +\def\LEADW{\gdef\FIP{W}\gdef\SEP{N}% + \gdef\THP{E}\gdef\FOP{S}} +%Definition of counters +%used by bplay +\csname newcount\endcsname\trno +%trick number +%Definition of dimensions used in bbid +\csname newdimen\endcsname\wr %width column +\wr=7ex \relax +\def\bidwidth{4\wr} +%used in crdima +\csname newbox\endcsname\NESW +% +\def\dutch{ +\def\FIH{Noord}\def\SEH{Oost} +\def\THH{Zuid}\def\FOH{West} +\def\N{N}\def\E{O}\def\S{Z} +\def\W{W}\def\EW{OW}\def\NS{NZ} +\def\TRICK{Slag} +\setbox\NESW\hbox{\NESWfig} +}%end \dutch +% +\def\french{ +\def\FIH{Nord}\def\SEH{Est} +\def\THH{Sud}\def\FOH{Ouest} +\def\N{N}\def\E{E}\def\S{S} +\def\W{O}\def\EW{EO}\def\NS{NS} +\def\TRICK{Lev\'ee} +\setbox\NESW\hbox{\NESWfig} +}%end \french +%end input dec.tex +% +%%%%%%%bid.tex%%%%%%% +%Modified central figure +\def\hand#1#2#3#4{% +%Example: \hand{AKJ765}{AK9}{--}{T983} +\vtop{\hbox{\strut\sp\enspace#1} +\hbox{\strut\h\enspace#2} +\hbox{\strut\d\enspace#3} +\hbox{\strut\cl\enspace#4}}%end \vtop +}%end \hand +% +\def\crdima#1#2#3#4#5#6{% +%purpose: layout bridge hand +%#1 left upper text +%#2 right upper text +%#3, #4, #5, #6: N, E, S, W hands +\vbox{\halign{ &##\quad\cr + #1& #3& #2\cr + $\vcenter{#6}$&$\vcenter{\copy\NESW}$& + $\vcenter{#4}$\cr + & #5& \cr + }%end \halign + }%end \vbox +}%end \crdima +% +\def\NESWfig{% +\hbox{\vrule +\vbox{\offinterlineskip\tabskip0pt +\hrule\kern.25ex\halign{\hskip.5ex +##\tabskip.5ex&\hfil##\hfil& +##\hskip.5ex \tabskip0pt\cr +\noalign{\vskip.5ex} + &\hbox to 2ex{\hss\N\hss}& \cr +\noalign{\vskip.25ex} +\kern.25ex\W& &\E\kern.25ex +\cr\noalign{\vskip.25ex} + &\hbox to 2ex{\hss\S\hss}& \cr +\noalign{\vskip.5ex} + }%end \halign +\kern.25ex\hrule}%end \vbox +\vrule}%end \hbox +}% end \NESWfig +\setbox\NESW\hbox{\NESWfig} +% +\def\ebid{\errormessage{% + bbid command is missing}} +% +\def\bbid{\bgroup% + \def\ebid{\egroup\egroup\egroup} + \def\alert{$^A$} + \def\think{$\ldots$\thinspace} + % etc. + \vtop\bgroup + \halign to\bidwidth\bgroup \tabskip2ex + plus 1ex minus 1ex& ##\hfil\cr + \FIH\hfil& \SEH\hfil& + \THH\hfil&\FOH\hfil\cr + \noalign{\vskip.5ex} +}%end \bbid +%end input bid.tex% +% +%%%%%%%play.tex%%%%%%% +%\input{play.tex} +%Modified 11/11/91 Central table +%\bplay etc +% bplay, showgame, pc, strip +\def\eplay{\errormessage{% + bplay command is missing}} +% +\def\bplay{\bgroup\global\trno=0 +\def\eplay{\egroup\egroup} +\def\bintermezzo{\noalign\bgroup + \smallskip\noindent} +\def\eintermezzo{\smallskip\egroup} +\tabskip1ex plus 1fill +\halign to\hsize\bgroup + \tabskip1ex plus 1ex minus 1ex + \global\advance\trno by 1 % + \hbox to.5\wr{\hss\the\trno\hss}%<=! + \hbox to\wr{\pc\FIP##\hss}\hfil& + \hbox to\wr{\pc\SEP##\hss}\hfil& + \hbox to\wr{\pc\THP##\hss}\hfil& + \hbox to\wr{\pc\FOP##\hss}\hfil + \tabskip4ex plus2ex minus1ex& + \hbox to.5\wr{\hss##\hss} + \tabskip1ex plus 1ex minus 1ex& + \hbox to.5\wr{\hss##\hss} + \tabskip1ex plus 1fill\cr + %End template line, next is headline + \omit\hbox to1\wr{\TRICK\hss}\hfil& + \omit\hfil&\omit\hfil&\omit\hfil& + %Note only 3 \omits + \NS&\EW\cr%Headline +}% end \bplay +% +\def\pc#1#2#3{% Version 3/3/90 +%Function: prints card #2#3 and +% deletes it from player #1 +%#1 the hand N, E, S, W(uppercase) +%#2 colour s, h, d, or c +%#3 card value A K Q ... 2, or x +%(or your (consistent/language) choice) +%%%% 1. Update hand \#1#2; e.g. \Ns %%% +\xdef\hnd{\csname #1#2\endcsname} +\strip{#3}{\hnd}% +%%%% 2. print card in table %%% +\xdef\colour{\csname #2\if#2cl\else + \if#2sp\fi\fi\endcsname} +\colour\thinspace #3% +% %Needed for immediate postfix mark(s) +}% end \pc +% +\def\strip#1#2{% Version 3/3/90 +%Function: deletes card value #1 +% from #2, i.e., \Ns, or ... + \def\wis##1#1##2\wis{% + %Function: #1 is deleted from argument + % in \wis ... \wis and result + % is assigned to \hnd + % (last card is replaced by --) + \global\hnd={##1##2} + \xdef\pa{##1} \xdef\pb{##2} + \ifx\pa\empty {\ifx\pb\empty + \global\hnd={--}% void colour + \fi}\fi + }% end \wis + \expandafter\wis\the #2\wis +}% end \strip +% +\def\showgame{ +%Purpose: Shows all cards still active +% in the play, via \Ns, ..., \Wc, +% (note use of upper case for players) +%Used: \crdima, \hand, \LFTINF, \RGTINF +% \Ns, ..., \Wc +$$\crdima{\LFTINF}{\RGTINF}% + {\hand{\the\Ns}{\the\Nh}{\the\Nd}% + {\the\Nc}}% + {\hand{\the\Es}{\the\Eh}{\the\Ed}% + {\the\Ec}}% + {\hand{\the\Ss}{\the\Sh}{\the\Sd}% + {\the\Sc}}% + {\hand{\the\Ws}{\the\Wh}{\the\Wd}% + {\the\Wc}}% +$$}% end \showgame +%end input play.tex %In total: 215 lines +\endinput +%Examples: diagram, bidding, course of play. +% +%\hsize=.5\hsize +%1. Diagram +%$$\crdima{N/None}{\vtop{\hbox{Deal:} +% \hbox{demo}}}% +% {\hand{J74}{AJ}{QJT2}{Q874}}%N +% {\hand{K86}{T9542}{874}{T3}}%E +% {\hand{QT952}{Q83}{AK5}{A6}}%S +% {\hand{A3}{K76}{963}{KJ952}}%W +%$$ +%2. Bidding +%$$\bbid +%1\cl\alert& ? no& 1\sp&\think no\cr +% 2\sp& no& 4\sp& a.p.\cr +%\noalign{\vskip.5ex} +%\alert\ means Alert, +% conventional bid\hidewidth\cr +%? means explanation +% asked\hidewidth\cr +%\think means think +%% pause\hidewidth\cr +%\ebid $$ +%3. Course of play +%\def\LFTINF{Puzzle} +%\def\RGTINF{\vtop{\hbox{6NT,} +% \hbox{by East}}} +% +%\Ns={KQ76}\Es={T9}\Ss={8542}\Ws={AJ3} +%\Nh={J98} \Eh={A2}\Sh={QT74}\Wh={K653} +%\Nd={J942}\Ed={T5}\Sd={Q876}\Wd={AK3} +%\Nc={65}\Ec={KJ9xxxx}\Sc={2}\Wc={AQT} +% +%\showgame +% +%*Problem* How must NS defend in +%order to guarantee 1 trick? +% +%*Solution* Start with a \h\ +%lead in order to break communication. +%N must discard \h s +%and S must discard \sp s. +%\smallskip\noindent +%\LEADS +%\bplay +%%\noalign{\LEADS} +%h4! & hK & h8 & h2 & -- & 1\LEADW\cr +%%\noalign{\LEADW} +%cA & c5 & cx & c2 & -- & 2\cr +%cQ & c6 & cx & s2 & -- & 3\cr +%cT & h9 & cK & s4 & -- & 4\LEADE\cr +%%\noalign{\LEADE} +%cJ & s5 & s3 & s6 & -- & 5\cr +%c9 & s8 & h5 & s7 & -- & 6\cr +%cx & d6 & sJ & d2 & -- & 7\cr +%\bintermezzo +%On lead of the next \cl\ +%neither South nor North can be +%squeezed as can be seen from% +%\def\RGTINF{\vtop{\hbox{NS squeezed on} +% \hbox{\c\ continuation?}}} +%\showgame +%with continuation +%\eintermezzo +%cx & h7 & h6 & hJ & -- & 8\cr +%dT & d7 & dA & d4 & -- & 9\LEADW\cr +%%\noalign{\LEADW} +%dK & d9 & d5 & d8 & -- & 10\cr +%h3 & dJ & hA & hT & -- & 11\LEADE\cr +%\noalign{\LEADE} +%sT & hQ & sA & sQ & -- & 12\LEADW\cr +%\noalign{\LEADW} +%d3 & sK & s9 & dQ & 1 & 12\cr +%\eplay +%\bye %;nonum +% +%Contents +% +%Declarations. +% Newtoks, \NT alias.............10 +% \hnd, \Ns, \Es, \Ss, \Ws....12 +% \Nh, \Eh, \Sh, \Wh....13 +% \Nd, \Ed, \Sd, \Wd....14 +% \Nc, \Ec, \Sc, \Wc....17 +% \bridgeenglish..............19-30 +% \dutch......................51-58 +% \french.....................60-67 +% \N, \E, \S, \W..............21 +% \NS, \EW....................23 +% \TRICK......................24 +% \FIH, \SEH, \THH, \FOH...27-28 +% \sp, \h, \cl, \d..............3-6 +% \LEADN \LEADE \LEADS \LEADW 32-38 +% Newcount +% \trno.......................42 +% Newdimen +% \wr.........................46 +% \bidwidth{4\wr}.............47 +% Newbox +% \NESW...................49, 111 +% +% \hand........................72-78 +% \crdima......................80-92 +% \bbid, \ebid......116-127, 113-114 +% \alert.......................118 +% \think.......................119 +%%%%%%%play.tex%%%%%%% +% \bplay, \eplay....138-162, 135-136 +% \bintermezzo, \eintermezzo 140-142 +% \pc........................164-179 +% \hnd.........................172 +% \colour......................175 +% \strip.....................181-196 +% \showgame..................198-213 +% Examples +% diagram..................219-226 +% bidding..................227-238 +% course of play...........239-289 +% +%History of changes +%July 1994 \c and \s changed into +% \cl and \sp, +% \colour adapted +%March 1994 Prepared for NTG's CD-ROM +% Examples of use added +% NESW figure adapted +%Jan 1994 Submitted to CTAN. +%end%%%%%%%%%%%%%%%%%%%%%%%bridge%!cgl;newcol +% +% +% +%begin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%crs% +\tool\crosswordstool +\message{ ---crosswordstool, + Jan 95, cgl--- } +%From Typesetting crosswords via TeX +%EuroTeX 92, MAPS 92.1 +%NOTE In order to use natural input, +%spaces except for the last one, and not +%let this choice for ;] (space=\relax) +%work through globally, start with +%\bgroup\obeyspaces\let =\relax +%\bdata +% +%\edata +%$$\crw$$%(or \sol) +%\egroup +%;numvrb +\puzzletrue +\csize3ex +% %;numvrb %;vrblin99 +\def\bdata{\bgroup\obeylines\obeyspaces% +\store} +\def\store#1\edata{\egroup\def\data{#1}} +%{\obeyspaces\global\let =\relax} +\def\usersize{} +% ;vrblin=199 +{\catcode`\^=7 \catcode`\^^M=13 %local scope +\gdef\crw{\cnt0\relax\boxit{\usersize% +\hrule\ea\fifol\data\lofif^^M}}% +\gdef\sol{\boxit{\def\num{}\puzzlefalse% +\usersize\hrule\ea\fifol\data\lofif^^M}}% +\gdef\fifol#1^^M{\ifx\lofif#1\lofif\fi% +\processl{#1}\fifol}}%end local scope% +% %;vrblin=299 +\def\lofif#1\fifol{\fi} +\def\processl#1{\hbox{\fifo#1\ofif}\hrule} +\def\fifo#1{\ifx\ofif#1\ofif\fi% +\process#1\fifo} \def\ofif#1\fifo{\fi} +% +\def\process#1{\if*#1\cc\else% +\ifx\relax#1\cc\else% +\ifnum`#1=\uccode`#1\capchar#1\else% +\lowchar#1\fi\fi\fi} +\def\lowchar#1{\hbox to\csize{\vrule +height.8\csize depth.2\csize\relax% +\ifpuzzle\null\else\hss\uppercase{#1}% +\fi\hss\vrule}} +\def\capchar#1{\hbox to\csize{\vrule +height.8\csize depth.2\csize\relax% +\num\ifpuzzle\null\else\hss#1\fi% +\hss\vrule}} +\def\cc{\vrule height.8\csize depth% +.2\csize width\csize} +% +\def\num{\global\advance\cnt1\relax% +\vbox to.8\csize{\rlap{\kern1pt% +\fiverm\the\cnt\hss}\vfil}}% +% %;vrblin=399 +\def\boxit#1{\vbox{\hrule\hbox{\vrule% +\vbox{#1}\vrule}\hrule}}% cgl, oct92 +\endinput %;nonum +%Contents +%\newif +% \ifpuzzle (blue.tex) +%\newcount +% \cnt (blue.tex) +%\newdimen +% \csize (blue.tex) +%Data +% \bdata........................100 +% \store........................102 +% \edata........................102 +% \usersize.....................104 +%Crw +% \crw..........................201 +% \sol..........................203 +%Auxiliaries +% \fifol........................205 +% \process, \processl......305, 301 +% \lofif........................300 +% \lowchar......................309 +% \capchar......................313 +% \cc...........................317 +% \num..........................320 +% \boxit........................400 +%History of changes +%July 1994 In tools.dat to cooperate +% with blue.tex +% \global\let =\relax removed. +%Jan 1994 Submitted CTAN +%1992 Submitted to EuroTeX and MAPS +%end%%%%%%%%%%%%%%%%%%%%%%%%%crs%!cgl;newcol +% +% +% +%begin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%hanoi% +\tool\hanoitool +\message{ ---hanoitool, Jan 95, cgl---} +%Tower of Hanoi macros +%hanoi.tex version 19 dec 91 %;numvrb +%\hanoi changed into \sethanoi June 95 +%\n=number of disks \brd=breadth towers +%\hgt=height tower \dskhgt=height disk +\csname newcount\endcsname\n +\csname newcount\endcsname\brd +\csname newcount\endcsname\hgt +\csname newcount\endcsname\dskhgt +\def\preloop{%To create loopcnt, a + %local loopcounter + %(see also loopy.TeX). + \bgroup \advance\count10 by 1 + \countdef\loopcnt=\count10 + %Symbolic name + \loopcnt=1 %(default) + }%end \preloop +\def\postloop{\loopcnt=0 %Restore + \egroup}%end \postloop +% +%Hanoi macros, top level +\def\sethanoi#1{%Argument can be digit(s) + %or a counter (numeric) + \n=#1 %Assign argument value to \n + \def\II{}\def\III{}%Empty towers + %Next is inspired by the TeXbook, + %p374, 378 + %The initial tower for \I is created + %The initial tower for \I is created + % \def\I{\disksep\i\disksep\ii + % \disksep\iii...\disksep\`n'} + %next to the defs for \i,\ii,...\`n'. + \preloop\ag\def\ag\I\ag{% + \loop + \ea\xdef\csname\romannumeral\loopcnt + \endcsname{\the\loopcnt} + \ag\disksep%separator + \ea\ag\csname + \romannumeral\loopcnt\endcsname + \ifnum\loopcnt<\n + \advance\loopcnt by 1 + \repeat \ag} + \postloop + %For printing, values are needed for + \brd=\n %Breadth of largest disk + \advance\brd by 3 %Little room extra + \dskhgt=1 %Height of disks + \hgt=\n\multiply\hgt by2 %\hgt is height + \advance\hgt by1 %of towers + \showtowers %Print initial state + \Hanoi\I\II\III\n + }%end \sethanoi +% +\def\Hanoi#1#2#3#4{%Moves from #1 to #2, + %with aid of tower #3. + %The number of disks is #4, in a counter. + \ifnum#4=1 %For Tower of 1 disk, + %just move the disk + \movedisk\from#1\to#2% + \showtowers%Print towers after move + \else%Problem of #4 disks is solved by + %- problem of (#4-1) disks, + %- a move, and + %- a problem of (#4-1) disks. + {\advance#4 by-1 \Hanoi#1#3#2#4}% + \movedisk\from#1\to#2% + \showtowers%Print towers after move + {\advance#4 by-1 \Hanoi#3#2#1#4}% + \fi}%end \Hanoi +% +%Moving of the disks, TeXbook, App. D.2 +%Slightly adapted versions of \lop ( +%called \movedisk with function that +%first element of #1 is prefixed to #2) +%and \lopoff modification +\def\movedisk\from#1\to#2{%Move disk from + %tower #1 to tower #2 + \ea\lopoffx#1\lopoffx#1#2} +\def\lopoffx\disksep#1#2\lopoffx#3#4{\ea + \gdef\ea#4\ea{\ea\disksep\ea#1#4} + \gdef#3{#2}%restore stub}%end\lopoffx + }%end \movedisk +% +%Printing tower status +\def\showtowers{%Display pyramids + \endgraf\quad\hbox{\pt\I\ \pt\II\ \pt\III + }\endgraf + }%end \showtowers +% +%Auxiliaries +\def\gobble#1{}%To eat character +% +\def\disksep#1{\hbox to\brd ex{\hss + \vrule width#1ex height\dskhgt ex + \hss}% + }%end \disksep +% +\def\pt#1{%Print Tower. + %#1 is \I, \II, or \III + \vbox to\hgt ex{\baselineskip=.2ex\vss + #1% + %Format pointer underneath + \hbox to\brd ex{\hss + \ea\gobble\string#1\hss}% + }%end vbox + }%end \pt +\endinput %;nonum +%Contents +%\Hanoi .........................51--66 +%\hanoi .........................19--49 +%\movedisk ......................73--79 +%\showtowers ....................82--85 +%Auxiliaries +% \preloop .....................8--15 +% \postloop ...................16--17 +% \lopoffx ....................76--78 +% \gobble .........................88 +% \disksep.....................90--93 +% \pt ........................95--103 +%History of changes +%Jan 95 \\ changed into \disksep +%March 1994 Contents added +% From tugboat.sty into tug.ppt +% 1991 MAPS and TUGboat versions +%end**%%%%%%%%%%%%%%%%%%%%%%%sort%!cgl;newcol +% +% +% +%begin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sort% +\tool\indextool +\message{ ---indextool, Jan 95, cgl--- } +%Shorthands ;numvrb +%Counters in blue.tex +%\newcount\n +%\newcount\k +%\newcount\kk\n=0 +%\newcount\kzero\kzero0 %Bias value +%\newcount\pk +%\newcount\pkone%Used in sortcs +%\newcount\frst%First value of range +%\newcount\last %Last value of range +%\newcount\slast%Successor \last +%\newcount\dif %Difference \last-\frst +%\newcount\nw %Number of words +%\newcount\nc %Number of chars/comp +%\newcount\numex %Number of exchanges +%\newcount\rndval%Random number +%\newcount\rndnum%Seed random generator +%\newcount\rndtmp%Temporary value +%\newcount\status%Status comparison +%;vrblin=100 +%Storing: from copy +\def\seq#1\qes{\k0 \fifow#1 \wofif{} } +%Auxiliaries: FIFO +\def\fifow#1 {\ifx\wofif#1\n\k\wofif\fi + \processw{#1}\fifow} +\def\wofif#1\fifow{\fi} +\def\processw#1{\advance\k1 \ea + \gdef\csname\the\k\endcsname{#1}} +% +%Storing: from file +\def\storefrom#1{%#1 is file name + \immediate\openin\inx=#1 \k\kzero + \continuetrue + \loop\ifeof\inx\continuefalse\fi + \ifcontinue\advance\k1{}% + \read\inx t\ea o\csname\the\k\endcsname + \repeat\advance\k-1\n\k + \immediate\closein\inx} +% +%Storing: random numbers +\def\storerandomn#1{%#1 number of numbers + \n#1\k0 + \loop\ifnum\k<\n\advance\k1 \rnd\ea + \xdef\csname\the\k\endcsname{\the\rndval} + \repeat} +% +%With, due to Reid, 1987 +%Moved into kernel blue.tex +%\def\rnd{\global\multiply\rndnum371{}% +% \global\advance\rndnum1{}% +% \ifnum\rndnum>99999\relax +% \rndtmp\rndnum \divide\rndtmp100000 +% \multiply\rndtmp100000 +% \global\advance\rndnum-\rndtmp +% \fi\global\rndval\rndnum +% \global\divide\rndval1000 } +% +%Storing: random words +\def\storerandomw#1{%#1 number of words + \n#1\nw\n\def\defarr{\ea\gdef + \csname\the\nw\endcsname} + {\loop\ifnum0<\nw{\ag\defarr\ag{% + \randomword}}\advance\nw-1 + \repeat}}%end s-r-w. +% +\def\randomword{\rnd \nc\rndval + \divide\nc15 \advance\nc2 + \loop\ifnum0<\nc\randomchar + \advance\nc-1 + \repeat}%end r-word +% +%Random character is modified +\def\randomchar{\rnd + \multiply\rndval29 \divide\rndval100 + \ifnum26=\rndval\rndval0 \fi + \ifnum26<\rndval\rndval4 \fi +%Mod cgl: I \ag-ed the letter +\ea\ag\ifcase\rndval + a\or b\or c\or d\or e\or f\or g\or h\or + i\or j\or k\or l\or m\or n\or o\or p\or + q\or r\or s\or t\or u\or v\or w\or x\or + y\or z\fi}%end r-char +%;vrblin=200Typeset +%Parameters: Separators +\def\sepn{, }%Number separator +\def\sepw{ } %Word separator +%\csname newtoks\endcsname\indword +\let\sep\sepw +% +\def\prc#1{\init{#1}\def\prc##1{% + \ifnum\last=##1{}\else\ifnum\slast=##1{}% + \last\slast\advance\slast1{}\else + \prtfl\sepn\init{##1}\fi\fi}} +% +\def\init#1{\frst=#1\last=#1\slast=#1{}% + \advance\slast1{}} +% +%Print range: \frst-\last (or \last). +\def\prtfl{\the\frst\ifnum\frst<\last + \advance\frst1{}\ifnum\frst=\last\sepn + \else\nobreak--\nobreak\fi\the\last\fi} +% +%Printing sequences +\def\prts{{\k\kzero%print \1...\n + \def\sep{\let\sep=\sepw}% + \loop\ifnum\k<\n\advance\k1 + \sep\csname\the\k\endcsname + \repeat}}%end \prts +% +\let\prtw=\prts +% +\def\prtn{{\k\kzero%Print number sequence + \loop\ifnum\k<\n\advance\k1 + \ea\prc\csname\the\k\endcsname + \repeat\prtfl}}%end \prtn +% +\def\typindentry#1{%#1 a def + \ea\splitintoks#1% + \ifcase\digit\the\indword\or + {\tt\the\indword}\or + {\tt\char92\the\indword}\or + $\langle\hbox{\the\indword}\rangle$\fi{} + {\oldstyle\pagenrs}.} +\def\hyphen{{\rm-}} +\def\comma{{\rm, }} +% +\def\splitintoks#1 !#2 #3.{\indword{#1}% + \chardef\digit=#2{}\def\pagenrs{#3}} +% +\def\prtind{{\k\kzero + \def\sep{\let\sep\sepw}% + \loop\ifnum\k<\n\advance\k1 + \sep\ea\typindentry\csname\the\k\endcsname% + \repeat}} +%;vrblin=300 +%Sorting in O(nlog n) +\def\sortn{\let\cmp\cmpn\sort\prtn} +% +\def\sortaw{\let\cmp\cmpaw\sort\prtw} +% +\def\sortw{\let\cmp\cmpw{\accdef\sort}\prtw} +% +\def\sort{\heapsort} +% +%Paramaters: ij and accent string +\def\accstr{\`\'\"\^\c} +% +\def\accdef{\def\i{i}\def\j{j}% + \def\'##1{##1a}\def\`##1{##1g}% + \def\"##1{##1t}\def\^##1{##1h}% + \def\c##1{##1c}} +% +\def\ij{ij} +% +%Sorting parameters: exchange macro +\def\xch#1#2{%#1, #2 counter variables + \ea\let\ea\auxone\csname\the#1\endcsname + \ea\let\ea\auxtwo\csname\the#2\endcsname + \ea\global\ea\let\csname\the#2\endcsname + \auxone + \ea\global\ea\let\csname\the#1\endcsname + \auxtwo} +% +%Sorting parameters: number comparison +\def\cmpn#1#2{%#1, #2 are def-s +%Result: \status= 0, 1, 2, if +% \val{#1} =, >, < \val{#2} + \ifnum#1=#2\global\status0 \else + \ifnum#1>#2\global\status1 \else + \global\status2 \fi\fi} +% +%Parameters: comparison of words +\def\cmpw#1#2{%#1, #2 are def-s +%Result: \status= 0, 1, 2, if +% \val{#1} =, >, < \val{#2} + \let\nxt\nxtw\cmpc#1#2} +% +\def\cmpaw#1#2{%#1, #2 are defs with as +%replacement text the words. +%Result: \status= 0, 1, 2, if +% \val{#1} =, >, < \val{#2} + \let\nxt\nxtaw\cmpc#1#2} +% +\def\cmpc#1#2{%#1, #2 are def-s +%Result: \status= 0, 1, 2, if +% \val{#1} =, >, < \val{#2} +\ifproof\global\advance\nc1 + \let\aa#1\let\bb#2\fi + \global\status0 \continuetrue + {\loop\ifx\empty#1\continuefalse\fi + \ifx\empty#2\continuefalse\fi + \ifcontinue\nxt#1\nxtt\nxt#2\nxtu + \lge\nxtt\nxtu + \repeat}\ifnum0=\status + \ifx\empty#1\ifx\empty#2\else + \global\status2 \fi + \else\ifx\empty#2\global\status1 \fi + \fi\fi +% \ifproof\immediate\write16{\aa +% \ifnum0=\status=\else +% \ifnum1=\status>\else +% <\fi\fi\bb} +% \fi%end ifproof +} +% +\def\lge#1#2{%#1 and #2 letter values +%Result: \status= 0, 1, 2, if +% #1 =, >, < #2. +%and \continuefalse if #1=/#2. + \ifnum#1=#2{}\else\continuefalse + \ifnum#1<#2\global\status2 \else + \global\status1 \fi + \fi} +% +\def\nxtw#1#2{\def\pop##1##2\pop{% + \gdef#1{##2}\def\head{##1}}%head and tail + \ea\pop#1\pop%split in head and tail + \ea\loc\head\accstr%\head is an accent cs? + \if<\head\ea\pop#1\pop\fi + \iffound\let\acs\head + \ea\pop#1\pop%next head and tail + \ea\let\ea#2\csname ot\acs\head\endcsname + \else\ea\let\ea#2\csname ot\head\endcsname + \fi} +% +\def\loc#1#2{\def\locate##1#1##2\end + {\ifx\empty##2\empty\foundfalse + \else\foundtrue\fi}\ea\locate#2.#1\end} +% +%Parameters: for ASCII words +\def\nxtaw#1#2{%Result: value of first +%letter of string supplied in #1 is delivered +%in #2. (To be used as a number (\chardef)). +%#1, #2 are control sequences. + \def\pop##1##2\pop{\gdef#1{##2}% + \chardef#2=`##1{}}\ea\pop#1\pop} +% +\def\cmpir#1#2{%#1, #2 defs +%Result: \status= 0, 1, 2 if +% \val{#1} =, >, < \val{#2} +%\immediate\write16{Compared are: #1 and #2}% +\ea\ea\ea\decom\ea#1#2} +% +\def\decom#1 !#2 #3.#4 !#5 #6.{% + \def\one{#1}\def\four{#4}\cmpw\one\four + \ifnum0=\status%Compare secondary keys + \ifnum#2<#5{}\global\status2{}\else + \ifnum#2>#5{}\global\status1{}\else + %Compare tertiary keys + \ifnum#3<#6{}\global\status2{}\else + \ifnum#3>#6{}\global\status1{}\fi + \fi + \fi + \fi + \fi} +% +\def\red{%Reduction of \1,...,\n + \k0\kk0\let\refer\empty + \loop\ifnum\k<\n\advance\k1 + \ea\let\ea\record\csname\the\k\endcsname + \ea\splitwn\record% + \ifx\refer\word%extend with number + \ea\xdef\csname\the\kk\endcsname{% + \csname\the\kk\endcsname, \num}% + \else%write record to \kk + \advance\kk1\let\refer\word\ea\global + \ea\let\csname\the\kk\endcsname\record + \fi + \repeat\n=\kk} +% +\def\redrng{%Reduction of \1,...,\n, with +%range representation of page numbers + {\k1\kk0 \ifnum\n>0 + \ea\let\ea\record\csname\the\k\endcsname + \ea\splitwn\record\let\refer\word + \let\nrsrng\empty\prcrng\num\fi + \loop\ifnum\k<\n\advance\k1 + \ea\let\ea\record\csname\the\k\endcsname + \ea\splitwn\record% + \ifx\refer\word%extend \nrsrng with number + \prcrng\num + \else%write record to \kk + \advance\kk1 \strnrs + \ea\xdef\csname\the\kk\endcsname{\refer{} + \nrsrng.}\let\nrsrng\empty\init\num + \prcrng\num\let\refer\word + \fi + \repeat\ifnum1<\n + \advance\kk1 \strnrs + \ea\xdef\csname\the\kk\endcsname{\word{} + \nrsrng.} + \global\n\kk\fi}} +% +\def\prcrng#1{\init{#1}\def\prcrng##1{% + \ifnum##1=\last\else\ifnum##1=\slast + \last\slast\advance\slast1 \else + \strnrs\init{##1}\fi\fi}} +% +\let\sepn\comma +\def\strnrs{\dif\last\advance\dif-\frst +\edef\nrsrng{\ifx\nrsrng\empty\else + \nrsrng\nx\nx\nx\sepn\fi\the\frst\ifnum0<\dif + \ifnum1=\dif\nx\nx\nx\sepn\the\last + \else\nx\nx\nx\hyphen\the\last + \fi + \fi}} +% +\def\splitwn#1 !#2 #3.{\def\word{#1 !#2}% + \def\num{#3}} +% +\def\getdig#1 !#2 #3.{\def\dig{#2}} +% +\def\sortcs{\global\k0\global\pk\n +\global\pkone\pk\global\advance\pkone1 +%Invariant: 1:k non-cs +% pk+1:n control seq-s +\loop\global\advance\k1 +\ifnum\k<\pkone + \ea\ea\ea\getdig\csname\the\k\endcsname.% + \if2\dig{\continuetrue + \loop + \ifnum\k=\pk\continuefalse + \else\ea\ea\ea\getdig\csname\the\pk + \endcsname.% + \if2\dig + \else\xch\k\pk\continuefalse + \fi + \fi\global\pkone\pk\global\advance\pk-1 + \ifcontinue + \repeat}% + \fi +\repeat}%Result\1:\pk non-cs, \pkone:\n cs +%;vrblin=500 +%Parameters: Ordering table +%suffix g stands for grave, ` +% a stands for aigue, ' +% h stands for hat, ^ +% t stands for trema, " +% c stands for cedille. +\ea\chardef\csname ot=\endcsname=12 +\ea\chardef\csname ot/\endcsname=11 +\ea\chardef\csname ot-\endcsname=13 +\ea\chardef\csname ot,\endcsname=14 +\ea\chardef\csname ot.\endcsname=15 +\ea\chardef\csname ot"\endcsname=9 +\ea\chardef\csname ot&\endcsname=5 +\ea\chardef\csname ot'\endcsname=7 +\ea\chardef\csname ot`\endcsname=8 +\ea\chardef\csname ot*\endcsname=10 +\ea\chardef\csname ot<\endcsname=28 +\ea\chardef\csname ot>\endcsname=29 +\ea\chardef\csname ot!\endcsname=30 +\ea\chardef\csname ot?\endcsname=31 +\ea\chardef\csname ot[\endcsname=13 +\ea\chardef\csname ot]\endcsname=14 +\ea\chardef\csname ot0\endcsname=16 +\ea\chardef\csname ot1\endcsname=17 +\ea\chardef\csname ot2\endcsname=18 +\ea\chardef\csname ot3\endcsname=19 +\ea\chardef\csname ot4\endcsname=20 +\ea\chardef\csname ot5\endcsname=21 +\ea\chardef\csname ot6\endcsname=22 +\ea\chardef\csname ot7\endcsname=23 +\ea\chardef\csname ot8\endcsname=24 +\ea\chardef\csname ot9\endcsname=25 +\chardef\ota=35 \chardef\otA=35 + \chardef\otaa=35 \chardef\otag=35 + \chardef\otat=35\chardef\otah=35 +\chardef\otb=40 \chardef\otB=40 +\chardef\otc=46 \chardef\otC=46 + \chardef\otcc=46 +\chardef\otd=53 \chardef\otD=53 +\chardef\ote=60 \chardef\otE=60 + \chardef\otea=60 \chardef\oteg=60 + \chardef\otet=60 \chardef\oteh=60 +\chardef\otf=67 \chardef\otF=67 +\chardef\otg=74 \chardef\otG=74 +\chardef\oth=81 \chardef\otH=81 +\chardef\oti=88 \chardef\otI=88 + \chardef\otit=88 \chardef\otih=88 +\chardef\otj=95 \chardef\otJ=95 + \chardef\otjt=95 +\chardef\otk=102 \chardef\otK=102 +\chardef\otl=109 \chardef\otL=109 +\chardef\otm=116 \chardef\otM=116 +\chardef\otn=123 \chardef\otN=123 +\chardef\oto=130 \chardef\otO=130 + \chardef\otoa=130 \chardef\otog=130 + \chardef\otot=130 \chardef\otoh=130 +\chardef\otp=137 \chardef\otP=137 +\chardef\otq=143 \chardef\otQ=143 +\chardef\otr=150 \chardef\otR=150 +\chardef\ots=157 \chardef\otS=157 +\chardef\ott=164 \chardef\otT=164 +\chardef\otu=171 \chardef\otU=171 + \chardef\otut=171 \chardef\otuh=171 +\chardef\otv=178 \chardef\otV=178 +\chardef\otw=185 \chardef\otW=185 +\chardef\otx=192 \chardef\otX=192 +\chardef\otij=199 \chardef\otIJ=199 +\chardef\oty=200 \chardef\otY=200 +\chardef\otz=206 \chardef\otZ=206 +%\endinput%;nonum %cgl@rc.service.rug.nl +%Contents sort.tex +%Counters (blue.tex).............5--19 +%newifs ..(blue.tex)............20--23 +%Storing +%from copy ...................101--108 +% \seq...\qes ...................102 +%from file ...................110--117 +% \storefrom ...............112--117 +%random generated items +% \storerandomn ............124--125 +% \rnd .....................128--134 +% \storerandomw ............138--143 +% \randomword ..............145--149 +% \randomchar ..............152--161 +%Typeset +% parameters ................202-205 +% \prc .....................207--210 +% \init ....................212--213 +% \prtfl ...................216--218 +% \prts ....................221--225 +% \prtw .........................227 +% \prtn ....................229--232 +% \typeindentry.............234--240 +% \splitintoks..............244--245 +% \prtind ..................247--251 +%Sorting +% \sortn ........................302 +% \sortaw .......................304 +% \sortw ........................306 +% \sort .........................308 +% \accstr .......................311 +% \accdef ..................313--316 +% \ij ...........................318 +% \xch .....................321--327 +% \cmpn ....................330--335 +% \cmpw ....................338--341 +% \cmpaw ...................343--347 +% \cmpc ....................349--369 +% \lge .....................371--378 +% \nxtw ....................380--388 +% \loc .....................391--393 +% \nxtaw ...................396--401 +% \cmpir ...................403--407 +% \decom ...................409--420 +% \red .....................421--434 +% \redrng ..................436--457 +% \prcrng ..................459--462 +% \strnrs ..................465--471 +% \splitwn .................473--474 +% \getdig .......................476 +% \sortcs ..................478--497 +%Ordering table ..............501--569 +%History of changes +%Oct 1994 OT modified with respect to +% Index sorting. +% Sorting macros adapted and +% extended. +%March 1994 Contents added to file sort.tex. +%Jan 1994 Macros released for CTAN. +%Spring 1993 Abridged version Sorting in BLUe +% for TUG'93 (Aston) TB 14.3, 1993. +%Fall 1992 Release for MAPS 93.1. +%end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%sort%;newcol +% +% +% +%begin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%heap% +%heapsort.tex Jan, 93 +%\newcount\n\newcount\lc\newcount\r +%\newcount\ic\newcount\uone +%\newcount\jc\newcount\jj\newcount\jjone +%\newif\ifgoon +%Non-descending sorting +\def\heapsort{%data in \1 to \n +\r=\n\heap\ic=1{}% +{\loop\ifnum\r>1{}\xch\ic\r + \advance\r-1{}\sift\ic\r +\repeat}} +% +\def\heap{%Transform \1..\n into heap + \lc=\n\divide\lc2{}\advance\lc1{}% + {\loop\ifnum\lc>1{}\advance\lc-1{}% + \sift\lc\n\repeat}} +% +\def\sift#1#2{%#1, #2 counter variables + \jj=#1\uone=#2\advance\uone1{}\goontrue + {\loop\jc=\jj \advance\jj by\jj + \ifnum\jj<\uone + \jjone=\jj \advance\jjone1{}% + \ifnum\jj<#2{}\cmpval\jj\jjone + \ifnum2=\status\jj=\jjone\fi\fi + \cmpval\jc\jj\ifnum2>\status\goonfalse\fi + \else\goonfalse\fi +\ifgoon\xch\jc\jj\repeat}} +% +\def\cmpval#1#2{%#1, #2 counter variables +%Result: \status= 0, 1, 2 if +% \val{#1} =, >, < \val{#2} + \ea\let\ea\aone\csname\the#1\endcsname + \ea\let\ea\atwo\csname\the#2\endcsname + \cmp\aone\atwo} +%\endinput %cgl@rc.service.rug.nl +%end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%heap%;newcol +% +% +% +%begin%%%%%%%%%%%%%%%%%%%%%%%%%%%%quick% +%quick.tex Jan 93 +%\newcount\low\newcount\up\newcount\m +\def\quicksort{%Values given in +%\low,...,\up are sorted, non-descending. +%Parameters: \cmp, comparison. + \ifnum\low<\up\else\brk\fi +%\refval, a reference value selected at random. + \m=\up\advance\m-\low%Size-1 of array part + \ifnum10<\m\rnd\multiply\m\rndval + \divide\m99{}\advance\m\low \xch\low\m + \fi + \ea\let\ea\refval\csname\the\low\endcsname + \m=\low\k=\low\let\refvalcop=\refval + {\loop\ifnum\k<\up\advance\k1{}% + \ea\let\ea\oneqs\csname\the\k\endcsname + \cmp\refval\oneqs\ifnum1=\status + \global\advance\m1{}\xch\m\k\fi + \let\refval=\refvalcop + \repeat}\xch\low\m + {\up=\m\advance\up-1{}\quicksort}% + {\low=\m\advance\low1{}\quicksort}\krb} +% +\def\brk#1\krb{\fi}\def\krb{\relax} +%\endinput %cgl@rc.service.rug.nl +%end%%%%%%%%%%%%%%%%%%%%%%%%quick%;nonum!cgl;newcol +% +% +% +%begin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%index% +%From BLUe's Index Oct 94%;numvrb +\catcode`\@=11 +%Some unused macros are left in. +%\newread\inxin +%\newtoks\indword +%\newtoks\indexfile + %To parameterize the resulting index +%\newtoks\irfile + %To parameterize the IRs +%\newtoks\indexname +%\newtoks\preindex +%\newtoks\postindex +%\newtoks\ignores +%\newtoks\conseqs +%\newtoks\consyms +%\newtoks\srtkeys +%\newtoks\srtkeypairs +%Initializations +\proofmodetrue +\irfile{index} +\indexfile{index.elm} +\preindex{\head{\the\indexname}} +\postindex{} +\immediate\openout\inx=index +\conseqs{\c\space\bf\it\rm\tt\sub\relax} +\consyms{\`\'\"\^\~} +\srtkeypairs{\AmSTeX{amstex} + \LAMSTeX{lamstex} + \LaTeX{latex} + \PS{PostScript} + \TeX{tex}} +\srtkeys{\AmSTeX\LAMSTeX\LaTeX\PS\TeX} +\let\sub\relax +%Macros +% +%User level +%;vrblin=100 +\def\sortindex{%Nov 1994, cgl +%Purpose: +%To sort IR file. +%Input: default index is sorted +% ( file specified in \irfile) +%Output: file index.elm. + \newpage\immediate\closeout\inx + \filetoarray{\the\irfile} + \immediate\write16{Sorting n=\the\n. + Please wait, O(nlog n) process.} + \let\cmp\cmpir\let\nxtw\nxtwindex + \otindex\let\ \space + {%Make sortkey defs + \ea\sokdef\the\srtkeypairs\fedkos\relax + \sort + \let\spaceseparator\space + \setupnxtokens\def\ {\nx\ }% + \immediate\write16{Range reduction.} + \redrngtofile{index.srt} + \immediate\write16{After reduction and + writing to file index.srt; n=\the\n.} + \immediate\write16{Transform + index.srt-->index.elm.} + \tawfiletofile{index.srt}{\the + \indexfile}}} +% +%Set up set of \srtkeys +\def\setupsrtkeys{\ea + \sok\the\srtkeypairs\kos\relax} +%;vrblin=150 +\def\pasteupindex{%May 1995, cgl +%Purpose: +%To set index in (balanced) doublecolumn. +%The index is preceded by +%\chapterhead{\the\indexname} +%and by the contents of +%\preindex and followed by contents of +%\postindex. +%Input: default index.elm is set +% (file specified in \indexfile). +%Biased by manmac's \begindoublecolumns +%\chapterhead{\the\indexname}%in preindex + \begingroup\def\space{{\tt\char32 }}% + \the\preindex\endgraf + \pageheight\vsize + \pagewd\hsize + \pagewidth\pagewd%anachronism + \parindent1em + \output={\global\setbox\partialpage= + \vbox{\unvbox255\bigskip}}% + \eject + \output={\bluedoublecolumnout}% +% \hsize=8.5cm \vsize=51cm%blue.tex values +%2*\hsize+(\hfil)=\pagewd + \divide\hsize2 \advance\hsize-1cm + \advance\vsize\vsize \advance\vsize1cm + \parskip0pt plus.8pt\relax + \obeylines\everypar{% + \hangindent2\parindent}% + \ea\let\csname par\endcsname\endgraf + \let\sub\endgraf +% + \input\the\indexfile\relax +% +%endpasteupindex part biased by +%manmac's \enddoublecolumns + \output={\balancecolumns}\eject + \endgroup + \pagegoal=\vsize\the\postindex} +% +%Add an element #1 to toks var #2 +\def\add#1to#2{#2\ea{\the#2#1}} +% +%Inner level +% +%IR creation +% +\let\spaceseparator\space +%;vrblin=200 +%Things are set up within \makexref to +%allow dynamical use. +\def\makexref{\ifproofmode%Mod cgl oct 94 + \setupsrtkeys + \bgroup\def\ {\string\ }% + \def\process##1{\def##1{\string##1 }}% + \ea\ea\ea\fifo\ea\the\ea\conseqs + \the\srtkeys\ofif + \def\process##1{\def##1{\string##1}}% + \ea\fifo\the\consyms\ofif + \xdef\writeit{\write\inx{\text{} + !\xreftype\spaceseparator + \nx\number\pageno.}}\writeit + \egroup + \else\ifhmode\kern0pt\fi\fi + \ifsilent\ignorespaces\else{\next}\fi} +% +%Sorting +%;vrblin=250 +\def\cmpir#1#2{%#1, #2 defs +%Result: \status= 0, 1, 2 if +% \val{#1} =, >, < \val{#2} +%\immediate\write16{Compared are: *#1* +% and *#2*}% +\ea\ea\ea\decom\ea#1#2} +% +\def\nxtwindex#1#2{% +%Function: +%On input: #1 contains the `word' +%As result: #2 contains the value +% of the first non-ignored token as given +% in the ordering table. +%#1 contains the rest of the `word' + \def\pop##1##2\pop{% + \gdef#1{##2}\def\pophead{##1}}%head and tail + \ea\pop#1\pop%split in head and tail + \ignores\ea\ea\ea{\ea + \the\ea\conseqs\the\consyms}% + \ea\loc\pophead{\the\ignores}% + \iffound\ifx\empty#1 \chardef#2=0 + \else\nxtwindex#1#2 \fi + \else + \ea\loc\pophead{\the\srtkeys}% + \iffound\xdef\pophead{\pophead}% + \ea\ea\ea\gdef\ea\ea\ea#1\ea\ea\ea + {\ea\pophead#1}% + \nxtwindex#1#2 + \else + \ea\let\ea#2\csname ot\pophead\endcsname + \fi + \fi} +% +\def\otindex{%Parameters: Ordering `table' +%Special cases +\ea\chardef\csname ot \endcsname=0 +\ea\chardef\csname ot\space\endcsname=0 +%{|}~(\char126) in ASCII after lowercase +%^ active character +%Bulk according to ACII +\def\process##1{\ea\chardef + \csname ot##1\endcsname=`##1 } +%lowercase letters +\fifo abcdefghijklmnopqrstuvwxyz\ofif +\chardef\otij=`y \chardef\otIJ=`y +%other characters +\fifo !"##$&'()*+,-./0123456789:;<=>?@ + []_`\ofif +%uppercase letters equal lowercase +\def\process##1{\ea\chardef + \csname ot##1\endcsname=\lccode`##1 } +\uppercase{\fifo + abcdefghijklmnopqrstuvwxyz\ofif} +} +% +%Range reduction +%;vrblin=400 +\def\redrngtofile#1{%Reduction of \1,...,\n, +%with range representation of page numbers +\immediate\openout\inx=#1 + {\k1\kk0 \ifnum\n>0 + \ea\ea\ea\splitwn\csname\the\k\endcsname + \let\refer\word + \let\nrsrng\empty\prcrng\num\fi + \loop\ifnum\k<\n\advance\k1 + \ea\ea\ea\splitwn\csname\the\k\endcsname + \ifx\refer\word%extend \nrsrng with number + \prcrng\num + \else%write record to \kk + \advance\kk1 \strnrs + \immediate\write\inx{\refer\spaceseparator + \nrsrng.}% + \let\nrsrng\empty\init\num + \prcrng\num\let\refer\word + \fi + \repeat\ifnum1<\n + \advance\kk1 \strnrs + \immediate\write\inx{\refer\spaceseparator + \nrsrng.}% + \global\n\kk\fi + }\immediate\closeout\inx} +% +%Copying +%;vrblin=500 +\def\filetoarray#1{%#1 is file name + \immediate\openin\inxin=#1\relax + \ifeof\inxin\immediate\write16{File #1 empty + or non-existent.}% + \fi \n\kzero\continuetrue + \loop\ifeof\inxin\continuefalse\fi + \ifcontinue\advance\n1 \immediate + \read\inxin t\ea o\csname\the\n\endcsname +%\immediate\write16{k: \number\n: +% \csname\the\n\endcsname}% + \repeat\advance\n-1 + \immediate\closein\inxin} +% +\def\tawfiletofile#1#2{\continuetrue + \immediate\openin\inxin=#1\relax + \immediate\openout\inx=#2\relax + \loop\read\inxin to\IR + \ifeof\inxin\continuefalse\fi + \ifcontinue\trfandwrite\IR + \repeat + \immediate\closein\inxin + \immediate\closeout\inx +} +% +\def\setupnxtokens{% + \def\process##1{\def##1{\nx##1}}% + \ea\ea\ea\fifo\ea\the\ea\conseqs + \the\srtkeys\ofif + \def\process##1{\def##1{\string##1}}% + \ea\fifo\the\consyms\ofif +} +% +\def\trfandwrite#1{\ea\splitintoks#1% + \immediate\write\inx{\nx\noindent + \ifcase\digit{\the\indword}\or + {\nx\tt\the\indword}\or + \nx\cs{\the\indword}\or + $\nx\langle\hbox{\the\indword}\nx\rangle + $\fi\spaceseparator{\nx + \oldstyle\pagenrs}}}%Period deleted +% +\def\splitintoks#1 !#2 #3.{\indword{#1}% + \chardef\digit=#2\relax\def\pagenrs{#3}} +% +%Typesetting;vrblin=600 +\def\bluedoublecolumnout{% +%Biased by manmac's doublecolumnout + \splittopskip=\topskip + \splitmaxdepth=\maxdepth \dimen@\pageheight + \advance\dimen@ by-\ht\partialpage + \setbox0=\vsplit255 to\dimen@ + \setbox2=\vsplit255 to\dimen@ + \blueonepageout\pagesofar + \unvbox255 \penalty\outputpenalty} +% +\def\blueonepageout#1{% +%Biased by manmac's \onepageout + \shipout\vbox{% + \vbox to\baselineskip{\null + \the\headline\vss}% + \kern2ex + \vbox to\pageheight{#1\vss}% + \kern1ex + \the\footline + }\advancepageno} +% +%Auxiliaries;vrblin=700 +%SetOfKeys +\def\sok#1#2{%Function: +%Build from \srtkeykpairs \srtkeys +%via \ea\sok\srtkeypairs\kos\relax +\ifx#1\kos\kos\fi + \srtkeys\ea{\the\srtkeys#1}\sok} +\def\kos#1\sok{\fi} +% +\def\sokdef#1#2{%Function: +%Build from \srtkeypairs srtkey defs +\ifx#1\fedkos\fedkos\fi + \def#1{#2}\sokdef} +\def\fedkos#1\sokdef{\fi} +\endinput%;nonum +%Table of contents: blue.ind +%Variables +% \indexname...........(blue.tex) +% \preindex....................21 +% \postindex...................22 +% \indword.............(blue.tex) +% \indexfile...........(blue.tex) +% \irfile..............(blue.tex) +% \conseqs.....................24 +% \consyms.....................25 +% \srtkeys.....................31 +% \srtkeypairs..............26-30 +% \ignores.............(blue.tex) +%User level macros +% \sortindex..............101-125 +% \pasteupindex...........151-187 +% \add#1to#2..................190 +%Lower level macros +%IR Creation +% \makexref...............203-216 +%Sorting +% \cmpir..................251-256 +% \nxtwindex..............258-282 +% \otindex................284-304 +%Range reduction +% \redrngtofile...........401-424 +%Copying +% \filetoarray............501-512 +% \tawfiletofile..........514-523 +% \trfandwrite............533-540 +% \setupnxtokens..........525-531 +% \splitintoks............542-543 +%OTR doublecolumns +% \bluedoublecolumnout....601-609 +% \blueonepageout.........611-620 +%Auxiliaries +% \sok....................702-707 +% \sokdef.................709-713 +%History of changes +%Nov 1994 Set up. +%end%%%%%%%%%%%%%%%%%%%index%;newcol +% +% +% +%begin%%%%%%%%%%%%%%%%%%%%%%ntglogo% +\tool\ntglogotool %;numvrb +\message{ ---ntglogo, Jan 95, cgl--- } +\font\calx=cmsy10 scaled \magstep4 +\def\ntglogo{\vbox{% + \hbox{{\calx N}ederlandstalige} + \hbox{\hskip1em{\calx T}\kern-.2ex + \raise-.5ex\hbox{E}\kern.1exX} + \hbox{\hskip2em{\calx G}ebruikersgroep}}} +\setbox\ntglogobox\ntglogo +%end%%%%%%%%%%%%%%%%%%%ntglogo%!cgl;nonum +\endinput +% +% +% +%begin%%%%%%%%%%%%%%%%%%%%%%ntginfo% +\tool\ntginfotool %;numvrb +\message{ ---ntginfo, Jan 95, cgl--- } +\def\dropntglogo{\noindent + \hangindent5\generalindent\hangafter-5 + \smash{\lower3.5\baselineskip + \hbox to0pt{\hskip-.9\hangindent + \copy\ntglogobox\hss}}} +\def\ntginfo{% +\dropntglogo is the Dutch-language-oriented + \TeX{} \UG, founded in + {\oldstyle1988}. The activities + comprise two meetings per year, + with the wealthy MAPS\Dash Minutes + and APpendiceS\Dash + sent out before each meeting.\\ +The activities are biased by sharing experience +in using \AllTeX, \MF, literate programming, +SGML, Adobe's \PS{} and PDF, next to +multi-media, in short, sharing knowledge about +Electronic Publishing, biased by \AllTeX. +The intricacies of the World-Wide-Web in +relation to using \AllTeX{} is also explored. +Less than {\oldstyle5}\% of our energy was +devoted to organizational matters in the past. +Apart from the regular MAPS we enjoy MAPS specials. +Up till {\oldstyle1994} NTG's PR set and David +Salomon's courseware\Dash +Advanced \TeX: Insights and Hindsights\Dash +have appeared in this series. +The {\oldstyle 1994} special has the title +{\oldstyle 100} FAQ: Everything you will ever +have to know about \AllTeX.\ftn{Courtesy Bobby Bodenheimer + and ukTUG, + Reprint Baskerville, {\oldstyle4}, {\oldstyle6}.} +\smallskip +Important activities, listed in historical +order, have been +\bigskip +{\generalindent5\generalindent +\item{\oldstyle1988\quad} NTG's discussion + list and fileserver on the air +\item{\oldstyle1989\quad} NTG days, various + courses have been offered since +\item{\oldstyle1990\quad} SGML-\TeX{} conference, + Babel emerges +\item{\oldstyle1992\quad} Belgian commissioner + for Flemish \AllTeX ies +\item{\oldstyle1993\quad} Goddijn's Bulletin Board +\item{\oldstyle1994\quad} 4All\TeX{} CD-ROM + with turnkey-\TeX{} system +\item{\oldstyle1995\quad} Euro\TeX, + BLUe's system emerges +\smallskip +}\bigskip +Close contacts have been maintained over the +years with the TUG\Dash \TUG\Dash and the +other LUGs\Dash Language-oriented \TUG s. +One can subscribe for a joint membership of +NTG and TUG. +\smallskip +The regular subscription fee for an individual +NTG membership is in the order of +{\it f}~{\oldstyle90} per year. +Students are granted a discount. +An institutional membership is possible. +\smallskip +Enquiries, casu quo a registration form, +can be obtained from + NTG's secretary Postbus {\oldstyle394}, + {\oldstyle1740} AJ Schagen, + ntg@nic.surfnet.nl.} +\endinput +%end%%%%%%%%%%%%%%%%%%%ntginfo%;nonum!cgl;newcol +% +% +% +%begin%%%%%%%%%%%%%%%%%%%%%%smileys% +\tool\smileystool %;numvrb +\message{ ---smileys, July 95, cgl--- }% +%Assumed \mfs etc. available +\def\eyes{{\x250\unitlength\y150\unitlength + \putatxy}%l-eye + {\x750\unitlength\y150\unitlength + \putatxy}%r-eye +}% +\def\lefteyes{{\x200\unitlength\y150\unitlength + \putatxy}%l-eye + {\x700\unitlength\y150\unitlength + \putatxy}%r-eye +}% +\def\squinteyes{{\x300\unitlength\y150\unitlength + \putatxy}%l-eye + {\x700\unitlength\y150\unitlength + \putatxy}%r-eye +}% +\def\winkeye{\initialize + {100}{150}{250}{75}{250}{75}{400}{150}% + {\k0\kmax2\x0pt\y0pt\mfs}%l-winkeye + {\x750\unitlength\y150\unitlength\putatxy}%r-eye +}% +\def\mouth{\initialize + {250}{-250}{500}{-350}{500}{-350}{750}{-250}% + \k0\x0pt\y0pt\mfs} +% +\def\sadmouth{\initialize + {250}{-350}{500}{-250}{500}{-250}{750}{-350}% + \k0\x0pt\y0pt\mfs} +% +\kmax5 %level +\setbox\smileybox=\hbox{\unitlength.01pt + \initialize + 000{650}{1000}{650}{1000}0% + \k0\putatxy\mfs + \initialize + 000{-650}{1000}{-650}{1000}0% + \k0\mfs\y0pt\x\X4\putatxy + \kmax3 + \initialize + {100}{200}{250}{250}{250}{250}{400}{200}% + \k0\x0pt\y0pt\mfs%l-brow + \initialize + {600}{200}{750}{250}{750}{250}{900}{200}% + \k0\x0pt\y0pt\mfs%r-brow + {\x500\unitlength\y150\unitlength\S{250}}%Nose +}% +\endinput +%end%%%%%%%%%%%%%%%%%%%smileys%!cgl;newcol;nonum +% +% +% +%begin%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%toc% +\tool\toctool %;numvrb +\message{---(mini-)ToC, + Sept 95, March 96 cgl---} +%March 96 writing to file is replaced by +% maintaining \toksvar tocvar. +\let\bh\bluehead +\long\def\bluehead#1\par{\bh#1\par +\tocvar\ea{\the\tocvar\par#1}} +\let\bsh\bluesubhead +\long\def\bluesubhead#1\par{\bsh#1\par +\tocvar\ea{\the\tocvar\par\quad#1}} +\let\bssh\bluesubsubhead +\long\def\bluesubsubhead#1\par{\bssh#1\par +\tocvar\ea{\the\tocvar\par\qquad#1}} +\let\be\blueexample +\long\def\blueexample#1\par{\be#1\par +\tocvar\ea{\the\tocvar\par\qquad ex: #1}} +\long\def\pasteuptoc{\newcol + \bluehead Contents\par + \the\tocvar + \let\makesignature\relax} +\endinput +%end**%%%%%%%%%%%%%%%%%%%%%%%toc%!cgl;newcol +% +% +% +%begin%%%%%%%%%%%%%%%%%%%%%%%english% +\tool\englishtool %;numvrb +\message{ ---English , Jan 95, cgl--- } +\abstractname{Abstract} +\acknowledgementsname{Acknowledgements} +\contentsname{Contents} +\indexname{Index} +\examplename{Example} +\keywordsname{Keywords} +\referencesname{References} +\endinput +%end%%%%%%%%%%%%%%%%%%%%english%;nonum +% +% +% +%begin%%%%%%%%%%%%%%%%%%%%%%%russian% +\tool\russiantool %;numvrb +\message{ ---Russian , %Jan 95, + not yet available, cgl--- } +%\abstractname{Abstract} +%\acknowledgementsname{Acknowledgements} +%\contentsname{Contents} +%\indexname{Index} +%\examplename{Example} +%\keywordsname{Keywords} +%\referencesname{References} +%end%%%%%%%%%%%%%%%%%%%%russian%;nonum +\endinput %!cgl;newcol +% +% +% +%begin%%%%%%%%%%%%%%%%%%%%%%%%%xyz% +\tool\xyztool %;numvrb +\def\xyz#1#2#3{\leavevmode% +\message{ ---xyz, jan 95, cgl--- }% + \setbox0\vbox{\hbox{/}\kern0pt}% + \lower2.65\ht0\hbox{\copy0% + \rlap{\qquad#1}}% + \kern-.185\ht0\lower1.8\ht0\copy0% + \kern-.185\ht0\lower0.95\ht0\copy0% + \kern-.11\ht0% + \vrule height9ex depth0pt\relax% + \raise7ex\rlap{\qquad#3}% + \vrule height.1pt depth.1pt width 8ex% + \qquad\lower.6ex\hbox{#2}}% +\endinput %;nonum +%end%%%%%%%%%%%%%%%%%%%%%xyz%!cgl;newcol +% +% +% +%begin%%%%%%%%%%%%%%%%%partlogo% +\tool\partlogotool %;numvrb +%from TeX book +\def\partlogo#1{\goodbreak + \bigskip\noindent + \vbox{\line{\hrulefill}% + \kern-.5\baselineskip +\line{\hrulefill{ \phantom{\bf #1}} % + \hrulefill}% + \kern-.5\baselineskip + \line{\hrulefill{ \bf #1} + \hrulefill}% + \kern-.5\baselineskip + \line{\hrulefill}% +}\nobreak\smallskip\noindent} +\endinput %;nonum +%end%%%%%%%%%%%%%%%%%%%%%partlogo%!cgl;newcol +% +% +% +%begin%%%%%%%%%%%%%%%%%%%%%%%pascal% +\tool\pascaltool +\message{ ---pascaltool, Jan, Aug 95, cgl--- } +%C.G. van der Laan, Jan, Oct 95.%;numvrb +%Processing (first set of macros) +%\let\beginpascal\fifol +\def\lofif#1\fifol{\fi + \the\postpascal\endgroup} +\let\endpascal\lofif +\def\lf{x}%toggle for last font to insert \/ +\def\processw#1{% + \ifnum\commentstatus>0 + \if p\lf\leavevmode\/\fi#1\def\lf{c}\else + \ifx\relax#1\relax{ }%space + \else\foundfalse + \loc{ #1 }{\the\reservedset}% + \iffound{\if p\lf\leavevmode\/\fi + \reservedwordsfont#1}\def\lf{r}% + \else\if=#1${}={}$\else + {\pascalprogramfont#1{}}\def\lf{p}\fi\fi + \fi\fi}%end processw;vrblin50 +%for the rest of listing use +%another escape char;endinput +%Typesetting : ;= ; . ^ +\def\becomes{:=} +\catcode`\:=\active +\def:#1{\if=#1${}\becomes{}$\else + {\rm\char`\:}#1\fi} +\catcode`\;=\active + \def;{{\/\rm\char`\;}} +\catcode`\.=\active \def.{{\pascalprogramfont + \char`\.}} +\catcode`\^=\active \def^{\char'\active6} + %\def^{{\enspace$\uparrow$}} +\catcode`\[=\active \catcode`\]=\active + \def[{{\rm \char`\[}} + \def]{{\rm\/\char`\]}} +\def\leftbrace{(} +\catcode`\(=\active \catcode`\*=\active +\def(#1{\ifx*#1$\{\,$\global + \advance\commentstatus1 + \pascalcommentfont + \else\leftbrace#1\fi} +%Reserved words ;vrblin100 +\reservedset{ and array begin case const + div do downto else end. end; file for + function goto if in label mod nil not of + or otherwise packed procedure program record + repeat set step string then to type until + var while with}% +%Handling of >= <= <> > < ;vrblin150 +\def\lt{<}\def\gt{>} +\catcode`\>=\active +\def>#1{\if=#1${}\geq{}$\else + ${}\gt{}$#1\fi} +\catcode`\<=\active +\def<#1{\ifx>#1${}\ne{}$\else + \if=#1${}\leq{}$\else + ${}\lt{}$#1\fi\fi} +%Handling of + - * ;vrblin200 +\def\-{-}%Save for hyphen use +\def\plus{+}\def\minus{-} +\catcode`\+=\active \def+{${}\plus{}$} +\def*#1{\if)#1$\,\}$\global + \advance\commentstatus-1 + \else${}\times{}$#1\fi} +%{\catcode`\-=\active \gdef-{${}\minus{}$}} +%Later catcode is set for minus +%Last part of processing ;vrblin250 +\obeyspaces\let =\ +\def\fifow#1 {\ifx +\wofif#1\wofif\fi\processw{#1}\ \fifow}% +\def\processl#1{\fifow#1 \wofif + \endgraf}%First space is needed +% ;vrblin300 +\let\zero0 \catcode`\0=\active\def0{{\rm\zero}} +\let\one1 \catcode`\1=\active\def1{{\rm\one}} +\let\two2 \catcode`\2=\active\def2{{\rm\two}} +\let\three3\catcode`\3=\active\def3{{\rm\three}} +\let\four4 \catcode`\4=\active\def4{{\rm\four}} +\let\five5 \catcode`\5=\active\def5{{\rm\five}} +\let\six6 \catcode`\6=\active\def6{{\rm\six}} +\let\seven7\catcode`\7=\active\def7{{\rm\seven}} +\let\eight8\catcode`\8=\active\def8{{\rm\eight}} +\let\nine9 \catcode`\9=\active\def9{{\rm\nine}} +\catcode`\-=\active \def-{${}\minus{}$}% +\obeylines\smallskip% +\the\prepascal\relax%;nonum +\endinput%cgl@rc.service.rug.nl +% +% +% +%Contents Pascal +% \beginpascal +% \lofif +% \endpascal +% \processw +%Typesetting : := ;semicol . ^ +% \becomes +% : +% ; +% . +% ^ +%Reserved words +%Handling of >= <= <> > < +% \lt +% \gt +% > +% < +%Handling of + - * +% - +% \plus +% \minus +% \times +% + +% * +% - +%Last part of processing +% \fifow# +% \processl +%Keeping track of comments, and +%using comment fonts +% {, } +% [, ] +% \commentstatus +% \pascalcommentfont +% \prepascal +% +%Use of the above file via +%\input pascal.tex +%\beginpascal +%(*Print length of third side of +% triangle given two sides and +% enclosed angle*) +%program EX4A(input, output); +%var a, b, c angle : real; +%begin read(a, b, angle); +% c:=sqrt(sqr(a)+sqr(b)- +% 2*a*b*cos(angle)); +% writeln(`The third side is', c) +%end. +%\endpascal +%\beginpascal +%(*heap creation*) +%l := n div 2 + 1; +%while l <> 1 do +%begin l := l-1; sift(a, l, n) end; +%(*sorting*) +%r := n; +%while r <> 1 do +%begin swap(a[1], a[r]); +% r := r-1; sift(a, 1, r) +%end; +%(*sift arg1 through arg2*) +%j:= arg1; +%while 2j >= arg2 and +% (a[j] < a[2j] or a[j] < a[2j+1]) +%do begin mi := 2j + if a[2j] > a[2j+1] +% then 0 +% else 1; +% exchange(a[j], a[mi]); j := mi +%end. +%\endpascal +%\bye +%Together with blue.tex and tools.dat +%replace +%\input pascal.tex +%by +%\input blue.tex +%End pascal.tex +% +% +%History of changes +%Jan 95 Designed +%end%%%%%%%%%%%%%%%%%%%%pascal%!cgl;newcol +% +% +% +\tool\efg +phoney tool, for test purpose +\endinput%end \efg \ No newline at end of file -- cgit v1.2.3