% HtX (1.1) standard prelude % % (c) Richard M. Salter, 1994 - 1997 % % Please read copyright and distribution agreement % % conventional buffer use % 0 - 49 user temporary % 50 - 99 preamble & styles % standard prelude % ctr 50-59 = glossary counters \typeout{Loading prelude...} % global buffers/ctrs used by routines in this file \newbuf{title}\newbuf{author}\newbuf{date}\newbuf{me} \newbuf{apltd}\newbuf{libd}\newbuf{mapd}\newbuf{formd} \newbuf{icond}\newbuf{uicond} \newbuf{celld}\newbuf{keyholef}\newbuf{bibf}\newbuf{bibbuf} \newbuf{brefbuf}\newbuf{libbuf}\newbuf{refbuf}\newbuf{libf} \newctr{pgdepth}\clrctr{pgdepth} \newctr{index}\newctr{glosx}\newctr{cellgloss} \setctr{glosx}{50} % user defined default directories \newcommand{\setbase}[1]{ \base{#1} \typeout{Base: \getbase} } \newcommand{\seticondir}[1]{ \typeout{" (icon directory) #1"} \setbuf{icond}{#1}} \newcommand{\icondir}{\buf{icond}} \newcommand{\setusericondir}[1]{ \typeout{" (user icon directory) #1"} \setbuf{uicond}{#1}} \newcommand{\usericondir}{\buf{uicond}} \newcommand{\setformdir}[1]{ \typeout{" (form directory) #1"} \setbuf{formd}{#1}} \newcommand{\formdir}{\buf{formd}} \newcommand{\setmapdir}[1]{ \typeout{" (map directory) #1"} \setbuf{mapd}{#1}} \newcommand{\mapdir}{\buf{mapd}} \newcommand{\setlibdir}[1]{ \typeout{" (lib directory) #1"} \setbuf{libd}{#1}} \newcommand{\libdir}{\buf{libd}} \newcommand{\setappletdir}[1]{ \typeout{" (applet directory) #1"} \setbuf{apltd}{#1}} \newcommand{\appletdir}{\buf{apltd}} % buffer initializations for standard prelude routines (non-user) \newcommand{\usekeyhole}[1]{ \typeout{" (using) #1"} \setbuf{keyholef}{#1}} \newcommand{\keyholefile}{\buf{keyholef}} \newcommand{\usecelldir}[1]{ \typeout{" (using cell directory) #1"} \setbuf{celld}{#1}} \newcommand{\celldir}{\buf{celld}} \newcommand{\usebibfile}[1]{ \typeout{" (bibliography) #1"} \setbuf{bibf}{#1}} \newcommand{\bibfile}{\buf{bibf}} \newcommand{\setbibbuf}[1]{\setbuf{bibbuf}{#1}} \newcommand{\setbibbuf*}[1]{\setbuf*{bibbuf}{#1}} \newcommand{\bibbuf}{\buf{bibbuf}} \newcommand{\bibbuf*}{\buf*{bibbuf}} \newcommand{\setbrefbuf}[1]{\setbuf{brefbuf}{#1}} \newcommand{\brefbuf}{\buf{brefbuf}} \newcommand{\uselibfile}[1]{ \typeout{" (library) #1"} \setbuf{libf}{#1}} \newcommand{\libfile}{\buf{libf}} \newcommand{\setlibbuf}[1]{\setbuf{libbuf}{#1}} \newcommand{\setlibbuf*}[1]{\setbuf*{libbuf}{#1}} \newcommand{\libbuf}{\buf{libbuf}} \newcommand{\libbuf*}{\buf*{libbuf}} \newcommand{\setrefbuf}[1]{\setbuf{refbuf}{#1}} \newcommand{\refbuf}{\buf{refbuf}} \setbuf{date}\today % basic HtX commands \newcommand{\me}[1]{\setbuf{me}{#1} \pgfoot{\hr\address{last modified \today\/ by #1} \pgfoot{\hr\address{#1}}}} \newcommand{\myself}{\buf{me}} \newcommand{\title}[1][1] {\nl \setbuf{title}{#2} \forceout{{\mkp{title}{\alt{#1}{#2}}}}} \newcommand{\author}[1]{\setbuf{author}{#1}} \newcommand{\date}[1]{\setbuf{date}{#1}} \newcommand{\maketitle}[0][1]{ \begin{center} #1\par \header{1}{\buf*{title}}\\ \header{2}{\buf*{author}}\\ \header{3}{\buf*{date}}\hr[] \end{center} } \newcommand{\par}[0][1]{\mkp*[#1]{p}} \newcommand{\div}[0][2]{\mkp[align=#1 width=#2]{div}} \newcommand{\hr}[0][1]{\mkp*[#1]{hr}} \newcommand{\image}[1][3]{ \ifthen {\nonempty{#1}}% \ifthen {\nonempty{#2}}% \mkp*[src="#4" align=#1 alt="#2" #3]{img}% \ifelse \mkp*[src="#4" align=#1 #3]{img}% \endif \ifelse \ifthen {\nonempty{#2}}% \mkp*[src="#4" alt="#2" #3]{img}% \ifelse \mkp*[src="#4" #3]{img}% \endif \endif} \newcommand{\sp}[0][1]{ \ifthen {\empty{#1}} \'160 \ifelse \newctr{ictr} \for{ictr}{#1}{1}{\'160} \endif} \newcommand{\map}[2][3]{\xlink{\mapdir #5}{\mapimage[#1][#2][#3]{#4}}} \newcommand{\mapimage}[1][3]{\image[#1][#2][#3 ismap]{#4}} \newcommand{\font}[1][1]{\mkp[size=#2 #1]{font}} \newcommand{\color}[1]{\mkp[color=#1]{font}} \newcommand{\header}[2]{\nl {\mkp{h#1} #2}} \newcommand{\address}[1]{\nl{\mkp{address} #1}} \newcommand{\nobr}{\mkp{nobr}} \newcommand{\wbr}{\mkp*{wbr}} \newcommand{\break}[0][1]{ \ifthen {\nonempty{#1}} \mkp*[clear=#1]{br}\nl \ifelse \mkp*{br}\nl \endif} \newcommand{\\}[0][1]{\break[#1]} \newcommand{\comment}[1]{\nl\mkp*[#1 --]{!--}} \newcommand{\anchor}[2][1]{\label{#2}{\mkp[name="\tagclean{#2}" #1]{a} #3}\/ } \newcommand{\xlink}[2][2]{ \ifthen {\nonempty{#1}}% \label{#1}% {\mkp[href="#3" name="\tagclean{#1}" #2]{a}#4}% \ifelse% {\mkp[href="#3" #2]{a}#4}% \endif} \newcommand{\link}[2][2]{\xlink[#1][#2]{\uref{#3}}{#4}} \newcommand{\mailto}[1]{\xlink{mailto:#1}{#1}} \newcommand{\htx}{${\it H^{t}X}$} \newcommand{\latex}{$L^{\font{+1}a}T_{\font{+1}e}X$} \newenvironment{quote}{\mkp*{blockquote}}{\mkp*{/blockquote}} \newenvironment{verse}{\mkp*{blockquote}}{\mkp*{/blockquote}} \newenvironment{preform}{\mkp*{pre}}{\mkp*{/pre}} \newenvironment{center}{\mkp*{center}}{\mkp*{/center}} \newcommand{\ifdef}[1][2]{ \ifthen{\nonempty{#3}} #1 \ifelse #2 \endif} \newcommand{\nthchar}[2]{\substr{#1}{#1}{#2}} \newcommand{\bunidx}[1]{\nthchar{#1}{\path{\depth}}} \newcommand{\bunprefix}{\at l} \newcommand{\bunstring}[1]{\bunprefix\filenum #1} % forms \newenvironment{form}[1][1]{ \mkp*[action="\formdir #2" method=\alt{#1}{GET} enctype=x-www-form-urlencoded] {form}} {\mkp*{/form}} \newenvironment{select}[1][2]{ \mkp*[size="#1" #3 name="#3"]{select}} {\mkp*{/select}} \newenvironment{textarea}[3][1]{ \mkp*[rows=#2 cols=#3 name="#4"]{textarea} \semiverb[#1]{textarea}} {\mkp*{/textarea}} \newcommand{\ftxa}[3][1]{ \mkp*[rows=#2 cols=#3 name="#4" #1]{textarea}\mkp*{/textarea}} \newcommand{\ftext}[1][3]{ \mkp*[value="#1" size=#2 maxlength=#3 name="#4"]{text}} \newcommand{\fpass}[1][3]{ \mkp*[value="#1" size=#2 maxlength=#3 name="#4"]{password}} \newcommand{\fcheck}[1][2]{\mkp*[type=checkbox value="#1" #2 name="#3"]{input}} \newcommand{\fradio}[1][2]{\mkp*[type=radio value="#1" #2 name="#3"]{input}} \newcommand{\fsubmit}[1]{\mkp*[type=submit value="#1"]{input}} \newcommand{\freset}[1]{\mkp*[type=reset value="#1"]{input}} \newcommand{\fbutton}[2]{\mkp*[type="button" value="#1" onclick="#2"]{input}} \newcommand{\foption}[0][1]{\mkp*[#1]{option}} \newcommand{\itext}[1][2]{\mkp*[type = "text" size=#1 name="#3" #2]{input}} \newcommand{\otext}[1][3] {\mkp*[type = "text" size=#1 name="#4" onChange="#2" #3]{input}} \newenvironment{jsform}[0][1]{ \ifthen {\nonempty{#1}} \mkp*[name="#1"]{form} \ifelse \mkp*{form} \endif} {\mkp*{/form}} \newenvironment{javascript}[0][1]{ \mkp*[language="JavaScript"]{script}\nl ||\nl \mkp*{/script}\nl} \newcommand{\script}[1][2] {{\mkp[language="\alt{#2}{JavaScript}" \ifdef[src="#1"]{#1}]{script} #3}} %old command names \newcommand{\htTitle}[1]{\title{#1}} \newcommand{\htComment}[1]{\comment{#1}} \newcommand{\htPar}{\par} \newcommand{\markup}[1]{\mkp*{#1}} \newcommand{\htHR}[0][1]{\hr[#1]} \newcommand{\htHeader}[2]{\header{#1}{#2}} \newcommand{\htAddress}[1]{\address{#1}} \newcommand{\htOutLink}[2][1]{\xlink[#1]{#2}{#3}} \newcommand{\htLink}[2][1]{\link[#1]{#2}{#3}} \newcommand{\htMapImg}[1][3]{\mapimage[#1][#2][#3]{#4}} \newcommand{\htBaseFont}[1]{\basefont{#1}} \newcommand{\htGetBase}{\getbase} \newcommand{\htBase}[1]{\base{#1}} \newcommand{\htFile}[2][1]{\file[#1]{#2}{#3}} \newcommand{\htVSpace}[1]{\vspace{#1}} \newcommand{\htHSpace}[1]{\hspace{#1}} \newcommand{\htPgFoot}[1]{\pgfoot{#1}} \newcommand{\htPgHead}[1]{\pghead{#1}} \newcommand{\htHeadBody}{\body} \newcommand{\htImage}[1][3]{\image[#1][#2][#3]{#4}} \newcommand{\htAnchor}[2][1]{\anchor[#1]{#2}{#3}} % fundamental operations & LaTex compatability \newcommand{\bf}{\mkp{b}} \newcommand{\str}{\mkp{strong}} \newcommand{\it}{\mkp{i}} \newcommand{\tt}{\mkp{tt}} \newcommand{\code}{\mkp{tt}} \newcommand{\em}{\mkp{em}} \newcommand{\cdots}{...} \newcommand{\amp}{\^{amp}} \newcommand{\lt}{\^{lt}} \newcommand{\gt}{\^{gt}} \newcommand{\pct}{\`37} \newcommand{\at}{|@{@}|} \newcommand{\/}{\`32} \newcommand{\hash}{|#|} \newcommand{\empty}[1]{\not{\nonempty{#1}}} \newcommand{\backslash}{\`92} \newcommand{\vert}{\`124} \newcommand{\lbrack}{\`123} \newcommand{\rbrack}{\`125} \newcommand{\ldots}{...} \newcommand{\htmlonly}[1]{#1} \newcommand{\latexonly}[1]{} \newcommand{\centering}{\mkp{center}} \newcommand{\copyr}{\'169\/} \newcommand{\documentclass}[1][1]{\documentstyle[#1]{#2}} \newcommand{\usepackage}[1]{\input{#1}} \newcommand{\bigbreak}{\vspace{2}} \newcommand{\markboth}[2]{{\large #1}} \newcommand{\newcounter}[1]{\newctr*{#1}} \newcommand{\stepcounter}[1]{\incctr{#1}} \newcommand{\newboolean}[1]{\newctr*{#1}} \newcommand{\boolean}[1]{\ctr{#1}} \newcommand{\stepcounter}[1]{\incctr{#1}} \newcommand{\the}[1]{\ctr{#1}} \newcommand{\setboolean}[2]{ \ifthen {\samestr{#2}{true}} \setctr{#1}1 \ifelse \setctr{#1}0 \endif} \newcommand{\ifthenelse}[3]{ \ifthen {#1} #2 \ifelse #3 \endif} \newcommand{\alpha}[1]{ \chr{\plus{#1}{\minus{\ord{a}}{1}}}} % latex compatibility \newcommand{\centerline}[1]{\begin{center}#1\end{center}} \newcommand{\large}{\font{+1}} \newcommand{\Large}{\font{+2}} \newcommand{\big}{\mkp{big}} \newcommand{\small}{\mkp{small}} \newcommand{\smallskip}{\vspace{1}} \newcommand{\medskip}{\vspace{2}} \newcommand{\medno}{\vspace{2}} \newcommand{\bigskip}{\vspace{2}} \newcommand{\vskip}[2]{\vspace{#1}} \newcommand{\llap}[1]{#1} \newcommand{\the}[1]{\ctr{#1}} % bogus for latex compatibility \newcommand{\nopagebreak}{} \newcommand{\leavevmode}{} \newcommand{\thispagestyle}[1]{} \newcommand{\parskip}[1]{} \newcommand{\parindent}[1]{} \newenvironment{sloppypar}{}{} \newcommand{\noindent}{} \newcommand{\pagestyle}[1]{} %\newcommand{\hline}{} \newcommand{\cline}{} \newcommand{\newpage}{\par} \newcommand{\pagebreak}[0][1]{\par} \newcommand{\kern}[2]{} \newcommand{\hfill}{\ } % latex math compatibility (until HTML 3) \newcommand{\leq}{<=} \newcommand{\geq}{>=} \newcommand{\le}{<=} \newcommand{\ge}{>=} \newcommand{\lt}{<} \newcommand{\gt}{>} \newcommand{\cdot}{\ {\bf\sup .}| |} \newcommand{\langle}{<} \newcommand{\rangle}{>} \newcommand{\mbox}[1]{#1} \newcommand{\math}{\mkp{math}} \newcommand{\sup}{\mkp{sup}} \newcommand{\sub}{\mkp{sub}} \newcommand{\log}{log} \newcommand{\lceil}{ceiling(} \newcommand{\rceil}{)} \newcommand{\frac}[2]{^{#1}/_{#2}} \newcommand{\left}[1]{} \newcommand{\right}[1]{} \newcommand{\overline}[1]{#1{'}} \newcommand{\times}{{\tt\ X\ }} \newcommand{\equiv}{=} \newcommand{\rm}{} \newcommand{\[}{$$} \newcommand{\]}{$$} % copyright notice and logo \newcommand{\signoff} {\hr{\centering \image[TOP][\copyr 1994 1995, Richard M. Salter]{\icondir tlogo3.gif}}\par} % file preamble/postamble \newcommand{\preamb}[1][1]{ {\mkp{title}#2} \ifthen {\nonempty{#1}} \wallpaint{#1} \endif \body} \newcommand{\postamb}{\mkp*{/body}\mkp*{/html}} % Default hierarchical organization \newctr{navlvl}\setctr{navlvl}{100} \newbuf{sect} \newcommand{\topofbundle}[1]{\numle{\depth}{#1}} \newcommand{\flatsect}[1]{\setctr{navlvl}{#1}} \newcommand{\sect}[2][1]{ \ifthen {\topofbundle{#2}} \ifthen {\numeq{#2}{0}} \toc{0:1:2:3}{\header{2}{Contents}}{itemize}\break\break\hr \ifelse \toc{#2}{\header{3}{Contents}}{itemize}\break\break\hr \endif \endif \setbuf{sect}{#3} \pghead{\header{2}{#3}\par} \ifthen {\or {\samestr{#1}{s}} {\numle{\ctr{navlvl}}{#2}}} \header{\plus{#2}{2}}{\bundle*{#2}{#3}} \ifelse \navigate{#3} \bundle{#2}{#3} \endif \pgfoot{\address{\myself}}} \newcommand{\sect*}[2][1]{ \newbuf{tmp}\setbuf{tmp}{\buf{sect}} \sect[#1]{#2}{#3} \pgfoot{\context[-2][]["100 \pct"][][\buf{tmp}]\par\address{\buf{me}}} } \newcommand{\navigate}[1] { \pghead{\setctr{pgdepth}{\depth} \context[-2][]["100 \pct"][\header{3}{Section:\\\mkp*{ul} #1}]\par} } % glossary (uses standard keyhole file unless otherwise indicated) \newcommand{\cellgloss}{\setctr{cellgloss}1} \newcommand{\keygloss}{\clrctr{cellgloss}} \newenvironment{gloss}[1][1]{ \key*[#1]{#2} \begin{keyhole}{\alt{#1}{#2}}} {\par \cdots Use {\bf BACK} to return. \end{keyhole} } \newcommand{\gloss*}[2][1]{ \begin{gloss*}[#1]{#2} #3 \end{gloss*}} \newenvironment{gloss*}[1][1]{ \incctr{\ctr{glosx}} \ifthen {\numeq{\ctr{cellgloss}}0} \key*[#1][M\ctr{glosx}\ctr{\ctr{glosx}}]{#2} \incctr{glosx} \begin{keyhole}{\alt{#1}{#2}} \ifelse \cellref[#1][M\ctr{glosx}\ctr{\ctr{glosx}}]{#2} \incctr{glosx} \begin{cell}{\alt{#1}{#2}} \endif} {\decctr{glosx} \par Click here to return:\cdots\cdots\cdots \ifthen {\numeq{\ctr{cellgloss}}0} \link{M\ctr{glosx}\ctr{\ctr{glosx}}} {\image[TOP][HERE]{\icondir key.gif}} \end{keyhole} \ifelse \xlink{../\uref{M\ctr{glosx}\ctr{\ctr{glosx}}}} {\image[TOP][HERE]{\icondir key.gif}} \end{cell} \endif} % keyhole \newenvironment{keyhole}[1][1]{ \begin{excursion}{\keyholefile}{a} \anchor{\tagclean{kh@#2}}{\header{2}{\alt{#1}{#2}}}} {\vspace{40} \end{excursion}} \newcommand{\newkeyhole}[1][2]{ \setbuf1{#3} \begin{excursion}{#3}{w} \preamb[#2]{\alt{#1}{#3}} \end{excursion} \usekeyhole{#3} } \newcommand{\key}[1][1] {\xlink{\keyholefile\hash\tagclean{kh@\alt{#1}{#2}}}{#2}} \newcommand{\key*}[1][2]{\link[#2]{\tagclean{kh@\alt{#1}{#3}}}{#3}} % cells (individual keyhole files) \newenvironment{cell}[1][1]{ \setbuf0{\celldir/\tagclean{cl@#2}} \fcreate{\buf*0} \begin{excursion}{\buf*0}{w} \preamb[ffffd0]{#1} \anchor{cl@#2}{\header{2}{\alt{#1}{#2}}}} {\postamb \end{excursion}} \newcommand{\newcelldir}[1]{ \mkdir{#1} \usecelldir{#1} } \newcommand{\cellref}[1][2]{\xlink[#2] {\celldir/\tagclean{cl@\alt{#1}{#3}}.html\hash\tagclean{cl@\alt{#1}{#3}}}{#3}} % bibliography \newcommand{\newbibfile}[1][2]{ \fcreate{#3.html}\fcreate{#3.htx} \setbuf1{\alt{#2}\mainfileroot\ References} \begin{excursion}{#3}{w} \preamb[#1]{\buf*1} \end{excursion} \usebibfile{#3}} \newcommand{\bib}[1][1]{ \ifthen {\empty{\bibfile}} \newbibfile[#1]{\mainfileroot ref} \endif \transfer{#2.bib}{\bibfile.htx}{\bibentry:\bibstart:\bibend:}} \newcommand{\bibstart}{\setbibbuf{}} \newcommand{\bibend}{\bibbuf*} \newcommand{\bibentry}[1]{ \bibbuf*\nl\nl|\anchor{rf@#1}{\header{2}{#1}}\par\nl| \setbibbuf*{\header{5}{Use {\bf Back} to return}\hr[]} } \newcommand{\refstart}{\setbibbuf{} \begin{excursion}{\bibfile}{a}} \newcommand{\refend} {\bibbuf\end{excursion}} \newcommand{\refentry}[1]{\bibbuf\par \anchor{rf@#1}{\header{2}{#1}}\par \setbibbuf*{\header{5}{Use {\bf Back} to return}\hr[]}} \newcommand{\cite}[2]{ \setbrefbuf{rf@#1\/ \brefbuf} \link{\tagclean{rf@#1}}{#2}} \newcommand{\references}{ \begin{excursion}{\bibfile}{a} \dblsrt[\brefbuf]{anchor:}{\bibfile.htx} \end{excursion}} % library \newcommand{\newlibfile}[2][1]{ \fcreate{#2.html} \fcreate{#2.htx} \setbuf1{\curfileroot\/ #3} \begin{excursion}{#2}{w} \preamb[#1]{\buf*1} \end{excursion} \uselibfile{#2}} \newcommand{\lib}[2][1]{ \ifthen {\empty{\libfile}} \newlibfile[#1]{#2lib}{#3} \endif \transfer{\libdir{#2.lib}}{\libfile.htx} {\lentry:\lstart:\lend:\vlentry:\dblnl}} \newcommand{\lstart}{\setlibbuf{}} \newcommand{\lend}{\libbuf*|\eanchor|} \newcommand{\eanchor}{} \newcommand{\vlentry}[1][1]{ \libbuf*\nl\setlibbuf*{ \end{verbatim}\nl\header{5}{Use {\bf Back} to return}\eanchor} \nl\nl |\hr\anchor{rf!#2}{\header{2}{\alt{#1}{#2}}}\par\begin{verbatim}|} \newcommand{\lentry}[1][1]{ \libbuf*\nl\setlibbuf*{\header{5}{Use {\bf Back} to return}\eanchor} \nl\nl |\hr\anchor{rf!#2}{\header{2}{\alt{#1}{#2}}}\par\nl|} \newcommand{\lref}[1][1]{ \setrefbuf{rf\alt{#1}{#2}\/ \refbuf} \link{\tagclean{rf\alt{#1}{#2}}}{#2}} \newcommand{\library}[1]{ %\typeout{Extracting \refbuf\ from library...} \begin{excursion}{\libfile}{w} \dblsrt[\refbuf]{anchor}{#1lib.htx} \postamb \end{excursion}} % context \newcommand{\context}[0][6]{ \newbuf{tmp} \newctr{ctxta}\newctr{ctxtb}\newctr{ctxtc} \setctr{ctxtb}{\ctr{pgdepth}} \setctr{ctxta}{1} \begin{outline}[#1][#2][#3][#4][#5] \level{0}{\alt{#6}{\link{@c\filenum 0}{Contents}}} \for{ctxta}{\ctr{ctxtb}}{1}{ \setbuf0{\bunref[\ctr{ctxta}]} \ifthen {\isref\buf0} \level{\ctr{ctxta}}{\link{\buf0}{\button{\path{\ctr{ctxta}}}}} \endif} \decctr{ctxtb}\setbuf{tmp}{\bunstring{\path{\ctr{pgdepth}}}} \setbuf0{\path{\ctr{ctxtb}}}\incctr{ctxtb}\setctr{ctxta}{0} \setbuf1{\buf0\ordsym{\ctr{ctxta}}} \while{\not{\samestr{\bunstring{\buf1}}{\buf{tmp}}}}{ \level{\ctr{ctxtb}}{\link{\bunstring{\buf1}}{\button{\buf1}}} \incctr{ctxta} \setbuf1{\buf0\ordsym{\ctr{ctxta}}}} \level[1]{\ctr{ctxtb}}{{\bf \button{\path{\ctr{pgdepth}}}}} \incctr{ctxta} \setbuf1{{\buf0}{\ordsym{\ctr{ctxta}}}} \while {\nonempty{\button{\buf1}}}{ \level{\ctr{ctxtb}}{\link{\bunstring{\buf1}}{\button{\buf1}}} \incctr{ctxta} \setbuf1{\buf0\ordsym{\ctr{ctxta}}}} \decctr{ctxtb} \setctr{ctxta}{\ctr{ctxtb}} \for{ctxta}{0}{-1} {\decctr{ctxta}\setctr{ctxtc}{\symord{\bunidx{\ctr{ctxta}}}} \incctr{ctxtc} \setbuf0{\path{\ctr{ctxta}}\ordsym{\ctr{ctxtc}}}\incctr{ctxta} \ifthen {\nonempty{\button{\buf0}}} \level{\ctr{ctxta}}{\link{\bunstring{\buf0}}{\button{\buf0}}} \endif} \end{outline}} % outline \newctr{outa}\newbuf{mesg} \newenvironment{outline}[0][5]{ \setbuf*{mesg}{#4} \setctr{outa}{#1} \ifthen {\nonempty{#4}} \mkp*[border=1 cellpadding=10 width=#3]{table} \ifelse \mkp*[border=1 width=#3]{table} \endif \ifthen {\nonempty{#5}} \ifthen {\nonempty{#4}} {\mkp{caption} #5} \ifelse {\mkp[align=bottom]{caption} #5} \endif \endif \mkp*{tr}\mkp*{td} \ifthen {\nonempty{#2}} \mkp*[border=#2 cellpadding=5]{table}\nl \ifelse \mkp*{table}\nl \endif} {\mkp*{/table}\mkp*{/td} \ifthen {\nonempty{\buf{mesg}}} {\mkp[align=center valign=middle]{td} \buf{mesg}} \endif \mkp*{/tr}\mkp*{/table}} \newcommand{\level}[2][1]{ \mkp*{tr}\mkp*{td}\mkp*[size = +\plus{\alt{#1}{0}}{\ctr{outa}}]{font} \outindent{#2}{#3} \mkp*{/font}\mkp*{/td}\mkp*{/tr}\nl} \newcommand{\outindent}[2]{ \newctr{ictr} \for{ictr}{#1}{1}{\mkp*{ul}} #2} %\clrctr{ictr}\for{ictr}{#1}{1}{\mkp*{/ul}}} % visual outline \newenvironment{outln}[0][1]{ \setbuf{20}{I} \setbuf{21}{A} \setbuf{22}{i} \setbuf{23}{a} \setbuf{24}{1} \clrctr5 \begin{enumerate}[type=I value=\alt{#1}{1}]} {\while {\numge{\ctr5}{\ctr6}} {\end{enumerate} \setctr5{\minus{\ctr5}{1}}}} \newcommand{\oitm}[1]{ \ifthen {\numgt{#1}{\ctr5}} \while {\numlt{\ctr5}{#1}} {\setctr5{\plus{\ctr5}{1}} \begin{enumerate}[type=\buf{\plus{20}{\ctr5}}]} \elseif {\numlt{#1}{\ctr5}} \while {\numgt{\ctr5}{#1}} {\end{enumerate} \setctr5{\minus{\ctr5}{1}}} \endif \item[]} % maps \newenvironment{mkmap}[1][1]{ \setbuf{0}{#2} \setbuf{1}{#1} \begin{excursion}{#2.map}{W} \semiverb[][\end{excursion}]{mkmap}} {\map{\getrd/\buf0.map}{\icondir \alt{\buf1}{\buf0}.gif} } % clientside maps (netscape 3.0) \newenvironment{csmap}[1]{\mkp*[name="#1"]{map}}{\mkp*{/map}} \newcommand{\csmapimage}[2][3] {\image[#1][#2][#3 border=0 usemap="\hash #4"]{#5}} \newcommand{\area}[1][3] {\mkp*[coords="#4" \ifdef[href="#1"][nohref]{#1} \ifdef[shape="#2"]{#2} #3]{area}} \newctr{csm} \newenvironment{automap}[1][2]{ \newbuf{mapnm}\setbuf{mapnm}{amap\ctr{csm}} \incctr{csm} {\image[#1][#2][border=0 usemap="\hash\buf{mapnm}"]{#3}}\nl \begin{csmap}{\buf{mapnm}}} {\end{csmap}} % document properties (javascript) \newbuf{bkprop}\newbuf{bgprop}\newbuf{txprop}\newbuf{lnprop}\newbuf{alprop} \newbuf{vlprop}\newbuf{olprop}\newbuf{ouprop} \newcommand{\setprop}[2]{ \setbuf{#1}{#2} \docprops{\buf{bkprop}}{\buf{bgprop}}{\buf{txprop}}{\buf{lnprop}} {\buf{alprop}}{\buf{vlprop}}{\buf{olprop}}{\buf{ouprop}} } \newcommand{\setprop*}[2]{ \setbuf*{#1}{#2} \docprops{\buf{bkprop}}{\buf{bgprop}}{\buf{txprop}}{\buf{lnprop}} {\buf{alprop}}{\buf{vlprop}}{\buf{olprop}}{\buf{ouprop}} } \newcommand{\unsetprop}[1]{ \setbuf{#1}{} \docprops{\buf{bkprop}}{\buf{bgprop}}{\buf{txprop}}{\buf{lnprop}} {\buf{alprop}}{\buf{vlprop}}{\buf{olprop}}{\buf{ouprop}} } \newcommand{\getprop}[1]{\buf{#1}} \newcommand{\docprops}[8]{ \pageprops{ \ifthen {\nonempty{#1}} BACKGROUND="#1" \endif \ifthen {\nonempty{#2}} BGCOLOR="#2" \endif \ifthen {\nonempty{#3}} TEXT="#3" \endif \ifthen {\nonempty{#4}} LINK="#4" \endif \ifthen {\nonempty{#5}} ALINK="#5" \endif \ifthen {\nonempty{#6}} VLINK="#6" \endif \ifthen {\nonempty{#7}} onLoad="#7" \endif \ifthen {\nonempty{#8}} onUnload="#8" \endif }} % background \newcommand{\wallpaper}[1][1]{\setprop{bkprop}{#2}} \newcommand{\wallpaint}[1][1]{\setprop{bgprop}{\hash #2}} % index \newcommand{\indx}[1][2][TVt]{ \incctr{index} \setbuf1{@i\depth @\ctr{index}} \anchor{\buf1}{#3} \asinsert{\alt{#1}{#3}}[|#2|]{\buf1}} \newcommand{\makeindex}{ {\centering\header{2}{Index}}\par \mkp*[cellpadding=5]{table} \aslist[\mkp*{tr}\mkp*{td}\mkp*{b}] [\mkp*{/b}\mkp*{/td}\mkp*{td}][\mkp*{/td}\mkp*{/tr}] {\image[][][border=0]{\icondir bsmiley.gif}} \mkp*{/table} } % semivrb \newenvironment{semivrb}[0][2]{ \mkp*{pre}\semiverb[#1][#2]{semivrb}} {\mkp*{/pre}} % for \newcommand{\for}[4]{ \while{\not{\numeq{\ctr{#1}}{#2}}}{ #4 \setctr{#1}{\plus{\ctr{#1}}{#3}} }} % while % simple Netscape tables \newenvironment{table}[0][5]{ \mkp*[#1]{table} \ifthen {\nonempty{#4}} {\mkp{caption} #4} \endif \mkp*[#2]{tr} \ifthen {\nonempty{#5}} \mkp*[#3]{th} \ifelse \mkp*[#3]{td} \endif } {\mkp*{/td}\mkp*{/tr}\mkp*{/table}} \newcommand{\row}[0][2]{ \mkp*{/td}\mkp*{/tr} \mkp*[#1]{tr}\mkp*[#2]{td}} \newcommand{\hrow}[2][2]{ \mkp*{/#3}\mkp*{/tr} \mkp*[#1]{tr}\mkp*[#2]{#4}} \newcommand{\col}[0][1]{\mkp*{/td}\mkp*[#1]{td}} \newcommand{\hcol}[0][1]{\mkp*{/th}\mkp*[#1]{td}} \newcommand{\hdr}[0][1]{\mkp*{/th}\mkp*[#1]{th}} % java support \newenvironment{java}[1][4]{ % grandfathered -- use applet instead \mkp*[code="#5.class" \ifdef[width=#1]{#1} \ifdef[height=#2]{#2} \ifdef[bgcolor=#3]{#3} #4]{applet}} {\mkp*{/applet}} \newenvironment{applet}[3][6]{ \mkp*[code="#9.class" width=#8 height=#7 \ifdef[codebase= "#1"]{#1} \ifdef[alt=#3]{#3} \ifdef[align=#4]{#4} \ifdef[vspace=#5]{#5} \ifdef[hspace=#6]{#6}]{applet}\nl \ifdef[\jparam{bgcolor}{#2}]{#2}\nl} {\mkp*{/applet}} \newcommand{\jparam}[2]{ \mkp*[name="#1" value="#2"]{param}\nl} % cross translation \newbuf{cticon}\newbuf{ctapplet} \newcommand{\setcticondir}[1]{\setbuf{cticon}{#1}} \newcommand{\setctappletdir}[1]{\setbuf{ctapplet}{#1}} \newcommand{\crosstranslate}[1][2]{ \base{#3/} \seticondir{\alt{#1}{\buf{cticon}}/} \setappletdir{\alt{#2}{\buf{ctapplet}}/} } % default initializations (local) \input local.htx \cleanup{ \ifthen {\nonempty{\keyholefile}} \begin{excursion}{\keyholefile}{a} \postamb \end{excursion} \endif} \basefont{3} \doctype{HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"} % \pgfoot{\signoff} % Default anchor/title for first page % \anchor{@l}{\title{Root Page}} % end of htrc