summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/interactiveworkbook/interactiveworkbook.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/interactiveworkbook/interactiveworkbook.sty
Initial commit
Diffstat (limited to 'macros/latex/contrib/interactiveworkbook/interactiveworkbook.sty')
-rw-r--r--macros/latex/contrib/interactiveworkbook/interactiveworkbook.sty/interactiveworkbook-web.sty991
-rw-r--r--macros/latex/contrib/interactiveworkbook/interactiveworkbook.sty/interactiveworkbook.sty980
2 files changed, 1971 insertions, 0 deletions
diff --git a/macros/latex/contrib/interactiveworkbook/interactiveworkbook.sty/interactiveworkbook-web.sty b/macros/latex/contrib/interactiveworkbook/interactiveworkbook.sty/interactiveworkbook-web.sty
new file mode 100644
index 0000000000..b4fbf96474
--- /dev/null
+++ b/macros/latex/contrib/interactiveworkbook/interactiveworkbook.sty/interactiveworkbook-web.sty
@@ -0,0 +1,991 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% INTERACTIVEWORKBOOK STYLE FILE: put this file in /tex/latex/graphics file
+% if using MiKTeX for Windows
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\ProvidesPackage{interactiveworkbook}[1999/06/04]
+
+\RequirePackage{epsfig} % allows text fields, to be placed anywhere on page
+\RequirePackage{color} % allows fonts to be colored
+\RequirePackage{xspace} % allows appropriate space after fieldone, say
+\RequirePackage{ifthen} % allows question taker to choose between clear, submit buttons
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% BUTTON APPEARANCE: PREVIOUS, INDEX, NEXT, EXERQUES, SUBMIT, CLEAR, RETURN,
+% SELECTED (UP) AND UNSELECTED (DOWN)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\AtBeginDocument{\epsfig{file=buttonappearance.eps,height=1bp,width=1bp}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% THREE PAGE OUTPUT FOR EACH QUESTION (ONE *EXERCISE* OFTEN HAS MANY QUESTIONS):
+% QUESTION (FIRST) PAGE, CORRECT (SECOND) PAGE, INCORRECT (THIRD) PAGE
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\questionandresponses}[7]{ % seven arguments
+ \setcounter{page}{1} % specifies "page one" versions of check, popup, field and radio buttons
+ \textcolor{black}{#5} % put question, argument #5, on first page (of three) pages
+ \vfill
+ % locations of previous, index and next exercise files are [2], [3], [4], respectively
+ \prevsetup{#2} \ndexsetup{#3} \nextsetup{#4}
+ \begin{center} % Clear, argument #1, is either check, popup, field or radio
+ \clear{#1} \hfill \prev \ndex \next \hfill \submit{#1}
+ \end{center} % Previous, Index, Next, and Submit Buttons
+ % put correct response page on second page
+ \newpage
+ \setcounter{page}{2} % specifies "page two" versions of check, popup, field and radio buttons
+ \textcolor{black}{#5} % repeat question, argument #5, on correct response page
+ \par\smallskip %
+ % blue correct answer hint is argument #6
+ \textcolor{blue}{#6} % give hint related to correct answer
+ \par\vfill %
+ % \correct (answer), argument #1, is either check, popup, field or radio
+ % \correct, argument #2, is found on the correct (response) page
+ \begin{center}
+ \correct{#1}{right} \hfill \prev \ndex \next \hfill \return
+ \end{center} % Return from response to question page
+ % put incorrect response page on third page
+ \newpage
+ \setcounter{page}{3} % specifies "page three" versions of check, popup, field and radio buttons
+ \textcolor{black}{#5} % repeat question, argument #5, on incorrect response page
+ \par\smallskip %
+ % red incorrect answer hint is argument #7
+ \textcolor{red}{#7} % give hint related to correct answer
+ \par\vfill %
+ \begin{center} % \correct, argument #2, is found on the correct (response) page
+ \correct{#1}{wrong} \hfill \prev \ndex \next \hfill \return
+ \end{center} % Return from response to question page
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% QUESTION *TAKER* ANSWERS: CHECK, FIELD, POPUP, RADIO
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% five check boxes, for question taker,
+% first click puts in "X" (button is "on"), second click removes "X" (button is "off")
+
+\newcommand{\checkone}{% check box one, for either page one, two or three
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonecheckone.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwocheckone.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreecheckone.eps,height=10bp}}{}
+ \relax\xspace%
+}
+\newcommand{\checktwo}{% check box two
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonechecktwo.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwochecktwo.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreechecktwo.eps,height=10bp}}{}
+ \relax\xspace%
+}
+\newcommand{\checkthree}{% check box three
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonecheckthree.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwocheckthree.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreecheckthree.eps,height=10bp}}{}
+ \relax\xspace%
+}
+\newcommand{\checkfour}{% check box four
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonecheckfour.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwocheckfour.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreecheckfour.eps,height=10bp}}{}
+ \relax\xspace%
+}
+\newcommand{\checkfive}{% check box five
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonecheckfive.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwocheckfive.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreecheckfive.eps,height=10bp}}{}
+ \relax\xspace%
+}
+
+% five text fields, for question taker
+
+\newcommand{\fieldone}{
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonefieldone.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwofieldone.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreefieldone.eps,height=15bp}}{}
+ \relax\xspace%
+}
+\newcommand{\fieldtwo}{% text field two
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonefieldtwo.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwofieldtwo.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreefieldtwo.eps,height=15bp}}{}
+ \relax\xspace%
+}
+\newcommand{\fieldthree}{% text field three
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonefieldthree.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwofieldthree.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreefieldthree.eps,height=15bp}}{}
+ \relax\xspace%
+}
+\newcommand{\fieldfour}{% text field four
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonefieldfour.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwofieldfour.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreefieldfour.eps,height=15bp}}{}
+ \relax\xspace%
+}
+\newcommand{\fieldfive}{% text field five
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonefieldfive.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwofieldfive.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreefieldfive.eps,height=15bp}}{}
+ \relax\xspace%
+}
+
+% five popup menus, for question taker,
+% nine possible choices, a,b,c,d,e,f,g,h and i, each popup
+
+\newcommand{\popupone}{ % popup menu one, for pages one, two and three
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonepopupone.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwopopupone.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreepopupone.eps,height=15bp}}{}
+ \relax\xspace%
+}
+\newcommand{\popuptwo}{% popup menu two
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonepopuptwo.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwopopuptwo.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreepopuptwo.eps,height=15bp}}{}
+ \relax\xspace%
+}
+\newcommand{\popupthree}{% popup menu three
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonepopupthree.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwopopupthree.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreepopupthree.eps,height=15bp}}{}
+ \relax\xspace%
+}
+\newcommand{\popupfour}{% popup menu four
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonepopupfour.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwopopupfour.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreepopupfour.eps,height=15bp}}{}
+ \relax\xspace%
+}
+\newcommand{\popupfive}{% popup menu five
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonepopupfive.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwopopupfive.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreepopupfive.eps,height=15bp}}{}
+ \relax\xspace%
+}
+
+% five radio buttons, for question taker,
+% choose (only) one of five possible choices, a,b,c,d and e
+
+\newcommand{\radioone}{ % radio button one, 11by seems to be "right" height for radio button
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageoneradioone.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetworadioone.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreeradioone.eps,height=11bp}}{}
+ \relax\xspace%
+}
+\newcommand{\radiotwo}{% radio button two
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageoneradiotwo.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetworadiotwo.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreeradiotwo.eps,height=11bp}}{}
+ \relax\xspace%
+}
+\newcommand{\radiothree}{% radio button three
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageoneradiothree.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetworadiothree.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreeradiothree.eps,height=11bp}}{}
+ \relax\xspace%
+}
+\newcommand{\radiofour}{% radio button four
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageoneradiofour.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetworadiofour.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreeradiofour.eps,height=11bp}}{}
+ \relax\xspace%
+}
+\newcommand{\radiofive}{% radio button five
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageoneradiofive.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetworadiofive.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreeradiofive.eps,height=11bp}}{}
+ \relax\xspace%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% QUESTION *GIVER* ANSWERS, FOR CHECK, POPUP, FIELD, RADIO
+% DUMMY BUTTONS WHICH DO NOT APPEAR ON THE SCREEN
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% five check boxes, for question giver,
+% designates button "On" ("X") or "Off" (removes "X")
+
+\newcommand{\answercheckone}[1]{% check box answer one, argument [1] is "On" or "Off"
+ \special{ps::
+ [
+ /T (checkanswer1) % title is checkanswer1, used in checksubmit.eps
+ /Rect [0 0 30 30] % dummy check box print area, does not appear on screen
+ /Subtype /Widget % check box widget
+ /F 4 % printable, "X" or not "X"
+ /FT /Btn % type, check box
+ /V(#1) % argument #1 is value (when window first opened), which is "On" or "Off"
+ /DV(#1) % default value, if reset, is "On" or "Off", whatever argument #1 is
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerchecktwo}[1]{% check box answer two
+ \special{ps::
+ [
+ /T (checkanswer2)
+ /Rect [0 0 30 30]
+ /Subtype /Widget
+ /F 4
+ /FT /Btn
+ /DV(#1)
+ /V(#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answercheckthree}[1]{% check box answer three
+ \special{ps::
+ [
+ /T (checkanswer3)
+ /Rect [0 0 30 30]
+ /Subtype /Widget
+ /F 4
+ /FT /Btn
+ /DV(#1)
+ /V(#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answercheckfour}[1]{% check box answer four
+ \special{ps::
+ [
+ /T (checkanswer4)
+ /Rect [0 0 30 30]
+ /Subtype /Widget
+ /F 4
+ /FT /Btn
+ /DV(#1)
+ /V(#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answercheckfive}[1]{% check box answer five
+ \special{ps::
+ [
+ /T (checkanswer5)
+ /Rect [0 0 30 30]
+ /Subtype /Widget
+ /F 4
+ /FT /Btn
+ /DV(#1)
+ /V(#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+
+% five popup menu answers, for question giver,
+% correct answers typed in tex files, as argument of "answerpopup..."
+
+\newcommand{\answerpopupone}[1]{% argument [1] text answer
+ \special{ps::
+ [
+ /T (popupanswer1) % question giver text *title* used in various submit.eps
+ /Subtype /Widget
+ /FT /Ch % popup (choice, list) menu
+ /Ff 393216 % popup list
+ /Opt [ [(a)(a)] [(b)(b)] [(c)(c)] [(d)(d)] [(e)(e)] [(f)(f)] [(g)(g)] [(h)(h)] [(i)(i)] ]
+ /Rect [500 2290 560 2320] % dummy popup menu
+ /V (#1) % argument is question giver text
+ /DV (#1) % argument is question giver text
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerpopuptwo}[1]{
+ \special{ps::
+ [
+ /T (popupanswer2)
+ /Subtype /Widget
+ /FT /Ch
+ /Ff 393216
+ /Opt [ [(a)(a)] [(b)(b)] [(c)(c)] [(d)(d)] [(e)(e)] [(f)(f)] [(g)(g)] [(h)(h)] [(i)(i)] ]
+ /Rect [500 2290 560 2320]
+ /F 4
+ /V (#1)
+ /DV (#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerpopupthree}[1]{
+ \special{ps::
+ [
+ /T (popupanswer3)
+ /Subtype /Widget
+ /FT /Ch
+ /Ff 393216
+ /Opt [ [(a)(a)] [(b)(b)] [(c)(c)] [(d)(d)] [(e)(e)] [(f)(f)] [(g)(g)] [(h)(h)] [(i)(i)] ]
+ /Rect [500 2290 560 2320]
+ /F 4
+ /V (#1)
+ /DV (#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerpopupfour}[1]{
+ \special{ps::
+ [
+ /T (popupanswer4)
+ /Subtype /Widget
+ /FT /Ch
+ /Ff 393216
+ /Opt [ [(a)(a)] [(b)(b)] [(c)(c)] [(d)(d)] [(e)(e)] [(f)(f)] [(g)(g)] [(h)(h)] [(i)(i)] ]
+ /Rect [500 2290 560 2320]
+ /F 4
+ /V (#1)
+ /DV (#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerpopupfive}[1]{
+ \special{ps::
+ [
+ /T (popupanswer5)
+ /Subtype /Widget
+ /FT /Ch
+ /Ff 393216
+ /Opt [ [(a)(a)] [(b)(b)] [(c)(c)] [(d)(d)] [(e)(e)] [(f)(f)] [(g)(g)] [(h)(h)] [(i)(i)] ]
+ /Rect [500 2290 560 2320]
+ /F 4
+ /V (#1)
+ /DV (#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+
+% five answers, for user,
+% correct answers typed in tex files, as argument of answerone, say
+
+\newcommand{\answerfieldone}[1]{% argument [1] text answer
+ \special{ps::
+ [
+ /T (fieldanswer1) % question giver text *title* used in various submit.eps
+ /Subtype /Widget
+ /FT /Tx % dummy text, required in definition of widget
+ /Rect [450 2290 750 2320] % dummy text field size
+ /F 4
+ /V (#1) % argument is question giver text
+ /DV (#1) % argument is question giver text
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerfieldtwo}[1]{
+ \special{ps::
+ [
+ /T (fieldanswer2)
+ /Subtype /Widget
+ /FT /Tx
+ /Rect [450 2290 750 2320]
+ /F 4
+ /V (#1)
+ /DV (#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerfieldthree}[1]{
+ \special{ps::
+ [
+ /T (fieldanswer3)
+ /Subtype /Widget
+ /FT /Tx
+ /Rect [450 2290 750 2320]
+ /F 4
+ /V (#1)
+ /DV (#1) % argument is question giver text
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerfieldfour}[1]{
+ \special{ps::
+ [
+ /T (fieldanswer4)
+ /Subtype /Widget
+ /FT /Tx
+ /Rect [450 2290 750 2320]
+ /F 4
+ /V (#1)
+ /DV (#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerfieldfive}[1]{
+ \special{ps::
+ [
+ /T (fieldanswer5)
+ /Subtype /Widget
+ /FT /Tx
+ /Rect [450 2290 750 2320]
+ /F 4
+ /V (#1)
+ /DV (#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+
+% five radio button answers, for question giver,
+% only one of the five buttons may be "On", all others must be "Off"
+
+\newcommand{\answerradioone}[1]{ % radio button answer one, argument [1] is "On" or "Off"
+ \special{ps::
+ [
+ /T (radioanswer1) % title is radioanswer1, used in radiosubmit.eps
+ /Rect [0 0 30 30] % dummy radio button area
+ /Subtype /Widget % dummy radio button widget
+ /F 4 % printable, "On" or "Off"
+ /FT /Btn % type, radio button
+ /V(#1) % value (when window first opened) is "On" or "Off"
+ /DV(#1) % default value, if reset, is "On" or "Off", whatever argument #1 is
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerradiotwo}[1]{ % radio button answer two
+ \special{ps::
+ [
+ /T (radioanswer2)
+ /Rect [0 0 30 30]
+ /Subtype /Widget
+ /F 4
+ /FT /Btn
+ /V(#1)
+ /DV(#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerradiothree}[1]{ % radio button answer three
+ \special{ps::
+ [
+ /T (radioanswer3)
+ /Rect [0 0 30 30]
+ /Subtype /Widget
+ /F 4
+ /FT /Btn
+ /V(#1)
+ /DV(#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerradiofour}[1]{ % radio answer four
+ \special{ps::
+ [
+ /T (radioanswer4)
+ /Rect [0 0 30 30]
+ /Subtype /Widget
+ /F 4
+ /FT /Btn
+ /V(#1)
+ /DV(#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerradiofive}[1]{% radio answer five
+ \special{ps::
+ [
+ /T (radioanswer5)
+ /Rect [0 0 30 30]
+ /Subtype /Widget
+ /F 4
+ /FT /Btn
+ /V(#1)
+ /DV(#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% PREVIOUS, INDEX, NEXT
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% two newcommands required (because of difficulty of changing ps "real time") for "Prev" button
+% prevsetup newcommand uses ps, allows question giver input argument, [1]
+% prev newcommand uses eps, allows prev button to be placed anywhere on question page
+
+\newcommand{\prevsetup}[1]{% sets up previous action, allows question giver input, argument [1]
+ \special{ps::
+ [/_objdef {prev_def} /type /dict /OBJ pdfmark % defines previous button
+ [ {prev_def} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\prev}{% executes previous action (with argument [1]), prev button placed anywhere
+ \epsfig{file=prev.eps,height=15bp}%
+ \relax\xspace % spaces button properly with respect to other buttons, text
+}
+
+\newcommand{\ndexsetup}[1]{%
+ \special{ps::
+ [/_objdef {ndex_def} /type /dict /OBJ pdfmark
+ [ {ndex_def} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\ndex}{
+ \epsfig{file=ndex.eps,height=15bp}%
+ \relax\xspace
+}
+
+\newcommand{\nextsetup}[1]{% sets up next action, allows question giver input, argument [1]
+ \special{ps::
+ [/_objdef {next_def} /type /dict /OBJ pdfmark % defines next button
+ [ {next_def} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\next}{% executes next action (with argument [1]), next button placed anywhere
+ \epsfig{file=next.eps,height=15bp}%
+ \relax\xspace%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% EXERQUES BUTTONS
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\exerquessetupone}[1]{% sets up exerques1 action
+ \special{ps::
+ [/_objdef {exerques_def1} /type /dict /OBJ pdfmark
+ [ {exerques_def1} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetuptwo}[1]{
+ \special{ps::
+ [/_objdef {exerques_def2} /type /dict /OBJ pdfmark
+ [ {exerques_def2} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupthree}[1]{
+ \special{ps::
+ [/_objdef {exerques_def3} /type /dict /OBJ pdfmark
+ [ {exerques_def3} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupfour}[1]{
+ \special{ps::
+ [/_objdef {exerques_def4} /type /dict /OBJ pdfmark
+ [ {exerques_def4} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+
+\newcommand{\exerquessetupfive}[1]{
+ \special{ps::
+ [/_objdef {exerques_def5} /type /dict /OBJ pdfmark
+ [ {exerques_def5} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupsix}[1]{
+ \special{ps::
+ [/_objdef {exerques_def6} /type /dict /OBJ pdfmark
+ [ {exerques_def6} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupseven}[1]{
+ \special{ps::
+ [/_objdef {exerques_def7} /type /dict /OBJ pdfmark
+ [ {exerques_def7} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupeight}[1]{
+ \special{ps::
+ [/_objdef {exerques_def8} /type /dict /OBJ pdfmark
+ [ {exerques_def8} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+
+\newcommand{\exerquessetupnine}[1]{
+ \special{ps::
+ [/_objdef {exerques_def9} /type /dict /OBJ pdfmark
+ [ {exerques_def9} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupten}[1]{
+ \special{ps::
+ [/_objdef {exerques_def10} /type /dict /OBJ pdfmark
+ [ {exerques_def10} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupeleven}[1]{
+ \special{ps::
+ [/_objdef {exerques_def11} /type /dict /OBJ pdfmark
+ [ {exerques_def11} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetuptwelve}[1]{
+ \special{ps::
+ [/_objdef {exerques_def12} /type /dict /OBJ pdfmark
+ [ {exerques_def12} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+
+\newcommand{\exerquessetupthirteen}[1]{
+ \special{ps::
+ [/_objdef {exerques_def13} /type /dict /OBJ pdfmark
+ [ {exerques_def13} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupfourteen}[1]{
+ \special{ps::
+ [/_objdef {exerques_def14} /type /dict /OBJ pdfmark
+ [ {exerques_def14} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupfifteen}[1]{
+ \special{ps::
+ [/_objdef {exerques_def15} /type /dict /OBJ pdfmark
+ [ {exerques_def15} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupsixteen}[1]{
+ \special{ps::
+ [/_objdef {exerques_def16} /type /dict /OBJ pdfmark
+ [ {exerques_def16} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+
+\newcommand{\exerquessetupseventeen}[1]{
+ \special{ps::
+ [/_objdef {exerques_def17} /type /dict /OBJ pdfmark
+ [ {exerques_def17} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupeighteen}[1]{
+ \special{ps::
+ [/_objdef {exerques_def18} /type /dict /OBJ pdfmark
+ [ {exerques_def18} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupnineteen}[1]{
+ \special{ps::
+ [/_objdef {exerques_def19} /type /dict /OBJ pdfmark
+ [ {exerques_def19} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetuptwenty}[1]{
+ \special{ps::
+ [/_objdef {exerques_def20} /type /dict /OBJ pdfmark
+ [ {exerques_def20} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+
+\newcommand{\exerquesone}{% executes exerques1 action, button placed anywhere
+ \epsfig{file=exerques1.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquestwo}{
+ \epsfig{file=exerques2.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquesthree}{
+ \epsfig{file=exerques3.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquesfour}{
+ \epsfig{file=exerques4.eps,height=15bp}%
+ \relax\xspace%
+}
+
+\newcommand{\exerquesfive}{
+ \epsfig{file=exerques5.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquessix}{
+ \epsfig{file=exerques6.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquesseven}{
+ \epsfig{file=exerques7.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerqueseight}{
+ \epsfig{file=exerques8.eps,height=15bp}%
+ \relax\xspace%
+}
+
+\newcommand{\exerquesnine}{
+ \epsfig{file=exerques9.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquesten}{
+ \epsfig{file=exerques10.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerqueseleven}{
+ \epsfig{file=exerques11.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquestwelve}{
+ \epsfig{file=exerques12.eps,height=15bp}%
+ \relax\xspace%
+}
+
+\newcommand{\exerquesthirteen}{
+ \epsfig{file=exerques13.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquesfourteen}{
+ \epsfig{file=exerques14.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquesfifteen}{
+ \epsfig{file=exerques15.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquessixteen}{
+ \epsfig{file=exerques16.eps,height=15bp}%
+ \relax\xspace%
+}
+
+\newcommand{\exerquesseventeen}{
+ \epsfig{file=exerques17.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerqueseighteen}{
+ \epsfig{file=exerques18.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquesnineteen}{
+ \epsfig{file=exerques19.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquestwenty}{
+ \epsfig{file=exerques20.eps,height=15bp}%
+ \relax\xspace%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% INDEX INTRODUCTION TO EXERCISE OF QUESTIONS
+% USED TO GROUP QUESTIONS TOGETHER INTO ONE EXERCISE
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\exerciseintroduction}[1]{\textcolor{black}{#1}} % index introduction is argument #1
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% SUBMIT (TEXT, POPUP, FIELD, RADIO) BUTTON
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\checksubmit}{% button, when pressed, goes to either correct or incorrect page
+ \epsfig{file=checksubmit.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\fieldsubmit}{
+ \epsfig{file=fieldsubmit.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\popupsubmit}{
+ \epsfig{file=popupsubmit.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\radiosubmit}{
+ \epsfig{file=radiosubmit.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\submit}[1]{ % pick type of submit button
+ \ifthenelse{\equal{#1}{check}}{\checksubmit}{}%
+ \ifthenelse{\equal{#1}{popup}}{\popupsubmit}{}%
+ \ifthenelse{\equal{#1}{field}}{\fieldsubmit}{}%
+ \ifthenelse{\equal{#1}{radio}}{\radiosubmit}{}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% CORRECT ANSWER (CHECK, FIELD, POPUP, RADIO) BUTTON
+% DISPLAYS CORRECT (QUESTION GIVER) ANSWERS
+% CORRECT (RIGHT) RESPONSE AND INCORRECT (WRONG) RESPONSE BUTTONS
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\rightcheckcorrect}{ % checks off correct (question giver) check boxes with answers
+ \epsfig{file=rightcheckcorrect.eps,height=15bp} % when on right (correct) response page
+ \relax\xspace%
+}
+\newcommand{\wrongcheckcorrect}{ % checks off correct (question giver) check boxes with answers
+ \epsfig{file=wrongcheckcorrect.eps,height=15bp} % when on wrong (correct) response page
+ \relax\xspace%
+}
+\newcommand{\rightfieldcorrect}{% fills in correct (question giver) text field answers
+ \epsfig{file=rightfieldcorrect.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\wrongfieldcorrect}{% fills in incorrect (question giver) text field answers
+ \epsfig{file=wrongfieldcorrect.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\rightpopupcorrect}{% chooses correct (question giver) popup menu answers
+ \epsfig{file=rightpopupcorrect.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\wrongpopupcorrect}{% chooses incorrect (question giver) popup menu answers
+ \epsfig{file=wrongpopupcorrect.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\rightradiocorrect}{% selects correct (question giver) radio button answer
+ \epsfig{file=rightradiocorrect.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\wrongradiocorrect}{% selects incorrect (question giver) radio button answer
+ \epsfig{file=wrongradiocorrect.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\correct}[2]{ % arg #1 type of button, arg #2 correct or incorrect response page
+% if check button, then either right (correct) response page or wrong (incorrect) response page
+ \ifthenelse{ \equal{#1}{check} }
+ { \ifthenelse{\equal{#2}{right}}{\rightcheckcorrect}{\wrongcheckcorrect} }
+ {} % if *not* check button, then must be another type of button
+ \ifthenelse{ \equal{#1}{popup} }
+ { \ifthenelse{\equal{#2}{right}}{\rightpopupcorrect}{\wrongpopupcorrect} }
+ {}
+ \ifthenelse{ \equal{#1}{field} }
+ { \ifthenelse{\equal{#2}{right}}{\rightfieldcorrect}{\wrongfieldcorrect} }
+ {}
+ \ifthenelse{ \equal{#1}{radio} }
+ { \ifthenelse{\equal{#2}{right}}{\rightradiocorrect}{\wrongradiocorrect} }
+ {}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% CLEAR (CHECK, FIELD, POPUP, RADIO) BUTTON
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\checkclear}{% clears all check box answers
+ \epsfig{file=checkclear.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\fieldclear}{% clears user text field answers
+ \epsfig{file=fieldclear.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\popupclear}{% clears user popup menu answers
+ \epsfig{file=popupclear.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\radioclear}{% clears user radio button answers
+ \epsfig{file=radioclear.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\clear}[1]{ % pick type of clear button
+ \ifthenelse{\equal{#1}{check}}{\checkclear}{}
+ \ifthenelse{\equal{#1}{popup}}{\popupclear}{}
+ \ifthenelse{\equal{#1}{field}}{\fieldclear}{}
+ \ifthenelse{\equal{#1}{radio}}{\radioclear}{}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% RETURN BUTTON
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\return}{% button, when pressed, goes to question (first, zeroth) pg of question
+ \epsfig{file=return.eps,height=15bp}%
+ \relax\xspace%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% SCREEN VIEW PREFERENCES
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\special{ps::
+ [{Catalog}
+ << /ViewerPreferences <<
+ /HideToolbar true
+ /FitWindow true % also, set general preference "fit in window" in Acrobat Reader
+ /CenterWindow true
+ /PageLayout /SinglePage
+ /HideWindowUI true
+ >>
+ >>
+ /PUT pdfmark
+}%
+
+% defines given URL as base URL for all relative Internet links in document
+
+\special{ps::
+ [{Catalog}
+ << /URL <<
+ /Base (http://faculty.purduenc.edu/jkuhn/distance-learning/ndex.pdf)
+ >>
+ >>
+ /PUT pdfmark
+}%
+
+% set crop box for 4in by 4in page
+% this is specific to PS->PDF conversion (?)
+
+\special{ps::
+ [ /CropBox [ 0 432 360 792 ] /PAGES pdfmark
+}%
+
+% latex commands
+
+% shrink the page size
+
+\setlength\paperheight{5in}
+\setlength\paperwidth{5in}
+
+% eliminate the offsets
+
+\setlength{\hoffset}{-1in}
+\setlength{\voffset}{-1in}
+
+% 1/2 inch margin on left and top
+
+\setlength{\oddsidemargin}{0.3in}
+\setlength{\topmargin}{0.5in}
+
+% header takes up 1/2 inch
+
+\setlength{\headheight}{0.3in}
+\setlength{\headsep}{0.2in}
+
+% 1/2 margin on the bottom and right
+
+\setlength{\textheight}{4in}
+\setlength{\textwidth}{4.4in}
+
+% no margin paragraphs
+
+\setlength{\marginparsep}{0in}
+\setlength{\marginparwidth}{0in}
+
+% footer takes up 1/2 inch
+
+\setlength{\footskip}{0in}
+
+% pages not numbered
+
+\pagestyle{empty}
+
+\endinput
diff --git a/macros/latex/contrib/interactiveworkbook/interactiveworkbook.sty/interactiveworkbook.sty b/macros/latex/contrib/interactiveworkbook/interactiveworkbook.sty/interactiveworkbook.sty
new file mode 100644
index 0000000000..b866190584
--- /dev/null
+++ b/macros/latex/contrib/interactiveworkbook/interactiveworkbook.sty/interactiveworkbook.sty
@@ -0,0 +1,980 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% INTERACTIVEWORKBOOK STYLE FILE: put this file in /tex/latex/graphics file
+% if using MiKTeX for Windows
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\ProvidesPackage{interactiveworkbook}[1999/06/04]
+
+\RequirePackage{epsfig} % allows text fields, to be placed anywhere on page
+\RequirePackage{color} % allows fonts to be colored
+\RequirePackage{xspace} % allows appropriate space after fieldone, say
+\RequirePackage{ifthen} % allows question taker to choose between clear, submit buttons
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% BUTTON APPEARANCE: PREVIOUS, INDEX, NEXT, EXERQUES, SUBMIT, CLEAR, RETURN,
+% SELECTED (UP) AND UNSELECTED (DOWN)
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\AtBeginDocument{\epsfig{file=buttonappearance.eps,height=1bp,width=1bp}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% THREE PAGE OUTPUT FOR EACH QUESTION (ONE *EXERCISE* OFTEN HAS MANY QUESTIONS):
+% QUESTION (FIRST) PAGE, CORRECT (SECOND) PAGE, INCORRECT (THIRD) PAGE
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\questionandresponses}[7]{ % seven arguments
+ \setcounter{page}{1} % specifies "page one" versions of check, popup, field and radio buttons
+ \textcolor{black}{#5} % put question, argument #5, on first page (of three) pages
+ \vfill
+ % locations of previous, index and next exercise files are [2], [3], [4], respectively
+ \prevsetup{#2} \ndexsetup{#3} \nextsetup{#4}
+ \begin{center} % Clear, argument #1, is either check, popup, field or radio
+ \clear{#1} \hfill \prev \ndex \next \hfill \submit{#1}
+ \end{center} % Previous, Index, Next, and Submit Buttons
+ % put correct response page on second page
+ \newpage
+ \setcounter{page}{2} % specifies "page two" versions of check, popup, field and radio buttons
+ \textcolor{black}{#5} % repeat question, argument #5, on correct response page
+ \par\smallskip %
+ % blue correct answer hint is argument #6
+ \textcolor{blue}{#6} % give hint related to correct answer
+ \par\vfill %
+ % \correct (answer), argument #1, is either check, popup, field or radio
+ % \correct, argument #2, is found on the correct (response) page
+ \begin{center}
+ \correct{#1}{right} \hfill \prev \ndex \next \hfill \return
+ \end{center} % Return from response to question page
+ % put incorrect response page on third page
+ \newpage
+ \setcounter{page}{3} % specifies "page three" versions of check, popup, field and radio buttons
+ \textcolor{black}{#5} % repeat question, argument #5, on incorrect response page
+ \par\smallskip %
+ % red incorrect answer hint is argument #7
+ \textcolor{red}{#7} % give hint related to correct answer
+ \par\vfill %
+ \begin{center} % \correct, argument #2, is found on the correct (response) page
+ \correct{#1}{wrong} \hfill \prev \ndex \next \hfill \return
+ \end{center} % Return from response to question page
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% QUESTION *TAKER* ANSWERS: CHECK, FIELD, POPUP, RADIO
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% five check boxes, for question taker,
+% first click puts in "X" (button is "on"), second click removes "X" (button is "off")
+
+\newcommand{\checkone}{% check box one, for either page one, two or three
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonecheckone.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwocheckone.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreecheckone.eps,height=10bp}}{}
+ \relax\xspace%
+}
+\newcommand{\checktwo}{% check box two
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonechecktwo.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwochecktwo.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreechecktwo.eps,height=10bp}}{}
+ \relax\xspace%
+}
+\newcommand{\checkthree}{% check box three
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonecheckthree.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwocheckthree.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreecheckthree.eps,height=10bp}}{}
+ \relax\xspace%
+}
+\newcommand{\checkfour}{% check box four
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonecheckfour.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwocheckfour.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreecheckfour.eps,height=10bp}}{}
+ \relax\xspace%
+}
+\newcommand{\checkfive}{% check box five
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonecheckfive.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwocheckfive.eps,height=10bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreecheckfive.eps,height=10bp}}{}
+ \relax\xspace%
+}
+
+% five text fields, for question taker
+
+\newcommand{\fieldone}{
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonefieldone.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwofieldone.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreefieldone.eps,height=15bp}}{}
+ \relax\xspace%
+}
+\newcommand{\fieldtwo}{% text field two
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonefieldtwo.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwofieldtwo.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreefieldtwo.eps,height=15bp}}{}
+ \relax\xspace%
+}
+\newcommand{\fieldthree}{% text field three
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonefieldthree.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwofieldthree.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreefieldthree.eps,height=15bp}}{}
+ \relax\xspace%
+}
+\newcommand{\fieldfour}{% text field four
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonefieldfour.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwofieldfour.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreefieldfour.eps,height=15bp}}{}
+ \relax\xspace%
+}
+\newcommand{\fieldfive}{% text field five
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonefieldfive.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwofieldfive.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreefieldfive.eps,height=15bp}}{}
+ \relax\xspace%
+}
+
+% five popup menus, for question taker,
+% nine possible choices, a,b,c,d,e,f,g,h and i, each popup
+
+\newcommand{\popupone}{ % popup menu one, for pages one, two and three
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonepopupone.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwopopupone.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreepopupone.eps,height=15bp}}{}
+ \relax\xspace%
+}
+\newcommand{\popuptwo}{% popup menu two
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonepopuptwo.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwopopuptwo.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreepopuptwo.eps,height=15bp}}{}
+ \relax\xspace%
+}
+\newcommand{\popupthree}{% popup menu three
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonepopupthree.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwopopupthree.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreepopupthree.eps,height=15bp}}{}
+ \relax\xspace%
+}
+\newcommand{\popupfour}{% popup menu four
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonepopupfour.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwopopupfour.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreepopupfour.eps,height=15bp}}{}
+ \relax\xspace%
+}
+\newcommand{\popupfive}{% popup menu five
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageonepopupfive.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetwopopupfive.eps,height=15bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreepopupfive.eps,height=15bp}}{}
+ \relax\xspace%
+}
+
+% five radio buttons, for question taker,
+% choose (only) one of five possible choices, a,b,c,d and e
+
+\newcommand{\radioone}{ % radio button one, 11by seems to be "right" height for radio button
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageoneradioone.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetworadioone.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreeradioone.eps,height=11bp}}{}
+ \relax\xspace%
+}
+\newcommand{\radiotwo}{% radio button two
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageoneradiotwo.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetworadiotwo.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreeradiotwo.eps,height=11bp}}{}
+ \relax\xspace%
+}
+\newcommand{\radiothree}{% radio button three
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageoneradiothree.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetworadiothree.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreeradiothree.eps,height=11bp}}{}
+ \relax\xspace%
+}
+\newcommand{\radiofour}{% radio button four
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageoneradiofour.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetworadiofour.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreeradiofour.eps,height=11bp}}{}
+ \relax\xspace%
+}
+\newcommand{\radiofive}{% radio button five
+ \ifthenelse{\equal{\value{page}}{1}}{\epsfig{file=pageoneradiofive.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{2}}{\epsfig{file=pagetworadiofive.eps,height=11bp}}{}
+ \ifthenelse{\equal{\value{page}}{3}}{\epsfig{file=pagethreeradiofive.eps,height=11bp}}{}
+ \relax\xspace%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% QUESTION *GIVER* ANSWERS, FOR CHECK, POPUP, FIELD, RADIO
+% DUMMY BUTTONS WHICH DO NOT APPEAR ON THE SCREEN
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% five check boxes, for question giver,
+% designates button "On" ("X") or "Off" (removes "X")
+
+\newcommand{\answercheckone}[1]{% check box answer one, argument [1] is "On" or "Off"
+ \special{ps::
+ [
+ /T (checkanswer1) % title is checkanswer1, used in checksubmit.eps
+ /Rect [0 0 30 30] % dummy check box print area, does not appear on screen
+ /Subtype /Widget % check box widget
+ /F 4 % printable, "X" or not "X"
+ /FT /Btn % type, check box
+ /V(#1) % argument #1 is value (when window first opened), which is "On" or "Off"
+ /DV(#1) % default value, if reset, is "On" or "Off", whatever argument #1 is
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerchecktwo}[1]{% check box answer two
+ \special{ps::
+ [
+ /T (checkanswer2)
+ /Rect [0 0 30 30]
+ /Subtype /Widget
+ /F 4
+ /FT /Btn
+ /DV(#1)
+ /V(#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answercheckthree}[1]{% check box answer three
+ \special{ps::
+ [
+ /T (checkanswer3)
+ /Rect [0 0 30 30]
+ /Subtype /Widget
+ /F 4
+ /FT /Btn
+ /DV(#1)
+ /V(#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answercheckfour}[1]{% check box answer four
+ \special{ps::
+ [
+ /T (checkanswer4)
+ /Rect [0 0 30 30]
+ /Subtype /Widget
+ /F 4
+ /FT /Btn
+ /DV(#1)
+ /V(#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answercheckfive}[1]{% check box answer five
+ \special{ps::
+ [
+ /T (checkanswer5)
+ /Rect [0 0 30 30]
+ /Subtype /Widget
+ /F 4
+ /FT /Btn
+ /DV(#1)
+ /V(#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+
+% five popup menu answers, for question giver,
+% correct answers typed in tex files, as argument of "answerpopup..."
+
+\newcommand{\answerpopupone}[1]{% argument [1] text answer
+ \special{ps::
+ [
+ /T (popupanswer1) % question giver text *title* used in various submit.eps
+ /Subtype /Widget
+ /FT /Ch % popup (choice, list) menu
+ /Ff 393216 % popup list
+ /Opt [ [(a)(a)] [(b)(b)] [(c)(c)] [(d)(d)] [(e)(e)] [(f)(f)] [(g)(g)] [(h)(h)] [(i)(i)] ]
+ /Rect [500 2290 560 2320] % dummy popup menu
+ /V (#1) % argument is question giver text
+ /DV (#1) % argument is question giver text
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerpopuptwo}[1]{
+ \special{ps::
+ [
+ /T (popupanswer2)
+ /Subtype /Widget
+ /FT /Ch
+ /Ff 393216
+ /Opt [ [(a)(a)] [(b)(b)] [(c)(c)] [(d)(d)] [(e)(e)] [(f)(f)] [(g)(g)] [(h)(h)] [(i)(i)] ]
+ /Rect [500 2290 560 2320]
+ /F 4
+ /V (#1)
+ /DV (#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerpopupthree}[1]{
+ \special{ps::
+ [
+ /T (popupanswer3)
+ /Subtype /Widget
+ /FT /Ch
+ /Ff 393216
+ /Opt [ [(a)(a)] [(b)(b)] [(c)(c)] [(d)(d)] [(e)(e)] [(f)(f)] [(g)(g)] [(h)(h)] [(i)(i)] ]
+ /Rect [500 2290 560 2320]
+ /F 4
+ /V (#1)
+ /DV (#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerpopupfour}[1]{
+ \special{ps::
+ [
+ /T (popupanswer4)
+ /Subtype /Widget
+ /FT /Ch
+ /Ff 393216
+ /Opt [ [(a)(a)] [(b)(b)] [(c)(c)] [(d)(d)] [(e)(e)] [(f)(f)] [(g)(g)] [(h)(h)] [(i)(i)] ]
+ /Rect [500 2290 560 2320]
+ /F 4
+ /V (#1)
+ /DV (#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerpopupfive}[1]{
+ \special{ps::
+ [
+ /T (popupanswer5)
+ /Subtype /Widget
+ /FT /Ch
+ /Ff 393216
+ /Opt [ [(a)(a)] [(b)(b)] [(c)(c)] [(d)(d)] [(e)(e)] [(f)(f)] [(g)(g)] [(h)(h)] [(i)(i)] ]
+ /Rect [500 2290 560 2320]
+ /F 4
+ /V (#1)
+ /DV (#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+
+% five answers, for user,
+% correct answers typed in tex files, as argument of answerone, say
+
+\newcommand{\answerfieldone}[1]{% argument [1] text answer
+ \special{ps::
+ [
+ /T (fieldanswer1) % question giver text *title* used in various submit.eps
+ /Subtype /Widget
+ /FT /Tx % dummy text, required in definition of widget
+ /Rect [450 2290 750 2320] % dummy text field size
+ /F 4
+ /V (#1) % argument is question giver text
+ /DV (#1) % argument is question giver text
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerfieldtwo}[1]{
+ \special{ps::
+ [
+ /T (fieldanswer2)
+ /Subtype /Widget
+ /FT /Tx
+ /Rect [450 2290 750 2320]
+ /F 4
+ /V (#1)
+ /DV (#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerfieldthree}[1]{
+ \special{ps::
+ [
+ /T (fieldanswer3)
+ /Subtype /Widget
+ /FT /Tx
+ /Rect [450 2290 750 2320]
+ /F 4
+ /V (#1)
+ /DV (#1) % argument is question giver text
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerfieldfour}[1]{
+ \special{ps::
+ [
+ /T (fieldanswer4)
+ /Subtype /Widget
+ /FT /Tx
+ /Rect [450 2290 750 2320]
+ /F 4
+ /V (#1)
+ /DV (#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerfieldfive}[1]{
+ \special{ps::
+ [
+ /T (fieldanswer5)
+ /Subtype /Widget
+ /FT /Tx
+ /Rect [450 2290 750 2320]
+ /F 4
+ /V (#1)
+ /DV (#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+
+% five radio button answers, for question giver,
+% only one of the five buttons may be "On", all others must be "Off"
+
+\newcommand{\answerradioone}[1]{ % radio button answer one, argument [1] is "On" or "Off"
+ \special{ps::
+ [
+ /T (radioanswer1) % title is radioanswer1, used in radiosubmit.eps
+ /Rect [0 0 30 30] % dummy radio button area
+ /Subtype /Widget % dummy radio button widget
+ /F 4 % printable, "On" or "Off"
+ /FT /Btn % type, radio button
+ /V(#1) % value (when window first opened) is "On" or "Off"
+ /DV(#1) % default value, if reset, is "On" or "Off", whatever argument #1 is
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerradiotwo}[1]{ % radio button answer two
+ \special{ps::
+ [
+ /T (radioanswer2)
+ /Rect [0 0 30 30]
+ /Subtype /Widget
+ /F 4
+ /FT /Btn
+ /V(#1)
+ /DV(#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerradiothree}[1]{ % radio button answer three
+ \special{ps::
+ [
+ /T (radioanswer3)
+ /Rect [0 0 30 30]
+ /Subtype /Widget
+ /F 4
+ /FT /Btn
+ /V(#1)
+ /DV(#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerradiofour}[1]{ % radio answer four
+ \special{ps::
+ [
+ /T (radioanswer4)
+ /Rect [0 0 30 30]
+ /Subtype /Widget
+ /F 4
+ /FT /Btn
+ /V(#1)
+ /DV(#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+\newcommand{\answerradiofive}[1]{% radio answer five
+ \special{ps::
+ [
+ /T (radioanswer5)
+ /Rect [0 0 30 30]
+ /Subtype /Widget
+ /F 4
+ /FT /Btn
+ /V(#1)
+ /DV(#1)
+ /ANN pdfmark
+ }%
+ \relax\xspace%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% PREVIOUS, INDEX, NEXT
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% two newcommands required (because of difficulty of changing ps "real time") for "Prev" button
+% prevsetup newcommand uses ps, allows question giver input argument, [1]
+% prev newcommand uses eps, allows prev button to be placed anywhere on question page
+
+\newcommand{\prevsetup}[1]{% sets up previous action, allows question giver input, argument [1]
+ \special{ps::
+ [/_objdef {prev_def} /type /dict /OBJ pdfmark % defines previous button
+ [ {prev_def} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\prev}{% executes previous action (with argument [1]), prev button placed anywhere
+ \epsfig{file=prev.eps,height=15bp}%
+ \relax\xspace % spaces button properly with respect to other buttons, text
+}
+
+\newcommand{\ndexsetup}[1]{%
+ \special{ps::
+ [/_objdef {ndex_def} /type /dict /OBJ pdfmark
+ [ {ndex_def} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\ndex}{
+ \epsfig{file=ndex.eps,height=15bp}%
+ \relax\xspace
+}
+
+\newcommand{\nextsetup}[1]{% sets up next action, allows question giver input, argument [1]
+ \special{ps::
+ [/_objdef {next_def} /type /dict /OBJ pdfmark % defines next button
+ [ {next_def} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\next}{% executes next action (with argument [1]), next button placed anywhere
+ \epsfig{file=next.eps,height=15bp}%
+ \relax\xspace%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% EXERQUES BUTTONS
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\exerquessetupone}[1]{% sets up exerques1 action
+ \special{ps::
+ [/_objdef {exerques_def1} /type /dict /OBJ pdfmark
+ [ {exerques_def1} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetuptwo}[1]{
+ \special{ps::
+ [/_objdef {exerques_def2} /type /dict /OBJ pdfmark
+ [ {exerques_def2} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupthree}[1]{
+ \special{ps::
+ [/_objdef {exerques_def3} /type /dict /OBJ pdfmark
+ [ {exerques_def3} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupfour}[1]{
+ \special{ps::
+ [/_objdef {exerques_def4} /type /dict /OBJ pdfmark
+ [ {exerques_def4} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+
+\newcommand{\exerquessetupfive}[1]{
+ \special{ps::
+ [/_objdef {exerques_def5} /type /dict /OBJ pdfmark
+ [ {exerques_def5} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupsix}[1]{
+ \special{ps::
+ [/_objdef {exerques_def6} /type /dict /OBJ pdfmark
+ [ {exerques_def6} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupseven}[1]{
+ \special{ps::
+ [/_objdef {exerques_def7} /type /dict /OBJ pdfmark
+ [ {exerques_def7} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupeight}[1]{
+ \special{ps::
+ [/_objdef {exerques_def8} /type /dict /OBJ pdfmark
+ [ {exerques_def8} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+
+\newcommand{\exerquessetupnine}[1]{
+ \special{ps::
+ [/_objdef {exerques_def9} /type /dict /OBJ pdfmark
+ [ {exerques_def9} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupten}[1]{
+ \special{ps::
+ [/_objdef {exerques_def10} /type /dict /OBJ pdfmark
+ [ {exerques_def10} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupeleven}[1]{
+ \special{ps::
+ [/_objdef {exerques_def11} /type /dict /OBJ pdfmark
+ [ {exerques_def11} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetuptwelve}[1]{
+ \special{ps::
+ [/_objdef {exerques_def12} /type /dict /OBJ pdfmark
+ [ {exerques_def12} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+
+\newcommand{\exerquessetupthirteen}[1]{
+ \special{ps::
+ [/_objdef {exerques_def13} /type /dict /OBJ pdfmark
+ [ {exerques_def13} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupfourteen}[1]{
+ \special{ps::
+ [/_objdef {exerques_def14} /type /dict /OBJ pdfmark
+ [ {exerques_def14} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupfifteen}[1]{
+ \special{ps::
+ [/_objdef {exerques_def15} /type /dict /OBJ pdfmark
+ [ {exerques_def15} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupsixteen}[1]{
+ \special{ps::
+ [/_objdef {exerques_def16} /type /dict /OBJ pdfmark
+ [ {exerques_def16} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+
+\newcommand{\exerquessetupseventeen}[1]{
+ \special{ps::
+ [/_objdef {exerques_def17} /type /dict /OBJ pdfmark
+ [ {exerques_def17} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupeighteen}[1]{
+ \special{ps::
+ [/_objdef {exerques_def18} /type /dict /OBJ pdfmark
+ [ {exerques_def18} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetupnineteen}[1]{
+ \special{ps::
+ [/_objdef {exerques_def19} /type /dict /OBJ pdfmark
+ [ {exerques_def19} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+\newcommand{\exerquessetuptwenty}[1]{
+ \special{ps::
+ [/_objdef {exerques_def20} /type /dict /OBJ pdfmark
+ [ {exerques_def20} << /Type /Action /S /Launch /F (#1) /NewWindow false >> /PUT pdfmark
+ }%
+}
+
+\newcommand{\exerquesone}{% executes exerques1 action, button placed anywhere
+ \epsfig{file=exerques1.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquestwo}{
+ \epsfig{file=exerques2.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquesthree}{
+ \epsfig{file=exerques3.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquesfour}{
+ \epsfig{file=exerques4.eps,height=15bp}%
+ \relax\xspace%
+}
+
+\newcommand{\exerquesfive}{
+ \epsfig{file=exerques5.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquessix}{
+ \epsfig{file=exerques6.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquesseven}{
+ \epsfig{file=exerques7.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerqueseight}{
+ \epsfig{file=exerques8.eps,height=15bp}%
+ \relax\xspace%
+}
+
+\newcommand{\exerquesnine}{
+ \epsfig{file=exerques9.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquesten}{
+ \epsfig{file=exerques10.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerqueseleven}{
+ \epsfig{file=exerques11.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquestwelve}{
+ \epsfig{file=exerques12.eps,height=15bp}%
+ \relax\xspace%
+}
+
+\newcommand{\exerquesthirteen}{
+ \epsfig{file=exerques13.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquesfourteen}{
+ \epsfig{file=exerques14.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquesfifteen}{
+ \epsfig{file=exerques15.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquessixteen}{
+ \epsfig{file=exerques16.eps,height=15bp}%
+ \relax\xspace%
+}
+
+\newcommand{\exerquesseventeen}{
+ \epsfig{file=exerques17.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerqueseighteen}{
+ \epsfig{file=exerques18.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquesnineteen}{
+ \epsfig{file=exerques19.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\exerquestwenty}{
+ \epsfig{file=exerques20.eps,height=15bp}%
+ \relax\xspace%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% INDEX INTRODUCTION TO EXERCISE OF QUESTIONS
+% USED TO GROUP QUESTIONS TOGETHER INTO ONE EXERCISE
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\exerciseintroduction}[1]{\textcolor{black}{#1}} % index introduction is argument #1
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% SUBMIT (TEXT, POPUP, FIELD, RADIO) BUTTON
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\checksubmit}{% button, when pressed, goes to either correct or incorrect page
+ \epsfig{file=checksubmit.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\fieldsubmit}{
+ \epsfig{file=fieldsubmit.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\popupsubmit}{
+ \epsfig{file=popupsubmit.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\radiosubmit}{
+ \epsfig{file=radiosubmit.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\submit}[1]{ % pick type of submit button
+ \ifthenelse{\equal{#1}{check}}{\checksubmit}{}%
+ \ifthenelse{\equal{#1}{popup}}{\popupsubmit}{}%
+ \ifthenelse{\equal{#1}{field}}{\fieldsubmit}{}%
+ \ifthenelse{\equal{#1}{radio}}{\radiosubmit}{}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% CORRECT ANSWER (CHECK, FIELD, POPUP, RADIO) BUTTON
+% DISPLAYS CORRECT (QUESTION GIVER) ANSWERS
+% CORRECT (RIGHT) RESPONSE AND INCORRECT (WRONG) RESPONSE BUTTONS
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\rightcheckcorrect}{ % checks off correct (question giver) check boxes with answers
+ \epsfig{file=rightcheckcorrect.eps,height=15bp} % when on right (correct) response page
+ \relax\xspace%
+}
+\newcommand{\wrongcheckcorrect}{ % checks off correct (question giver) check boxes with answers
+ \epsfig{file=wrongcheckcorrect.eps,height=15bp} % when on wrong (correct) response page
+ \relax\xspace%
+}
+\newcommand{\rightfieldcorrect}{% fills in correct (question giver) text field answers
+ \epsfig{file=rightfieldcorrect.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\wrongfieldcorrect}{% fills in incorrect (question giver) text field answers
+ \epsfig{file=wrongfieldcorrect.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\rightpopupcorrect}{% chooses correct (question giver) popup menu answers
+ \epsfig{file=rightpopupcorrect.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\wrongpopupcorrect}{% chooses incorrect (question giver) popup menu answers
+ \epsfig{file=wrongpopupcorrect.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\rightradiocorrect}{% selects correct (question giver) radio button answer
+ \epsfig{file=rightradiocorrect.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\wrongradiocorrect}{% selects incorrect (question giver) radio button answer
+ \epsfig{file=wrongradiocorrect.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\correct}[2]{ % arg #1 type of button, arg #2 correct or incorrect response page
+% if check button, then either right (correct) response page or wrong (incorrect) response page
+ \ifthenelse{ \equal{#1}{check} }
+ { \ifthenelse{\equal{#2}{right}}{\rightcheckcorrect}{\wrongcheckcorrect} }
+ {} % if *not* check button, then must be another type of button
+ \ifthenelse{ \equal{#1}{popup} }
+ { \ifthenelse{\equal{#2}{right}}{\rightpopupcorrect}{\wrongpopupcorrect} }
+ {}
+ \ifthenelse{ \equal{#1}{field} }
+ { \ifthenelse{\equal{#2}{right}}{\rightfieldcorrect}{\wrongfieldcorrect} }
+ {}
+ \ifthenelse{ \equal{#1}{radio} }
+ { \ifthenelse{\equal{#2}{right}}{\rightradiocorrect}{\wrongradiocorrect} }
+ {}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% CLEAR (CHECK, FIELD, POPUP, RADIO) BUTTON
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\checkclear}{% clears all check box answers
+ \epsfig{file=checkclear.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\fieldclear}{% clears user text field answers
+ \epsfig{file=fieldclear.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\popupclear}{% clears user popup menu answers
+ \epsfig{file=popupclear.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\radioclear}{% clears user radio button answers
+ \epsfig{file=radioclear.eps,height=15bp}%
+ \relax\xspace%
+}
+\newcommand{\clear}[1]{ % pick type of clear button
+ \ifthenelse{\equal{#1}{check}}{\checkclear}{}
+ \ifthenelse{\equal{#1}{popup}}{\popupclear}{}
+ \ifthenelse{\equal{#1}{field}}{\fieldclear}{}
+ \ifthenelse{\equal{#1}{radio}}{\radioclear}{}
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% RETURN BUTTON
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand{\return}{% button, when pressed, goes to question (first, zeroth) pg of question
+ \epsfig{file=return.eps,height=15bp}%
+ \relax\xspace%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% SCREEN VIEW PREFERENCES
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\special{ps::
+ [{Catalog}
+ << /ViewerPreferences <<
+ /HideToolbar true
+ /FitWindow true % also, set general preference "fit in window" in Acrobat Reader
+ /CenterWindow true
+ /PageLayout /SinglePage
+ /HideWindowUI true
+ >>
+ >>
+ /PUT pdfmark
+}%
+
+% set crop box for 4in by 4in page
+% this is specific to PS->PDF conversion (?)
+
+\special{ps::
+ [ /CropBox [ 0 432 360 792 ] /PAGES pdfmark
+}%
+
+% latex commands
+
+% shrink the page size
+
+\setlength\paperheight{5in}
+\setlength\paperwidth{5in}
+
+% eliminate the offsets
+
+\setlength{\hoffset}{-1in}
+\setlength{\voffset}{-1in}
+
+% 1/2 inch margin on left and top
+
+\setlength{\oddsidemargin}{0.3in}
+\setlength{\topmargin}{0.5in}
+
+% header takes up 1/2 inch
+
+\setlength{\headheight}{0.3in}
+\setlength{\headsep}{0.2in}
+
+% 1/2 margin on the bottom and right
+
+\setlength{\textheight}{4in}
+\setlength{\textwidth}{4.4in}
+
+% no margin paragraphs
+
+\setlength{\marginparsep}{0in}
+\setlength{\marginparwidth}{0in}
+
+% footer takes up 1/2 inch
+
+\setlength{\footskip}{0in}
+
+% pages not numbered
+
+\pagestyle{empty}
+
+\endinput