open-axiom repository from github
% axiom.sty -- LaTeX support for noweb1% DON'T edit this file! Use src/doc/axiom.sty.pamphlet instead.2{\obeyspaces\AtBeginDocument{\global\let =\ }} % from texbook, p 3813\def\nwopt@nomargintag{\let\nwmargintag=\@gobble}4\def\nwopt@margintag{%5\def\nwmargintag##1{\leavevmode\llap{##1\kern\nwmarginglue\kern\codemargin}}}6\def\nwopt@margintag{%7\def\nwmargintag##1{\leavevmode\kern-\codemargin\nwthemargintag{##1}\kern\codemargin}}8\def\nwthemargintag#1{\llap{#1\kern\nwmarginglue}}9\nwopt@margintag10\newdimen\nwmarginglue11\nwmarginglue=0.3in12\def\nwtagstyle{\footnotesize\Rm}13% make \hsize in code sufficient for 88 columns14\setbox0=\hbox{\tt m}15\newdimen\codehsize16\codehsize=91\wd0 % 88 columns wasn't enough; I don't know why17\newdimen\codemargin18\codemargin=0pt19\newdimen\nwdefspace20\nwdefspace=\codehsize21% need to use \textwidth in {\LaTeX} to handle styles with22% non-standard margins (David Bruce). Don't know why we sometimes23% wanted \hsize. 27 August 1997.24%% \advance\nwdefspace by -\hsize\relax25\ifx\textwidth\undefined26\advance\nwdefspace by -\hsize\relax27\else28\advance\nwdefspace by -\textwidth\relax29\fi30\chardef\other=1231\def\setupcode{%32\chardef\\=`\\33\chardef\{=`\{34\chardef\}=`\}35\catcode`\$=\other36\catcode`\&=\other37\catcode`\#=\other38\catcode`\%=\other39\catcode`\~=\other40\catcode`\_=\other41\catcode`\^=\other42\catcode`\"=\other % fixes problem with german.sty43\obeyspaces\Tt44}45\let\nwlbrace=\{46\let\nwrbrace=\}47\def\nwendquote{\relax\ifhmode\spacefactor=1000 \fi}48{\catcode`\^^M=\active % make CR an active character49\gdef\newlines{\catcode`\^^M=\active % make CR an active character50\def^^M{\par\startline}}%51\gdef\eatline#1^^M{\relax}%52}53%%% DON'T \gdef^^M{\par\startline}}% in case ^^M appears in a \write54\def\startline{\noindent\hskip\parindent\ignorespaces}55\def\nwnewline{\ifvmode\else\hfil\break\leavevmode\hbox{}\fi}56\def\setupmodname{%57\catcode`\$=358\catcode`\&=459\catcode`\#=660\catcode`\%=1461\catcode`\~=1362\catcode`\_=863\catcode`\^=764\catcode`\ =1065\catcode`\^^M=566\let\{\nwlbrace67\let\}\nwrbrace68% bad news --- don't know what catcode to give "69\Rm}70\def\LA{\begingroup\maybehbox\bgroup\setupmodname\It$\langle$}71\def\RA{\/$\rangle$\egroup\endgroup}72\def\code{\leavevmode\begingroup\setupcode\newlines}73\def\edoc{\endgroup}74\let\maybehbox\relax75\newbox\equivbox76\setbox\equivbox=\hbox{$\equiv$}77\newbox\plusequivbox78\setbox\plusequivbox=\hbox{$\mathord{+}\mathord{\equiv}$}79% \moddef can't have an argument because there might be \code...\edoc80\def\moddef{\leavevmode\kern-\codemargin\LA}81\def\endmoddef{\RA\ifmmode\equiv\else\unhcopy\equivbox\fi82\nobreak\hfill\nobreak}83\def\plusendmoddef{\RA\ifmmode\mathord{+}\mathord{\equiv}\else\unhcopy\plusequivbox\fi84\nobreak\hfill\nobreak}85\def\chunklist{%86\errhelp{I changed \chunklist to \nowebchunks.87I'll try to avoid such incompatible changes in the future.}%88\errmessage{Use \string\nowebchunks\space instead of \string\chunklist}}89\def\nowebchunks{\message{<Warning: You need noweave -x to use \string\nowebchunks>}}90\def\nowebindex{\message{<Warning: You need noweave -index to use \string\nowebindex>}}91% here is support for the new-style (capitalized) font-changing commands92% thanks to Dave Love93\ifx\documentstyle\undefined94\let\Rm=\rm \let\It=\it \let\Tt=\tt % plain95\else\ifx\selectfont\undefined96\let\Rm=\rm \let\It=\it \let\Tt=\tt % LaTeX OFSS97\else % LaTeX NFSS98\def\Rm{\reset@font\rm}99\def\It{\reset@font\it}100\def\Tt{\reset@font\tt}101\def\Bf{\reset@font\bf}102\fi\fi103\ifx\reset@font\undefined \let\reset@font=\relax \fi104\def\noweboptions#1{%105\def\@nwoptionlist{#1}%106\@for\@nwoption:=\@nwoptionlist\do{%107\@ifundefined{nwopt@\@nwoption}{%108\@latexerr{There is no such noweb option as '\@nwoption'}\@eha}{%109\csname nwopt@\@nwoption\endcsname}}}110\codemargin=10pt111\advance\codehsize by \codemargin % make room for indentation of code112\advance\nwdefspace by \codemargin % and fix adjustment for def/use113\def\setcodemargin#1{%114\advance\codehsize by -\codemargin % make room for indentation of code115\advance\nwdefspace by -\codemargin % and fix adjustment for def/use116\codemargin=#1117\advance\codehsize by \codemargin % make room for indentation of code118\advance\nwdefspace by \codemargin % and fix adjustment for119% def/use120}121\def\nwopt@shift{%122\dimen@=-0.8in123\if@twoside % Values for two-sided printing:124\advance\evensidemargin by \dimen@125\else % Values for one-sided printing:126\advance\evensidemargin by \dimen@127\advance\oddsidemargin by \dimen@128\fi129% \advance \marginparwidth -\dimen@130}131\let\nwopt@noshift\@empty132\def\nwbegincode#1{%133\begingroup134\topsep \nwcodetopsep135\@beginparpenalty \@highpenalty136\@endparpenalty -\@highpenalty137\@begincode }138\def\nwendcode{\endtrivlist \endgroup \filbreak} % keeps code on 1 page139140\newenvironment{webcode}{%141\@begincode142}{%143\endtrivlist}144\def\@begincode{%145\trivlist \item[]%146\leftskip\@totalleftmargin \advance\leftskip\codemargin147\rightskip\hsize \advance\rightskip -\codehsize148\parskip\z@ \parindent\z@ \parfillskip\@flushglue149\linewidth\codehsize150\@@par151\def\par{\leavevmode\null \@@par \penalty\nwcodepenalty}%152\obeylines153\@noligs \ifx\verbatim@nolig@list\undefined\else154\let\do=\nw@makeother \verbatim@nolig@list \do@noligs\`155\fi156\setupcode \frenchspacing \@vobeyspaces157\nowebsize \setupcode158\let\maybehbox\mbox }159\newskip\nwcodetopsep \nwcodetopsep = 3pt plus 1.2pt minus 1pt160\let\nowebsize=\normalsize161\def\nwopt@tinycode{\let\nowebsize=\tiny}162\def\nwopt@footnotesizecode{\let\nowebsize=\footnotesize}163\def\nwopt@scriptsizecode{\let\nowebsize=\scriptsize}164\def\nwopt@smallcode{\let\nowebsize=\small}165\def\nwopt@normalsizecode{\let\nowebsize=\normalsize}166\def\nwopt@largecode{\let\nowebsize=\large}167\def\nwopt@Largecode{\let\nowebsize=\Large}168\def\nwopt@LARGEcode{\let\nowebsize=\LARGE}169\def\nwopt@hugecode{\let\nowebsize=\huge}170\def\nwopt@Hugecode{\let\nowebsize=\Huge}171\newcount\nwcodepenalty \nwcodepenalty=\@highpenalty172\def\nw@makeother#1{\catcode`#1=12 }173\def\nwbegindocs#1{\ifvmode\noindent\fi}174\let\nwenddocs=\relax175\let\nwdocspar=\filbreak176\raggedbottom177\def\code{\leavevmode\begingroup\setupcode\@vobeyspaces\obeylines}178\let\edoc=\endgroup179\newdimen\@original@textwidth180\def\ps@noweb{%181\@original@textwidth=\textwidth182\let\@mkboth\@gobbletwo183\def\@oddfoot{}\def\@evenfoot{}% No feet.184\if@twoside % If two-sided printing.185\def\@evenhead{\hbox to \@original@textwidth{%186\Rm \thepage\qquad{\Tt\leftmark}\hfil\today}}% Left heading.187\def\@oddhead{\hbox to \@original@textwidth{%188\Rm \today\hfil{\Tt\leftmark}\qquad\thepage}}% Right heading.189\else % If one-sided printing.190\def\@oddhead{\hbox to \@original@textwidth{%191\Rm \today\hfil{\Tt\leftmark}\qquad\thepage}}% Right heading.192\let\@evenhead\@oddhead193\fi194\let\chaptermark\@gobble195\let\sectionmark\@gobble196\let\subsectionmark\@gobble197\let\subsubsectionmark\@gobble198\let\paragraphmark\@gobble199\let\subparagraphmark\@gobble200\def\nwfilename{\begingroup\let\do\@makeother\dospecials201\catcode`\{=1 \catcode`\}=2 \nw@filename}202\def\nw@filename##1{\endgroup\markboth{##1}{##1}\let\nw@filename=\nw@laterfilename}%203}204\def\nw@laterfilename#1{\endgroup\clearpage \markboth{#1}{#1}}205\let\nwfilename=\@gobble206\def\nwcodecomment#1{\@@par\penalty\nwcodepenalty207\if@firstnwcodecomment208\vskip\nwcodecommentsep\penalty\nwcodepenalty\@firstnwcodecommentfalse209\fi%210\hspace{-\codemargin}{%211\rightskip=0pt plus1in212\interlinepenalty\nwcodepenalty213\let\\\relax\footnotesize\Rm #1\@@par\penalty\nwcodepenalty}}214\def\@nwalsodefined#1{\nwcodecomment{\@nwlangdepdef\ \nwpageprep\ \@pagesl{#1}.}}215\def\@nwused#1{\nwcodecomment{\@nwlangdepcud\ \nwpageprep\ \@pagesl{#1}.}}216\def\@nwnotused#1{\nwcodecomment{\@nwlangdeprtc.}}217\def\nwoutput#1{\nwcodecomment{\@nwlangdepcwf\ {\Tt \@stripstar#1*\stripped}.}}218\def\@stripstar#1*#2\stripped{#1}219\newcommand{\nwprevdefptr}[1]{%220\mbox{$\mathord{\triangleleft}\,\mathord{\mbox{\subpageref{#1}}}$}}221\newcommand{\nwnextdefptr}[1]{%222\mbox{$\mathord{\mbox{\subpageref{#1}}}\,\mathord{\triangleright}$}}223224\newcommand{\@nwprevnextdefs}[2]{%225{\nwtagstyle226\ifx\relax#1\else ~~\nwprevdefptr{#1}\fi227\ifx\relax#2\else ~~\nwnextdefptr{#2}\fi}}228\newcommand{\@nwusesondefline}[1]{{\nwtagstyle~~(\@pagenumsl{#1})}}229\newcommand{\@nwstartdeflinemarkup}{\nobreak\hskip 1.5em plus 1fill\nobreak}230\newcommand{\@nwenddeflinemarkup}{\nobreak\hskip \nwdefspace minus\nwdefspace\nobreak}231\def\nwopt@longxref{%232\let\nwalsodefined\@nwalsodefined233\let\nwused\@nwused234\let\nwnotused\@nwnotused235\let\nwprevnextdefs\@gobbletwo236\let\nwusesondefline\@gobble237\let\nwstartdeflinemarkup\relax238\let\nwenddeflinemarkup\relax239}240\def\nwopt@shortxref{%241\let\nwalsodefined\@gobble242\let\nwused\@gobble243\let\nwnotused\@gobble244\let\nwprevnextdefs\@nwprevnextdefs245\let\nwusesondefline\@nwusesondefline246\let\nwstartdeflinemarkup\@nwstartdeflinemarkup247\let\nwenddeflinemarkup\@nwenddeflinemarkup248}249\def\nwopt@noxref{%250\let\nwalsodefined\@gobble251\let\nwused\@gobble252\let\nwnotused\@gobble253\let\nwprevnextdefs\@gobbletwo254\let\nwusesondefline\@gobble255\let\nwstartdeflinemarkup\relax256\let\nwenddeflinemarkup\relax257}258\nwopt@shortxref % to hell with backward compatibility!259\newskip\nwcodecommentsep \nwcodecommentsep=3pt plus 1pt minus 1pt260\newif\if@firstnwcodecomment\@firstnwcodecommenttrue261\newcount\@nwlopage\newcount\@nwhipage % range lo..hi-1262\newcount\@nwlosub % subpage of lo263\newcount\@nwhisub % subpage of hi264\def\@nwfirstpage#1#2#3{% subpage page xref-tag265\@nwlopage=#2 \@nwlosub=#1266\def\@nwloxreftag{#3}%267\advance\@nwpagecount by \@ne268\@nwhipage=\@nwlopage\advance\@nwhipage by \@ne }269\def\@nwnextpage#1#2#3{% subpage page xref-tag270\ifnum\@nwhipage=#2271\advance\@nwhipage by \@ne272\advance\@nwpagecount by \@ne273\@nwhisub=#1274\def\@nwhixreftag{#3}\else275\ifnum#2<\@nwlopage \advance\@nwhipage by \m@ne276\ifnum\@nwhipage=\@nwlopage277\edef\@tempa{\noexpand\noexpand\noexpand\\%278{{\nwthepagenum{\number\@nwlosub}{\number\@nwlopage}}%279{\@nwloxreftag}}}%280\else281\count@=\@nwhipage \advance\count@ by \m@ne282\ifnum\count@=\@nwlopage % consecutive pages283\edef\@tempa{\noexpand\noexpand\noexpand\\%284{{\nwthepagenum{\number\@nwlosub}{\number\@nwlopage}}%285{\@nwloxreftag}}%286\noexpand\noexpand\noexpand\\%287{{\nwthepagenum{\number\@nwhisub}{\number\@nwhipage}}288{\@nwhixreftag}}}%289\else \ifnum\@nwlopage<110 \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}\else290\count@=\@nwlopage \divide\count@ by 100 \multiply\count@ by 100291\ifnum\count@=\@nwlopage \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}\else292\count@=\@nwlopage \divide\count@ by 100293\@nwpagetemp=\@nwhipage \divide\@nwpagetemp by 100294\ifnum\count@=\@nwpagetemp % lo--least 2 digits of hi295\multiply\@nwpagetemp by 100296\advance \@nwhipage by -\@nwpagetemp297\edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}%298\else \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}%299\fi300\fi301\fi%302\fi303\fi%304\edef\@tempa{\noexpand\nwix@cons\noexpand\nw@pages{\@tempa}}\@tempa\@nwfirstpage{#1}{#2}{#3}\else305\ifnum#2>\@nwhipage \advance\@nwhipage by \m@ne306\ifnum\@nwhipage=\@nwlopage307\edef\@tempa{\noexpand\noexpand\noexpand\\%308{{\nwthepagenum{\number\@nwlosub}{\number\@nwlopage}}%309{\@nwloxreftag}}}%310\else311\count@=\@nwhipage \advance\count@ by \m@ne312\ifnum\count@=\@nwlopage % consecutive pages313\edef\@tempa{\noexpand\noexpand\noexpand\\%314{{\nwthepagenum{\number\@nwlosub}{\number\@nwlopage}}%315{\@nwloxreftag}}%316\noexpand\noexpand\noexpand\\%317{{\nwthepagenum{\number\@nwhisub}{\number\@nwhipage}}318{\@nwhixreftag}}}%319\else \ifnum\@nwlopage<110 \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}\else320\count@=\@nwlopage \divide\count@ by 100 \multiply\count@ by 100321\ifnum\count@=\@nwlopage \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}\else322\count@=\@nwlopage \divide\count@ by 100323\@nwpagetemp=\@nwhipage \divide\@nwpagetemp by 100324\ifnum\count@=\@nwpagetemp % lo--least 2 digits of hi325\multiply\@nwpagetemp by 100326\advance \@nwhipage by -\@nwpagetemp327\edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}%328\else \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}%329\fi330\fi331\fi%332\fi333\fi%334\edef\@tempa{\noexpand\nwix@cons\noexpand\nw@pages{\@tempa}}\@tempa\@nwfirstpage{#1}{#2}{#3}\else335\@nwlosub=0 \@nwhisub=0336\fi\fi\fi337}338\newcount\@nwpagetemp339\newcount\@nwpagecount340\def\@nwfirstpagel#1{% label341\@ifundefined{r@#1}{\@warning{Reference `#1' on page \thepage \space undefined}%342\nwix@cons\nw@pages{\\{\bf ??}}}{%343\edef\@tempa{\noexpand\@nwfirstpage\subpagepair{#1}{#1}}\@tempa}}344\def\@nwnextpagel#1{% label345\@ifundefined{r@#1}{\@warning{Reference `#1' on page \thepage \space undefined}%346\nwix@cons\nw@pages{\\{\bf ??}}}{%347\edef\@tempa{\noexpand\@nwnextpage\subpagepair{#1}{#1}}\@tempa}}348\def\@pagesl#1{% list of labels349\gdef\nw@pages{}\@nwpagecount=0350\def\\##1{\@nwfirstpagel{##1}\let\\=\@nwnextpagel}#1%351\advance\@nwhipage by \m@ne352\ifnum\@nwhipage=\@nwlopage353\edef\@tempa{\noexpand\noexpand\noexpand\\%354{{\nwthepagenum{\number\@nwlosub}{\number\@nwlopage}}%355{\@nwloxreftag}}}%356\else357\count@=\@nwhipage \advance\count@ by \m@ne358\ifnum\count@=\@nwlopage % consecutive pages359\edef\@tempa{\noexpand\noexpand\noexpand\\%360{{\nwthepagenum{\number\@nwlosub}{\number\@nwlopage}}%361{\@nwloxreftag}}%362\noexpand\noexpand\noexpand\\%363{{\nwthepagenum{\number\@nwhisub}{\number\@nwhipage}}364{\@nwhixreftag}}}%365\else \ifnum\@nwlopage<110 \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}\else366\count@=\@nwlopage \divide\count@ by 100 \multiply\count@ by 100367\ifnum\count@=\@nwlopage \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}\else368\count@=\@nwlopage \divide\count@ by 100369\@nwpagetemp=\@nwhipage \divide\@nwpagetemp by 100370\ifnum\count@=\@nwpagetemp % lo--least 2 digits of hi371\multiply\@nwpagetemp by 100372\advance \@nwhipage by -\@nwpagetemp373\edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}%374\else \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}%375\fi376\fi377\fi%378\fi379\fi%380\edef\@tempa{\noexpand\nwix@cons\noexpand\nw@pages{\@tempa}}\@tempa\def\\##1{\@nwhyperpagenum##1}%381\ifnum\@nwpagecount=1 \nwpageword \else \nwpagesword\fi~\commafy{\nw@pages}}382\def\@nwhyperpagenum#1#2{\nwhyperreference{#2}{#1}}383384\def\@pagenumsl#1{% list of labels -- doesn't include word `pages', commas, or `and'385\gdef\nw@pages{}\@nwpagecount=0386\def\\##1{\@nwfirstpagel{##1}\let\\=\@nwnextpagel}#1%387\advance\@nwhipage by \m@ne388\ifnum\@nwhipage=\@nwlopage389\edef\@tempa{\noexpand\noexpand\noexpand\\%390{{\nwthepagenum{\number\@nwlosub}{\number\@nwlopage}}%391{\@nwloxreftag}}}%392\else393\count@=\@nwhipage \advance\count@ by \m@ne394\ifnum\count@=\@nwlopage % consecutive pages395\edef\@tempa{\noexpand\noexpand\noexpand\\%396{{\nwthepagenum{\number\@nwlosub}{\number\@nwlopage}}%397{\@nwloxreftag}}%398\noexpand\noexpand\noexpand\\%399{{\nwthepagenum{\number\@nwhisub}{\number\@nwhipage}}400{\@nwhixreftag}}}%401\else \ifnum\@nwlopage<110 \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}\else402\count@=\@nwlopage \divide\count@ by 100 \multiply\count@ by 100403\ifnum\count@=\@nwlopage \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}\else404\count@=\@nwlopage \divide\count@ by 100405\@nwpagetemp=\@nwhipage \divide\@nwpagetemp by 100406\ifnum\count@=\@nwpagetemp % lo--least 2 digits of hi407\multiply\@nwpagetemp by 100408\advance \@nwhipage by -\@nwpagetemp409\edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}%410\else \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}%411\fi412\fi413\fi%414\fi415\fi%416\edef\@tempa{\noexpand\nwix@cons\noexpand\nw@pages{\@tempa}}\@tempa%417\def\\##1{\@nwhyperpagenum##1\let\\=\@nwpagenumslrest}\nw@pages}418\def\@nwpagenumslrest#1{~\@nwhyperpagenum#1}419\def\subpages#1{% list of {{subpage}{page}}420\gdef\nw@pages{}\@nwpagecount=0421\def\\##1{\edef\@tempa{\noexpand\@nwfirstpage##1{}}\@tempa422\def\\####1{\edef\@tempa{\noexpand\@nwnextpage####1}\@tempa}}#1%423\advance\@nwhipage by \m@ne424\ifnum\@nwhipage=\@nwlopage425\edef\@tempa{\noexpand\noexpand\noexpand\\%426{{\nwthepagenum{\number\@nwlosub}{\number\@nwlopage}}%427{\@nwloxreftag}}}%428\else429\count@=\@nwhipage \advance\count@ by \m@ne430\ifnum\count@=\@nwlopage % consecutive pages431\edef\@tempa{\noexpand\noexpand\noexpand\\%432{{\nwthepagenum{\number\@nwlosub}{\number\@nwlopage}}%433{\@nwloxreftag}}%434\noexpand\noexpand\noexpand\\%435{{\nwthepagenum{\number\@nwhisub}{\number\@nwhipage}}436{\@nwhixreftag}}}%437\else \ifnum\@nwlopage<110 \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}\else438\count@=\@nwlopage \divide\count@ by 100 \multiply\count@ by 100439\ifnum\count@=\@nwlopage \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}\else440\count@=\@nwlopage \divide\count@ by 100441\@nwpagetemp=\@nwhipage \divide\@nwpagetemp by 100442\ifnum\count@=\@nwpagetemp % lo--least 2 digits of hi443\multiply\@nwpagetemp by 100444\advance \@nwhipage by -\@nwpagetemp445\edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}%446\else \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}%447\fi448\fi449\fi%450\fi451\fi%452\edef\@tempa{\noexpand\nwix@cons\noexpand\nw@pages{\@tempa}}\@tempa\def\\##1{\@firstoftwo##1}%453\ifnum\@nwpagecount=1 \nwpageword \else \nwpagesword\fi~\commafy{\nw@pages}}454\def\@nwaddrange{\advance\@nwhipage by \m@ne455\ifnum\@nwhipage=\@nwlopage456\edef\@tempa{\noexpand\noexpand\noexpand\\%457{{\nwthepagenum{\number\@nwlosub}{\number\@nwlopage}}%458{\@nwloxreftag}}}%459\else460\count@=\@nwhipage \advance\count@ by \m@ne461\ifnum\count@=\@nwlopage % consecutive pages462\edef\@tempa{\noexpand\noexpand\noexpand\\%463{{\nwthepagenum{\number\@nwlosub}{\number\@nwlopage}}%464{\@nwloxreftag}}%465\noexpand\noexpand\noexpand\\%466{{\nwthepagenum{\number\@nwhisub}{\number\@nwhipage}}467{\@nwhixreftag}}}%468\else \ifnum\@nwlopage<110 \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}\else469\count@=\@nwlopage \divide\count@ by 100 \multiply\count@ by 100470\ifnum\count@=\@nwlopage \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}\else471\count@=\@nwlopage \divide\count@ by 100472\@nwpagetemp=\@nwhipage \divide\@nwpagetemp by 100473\ifnum\count@=\@nwpagetemp % lo--least 2 digits of hi474\multiply\@nwpagetemp by 100475\advance \@nwhipage by -\@nwpagetemp476\edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}%477\else \edef\@tempa{\noexpand\noexpand\noexpand\\{{\number\@nwlopage--\number\@nwhipage}{}}}%478\fi479\fi480\fi%481\fi482\fi%483\edef\@tempa{\noexpand\nwix@cons\noexpand\nw@pages{\@tempa}}\@tempa}484\def\nwpageword{\@nwlangdepchk} % chunk, was page485\def\nwpagesword{\@nwlangdepchks} % chunk, was page486\def\nwpageprep{\@nwlangdepin} % in, was on487\newcommand\nw@genericref[2]{% what to do, name of ref488\expandafter\nw@g@nericref\csname r@#2\endcsname#1{#2}}489\newcommand\nw@g@nericref[3]{% control sequence, what to do, name490\ifx#1\relax491\ref{#3}% trigger the standard `undefined ref' mechanisms492\else493\expandafter#2#1.\\%494\fi}495\def\nw@selectone#1#2#3\\{#1}496\def\nw@selecttwo#1#2#3\\{#2}497\def\nw@selectonetwo#1#2#3\\{{#1}{#2}}498\newcommand{\subpageref}[1]{%499\nwhyperreference{#1}{\nw@genericref\@subpageref{#1}}}500\def\@subpageref#1#2#3\\{%501\@ifundefined{2on#2}{#2}{\nwthepagenum{#1}{#2}}}502\newcommand{\subpagepair}[1]{% % produces {subpage}{page}503\@ifundefined{r@#1}%504{{0}{0}}%505{\nw@genericref\@subpagepair{#1}}}506\def\@subpagepair#1#2#3\\{%507\@ifundefined{2on#2}{{0}{#2}}{{#1}{#2}}}508\newcommand{\sublabel}[1]{%509\@bsphack510\nwblindhyperanchor{#1}%511\if@filesw {\let\thepage\relax512\def\protect{\noexpand\noexpand\noexpand}%513\edef\@tempa{\write\@auxout{\string514\newsublabel{#1}{{}{\thepage}}}}%515\expandafter}\@tempa516\if@nobreak \ifvmode\nobreak\fi\fi\fi\@esphack}517\newcommand{\nosublabel}[1]{%518\@bsphack\if@filesw {\let\thepage\relax519\def\protect{\noexpand\noexpand\noexpand}%520\edef\@tempa{\write\@auxout{\string521\newlabel{#1}{{0}{\thepage}}}}%522\expandafter}\@tempa523\if@nobreak \ifvmode\nobreak\fi\fi\fi\@esphack}524\newcommand\newsublabel{%525\nw@settrailers526\global\let\newsublabel\@newsublabel527\@newsublabel}528\newcommand{\@newsublabel}[2]{%529\edef\this@page{\@cdr#2\@nil}%530\ifx\this@page\last@page\else531\sub@page=\z@532\fi533\edef\last@page{\this@page}534\advance\sub@page by \@ne535\ifnum\sub@page=\tw@536\global\@namedef{2on\this@page}{}%537\fi538\pendingsublabel{#1}%539\edef\@tempa##1{\noexpand\newlabel{##1}%540{{\number\sub@page}{\this@page}\nw@labeltrailers}}%541\pending@sublabels542\def\pending@sublabels{}}543\newcommand\nw@settrailers{% -- won't work on first run544\@ifpackageloaded{nameref}%545{\gdef\nw@labeltrailers{{}{}{}}}%546{\gdef\nw@labeltrailers{}}}547\renewcommand\nw@settrailers{%548\@ifundefined{@secondoffive}%549{\gdef\nw@labeltrailers{}}%550{\gdef\nw@labeltrailers{{}{}{}}}}551\newcommand{\nextchunklabel}[1]{%552\nwblindhyperanchor{#1}% % looks slightly bogus --- nr553\@bsphack\if@filesw {\let\thepage\relax554\edef\@tempa{\write\@auxout{\string\pendingsublabel{#1}}}%555\expandafter}\@tempa556\if@nobreak \ifvmode\nobreak\fi\fi\fi\@esphack}557\newcommand\pendingsublabel[1]{%558\def\@tempa{\noexpand\@tempa}%559\edef\pending@sublabels{\noexpand\@tempa{#1}\pending@sublabels}}560\def\pending@sublabels{}561\def\last@page{\relax}562\newcount\sub@page563\def\@alphasubpagenum#1#2{#2\ifnum#1=0 \else\@alph{#1}\fi}564\def\@nosubpagenum#1#2{#2}565\def\@numsubpagenum#1#2{#2\ifnum#1=0 \else.\@arabic{#1}\fi}566\def\nwopt@nosubpage{\let\nwthepagenum=\@nosubpagenum\nwopt@nomargintag}567\def\nwopt@numsubpage{\let\nwthepagenum=\@numsubpagenum}568\def\nwopt@alphasubpage{\let\nwthepagenum=\@alphasubpagenum}569\nwopt@alphasubpage570\newcount\@nwalph@n571\let\@nwalph@d\@tempcnta572\let\@nwalph@bound\@tempcntb573\def\@nwlongalph#1{{%574\@nwalph@n=#1\advance\@nwalph@n by-1575\@nwalph@bound=26576\loop\ifnum\@nwalph@n<\@nwalph@bound\else577\advance\@nwalph@n by -\@nwalph@bound578\multiply\@nwalph@bound by 26579\repeat580\loop\ifnum\@nwalph@bound>1581\divide\@nwalph@bound by 26582\@nwalph@d=\@nwalph@n\divide\@nwalph@d by \@nwalph@bound583% d := d * bound ; n -:= d; d := d / bound --- saves a temporary584\multiply\@nwalph@d by \@nwalph@bound585\advance\@nwalph@n by -\@nwalph@d586\divide\@nwalph@d by \@nwalph@bound587\advance\@nwalph@d by 1 \@alph{\@nwalph@d}%588\repeat589}}590\newcount\nw@chunkcount591\nw@chunkcount=\@ne592\newcommand{\weblabel}[1]{%593\@bsphack594\nwblindhyperanchor{#1}%595\if@filesw {\let\thepage\relax596\def\protect{\noexpand\noexpand\noexpand}%597\edef\@tempa{\write\@auxout{\string598\newsublabel{#1}{{}{\number\nw@chunkcount}}}}%599\expandafter}\@tempa600\global\advance\nw@chunkcount by \@ne601\if@nobreak \ifvmode\nobreak\fi\fi\fi\@esphack}602\def\nwopt@webnumbering{%603\let\sublabel=\weblabel604\def\nwpageword{chunk}\def\nwpagesword{chunks}%605\def\nwpageprep{in}}606% \nwindexdefn{printable name}{identifying label}{label of chunk}607% \nwindexuse{printable name}{identifying label}{label of chunk}608609\def\nwindexdefn#1#2#3{\@auxix{\protect\nwixd}{#2}{#3}}610\def\nwindexuse#1#2#3{\@auxix{\protect\nwixu}{#2}{#3}}611612\def\@auxix#1#2#3{% {marker}{id label}{subpage label}613\@bsphack\if@filesw {\let\nwixd\relax\let\nwixu\relax614\def\protect{\noexpand\noexpand\noexpand}%615\edef\@tempa{\write\@auxout{\string\nwixadd{#1}{#2}{#3}}}%616\expandafter}\@tempa617\if@nobreak \ifvmode\nobreak\fi\fi\fi\@esphack}618% \nwixadd{marker}{idlabel}{subpage label}619\def\nwixadd#1#2#3{%620\@ifundefined{nwixl@#2}%621{\global\@namedef{nwixl@#2}{#1{#3}}}%622{\expandafter\nwix@cons\csname nwixl@#2\endcsname{#1{#3}}}}623\def\@nwsubscriptident#1#2{\mbox{$\mbox{#1}_{\mathrm{\subpageref{#2}}}$}}624\def\@nwnosubscriptident#1#2{#1}625\def\@nwhyperident#1#2{\leavevmode\nwhyperreference{#2}{#1}}626\def\nwopt@subscriptidents{%627\let\nwlinkedidentq\@nwsubscriptident628\let\nwlinkedidentc\@nwsubscriptident629}630\def\nwopt@nosubscriptidents{%631\let\nwlinkedidentq\@nwnosubscriptident632\let\nwlinkedidentc\@nwnosubscriptident633}634\def\nwopt@hyperidents{%635\let\nwlinkedidentq\@nwhyperident636\let\nwlinkedidentc\@nwhyperident637}638\def\nwopt@nohyperidents{%639\let\nwlinkedidentq\@nwnosubscriptident640\let\nwlinkedidentc\@nwnosubscriptident641}642\def\nwopt@subscriptquotedidents{%643\let\nwlinkedidentq\@nwsubscriptident644}645\def\nwopt@nosubscriptquotedidents{%646\let\nwlinkedidentq\@nwnosubscriptident647}648\def\nwopt@hyperquotedidents{%649\let\nwlinkedidentq\@nwhyperident650}651\def\nwopt@nohyperquotedidents{%652\let\nwlinkedidentq\@nwnosubscriptident653}654\nwopt@hyperidents655\newcount\@commacount656\def\commafy#1{%657{\nwix@listcount{#1}\@commacount=\nwix@counter658\let\@comma@each=\\%659\ifcase\@commacount\let\\=\@comma@each\or\let\\=\@comma@each\or660\def\\{\def\\{ \@nwlangdepand\ \@comma@each}\@comma@each}\else661\def\\{\def\\{, %662\advance\@commacount by \m@ne663\ifnum\@commacount=1 \@nwlangdepand~\fi\@comma@each}\@comma@each}\fi664#1}}665\def\nwix@cons#1#2{% {list}{\marker{element}}666{\toks0=\expandafter{#1}\def\@tempa{#2}\toks2=\expandafter{\@tempa}%667\xdef#1{\the\toks0 \the\toks2 }}}668\def\nwix@uses#1{% {label}669\def\nwixu{\\}\let\nwixd\@gobble\@nameuse{nwixl@#1}}670\def\nwix@defs#1{% {label}671\def\nwixd{\\}\let\nwixu\@gobble\@nameuse{nwixl@#1}}672\newcount\nwix@counter673\def\nwix@listcount#1{% {list with \\}674{\count@=0675\def\\##1{\advance\count@ by \@ne }%676#1\global\nwix@counter=\count@ }}677\def\nwix@usecount#1{\nwix@listcount{\nwix@uses{#1}}}678\def\nwix@defcount#1{\nwix@listcount{\nwix@defs{#1}}}679\def\nwix@id@defs#1{% index pair680{{\Tt \@car#1\@nil}%681\def\\##1{~\subpageref{##1}}\nwix@defs{\@cdr#1\@nil}}}682\def\nwidentuses#1{% list of index pairs683\nwcodecomment{\@nwlangdepuss\ \let\\=\nwix@id@defs\commafy{#1}.}}684\def\nwix@totaluses#1{% list of index pairs685{\count@=0686\def\\##1{\nwix@usecount{\@cdr##1\@nil}\advance\count@ by\nwix@counter}%687#1\global\nwix@counter\count@ }}688\def\nwix@id@uses#1#2{% {ident}{label}689\nwix@usecount{#2}\ifnum\nwix@counter>0690{\advance\leftskip by \codemargin691\nwcodecomment{{\Tt #1}, \@nwlangdepusd\ \nwpageprep\ \@pagesl{\nwix@uses{#2}}.}}%692\else693\ifnw@hideunuseddefs\else694{\advance\leftskip by \codemargin \nwcodecomment{{\Tt #1}, \@nwlangdepnvu.}}%695\fi696\fi}697\def\nwidentdefs#1{% list of index pairs698\ifnw@hideunuseddefs\nwix@totaluses{#1}\else\nwix@listcount{#1}\fi699\ifnum\nwix@counter>0700\nwcodecomment{\@nwlangdepdfs:}%701{\def\\##1{\nwix@id@uses ##1}#1}%702\fi}703\newif\ifnw@hideunuseddefs\nw@hideunuseddefsfalse704\def\nwopt@hideunuseddefs{\nw@hideunuseddefstrue}705\def\nwopt@noidentxref{%706\let\nwidentdefs\@gobble707\let\nwidentuses\@gobble}708\def\nw@underlinedefs{% {list with \nwixd, \nwixu}709\let\\=\relax\def\nw@comma{, }710\def\nwixd##1{\\\underline{\subpageref{##1}}\let\\\nw@comma}%711\def\nwixu##1{\\\subpageref{##1}\let\\\nw@comma}}712713\def\nw@indexline#1#2{%714{\indent {\Tt #1}: \nw@underlinedefs\@nameuse{nwixl@#2}\par}}715716\newenvironment{thenowebindex}{\parindent=-10pt \parskip=\z@717\advance\leftskip by 10pt718\advance\rightskip by 0pt plus1in\par\@afterindenttrue719\def\\##1{\nw@indexline##1}}{}720\def\nowebindex{%721\@ifundefined{nwixs@i}%722{\@warning{The \string\nowebindex\space is empty}}%723{\begin{thenowebindex}\@nameuse{nwixs@i}\end{thenowebindex}}}724\def\nowebindex@external{%725{\let\nwixadds@c=\@gobble726\def\nwixadds@i##1{\nw@indexline##1}%727\def\nwixaddsx##1##2{\@nameuse{nwixadds@##1}{##2}}%728\begin{thenowebindex}\@input{\jobname.nwi}\end{thenowebindex}}}729\def\nwixlogsorted#1#2{% list data730\@bsphack\if@filesw731\toks0={#2}\immediate\write\@auxout{\string\nwixadds{#1}{\the\toks0}}732\if@nobreak \ifvmode\nobreak\fi\fi\fi\@esphack}733\def\nwixadds#1#2{%734\@ifundefined{nwixs@#1}%735{\global\@namedef{nwixs@#1}{\\{#2}}}%736{\expandafter\nwix@cons\csname nwixs@#1\endcsname{\\{#2}}}}737\let\nwixaddsx=\@gobbletwo738\def\nwopt@externalindex{%739\ifx\nwixadds\@gobbletwo % already called740\else741\let\nwixaddsx=\nwixadds \let\nwixadds=\@gobbletwo742\let\nowebindex=\nowebindex@external743\let\nowebchunks=\nowebchunks@external744\fi}745\def\nowebchunks{%746\@ifundefined{nwixs@c}%747{\@warning{The are no \string\nowebchunks}}%748{\begin{thenowebchunks}\@nameuse{nwixs@c}\end{thenowebchunks}}}749\def\nowebchunks@external{%750{\let\nwixadds@i=\@gobble751\def\nwixadds@c##1{\nw@onechunk##1}%752\def\nwixaddsx##1##2{\@nameuse{nwixadds@##1}{##2}}%753\begin{thenowebchunks}\@input{\jobname.nwi}\end{thenowebchunks}}}754\@namedef{r@nw@notdef}{{0}{(\@nwlangdepnvd)}}755\def\nw@chunkunderlinedefs{% {list of labels with \nwixd, \nwixu}756\let\\=\relax\def\nw@comma{, }757\def\nwixd##1{\\\underline{\subpageref{##1}}\let\\\nw@comma}%758\def\nwixu##1{\\\subpageref{##1}\let\\\nw@comma}}759\def\nw@onechunk#1#2#3{% {name}{label of first definition}{list with \nwixd, \nwixu}760\@ifundefined{r@#2}{}{%761\indent\LA #1~{\nwtagstyle\subpageref{#2}}\RA762\if@nwlongchunks{~\nw@chunkunderlinedefs#3}\fi\par}}763\newenvironment{thenowebchunks}{\vskip3pt764\parskip=\z@\parindent=-10pt \advance\leftskip by 10pt765\advance\rightskip by 0pt plus10pt \@afterindenttrue766\def\\##1{\nw@onechunk##1}}{}767\newif\if@nwlongchunks768\@nwlongchunksfalse769\let\nwopt@longchunks\@nwlongchunkstrue770\newcommand\@nw@hyper@ref{\hyperreference} % naras771\newcommand\@nw@hyper@anc{\blindhyperanchor} % naras772\newcommand\@nw@hyperref@ref[2]{\hyperlink{noweb.#1}{#2}} % nr773\newcommand\@nw@hyperref@anc[1]{\hypertarget{noweb.#1}{\relax}} % nr774%%\renewcommand\@nw@hyperref@ref[2]{{#2}} % nr775%%\renewcommand\@nw@hyperref@anc[1]{} % nr776\newcommand\nwhyperreference{%777\@ifundefined{hyperlink}778{\@ifundefined{hyperreference}779{\global\let\nwhyperreference\@gobble}780{\global\let\nwhyperreference\@nw@hyper@ref}}781{\global\let\nwhyperreference\@nw@hyperref@ref}%782\nwhyperreference783}784785\newcommand\nwblindhyperanchor{%786\@ifundefined{hyperlink}787{\@ifundefined{hyperreference}788{\global\let\nwblindhyperanchor\@gobble}789{\global\let\nwblindhyperanchor\@nw@hyper@anc}}790{\global\let\nwblindhyperanchor\@nw@hyperref@anc}%791\nwblindhyperanchor792}793\newcommand\nwanchorto{%794\begingroup\let\do\@makeother\dospecials795\catcode`\{=1 \catcode`\}=2 \nw@anchorto}796\newcommand\nw@anchorto[1]{\endgroup\def\nw@next{#1}\nw@anchortofin}797\newcommand\nw@anchortofin[1]{#1\footnote{See URL \texttt{\nw@next}.}}798\let\nwanchorname\@gobble799\newif\ifhtml800\htmlfalse801\let\nwixident=\relax802\def\nwbackslash{\char92}803\def\nwlbrace{\char123}804\def\nwrbrace{\char125}805\def\nwopt@english{%806\def\@nwlangdepdef{This definition is continued}%807\def\@nwlangdepcud{This code is used}%808\def\@nwlangdeprtc{Root chunk (not used in this document)}%809\def\@nwlangdepcwf{This code is written to file}%810\def\@nwlangdepchk{chunk}%811\def\@nwlangdepchks{chunks}%812\def\@nwlangdepin{in}%813\def\@nwlangdepand{and}%814\def\@nwlangdepuss{Uses}%815\def\@nwlangdepusd{used}%816\def\@nwlangdepnvu{never used}%817\def\@nwlangdepdfs{Defines}%818\def\@nwlangdepnvd{never defined}%819}820\let\nwopt@american\nwopt@english821\def\nwopt@portuges{%822\def\@nwlangdepdef{Defini\c{c}\~ao continuada em}%823% This definition is continued824\def\@nwlangdepcud{C\'odigo usado em}%825% This code is used826\def\@nwlangdeprtc{Fragmento de topo (sem uso no documento)}%827% Root chunk (not used in this document)828\def\@nwlangdepcwf{Este c\'odigo foi escrito no ficheiro}%829% This code is written to file830\def\@nwlangdepchk{fragmento}%831% chunk832\def\@nwlangdepchks{fragmentos}%833% chunks834\def\@nwlangdepin{no(s)}%835% in836\def\@nwlangdepand{e}%837% and838\def\@nwlangdepuss{Usa}%839% Uses840\def\@nwlangdepusd{usado}%841% used842\def\@nwlangdepnvu{nunca usado}%843% never used844\def\@nwlangdepdfs{Define}%845% Defines846\def\@nwlangdepnvd{nunca definido}%847% never defined848}849\def\nwopt@frenchb{%850\def\@nwlangdepdef{Cette d\'efinition suit}%851% This definition is continued852\def\@nwlangdepcud{Ce code est employ\'e}%853% This code is used854\def\@nwlangdeprtc{Morceau racine (pas employ\'e dans ce document)}%855% Root chunk (not used in this document)856\def\@nwlangdepcwf{Ce code est \'ecrit aux fichier}%857% This code is written to file858\def\@nwlangdepchk{le morceau}%859% chunk860\def\@nwlangdepchks{les morceaux}%861% chunks862\def\@nwlangdepin{dans}%863% in864\def\@nwlangdepand{et}%865% and866\def\@nwlangdepuss{Il emploie}%867% Uses868\def\@nwlangdepusd{employ\'{e}}%869% used870\def\@nwlangdepnvu{jamais employ\'{e}}%871% never used872\def\@nwlangdepdfs{Il d\'{e}fine}%873% Defines874% Cannot use the accent here: \def\@nwlangdepnvd{jamais d\'{e}fini}%875\def\@nwlangdepnvd{jamais defini}%876% never defined877}878\let\nwopt@french\nwopt@frenchb879\def\nwopt@german{%880\def\@nwlangdepdef{Diese Definition wird fortgesetzt}%881% This definition is continued882\def\@nwlangdepcud{Dieser Code wird benutzt}%883% This code is used884\def\@nwlangdeprtc{Hauptteil (nicht in diesem Dokument benutzt)}%885% Root chunk (not used in this document)886\def\@nwlangdepcwf{Dieser Code schreibt man zum File}%887% This code is written to file888\def\@nwlangdepchk{Teil}%889% chunk890\def\@nwlangdepchks{Teils}%891% chunks892\def\@nwlangdepin{im}%893% in894\def\@nwlangdepand{und}%895% and896\def\@nwlangdepuss{Benutztt}%897% Uses898\def\@nwlangdepusd{benutzt}%899% used900\def\@nwlangdepnvu{nicht benutzt}%901% never used902\def\@nwlangdepdfs{Definiert}%903% Defines904\def\@nwlangdepnvd{nicht definiert}%905% never defined906}907\let\nwopt@ngerman\nwopt@german908\ifx\languagename\undefined % default is English909\noweboptions{english}910\else911\@ifundefined{nwopt@\languagename}912{\noweboptions{english}}913{\expandafter\noweboptions\expandafter{\languagename}}914\fi915% spadcommands are the actual text that you type at the axiom prompt916\newcommand{\spadcommand}[1]%917{\begin{flushleft}{\tt #1}\end{flushleft}\vskip .1cm }918919% spadgraph are the actual text that you type at the axiom prompt for draw920\newcommand{\spadgraph}[1]%921{\begin{flushleft}{\tt #1}\end{flushleft}\vskip .1cm }922923% returnType is the type signature returned by the axiom interpreter924\newcommand{\returnType}[1]%925{\begin{flushright}{\tt #1}\end{flushright}\vskip .1cm}926927% The book begins with some introductory material that is not really928% listed as a chapter. This creates a header similar to \chapter.929\newcommand{\pseudoChapter}[1]%930{\vskip .5in \noindent {\Huge{\bf #1}}\vskip .5in}931932% The book begins with some introductory material that is not really933% listed as a section. This creates a header similar to \section.934\newcommand{\pseudoSection}[1]%935{\vskip .25in \noindent {\large{\bf #1}}\vskip .25in}936937% spadofFrom records the operation in the index and the domain in the index938\newcommand{\spadopFrom}[2]{\index{library!operations!#1 @\begingroup \string\tt{} #1 \endgroup}\index{#2}``{\tt #1}''}939940% spadfunFrom records the function name and domain in the index941\newcommand{\spadfunFrom}[2]{{\bf #1}\index{#1 @\begingroup \string\bf{} #1 \endgroup}\index{#2}}942943\newcommand\AXIOM{\vskip\parindent\indent{\bf AXIOM}\vskip\parindent\noindent\ignorespaces}944\newcommand\maxima{\vskip\parindent\noindent{\bf MAXIMA}\vskip\parindent\noindent\ignorespaces}945\newcommand\yacas{\vskip\parindent\noindent{\bf YACAS}\vskip\parindent\noindent\ignorespaces}946947948