\immediate\write16{ExamTeX, an exam typesetting environment.} \immediate\write16{By B. Harbourne} \immediate\write16{Department of Mathematics and Statistics} \immediate\write16{University of Nebraska-Lincoln} \immediate\write16{11-26-91, modified 5-19-92, 9-8-92 and 11-3-93} \newcount\howmanypages \howmanypages 0 \def\numberofpages{Also note that this exam \ifnum\howmanypages=1\relax has just \number\howmanypages\ page. \relax \else should have \number\howmanypages\ pages; please check that it does.\fi} \def\pageheader{\vbox to 0pt{\vskip-15pt\hbox to\hsize{page \folio\ of \number\howmanypages\ pages\hfil \coursename\ \NameOfExam}\vfil}} \newbox\dumpit \newcount\checkflag \checkflag 0 \newcount\probno \newcount\pointtotal \global\pointtotal 0 \global\probno 0\relax \def\problem#1#2#3{\global\advance\probno by1 \ifnum\checkflag=\gradegridflag \else \addbox{#1} \global\advance\pointtotal by #1 \fi \setbox\probbox=\vbox{\noindent [\number\probno] (#1 points) #3 \vskip #2 in} \global\advance\spaceleft by-\ht\probbox \ifdim \spaceleft>0in \setbox\partialpage=\vbox{\box\partialpage\box\probbox} \else \global\advance\howmanypages by1 \setbox\dumpit=\vbox{\box\partialpage} \setbox\partialpage=\vbox{\box\probbox} \global\spaceleft\vsize \global\advance\spaceleft by-\ht\partialpage \fi} \def\comment#1#2{\setbox\probbox=\vbox{\noindent #2 \vskip #1 in} \global\advance\spaceleft by-\ht\probbox \ifdim \spaceleft>0in \setbox\partialpage=\vbox{\box\partialpage\box\probbox} \else \global\advance\howmanypages by1 \setbox\dumpit=\vbox{\box\partialpage} \setbox\partialpage=\vbox{\box\probbox} \global\spaceleft\vsize \global\advance\spaceleft by-\ht\partialpage \fi} \def\endtest{\ifnum\checkflag=\gradegridflag \else \setbox\prevstuff=\vbox{\hbox{\box\prevstuff \vbox{\lineskip 0in\relax \hbox{\boxit{\hbox to .5in{\hfil Totals\hfil}}}\relax \hbox{\boxit{\hbox to .5in{\hfil\number\pointtotal\hfil}}}\relax \hbox{\boxit{\hbox to .5in{\hss}}}}}}\fi \global\advance\howmanypages by1 \setbox\dumpit=\vbox{\box\partialpage}} \def\boxit#1{\vbadness10000\vbox{\hrule\hbox{\vrule\kern3pt\vbox to 15pt{\kern3pt #1\kern3pt}\kern3pt\vrule}\hrule}} \newbox\prevstuff \setbox\prevstuff=\vbox{\lineskip 0in\relax \hbox{\boxit{\hbox to .6in{Problem\hfil}}}\relax \hbox{\boxit{\hbox to .6in{Points\hfil}}}\relax \hbox{\boxit{\hbox to .6in{Score\hfil}}}} \def\addbox#1{\setbox\prevstuff=\vbox{\hbox{\box\prevstuff \vbox{\lineskip 0in\relax \hbox{\boxit{\hbox to .17in{\hfil\number\probno\hfil}}} \hbox{\boxit{\hbox to .17in{\hfil{#1}\hfil}}} \hbox{\boxit{\hbox to .17in{\hss}}}}}}} \newdimen\spaceleft \newbox\partialpage \newbox\probbox \def\starttest{\global\spaceleft\vsize \setbox\partialpage=\vbox{\examheader \ifnum\checkflag=\gradegridflag \vskip .25in \else \vskip .25in \copy\prevstuff \vskip .25in\fi} \global\advance\spaceleft by-\ht\partialpage} %%Here are the required definitions to do scaling. \def\strip#1 #2\next{#1}% \def\getcfnt{\edef\cftstr{\fontname\font\space}% \edef\cfnt{\expandafter\strip\cftstr\next}% \edef\cfnt{\cfnt\space}}% \newbox\tenT \newbox\newT \newdimen\tenTht \newdimen\newTht \newdimen\ptsz \newcount\newThtinsps %%The next macro will change to a predetermined font, called \itfnt, %%at the same size as the current font. \def\nwfntsmsz{\setbox\tenT=\hbox{\itfnt\getcfnt\font\itfnt=\cfnt at 10pt\itfnt T}% \setbox\newT=\hbox{T}% \tenTht\ht\tenT \advance\tenTht by \dp\tenT \newTht\ht\newT \advance\newTht by \dp\newT \multiply\newTht by10 \newThtinsps\newTht \divide\newThtinsps by\tenTht \ptsz 1pt \multiply\ptsz by\newThtinsps \itfnt\getcfnt\font\itfnt=\cfnt at \ptsz\itfnt} %%One can use \nwfntsmsz to make text italics use the font \itfnt. %%Do this with the commands below: %%Redefine the italics command, %\def\it{\nwfntsmsz} %%and choose the font you want italics in: %\font\itfnt=ps-times-i at 10pt \newbox\atenT \newbox\anewT \newdimen\atenTht \newdimen\anewTht \newdimen\aptsz \newcount\anewThtinsps \def\getptsz#1{\setbox\atenT=\hbox{\getcfnt\font\tempfnt=\cfnt at 10pt\tempfnt T}% \setbox\anewT=\hbox{T}% \atenTht\ht\atenT \advance\atenTht by \dp\atenT \anewTht\ht\anewT \advance\anewTht by \dp\anewT \multiply\anewTht by100 \anewThtinsps\anewTht \divide\anewThtinsps by\atenTht \aptsz 10pt \multiply\aptsz by\anewThtinsps \divide\aptsz by1000 \multiply\aptsz by #1 \divide\aptsz by100} \def\scaleby#1{\getptsz{#1}\relax \getcfnt\font\tempfnt=\cfnt at \aptsz \tenrm\getptsz{#1}\relax \getcfnt\font\tenrm=\cfnt at \aptsz \sevenrm\getptsz{#1}\relax \getcfnt\font\sevenrm=\cfnt at \aptsz \fiverm\getptsz{#1}\relax \getcfnt\font\fiverm=\cfnt at \aptsz \teni\getptsz{#1}\relax \getcfnt\font\teni=\cfnt at \aptsz \seveni\getptsz{#1}\relax \getcfnt\font\seveni=\cfnt at \aptsz \fivei\getptsz{#1}\relax \getcfnt\font\fivei=\cfnt at \aptsz \tensy\getptsz{#1}\relax \getcfnt\font\tensy=\cfnt at \aptsz \sevensy\getptsz{#1}\relax \getcfnt\font\sevensy=\cfnt at \aptsz \fivesy\getptsz{#1}\relax \getcfnt\font\fivesy=\cfnt at \aptsz \tenex\getptsz{#1}\relax \getcfnt\font\tenex=\cfnt at \aptsz \tenbf\getptsz{#1}\relax \getcfnt\font\tenbf=\cfnt at \aptsz \sevenbf\getptsz{#1}\relax \getcfnt\font\sevenbf=\cfnt at \aptsz \fivebf\getptsz{#1}\relax \getcfnt\font\fivebf=\cfnt at \aptsz \tensl\getptsz{#1}\relax \getcfnt\font\tensl=\cfnt at \aptsz \tentt\getptsz{#1}\relax \getcfnt\font\tentt=\cfnt at \aptsz \tenit\getptsz{#1}\relax \getcfnt\font\tenit=\cfnt at \aptsz \textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm \textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei \textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy \textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex \textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf \scriptscriptfont\bffam=\fivebf \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\ttfam=\tentt \tempfnt} \starttest \input\questionsfile \endtest \probno 0\relax \def\problem#1#2#3{\global\advance\probno by1 \setbox\probbox=\vbox{\noindent [\number\probno] (#1 points) #3 \vskip #2 in} \global\advance\spaceleft by-\ht\probbox \ifdim \spaceleft>0in \setbox\partialpage=\vbox{\box\partialpage\box\probbox} \else \ifnum\pageno=1 \shipout\vbox{\box\partialpage} \else \shipout\vbox{\pageheader\box\partialpage} \fi \advancepageno \setbox\partialpage=\vbox{\box\probbox} \global\spaceleft\vsize \global\advance\spaceleft by-\ht\partialpage \fi} \def\comment#1#2{\setbox\probbox=\vbox{\noindent #2 \vskip #1 in} \global\advance\spaceleft by-\ht\probbox \ifdim \spaceleft>0in \setbox\partialpage=\vbox{\box\partialpage\box\probbox} \else \ifnum\pageno=1 \shipout\vbox{\box\partialpage} \else \shipout\vbox{\pageheader\box\partialpage} \fi \advancepageno \setbox\partialpage=\vbox{\box\probbox} \global\spaceleft\vsize \global\advance\spaceleft by-\ht\partialpage \fi} \def\endtest{\pageno\pageno\ifnum\pageno=1\relax \shipout\vbox{\box\partialpage} \else \shipout\vbox{\pageheader\box\partialpage} \fi\end} \starttest \input\questionsfile \endtest