Annotation of capa/capa51/Manual/s-general.tex, revision 1.1

1.1     ! albertel    1: % \capa\ grammar and functions
        !             2: \hrule 
        !             3: % \vskip 0.2in
        !             4: \section{Specification of \capa{} Problem Sets}
        !             5: % {{\noindent \bf \it \LARGE Section 5: Specification of \capa\ Problem Sets}}
        !             6: % \vskip 0.2in
        !             7: \noindent This Section describes the \capa\ grammar and syntax. Examples show
        !             8: how to code problems and create problem sets.
        !             9: \vskip 0.2in
        !            10: \hrule
        !            11: 
        !            12: %\begin{enumerate}
        !            13: %\item 
        !            14: \subsection{\bf General Description.}
        !            15: The source code for the problems to be solved by  students are
        !            16: contained 
        !            17: in files labeled {\bf set{\em x}.qz} where {\bf {\em x}} is the problem set
        !            18: number.  These files contain all the information 
        !            19: needed for each problem as well as the information for the printed hard copy,
        !            20: the computer-screen presentations, and the web
        !            21: display of the problem set.  
        !            22: In the simplest case, one might imagine that the file contains just the text to
        !            23: specify the problems for the students.  
        !            24: However, each paper is individualized and must contain variable information such
        !            25: as the student's name, the due-date of the set, etc. 
        !            26: 
        !            27:  \capa\ uses the {\tt /DIS()} command to display functions, variables, or
        !            28:  anything that has been evaluated and must be  
        !            29:  inserted in the text when the output is generated.  \capa\ uses other special
        !            30:  commands at the beginning of a line.  For 
        !            31:  example: {\tt /LET} defines a variable.  {\tt /IMP} imports a file into the
        !            32:  {\tt .qz} file.  {\tt /HIN} defines a hint which is 
        !            33:  available for viewing by the student after the student has entered an incorrect
        !            34:  answer.  {\tt /ANS()} defines the answer to 
        !            35:  the problem. Note the UPPER CASE used for the commands. The {\tt //} is used
        !            36:  for lines that are comments and will not be evaluated 
        !            37:  or inserted into the text or displayed to the students.  The grammar for
        !            38:  writing problem sets with some examples is given in the following section.
        !            39: %
        !            40: %\item 
        !            41: \subsection{\bf \LaTeX\ and ASCII in \capa\ problems.}
        !            42: %
        !            43:  A complete but plain problem set can be written using only ASCII
        !            44: characters.  In this case the printed version and 
        !            45: the version displayed on the {\tt VT100} terminal will be \underline{exactly}
        !            46: the same.  However, we have found that high 
        !            47: quality printed problem sets can be readily produced by the \capa\ system with
        !            48: \LaTeX . Thus, an important and sometimes 
        !            49: confusing aspect of the set{\em x}.qz files is  the \LaTeX\ commands to control
        !            50: the presentation of the problem. 
        !            51: Greek characters, postscript figures, subscripts and superscripts must be
        !            52: imbedded in the problem set text 
        !            53: but cannot be displayed on the {\tt VT100} terminal window during interactive
        !            54: logins.  Using the {\bf tex()} function it is
        !            55:  possible to specify a \LaTeX\ 
        !            56: version and an ASCII version of a particular string of characters.  For example,
        !            57: {\bf $\Delta$H} could appear on paper whereas 
        !            58: only {\tt delta-H} can be shown on the screen (using ASCII characters).  The
        !            59: general form of the function to be evaluated  
        !            60:  is {\small tex("TeX","ASCii")}. For example:
        !            61: \begingroup\small\begin{verbatim}/DIS(tex("$\Delta$H","delta-H"))\end{verbatim}
        !            62: \endgroup
        !            63: would be used in the set{\em x}.qz file to display $\Delta$H on the printed
        !            64: paper.  The first argument is put into the \TeX\ 
        !            65: version and the second into the ASCII version.  Note that the {\tt /DIS()}
        !            66: command, mentioned above is used to evaluate an 
        !            67: expression amid text.
        !            68: %
        !            69: %\item 
        !            70: \subsection{\bf html in \capa\ problems.}
        !            71: %
        !            72: \noindent There are two functions available for specifically entering html code
        !            73: into your problem sets to improve the Web display of the problem set over that of ASCII text.  If you do not specify
        !            74: html code, then the ASCII code will be displayed on the web document.  The first
        !            75: html specific function is the {\tt web()}
        !            76: function which has similar usage to the {\tt tex()}function.  The {\tt web()}
        !            77: function has three fields for entry.  They are:\\
        !            78: {\tt web("ASCII","\TeX\ ","html")}.  The second function, {\tt html()}, can
        !            79: include anchors, links, or text
        !            80: to be displayed only on the web document.  An example of the use of
        !            81: this function is:\\
        !            82: /DIS({\tt html("<br><img src=/teacher/nsc111f7/pictures/Ball.gif>")})
        !            83: %
        !            84: \subsection{{\tt capa.config} File}
        !            85: A file called \index{capa.config}{\tt capa.config} located in the class directory contains 
        !            86: general configuration informations of the \capa\ system. 
        !            87: It is divided into sections 
        !            88: containing configurable parameters that 
        !            89: instructors can customize the \capa\ system. 
        !            90: The first section contains informations related to 
        !            91: the organization of a class, such as \index{exam\_path}exam\_path, 
        !            92: \index{quiz\_path}quiz\_path, \index{supp\_path}supp\_path, 
        !            93: and \index{others\_path}others\_path.
        !            94: 
        !            95: \begin{capacode}
        !            96: exam_path   = /usr/users/teacher/CAPA45/xph183f7
        !            97: quiz_path   = /usr/users/teacher/CAPA45/qph183f7
        !            98: supp_path   = /usr/users/teacher/CAPA45/rph183f7
        !            99: others_path = /usr/users/teacher/CAPA45/fci183f7
        !           100: \end{capacode}
        !           101: 
        !           102: These four class path parameters are the full path information 
        !           103: that lead to the classes where the exam scores, 
        !           104: quizz scores, supplementary exercises scores, and others scores are located.
        !           105: Together with the homework class where this capa.config file is located, 
        !           106: the score statistics can then be combined from all these
        !           107: different directories and form a single result. 
        !           108: 
        !           109: The second section specifies the full path to commands 
        !           110: that are used by the \capa\ system,
        !           111: such as `latex', `dvips', `mail', `allcapaid', and `qzparse'.
        !           112: 
        !           113: \begin{capacode}
        !           114: latex_command   =  "latex"
        !           115: dvips_command   =  "dvips"
        !           116: mail_command     =  "/usr/bin/mailx"
        !           117: allcapaid_command  =  "/usr/users/capadvt/CAPA_SRC/5.0/Teachertools/allcapaid"
        !           118: qzparse_command =  "/nfs/capa1/capadvt/CAPA_SRC/5.0/pProj/Linux/qzparse"
        !           119: \end{capacode}
        !           120: 
        !           121: The next section has the options and identifies the printers to use when 
        !           122: the system prints a postscript file. 
        !           123: Each line of \index{printer\_option} printer\_option specifies a printer name  
        !           124: selected for \texttt{capautilscapautils} to print problem set(s) for 
        !           125: a student.
        !           126: 
        !           127: The command used to print when a user selects one sided or 
        !           128: two sided printing is given by the two command options:
        !           129: \index{lprOneSided\_command}lprOneSided\_command, and 
        !           130: \index{lprTwoSided\_command}lprTwoSided\_command.
        !           131: 
        !           132: \begin{capacode}
        !           133: printer_option  = "cyccap_capa1"
        !           134: printer_option  = "cyccap_capa2"
        !           135: printer_option  = "west_post"
        !           136: printer_option  = "west_post2"
        !           137: 
        !           138: lprOneSided_command  =  "/usr/bin/lpr -P$Printer_selected"
        !           139: lprTwoSided_command  =  "/usr/bin/lpspr -K2 $PS_file | /usr/bin/lpr -P$Printer_selected"
        !           140: \end{capacode}
        !           141: 
        !           142: The fourth section specifies options for capalogin, 
        !           143: such as the time the goodbye message stayed on the screen 
        !           144: after student exits capalogin, which is 
        !           145: given in seconds in parameter \index{capalogin\_goodbye\_delay}
        !           146: capalogin\_goodbye\_delay.
        !           147: The time interval when capalogin consider the student is 
        !           148: in-active from the \index{capalogin\_inactivity\_delay}capalogin\_inactivity\_delay.
        !           149: 
        !           150: \index{capalogin\_show\_summary\_score}capalogin\_show\_summary\_score.
        !           151: \begin{capacode}
        !           152: capalogin_goodbye_delay  = 6     
        !           153: # specify the capalogin inactivity delay time in minutes
        !           154: # default value is 60 minutes, 0 means never time out
        !           155: capalogin_inactivity_delay  = 35
        !           156: # if set to none, don't show the summary score, any other value
        !           157: # or not defined show the score
        !           158: capalogin_show_summary_score = none
        !           159: \end{capacode}
        !           160: 
        !           161: Another section is related to an option in X-windows Quizzer. 
        !           162: By pressing the ``Std. Header'' button the following is written
        !           163: in the set$x$.qz file. 
        !           164: 
        !           165: \begin{capacode}
        !           166: BeginStandardQuizzerHeader 
        !           167: //CAPA system software is copyrighted by Michigan State University.
        !           168: //By using these materials, the User agrees to:
        !           169: //1) Protect the source code files  from unauthorized copying.
        !           170: //2) Limit  access  of the source material to teaching staff.
        !           171: //3) The User is free to mix, cut and paste, modify, adapt, delete,
        !           172: //   improve, etc. the problems and graphics for his/her own use.
        !           173: //
        !           174: /IMP "/demolibrary/Tools/StdMacros"
        !           175: /IMP "/demolibrary/Tools/StdUnits"
        !           176: /IMP "/demolibrary/Tools/StdConst"
        !           177: /IMP "HWTop"
        !           178: EndStandardQuizzerHeader
        !           179: \end{capacode}
        !           180: 
        !           181: Everything that appears between the keywords
        !           182: BeginStandardQuizzerHeader
        !           183: EnStandardQuizzerHeader
        !           184: is entered into the current .qz file when this button is pressed.
        !           185: 
        !           186: \subsection{{\tt capautils.config} File}
        !           187: 
        !           188: This first section contains informati0ns used by capautils. The file is self-explanatory bu the comments below can also help.
        !           189:  
        !           190: \index{homework\_scores\_limit\_set} homework\_scores\_limit\_set,
        !           191: \index{exam\_scores\_limit\_set}exam\_scores\_limit\_set,
        !           192: \index{quiz\_scores\_limit\_set}quiz\_scores\_limit\_set,
        !           193: \index{supp\_scores\_limit\_set}supp\_scores\_limit\_set, and
        !           194: \index{others\_scores\_limit\_set}others\_scores\_limit\_set.
        !           195: These parameters specify the maximal number of problem sets 
        !           196: that are used to calculated the scores from homework, exam, quizz, supplemental and 
        !           197: others directories.
        !           198: 
        !           199: The  file name to store all scores of students in the classl file 
        !           200: and is used to send out email is specified in parameter
        !           201: \index{master\_scores\_file}master\_scores\_file.
        !           202: The parameter \index{email\_template\_file}email\_template\_file
        !           203: specifies the template file for email.
        !           204: 
        !           205: \begin{capacode}
        !           206: homework_scores_limit_set = 12
        !           207: exam_scores_limit_set     = 7
        !           208: quiz_scores_limit_set     = 16
        !           209: supp_scores_limit_set     = 14
        !           210: others_scores_limit_set   = 0
        !           211: master_scores_file = "/usr/users/teacher/CAPA45/phy183f7/scores/scores.all"
        !           212: # The template file for e-mail
        !           213: email_template_file = "/usr/users/teacher/CAPA45/phy183f7/scores/email.template"
        !           214: \end{capacode}
        !           215: 
        !           216: The second section contains definitions used by capautils. 
        !           217: It first declare a series of variable names to be used 
        !           218: to store the scores and maximum scores for homework, quizz, and
        !           219: exam. 
        !           220: 
        !           221: 
        !           222: \begin{capacode}
        !           223: # pre-defined variable names that can be used in email.template
        !           224: #
        !           225: # Declare a variable name with ':=' 
        !           226: #  when assigning a value to a variable, use '='
        !           227: # This variable is used to store the total scores 
        !           228: #    calculated from all setX.db's in the regular class
        !           229: # It is later refered in the file 'email.template' as $HWtotal_scp
        !           230: var_homework_total_score   := HWtotal_scp
        !           231: # This variable is used to represent the total possible scores 
        !           232: #    that a student could receive from all setX.db's in the regular class
        !           233: # It is later refered in the file 'email.template' as $HWtotal_max_scp
        !           234: var_homework_total_max     := HWtotal_max_scp
        !           235: # This variable is used to represent the total scores 
        !           236: #    calculated from all setX.db's in the class specified
        !           237: #    by 'quiz_path' parameter in this file
        !           238: # It is later refered in the file 'email.template' as $QZtotal_scp
        !           239: var_quiz_total_score     := QZtotal_scp
        !           240: # This variable is used to represent the total scores 
        !           241: #    calculated from all setX.db's in the class specified
        !           242: #    by 'quiz_path' parameter in this file
        !           243: # It is later refered in the file 'email.template' as $QZtotal_max_scp
        !           244: var_quiz_total_max        := QZtotal_max_scp
        !           245: # This variable is used to represent the total number of 
        !           246: #    setX.db's in the class specified by 'quiz_path' parameter in this file
        !           247: # It is later refered in the file 'email.template' as $QZcount_scp
        !           248: var_quiz_count            := QZcount_scp
        !           249: # This variable is used to represent the total number of '-'
        !           250: #    a student got in the term summary report. It represents that
        !           251: #    the number of times the student is abscent from all the setX.db's 
        !           252: #    in the class specified by 'quiz_path' parameter in this file
        !           253: # It is not yet used in the file 'email.template,' but 
        !           254: #    can be refered as $QZabsent_scp
        !           255: var_quiz_absent           := QZabsent_scp
        !           256: # This variable will return a one line string in the form 
        !           257: #   xxx/xxx xxx/xxx xxx/xxx xxx/xxx xxx/xxx xxx/xxx
        !           258: #  It gives the statistics for each set in the class specified by
        !           259: #  'quiz_path' parameter in this file
        !           260: # It is later refered in the file 'email.template' as $QZsummary
        !           261: var_quiz_summary_string   := QZsummary
        !           262: \end{capacode}
        !           263: 
        !           264: 
        !           265: 
        !           266: 
        !           267: \begin{capacode}
        !           268: #
        !           269: # Declares a class of variables with the same prefix
        !           270: #  This declaration allows the access of individual set scores 
        !           271: #  in the class specified by 'exam_path' parameter in this file
        !           272: #  
        !           273: prefix_exam_raw_scores     := exam_raw
        !           274: # Thus, exam_raw1, exam_raw2, exam_raw3, exam_raw4 ... 
        !           275: #  represent the individual set score
        !           276: # These variables are used in the later definition of midterm1, midterm2, ...
        !           277: # 
        !           278: prefix_exam_raw_max        := exam_raw_max
        !           279: # similar to the above, now the maximum scores for exam 1 is stored 
        !           280: #  in variable exam_raw_max1
        !           281: # These variables are used in the later definition of midterm1, midterm2, ...
        !           282: 
        !           283: # This parameter is used in calculation of corrected credits by 
        !           284: #  successive corrections of their midterm exams
        !           285: correction_factor = 0.3
        !           286: # Correction formula for midterm exams
        !           287: #   here midterm1, midterm2, midterm3, and final_exam 
        !           288: #   are new variables whose definition depends on
        !           289: #   the raw scores of each set in the class specified by 'exam_path'
        !           290: \end{capacode}
        !           291: 
        !           292: The eighth section defines how the values of variable
        !           293: midterm1, midterm2, midterm3 are calculated from
        !           294: exam\_raw1, exam\_raw2 and exam\_raw3 and correction\_factor. 
        !           295: These are all in perl code format. The first definition describes how the
        !           296: value of midterm1 is calculated from exam\_raw1, exam\_raw2, and 
        !           297: correction\_factor. 
        !           298: The next definition is for midterm2 and the third definition is for midterm3. 
        !           299: 
        !           300: 
        !           301: \begin{capacode}
        !           302: ### The reason that we define midterm1, midterm2, midterm3 and final_exam here
        !           303: ###  is that score report file need these definitions.
        !           304: midterm1   ::
        !           305: 
        !           306: BEGIN_perl
        !           307: 
        !           308:   local($tmp);
        !           309:   if($exam_raw2 >= $exam_raw1) {
        !           310:     $tmp = $exam_raw1 + $correction_factor*($exam_raw2-$exam_raw1);
        !           311:   } else {
        !           312:     $tmp = $exam_raw1;
        !           313:   }
        !           314:   return ($tmp);
        !           315: 
        !           316: END_perl
        !           317: 
        !           318: 
        !           319: midterm2   ::
        !           320: 
        !           321: BEGIN_perl
        !           322: 
        !           323:   local($tmp);
        !           324:   if($exam_raw4 >= $exam_raw3) {
        !           325:     $tmp = $exam_raw3 + $correction_factor*($exam_raw4-$exam_raw3);
        !           326:   } else {
        !           327:     $tmp = $exam_raw3;
        !           328:   }
        !           329:   return ($tmp);
        !           330: 
        !           331: END_perl
        !           332: 
        !           333: 
        !           334: midterm3   ::
        !           335: BEGIN_perl
        !           336: 
        !           337:   local($tmp);
        !           338:   if($exam_raw6 >= $exam_raw5) {
        !           339:     $tmp = $exam_raw5 + $correction_factor*($exam_raw6-$exam_raw5);
        !           340:   } else {
        !           341:     $tmp = $exam_raw5;
        !           342:   }
        !           343:   return ($tmp);
        !           344: 
        !           345: END_perl
        !           346: 
        !           347: \end{capacode}
        !           348: 
        !           349: 
        !           350: The last section is related to \index{units}units specifications. 
        !           351: This section is further divided into three subsections. The first is 
        !           352: the definition of base units. 
        !           353: It begins with the special marker ``\verb"<< Base Unit >>".''
        !           354: Each line contains a definition of a base units, it begins with 
        !           355: a full name, a symbol represents that base units, and a comment begins with a `\verb"#"'
        !           356: character. These three fields are separacted by white spaces and 
        !           357: all three fields are required. 
        !           358: The number of characters in a full name description 
        !           359: should not exceed 47 characters and there should not contain any 
        !           360: space or tab characters in the full name description. 
        !           361: The number of characters denoting a symbol is limited to 15 characters. 
        !           362: There could be at most 32 base units defined in this subsection.
        !           363: 
        !           364: \begin{capacode}
        !           365: << Base Unit >>
        !           366: meter           m      # length
        !           367: kilogram        kg     # mass
        !           368: second          s      # time
        !           369: ampere          A      # electric current
        !           370: kelvin          K      # thermodynamic temperature
        !           371: mole            mol    # amount of substance
        !           372: candela         cd     # luminous intensity
        !           373: \end{capacode}
        !           374: The next subsection of units is the definition of prefix symbols. 
        !           375: It is consists of three fields on each line, separated by 
        !           376: white spaces or tab characters. 
        !           377: The length of the full name is not limited to any number of characters, 
        !           378: however, it cannot contain any while space or tab character. 
        !           379: The symbol character contains only one character. 
        !           380: The actual power the character represents is 
        !           381: shown in the third field.
        !           382: There could be as many as 52 definitions of the prefix symbol, 
        !           383: one for each alphabet from a to z and A to Z. 
        !           384: \begin{capacode}
        !           385: << Prefix >>
        !           386: yotta            Y         10^{24}
        !           387: zetta            Z         10^{21}
        !           388: exa              E         10^{18}
        !           389: peta             P         10^{15}
        !           390: tera             T         10^{12}
        !           391: giga             G         10^9
        !           392: mega             M         10^6
        !           393: kilo             k         10^3
        !           394: hecto            h         10^2
        !           395: deci             d         10^-1
        !           396: centi            c         10^-2
        !           397: milli            m         10^-3
        !           398: micro            u         10^-6
        !           399: nano             n         10^-9
        !           400: pico             p         10^{-12}
        !           401: femto            f         10^{-15}
        !           402: atto             a         10^{-18}
        !           403: zepto            z         10^{-21}
        !           404: yocto            y         10^{-24}
        !           405: \end{capacode}
        !           406: The third subsection of units is the definition of derived units. 
        !           407: It is consists of four fields on each line, all four fields are 
        !           408: required. 
        !           409: The first field is a one-word name for the units defined 
        !           410: in that row, the number of characters is at maximal 47. 
        !           411: The second field is the symbol denoting the units, 15 characters is the maximum.
        !           412: The first and the second fields are separated by spaces, 
        !           413: no space is allowed within the name field and the symbol field. 
        !           414: The third field is the way the units is calculated from base units or other 
        !           415: previously defined derived units.
        !           416: Operations that could be used in this field are
        !           417: ``*'' (multiplication),`` '' (multiplication), ``/'' (division), and
        !           418: ``\verb"^"'' (integeral power). 
        !           419: Number can be entered in floating point format (0.001) or 
        !           420: exponential form (1.77185E-3). 
        !           421: Operations ``\verb"+"'' (plus) and ``\verb"-"'' (minus) are not allowed. 
        !           422: The fourth field begins with a `\verb"#"' mark is the comment for this units. 
        !           423: 
        !           424: \begin{capacode}
        !           425: <<Derived Unit>>
        !           426: gram            g      0.001 kg      # mass
        !           427: hour            hr     3600. s       # time
        !           428: pound           lb     0.45359237 kg # mass
        !           429: ounce           oz     1.77185E-3 kg # mass
        !           430: inch            in     2.54 cm       # length
        !           431: foot            ft     12 in         # length
        !           432: mile            mi     5280 ft       # length
        !           433: yard            yd     0.9144 m      # length
        !           434: nautical_mile   n_mi   6080 ft       # length, nautical mile (UK)
        !           435: rood            rood   1210 yd^2     # area, rood
        !           436: acre            acre   4840 yd^2     # area, acre
        !           437: hertz           Hz     1/s           # frequency
        !           438: litre           L      10^3/cm^3     # volume
        !           439: newton          N      m*kg/s^2      # force
        !           440: pound_force     lbf    4.44822 N     # force
        !           441: dyne            dyn    1E-5 N        # force
        !           442: pascal          Pa     N/m^2           # pressure, stress
        !           443: bar             bar    1E5 Pa          # pressure
        !           444: mmHg            mmHg   1.33322E2 Pa    # pressure, millimeter of mercury
        !           445: torr            torr   1 mmHg          # pressure
        !           446: atm             atm    760 torr        # standard atmosphere
        !           447: joule           J      N*m             # energy, work, heat
        !           448: electronvolt    eV     1.6021892E-19 J # energy
        !           449: calorie         cal    4.1868 J        # energy
        !           450: Btu             Btu    1.05506E3 J     # energy
        !           451: watt            W      J/s             # power, radiant flux
        !           452: coulomb         C      A*s             # electric charge
        !           453: volt            V      J/C           # electric potential, electromotive force
        !           454: ohm             Ohm    V/A           # electric resistance
        !           455: siemens         S      1/Ohm         # electric conductance
        !           456: farad           F      C/V           # electric capacitance
        !           457: tesla           T      V s/m^2       # magnetic flux density
        !           458: weber           Wb     V*s           # magnetic flux
        !           459: henry           H      V*s/A         # inductance
        !           460: radian          rad    m /m            # plane angle
        !           461: degree          deg    1.745329E-2 rad # plane angle (Pi rad=180 deg)
        !           462: steradian       sr     m^2 /m^2        # solid angle
        !           463: lumen           lm     cd*sr         # luminous flux
        !           464: lux             lx     cd*sr/m^2     # illuminance
        !           465: becquerel       Bq     1/s           # activity (radioactive)
        !           466: gray            Gy     J/kg          # absorbed dose (of radiation)
        !           467: sievert         Sv     J/kg          # dose equivalent (dose equivalent index)
        !           468: astroUnit       AU     1.49598E11 m  # mean distance earth to sun
        !           469: \end{capacode}
        !           470: 
        !           471: The rule for matching a units is 
        !           472: that the process begins with derived and base units first. 
        !           473: Such as `T' will be matched against ``tesla'' instead of been considered as 
        !           474: prefix `T'. Another example is that
        !           475: ``min'' will be matching ``minutes'' instead of treated  
        !           476: as combination of prefix `m' and 
        !           477: units `in'. 
        !           478: 
        !           479: 
        !           480: 
        !           481: 
        !           482: %\item
        !           483: \subsection{\bf Grammar Specifications}
        !           484: \begin{itemize}
        !           485: \item  The end-of-line character (produced by the {\em Return} key) plays a
        !           486: critical role in the {\tt set$x$.qz} files.  It is 
        !           487: used to signify the end of text and mathematical expressions.  Since single
        !           488: end-of-line characters are ignored by \LaTeX,  
        !           489: careful usage of the {\em Return} key can be used to format the ASCII output. 
        !           490: Because the {\tt quizzer}  display automatically 
        !           491: line-wraps the text input, it is important to check  
        !           492: the ASCII display before distributing a problem set. The best method is to log
        !           493: in just as a student would.
        !           494: %
        !           495: \item   It is convenient to begin the question file, set{\em x}.qz  with
        !           496: commands such as {\tt /IMP "HWTop"} 
        !           497: and  {\tt /IMP "../Tools/StdMacros"}. These  commands `import' a header to
        !           498: display the student's name, the course name, 
        !           499: as well as macros for often used   commands and instructions.  The questions
        !           500: with their coded answers (and appropriate hints, 
        !           501: comments and explanations if desired) follow.   {\tt /END} command and a
        !           502: carriage return signify the end of the entire set. It is
        !           503: recommended that each type of problem for a specific field of study be
        !           504: classified and kept in individual ASCII files.  This way
        !           505: an entire problem set can be generated by using commands similar to {\tt /IMP
        !           506: "../ProblemLibrary/type04/prob3"}.
        !           507: %
        !           508: \item  Note that there are also two auxiliary files with commands for formatting
        !           509: the \LaTeX\ 2.09 document called {\tt TeXheader}
        !           510:  and {\tt Texfooter}.  These are  automatically included by {\tt quizzer} at the
        !           511:  top and bottom of the {\tt
        !           512:  quiztemp.tex} file 
        !           513:  before the {\tt quiztemp.dvi} file is created.
        !           514: %
        !           515: The {\tt TeXheader} file used at MSU creates a high density two-column format
        !           516: for the problem sets. This file is contained in 
        !           517: the {\tt nsc111f7} directory and is shown below:\\ 
        !           518: %
        !           519: %\begingroup\small 
        !           520: \begin{capacode}
        !           521: \documentstyle[twocolumn,epsf]{article}
        !           522: \textheight 25.9cm  
        !           523: \oddsidemargin = -0.42in
        !           524: \evensidemargin = -0.42in
        !           525: \textwidth= 7.28in  
        !           526: \begin{document}
        !           527: \voffset=-4.1cm
        !           528: \setcounter{page}{1}
        !           529: \newcommand{\\capa\}{{\sl C\kern-.10em\raise-.00ex\hbox{\rm A}\kern-.22em%
        !           530: {\sl P}\kern-.14em\kern-.01em{\rm A}}}
        !           531: \newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}
        !           532: \setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}\setlength{\item
        !           533:  sep}{0.022in}\setlength{\parsep}{0in}\setlength{\belowdisplayskip}{0.04in}
        !           534: \setlength{\abovedisplayskip}{0.05in}\setlength{\abovedisplayshortskip}
        !           535: {-0.04in}\setlength{\belowdisplayshortskip}{0.04in}}}{\end{list}}
        !           536: \end{capacode}
        !           537: %\endgroup
        !           538: %
        !           539: \item  The \index{HWTop}{\tt HWTop} file should be at the top of each problem set. It
        !           540: includes the student name, section number, class title, 
        !           541: assignment number, due date, and student's CAPA ID for the assignment. 
        !           542: %
        !           543: \item  The actual {\tt HWTop} file information used in {\tt nsc111f7} is shown
        !           544: below, together with a magnified example  
        !           545: of the resulting output. Note: In the actual set, the carriage returns are
        !           546: omitted from the header information.
        !           547: \newpage
        !           548: % \vskip 0.1in
        !           549: % \hrule
        !           550: % \scriptsize
        !           551: % \begin{verbatim}
        !           552: % /DIS(tex("\noindent{\large\bf ",""))/DIS(tex(name(),""))/DIS(tex("\hfill Section
        !           553: % {\Large ",""))
        !           554: % /DIS(tex(section(),""))/DIS(tex("}}\\","")) /DIS(tex("\vskip -.1in",""))
        !           555: % /DIS(tex("\noindent {\large \it Natural Science 111-- \hfill  Set
        !           556: % ",""))/DIS(tex(set(),""))
        !           557: % /DIS(tex("}\\ \vskip -.16in",""))   /DIS(tex("\noindent{\bf
        !           558: % ",""))/DIS(tex(class(),""))
        !           559: % /DIS(tex("} -- MSU -- 1995.  Due ",""))/DIS(tex(due_date(),"")) /DIS(tex("CAPA
        !           560: % ID is",""))
        !           561: % /DIS(tex("{\footnotesize  ",""))/DIS(tex(capa_id(),""))/DIS(tex("}",""))
        !           562: %  /DIS(tex("\vskip .1in \pagestyle{empty} ",""))
        !           563: % //
        !           564: % /LET stdendline=tex("\vskip .05in \hrule width3.55in height0.6pt \hfill \vskip
        !           565: % -.07in \noindent 
        !           566: % {\tiny Dept. of Physics and Astronomy, Michigan State University  \dotfill 
        !           567: % {CAPA\copyright msu}}","")
        !           568: % \end{verbatim}
        !           569: \footnotesize{
        !           570: \begin{capacode}
        !           571: /LET nameforTeX = name()
        !           572: /LET due_dateforTeX = due_date()
        !           573: /LET PINforTeX = capa_id()
        !           574: /LET sectionforTeX = section()
        !           575: /LET setforTeX=set()
        !           576: /LET classforTeX=class()
        !           577: //
        !           578: /DIS(tex("\noindent{\large\bf ",""))/DIS(var_in_tex(nameforTeX))
        !           579: /DIS(tex("\hfill Section {\Large ",""))/DIS(var_in_tex(sectionforTeX))
        !           580: /DIS(tex("}}\\","")) /DIS(tex("\vskip -.1in","")) 
        !           581: /DIS(tex("\noindent {\large \it Sample \capa Questions \hfill  Set ",""))
        !           582: /DIS(var_in_tex(setforTeX))/DIS(tex("}\\ \vskip -.16in",""))   
        !           583: /DIS(tex("\noindent{\bf ",""))
        !           584: /DIS(var_in_tex(classforTeX))/DIS(tex("} -- MSU --  Various Dates.  Due ",""))
        !           585: /DIS(var_in_tex(due_dateforTeX)) /DIS(tex("CAPA ID is",""))
        !           586: /DIS(tex("{\footnotesize  ",""))/DIS(var_in_tex(PINforTeX))/DIS(tex("}","")) 
        !           587: /DIS(tex("\vskip .1in \pagestyle{empty} ",""))
        !           588: //
        !           589: //
        !           590: /LET DeptID="College of Natural Science, Michigan State University"
        !           591: /LET stdendlineA=web("", \
        !           592:   "\vskip .05in\hrule width3.55in height .6pt\
        !           593:   \hfill\vskip -.07in\noindent{\tiny ", \
        !           594:   "<Font color=\"gray\"><font size =-1><i> --- ")
        !           595: /LET stdendlineB=web("", \
        !           596:   " \dotfill  {CAPA\copyright msu}}", \
        !           597:   " --- </font><font size=-2>CAPA &#169</font><font=-1> msu</i></font> \
        !           598:    <font color=\"black\"")
        !           599: /LET stdendline=stdendlineA+DeptID+stdendlineB
        !           600: \end{capacode}
        !           601: }
        !           602: % \hrule
        !           603: \normalsize
        !           604: % \vskip .2 in
        !           605: \item  These lines contain \LaTeX\ commands for alignment and font
        !           606: specification.  They use arguments in the {\tt tex()} function for
        !           607: \LaTeX\ which are not displayed in the ASCII  or Web versions.  The functions
        !           608: print the Student Name, section number, problem set
        !           609: number, due date and CAPA ID.  
        !           610: \item  The  \LaTeX\ source document created from  {\tt TeXheader} and {\tt
        !           611: HWTop}, i.e., the first lines in the file 
        !           612: {\tt quiztemp.tex} file follow: (again, some carriage returns have been added) 
        !           613: % \vskip 0.1 in
        !           614: % \hrule \begingroup
        !           615: % \footnotesize
        !           616: % \begin{verbatim}
        !           617: % \documentstyle[twocolumn,epsf]{article}
        !           618: % \textheight 25.9cm  
        !           619: % \oddsidemargin = -0.42in
        !           620: % \evensidemargin = -0.42in
        !           621: % \textwidth= 7.28in  
        !           622: % \begin{document}
        !           623: % \voffset=-4.1cm
        !           624: % \setcounter{page}{1}
        !           625: % \newcommand{\\capa\}{{\sl C\kern-.10em\raise-.00ex\hbox{\rm A}\kern-.22em%
        !           626: %   {\sl P}\kern-.14em\kern-.01em{\rm A}}}
        !           627: % \newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}
        !           628: % \setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}\setlength
        !           629: % {\itemsep}{0.022in}\setlength{\parsep}{0in}\setlength{\belowdisplayskip}
        !           630: % {0.04in}\setlength{\abovedisplayskip}{0.05in}\setlength
        !           631: % {\abovedisplayshortskip}{-0.04in}\setlength{\belowdisplayshortskip}{0.04in}}}
        !           632: % {\end{list}}\noindent{\large\bf Student, Jamie                \hfill Section
        !           633: %  {\Large 1}}\\ \vskip -.1in \noindent {\large \it \capa\ Natural Science--
        !           634: %  \hfill
        !           635: %   Set 1}\\ \vskip -.16in   \noindent{\bf nsc111f7} -- MSU -- 1995.  Due Sun,
        !           636: % Sep  1, 1996 at 08:00. CAPA ID is {\footnotesize  8755} \vskip .1in 
        !           637: % \pagestyle{empty} 
        !           638: % \end{verbatim}
        !           639: % \endgroup
        !           640: \footnotesize{
        !           641: \begin{capacode}
        !           642: \documentstyle[twocolumn,epsf]{article}
        !           643: \textheight 25.9cm  
        !           644: \oddsidemargin = -0.42in
        !           645: \evensidemargin = -0.42in
        !           646: \textwidth= 7.28in  
        !           647: \begin{document}
        !           648: \voffset=-4.1cm
        !           649: \setcounter{page}{1}
        !           650: \newcommand{\capa}{{\sl C\kern-.10em\raise-.00ex\hbox{\rm A}\kern-.22em%
        !           651:   {\sl P}\kern-.14em\kern-.01em{\rm A}}}
        !           652: \newenvironment{choicelist}{\begin{list}{}{\setlength{\rightmargin}{0in}
        !           653: \setlength{\leftmargin}{0.13in}\setlength{\topsep}{0.05in}
        !           654: \setlength{\itemsep}{0.022in}
        !           655: \setlength{\parsep}{0in}\setlength{\belowdisplayskip}{0.04in}
        !           656: \setlength{\abovedisplayskip}{0.05in}
        !           657: \setlength{\abovedisplayshortskip}{-0.04in}
        !           658: \setlength{\belowdisplayshortskip}{0.04in}}}{\end{list}}
        !           659: 
        !           660: 
        !           661: \noindent{\large\bf Student, Jamie .\hfill Section {\Large 1}}\\
        !           662: \vskip -.1in \noindent 
        !           663: {\large \it Sample \capa Questions \hfill  Set 1}\\
        !           664: \vskip -.16in   \noindent{\bf nsc111f7} 
        !           665: -- MSU --  Various Dates.  Due Fri, May 15, 1998 at 08:00 CAPA ID is 
        !           666: {\footnotesize  5743}
        !           667:  \vskip .1in \pagestyle{empty} 
        !           668: \end{capacode}
        !           669: }
        !           670: % \hrule 
        !           671: % \vskip 0.1 in
        !           672: \normalsize\noindent 
        !           673: Note that all of the \capa\ functions have been evaluated
        !           674: before the file is written.  
        !           675: \item  The result from Latex and dvips processing is a student copy which looks
        !           676: like:
        !           677: \begin{center}
        !           678: \parbox[t]{3.8in}{
        !           679: \noindent {\hrule \vskip 0.2 in \noindent{\large\bf Student, Jamie              
        !           680:  \hfill Section {\Large 1}}\\ \vskip -.1in 
        !           681: \noindent {\large \it \capa\ Natural Science-- \hfill  Set 1}\\ \vskip -.16in  
        !           682: \noindent{\bf nsc111f7} -- MSU -- 1995.  
        !           683: Due Sun, Sep  1, 1996 at 08:00. CAPA ID is {\footnotesize  8755} \vskip .1in
        !           684: \hrule}}
        !           685: \end{center}
        !           686: \normalsize
        !           687: \item  The remainder of the set{\em x}.qz file contains the questions. Each
        !           688: question typically consists of a block of 
        !           689: variable definitions, the text for the question including evaluation  of
        !           690: imbedded data, the coding of the answer, and 
        !           691: optionally, a comment, a hint and an explanation. 
        !           692: \vskip 0.2in
        !           693: \end{itemize}
        !           694: %\item 
        !           695: \subsection{Example}
        !           696: {\bf Example 1.} A complete example of a very simple \capa\ problem is
        !           697: given below:
        !           698: % \vskip 0.1in
        !           699: % \hrule
        !           700: % \footnotesize
        !           701: \begin{capacode}
        !           702: //************************************** 
        !           703: /BEG prob_val=2
        !           704: /IMP "../Tools/Problem#" 
        !           705: // By S. Wolfe, wolfe@nscl.msu.edu, No commercial use.
        !           706: /HIN Summing is the same as Addition.
        !           707: /EXP Add the two numbers and enter the result.
        !           708: //
        !           709: /LET firstnumber=random(1,5,1)
        !           710: /LET secondnumber=random(2,10,2)
        !           711: //
        !           712: Find the sum of /DIS(firstnumber) plus /DIS(secondnumber). 
        !           713: //
        !           714: /LET sum=firstnumber+secondnumber
        !           715: /ANS(sum,tol=0.01,wgt=prob_val,tries=10)
        !           716: /DIS(stdline)
        !           717: //**************************************
        !           718: \end{capacode}
        !           719: 
        !           720: % \normalsize
        !           721: % \noindent 
        !           722: The printed output for a specific student appears as:
        !           723: % \vskip 0.1in
        !           724: % \hrule
        !           725: 
        !           726: {\bf 1. [2pt]} Find the sum of 3 plus 8.\\ 
        !           727: \vskip .05in \hrule width2in height0.6pt \hfill \vskip .02in
        !           728: 
        !           729: \begin{itemize}
        !           730: \item  Each of the lines in this example is terminated with a carriage return
        !           731: end-of-line character, even though it is not 
        !           732: visible here.  
        !           733: \item The  {\tt /BEG prob\_val=2} begins the problem and sets the weight of the
        !           734: problem to 2 points. (The weight must be an integer from 1 to 9.) [Note: \verb"/BEG"
        !           735: is the same as \verb"/LET"]
        !           736: \item The {\tt /IMP "../Tools/Problem\#"} function is used to print the problem
        !           737: number and the weight of the problem with a 
        !           738: bold font.
        !           739: \item  All lines that start with double-slashes, {\tt //}, are comment lines and
        !           740: only appear in the \mbox{set{\em x}.qz} file.  
        !           741: For example, the comment lines of stars are used to visually separate problems so that they
        !           742: can be identified easily.  As in any computer 
        !           743: code, comments play an important role in documentation and  ``self-documenting''
        !           744: variable names are helpful.  
        !           745: \item  The line beginning with {\tt /HIN}  contains an optional hint, i.e., it
        !           746: is up to the instructor whether to include such 
        !           747: a hint for the students on a particular problem.  If a hint has been coded into
        !           748: a problem, the student can `request' to view the
        !           749:  hint after attempting to answer the question.  
        !           750: \item  The line beginning with {\tt /EXP} is the explanation.  The explanation
        !           751: becomes available to the students after data 
        !           752: entry to the problem set is `closed.' (Explanations and Hints are  included at
        !           753: the discretion of the 
        !           754: instructor). 
        !           755: \item  The  lines beginning with {\tt /LET} are definitions of the variables
        !           756: needed for this problem.  {\tt firstnumber}, is 
        !           757: declared to be a random integer in the range of 1 to 5 in steps of 1, similarly,
        !           758: {\tt secondnumber} is an integer in the range 
        !           759: of 2 to 10 in steps of 2.  \capa\ displays real and integer variables
        !           760: differently. It is preferable not to mix integer and 
        !           761: real numbers. Within functions such as {\tt random()} they must not be mixed.
        !           762: \item  Next, we have the text of the problem that will be contained in the
        !           763: printed problem set and shown on the computer 
        !           764: screen.  Note that the {\tt /DIS()} command around a previously declared
        !           765: variable tells the computer to display its value.  
        !           766: If the variable is not defined prior to diplaying, an
        !           767: error message will be displayed.  
        !           768: \item  The {\tt /LET sum =..} declares that the variable {\tt sum} is the sum of
        !           769: the two random numbers. This is the answer to 
        !           770: the problem and we use an appropriate variable name.  (The name of the answer,
        !           771: here {\tt sum}, is up to the author.)  
        !           772: \item  Finally, the answer to the problem is declared using the {\tt /ANS()}
        !           773: command. The line with the answer should come 
        !           774: literally at the end of all the material for a problem. See Section 6 for
        !           775: explanations of the arguments of the {\tt /ANS()} function.\\
        !           776: \end{itemize}
        !           777: %
        !           778: %\vskip 0.10 in
        !           779: %\item
        !           780: \subsection{\bf Example 2. Using the choose() function}
        !           781:  The {\tt choose()} function can be used to select among choices or to correlate
        !           782:  variables with pictures or graphs. ({\small Note: there should be NO
        !           783: carriage return in the choose line. In general, try
        !           784: to minimize carriage returns as they use up the limited number of lines
        !           785: available as screen display on the vt100 terminals}). In this example the
        !           786: computer selects a random number in the range of 1 to 14 and then constructs a
        !           787: filename to be displayed and the correlated answer.  
        !           788: \vskip 0.1in 
        !           789: \hrule
        !           790: %
        !           791: \scriptsize \begin{verbatim}
        !           792: //************************************** 
        !           793: /BEG prob_val=1
        !           794: /IMP "../Tools/Problem#" 
        !           795: //By E. Kashy, kashy@nscl.msu.edu, No commercial  use
        !           796: /LET k=random(1,14,1)
        !           797: /LET file=choose(k,"35","45","56","62","77","86","93","m26","m39","m47","m51","m66","m74","m84")
        !           798: /LET ans5=choose(k, 3.5,4.5,5.6,6.2,7.7,8.6,9.3,-2.6,-3.9,-4.7,-5.1,-6.6,-7.4,-8.4)
        !           799: The graph shows the function /DIS(tex("\\ \centerline{$Y=a x$} ","Y=ax. "))
        !           800: Make a careful determination of the value of /DIS(tex("$a$","a")).
        !           801: /DIS(tex("\epsfxsize=3.6in \epsffile{/usr/users/teacher/CAPA45/nsc111f7/pictures/Y",""))
        !           802: /DIS(var_in_tex(file))/DIS(tex("x.ps}",""))
        !           803: /DIS( html("<IMG SRC=/nsc111f7/pictures/Y"))/DIS(html(file))/DIS(html("x.gif >") )
        !           804: /ANS(ans5:2E,tol=5%,wgt=prob_val,tries=10)
        !           805: /DIS(stdline)
        !           806: //**************************************
        !           807: \end{verbatim}
        !           808: 
        !           809: \normalsize
        !           810: \noindent The output on paper would look like (see next page):
        !           811: \clearpage
        !           812: \hrule
        !           813: {\bf 2.}[1pt] The graph below represents the function $$Y=a x$$ Make a careful
        !           814: determination of the value of $a$\\ 
        !           815: \centerline{\epsfxsize=3.8in\epsffile{pictures/Y3p5x.ps}}
        !           816: \vskip .05in \hrule width2in height0.6pt \hfill \vskip .02in
        !           817: %
        !           818: \begin{itemize}
        !           819: \item  The computer code picks a random number, {\tt k}, and the {\tt choose}
        !           820: function selects the string variable, ``35", that 
        !           821: will be included in the name of the {\tt .eps} or \texttt{.gif} file to be displayed.  The choose
        !           822: function contains the selection index as its 
        !           823: first argument and the choices as the remaining arguments. 
        !           824: \item   It is important to check that the number of choices corresponds exactly
        !           825: to the maximum number of the selection index.  
        !           826: Otherwise an error will occur whenever the index (randomly) lies outside the
        !           827: range of choices. An `Out of bounds' error message 
        !           828: is displayed.
        !           829: \item   The answer is also specified with a {\tt choose()} function using the
        !           830: same selection index.  
        !           831: \item  The author of the problem must be sure that the data in the first {\tt
        !           832: choose()} function corresponds to the answers 
        !           833: in the second {\tt choose()} function.  
        !           834: \end{itemize}
        !           835: \vskip 0.2in
        !           836: %\item 
        !           837: \subsection{\bf Example 3. Scrambling order of N-correct out of M-choices}.
        !           838:  The traditional multiple choice problem usually has 
        !           839: only one correct answer described by a letter or  group of letters.  To prevent
        !           840: guessing and to encourage the students to discuss 
        !           841: the concepts presented by such problems, we have created problem prototypes
        !           842: where the order and number of choices vary.  \\
        !           843: In this example a set of variables is loaded for each student and displayed in
        !           844: the text of the problem. The students are then 
        !           845: given three statements which are generated from up to four versions.  \vskip
        !           846: 0.1in 
        !           847: \hrule
        !           848: %\footnotesize
        !           849: \hskip -1in 
        !           850: %\begingroup \footnotesize
        !           851: \begin{capacode}
        !           852: //************************************** 
        !           853: /BEG prob_val=1
        !           854: /IMP "../Tools/Problem#" 
        !           855: //By E. Kashy, kashy@nscl.msu.edu, No Commercial Use
        !           856: // ../CAPA4/MCTools/Nof3  Select N correct of 3 Statements
        !           857: A mass M = 0.16 /DIS(kg_u) is on a smooth horizontal surface (negligible
        !           858: friction). 
        !           859: It is attached to a spring with spring constant k = 15.3 /DIS(NPm_u). The mass
        !           860: is displaced from its equilibrium position (x=0) by a distance of 0.14 m 
        !           861: (x= + 0.14 m) and then released from rest. 
        !           862: // The next 3 lines are the answer format instructions for the students.
        !           863: (Give all of the correct answers, i.e., A or BC or ABC...) 
        !           864: //----------------------------------------
        !           865: /LET s1a="The motion of M is simple harmonic motion."
        !           866: /LET s1b="Statement 1 variation b"
        !           867: /LET s1c="Statement 1 variation c"
        !           868: /LET s1d="Statement 1 variation d"
        !           869: /LET mix1=random(1,1,1)
        !           870: /LET a1a=1
        !           871: /LET a1b=26
        !           872: /LET a1c=26
        !           873: /LET a1d=26
        !           874: //
        !           875: /LET s2a="The amplitude varies with time."
        !           876: /LET s2b="The amplitude doesn't vary with time"
        !           877: /LET s2c="Statement 2 variation c"
        !           878: /LET s2d="Statement 2 variation d"
        !           879: /LET mix2=random(1,2,1)
        !           880: /LET a2a=2
        !           881: /LET a2b=1
        !           882: /LET a2c=26
        !           883: /LET a2d=26
        !           884: //
        !           885: /LET s3a="The frequency of oscillation is independent of k."
        !           886: /LET s3b="The Period of oscillation is independent of k."
        !           887: /LET s3c="The frequency of oscillation depends of k."
        !           888: /LET s3d="Statement 3 variation d"
        !           889: /LET mix3=random(1,3,1)
        !           890: /LET a3a=2
        !           891: /LET a3b=2
        !           892: /LET a3c=1
        !           893: /LET a3d=26
        !           894: //
        !           895: /IMP "../MCTools/Nof3aux"
        !           896: /ANS(Nof3right,wgt=prob_val, str=mc, tries=5)
        !           897: /DIS(stdline)
        !           898: //**************************************
        !           899: \end{capacode}
        !           900: %\endgroup
        !           901: %\normalsize
        !           902: \noindent The output of the above code appears as:
        !           903: \hrule
        !           904: {\par \bf 1.} [1pt]
        !           905: A mass M = 0.16 $kg$ is on a smooth horizontal surface (negligible friction). It
        !           906: is attached to a spring with spring constant k = 15.3 $N/m$. The mass is
        !           907: displaced from its equilibrium position (x=0) by a distance of 0.14 m (x=+ 0.14
        !           908: m ) and then released from rest. (Give all of the correct answers, i.e., A or BC
        !           909: or ABC...) 
        !           910: \begin{choicelist}
        !           911: \item[]  A) The amplitude varies with time.
        !           912: \item[]  B) The Period of oscillation is independent of k.
        !           913: \item[]  C) The motion of M is simple harmonic motion.
        !           914: \end{choicelist}
        !           915: \vskip .05in \hrule width2in height0.6pt \hfill \vskip .02in
        !           916: \hrule
        !           917: The statements displayed to the student are 
        !           918: controlled by the {\tt mix{\em x}=random(1,4,1)} index.  The upper limit on the
        !           919: random function is determined by the number of
        !           920: statements available as options in each set.  In the example there is only one
        !           921: choice of the first statement, and  {\tt mix1=random(1,1,1)}. For the third
        !           922: statement, there are three choices and {\tt mix3=random(1,3,1)}, so a student gets
        !           923: one of the three options. 
        !           924: 
        !           925: The example relies on an auxillary file to do the scrambling.  This file is
        !           926: imported into set{\em x}.qz with the command:\\
        !           927: {\tt /IMP "../MCTools/Nof3aux"}\\
        !           928: The imported auxillary file depends upon
        !           929: consistency in variable names.  Do not change the names of the statement
        !           930: variables (e.g., {\tt s1a}) or the names of the answer
        !           931: variables (e.g., {\tt a1a}).  If you wish to make major changes in tool formats,
        !           932: it is recommended that you include the auxillary file
        !           933: within the set{\em x}.qz rather than using the import ({\tt /IMP}) command.  The
        !           934: choices are loaded into specific statement variable names (i.e., {\tt /LET
        !           935: s1a="The motion of M is simple harmonic motion"}) 
        !           936: that are correlated to the answer variables for `correct' { \tt /LET a1a=1}; or
        !           937: `incorrect' { \tt /LET a1a=2}.  In this 
        !           938: example, the variable {\tt s1b} is not used in the problem, so its answer {\tt
        !           939: a1b} is not changed from the value 26.  In all the
        !           940: preformatted MCTools files,  we have used 26 to indicate an unused
        !           941: answer/statement.  
        !           942: \begin{itemize}
        !           943: \item  The file {\tt Nof3} can be simply copied from the {\tt CAPA4/MCTools}
        !           944: directory and pasted into the problem set file. The {\tt Include Button} in {\tt
        !           945: quizzer} allows a user to scan the directory structure and perform that
        !           946: function.
        !           947: \item  The statements (and their variations) are typed as strings into the s1a,
        !           948: s2a, etc. and corresponding values for a1a, a2a, etc. indicating if the
        !           949: variation is correct.
        !           950: \item  The text of the new problem should be typed in.
        !           951: \item Certain variables \begin{verbatim} kg_u, NPm_u,  stdline\end{verbatim} 
        !           952: are not defined within the problem. Because they are used often, they were
        !           953: defined in files imported once at the start of the set ({\tt /IMP
        !           954: "../Tools/StdUnits"}) to simplify problem coding.
        !           955: \item The middle integer in {\tt mix3=random(1,3,1)}  corresponds to the number
        !           956: of variation of  statement
        !           957: block 3.\\
        !           958: \end{itemize}
        !           959: %
        !           960: %\item 
        !           961: \subsection{\bf  Using Logical Functions and other Functions}. A number of logical
        !           962: functions are provided in \capa\ to allow numerical testing for various
        !           963: conditions.  The logical expression is tested and returns 0 if False and 1 if
        !           964: true.  These expressions can be used in a number of ways, for example in the
        !           965: rank4aux file used in problem 11 on page 56. 
        !           966: \vskip 0.1in 
        !           967: \hrule
        !           968: %\noindent The system selects three random numbers in the ranges specified. 
        !           969: %These are presented to the student with two decimal places (:2, see below). 
        !           970: %Because there are three values, any of which could be the smallest, the numbers
        !           971: %are compared pairwise.  As the logical function returns the number 0 or 1 the
        !           972: %value of `pair1' will be set to the smaller of r4a and r4b.  
        !           973: % making voffset less negative moves up
        !           974: % making hoffset less negative moves right
        !           975: 
        !           976: %\end{enumerate}
        !           977: 
        !           978: \clearpage
        !           979: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>