aimmath-commit Mailing List for AiM Assessment in Mathematics (Page 21)
Brought to you by:
gustav_delius,
npstrick
You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
(73) |
Aug
(96) |
Sep
(240) |
Oct
(34) |
Nov
(12) |
Dec
(3) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(31) |
Feb
(6) |
Mar
(17) |
Apr
(6) |
May
(5) |
Jun
|
Jul
|
Aug
(2) |
Sep
(2) |
Oct
(19) |
Nov
|
Dec
|
2005 |
Jan
|
Feb
|
Mar
(14) |
Apr
(33) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <gus...@us...> - 2003-08-25 21:48:50
|
Update of /cvsroot/aimmath/AIM/images In directory sc8-pr-cvs1:/tmp/cvs-serv12052/images Added Files: equi.gif isos.gif sinperiod.gif Log Message: merged from develop_2_1 |
From: <gus...@us...> - 2003-08-25 21:48:49
|
Update of /cvsroot/aimmath/AIM/bin/blat In directory sc8-pr-cvs1:/tmp/cvs-serv12052/bin/blat Added Files: Readme.txt blat.exe Log Message: merged from develop_2_1 |
From: <mo...@us...> - 2003-08-25 19:18:26
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple In directory sc8-pr-cvs1:/tmp/cvs-serv7366 Modified Files: Tag: develop_2_1 Aim.mpl AutoConf.mpl Class.mpl ConfigFields.mpl HTML.mpl ManualConfig.dist PackageList SafeParse.mpl Removed Files: Tag: develop_2_1 LaTeX.mpl Log Message: Many changes. See posting to developers' list. Index: Aim.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Aim.mpl,v retrieving revision 1.1.1.1.2.3 retrieving revision 1.1.1.1.2.4 diff -C2 -d -r1.1.1.1.2.3 -r1.1.1.1.2.4 *** Aim.mpl 10 Jul 2003 20:10:03 -0000 1.1.1.1.2.3 --- Aim.mpl 25 Aug 2003 18:33:23 -0000 1.1.1.1.2.4 *************** *** 52,56 **** proc() local f,param,require,command,commandprocedure,starttime,endtime, ! subjname,subj,id,password,auth,html,extranames,now; global Config,DefaultZone,`aim/AssignedNames`,AimCache,AimImageCache; --- 52,56 ---- proc() local f,param,require,command,commandprocedure,starttime,endtime, ! subjname,subj,id,password,auth,html,extranames,now; global Config,DefaultZone,`aim/AssignedNames`,AimCache,AimImageCache; *************** *** 347,354 **** `HTML/ToString`( `HTML/Subs`("subjecttable" = subjecttable, ! "idnote" = DefaultZone['IDNote'], ! "emaillink" = DefaultZone['AdminEmailLink'], "servleturl" = Config['ServletURL'], ! copy(`aim/SendReminder/Template/NoID`)))); fi; --- 347,354 ---- `HTML/ToString`( `HTML/Subs`("subjecttable" = subjecttable, ! "idnote" = DefaultZone['IDNote'], ! "emaillink" = DefaultZone['AdminEmailLink'], "servleturl" = Config['ServletURL'], ! copy(`aim/SendReminder/Template/NoID`)))); fi; *************** *** 363,370 **** `HTML/ToString`( `HTML/Subs`("subjecttable" = subjecttable, ! "idnote" = DefaultZone['IDNote'], ! "emaillink" = subj['AdminEmailLink'], "servleturl" = Config['ServletURL'], ! copy(`aim/SendReminder/Template/Unregistered`)))); fi; --- 363,370 ---- `HTML/ToString`( `HTML/Subs`("subjecttable" = subjecttable, ! "idnote" = DefaultZone['IDNote'], ! "emaillink" = subj['AdminEmailLink'], "servleturl" = Config['ServletURL'], ! copy(`aim/SendReminder/Template/Unregistered`)))); fi; *************** *** 480,484 **** fi; ! RETURN(subj['HomePage',accesslevel,"StudentID" = id,"Password" = password]); end ): --- 480,487 ---- fi; ! ### GWD ! # DIST RETURN(subj['HomePage',accesslevel,"StudentID" = id,"Password" = password]); ! RETURN(subj['HomePageWithMarks',accesslevel,id,"StudentID" = id,"Password" = password]); ! ### END GWD end ): *************** *** 497,503 **** param::table) local quizcontext,isguest,command,mode,notstrict,showsol,showmark, ! focuslabel,oldfocuslabel; ! command := param["Command"]; quizcontext := `new/aim/Quiz/Context`(); quizcontext['StartTime'] := `Date/CurrentDate`(); --- 500,510 ---- param::table) local quizcontext,isguest,command,mode,notstrict,showsol,showmark, ! # KM ! # DIST focuslabel,oldfocuslabel; ! focuslabel,oldfocuslabel,history,historyfile,seed,seedfile, ! solnRevealed; ! # END KM command := param["Command"]; + quizcontext := `new/aim/Quiz/Context`(); quizcontext['StartTime'] := `Date/CurrentDate`(); *************** *** 509,512 **** --- 516,535 ---- quizcontext['Student'] := eval(subj['GetStudent',id]); quizcontext['StudentID'] := id; + # KM + # check if the student has previously shown the solutions on + # this quiz, show them again until he requests a new version + seedfile := cat(quiz['RootDir'],"/records/",id,"/seed.m"); + solnRevealed := false; + if `OS/FileExists`(seedfile) and not command="NewQuizVersion" then + seed := AimCache['Load',seedfile]; + historyfile := + sprintf("%s/records/%s/%A.m",quiz['RootDir'],id,seed); + try + history := eval(AimCache['Load',historyfile]); + solnRevealed := evalb(history['SolutionsRevealed'] = true); + catch : + end: + fi: + # END KM else quizcontext['Student'] := NULL; *************** *** 527,533 **** quizcontext['Focused'] := evalb( ! param["Focused"] = "true" and ! command <> "NewQuizVersion" and ! command <> "ShowQuizSolutions" ); --- 550,559 ---- quizcontext['Focused'] := evalb( ! # KM ! # DIST param["Focused"] = "true" and ! # DIST command <> "NewQuizVersion" and ! # DIST command <> "ShowQuizSolutions" ! param["Focused"] = "true" ! # END KM ); *************** *** 536,539 **** --- 562,570 ---- focuslabel := ""; fi; + # KM + if command = "NewQuizVersion" then + focuslabel := "1"; + fi: + # END KM quizcontext['FocusLabel'] := focuslabel; *************** *** 544,547 **** --- 575,580 ---- quizcontext['OldFocusLabel'] := oldfocuslabel; + #################### + if command = "MoveQuizFocus" then quizcontext['ProcessAll'] := false; *************** *** 549,553 **** quizcontext['ProcessOldFocus'] := true; elif (command = "MarkQuiz" or command = "ValidateQuiz") and ! quizcontext['Focused'] then quizcontext['ProcessAll'] := false; quizcontext['ProcessFocus'] := true; --- 582,586 ---- quizcontext['ProcessOldFocus'] := true; elif (command = "MarkQuiz" or command = "ValidateQuiz") and ! quizcontext['Focused'] then quizcontext['ProcessAll'] := false; quizcontext['ProcessFocus'] := true; *************** *** 564,569 **** mode := quiz['Mode']; notstrict := evalb(mode <> "strict"); ! showsol := evalb(command = "ShowQuizSolutions"); ! if quizcontext['AfterDueDate'] then # If a guest visits after the due date, we just show the questions --- 597,604 ---- mode := quiz['Mode']; notstrict := evalb(mode <> "strict"); ! # KM ! # DIST showsol := evalb(command = "ShowQuizSolutions"); ! showsol := evalb((command = "ShowQuizSolutions") or solnRevealed); ! # END KM if quizcontext['AfterDueDate'] then # If a guest visits after the due date, we just show the questions *************** *** 608,613 **** quizcontext['ReportSeed'] := isguest; quizcontext['RecordSeed'] := ! evalb(not(isguest) and (command = "NewQuizVersion")); ! quizcontext['DeleteSeed'] := showsol; ########### quizcontext['InviteAnswers'] := not(showsol); --- 643,654 ---- quizcontext['ReportSeed'] := isguest; quizcontext['RecordSeed'] := ! # KM ! # DIST quizcontext['DeleteSeed'] := showsol; ! # TODO: Check if this still works for guests... ! # DIST evalb(not(isguest) and (command = "NewQuizVersion")); ! evalb(not isguest); ! quizcontext['DeleteSeed'] := ! evalb(command = "NewQuizVersion"); ! # END KM ########### quizcontext['InviteAnswers'] := not(showsol); *************** *** 616,625 **** quizcontext['InviteSolutions'] := evalb(mode = "practice" and not(showsol)); ! quizcontext['InviteNewVersion'] := ! evalb(mode = "practice"); quizcontext['InviteNewVersion'] := showsol; quizcontext['InviteNewQuiz'] := true; ########### ! if command = "ShowQuizPage" then quizcontext['AcceptAnswers'] := false; quizcontext['UseRecordedAnswers'] := not(isguest); --- 657,675 ---- quizcontext['InviteSolutions'] := evalb(mode = "practice" and not(showsol)); ! # KM ! # This line has no effect ! # DIST quizcontext['InviteNewVersion'] := ! # DIST evalb(mode = "practice"); ! # END KM quizcontext['InviteNewVersion'] := showsol; quizcontext['InviteNewQuiz'] := true; ########### ! # KM ! if command = "NewQuizVersion" then ! quizcontext['AcceptAnswers'] := false; ! quizcontext['UseRecordedAnswers'] := false; ! elif solnRevealed or command = "ShowQuizPage" then ! # DIST if command = "ShowQuizPage" then ! # END KM quizcontext['AcceptAnswers'] := false; quizcontext['UseRecordedAnswers'] := not(isguest); *************** *** 686,689 **** --- 736,750 ---- quizcontext := eval(`aim/MakeQuizContext`(subj,quiz,id,password,param)); + + # KM + # had to move these lines from the bottom of the proc + # to here in order to accomodate SolutionsRevealed modes + if quizcontext['DeleteSeed'] then + traperror( + `OS/Rename`(sprintf("%s/records/%s/seed.m",quiz['RootDir'],id), + sprintf("%s/records/%s/oldseed.m",quiz['RootDir'],id))); + fi; + # END KM + # find the seed to use for randomization if quizcontext['UseRecordedSeed'] then *************** *** 761,764 **** --- 822,829 ---- od; fi; + # KM + elif not quizcontext['AcceptAnswers'] then + rawtable := table([]); + # END KM else rawtable := eval(param); *************** *** 772,775 **** --- 837,845 ---- if quizcontext['SaveHistory'] then + # KM + if command = "ShowQuizSolutions" then + eval(quizinstance['History'])['SolutionsRevealed'] := true; + fi: + # END KM historyfile := sprintf("%s/records/%s/%A.m",quiz['RootDir'],id,seed); *************** *** 777,785 **** fi; ! if quizcontext['DeleteSeed'] then ! traperror( ! `OS/Rename`(sprintf("%s/records/%s/seed.m",quiz['RootDir'],id), ! sprintf("%s/records/%s/oldseed.m",quiz['RootDir'],id))); ! fi; RETURN(quizinstance['Show',quizcontext]); end --- 847,857 ---- fi; ! # KM ! # DIST if quizcontext['DeleteSeed'] then ! # DIST traperror( ! # DIST `OS/Rename`(sprintf("%s/records/%s/seed.m",quiz['RootDir'],id), ! # DIST sprintf("%s/records/%s/oldseed.m",quiz['RootDir'],id))); ! # DIST fi; ! # END KM RETURN(quizinstance['Show',quizcontext]); end Index: AutoConf.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/AutoConf.mpl,v retrieving revision 1.1.1.1.2.8 retrieving revision 1.1.1.1.2.9 diff -C2 -d -r1.1.1.1.2.8 -r1.1.1.1.2.9 *** AutoConf.mpl 23 Aug 2003 14:14:35 -0000 1.1.1.1.2.8 --- AutoConf.mpl 25 Aug 2003 18:33:23 -0000 1.1.1.1.2.9 *************** *** 48,52 **** setconfig := ! proc(k::name,v::{integer,string,boolean}) # Set Config[k] to v unless Config[k] is already defined and # has the same type as v or is NULL. --- 48,55 ---- setconfig := ! # KM ! # DIST proc(k::name,v::{integer,string,boolean}) ! proc(k::name,v::{numeric,string,boolean}) ! # END KM # Set Config[k] to v unless Config[k] is already defined and # has the same type as v or is NULL. *************** *** 454,457 **** --- 457,492 ---- fi: + # KM + # dist p("\n"): + ###################################################################### + + # Look for the Kill Program + + if os_os = "Linux" then + Config['KillProgram'] :="/bin/kill"; + os_osname(look_for_prog( + "Kill Process Utility", + "Conf" = 'KillProgram', + "Path" = "kill", + "Def" = "/bin/kill", + "Def" = "/usr/bin/kill", + "Def" = "/usr/local/bin/kill", + "Check" = ["","kill"] + )): + Config['KillProgramArg'] :="-9"; + else + Config['KillProgram'] := + os_osname(look_for_prog( + "Kill Process Utility", + "Conf" = 'KillProgram', + "Path" = "Process.exe", + "Def" = "C:\\AIM\\Process", + "Def" = "C:\\Process", + "Check" = ["-v","beyondlogic.org"] + )): + setconfig('KillProgramArg',"-k"); + fi: + + # END KM ###################################################################### *************** *** 743,746 **** --- 778,792 ---- )): fi: + + # KM + + setconfig('AliceHistorySize',20): + setconfig('MaxMapleProcesses',8): + setconfig('StudentTimeLimit',60000): # one minute + setconfig('AdminTimeLimit',1200000): # twenty minutes + + setconfig('TimeLimit',2.0): # two seconds + + # END KM p("\n"): Index: Class.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Class.mpl,v retrieving revision 1.1.1.1.2.2 retrieving revision 1.1.1.1.2.3 diff -C2 -d -r1.1.1.1.2.2 -r1.1.1.1.2.3 *** Class.mpl 10 Jul 2003 20:10:03 -0000 1.1.1.1.2.2 --- Class.mpl 25 Aug 2003 18:33:23 -0000 1.1.1.1.2.3 *************** *** 160,166 **** proc(class,x) local xclassname,xclass; ! ! if not type(x,table) then RETURN(false); fi; ! xclassname := op(1,eval(x)); if xclassname = NULL then RETURN(false); fi; --- 160,167 ---- proc(class,x) local xclassname,xclass; ! # KM ! # DIST if not type(x,table) then RETURN(false); fi; ! if not type(eval(x),table) then RETURN(false); fi; ! # END KM xclassname := op(1,eval(x)); if xclassname = NULL then RETURN(false); fi; *************** *** 430,444 **** proc(classname::name) global CLASS,CLASSNAME, ! `Package/Name`,`Package/SaveClasses`,`Package/SaveNames/Hidden`, `Package/Documentation`; local c,indexfunction,typefunction, ! constructor,consproc,consdoc,x, ! fieldname,fieldtype,fielddefault,realtype, typespecified,defaultspecified, ! methodname,fullmethodname,methodtype, methodbody,methodsig,methoddoc,params, ! parent,parenttypes,field,method, ! incclass,indfield,indfields,indmethod,indmethods, ! classdoc; if (`Package/ReportAssignment` = true) then --- 431,445 ---- proc(classname::name) global CLASS,CLASSNAME, ! `Package/Name`,`Package/SaveClasses`,`Package/SaveNames/Hidden`, `Package/Documentation`; local c,indexfunction,typefunction, ! constructor,consproc,consdoc,x, ! fieldname,fieldtype,fielddefault,realtype, typespecified,defaultspecified, ! methodname,fullmethodname,methodtype, methodbody,methodsig,methoddoc,params, ! parent,parenttypes,field,method, ! incclass,indfield,indfields,indmethod,indmethods, ! classdoc; if (`Package/ReportAssignment` = true) then *************** *** 450,468 **** c := table(['Name' = classname, 'Package' = "", ! 'Constructor' = proc(this) end, ! 'Fields' = {}, ! 'FieldType' = table(), ! 'FieldDefault' = table(), ! 'StaticFields' = {}, ! 'StaticFieldValue' = table(), ! 'IndirectFields' = {}, ! 'FieldIndirectionTable' = table(), ! 'IndirectMethods' = {}, ! 'MethodIndirectionTable' = table(), ! 'Methods' = {}, 'MethodType' = table(), 'MethodSignature' = table(), ! 'MethodTable' = table(), ! 'Parents' = {}]); if assigned(`Package/Name`) then --- 451,469 ---- c := table(['Name' = classname, 'Package' = "", ! 'Constructor' = proc(this) end, ! 'Fields' = {}, ! 'FieldType' = table(), ! 'FieldDefault' = table(), ! 'StaticFields' = {}, ! 'StaticFieldValue' = table(), ! 'IndirectFields' = {}, ! 'FieldIndirectionTable' = table(), ! 'IndirectMethods' = {}, ! 'MethodIndirectionTable' = table(), ! 'Methods' = {}, 'MethodType' = table(), 'MethodSignature' = table(), ! 'MethodTable' = table(), ! 'Parents' = {}]); if assigned(`Package/Name`) then *************** *** 493,498 **** ERROR( sprintf( ! __("Extends clause with no parent class in declaration of class %a"), ! classname)); fi; --- 494,499 ---- ERROR( sprintf( ! __("Extends clause with no parent class in declaration of class %a"), ! classname)); fi; *************** *** 521,525 **** c['IndirectFields'] := c['IndirectFields'] union ! parent['IndirectFields']; for indfield in parent['IndirectFields'] do --- 522,526 ---- c['IndirectFields'] := c['IndirectFields'] union ! parent['IndirectFields']; for indfield in parent['IndirectFields'] do *************** *** 539,543 **** c['IndirectMethods'] := c['IndirectMethods'] union ! parent['IndirectMethods']; for indmethod in parent['IndirectMethods'] do --- 540,544 ---- c['IndirectMethods'] := c['IndirectMethods'] union ! parent['IndirectMethods']; for indmethod in parent['IndirectMethods'] do *************** *** 557,562 **** ERROR( sprintf( ! __("Empty constructor clause in declaration of class %a"), ! classname)); fi; --- 558,563 ---- ERROR( sprintf( ! __("Empty constructor clause in declaration of class %a"), ! classname)); fi; *************** *** 568,573 **** ERROR( sprintf( ! __("In declaration of class %s: constructor documentation is not a string."), ! classname)); fi; consdoc := `Package/ConvertAt`(x[2]); --- 569,574 ---- ERROR( sprintf( ! __("In declaration of class %s: constructor documentation is not a string."), ! classname)); fi; consdoc := `Package/ConvertAt`(x[2]); *************** *** 577,582 **** ERROR( sprintf( ! __("In declaration of class %s: constructor is not a procedure."), ! classname)); fi; --- 578,583 ---- ERROR( sprintf( ! __("In declaration of class %s: constructor is not a procedure."), ! classname)); fi; *************** *** 585,590 **** consdoc := sprintf("<b>Constructor:</b> `new/%A`(",classname), ! op(map((p) -> (`Package/ParamToHTML`(p),","),params)), ! ")\n<p>\n",consdoc,"\n</p>\n"; c['Constructor'] := eval(consproc); --- 586,591 ---- consdoc := sprintf("<b>Constructor:</b> `new/%A`(",classname), ! op(map((p) -> (`Package/ParamToHTML`(p),","),params)), ! ")\n<p>\n",consdoc,"\n</p>\n"; c['Constructor'] := eval(consproc); *************** *** 594,604 **** ########################## elif (x[1] = 'Field' or ! x[1] = 'IncludedField' or ! x[1] = 'StaticField') then if nops(x) = 1 then ERROR( sprintf( ! __("Empty field specification in declaration of class %a"), ! classname)); fi; --- 595,605 ---- ########################## elif (x[1] = 'Field' or ! x[1] = 'IncludedField' or ! x[1] = 'StaticField') then if nops(x) = 1 then ERROR( sprintf( ! __("Empty field specification in declaration of class %a"), ! classname)); fi; *************** *** 634,638 **** ERROR( sprintf(__("In declaration of class %a: field name %a is not a symbol."), ! classname,fieldname)); fi; --- 635,639 ---- ERROR( sprintf(__("In declaration of class %a: field name %a is not a symbol."), ! classname,fieldname)); fi; *************** *** 640,651 **** ERROR( sprintf(__("In declaration of class %a: type specification %a for field %a is invalid."), ! classname,fieldtype,fieldname)); fi; if nops([fielddefault]) > 1 and ! fieldtype <> anything then ERROR( sprintf(__("In declaration of class %a: default value for field %a is an expression sequence"), ! classname,fieldname)) fi; --- 641,652 ---- ERROR( sprintf(__("In declaration of class %a: type specification %a for field %a is invalid."), ! classname,fieldtype,fieldname)); fi; if nops([fielddefault]) > 1 and ! fieldtype <> anything then ERROR( sprintf(__("In declaration of class %a: default value for field %a is an expression sequence"), ! classname,fieldname)) fi; *************** *** 653,657 **** ERROR( sprintf(__("In declaration of class %a: default value %a for field %a does not have type %a"), ! classname,fielddefault,fieldname,fieldtype)) fi; --- 654,658 ---- ERROR( sprintf(__("In declaration of class %a: default value %a for field %a does not have type %a"), ! classname,fielddefault,fieldname,fieldtype)) fi; *************** *** 688,700 **** if type(x[3],string) then classdoc := ! classdoc, ! "<p>\n", ! `Package/ConvertAt`(x[3]), ! "\n</p>\n"; else ERROR( ! sprintf( ! __("In declaration of class %s: documentation for field %a is not a string: %a"), ! classname,fieldname,x[3])); fi; fi; --- 689,701 ---- if type(x[3],string) then classdoc := ! classdoc, ! "<p>\n", ! `Package/ConvertAt`(x[3]), ! "\n</p>\n"; else ERROR( ! sprintf( ! __("In declaration of class %s: documentation for field %a is not a string: %a"), ! classname,fieldname,x[3])); fi; fi; *************** *** 704,715 **** incclass := eval(cat(`class/`,fieldtype)); indfields := ! incclass['Fields'] union ! incclass['StaticFields'] union ! incclass['IndirectFields']; c['IndirectFields'] := c['IndirectFields'] union indfields; for indfield in indfields do ! c['FieldIndirectionTable'][indfield] := fieldname; ! c['FieldType'][indfield] := incclass['FieldType'][indfield]; od; --- 705,716 ---- incclass := eval(cat(`class/`,fieldtype)); indfields := ! incclass['Fields'] union ! incclass['StaticFields'] union ! incclass['IndirectFields']; c['IndirectFields'] := c['IndirectFields'] union indfields; for indfield in indfields do ! c['FieldIndirectionTable'][indfield] := fieldname; ! c['FieldType'][indfield] := incclass['FieldType'][indfield]; od; *************** *** 717,721 **** c['IndirectMethods'] := c['IndirectMethods'] union indmethods; for indmethod in indmethods do ! c['MethodIndirectionTable'][indmethod] := fieldname; od; fi; --- 718,722 ---- c['IndirectMethods'] := c['IndirectMethods'] union indmethods; for indmethod in indmethods do ! c['MethodIndirectionTable'][indmethod] := fieldname; od; fi; *************** *** 726,732 **** if nops(x) = 1 then ERROR( ! sprintf( ! __("Empty method specification in declaration of class %a"), ! classname)); fi; --- 727,733 ---- if nops(x) = 1 then ERROR( ! sprintf( ! __("Empty method specification in declaration of class %a"), ! classname)); fi; *************** *** 741,746 **** if not(type(methodname,symbol)) then ERROR( ! sprintf(__("In declaration of class %a: method name %a is not a symbol."), ! classname,methodname)); fi; --- 742,747 ---- if not(type(methodname,symbol)) then ERROR( ! sprintf(__("In declaration of class %a: method name %a is not a symbol."), ! classname,methodname)); fi; *************** *** 751,758 **** methodbody := x[4]; if not(type(methodbody,procedure)) then ! ERROR( ! sprintf( ! __("In declaration of class %a: body of method %a is not a procedure"), ! classname,methodname)); fi; fullmethodname := --- 752,759 ---- methodbody := x[4]; if not(type(methodbody,procedure)) then ! ERROR( ! sprintf( ! __("In declaration of class %a: body of method %a is not a procedure"), ! classname,methodname)); fi; fullmethodname := *************** *** 763,769 **** else ERROR( ! sprintf( ! __("In declaration of class %a: method %a has no body."), ! classname,methodname)); fi; --- 764,770 ---- else ERROR( ! sprintf( ! __("In declaration of class %a: method %a has no body."), ! classname,methodname)); fi; *************** *** 781,785 **** methoddoc := sprintf("<font color='maroon'>%a</font>(",methodname); methoddoc := ! methoddoc, op(map((p) -> (`Package/ParamToHTML`(p),","),params)); methoddoc := cat(methoddoc[1..-2],")"); fi; --- 782,786 ---- methoddoc := sprintf("<font color='maroon'>%a</font>(",methodname); methoddoc := ! methoddoc, op(map((p) -> (`Package/ParamToHTML`(p),","),params)); methoddoc := cat(methoddoc[1..-2],")"); fi; *************** *** 787,807 **** if type(x[2],`::`) then methoddoc := ! cat(methoddoc,"::",`Package/TypeToHTML`(methodtype)); fi; if type(x[3],string) then if x[3] <> "" then ! methoddoc := ! cat(methoddoc,"\n<p>\n",`Package/ConvertAt`(x[3]),"\n</p>\n"); fi; else ERROR( ! sprintf( ! __("In declaration of class %s: documentation for method %a is not a string: %a"), ! classname,methodname,x[3])); fi; classdoc := classdoc, ! "<b>Method:</b> ",methoddoc,"<br/>\n"; ########################## --- 788,808 ---- if type(x[2],`::`) then methoddoc := ! cat(methoddoc,"::",`Package/TypeToHTML`(methodtype)); fi; if type(x[3],string) then if x[3] <> "" then ! methoddoc := ! cat(methoddoc,"\n<p>\n",`Package/ConvertAt`(x[3]),"\n</p>\n"); fi; else ERROR( ! sprintf( ! __("In declaration of class %s: documentation for method %a is not a string: %a"), ! classname,methodname,x[3])); fi; classdoc := classdoc, ! "<b>Method:</b> ",methoddoc,"<br/>\n"; ########################## *************** *** 911,915 **** RETURN( cat(prefix,"EXPRSEQ\n", ! op(map(`Class/ToString0`,x,level + 1,maxdepth,stringlen)))) fi; --- 912,916 ---- RETURN( cat(prefix,"EXPRSEQ\n", ! op(map(`Class/ToString0`,x,level + 1,maxdepth,stringlen)))) fi; *************** *** 922,927 **** RETURN( cat(prefix,"[\n", ! op(map(`Class/ToString0`,x,level + 1,maxdepth,stringlen)), ! prefix,"]\n")); fi; elif type(x,set) then --- 923,928 ---- RETURN( cat(prefix,"[\n", ! op(map(`Class/ToString0`,x,level + 1,maxdepth,stringlen)), ! prefix,"]\n")); fi; elif type(x,set) then *************** *** 931,936 **** RETURN( cat(prefix,"{\n", ! op(map(`Class/ToString0`,x,level + 1,maxdepth,stringlen)), ! prefix,"}\n")); fi; elif `Class/IsObject`(x) then --- 932,937 ---- RETURN( cat(prefix,"{\n", ! op(map(`Class/ToString0`,x,level + 1,maxdepth,stringlen)), ! prefix,"}\n")); fi; elif `Class/IsObject`(x) then *************** *** 942,946 **** for f in xclass['Fields'] do s := sprintf("%s%s %A =\n%s",s,prefix,f, ! `Class/ToString1`([eval(x[f])], level + 2,maxdepth,stringlen)); od; --- 943,947 ---- for f in xclass['Fields'] do s := sprintf("%s%s %A =\n%s",s,prefix,f, ! `Class/ToString1`([eval(x[f])], level + 2,maxdepth,stringlen)); od; *************** *** 954,958 **** for f in indices(x) do s := sprintf("%s%s %A =\n%s",s,prefix,f, ! `Class/ToString1`([eval(x[op(f)])], level + 2,maxdepth,stringlen)); od; --- 955,959 ---- for f in indices(x) do s := sprintf("%s%s %A =\n%s",s,prefix,f, ! `Class/ToString1`([eval(x[op(f)])], level + 2,maxdepth,stringlen)); od; Index: ConfigFields.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/ConfigFields.mpl,v retrieving revision 1.1.1.1.2.2 retrieving revision 1.1.1.1.2.3 diff -C2 -d -r1.1.1.1.2.2 -r1.1.1.1.2.3 *** ConfigFields.mpl 9 Jul 2003 09:34:18 -0000 1.1.1.1.2.2 --- ConfigFields.mpl 25 Aug 2003 18:33:23 -0000 1.1.1.1.2.3 *************** *** 22,28 **** integer," The major version number of Maple under which AIM is running. The ! known allowed values are 5, 6, 7 or 8 (though some things are undoubtedly broken for Maple 5)."], ['ServletURL', string," --- 22,34 ---- integer," The major version number of Maple under which AIM is running. The ! known allowed values are 5, 6, 7, 8, or 9 (though some things are undoubtedly broken for Maple 5)."], + # KM + ['TimeLimit', + positive," + The system default for time limits on various computations."], + # END KM + ['ServletURL', string," *************** *** 78,81 **** --- 84,88 ---- is turned off."], + ['TempDir', string," *************** *** 133,136 **** --- 140,175 ---- disallowed. The recommended location is /usr/bin/tth (under Linux) or c:\\TtH\\tth (under Windows)."], + + # KM + ['KillProgram', + string," + The absolute path to the kill program (used to kill Maple processes on this OS). + Under Windows, the path should use backslashes as separators, and + should not contain any spaces; in particular, 'Program Files' is + disallowed."], + + ['KillProgramArg', + string," + The argument for the kill program to tell it to kill the process whose PID + Is the final arg. Typically this is -k for the Process.exe program in Windows, and + -9 for the kill command in UNIX."], + + ['AliceHistorySize', + posint," + The number of Recent Requests to show on the Alice Monitor page."], + + ['StudentTimeLimit', + nonnegint," + The time limit on non-administrative commands in milliseconds."], + + ['AdminTimeLimit', + nonnegint," + The time limit on administrative commands in milliseconds."], + + ['MaxMapleProcesses', + posint," + The maximum number of Maple processes that can be running at one time."], + + # END KM ['TempDir', Index: HTML.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/HTML.mpl,v retrieving revision 1.1.1.1.2.2 retrieving revision 1.1.1.1.2.3 diff -C2 -d -r1.1.1.1.2.2 -r1.1.1.1.2.3 *** HTML.mpl 10 Jul 2003 20:10:03 -0000 1.1.1.1.2.2 --- HTML.mpl 25 Aug 2003 18:33:23 -0000 1.1.1.1.2.3 *************** *** 977,980 **** --- 977,983 ---- tag := `new/HTML/Tag`(["inputhidden","name" = nam]); fi; + # KM + tag['AddContents',"\n"]; + # END KM html := [op(html),eval(tag)]; od; *************** *** 1000,1006 **** b := subs( 38 = (38, 97, 109, 112, 59), # & 60 = (38, 108, 116, 59), # < ! 62 = (38, 103, 116, 59), # > ! 34 = (38, 113, 117, 111, 116, 59), # " ! b); convert(b,bytes); --- 1003,1009 ---- b := subs( 38 = (38, 97, 109, 112, 59), # & 60 = (38, 108, 116, 59), # < ! 62 = (38, 103, 116, 59), # > ! 34 = (38, 113, 117, 111, 116, 59), # " ! b); convert(b,bytes); *************** *** 1044,1050 **** b := subs( 38 = (38, 97, 109, 112, 59), # & 60 = (38, 108, 116, 59), # < ! 62 = (38, 103, 116, 59), # > ! 34 = (38, 113, 117, 111, 116, 59), # " ! b); convert([34,op(b),34],bytes); --- 1047,1053 ---- b := subs( 38 = (38, 97, 109, 112, 59), # & 60 = (38, 108, 116, 59), # < ! 62 = (38, 103, 116, 59), # > ! 34 = (38, 113, 117, 111, 116, 59), # " ! b); convert([34,op(b),34],bytes); *************** *** 1129,1133 **** proc(cells::list(list)) local extra,header,tableattrib,rowattrib,rowattriblist,caption,msg, ! rowcontent,tablecontent,cell,celltagtype,celltag,a,lhs,rhs,i,j; header := false; --- 1132,1136 ---- proc(cells::list(list)) local extra,header,tableattrib,rowattrib,rowattriblist,caption,msg, ! rowcontent,tablecontent,cell,celltagtype,celltag,a,lhs,rhs,i,j; header := false; Index: ManualConfig.dist =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/ManualConfig.dist,v retrieving revision 1.1.1.1.2.1 retrieving revision 1.1.1.1.2.2 diff -C2 -d -r1.1.1.1.2.1 -r1.1.1.1.2.2 *** ManualConfig.dist 14 Jul 2003 22:51:47 -0000 1.1.1.1.2.1 --- ManualConfig.dist 25 Aug 2003 18:33:23 -0000 1.1.1.1.2.2 *************** *** 129,136 **** # Config['DocumentURL'] # Config['ServletURL'] # Config['WEBINFDir'] # Config['WebAppDir'] # Config['WebDir'] - ###################################################################### --- 129,138 ---- # Config['DocumentURL'] # Config['ServletURL'] + # KM + # Config['TimeLimit'] + # END KM # Config['WEBINFDir'] # Config['WebAppDir'] # Config['WebDir'] ###################################################################### Index: PackageList =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/PackageList,v retrieving revision 1.1.1.1.2.3 retrieving revision 1.1.1.1.2.4 diff -C2 -d -r1.1.1.1.2.3 -r1.1.1.1.2.4 *** PackageList 10 Jul 2003 23:32:09 -0000 1.1.1.1.2.3 --- PackageList 25 Aug 2003 18:33:23 -0000 1.1.1.1.2.4 *************** *** 10,14 **** ImageCache HTML ! LaTeX Local SafeParse --- 10,14 ---- ImageCache HTML ! aim/LaTeX Local SafeParse Index: SafeParse.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/SafeParse.mpl,v retrieving revision 1.1.1.1.2.2 retrieving revision 1.1.1.1.2.3 diff -C2 -d -r1.1.1.1.2.2 -r1.1.1.1.2.3 *** SafeParse.mpl 10 Jul 2003 20:10:03 -0000 1.1.1.1.2.2 --- SafeParse.mpl 25 Aug 2003 18:33:23 -0000 1.1.1.1.2.3 *************** *** 382,385 **** --- 382,388 ---- "StruveH", "StruveL", + # KM + "Sum", + # END KM "WeberE", "WeierstrassP", --- LaTeX.mpl DELETED --- |
From: <mo...@us...> - 2003-08-25 18:37:31
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim/try In directory sc8-pr-cvs1:/tmp/cvs-serv8119 Modified Files: Tag: develop_2_1 Question.mpl Log Message: Many changes. See posting to developers' list. Index: Question.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/try/Question.mpl,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -C2 -d -r1.2.2.1 -r1.2.2.2 *** Question.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 --- Question.mpl 25 Aug 2003 18:37:28 -0000 1.2.2.2 *************** *** 427,431 **** title, "<tr><td>",__("Description:"),"</td>\n", ! "<td>",`LaTeX/Wrap`(question['Description']),"</td></tr>\n"; fi; title := title,"</table>\n"; --- 427,431 ---- title, "<tr><td>",__("Description:"),"</td>\n", ! "<td>",`aim/LaTeX/Wrap`(question['Description']),"</td></tr>\n"; fi; title := title,"</table>\n"; |
From: <mo...@us...> - 2003-08-25 18:36:42
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim/analyze In directory sc8-pr-cvs1:/tmp/cvs-serv7969 Modified Files: Tag: develop_2_1 Question.mpl Log Message: Many changes. See posting to developers' list. Index: Question.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/analyze/Question.mpl,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -C2 -d -r1.2.2.1 -r1.2.2.2 *** Question.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 --- Question.mpl 25 Aug 2003 18:36:39 -0000 1.2.2.2 *************** *** 256,260 **** if analysis = NULL then analysis := ! eval(`aim/Question/Analyze`(quiz['RootDir'],questionname)); if not(type([analysis],[`aim/Question/Analysis`])) then --- 256,263 ---- if analysis = NULL then analysis := ! # KM ! # DIST eval(`aim/Question/Analyze`(quiz['RootDir'],questionname)); ! eval(`aim/Question/Analyze`(quiz['RootDir'],questionname,partlabel)); ! # END KM if not(type([analysis],[`aim/Question/Analysis`])) then |
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim In directory sc8-pr-cvs1:/tmp/cvs-serv7612 Modified Files: Tag: develop_2_1 Compile.mpl Diff.mpl Functions.mpl Int.mpl Matrix.mpl MatrixQuestion.mpl MCQuestion.mpl Question.mpl Quiz.mpl Subject.mpl TextQuestion.mpl Trig.mpl Util.mpl Util1.mpl Added Files: Tag: develop_2_1 LaTeX.mpl Log Message: Many changes. See posting to developers' list. --- NEW FILE: LaTeX.mpl --- # @(#)$Id: LaTeX.mpl,v 1.1.2.1 2003/08/25 18:35:11 monks Exp $ read("Package.mpl"): Package("aim/LaTeX"," This package defines various utilities for generating LaTeX, extending and modifying the standard Maple @latex()@ function. <br/><br/> One issue is that @latex(e)@ prints a LaTeX representation of e and returns @NULL@. We instead define a function @`aim/LaTeX`(e)@ that prints nothing and returns a LaTeX representation of e as a string. <br/><br/> The LaTeX code produced by this package is intended to be passed to <a href='http://hutchinson.belmont.ma.us/tth/'>TtH</a> for translation to HTML. Because of this we modify a number of routines to produce output more congenial to TtH. <br/><br/> Eventually, the whole Maple latex library should be replaced by an AIM-adapted version. " ): `Package/Dependencies` = ["Util"]: `Package/Assign`( `latex/latex/function`, "", proc(e) local `(`, `)`, `,`, texlist, lf, `{`, `}`,`\\,`; if 1 < nops(op(0, e)) or type(op(0, e), 'function') and op([0, 0], e) = '`@`' or type(op(0, e), {'`+`', '`*`'}) then texlist := `latex/prinpar`(op(0, e)) elif type(op(0, e), {'string', 'symbol'}) then lf := cat(`latex/`,op(0, e)); if (eval(lf) <> eval(lf,1)) then RETURN(eval(cat(`latex/`,op(0, e))(op(e)))); else texlist := `\\,`,`latex/print`(op(0, e)); fi; else texlist := `\\,`,`latex/print`(op(0, e)); fi; texlist, `latex/latex/commalist`([op(e)], `,`, `(`, `)`) end ): `Package/Assign`( `latex/diff`, "", proc(a, b) local `\\partial `,`\\frac `, `{`, `}`, d, n, A, num,denom,ans, blist, x, y, i, c,short; if nargs < 2 then ERROR(`invalid arguments`) fi; A := a; # the expression to differentiate c := args[2 .. nargs]; # the list of variables wrt which to differentiate # It could happen that A is already a differential expression # like Diff(B,x). If so, we want to remove the differential # operator from A and absorb it into c. blist := NULL; while type(A, function) and member(op(0, A), {'diff', 'Diff'}) do blist := op(2 .. nops(A), A), blist; A := op(1, A) od; blist := [`latex/latex/reverse`(c, blist)]; # blist is now the (possibly expanded) list of variables # wrt which to differentiate. # denom is the denominator of the differential operator # eg for Diff(f(x,y),x,x,y), denom would be a list of names # that would concatenate to give {dx^2 dy}. denom := `{`; x := blist[1]; n := 0; for y in blist do if y = x then n := n + 1; next fi; denom := denom, d, `latex/print`(x^n); x := y; n := 1 od; denom := denom, d, `latex/print`(y^n), `}`; # If A is now a single character name (eg 'y') then # we put short = true and format the derivative like # \frac{dy}{dx}. If A is anything more complicated (eg 'f(x)') # we put short = false and format the derivative like # \frac{d}{dx} f(x). short := evalb(type([A],[symbol]) and length(convert(A,string)) = 1); num := `\\frac `, `{`, d; if 1 < nops(blist) then num := num, `^`, `{`, `latex/print`(nops(blist)), `}`; fi; if short then num := num, `latex/print`(A); fi; num := num, `}`; ans := num,denom; if not(short) then ans := `{`,ans,`}`; if type(A, {'function', 'name'}) then ans := ans, `latex/print`(A) else ans := ans, `latex/latex/prinpar`(A) fi; fi; if 1 < nops(indets(A, name)) then RETURN(op(subs(d = `\\partial `, [ans]))) else RETURN(ans) fi end ): `Package/Assign`( `latex/latex/**`, "This function overrides the default Maple routine for LaTeX'ing powers, to prevent conversion of x^(1/n) to \\sqrt[n]{x}. This is necessary because TtH cannot render \\sqrt[n]{x} very well.", proc (e::anything) local texlist,`[`,`\\frac `,`\\sqrt `,`]`,`{`,`}`; texlist := NULL; if type(op(2,e),'fraction') and abs(op([2, 1],e)) = 1 and abs(op([2, 2],e)) < 10 and op(2,e) < 0 then texlist:=texlist,`{`,`\\frac`,`{`,1,`}`,`{`,`latex/print`(1/e),`}`,`}` elif type(op(1,e),{name,numeric}) and op(2,e) = 1/2 then texlist := `\\sqrt `,`{`,`latex/print`(op(1,e)),`}`; else if type(op(1,e),{'`+`','`*`','`^`','function','series','fraction','negative'}) then texlist:=texlist,`latex/latex/prinpar`(op(1,e)) else texlist:=texlist,`{`,`latex/print`(op(1,e)),`}` fi; texlist:=texlist,`^`,`{`,`latex/print`(op(2,e)),`}` fi; texlist end ): `Package/Assign`( `latex/latex/matrix`, "This function overrides the default Maple routine for LaTeX'ing matrices. The sole change is that one line has been modifed to prevent the insertion of extra whitespace that confuses TtH. ", proc(e) local i, j, m, n, texlist, `&`, `\\\\`, `\\mbox `, `?`, `\\end `, `\\right `, `]`, `[`, `\\begin `, `\\left `, c; option `Copyright (c) 1992 by the University of Waterloo. All rights reserved.`; m := linalg['rowdim'](e); n := linalg['coldim'](e); texlist := `\\left `, `[`, `latex/latex/copy`(cat(`\\begin `, `{`, 'array', `}`)), `{`,(`latex/latex/copy`(cat(c $ n))),`} `; for i to m do if not has(e[i, 1], e) then texlist := texlist, `latex/print`(e[i, 1]) else texlist := texlist, `latex/latex/undefined_entry`(e, i, j) fi; for j from 2 to n do if not has(e[i, j], e) then texlist := texlist, `&`, `latex/print`(e[i, j]) else texlist := texlist, `&`, `latex/latex/undefined_entry`(e, i, j) fi od; if i <> m then texlist := texlist, `\\\\` fi od; texlist := texlist, `latex/latex/copy`(cat(`\\end `, `{`, 'array', `}`)), `\\right `, `]` end ): `Package/Assign`( `latex/`, "The purpose of this function is to give control over bracketing when expressions are LaTeX'ed. If we evaluate something like @`aim/LaTeX`(a + ``(b + c))@, then, via a call to this function, we get @\"a + (b + c)\"@, whereas @`aim/LaTeX`(a + (b + c))@ just gives @\"a + b + c\"@. ", proc() local `(`,`)`; `latex/latex/commalist`([args], `,`, `(`, `)`); end ): `Package/Assign`( `latex/latex/symbol`, "", proc(QQ) local texlist, s,n,`{`, `}`, `\\_`; option system, remember; if assigned(`latex/special_names`[cat(``,QQ)]) then texlist := `latex/special_names`[cat(``,QQ)] elif member(QQ, eval(`latex/greek`, 1)) then texlist := `latex/latex/copy`(cat(`\\`,QQ)) else texlist := `latex/latex/copy`(QQ); s := convert(texlist,string); if s <> "" and substring(s,1..1) = "&" then s := substring(s,2..-1); n := convert(s,name); texlist := `latex/latex/copy`(n); fi; fi; RETURN(texlist); end ): `Package/Assign`( `latex/latex/*`, "", proc(e) local subexp, den, ee, subee, i, num, texlist, lnum,lden, `\\,`, `\\frac `, `\\sqrt `, `{`, `}`; global _LatexSmallFractionConstant; option `Copyright (c) 1992 by the University of Waterloo. All rights reserved.`; if type(op(1, e), 'numeric') and op(1, e) < 0 then RETURN(`latex/latex/copy`('`-`'), `latex/print`(-e)) fi; if type(op(1, e), 'numeric') then i := _LatexSmallFractionConstant; _LatexSmallFractionConstant := 50; texlist := `latex/print`(op(1, e)), `\\,`, `latex/print`(subsop(1 = 1, e)) ; _LatexSmallFractionConstant := i; RETURN(texlist) fi; texlist := NULL; num := 1; den := 1; ee := e; for subee in [op(ee)] do if type(subee, 'fraction') then num := num*op(1, subee); den := den*op(2, subee) elif type(subee, '`^`') and type(op(2, subee), 'rational') and op(2, subee) < 0 then if type(subee,table) then den := den/op(subee) else den := den/subee fi else if type(subee,table) then num := num*op(subee) else num := num*subee fi fi od; if den <> 1 then if type(num, '`latex/istall`') or type(den, '`latex/istall`') then if num <> 1 then texlist := `latex/print`(num); if type(num, `+`) then texlist := `\\left(`, texlist, `\\right)` fi else texlist := NULL fi; if type(den, '`*`') then den := [op(den)] else den := [den] fi; for subexp in den do texlist := texlist, `latex/print`(1/subexp) od; texlist else lnum := `if`(type(num,table), `latex/print`(op(num)), `latex/print`(num)); lden := `if`(type(den,table), `latex/print`(op(den)), `latex/print`(den)); texlist := texlist, `{`, '`\\frac `', '`{`', lnum, '`}`', '`{`', lden, '`}`', `}`; fi else i := 1; for subee in ee do if type(subee, {'series', '`+`'}) then texlist := texlist, `latex/latex/prinpar`(subee) elif i < nops(ee) and type(subee, 'function') and member(op(0, subee), {diff, Diff}) then texlist := texlist, `latex/latex/prinpar`(subee) elif type(subee,table) then texlist := texlist,`latex/print`(op(subee)); else texlist := texlist, `latex/print`(subee) fi; if i < nops(ee) and ( i = 1 and type(op(1, ee), 'integer') or type(subee, '`!`') or type(subee, {'string', 'symbol'}) and 1 < length(subee) or has([`latex/print`(subee)], '`\\sqrt `')) then texlist := texlist, `\\,` fi; i := i + 1 od fi; RETURN(texlist) end ): `Package/Assign`( `aim/LaTeX/trim`::string, "Maple's latex routines insert whitespace in things like \"\\begin {\", \"\\end {\", \"\\left [\" and \"\\right [\". TtH objects to such whitespace, so this function removes it. ", proc(s) local t; t := convert(s,string); if t = "\\left " then t := "\\left"; elif t = "\\right " then t := "\\right"; elif substring(t,1..8) = "\\begin {" then t := cat("\\begin{",substring(t,9..-1)); elif substring(t,1..6) = "\\end {" then t := cat("\\end{",substring(t,7..-1)); fi; t; end ): ###################################################################### `Package/Assign`( `aim/LaTeX`::string, "Return a string of LaTeX representing @e@", proc(e::anything) local texlist,err; if nargs = 0 then RETURN("NULL"); elif nargs > 1 then RETURN(`Util/CommaJoin`(op(map(`aim/LaTeX`,[args])))); else texlist := traperror([`latex/print`(eval(e))]); if texlist = lasterror then err := sprintf("%A",e); if (length(err) > 20) then err := cat(substring(err,1..20),"..."); fi; err := cat(__("Maple to LaTeX error: "),err); RETURN(err); fi; texlist := map(`aim/LaTeX/trim`,texlist); cat(op(texlist)); fi; end ): ###################################################################### `Package/Assign`(`aim/LaTeX/Subs`::string, "This procedure converts all its arguments to strings and concatenates them to form a string @s@. It then searches @s@ for Maple expressions enclosed in @@...@@ or @@<...>@@. Expressions enclosed in @@...@@ are replaced by their LaTeX representations. Those enclosed in @@<...>@@ are converted to strings using @sprintf(\"%A\",..)@. The result is returned. ", proc() local s,len,out,start,maplestart,mapleend,expr,evexp,err; s := cat(op(map((x) -> sprintf("%A",x),[args]))); len := length(s); start := 1; out := NULL; maplestart := 0; mapleend := 0; while true do if start <= len then maplestart := SearchText("@",s,start..-1); else maplestart := 0; fi; if maplestart = 0 then out := out,substring(s,start..-1); RETURN(cat(out)); fi; maplestart := maplestart + start - 1; if maplestart < len then mapleend := SearchText("@",s,maplestart+1..-1); else mapleend := 0; fi; if mapleend = 0 then ERROR(cat("Unmatched @ in LaTeX/Subs(",s,")\n")); fi; mapleend := mapleend + maplestart; out := out,substring(s,start..(maplestart-1)); expr := substring(s,(maplestart+1)..(mapleend-1)); if length(expr) > 1 and substring(expr,1..1) = "<" and substring(expr,-1..-1) = ">" then evexp := traperror(eval(`Util/Parse`(substring(expr,2..-2),err,0))); if (evexp = lasterror) then out := out,"</latex>\n<br/>\n<font color='red'>", __("Substitution error in Util/Parse"), "</font><br/>\n<latex>", sprintf("\n<br/>\n%s\n<br/><br/>\n%s\n<br/><br/>\n",err[1],err[3]); else out := out,evexp; fi; else evexp := traperror(eval(`Util/Parse`(expr,err,0))); if (evexp = lasterror) then out := out,"\n<br/>\n<font color='red'>", __("Substitution error in Util/Parse"), "</font><br/>\n", sprintf("\n<br/>\n%s\n<br/><br/>\n%s\n<br/><br/>\n",err[1],err[3]); else out := out,`aim/LaTeX`(evexp); fi; fi; start := mapleend+1; od; end ): ###################################################################### `Package/Assign`( `aim/LaTeX/Wrap`::string, "Return @s@ wrapped in <latex>..</latex>, unless it is already so wrapped, in which case just return @s@.", proc(s::string) if length(s) >= 7 and substring(s,1..7) = "<latex>" then s; else cat("<latex>",s,"</latex>"); fi; end ): ###################################################################### `Package/Assign`( `aim/LaTeX/Display`::string, "Convert all arguments to latex strings, join them with commas, add \\[...\\] to give a displayed equation, and wrap it in <latex>..</latex>", proc() cat("<latex>\\[", `Util/CommaJoin`(op(map(`aim/LaTeX`,[args]))), "\\]</latex>\n"); end ): ###################################################################### `Package/Assign`( `aim/LaTeX/DisplayParse`::string, "Parse @s@ to give a Maple expression @e@, convert to LaTeX, add \\[...\\] to give a displayed equation, and wrap it in <latex>..</latex>", proc(s::string) cat("<latex>\\[",`aim/LaTeX`(`Util/Parse`(s)),"\\]</latex>\n"); end ): ###################################################################### `Package/Assign`( `aim/LaTeX/WrapSubs`::string, "", proc() `aim/LaTeX/Wrap`(`aim/LaTeX/Subs`(args)); end ): ###################################################################### `Package/Assign`( `aim/LaTeX/Squash`::string, "Merge together any adjacent <latex>..</latex> tags in @s@. This makes for more efficient translation by TtH.", proc(s::evaln(string)) s := `Util/ReplaceSubstring`("</latex><latex>" = "",eval(s)); end ): ###################################################################### # KM # KM GG's suggestion for fixing the conflict with LaTeX in Maple 9 if Config['MapleVersion'] <= 8 then `Package/Assign`(`LaTeX/trim` ,"", `aim/LaTeX/trim`): `Package/Assign`(LaTeX ,"", `aim/LaTeX`): `Package/Assign`(`LaTeX/Subs` ,"", `aim/LaTeX/Subs`): `Package/Assign`(`LaTeX/Wrap` ,"", `aim/LaTeX/Wrap`): `Package/Assign`(`LaTeX/Display` ,"", `aim/LaTeX/Display`): `Package/Assign`(`LaTeX/DisplayParse`,"", `aim/LaTeX/DisplayParse`): fi; # END KM ###################################################################### EndPackage(): Index: Compile.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/Compile.mpl,v retrieving revision 1.2.2.5 retrieving revision 1.2.2.6 diff -C2 -d -r1.2.2.5 -r1.2.2.6 *** Compile.mpl 23 Aug 2003 16:27:43 -0000 1.2.2.5 --- Compile.mpl 25 Aug 2003 18:35:11 -0000 1.2.2.6 *************** *** 179,183 **** partlabel_::string ) ! global MPROC_,IPROC,IPROCSTRING; local question,line,flag,text,solstarted,solended, qtype,value,keywords,aimlocals,ansvar, --- 179,186 ---- partlabel_::string ) ! # KM ! # DIST global MPROC_,IPROC,IPROCSTRING; ! global MPROC_,IPROC,IPROCSTRING,Config; ! # END local question,line,flag,text,solstarted,solended, qtype,value,keywords,aimlocals,ansvar, *************** *** 209,213 **** answertest := ""; typespec := NULL; ! tlimit := 2.0; setans := ""; --- 212,220 ---- answertest := ""; typespec := NULL; ! ! # KM ! # DIST tlimit := 2.0; ! tlimit := Config['TimeLimit']; ! # END setans := ""; *************** *** 424,432 **** elif flag = "prompt>" then setprompt := ! sprintf("questionversion['Prompt'] := `LaTeX/WrapSubs`(%a);\n",text); ########## elif flag = "postprompt>" then setpost := ! sprintf("questionversion['PostPrompt'] := `LaTeX/WrapSubs`(%a);\n",text); ########## elif flag = "mapletype>" then --- 431,439 ---- elif flag = "prompt>" then setprompt := ! sprintf("questionversion['Prompt'] := `aim/LaTeX/WrapSubs`(%a);\n",text); ########## elif flag = "postprompt>" then setpost := ! sprintf("questionversion['PostPrompt'] := `aim/LaTeX/WrapSubs`(%a);\n",text); ########## elif flag = "mapletype>" then *************** *** 843,847 **** partlabel_::string ) ! global IPROC,IPROCSTRING; local question,line,flag,text,solstarted,solended, keywords,aimlocals,params,setnote,printvar, --- 850,857 ---- partlabel_::string ) ! # KM ! # DIST global IPROC,IPROCSTRING; ! global IPROC,IPROCSTRING,Config; ! # END KM local question,line,flag,text,solstarted,solended, keywords,aimlocals,params,setnote,printvar, *************** *** 862,866 **** keywords := NULL; shft := NULL; ! tlimit := 2.0; aimlocals := NULL; params := table(); --- 872,879 ---- keywords := NULL; shft := NULL; ! # KM ! # DIST tlimit := 2.0; ! tlimit := Config['TimeLimit']; ! # END KM aimlocals := NULL; params := table(); Index: Diff.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/Diff.mpl,v retrieving revision 1.2.2.2 retrieving revision 1.2.2.3 diff -C2 -d -r1.2.2.2 -r1.2.2.3 *** Diff.mpl 18 Jul 2003 07:24:46 -0000 1.2.2.2 --- Diff.mpl 25 Aug 2003 18:35:11 -0000 1.2.2.3 *************** *** 196,200 **** sprintf( __("Put \\[ %A = %s, \\] so you were asked to evaluate \n\\[ %s . \\]\n"), ! fn,LaTeX(f),LaTeX(Diff(fn,var))); else fn := q['FunctionName']; --- 196,200 ---- sprintf( __("Put \\[ %A = %s, \\] so you were asked to evaluate \n\\[ %s . \\]\n"), ! fn,`aim/LaTeX`(f),`aim/LaTeX`(Diff(fn,var))); else fn := q['FunctionName']; *************** *** 235,239 **** so \\[ %A = %s = %s. \\]"), ! newvar,LaTeX(h),fn,LaTeX(f),LaTeX(g)), "\n", sprintf( --- 235,239 ---- so \\[ %A = %s = %s. \\]"), ! newvar,`aim/LaTeX`(h),fn,`aim/LaTeX`(f),`aim/LaTeX`(g)), "\n", sprintf( *************** *** 241,251 **** \\[ %s = %s = %s, \\] which is your answer.\n"), ! LaTeX(Diff(fn,newvar)), ! LaTeX(diff(g,newvar)), ! LaTeX(wrongans)), "\n", sprintf( __("But this is $%s$, not $%s$."), ! TextStyle(LaTeX(Diff(fn,newvar))),TextStyle(LaTeX(Diff(fn,var))))); feedback := feedback,"<latex>\n",msg,"</latex>\n"; fi; --- 241,251 ---- \\[ %s = %s = %s, \\] which is your answer.\n"), ! `aim/LaTeX`(Diff(fn,newvar)), ! `aim/LaTeX`(diff(g,newvar)), ! `aim/LaTeX`(wrongans)), "\n", sprintf( __("But this is $%s$, not $%s$."), ! TextStyle(`aim/LaTeX`(Diff(fn,newvar))),TextStyle(`aim/LaTeX`(Diff(fn,var))))); feedback := feedback,"<latex>\n",msg,"</latex>\n"; fi; *************** *** 274,282 **** \\[ %s = %s = %s. \\] "), ! expvar,LaTeX(expt), ! fn,LaTeX(f),LaTeX(var^expvar), ! LaTeX(Diff(fn,var)), ! LaTeX(expvar * var^(expvar -1)), ! LaTeX(wrongans)), "\n", sprintf( --- 274,282 ---- \\[ %s = %s = %s. \\] "), ! expvar,`aim/LaTeX`(expt), ! fn,`aim/LaTeX`(f),`aim/LaTeX`(var^expvar), ! `aim/LaTeX`(Diff(fn,var)), ! `aim/LaTeX`(expvar * var^(expvar -1)), ! `aim/LaTeX`(wrongans)), "\n", sprintf( *************** *** 287,292 **** "), expvar,var, ! LaTeX(Diff(var^expvar,var)), ! LaTeX(expvar * var^(expvar-1)))); else newvar := --- 287,292 ---- "), expvar,var, ! `aim/LaTeX`(Diff(var^expvar,var)), ! `aim/LaTeX`(expvar * var^(expvar-1)))); else newvar := *************** *** 307,316 **** \\[ %s = %s = %s. \\] "), ! newvar,LaTeX(base), ! expvar,LaTeX(expt), ! fn,LaTeX(f),LaTeX(newvar^expvar), ! LaTeX(Diff(fn,var)), ! LaTeX(expvar * newvar^(expvar -1) * Diff(newvar,var)), ! LaTeX(wrongans)), "\n", sprintf( --- 307,316 ---- \\[ %s = %s = %s. \\] "), ! newvar,`aim/LaTeX`(base), ! expvar,`aim/LaTeX`(expt), ! fn,`aim/LaTeX`(f),`aim/LaTeX`(newvar^expvar), ! `aim/LaTeX`(Diff(fn,var)), ! `aim/LaTeX`(expvar * newvar^(expvar -1) * Diff(newvar,var)), ! `aim/LaTeX`(wrongans)), "\n", sprintf( *************** *** 341,354 **** \\[ %A = %s = %s. \\] "), ! newvar,LaTeX(base),fn,LaTeX(f),LaTeX(newvar^expt)), sprintf( __("Then \\[ %s = %s = %s, \\] which is your answer.\n"), ! LaTeX(Diff(fn,newvar)), ! LaTeX(expt * newvar^(expt - 1)), ! LaTeX(wrongans)), "\n", sprintf( __("But this is $%s$, not $%s$."), ! LaTeX(Diff(fn,newvar)),LaTeX(Diff(fn,var)))); feedback := feedback,"<latex>\n",msg,"</latex>\n"; fi; --- 341,354 ---- \\[ %A = %s = %s. \\] "), ! newvar,`aim/LaTeX`(base),fn,`aim/LaTeX`(f),`aim/LaTeX`(newvar^expt)), sprintf( __("Then \\[ %s = %s = %s, \\] which is your answer.\n"), ! `aim/LaTeX`(Diff(fn,newvar)), ! `aim/LaTeX`(expt * newvar^(expt - 1)), ! `aim/LaTeX`(wrongans)), "\n", sprintf( __("But this is $%s$, not $%s$."), ! `aim/LaTeX`(Diff(fn,newvar)),`aim/LaTeX`(Diff(fn,var)))); feedback := feedback,"<latex>\n",msg,"</latex>\n"; fi; Index: Functions.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/Functions.mpl,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -C2 -d -r1.2.2.1 -r1.2.2.2 *** Functions.mpl 10 Jul 2003 20:10:03 -0000 1.2.2.1 --- Functions.mpl 25 Aug 2003 18:35:11 -0000 1.2.2.2 *************** *** 125,129 **** "The function $%s$ is equal to $%s$ when $x = %s$, but the function $%s$ is not.", ! A,LaTeX(b),LaTeX(a),B); end, a,b) --- 125,129 ---- "The function $%s$ is equal to $%s$ when $x = %s$, but the function $%s$ is not.", ! A,`aim/LaTeX`(b),`aim/LaTeX`(a),B); end, a,b) *************** *** 143,147 **** "The function $%s$ is flat (ie the derivative is zero) when $x = %s$, but the function $%s$ is not.", ! A,LaTeX(a),B); end, a) --- 143,147 ---- "The function $%s$ is flat (ie the derivative is zero) when $x = %s$, but the function $%s$ is not.", ! A,`aim/LaTeX`(a),B); end, a) *************** *** 165,169 **** "The function $%s$ is finite and continuous at $x = %s$, but the function $%s$ is not.", ! A,LaTeX(a),B); end, a) --- 165,169 ---- "The function $%s$ is finite and continuous at $x = %s$, but the function $%s$ is not.", ! A,`aim/LaTeX`(a),B); end, a) *************** *** 187,191 **** "The function $%s$ is strictly positive $x = %s$, but the function $%s$ is not.", ! A,LaTeX(a),B); end, a) --- 187,191 ---- "The function $%s$ is strictly positive $x = %s$, but the function $%s$ is not.", ! A,`aim/LaTeX`(a),B); end, a) *************** *** 209,213 **** "The function $%s$ is strictly negative $x = %s$, but the function $%s$ is not.", ! A,LaTeX(a),B); end, a) --- 209,213 ---- "The function $%s$ is strictly negative $x = %s$, but the function $%s$ is not.", ! A,`aim/LaTeX`(a),B); end, a) *************** *** 230,234 **** "The function $%s$ repeats with period $%s$, but the function $%s$ does not.", ! A,LaTeX(a),B); end, a) --- 230,234 ---- "The function $%s$ repeats with period $%s$, but the function $%s$ does not.", ! A,`aim/LaTeX`(a),B); end, a) *************** *** 264,268 **** "The function $%s$ is always less than or equal to $%s$, but this is not true for $%s$", ! A,LaTeX(a),B); fi; end, --- 264,268 ---- "The function $%s$ is always less than or equal to $%s$, but this is not true for $%s$", ! A,`aim/LaTeX`(a),B); fi; end, *************** *** 300,304 **** "The function $%s$ is always greater than or equal to $%s$, but this is not true for $%s$", ! A,LaTeX(a),B); fi; end, --- 300,304 ---- "The function $%s$ is always greater than or equal to $%s$, but this is not true for $%s$", ! A,`aim/LaTeX`(a),B); fi; end, *************** *** 388,394 **** if (u and not(v)) then ! m := msg("f(x)",LaTeX(g),args[5..-1]); else ! m := msg(LaTeX(g),"f(x)",args[5..-1]); fi; --- 388,394 ---- if (u and not(v)) then ! m := msg("f(x)",`aim/LaTeX`(g),args[5..-1]); else ! m := msg(`aim/LaTeX`(g),"f(x)",args[5..-1]); fi; Index: Int.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/Int.mpl,v retrieving revision 1.2.2.2 retrieving revision 1.2.2.3 diff -C2 -d -r1.2.2.2 -r1.2.2.3 *** Int.mpl 19 Jul 2003 17:37:34 -0000 1.2.2.2 --- Int.mpl 25 Aug 2003 18:35:11 -0000 1.2.2.3 *************** *** 193,201 **** feedback, __("The derivative of your answer should be equal to the function that you were asked to integrate, which was:"), ! "\n",`LaTeX/Display`(integrand),"\n", __("In fact, the derivative of your answer is:"), "\n", sprintf("<latex>\\[\\frac{d}{d%a}\\bigl(%s\\bigr) = %s\\]</latex>", ! var,LaTeX(ans),LaTeX(simplifyabs(diff(ans,var)))), "\n", __("so you must have done something wrong."), --- 193,201 ---- feedback, __("The derivative of your answer should be equal to the function that you were asked to integrate, which was:"), ! "\n",`aim/LaTeX/Display`(integrand),"\n", __("In fact, the derivative of your answer is:"), "\n", sprintf("<latex>\\[\\frac{d}{d%a}\\bigl(%s\\bigr) = %s\\]</latex>", ! var,`aim/LaTeX`(ans),`aim/LaTeX`(simplifyabs(diff(ans,var)))), "\n", __("so you must have done something wrong."), *************** *** 341,354 **** if member(convert(x,string),V['Extra']) then feedback := ! `LaTeX/Wrap`( sprintf( __("#Explain definite ($%s$,$%s$,$%s$,%a,$%s$,%a,$%s$,%a)"), ! LaTeX(q['Integrand']), ! LaTeX(x = u), ! LaTeX(x = v), x, ! LaTeX(Int(x^4,x)=x^4/4), x, ! LaTeX(Int(x^4,x=0..2)=4), x )); --- 341,354 ---- if member(convert(x,string),V['Extra']) then feedback := ! `aim/LaTeX/Wrap`( sprintf( __("#Explain definite ($%s$,$%s$,$%s$,%a,$%s$,%a,$%s$,%a)"), ! `aim/LaTeX`(q['Integrand']), ! `aim/LaTeX`(x = u), ! `aim/LaTeX`(x = v), x, ! `aim/LaTeX`(Int(x^4,x)=x^4/4), x, ! `aim/LaTeX`(Int(x^4,x=0..2)=4), x )); *************** *** 387,391 **** cat( "\\int_{", NiceFrac(a, 1, "textstyle"), "}", "^{", NiceFrac(b, 1, "textstyle"), "} ", ! LaTeX( op(1, q['Integral']) ), " d", LaTeX( q['Variable'] ) ); end ): --- 387,391 ---- cat( "\\int_{", NiceFrac(a, 1, "textstyle"), "}", "^{", NiceFrac(b, 1, "textstyle"), "} ", ! `aim/LaTeX`( op(1, q['Integral']) ), " d", `aim/LaTeX`( q['Variable'] ) ); end ): *************** *** 424,438 **** L0 := cat( "\\int", limits, " ", ! LaTeX( op(1, q['Integral']) ), " d", LaTeX(x) ); ! LaTeXF := LaTeX(F); L1 := `if`( evalb( SearchText("frac", LaTeXF) > 0 ), cat("\\left[ ", LaTeXF, " \\right]", limits), cat("\\bigl[ ", LaTeXF, " \\bigr]", limits) ); ! L2 := cat( "\\left(", LaTeX(Fb), "\\right) - ", ! "\\left(", LaTeX(Fa), "\\right)"); ! L3 := LaTeX(Fb - Fa); --- 424,438 ---- L0 := cat( "\\int", limits, " ", ! `aim/LaTeX`( op(1, q['Integral']) ), " d", `aim/LaTeX`(x) ); ! LaTeXF := `aim/LaTeX`(F); L1 := `if`( evalb( SearchText("frac", LaTeXF) > 0 ), cat("\\left[ ", LaTeXF, " \\right]", limits), cat("\\bigl[ ", LaTeXF, " \\bigr]", limits) ); ! L2 := cat( "\\left(", `aim/LaTeX`(Fb), "\\right) - ", ! "\\left(", `aim/LaTeX`(Fa), "\\right)"); ! L3 := `aim/LaTeX`(Fb - Fa); *************** *** 443,447 **** # simplification, provided that the question is correct. if (Fb - Fa <> q['RightAnswer']) then ! s := cat(s,"\\\\ &= ", LaTeX(q['RightAnswer'])); fi; --- 443,447 ---- # simplification, provided that the question is correct. if (Fb - Fa <> q['RightAnswer']) then ! s := cat(s,"\\\\ &= ", `aim/LaTeX`(q['RightAnswer'])); fi; *************** *** 482,494 **** err2 := err1 * dxdu; ! Lx := LaTeX(x); ! Lu := LaTeX(u); ! Lf := LaTeX(f); ! Lg := LaTeX(g); ! LU := LaTeX(U); ! LF := LaTeX(F); ! Ldxdu := LaTeX(dxdu); ! Lerr1 := LaTeX(err1); ! Lerr2 := LaTeX(err2); if `aim/TestSymbolic`(ans,err1) then --- 482,494 ---- err2 := err1 * dxdu; ! Lx := `aim/LaTeX`(x); ! Lu := `aim/LaTeX`(u); ! Lf := `aim/LaTeX`(f); ! Lg := `aim/LaTeX`(g); ! LU := `aim/LaTeX`(U); ! LF := `aim/LaTeX`(F); ! Ldxdu := `aim/LaTeX`(dxdu); ! Lerr1 := `aim/LaTeX`(err1); ! Lerr2 := `aim/LaTeX`(err2); if `aim/TestSymbolic`(ans,err1) then *************** *** 503,509 **** "\n", "\\[ ", ! LaTeX(q['Integral']), " = ", ! LaTeX(Int(f,u)), " = ", LF, --- 503,509 ---- "\n", "\\[ ", ! `aim/LaTeX`(q['Integral']), " = ", ! `aim/LaTeX`(Int(f,u)), " = ", LF, *************** *** 525,529 **** __("The integral becomes"),"\n", "\\[ ", ! LaTeX(q['Integral']), " = ", sprintf("\\int %s \\frac{d%s}{d%s} d%s",Lf,Lx,Lu,Lu), --- 525,529 ---- __("The integral becomes"),"\n", "\\[ ", ! `aim/LaTeX`(q['Integral']), " = ", sprintf("\\int %s \\frac{d%s}{d%s} d%s",Lf,Lx,Lu,Lu), Index: Matrix.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/Matrix.mpl,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -C2 -d -r1.2.2.1 -r1.2.2.2 *** Matrix.mpl 10 Jul 2003 20:10:03 -0000 1.2.2.1 --- Matrix.mpl 25 Aug 2003 18:35:11 -0000 1.2.2.2 *************** *** 29,33 **** s := "<latex>\\begin{eqnarray*}\n"; for i from 1 to nops(u) do ! s := s,LaTeX(u[i])," &= ",LaTeX(v[i])," \\\\\n"; od; s := cat(s,"\\end{eqnarray*}</latex>\n"); --- 29,33 ---- s := "<latex>\\begin{eqnarray*}\n"; for i from 1 to nops(u) do ! s := s,`aim/LaTeX`(u[i])," &= ",`aim/LaTeX`(v[i])," \\\\\n"; od; s := cat(s,"\\end{eqnarray*}</latex>\n"); *************** *** 344,348 **** feedback := feedback,"<td>"; fi; ! feedback := feedback,"<latex>$$",LaTeX(A0[i,j]),"$$</latex>\n </td>"; od; feedback := feedback," </tr>\n"; --- 344,348 ---- feedback := feedback,"<td>"; fi; ! feedback := feedback,"<latex>$$",`aim/LaTeX`(A0[i,j]),"$$</latex>\n </td>"; od; feedback := feedback," </tr>\n"; *************** *** 360,364 **** feedback := feedback,"<td>"; fi; ! feedback := feedback,"<latex>$$",LaTeX(A0[i]),"$$</latex></td></tr>\n"; od; feedback := feedback,"</table></center>\n<br/>\n"; --- 360,364 ---- feedback := feedback,"<td>"; fi; ! feedback := feedback,"<latex>$$",`aim/LaTeX`(A0[i]),"$$</latex></td></tr>\n"; od; feedback := feedback,"</table></center>\n<br/>\n"; *************** *** 371,373 **** ###################################################################### ! EndPackage(): \ No newline at end of file --- 371,373 ---- ###################################################################### ! EndPackage(): Index: MatrixQuestion.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/MatrixQuestion.mpl,v retrieving revision 1.2.2.2 retrieving revision 1.2.2.3 diff -C2 -d -r1.2.2.2 -r1.2.2.3 *** MatrixQuestion.mpl 23 Aug 2003 16:13:38 -0000 1.2.2.2 --- MatrixQuestion.mpl 25 Aug 2003 18:35:11 -0000 1.2.2.3 *************** *** 139,146 **** local attempt,err,rawans,rawlines,rawcells, isempty,warmans,cookedans,e,f,tlimit; ! tlimit := this['TimeLimit']; if not(type([tlimit],[numeric])) then ! tlimit := 2.0; fi; --- 139,152 ---- local attempt,err,rawans,rawlines,rawcells, isempty,warmans,cookedans,e,f,tlimit; ! # KM ! global Config; ! # END KM ! tlimit := this['TimeLimit']; if not(type([tlimit],[numeric])) then ! # KM ! # DIST tlimit := 2.0; ! tlimit := Config['TimeLimit']; ! # END KM fi; *************** *** 224,227 **** --- 230,236 ---- local savedframe,attempt,mapletype,err,msg,ans,rightans, ok,rawmark,tlimit; + # KM + global Config; + # END KM attempt := eval(`aim/Question/MakeAttempt`(x)); *************** *** 256,260 **** tlimit := this['TimeLimit']; if not(type([tlimit],[numeric])) then ! tlimit := 2.0; fi; --- 265,272 ---- tlimit := this['TimeLimit']; if not(type([tlimit],[numeric])) then ! # KM ! # DIST tlimit := 2.0; ! tlimit := Config['TimeLimit']; ! # END KM fi; *************** *** 270,275 **** attempt['SetMarkingError', sprintf(__("Error in %s: %s"), ! lastexception[1], ! StringTools[FormatMessage]( lastexception[ 2 .. -1 ] ))]; RETURN(eval(attempt)); end try; --- 282,287 ---- attempt['SetMarkingError', sprintf(__("Error in %s: %s"), ! lastexception[1], ! StringTools[FormatMessage]( lastexception[ 2 .. -1 ] ))]; RETURN(eval(attempt)); end try; *************** *** 303,307 **** if cell = lasterror then cell := ""; fi; rawans := rawans,cell; ! if j < numcols then rawans := rawans,"|"; fi; od; if i < numrows then rawans := rawans,"\n"; fi; --- 315,319 ---- if cell = lasterror then cell := ""; fi; rawans := rawans,cell; ! if j < numcols then rawans := rawans,"|"; fi; od; if i < numrows then rawans := rawans,"\n"; fi; *************** *** 431,435 **** __("Your last answer was: \n"), "<latex>\\[", ! LaTeX(attempt['Answer']), "\\]</latex>\n<br/>\n" ); --- 443,447 ---- __("Your last answer was: \n"), "<latex>\\[", ! `aim/LaTeX`(attempt['Answer']), "\\]</latex>\n<br/>\n" ); *************** *** 456,460 **** __("The teacher's answer was: "), "\n<latex>\\[", ! LaTeX(rightans), "\\]</latex>\n<br/>\n"); --- 468,472 ---- __("The teacher's answer was: "), "\n<latex>\\[", ! `aim/LaTeX`(rightans), "\\]</latex>\n<br/>\n"); Index: MCQuestion.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/MCQuestion.mpl,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -C2 -d -r1.2.2.1 -r1.2.2.2 *** MCQuestion.mpl 10 Jul 2003 20:10:03 -0000 1.2.2.1 --- MCQuestion.mpl 25 Aug 2003 18:35:11 -0000 1.2.2.2 *************** *** 372,376 **** cat("<latex>",x,"</latex>"); else ! `LaTeX/Display`(x); fi; end --- 372,376 ---- cat("<latex>",x,"</latex>"); else ! `aim/LaTeX/Display`(x); fi; end Index: Question.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/Question.mpl,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -C2 -d -r1.2.2.1 -r1.2.2.2 *** Question.mpl 10 Jul 2003 20:10:03 -0000 1.2.2.1 --- Question.mpl 25 Aug 2003 18:35:11 -0000 1.2.2.2 *************** *** 15,18 **** --- 15,19 ---- `Class/Declare`(`aim/Question`, + ['Field','Name'::string, "The name of the question. This is used as a file name, so it *************** *** 98,102 **** ], ! ['Field','TimeLimit'::numeric = 2.0, "The maximum time allowed for the @IProc@, @SProc@, @MProc@ or @AProc@ procedures to run. --- 99,106 ---- ], ! # KM ! # DIST ['Field','TimeLimit'::numeric = 2.0, ! ['Field','TimeLimit'::numeric = Config['TimeLimit'], ! # END KM "The maximum time allowed for the @IProc@, @SProc@, @MProc@ or @AProc@ procedures to run. *************** *** 439,443 **** IProc procedure of the associated Question.", proc(this) ! global AimImageCache; local question,locals,savedframe,iproc,err,tlimit; --- 443,450 ---- IProc procedure of the associated Question.", proc(this) ! # KM ! # DIST global AimImageCache; ! global AimImageCache,Config; ! # END KM local question,locals,savedframe,iproc,err,tlimit; *************** *** 448,452 **** tlimit := this['TimeLimit']; if not(type([tlimit],[numeric])) then ! tlimit := 2.0; fi; iproc := eval(this['IProc']); --- 455,463 ---- tlimit := this['TimeLimit']; if not(type([tlimit],[numeric])) then ! # KM ! # DIST tlimit := 2.0; ! tlimit := Config['TimeLimit']; ! # END KM ! fi; iproc := eval(this['IProc']); *************** *** 461,466 **** this['Preamble'] := cat("<font color='red'>", ! __("There was an internal error while initializing this question:"), ! "\n<br/>\n",err,"\n</font>\n<br/>\n"); this['Note'] := __("Internal error"); this['InitializationFailed'] := true; --- 472,477 ---- this['Preamble'] := cat("<font color='red'>", ! __("There was an internal error while initializing this question:"), ! "\n<br/>\n",err,"\n</font>\n<br/>\n"); this['Note'] := __("Internal error"); this['InitializationFailed'] := true; *************** *** 548,552 **** proc(this,attempt::`aim/Question/Attempt`) local savedframe, tlimit, mproc, err, msg, rawmark; ! savedframe := `Local/Save`(this['Locals']); `Local/Restore`(this['LocalValues']); --- 559,565 ---- proc(this,attempt::`aim/Question/Attempt`) local savedframe, tlimit, mproc, err, msg, rawmark; ! # KM ! global Config; ! # END savedframe := `Local/Save`(this['Locals']); `Local/Restore`(this['LocalValues']); *************** *** 554,558 **** tlimit := this['TimeLimit']; if not(type([tlimit],[numeric])) then ! tlimit := 2.0; fi; --- 567,574 ---- tlimit := this['TimeLimit']; if not(type([tlimit],[numeric])) then ! # KM ! # DIST tlimit := 2.0; ! tlimit := Config['TimeLimit']; ! # END KM fi; *************** *** 614,618 **** proc(this,attempt::`aim/Question/Attempt`) local savedframe, tlimit, vproc, err, msg, rawmark; ! savedframe := `Local/Save`(this['Locals']); `Local/Restore`(this['LocalValues']); --- 630,636 ---- proc(this,attempt::`aim/Question/Attempt`) local savedframe, tlimit, vproc, err, msg, rawmark; ! # KM ! global Config; ! # END KM savedframe := `Local/Save`(this['Locals']); `Local/Restore`(this['LocalValues']); *************** *** 620,624 **** tlimit := this['TimeLimit']; if not(type([tlimit],[numeric])) then ! tlimit := 2.0; fi; --- 638,645 ---- tlimit := this['TimeLimit']; if not(type([tlimit],[numeric])) then ! # KM ! # DIST tlimit := 2.0; ! tlimit := Config['TimeLimit']; ! # END KM fi; *************** *** 658,662 **** proc(this,history::`aim/Question/History`) local savedframe,err,aproc,tlimit; ! if this['AProc'] <> NULL then history['Mark'] := 0.; --- 679,685 ---- proc(this,history::`aim/Question/History`) local savedframe,err,aproc,tlimit; ! # KM ! global Config; ! # END KM if this['AProc'] <> NULL then history['Mark'] := 0.; *************** *** 668,672 **** tlimit := this['TimeLimit']; if not(type([tlimit],[numeric])) then ! tlimit := 2.0; fi; --- 691,698 ---- tlimit := this['TimeLimit']; if not(type([tlimit],[numeric])) then ! # KM ! # DIST tlimit := 2.0; ! tlimit := Config['TimeLimit']; ! # END KM fi; *************** *** 676,681 **** err := sprintf(__("Error in %s: %s"), ! lastexception[1], ! StringTools[FormatMessage]( lastexception[ 2 .. -1 ] )); history['MarkMessage'] := --- 702,707 ---- err := sprintf(__("Error in %s: %s"), ! lastexception[1], ! StringTools[FormatMessage]( lastexception[ 2 .. -1 ] )); history['MarkMessage'] := *************** *** 1606,1618 **** if b = 1 then msg := cat(msg,"\n<br/>\n", ! sprintf(__("You previously made one incorrect attempt, and were penalised %.2f, giving an overall mark of %.2f."), p,mark)); elif b > 1 then msg := cat( ! msg, ! "\n<br/>\n", ! sprintf(__("You previously made %d incorrect attempts, and were penalised %.2f for each of them, giving an overall mark of %.2f."), ! b,p,mark)) fi; else # not isright --- 1632,1644 ---- if b = 1 then msg := cat(msg,"\n<br/>\n", ! sprintf(__("You previously made one incorrect attempt, and were penalised %.2f, giving an overall mark of %.2f."), p,mark)); elif b > 1 then msg := cat( ! msg, ! "\n<br/>\n", ! sprintf(__("You previously made %d incorrect attempts, and were penalised %.2f for each of them, giving an overall mark of %.2f."), ! b,p,mark)) fi; else # not isright *************** *** 1635,1651 **** if b = 0 or r = 0. then msg := sprintf(__("Your mark is %.2f"),mark); elif b = 1 then msg := cat( ! sprintf(__("The mark for your last attempt was %.2f"),r), ! "\n<br/>\n", ! sprintf(__("You previously made one incorrect attempt, and were penalised %.2f, giving an overall mark of %A."), ! p,mark)); else msg := cat( ! sprintf(__("The mark for your last attempt was %A"),r), ! "\n<br/>\n", ! sprintf(__("You previously made %d incorrect attempts, and were penalised %.2f for each of them, giving an overall mark of %.2f."), b,p,mark)) fi; --- 1661,1684 ---- if b = 0 or r = 0. then msg := sprintf(__("Your mark is %.2f"),mark); + # KM + if b>0 then + msg := cat(msg,sprintf(__(".    You have made %d incorrect attempts."),b+1)); + else + msg := cat(msg,".    You have made one incorrect attempt."); + fi: + # END KM elif b = 1 then msg := cat( ! sprintf(__("The mark for your last attempt was %.2f"),r), ! "\n<br/>\n", ! sprintf(__("You previously made one incorrect attempt, and were penalised %.2f, giving an overall mark of %A."), ! p,mark)); else msg := cat( ! sprintf(__("The mark for your last attempt was %A"),r), ! "\n<br/>\n", ! sprintf(__("You previously made %d incorrect attempts, and were penalised %.2f for each of them, giving an overall mark of %.2f."), b,p,mark)) fi; *************** *** 1738,1742 **** label,cgilabel,errlabel,keys,rawans, insertrightans,savedframe,err,sproc,tlimit; ! insertrightans := evalb(nargs > 4 and insertrightans_); --- 1771,1777 ---- label,cgilabel,errlabel,keys,rawans, insertrightans,savedframe,err,sproc,tlimit; ! # KM ! global Config; ! # END KM insertrightans := evalb(nargs > 4 and insertrightans_); *************** *** 1762,1766 **** tlimit := vrsion['TimeLimit']; if not(type([tlimit],[numeric])) then ! tlimit := 2.0; fi; --- 1797,1804 ---- tlimit := vrsion['TimeLimit']; if not(type([tlimit],[numeric])) then ! # KM ! # DIST tlimit := 2.0; ! tlimit := Config['TimeLimit']; ! # END KM fi; *************** *** 1770,1779 **** err := sprintf(__("Error in %s: %s"), ! lastexception[1], ! StringTools[FormatMessage]( lastexception[ 2 .. -1 ] )); instance['Solution'] := cat("<div class='solutionerror'><font color='red'>", ! __("There was an internal error while generating a solution for this question:"), ! "\n<br/>\n",err,"\n</font>\n</div>\n"); vrsion['Note'] := __("Solution error"); ###TODO: a better way to log this --- 1808,1817 ---- err := sprintf(__("Error in %s: %s"), ! lastexception[1], ! StringTools[FormatMessage]( lastexception[ 2 .. -1 ] )); instance['Solution'] := cat("<div class='solutionerror'><font color='red'>", ! __("There was an internal error while generating a solution for this question:"), ! "\n<br/>\n",err,"\n</font>\n</div>\n"); vrsion['Note'] := __("Solution error"); ###TODO: a better way to log this *************** *** 1835,1839 **** local attempt,history,quizcontext, ansvar,locals,savedframe,err,sproc,tlimit; ! if type([vrsion],[`aim/MultiQuestion/Version`]) then ERROR(__("The `aim/Question/Instance` constructor cannot be used for multipart questions")); --- 1873,1879 ---- local attempt,history,quizcontext, ansvar,locals,savedframe,err,sproc,tlimit; ! # KM ! global Config; ! # END KM if type([vrsion],[`aim/MultiQuestion/Version`]) then ERROR(__("The `aim/Question/Instance` constructor cannot be used for multipart questions")); *************** *** 1892,1896 **** tlimit := vrsion['TimeLimit']; if not(type([tlimit],[numeric])) then ! tlimit := 2.0; fi; --- 1932,1939 ---- tlimit := vrsion['TimeLimit']; if not(type([tlimit],[numeric])) then ! # KM ! # DIST tlimit := 2.0; ! tlimit := Config['TimeLimit']; ! # END KM fi; *************** *** 1900,1909 **** err := sprintf(__("Error in %s: %s"), ! lastexception[1], ! StringTools[FormatMessage]( lastexception[ 2 .. -1 ] )); this['Solution'] := cat("<div class='solutionerror'><font color='red'>", ! __("There was an internal error while generating a solution for this question:"), ! "\n<br/>\n",err,"\n</font>\n</div>\n"); vrsion['Note'] := __("Solution error"); ###TODO: a better way to log this --- 1943,1952 ---- err := sprintf(__("Error in %s: %s"), ! lastexception[1], ! StringTools[FormatMessage]( lastexception[ 2 .. -1 ] )); this['Solution'] := cat("<div class='solutionerror'><font color='red'>", ! __("There was an internal error while generating a solution for this question:"), ! "\n<br/>\n",err,"\n</font>\n</div>\n"); vrsion['Note'] := __("Solution error"); ###TODO: a better way to log this *************** *** 2016,2020 **** "", proc(this,quizcontext::`aim/Quiz/Context`,labels::list(string)) ! local reviewmode, trymode, qtrymode, focused, focuslabel, focusindex, nav, href, header, control, editlink, label; --- 2059,2066 ---- "", proc(this,quizcontext::`aim/Quiz/Context`,labels::list(string)) ! # KM ! # DIST local reviewmode, trymode, qtrymode, ! local reviewmode, trymode, qtrymode, jscript, ! # END KM focused, focuslabel, focusindex, nav, href, header, control, editlink, label; *************** *** 2029,2033 **** focusindex := 1; while focusindex <= nops(labels) and ! labels[focusindex] <> focuslabel do focusindex := focusindex + 1; od; --- 2075,2079 ---- focusindex := 1; while focusindex <= nops(labels) and ! labels[focusindex] <> focuslabel do focusindex := focusindex + 1; od; *************** *** 2043,2090 **** if this['Level'] = 0 then nav := `new/HTML/Tag`("tr"); ! if not(qtrymode) then if focused then if focusindex > 1 then ! href := sprintf("javascript:MoveFocus('%s');", ! labels[focusindex - 1]); nav['AddContents', ! ["td",[["a","href" = href],__("Previous")]]]; fi; for label in labels do ! href := sprintf("javascript:MoveFocus('%s');", ! label); nav['AddContents', ! ["td",[["a","href" = href],label]]]; od; if focusindex < nops(labels) then ! href := sprintf("javascript:MoveFocus('%s');", ! labels[focusindex + 1]); nav['AddContents', ! ["td",[["a","href" = href],__("Next")]]]; fi; if quizcontext['InviteValidation'] then nav['AddContents', ! ["td", ! [["a","href" = "javascript:Validate();"],__("Validate")]]]; fi; if quizcontext['InviteMarking'] then nav['AddContents', ! ["td", ! [["a","href" = "javascript:Mark();"],__("Mark")]]]; fi; ! nav['AddContents', ! ["td", ! [["a","href" = "javascript:Unfocus();"],__("Unfocus")]], ! ["td",`aim/HelpLink`(__("Help"))]]; else # not focused nav['AddContents',["td",[["a","href" = "#top"],__("Top")]]]; for label in labels do nav['AddContents', ! ["td",[["a","href" = cat("#",label)],label]]]; od; nav['AddContents',["td",[["a","href" = "#bottom"],__("Bottom")]]]; --- 2089,2153 ---- if this['Level'] = 0 then nav := `new/HTML/Tag`("tr"); ! if not qtrymode then if focused then + # KM + jscript :="javascript:MoveFocus('%s');"; + # END KM if focusindex > 1 then ! # KM ! # DIST href := sprintf("javascript:MoveFocus('%s');", ! # DIST labels[focusindex - 1]); ! href := sprintf(jscript,labels[focusindex - 1]); ! # END KM nav['AddContents', ! ["td",[["a","href" = href],__("Previous")]]]; fi; for label in labels do ! # KM ! # DIST href := sprintf("javascript:MoveFocus('%s');", ! # DIST label); ! href := sprintf(jscript,label); ! # END KM nav['AddContents', ! ["td",[["a","href" = href],label]]]; od; if focusindex < nops(labels) then ! # KM ! # DIST href := sprintf("javascript:MoveFocus('%s');", ! # DIST labels[focusindex + 1]); ! href := sprintf(jscript,labels[focusindex + 1]); ! # END KM nav['AddContents', ! ["td",[["a","href" = href],__("Next")]]]; fi; if quizcontext['InviteValidation'] then nav['AddContents', ! ["td", ! [["a","href" = "javascript:Validate();"],__("Validate")]]]; fi; if quizcontext['InviteMarking'] then nav['AddContents', ! ["td", ! [["a","href" = "javascript:Mark();"],__("Mark")]]]; fi; ! # KM ! jscript := "javascript:Unfocus();"; ! # END KM nav['AddContents', ! ["td", ! # KM ! # DIST [["a","href" = "javascript:Unfocus();"],__("Unfocus")]], ! [["a","href" = jscript],__("Unfocus")]], ! # END KM ! ["td",`aim/HelpLink`(__("Help"))]]; else # not focused nav['AddContents',["td",[["a","href" = "#top"],__("Top")]]]; for label in labels do nav['AddContents', ! ["td",[["a","href" = cat("#",label)],label]]]; od; nav['AddContents',["td",[["a","href" = "#bottom"],__("Bottom")]]]; *************** *** 2092,2114 **** if quizcontext['InviteValidation'] then href := sprintf("javascript:ValidateQuestion('%s');", ! this['Label']); nav['AddContents', ! ["td", ! [["a","href" = href],__("Validate")]]]; fi; if quizcontext['InviteMarking'] then href := sprintf("javascript:MarkQuestion('%s');", ! this['Label']); nav['AddContents', ! ["td", ! [["a","href" = href],__("Mark")]]]; fi; ! href := sprintf("javascript:Focus('%s');", ! this['Label']); ! nav['AddContents', ! ["td", ! [["a","href" = href],__("Focus")]]]; nav['AddContents',["td",`aim/HelpLink`(__("Help"))]]; --- 2155,2186 ---- if quizcontext['InviteValidation'] then href := sprintf("javascript:ValidateQuestion('%s');", ! this['Label']); nav['AddContents', ! ["td", ! [["a","href" = href],__("Validate")]]]; fi; if quizcontext['InviteMarking'] then href := sprintf("javascript:MarkQuestion('%s');", ! this['Label']); nav['AddContents', ! ["td", ! [["a","href" = href],__("Mark")]]]; fi; ! # KM ! if not trymode then ! # END KM ! # DIST href := sprintf(,"javascript:Focus('%s');", ! # DIST this['Label']); ! jscript := "javascript:Focus('%s');"; ! href := sprintf(jscript,this['Label']); ! # END KM ! nav['AddContents', ! ["td", ! [["a","href" = href],__("Focus")]]]; ! # KM ! fi; ! # END KM nav['AddContents',["td",`aim/HelpLink`(__("Help"))]]; *************** *** 2188,2196 **** this['Description'] <> "" then control['AddContents', ! "tr", [["td", "align" = "left"], ["b", __("Description"), ":"]], [["td", "align" = "left", "colspan" = "3"], ! ["latex", this['Description']]]]; fi; --- 2260,2274 ---- this['Description'] <> "" then control['AddContents', ! # KM ! # DIST "tr", ! ["tr", ! # END KM [["td", "align" = "left"], ["b", __("Description"), ":"]], [["td", "align" = "left", "colspan" = "3"], ! # KM ! # DIST ["latex", this['Description']]]]; ! ["latex", this['Description']]]]]; ! # END KM fi; *************** *** 2253,2264 **** html1:=`new/HTML/Tag`( ! ["div","class" = "question","id" = cat("question",this['Label'])], ! header, "\n", ! [["table", "width"="100%"], ! ["tr", [["td", "width" = "5%"]," "], ! [["td", "width" = "95%"], ! [["div", "class" = "questionbody"], ! html]]]]); RETURN(html1['ToString']); --- 2331,2342 ---- html1:=`new/HTML/Tag`( ! ["div","class" = "question","id" = cat("question",this['Label'])], ! header, "\n", ! [["table", "width"="100%"], ! ["tr", [["td", "width" = "5%"]," "], ! [["td", "width" = "95%"], ! [["div", "class" = "questionbody"], ! html]]]]); RETURN(html1['ToString']); *************** *** 2430,2434 **** ["hr"], [["div", "class" = "rightanswer"], ! this['ReportRightAnswer']]]; fi; fi; # ends if type([this],[`aim/MultiQuestion/Instance`]) --- 2508,2518 ---- ["hr"], [["div", "class" = "rightanswer"], ! # KM ! [["table", "width"="100%", "bgcolor"="PaleGoldenRod"], ! ["tr", ! [["td", "width"="100%"], ! this['ReportRightAnswer']]]]]]; ! # DIST this['ReportRightAnswer']]]; ! # END KM fi; fi; # ends if type([this],[`aim/MultiQuestion/Instance`]) *************** *** 2437,2445 **** this['Solution'] <> "" then html['AddContents', ! ["hr"], [["div", "class" = "solution"], ! ["b",__("Solution:")], ! ["br"], ! this['Solution']]]; fi; --- 2521,2539 ---- this['Solution'] <> "" then html['AddContents', ! # DIST ["hr"], [["div", "class" = "solution"], ! # KM ! [["table", "width"="100%", "bgcolor"="PaleGoldenRod"], ! ["tr",[["td", "width"="100%"],["hr"]]], ! ["tr", ! [["td", "width"="100%"], ! ["b",__("Solution:")], ! ["br"]]], ! ["tr", ! [["td", "width"="100%"],this['Solution']]]]]]; ! # DIST ["b",__("Solution:")], ! # DIST ["br"], ! # DIST this['Solution']]]; ! # END KM fi; *************** *** 2450,2454 **** ["tr", [["td", "width" = "5%"]," "], ! [["td", "width" = "95%"], "\n", html]]] --- 2544,2548 ---- ["tr", [["td", "width" = "5%"]," "], ! [["td", "width" = "95%"], "\n", html]]] *************** *** 2608,2611 **** --- 2702,2714 ---- "The name of the question of which this is an analysis." ], + + # KM + ['Field','PartLabel'::string, + "If this is the 3rd subsubquestion of the 5th subquestion of a + multipart question, then this field will be the string + @\".5.3\"@ + " + ], + # END KM ['Field','NumHistories'::integer, Index: Quiz.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/Quiz.mpl,v retrieving revision 1.3.2.2 retrieving revision 1.3.2.3 diff -C2 -d -r1.3.2.2 -r1.3.2.3 *** Quiz.mpl 27 Jul 2003 20:22:13 -0000 1.3.2.2 --- Quiz.mpl 25 Aug 2003 18:35:11 -0000 1.3.2.3 *************** *** 845,849 **** ['Field','NameTable'::table, "A table of #`aim/Question/History`# objects, indexed by pairs of ! the form @(question name,part label)@. Th entries are the same objects as in the @LabelTable@ field. " --- 845,849 ---- ['Field','NameTable'::table, "A table of #`aim/Question/History`# objects, indexed by pairs of ! the form @(question name,part label)@. The entries are the same objects as in the @LabelTable@ field. " *************** *** 909,912 **** --- 909,930 ---- ], + ### GWD + ['Method','TotalValue'::numeric,"The total value of the quiz", + proc(this) + local total,label,histories; + total := 0.; + # KM + # DIST histories := eval(this['QuestionHistory']); + histories := eval(this['LabelTable']); + # END KM + for label in this['Labels'] do + total := total + histories[label]['QuestionValue']; + od; + + RETURN(total); + end + ], + ### GWD + ['Method','TotalMarkCode'::`aim/MarkCode`,"", proc(this) *************** *** 960,963 **** --- 978,987 ---- ], + # KM + ['Field','SolutionsRevealed'::boolean = false, + "@true@ if the student has previously requested + the solutions for the quiz. + "], + # END KM ['Method','ValidlyAttempted'::boolean, *************** *** 1003,1010 **** to the student. ", ! proc(this) local totalmark,totalvalue,numattempted,attemptedvalue, histories,history,marksummary,questionvalue,mark, ! percentage,label; totalmark := 0.; --- 1027,1044 ---- ... [truncated message content] |
From: <gus...@us...> - 2003-08-25 16:13:05
|
Update of /cvsroot/aimmath/AIM In directory sc8-pr-cvs1:/tmp/cvs-serv4060 Modified Files: Tag: develop_2_1 help.html Log Message: minor updates of documentation Index: help.html =================================================================== RCS file: /cvsroot/aimmath/AIM/help.html,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** help.html 20 Apr 2003 23:14:27 -0000 1.1.1.1 --- help.html 25 Aug 2003 15:22:03 -0000 1.1.1.1.2.1 *************** *** 1,5 **** <HTML> <HEAD> ! <TITLE>AIM help</TITLE> </HEAD> <BODY BGCOLOR=WHITE> --- 1,6 ---- <HTML> + <!-- @(#)$Id$ --> <HEAD> ! <TITLE>AiM help</TITLE> </HEAD> <BODY BGCOLOR=WHITE> *************** *** 7,11 **** <TR> <TD ALIGN=LEFT> ! <H1>Help with the Alice system</H1> </TD> <TD ALIGN=RIGHT> --- 8,12 ---- <TR> <TD ALIGN=LEFT> ! <H1>Help with the AiM system</H1> </TD> <TD ALIGN=RIGHT> *************** *** 18,22 **** <LI><A HREF="#practice">Practice mode</A></LI> <LI><A HREF="#assessment">Assessment mode</A></LI> ! <LI><A HREF="#output">Understanding Alice's output</A></LI> <LI><A HREF="#entry">How do I enter my answers?</A></LI> <LI><A HREF="#types">Types</A></LI> --- 19,23 ---- <LI><A HREF="#practice">Practice mode</A></LI> <LI><A HREF="#assessment">Assessment mode</A></LI> ! <LI><A HREF="#output">Understanding AiM's output</A></LI> <LI><A HREF="#entry">How do I enter my answers?</A></LI> <LI><A HREF="#types">Types</A></LI> *************** *** 27,44 **** <A NAME="overview"><H2>Overview</H2></A> ! <B>Alice</B> is a computer system that assists in the teaching of some parts of University mathematics. Your comments and suggestions ! will be very welcome; you can send them by email to <A ! HREF="MAILTO:N.P...@sh...">Neil Strickland</A>. ! <BR><BR> The basic idea is that you follow the obvious links from the ! <A HREF="index.html">Alice login page</A>, and ! then Alice will present you with a list of questions. There is detailed advice below on <A HREF="entry">how to enter your answers</A>. You can then click the <B>Mark</B> button at the bottom of the page to mark your work. The details of how this works ! depend on whether Alice is running in <A HREF="#practice">practice mode</A> or <A HREF="#assessment">assessment mode</A>. --- 28,44 ---- <A NAME="overview"><H2>Overview</H2></A> ! <B>AiM</B> is a computer system that assists in the teaching of some parts of University mathematics. Your comments and suggestions ! will be very welcome; you can post them on the forum <a href="http://maths-physics.org.uk/aiminfo/mod/forum/view.php?id=14">Using AiM</a>. ! <br/><br/> The basic idea is that you follow the obvious links from the ! <A HREF="index.html">AiM login page</A>, and ! then AiM will present you with a list of questions. There is detailed advice below on <A HREF="entry">how to enter your answers</A>. You can then click the <B>Mark</B> button at the bottom of the page to mark your work. The details of how this works ! depend on whether AiM is running in <A HREF="#practice">practice mode</A> or <A HREF="#assessment">assessment mode</A>. *************** *** 56,60 **** the page where you filled in your answers, correct any mistakes, and try again. Alternatively, you can go away and come back some other ! time; Alice will remember your previous answers, so you can correct any that were wrong, and leave the others as they are. The system will give you a numerical mark for your work which you may --- 56,60 ---- the page where you filled in your answers, correct any mistakes, and try again. Alternatively, you can go away and come back some other ! time; AiM will remember your previous answers, so you can correct any that were wrong, and leave the others as they are. The system will give you a numerical mark for your work which you may *************** *** 63,67 **** <A HREF="#assessment">assessment mode</A>. ! <BR><BR> If you want to see the solutions, you can click the <B>Solutions</B> --- 63,67 ---- <A HREF="#assessment">assessment mode</A>. ! <br/><br/> If you want to see the solutions, you can click the <B>Solutions</B> *************** *** 79,83 **** different students will get slightly different questions. ! <BR><BR> A test in assessment mode will usually have a "Due date" --- 79,83 ---- different students will get slightly different questions. ! <br/><br/> A test in assessment mode will usually have a "Due date" *************** *** 91,100 **** system has misunderstood what you meant then you can fix the problem before proceeding. When you are satisfied with your answers, you ! can click the <B>Mark</B> button. Alice will tell you whether your answers are right or wrong (except for multiple choice questions) and may give some feedback about any answers that are wrong, but it will not tell you the right answers. ! <BR><BR> Usually, <B>no credit will be given for partially correct --- 91,100 ---- system has misunderstood what you meant then you can fix the problem before proceeding. When you are satisfied with your answers, you ! can click the <B>Mark</B> button. AiM will tell you whether your answers are right or wrong (except for multiple choice questions) and may give some feedback about any answers that are wrong, but it will not tell you the right answers. ! <br/><br/> Usually, <B>no credit will be given for partially correct *************** *** 109,113 **** a syntax error rather than a mathematical error. ! <br><br> Thus, it would make sense to: <ul> --- 109,113 ---- a syntax error rather than a mathematical error. ! <br/><br/> Thus, it would make sense to: <ul> *************** *** 124,135 **** </li> </ul> ! <BR><BR> ! If you access the test after the due date, then Alice will tell you your marks and give the solutions to the questions. ! <A NAME="output"><H2>Understanding Alice's output</H2></A> ! Alice generally displays mathematics in a good approximation to traditional notation. (Formulas are translated into HTML, so they can be displayed in most browsers without any kind of plugin. This --- 124,135 ---- </li> </ul> ! <br/><br/> ! If you access the test after the due date, then AiM will tell you your marks and give the solutions to the questions. ! <A NAME="output"><H2>Understanding AiM's output</H2></A> ! AiM generally displays mathematics in a good approximation to traditional notation. (Formulas are translated into HTML, so they can be displayed in most browsers without any kind of plugin. This *************** *** 141,145 **** Macintosh, or using Netscape under Unix or Linux. ! <br><br> You may find that subscripts and superscripts are too small to read --- 141,145 ---- Macintosh, or using Netscape under Unix or Linux. ! <br/><br/> You may find that subscripts and superscripts are too small to read *************** *** 151,155 **** <b>Fonts</b>, then change the variable width font size. ! <br><br> Apart from these font issues, there is one feature that may cause --- 151,155 ---- <b>Fonts</b>, then change the variable width font size. ! <br/><br/> Apart from these font issues, there is one feature that may cause *************** *** 160,164 **** </td><td nowrap align=center> 1<hr NOSHADE> ! 3<Br></td><td nowrap align=center> (x + y), </td></Table> </td></table></centEr> --- 160,164 ---- </td><td nowrap align=center> 1<hr NOSHADE> ! 3<br/></td><td nowrap align=center> (x + y), </td></Table> </td></table></centEr> *************** *** 169,173 **** </td><td nowrap align=center> 1<hr NOSHADE> ! 2<Br></td><td nowrap align=center> <font face=symbol>Ö</font >3, </td></Table> --- 169,173 ---- </td><td nowrap align=center> 1<hr NOSHADE> ! 2<br/></td><td nowrap align=center> <font face=symbol>Ö</font >3, </td></Table> *************** *** 179,183 **** <font face=symbol>Ö</font >3<hr NOSHADE> ! 2<Br></td><td nowrap align=center> . </td></Table> </td></table></centEr> --- 179,183 ---- <font face=symbol>Ö</font >3<hr NOSHADE> ! 2<br/></td><td nowrap align=center> . </td></Table> </td></table></centEr> *************** *** 192,208 **** taking the Applied Mathematics Core course AMA101 then you will learn to use Maple there. If you are not, the advice below should ! be sufficient. Alice tries quite hard to give helpful information about syntax errors. You can also learn about the right syntax by doing tests in <a href="#practice">practice mode</a> and asking for the solutions; as well as displaying the right answers in ordinary ! mathematical notation, Alice will tell you how they could be ! entered. (However, there are often several possible ways, and Alice will not always suggest the easiest one.) ! <BR><BR> When you have entered your answer, you can always click on the <B>Validate</B> button at the bottom of the page to see how Maple will interpret it. If there are any syntax errors or Maple has misunderstood what you meant then you can fix the problem before ! asking Alice to mark your work. <UL> --- 192,208 ---- taking the Applied Mathematics Core course AMA101 then you will learn to use Maple there. If you are not, the advice below should ! be sufficient. AiM tries quite hard to give helpful information about syntax errors. You can also learn about the right syntax by doing tests in <a href="#practice">practice mode</a> and asking for the solutions; as well as displaying the right answers in ordinary ! mathematical notation, AiM will tell you how they could be ! entered. (However, there are often several possible ways, and AiM will not always suggest the easiest one.) ! <br/><br/> When you have entered your answer, you can always click on the <B>Validate</B> button at the bottom of the page to see how Maple will interpret it. If there are any syntax errors or Maple has misunderstood what you meant then you can fix the problem before ! asking AiM to mark your work. <UL> *************** *** 218,222 **** common source of syntax errors. Note that you do <B>not</B> need a semicolon at the end, unlike when you are using Maple directly. ! <BR><BR></LI> <LI> Use a caret (^) for raising something to a power: for example, <FONT COLOR=BLUE>x<SUP>2</SUP></FONT> should be entered as --- 218,222 ---- common source of syntax errors. Note that you do <B>not</B> need a semicolon at the end, unlike when you are using Maple directly. ! <br/><br/></LI> <LI> Use a caret (^) for raising something to a power: for example, <FONT COLOR=BLUE>x<SUP>2</SUP></FONT> should be entered as *************** *** 228,232 **** and <FONT COLOR=BLUE>x<SUP>1/3</SUP></FONT> as <TT><FONT COLOR=GREEN>x^(1/3)</FONT></TT>. ! <BR><BR></LI> <LI> More generally, when in doubt, use brackets. For example, <FONT COLOR=BLUE> --- 228,232 ---- and <FONT COLOR=BLUE>x<SUP>1/3</SUP></FONT> as <TT><FONT COLOR=GREEN>x^(1/3)</FONT></TT>. ! <br/><br/></LI> <LI> More generally, when in doubt, use brackets. For example, <FONT COLOR=BLUE> *************** *** 235,239 **** </td><td nowrap align=center> a + b<hr NOSHADE> ! c + d <Br></td><td nowrap align=center> </td></Table> </td></table></centEr> --- 235,239 ---- </td><td nowrap align=center> a + b<hr NOSHADE> ! c + d <br/></td><td nowrap align=center> </td></Table> </td></table></centEr> *************** *** 245,251 **** square or curly ones (like <TT><FONT COLOR=GREEN>[a+b]</FONT></TT> or <TT><FONT COLOR=GREEN>{a+b}</FONT></TT>). ! <BR> If you type ! <TT><FONT COLOR=GREEN>a+b/(c+d)</FONT></TT>, then Alice will think that you mean <FONT COLOR=BLUE> --- 245,251 ---- square or curly ones (like <TT><FONT COLOR=GREEN>[a+b]</FONT></TT> or <TT><FONT COLOR=GREEN>{a+b}</FONT></TT>). ! <br/> If you type ! <TT><FONT COLOR=GREEN>a+b/(c+d)</FONT></TT>, then AiM will think that you mean <FONT COLOR=BLUE> *************** *** 254,262 **** a +</td><td nowrap align=center> b<hr NOSHADE> ! c + d<Br></td><td nowrap align=center> </td></Table> </td></table></centEr> </FONT> ! If you type <TT><FONT COLOR=GREEN>(a+b)/c+d</FONT></TT>, then Alice will think that you mean <FONT COLOR=BLUE> --- 254,262 ---- a +</td><td nowrap align=center> b<hr NOSHADE> ! c + d<br/></td><td nowrap align=center> </td></Table> </td></table></centEr> </FONT> ! If you type <TT><FONT COLOR=GREEN>(a+b)/c+d</FONT></TT>, then AiM will think that you mean <FONT COLOR=BLUE> *************** *** 265,273 **** </td><td nowrap align=center> a + b<hr NOSHADE> ! c<Br></td><td nowrap align=center> + d </td></Table> </td></table></centEr> </FONT> ! If you type <TT><FONT COLOR=GREEN>a+b/c+d</FONT></TT>, then Alice will think that you mean <FONT COLOR=BLUE> --- 265,273 ---- </td><td nowrap align=center> a + b<hr NOSHADE> ! c<br/></td><td nowrap align=center> + d </td></Table> </td></table></centEr> </FONT> ! If you type <TT><FONT COLOR=GREEN>a+b/c+d</FONT></TT>, then AiM will think that you mean <FONT COLOR=BLUE> *************** *** 276,284 **** a +</td><td nowrap align=center> b<hr NOSHADE> ! c<Br></td><td nowrap align=center> + d </td></Table> </td></table></centEr> </FONT> ! <BR> Some other examples: <UL> --- 276,284 ---- a +</td><td nowrap align=center> b<hr NOSHADE> ! c<br/></td><td nowrap align=center> + d </td></Table> </td></table></centEr> </FONT> ! <br/> Some other examples: <UL> *************** *** 301,305 **** </LI> </UL> ! <BR><BR></LI> <LI>Maple is case-sensitive. Do not enter <TT><FONT COLOR=GREEN>X</FONT></TT> instead of --- 301,305 ---- </LI> </UL> ! <br/><br/></LI> <LI>Maple is case-sensitive. Do not enter <TT><FONT COLOR=GREEN>X</FONT></TT> instead of *************** *** 333,337 **** <TT><FONT COLOR=GREEN>exp(x)</FONT></TT> for <FONT COLOR=BLUE>e<SUP>x</SUP></FONT>. ! <BR><BR></LI> <LI> <FONT COLOR=BLUE>sin<SUP>2</SUP>x</FONT> should be entered as --- 333,337 ---- <TT><FONT COLOR=GREEN>exp(x)</FONT></TT> for <FONT COLOR=BLUE>e<SUP>x</SUP></FONT>. ! <br/><br/></LI> <LI> <FONT COLOR=BLUE>sin<SUP>2</SUP>x</FONT> should be entered as *************** *** 340,344 **** <FONT COLOR=BLUE>tan<SUP>2</SUP>(x)</FONT>, <FONT COLOR=BLUE>sinh<SUP>2</SUP>(x)</FONT> and so on. ! <BR><BR></LI> <LI> Recall that <FONT COLOR=BLUE>sin<SUP>-1</SUP>(x)</FONT> --- 340,344 ---- <FONT COLOR=BLUE>tan<SUP>2</SUP>(x)</FONT>, <FONT COLOR=BLUE>sinh<SUP>2</SUP>(x)</FONT> and so on. ! <br/><br/></LI> <LI> Recall that <FONT COLOR=BLUE>sin<SUP>-1</SUP>(x)</FONT> *************** *** 352,356 **** Similarly, <FONT COLOR=BLUE>tan<SUP>-1</SUP>(x)</FONT> should be entered as <TT><FONT COLOR=GREEN>arctan(x)</FONT></TT> and so on. ! <BR><BR></LI> <LI> Greek letters can be entered using their English names: for --- 352,356 ---- Similarly, <FONT COLOR=BLUE>tan<SUP>-1</SUP>(x)</FONT> should be entered as <TT><FONT COLOR=GREEN>arctan(x)</FONT></TT> and so on. ! <br/><br/></LI> <LI> Greek letters can be entered using their English names: for *************** *** 360,368 **** <FONT FACE=SYMBOL COLOR=BLUE>2p</FONT> as <TT><FONT COLOR=GREEN>2*pi</FONT></TT>. ! <BR><BR></LI> <LI> When you work directly with Maple, the vector <FONT COLOR=BLUE>(1,2,3)</FONT> must be entered as ! <TT><FONT COLOR=GREEN>vector([1,2,3])</FONT></TT>. Many AIM questions are set up so that you can just enter <tt><font color='green'>[1,2,3]</font></tt> instead. --- 360,368 ---- <FONT FACE=SYMBOL COLOR=BLUE>2p</FONT> as <TT><FONT COLOR=GREEN>2*pi</FONT></TT>. ! <br/><br/></LI> <LI> When you work directly with Maple, the vector <FONT COLOR=BLUE>(1,2,3)</FONT> must be entered as ! <TT><FONT COLOR=GREEN>vector([1,2,3])</FONT></TT>. Many AiM questions are set up so that you can just enter <tt><font color='green'>[1,2,3]</font></tt> instead. *************** *** 374,378 **** <Table align=left><tr><td nowrap align=center> </td><td align=left><font face=symbol> ! é<br>ê<br> ë </font></td><td align=center> --- 374,378 ---- <Table align=left><tr><td nowrap align=center> </td><td align=left><font face=symbol> ! é<br/>ê<br/> ë </font></td><td align=center> *************** *** 389,393 **** <table><TR><TD nowrap align="center" colspan=0>6</td></tabLe></TD></TR></TablE> </td><td nowrap></td><td align=left><font face=symbol> ! ù<br>ú<br> û </font></td><td align=center> --- 389,393 ---- <table><TR><TD nowrap align="center" colspan=0>6</td></tabLe></TD></TR></TablE> </td><td nowrap></td><td align=left><font face=symbol> ! ù<br/>ú<br/> û </font></td><td align=center> *************** *** 397,401 **** must be entered as <TT><FONT COLOR=GREEN>matrix([[1,2,3],[4,5,6]])</FONT></TT>. ! Many AIM questions are set up so that you can just enter <TT><FONT COLOR=GREEN>[[1,2,3],[4,5,6]]</FONT></TT> instead. Note that there are double square brackets at the beginning and --- 397,401 ---- must be entered as <TT><FONT COLOR=GREEN>matrix([[1,2,3],[4,5,6]])</FONT></TT>. ! Many AiM questions are set up so that you can just enter <TT><FONT COLOR=GREEN>[[1,2,3],[4,5,6]]</FONT></TT> instead. Note that there are double square brackets at the beginning and *************** *** 406,413 **** <A NAME="types"><H2>Types</H2></A> ! Sometimes, Alice will check the type of your answer (eg whether it is a constant, a function of x, a vector, a matrix ...) before working out whether it is correct. If your answer has the wrong ! type Alice will allow you to go back and change it without any penalty. Unfortunately, the warning messages for type errors are not as comprehensible as they might be. Here are some examples that --- 406,413 ---- <A NAME="types"><H2>Types</H2></A> ! Sometimes, AiM will check the type of your answer (eg whether it is a constant, a function of x, a vector, a matrix ...) before working out whether it is correct. If your answer has the wrong ! type AiM will allow you to go back and change it without any penalty. Unfortunately, the warning messages for type errors are not as comprehensible as they might be. Here are some examples that *************** *** 420,424 **** <Table align=left><tr><td nowrap align=center> </td><td align=left><font face=symbol> ! é<br>ê<br> ë </font></td><td align=center> --- 420,424 ---- <Table align=left><tr><td nowrap align=center> </td><td align=left><font face=symbol> ! é<br/>ê<br/> ë </font></td><td align=center> *************** *** 431,435 **** <table><TR><TD nowrap align="center" colspan=0>4</td></tabLe></TD></TR></TablE> </td><td nowrap></td><td align=left><font face=symbol> ! ù<br>ú<br> û </font></td><td align=center> --- 431,435 ---- <table><TR><TD nowrap align="center" colspan=0>4</td></tabLe></TD></TR></TablE> </td><td nowrap></td><td align=left><font face=symbol> ! ù<br/>ú<br/> û </font></td><td align=center> *************** *** 437,454 **** </td></table></centEr> but you enter the number 7 as your answer. You will get the ! following message: <BR> ! <font color=red><br> ! Your answer has the following error: <br> Wrong type. Your answer was ! <BR><BR> 7 ! <BR><BR> It should be of type ! <BR><BR> [[constant,constant],[constant,constant]] ! <BR><BR> but it is not. Try again. ! </font><BR> This of course means that your answer was supposed to be a 2x2 matrix with constant entries, but in fact it is just a single --- 437,454 ---- </td></table></centEr> but you enter the number 7 as your answer. You will get the ! following message: <br/> ! <font color=red><br/> ! Your answer has the following error: <br/> Wrong type. Your answer was ! <br/><br/> 7 ! <br/><br/> It should be of type ! <br/><br/> [[constant,constant],[constant,constant]] ! <br/><br/> but it is not. Try again. ! </font><br/> This of course means that your answer was supposed to be a 2x2 matrix with constant entries, but in fact it is just a single *************** *** 459,475 **** Suppose that the correct answer is x<SUP>2</SUP> + y<SUP>2</SUP>, but your answer is x<SUP>2</SUP> + y<SUP>2</SUP> + z<SUP>2</SUP>. ! You might get the following message:<BR> ! <font color=red><br> Your last answer was: ! <br><center> x<SUP>2</SUP> + y<SUP>2</SUP> + z<SUP>2</SUP>. ! </center><br> ! Wrong type.<br> Your answer should have type ! <BR> polynom(constant,[x,y]) ! <BR> but it does not. ! </font><BR><br> This means that your answer was supposed to be a polynomial function of x and y, but in fact it depends on z as well. For --- 459,475 ---- Suppose that the correct answer is x<SUP>2</SUP> + y<SUP>2</SUP>, but your answer is x<SUP>2</SUP> + y<SUP>2</SUP> + z<SUP>2</SUP>. ! You might get the following message:<br/> ! <font color=red><br/> Your last answer was: ! <br/><center> x<SUP>2</SUP> + y<SUP>2</SUP> + z<SUP>2</SUP>. ! </center><br/> ! Wrong type.<br/> Your answer should have type ! <br/> polynom(constant,[x,y]) ! <br/> but it does not. ! </font><br/><br/> This means that your answer was supposed to be a polynomial function of x and y, but in fact it depends on z as well. For *************** *** 482,499 **** Suppose that the correct answer is 2 sin(3 x) but your answer is just the number 5. ! You might get the following message:<BR> ! <font color=red><br> Your last answer was: ! <br><center> 5 ! </center><br> ! Wrong type.<br> Your answer should have type ! <BR> dependent(x) ! <BR> but it does not. </font> ! <br><br> This means that your answer was supposed to depend on x. </LI> --- 482,499 ---- Suppose that the correct answer is 2 sin(3 x) but your answer is just the number 5. ! You might get the following message:<br/> ! <font color=red><br/> Your last answer was: ! <br/><center> 5 ! </center><br/> ! Wrong type.<br/> Your answer should have type ! <br/> dependent(x) ! <br/> but it does not. </font> ! <br/><br/> This means that your answer was supposed to depend on x. </LI> *************** *** 502,515 **** <A NAME="forbid"><H2>Forbidden words</H2></A> ! Suppose that Alice asked you to calculate sin(<FONT FACE=SYMBOL>p</FONT>/4) (for which the answer is of course 2<SUP>-1/2</SUP>). One cunning plan that might occur to you would be to just enter <TT><FONT COLOR=GREEN>sin(pi/4)</FONT></TT> as your answer, leaving Maple to do all the real work. If this worked, it ! would remove the whole point, so Alice prevents it. For each question, there are certain "forbidden words" that you are not allowed to use as part of your answer; in the example above, the word "sin" would be forbidden. If you give an answer ! involving a forbidden word, Alice will tell you, and you will be able to go back and change it without any penalty. --- 502,515 ---- <A NAME="forbid"><H2>Forbidden words</H2></A> ! Suppose that AiM asked you to calculate sin(<FONT FACE=SYMBOL>p</FONT>/4) (for which the answer is of course 2<SUP>-1/2</SUP>). One cunning plan that might occur to you would be to just enter <TT><FONT COLOR=GREEN>sin(pi/4)</FONT></TT> as your answer, leaving Maple to do all the real work. If this worked, it ! would remove the whole point, so AiM prevents it. For each question, there are certain "forbidden words" that you are not allowed to use as part of your answer; in the example above, the word "sin" would be forbidden. If you give an answer ! involving a forbidden word, AiM will tell you, and you will be able to go back and change it without any penalty. *************** *** 520,522 **** not help you in the written exam, which carries much more weight. </BODY> ! </HTML> \ No newline at end of file --- 520,522 ---- not help you in the written exam, which carries much more weight. </BODY> ! </HTML> \ No newline at end of file |
From: <gus...@us...> - 2003-08-24 21:18:37
|
Update of /cvsroot/aimmath/AIM/WEB-INF/java In directory sc8-pr-cvs1:/tmp/cvs-serv12072/WEB-INF/java Modified Files: Tag: develop_2_1 Alice.java Maple.java Log Message: now provide MathDisplay=latex option Index: Alice.java =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/java/Alice.java,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -C2 -d -r1.2.2.1 -r1.2.2.2 Index: Maple.java =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/java/Maple.java,v retrieving revision 1.2.2.2 retrieving revision 1.2.2.3 diff -C2 -d -r1.2.2.2 -r1.2.2.3 *** Maple.java 17 Aug 2003 11:28:24 -0000 1.2.2.2 --- Maple.java 24 Aug 2003 14:44:42 -0000 1.2.2.3 *************** *** 178,184 **** if (out != null) { ! if (mathdisplay == "html") out.print(tth.TtH.convert(outstring.toString())); ! else if (mathdisplay == "latex") out.print(outstring.toString()); else // default to using tth --- 178,184 ---- if (out != null) { ! if (mathdisplay.toLowerCase().equals("html")) // this don't work! How do we do string comparisons? out.print(tth.TtH.convert(outstring.toString())); ! else if (mathdisplay.toLowerCase().equals("latex")) out.print(outstring.toString()); else // default to using tth |
From: <gus...@us...> - 2003-08-24 19:56:17
|
Update of /cvsroot/aimmath/AIM/WEB-INF/classes In directory sc8-pr-cvs1:/tmp/cvs-serv27158/WEB-INF/classes Modified Files: Tag: develop_2_1 AliceLog.class AliceLogEntry.class AliceRequest.class Log Message: now provide MathDisplay=latex option Index: AliceLog.class =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/classes/AliceLog.class,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 Binary files /tmp/cvskTkTcd and /tmp/cvs6rASeg differ Index: AliceLogEntry.class =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/classes/AliceLogEntry.class,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 Binary files /tmp/cvsnjZjde and /tmp/cvsyPUMfi differ Index: AliceRequest.class =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/classes/AliceRequest.class,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 Binary files /tmp/cvsYGLbjf and /tmp/cvsk3M1nk differ |
From: <gus...@us...> - 2003-08-23 23:52:05
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim In directory sc8-pr-cvs1:/tmp/cvs-serv14043/WEB-INF/maple/aim Modified Files: Tag: develop_2_1 Compile.mpl Log Message: Fixed bug that prevented PostPrompt from being set Index: Compile.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/Compile.mpl,v retrieving revision 1.2.2.4 retrieving revision 1.2.2.5 diff -C2 -d -r1.2.2.4 -r1.2.2.5 *** Compile.mpl 17 Jul 2003 13:52:41 -0000 1.2.2.4 --- Compile.mpl 23 Aug 2003 16:27:43 -0000 1.2.2.5 *************** *** 599,603 **** RETURN([cat(__("Problem while parsing answer test:"), sprintf("\n<br/>\n%s\n<br/><br/>\n%s\n<br/><br/>\n", ! err[1],err[3])), nam,atestflagnum,lines]); fi; --- 599,603 ---- RETURN([cat(__("Problem while parsing answer test:"), sprintf("\n<br/>\n%s\n<br/><br/>\n%s\n<br/><br/>\n", ! err[1],err[3])), nam,atestflagnum,lines]); fi; *************** *** 706,710 **** fi; ! iproc := iproc,setans,setnote,setprompt,settype; elif qtype = 'MATRIX' then --- 706,710 ---- fi; ! iproc := iproc,setans,setnote,setprompt,setpost,settype; elif qtype = 'MATRIX' then *************** *** 715,719 **** question['ForbiddenWords'] := forbidden; ! iproc := iproc,setans,setnote,setprompt,setdim; elif member(qtype,{'MC','MR'}) then --- 715,719 ---- question['ForbiddenWords'] := forbidden; ! iproc := iproc,setans,setnote,setprompt,setpost,setdim; elif member(qtype,{'MC','MR'}) then *************** *** 922,927 **** ########## elif member(flag, {"value>","penalty>","answer>","answertest>", ! "answervariable>","prompt>","postprompt>", ! "mapletype>","forbid>"}) then RETURN([sprintf(__("%s flag is not allowed for multipart questions."),flag) ,nam,flagnum,lines]); --- 922,927 ---- ########## elif member(flag, {"value>","penalty>","answer>","answertest>", ! "answervariable>","prompt>","postprompt>", ! "mapletype>","forbid>"}) then RETURN([sprintf(__("%s flag is not allowed for multipart questions."),flag) ,nam,flagnum,lines]); |
From: <gus...@us...> - 2003-08-23 17:41:27
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim In directory sc8-pr-cvs1:/tmp/cvs-serv11389/WEB-INF/maple/aim Modified Files: Tag: develop_2_1 MatrixQuestion.mpl Log Message: Added promp and postprompt to matrix questions. Index: MatrixQuestion.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/MatrixQuestion.mpl,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -C2 -d -r1.2.2.1 -r1.2.2.2 *** MatrixQuestion.mpl 10 Jul 2003 20:10:03 -0000 1.2.2.1 --- MatrixQuestion.mpl 23 Aug 2003 16:13:38 -0000 1.2.2.2 *************** *** 81,84 **** --- 81,95 ---- ], + ['Field','Prompt'::string = __("Answer: "), + "The string used to prompt the student for the answer." + ], + + ['Field','PostPrompt'::string = "", + "A string to be displayed directly after the answer box. For + example, if the answer is to be given in metres, then this + field could be set to the string @\"metres\"@. + " + ], + ['Field','NumRows'::posint, "The number of rows in the matrix." *************** *** 365,369 **** html := ! "<br/>\n", sprintf("<input type='hidden' name='%sNumRows' value='%d'/>\n", cgilabel,rows), --- 376,381 ---- html := ! "<br/>\n<table><tr><td valign=\"middle\">", ! this['Prompt'],"</td><td valign=\"middle\">", sprintf("<input type='hidden' name='%sNumRows' value='%d'/>\n", cgilabel,rows), *************** *** 392,396 **** html := html, ! "</table>\n", sprintf("<input type='hidden' name='%s' value='%s'/>\n", cgilabel,rawans); --- 404,409 ---- html := html, ! "</table>\n</td><td valign=\"middle\">", ! this['PostPrompt'],"</td></tr></table>", sprintf("<input type='hidden' name='%s' value='%s'/>\n", cgilabel,rawans); *************** *** 455,457 **** EndPackage(): - --- 468,469 ---- |
From: <gus...@us...> - 2003-08-23 15:15:43
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple In directory sc8-pr-cvs1:/tmp/cvs-serv27128/WEB-INF/maple Modified Files: Tag: develop_2_1 AutoConf.mpl Log Message: can now also detect the java runtime, not only jdk Index: AutoConf.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/AutoConf.mpl,v retrieving revision 1.1.1.1.2.7 retrieving revision 1.1.1.1.2.8 diff -C2 -d -r1.1.1.1.2.7 -r1.1.1.1.2.8 *** AutoConf.mpl 17 Jul 2003 06:11:56 -0000 1.1.1.1.2.7 --- AutoConf.mpl 23 Aug 2003 14:14:35 -0000 1.1.1.1.2.8 *************** *** 365,372 **** "Env" = "JAVA_HOME", "Def" = ["C:\\java","jdk"], "Def" = ["C:","jdk"], ! "Def" = ["C:","j2sdk1.4.2"], "Def" = ["C:\\Program Files\\java","jdk"], "Def" = ["C:\\Program Files","jdk"], "Path" = "bin/java.exe", "Check" = "bin/java.exe" --- 365,375 ---- "Env" = "JAVA_HOME", "Def" = ["C:\\java","jdk"], + "Def" = ["C:\\java","j2"], "Def" = ["C:","jdk"], ! "Def" = ["C:","j2"], "Def" = ["C:\\Program Files\\java","jdk"], + "Def" = ["C:\\Program Files\\java","j2"], "Def" = ["C:\\Program Files","jdk"], + "Def" = ["C:\\Program Files","j2"], "Path" = "bin/java.exe", "Check" = "bin/java.exe" *************** *** 440,443 **** --- 443,447 ---- "Def" = "C:\\Maple 8\\bin.win\\cmaple8.exe", "Def" = "C:\\Program Files\\Maple 8\\bin.win\\cmaple8.exe", + "Def" = "C:\\Program Files\\Maple 9\\bin.win\\cmaple9.exe", "Def" = "C:\\Maple 7\\bin.wnt\\cmaple.exe", "Def" = "C:\\Program Files\\Maple 7\\bin.wnt\\cmaple.exe", |
From: <gus...@us...> - 2003-08-23 15:11:00
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin In directory sc8-pr-cvs1:/tmp/cvs-serv2841/WEB-INF/maple/aim/admin Modified Files: Tag: develop_2_1 Quiz.mpl Log Message: added a link "Add or edit questions" to the admin quiz page. Index: Quiz.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin/Quiz.mpl,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -C2 -d -r1.2.2.1 -r1.2.2.2 *** Quiz.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 --- Quiz.mpl 23 Aug 2003 15:10:57 -0000 1.2.2.2 *************** *** 100,103 **** --- 100,108 ---- ['LinkText' = __("Browse source"), 'Command' = "admin/SourceDir"]], + + ['Action',"AddEditQuestions", + "Browse the source file directory.", + ['LinkText' = __("Add or edit questions"), + 'Command' = "admin/SourceDir"]], ['Action',"AnalyzeQuiz", *************** *** 169,175 **** [["td", "width" = "40%", "align" = "left"], [["a", "name" = "Questions"],["h2",__("Questions")]]], ! [["td", "width" = "30%", "align" = "right"], {["UseAllQuestions"]}], ! [["td", "width" = "30%", "align" = "right"], {"togglehidden"}]]], {"questiontable"}, --- 174,182 ---- [["td", "width" = "40%", "align" = "left"], [["a", "name" = "Questions"],["h2",__("Questions")]]], ! [["td", "width" = "20%", "align" = "right"], ! {["AddEditQuestions"]}], ! [["td", "width" = "20%", "align" = "right"], {["UseAllQuestions"]}], ! [["td", "width" = "20%", "align" = "right"], {"togglehidden"}]]], {"questiontable"}, |
From: <gus...@us...> - 2003-08-17 11:28:26
|
Update of /cvsroot/aimmath/AIM/WEB-INF/java In directory sc8-pr-cvs1:/tmp/cvs-serv2653/WEB-INF/java Modified Files: Tag: develop_2_1 Maple.java Log Message: Untested modifications by Mad Alex to provide MathDisplay=latex option, see http://aimmath.sourceforge.net/mod/forum/discuss.php?d=22 Index: Maple.java =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/java/Maple.java,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -C2 -d -r1.2.2.1 -r1.2.2.2 *** Maple.java 17 Aug 2003 11:20:51 -0000 1.2.2.1 --- Maple.java 17 Aug 2003 11:28:24 -0000 1.2.2.2 *************** *** 151,155 **** // The command need not have a semicolon or newline at the end // Convert latex using the option given ! public synchronized void exec(String cmd, PrintWriter out, Sting mathdisplay) throws Exception { --- 151,155 ---- // The command need not have a semicolon or newline at the end // Convert latex using the option given ! public synchronized void exec(String cmd, PrintWriter out, String mathdisplay) throws Exception { |
From: <gus...@us...> - 2003-08-17 11:20:54
|
Update of /cvsroot/aimmath/AIM/WEB-INF/java In directory sc8-pr-cvs1:/tmp/cvs-serv1797/WEB-INF/java Modified Files: Tag: develop_2_1 Alice.java Maple.java Log Message: Untested modifications by Mad Alex to provide MathDisplay=latex option, see http://aimmath.sourceforge.net/mod/forum/discuss.php?d=22 Index: Alice.java =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/java/Alice.java,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** Alice.java 5 May 2003 05:15:42 -0000 1.2 --- Alice.java 17 Aug 2003 11:20:51 -0000 1.2.2.1 *************** *** 593,597 **** // execute command, sending output to the web page. try { ! maple.exec("`aim/Main`(" + commandargs + "):\n", webOutput); } catch(Exception e) { logentry.close("ERROR"); --- 593,597 ---- // execute command, sending output to the web page. try { ! maple.exec("`aim/Main`(" + commandargs + "):\n", webOutput, alicereq.mathdisplay); } catch(Exception e) { logentry.close("ERROR"); *************** *** 919,922 **** --- 919,923 ---- public String subject; public String quiz; + public String mathdisplay; static final String[] specialNames = *************** *** 995,998 **** --- 996,1000 ---- subject = r.getParameter("SubjectName"); quiz = r.getParameter("quizName"); + mathdisplay = r.getParameter("MathDisplay"); } else { studentID = mprequest.getParameter("StudentID"); *************** *** 1000,1003 **** --- 1002,1006 ---- subject = mprequest.getParameter("SubjectName"); quiz = mprequest.getParameter("quizName"); + mathdisplay = mprequest.getParameter("MathDisplay"); } *************** *** 1010,1013 **** --- 1013,1017 ---- if (subject == null) { subject = ""; } if (quiz == null) { quiz = ""; } + if (mathdisplay == null) { mathdisplay = "html"; } } Index: Maple.java =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/java/Maple.java,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -C2 -d -r1.2 -r1.2.2.1 *** Maple.java 5 May 2003 05:15:42 -0000 1.2 --- Maple.java 17 Aug 2003 11:20:51 -0000 1.2.2.1 *************** *** 138,149 **** // The command need not have a semicolon or newline at the end public synchronized void exec(String cmd) throws Exception { ! exec(cmd, null); } // Execute a given command 'cmd' and write the results to 'out'. // The command need not have a semicolon or newline at the end ! // ! public synchronized void exec(String cmd, PrintWriter out) throws Exception { --- 138,155 ---- // The command need not have a semicolon or newline at the end public synchronized void exec(String cmd) throws Exception { ! exec(cmd, null, "html"); } // Execute a given command 'cmd' and write the results to 'out'. // The command need not have a semicolon or newline at the end ! // Default to converting the latex output with tth ! public synchronized void exec(String cmd, PrintWriter out) throws Exception { ! exec(cmd, null, "html"); ! } ! // Execute a given command 'cmd' and write the results to 'out'. ! // The command need not have a semicolon or newline at the end ! // Convert latex using the option given ! public synchronized void exec(String cmd, PrintWriter out, Sting mathdisplay) throws Exception { *************** *** 171,177 **** } - // TODO: check if browser accepts <latex> and if so, omit TtH. if (out != null) { ! out.print(tth.TtH.convert(outstring.toString())); } } --- 177,187 ---- } if (out != null) { ! if (mathdisplay == "html") ! out.print(tth.TtH.convert(outstring.toString())); ! else if (mathdisplay == "latex") ! out.print(outstring.toString()); ! else // default to using tth ! out.print(tth.TtH.convert(outstring.toString())); } } |
From: <mo...@us...> - 2003-08-14 15:48:52
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin In directory sc8-pr-cvs1:/tmp/cvs-serv9094 Modified Files: Tag: develop_2_1 ZoneStudentHome.mpl Zone.mpl Log Message: moved ID message input box to Zone Student Login Editor page Index: ZoneStudentHome.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin/Attic/ZoneStudentHome.mpl,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -C2 -d -r1.1.2.2 -r1.1.2.3 *** ZoneStudentHome.mpl 13 Aug 2003 19:10:07 -0000 1.1.2.2 --- ZoneStudentHome.mpl 14 Aug 2003 15:48:40 -0000 1.1.2.3 *************** *** 70,73 **** --- 70,89 ---- [["hr", "noshade"]], + ########## + # KM + + ["h2",__("ID Note")], + ["br"], + __("#Explain ID note"), + ["br"], + [["textarea", "name" = "IDNote", "cols" = "70", "rows" = "20"], + {"IDNote"} + ], + ["br"], + [["hr","noshade"]], + + # END KM + ########## + [["a", "name" = "preview"],["h3",__("Preview:")]], {"headtext"}, *************** *** 77,80 **** --- 93,100 ---- ], ["hr"], + # KM + {"IDNote"}, + ["br"], + # END KM {"foottext"}, ["br"], *************** *** 102,112 **** ['Process', proc(page::`aim/admin/Page`,p::table) - local headtext,foottext,headfile,footfile,action; - # KM global DefaultZone; # END KM - headfile := cat(DefaultZone['RootDir'],"/studenthead.html"); footfile := cat(DefaultZone['RootDir'],"/studentfoot.html"); --- 122,132 ---- ['Process', proc(page::`aim/admin/Page`,p::table) # KM + # DIST local headtext,foottext,headfile,footfile,action; + local headtext,foottext,IDtext,headfile,footfile,action; + global DefaultZone; # END KM headfile := cat(DefaultZone['RootDir'],"/studenthead.html"); footfile := cat(DefaultZone['RootDir'],"/studentfoot.html"); *************** *** 127,131 **** if foottext = lasterror then foottext := ""; fi; ! else headtext := p["HeadText"]; --- 147,159 ---- if foottext = lasterror then foottext := ""; fi; ! ! else # SaveZoneStudentHome ! ! # KM ! page['SetTable', ! DefaultZone, ! 'IDNote' ! ]; ! # END KM headtext := p["HeadText"]; *************** *** 145,149 **** # KM ! try traperror(DefaultZone['MakeLoginPage']); catch : page['SetAlert',"%s\n\n%s", --- 173,177 ---- # KM ! try DefaultZone['MakeLoginPage']; catch : page['SetAlert',"%s\n\n%s", *************** *** 154,157 **** --- 182,187 ---- fi; + IDtext := DefaultZone['IDNote']; + # KM # DIST page['Title'] :=__("Administrator login page edit:"); *************** *** 162,166 **** "Title" = subject['Title'], "headtext" = headtext, ! "foottext" = foottext ]; end --- 192,199 ---- "Title" = subject['Title'], "headtext" = headtext, ! "foottext" = foottext, ! # KM ! "IDNote" = IDtext ! # END KM ]; end Index: Zone.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin/Zone.mpl,v retrieving revision 1.2.2.4 retrieving revision 1.2.2.5 diff -C2 -d -r1.2.2.4 -r1.2.2.5 *** Zone.mpl 13 Aug 2003 19:10:07 -0000 1.2.2.4 --- Zone.mpl 14 Aug 2003 15:48:40 -0000 1.2.2.5 *************** *** 219,239 **** ########## - # KM - # I moved the position of this on the page so more - # features are available without scrolling - - ["h2",__("ID Note")], - ["br"], - __("#Explain ID note"), - ["br"], - [["textarea", "name" = "IDNote", "cols" = "70", "rows" = "20"], - {"IDNote"} - ], - ["br"], - [["hr","noshade"]], - - # END KM - - ########## [["table","width" = "100%"], --- 219,222 ---- |
From: <mo...@us...> - 2003-08-13 20:22:39
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple In directory sc8-pr-cvs1:/tmp/cvs-serv28097 Modified Files: Tag: develop_2_1 Make.mpl Log Message: fixed the "too many files open" bug Index: Make.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Make.mpl,v retrieving revision 1.1.1.1.2.4 retrieving revision 1.1.1.1.2.5 diff -C2 -d -r1.1.1.1.2.4 -r1.1.1.1.2.5 *** Make.mpl 10 Jul 2003 21:32:09 -0000 1.1.1.1.2.4 --- Make.mpl 13 Aug 2003 19:31:02 -0000 1.1.1.1.2.5 *************** *** 91,95 **** kernelopts(printbytes = false): ! pread("Package.mpl"): if MakeTrans = true then --- 91,101 ---- kernelopts(printbytes = false): ! # KM ! # DIST pread("Package.mpl"): ! if `Package/IsLoaded` <> true then ! pread("FullPackage.mpl"): ! `Package/IsLoaded` := true: ! fi; ! # END KM if MakeTrans = true then |
From: <mo...@us...> - 2003-08-13 19:45:51
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim In directory sc8-pr-cvs1:/tmp/cvs-serv24159 Modified Files: Tag: develop_2_1 Zone.mpl Log Message: minor bug fixes and improvements Index: Zone.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/Zone.mpl,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -C2 -d -r1.2.2.1 -r1.2.2.2 *** Zone.mpl 10 Jul 2003 20:10:03 -0000 1.2.2.1 --- Zone.mpl 13 Aug 2003 19:09:34 -0000 1.2.2.2 *************** *** 210,219 **** studenthead := traperror( ! `Util/TextFileContents`(cat(this['RootDir'],"/zonehead.html"))); if studenthead = lasterror then studenthead := ""; fi; studentfoot := traperror( ! `Util/TextFileContents`(cat(this['RootDir'],"/zonefoot.html"))); if studentfoot = lasterror then studentfoot := ""; fi; --- 210,225 ---- studenthead := traperror( ! # KM ! # DIST `Util/TextFileContents`(cat(this['RootDir'],"/zonehead.html"))); ! `Util/TextFileContents`(cat(this['RootDir'],"/studenthead.html"))); ! # END KM if studenthead = lasterror then studenthead := ""; fi; studentfoot := traperror( ! # KM ! # DIST `Util/TextFileContents`(cat(this['RootDir'],"/zonefoot.html"))); ! `Util/TextFileContents`(cat(this['RootDir'],"/studentfoot.html"))); ! # END KM if studentfoot = lasterror then studentfoot := ""; fi; *************** *** 230,234 **** "action" = this['ServletURL'], "method" = "POST"], ! [["inputhidden", "name" = "Command", "value" = ""]], this['SubjectTable'], ["table", --- 236,240 ---- "action" = this['ServletURL'], "method" = "POST"], ! [["inputhidden", "name" = "Command", "value" = ""]], this['SubjectTable'], ["table", |
From: <mo...@us...> - 2003-08-13 19:15:32
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin In directory sc8-pr-cvs1:/tmp/cvs-serv24258 Modified Files: Tag: develop_2_1 ZoneStudentHome.mpl ZoneAdminHome.mpl Zone.mpl Log Message: minor bug fixes and improvements Index: ZoneStudentHome.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin/Attic/ZoneStudentHome.mpl,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -C2 -d -r1.1.2.1 -r1.1.2.2 *** ZoneStudentHome.mpl 10 Jul 2003 20:10:04 -0000 1.1.2.1 --- ZoneStudentHome.mpl 13 Aug 2003 19:10:07 -0000 1.1.2.2 *************** *** 9,12 **** --- 9,15 ---- `aim/admin/Command/Declare`('`admin/ZoneStudentHome`', + # KM + ['AuthLevel',"zone"], + # END KM ['Parameter', "Action" :: *************** *** 101,104 **** --- 104,112 ---- local headtext,foottext,headfile,footfile,action; + # KM + global DefaultZone; + # END KM + + headfile := cat(DefaultZone['RootDir'],"/studenthead.html"); footfile := cat(DefaultZone['RootDir'],"/studentfoot.html"); *************** *** 110,114 **** if headtext = lasterror then ! headtext := "<h1>Administrator login page</h1>\n<br/>\n"; fi; --- 118,125 ---- if headtext = lasterror then ! # KM ! # DIST headtext := "<h1>Administrator login page</h1>\n<br/>\n"; ! headtext := "<h1>Student login page</h1>\n<br/>\n"; ! # END KM fi; *************** *** 120,124 **** headtext := p["HeadText"]; if headtext = "" then ! headtext := "<h1>Administrator login page</h1>\n<br/>\n"; fi; --- 131,138 ---- headtext := p["HeadText"]; if headtext = "" then ! # KM ! # DIST headtext := "<h1>Administrator login page</h1>\n<br/>\n"; ! headtext := "<h1>Student login page</h1>\n<br/>\n"; ! # END KM fi; *************** *** 130,136 **** traperror(fclose(footfile)); fi; ! page['Title'] :=__("Administrator login page edit:"); page['FillTemplate', --- 144,161 ---- traperror(fclose(footfile)); + # KM + try traperror(DefaultZone['MakeLoginPage']); + catch : + page['SetAlert',"%s\n\n%s", + __("Could not create login pages"),lasterr]; + end: + # END KM + fi; ! # KM ! # DIST page['Title'] :=__("Administrator login page edit:"); ! page['Title'] :=__("Student login page editor:"); ! # END page['FillTemplate', Index: ZoneAdminHome.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin/Attic/ZoneAdminHome.mpl,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -C2 -d -r1.1.2.1 -r1.1.2.2 *** ZoneAdminHome.mpl 10 Jul 2003 20:10:04 -0000 1.1.2.1 --- ZoneAdminHome.mpl 13 Aug 2003 19:10:07 -0000 1.1.2.2 *************** *** 9,12 **** --- 9,15 ---- `aim/admin/Command/Declare`('`admin/ZoneAdminHome`', + # KM + ['AuthLevel',"zone"], + # END KM ['Parameter', "Action" :: *************** *** 101,104 **** --- 104,111 ---- local headtext,foottext,headfile,footfile,action; + # KM + global DefaultZone; + # END KM + headfile := cat(DefaultZone['RootDir'],"/adminhead.html"); footfile := cat(DefaultZone['RootDir'],"/adminfoot.html"); *************** *** 129,132 **** --- 136,146 ---- traperror(fclose(headfile)); traperror(fclose(footfile)); + # KM + try traperror(DefaultZone['MakeLoginPage']); + catch : + page['SetAlert',"%s\n\n%s", + __("Could not create login pages"),lasterr]; + end; + # END KM fi; Index: Zone.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/admin/Zone.mpl,v retrieving revision 1.2.2.3 retrieving revision 1.2.2.4 diff -C2 -d -r1.2.2.3 -r1.2.2.4 *** Zone.mpl 13 Jul 2003 14:54:05 -0000 1.2.2.3 --- Zone.mpl 13 Aug 2003 19:10:07 -0000 1.2.2.4 *************** *** 14,19 **** ['Parameter',"SubjectName"], ! ['Parameter',"ShowHiddenSubjects"::boolean = false], ! ['Parameter', "Action" :: --- 14,21 ---- ['Parameter',"SubjectName"], ! # KM ! # DIST ['Parameter',"ShowHiddenSubjects"::boolean = false], ! ['Parameter',"ShowHiddenSubjects"::boolean = true], ! # END KM ['Parameter', "Action" :: *************** *** 189,203 **** ########## - ["h2",__("ID Note")], - ["br"], - __("#Explain ID note"), - ["br"], - [["textarea", "name" = "IDNote", "cols" = "70", "rows" = "20"], - {"IDNote"} - ], - ["br"], - - ########## - [["table", "width" = "100%"], ["tr", --- 191,194 ---- *************** *** 227,230 **** --- 218,240 ---- [["hr","noshade"]], + ########## + # KM + # I moved the position of this on the page so more + # features are available without scrolling + + ["h2",__("ID Note")], + ["br"], + __("#Explain ID note"), + ["br"], + [["textarea", "name" = "IDNote", "cols" = "70", "rows" = "20"], + {"IDNote"} + ], + ["br"], + [["hr","noshade"]], + + # END KM + + ########## + [["table","width" = "100%"], ["tr", *************** *** 344,355 **** ["table", "width" = "100%"], ["tr", ! [["th", "align" = "left", "width" = "10%"], ! __("Subject number")], ! [["th", "align" = "left", "width" = "50%"], ! __("Name")], ! [["th", "align" = "left", "width" = "10%"]," "], ! [["th", "align" = "left", "width" = "10%"]," "], ! [["th", "align" = "left", "width" = "10%"]," "], ! [["th", "align" = "left", "width" = "10%"]," "]], ["tr", [["td", "colspan" = "8"],["hr"]]]); --- 354,365 ---- ["table", "width" = "100%"], ["tr", ! [["th", "align" = "left", "width" = "10%"], ! __("Subject number")], ! [["th", "align" = "left", "width" = "50%"], ! __("Name")], ! [["th", "align" = "left", "width" = "10%"]," "], ! [["th", "align" = "left", "width" = "10%"]," "], ! [["th", "align" = "left", "width" = "10%"]," "], ! [["th", "align" = "left", "width" = "10%"]," "]], ["tr", [["td", "colspan" = "8"],["hr"]]]); *************** *** 359,368 **** subjecttable['AddContents', ["tr",[["td", "colspan" = "8"], ! __("Visible subjects")]]]; else togglehidden := page['ActionLink',"ShowHiddenSubjects"]; explainhidden := sprintf(__("#Explain hidden subjects (%s)"), ! page['ActionLink',"ShowHiddenSubjects"]); fi; --- 369,378 ---- subjecttable['AddContents', ["tr",[["td", "colspan" = "8"], ! __("Visible subjects")]]]; else togglehidden := page['ActionLink',"ShowHiddenSubjects"]; explainhidden := sprintf(__("#Explain hidden subjects (%s)"), ! page['ActionLink',"ShowHiddenSubjects"]); fi; *************** *** 378,393 **** subjecttable['AddContents', ["tr", ! [["td", "align" = "left"], ! [["inputtext", ! "name" = cat(nam,"Order"), ! "value" = sprintf("%A",subjectnumber), ! "size" = "3"]]], ! [["td","align" = "left"],nam], ! [["td","align" = "left"], ! page['ActionLink',"LoadSubjectOptions",[nam]]], ! [["td","align" = "left"], ! page['ActionLink',"AnalyzeSubject",[nam]]], ! [["td","align" = "left"], ! page['ActionLink',"ToggleSubject",[nam],__("Hide")]]]] od; fi; --- 388,403 ---- subjecttable['AddContents', ["tr", ! [["td", "align" = "left"], ! [["inputtext", ! "name" = cat(nam,"Order"), ! "value" = sprintf("%A",subjectnumber), ! "size" = "3"]]], ! [["td","align" = "left"],nam], ! [["td","align" = "left"], ! page['ActionLink',"LoadSubjectOptions",[nam]]], ! [["td","align" = "left"], ! page['ActionLink',"AnalyzeSubject",[nam]]], ! [["td","align" = "left"], ! page['ActionLink',"ToggleSubject",[nam],__("Hide")]]]] od; fi; *************** *** 397,418 **** subjecttable['AddContents', ["tr", ! [["td", "align" = "center","colspan" = "8"], ! __("There are no hidden subjects for this zone.")]]]; else subjecttable['AddContents', ["tr",[["td", "colspan" = "8"],["hr"]]], ["tr",[["td", "colspan" = "8"], ! __("Hidden subjects")]]]; for nam in hiddensubjects do subjecttable['AddContents', ! ["tr", ! [["td", "align" = "left"], " "], ! [["td","align" = "left"],nam], ! [["td","align" = "left"], ! page['ActionLink',"LoadSubjectOptions",[nam]]], ! [["td","align" = "left"]," "], ! [["td","align" = "left"], ! page['ActionLink',"ToggleSubject",[nam],__("Unhide")]]]] od; fi; --- 407,428 ---- subjecttable['AddContents', ["tr", ! [["td", "align" = "center","colspan" = "8"], ! __("There are no hidden subjects for this zone.")]]]; else subjecttable['AddContents', ["tr",[["td", "colspan" = "8"],["hr"]]], ["tr",[["td", "colspan" = "8"], ! __("Hidden subjects")]]]; for nam in hiddensubjects do subjecttable['AddContents', ! ["tr", ! [["td", "align" = "left"], " "], ! [["td","align" = "left"],nam], ! [["td","align" = "left"], ! page['ActionLink',"LoadSubjectOptions",[nam]]], ! [["td","align" = "left"]," "], ! [["td","align" = "left"], ! page['ActionLink',"ToggleSubject",[nam],__("Unhide")]]]] od; fi; |
From: <mo...@us...> - 2003-08-11 15:37:43
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple In directory sc8-pr-cvs1:/tmp/cvs-serv14325 Modified Files: Tag: KM Make.mpl Log Message: minor tweak to prevent error message saying too many files are open under Maple 9 when running AutoConf.mpl Index: Make.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/Make.mpl,v retrieving revision 1.1.1.1.2.4 retrieving revision 1.1.1.1.2.4.2.1 diff -C2 -d -r1.1.1.1.2.4 -r1.1.1.1.2.4.2.1 *** Make.mpl 10 Jul 2003 21:32:09 -0000 1.1.1.1.2.4 --- Make.mpl 11 Aug 2003 15:22:35 -0000 1.1.1.1.2.4.2.1 *************** *** 91,95 **** kernelopts(printbytes = false): ! pread("Package.mpl"): if MakeTrans = true then --- 91,101 ---- kernelopts(printbytes = false): ! # KM ! # DIST pread("Package.mpl"): ! if `Package/IsLoaded` <> true then ! pread("FullPackage.mpl"): ! `Package/IsLoaded` := true: ! fi; ! # END KM if MakeTrans = true then |
From: <gr...@us...> - 2003-07-27 20:22:16
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim In directory sc8-pr-cvs1:/tmp/cvs-serv5574 Modified Files: Tag: develop_2_1 Quiz.mpl Log Message: Fixes bug in `Results' link of admin. - GG Index: Quiz.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/Quiz.mpl,v retrieving revision 1.3.2.1 retrieving revision 1.3.2.2 diff -C2 -d -r1.3.2.1 -r1.3.2.2 *** Quiz.mpl 10 Jul 2003 20:10:03 -0000 1.3.2.1 --- Quiz.mpl 27 Jul 2003 20:22:13 -0000 1.3.2.2 *************** *** 1817,1832 **** ['Method','MarkCode'::`aim/MarkCode`, "", ! proc(this,questionname::string,partlabel::string) ! local markcode; ! ! markcode := this['MarkCodeTable'][questionname,partlabel]; ! # next block for backwards compatibility with analysis objects ! # created with earlier versions of AIM. ! if not(type([markcode],[`aim/MarkCode`])) and ! partlabel = "" then ! markcode := this['MarkCodeTable'][questionname]; fi; - markcode; end ], --- 1817,1834 ---- ['Method','MarkCode'::`aim/MarkCode`, "", ! proc(this,questionname::string,partlabel_::string) ! local t,partlabel; ! t := this['MarkCodeTable']; ! partlabel := `if`(evalb(nargs = 3), partlabel_, ""); ! if assigned(t[questionname,partlabel]) then ! t[questionname,partlabel]; ! elif assigned(t[questionname]) then ! # for backwards compatibility with analysis objects ! # created with earlier versions of AIM ! t[questionname]; ! else ! " "; fi; end ], |
From: <gr...@us...> - 2003-07-27 20:20:11
|
Update of /cvsroot/aimmath/AIM/WEB-INF/maple/aim/analyze In directory sc8-pr-cvs1:/tmp/cvs-serv4930/analyze Modified Files: Tag: develop_2_1 Quiz.mpl Log Message: This fixes the bug that caused the `Results' link in admin to run into error. - GG Index: Quiz.mpl =================================================================== RCS file: /cvsroot/aimmath/AIM/WEB-INF/maple/aim/analyze/Quiz.mpl,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -C2 -d -r1.2.2.1 -r1.2.2.2 *** Quiz.mpl 10 Jul 2003 20:10:04 -0000 1.2.2.1 --- Quiz.mpl 27 Jul 2003 20:19:55 -0000 1.2.2.2 *************** *** 124,130 **** local subject,register,ids,action,quizname,quiz, ! qnames,i,istring,qname,question,analysis,entry, resultstable,questiontable,timedatestring,f,g, ! qlist,nllist; action := p["Action"]; --- 124,130 ---- local subject,register,ids,action,quizname,quiz, ! qn,qnos,i,qname,question,analysis,entry, resultstable,questiontable,timedatestring,f,g, ! nl,qlist,nllist; action := p["Action"]; *************** *** 145,149 **** analysis := traperror(eval(quiz['GetAnalysis'])); fi; ! if analysis = NULL then register := eval(subject['GetRegister']); --- 145,149 ---- analysis := traperror(eval(quiz['GetAnalysis'])); fi; ! if analysis = NULL then register := eval(subject['GetRegister']); *************** *** 161,164 **** --- 161,174 ---- nllist := map(q -> [q['Name'],q['PartLabel']],qlist); + qn := 0; + qnos := NULL; + for nl in nllist do + if member(nl[2], {"", ".1"}) then + qn := qn + 1; + fi; + qnos := qnos, cat("", qn, nl[2]); + od; + qnos := [qnos]; + if analysis['AnalysisTime'] = NULL then timedatestring := ""; *************** *** 197,200 **** --- 207,211 ---- f := (n,x) -> cat("<td>",x['MarkString',op(n)],"</td>\n"); + #f := (n,x) -> cat("<td>",convert(eval(x['MarkCodeTable][op(1,n)])),"</td>\n"); g := proc(entry,nllist) *************** *** 224,229 **** "<th>",__("ID"),"</th>\n", "<th>",__("Name"),"</th>\n", ! seq(sprintf("<th><a href='#Q%d'>%d</a></th>\n",i,i), ! i=1..nops(nllist)), "<th>",__("Total"),"</th>\n", "</tr>", --- 235,239 ---- "<th>",__("ID"),"</th>\n", "<th>",__("Name"),"</th>\n", ! seq(sprintf("<th><a href='#Q%s'>%s</a></th>\n",qn,qn),qn=qnos), "<th>",__("Total"),"</th>\n", "</tr>", *************** *** 246,250 **** for i to nops(nllist) do - istring := sprintf("%d",i); question := qlist[i]; if type(question,`aim/Question`) then --- 256,259 ---- *************** *** 252,256 **** questiontable['AddContents', ["tr", ! ["td",[["a", "name" = cat("Q",istring)],istring]], ["td",qname], ["td",question['PartLabel']], --- 261,265 ---- questiontable['AddContents', ["tr", ! ["td",[["a", "name" = cat("Q",qnos[i])],qnos[i]]], ["td",qname], ["td",question['PartLabel']], |
From: <gr...@us...> - 2003-07-21 04:48:40
|
Update of /cvsroot/aimmath/AIM/doc In directory sc8-pr-cvs1:/tmp/cvs-serv3563 Modified Files: Tag: develop_2_1 format.html Log Message: Fixed a comment. - GG Index: format.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/format.html,v retrieving revision 1.1.1.1.2.2 retrieving revision 1.1.1.1.2.3 diff -C2 -d -r1.1.1.1.2.2 -r1.1.1.1.2.3 *** format.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.2 --- format.html 21 Jul 2003 04:48:37 -0000 1.1.1.1.2.3 *************** *** 762,768 **** string trig. Then the following example demonstrates how to get all these questions into a quiz with one include> command: <pre><font color='green'> ########################################### ! # Revised question source file bar.aim i> EXAMPLES/Site/trig* ########################################### --- 762,769 ---- string trig. Then the following example demonstrates how to get all these questions into a quiz with one include> command: + <pre><font color='green'> ########################################### ! # local trigonometry questions i> EXAMPLES/Site/trig* ########################################### |
From: <gr...@us...> - 2003-07-21 04:36:58
|
Update of /cvsroot/aimmath/AIM/doc In directory sc8-pr-cvs1:/tmp/cvs-serv2198 Modified Files: Tag: develop_2_1 admindoc.html Log Message: Trying again. - GG Index: admindoc.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/admindoc.html,v retrieving revision 1.1.1.1.2.1 retrieving revision 1.1.1.1.2.2 diff -C2 -d -r1.1.1.1.2.1 -r1.1.1.1.2.2 *** admindoc.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.1 --- admindoc.html 21 Jul 2003 04:36:55 -0000 1.1.1.1.2.2 *************** *** 1167,1169 **** </table> </body> ! </html> \ No newline at end of file --- 1167,1169 ---- </table> </body> ! </html> |
Update of /cvsroot/aimmath/AIM/doc In directory sc8-pr-cvs1:/tmp/cvs-serv31685 Modified Files: Tag: develop_2_1 admindoc.html aimhome.html components.html concepts.html coslicense.html files.html format.html help.html index.html install.html installwin.html monitor.html packing.html tasks.html teacher.html todo.html Log Message: Generally: added Id string header as comment after the <html> line, ensured each file had a <title>...</title> enclosed in <head>...</head> format.html: added short description of av>, answervariable> tag, fixed a few typos., explained EXAMPLES and wildcard substitution in detailed description of i>, include> tag and gave an example - GG Index: admindoc.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/admindoc.html,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** admindoc.html 20 Apr 2003 23:14:31 -0000 1.1.1.1 --- admindoc.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.1 *************** *** 1,3 **** --- 1,4 ---- <html> + <!-- @(#)$Id$ --> <head> <title>AIM admin pages and actions</title> Index: aimhome.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/aimhome.html,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** aimhome.html 20 Apr 2003 23:14:32 -0000 1.1.1.1 --- aimhome.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.1 *************** *** 1,3 **** --- 1,4 ---- <html> + <!-- @(#)$Id$ --> <head><title>Alice Interactive Mathematics</title></head> <body bgcolor='white'> Index: components.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/components.html,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** components.html 20 Apr 2003 23:14:34 -0000 1.1.1.1 --- components.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.1 *************** *** 1,3 **** --- 1,4 ---- <html> + <!-- @(#)$Id$ --> <head><title>AIM Software Components</title></head> <body bgcolor='white'> Index: concepts.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/concepts.html,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** concepts.html 20 Apr 2003 23:14:34 -0000 1.1.1.1 --- concepts.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.1 *************** *** 1,3 **** --- 1,4 ---- <html> + <!-- @(#)$Id$ --> <head> <title>AIM Concepts</title> Index: coslicense.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/coslicense.html,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** coslicense.html 20 Apr 2003 23:14:35 -0000 1.1.1.1 --- coslicense.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.1 *************** *** 1,4 **** <html> ! <title>Servlets.com | com.oreilly.servlet license</title> </head> <body bgcolor='white'> --- 1,6 ---- <html> ! <!-- @(#)$Id$ --> ! <head> ! <title>cos license</title> </head> <body bgcolor='white'> Index: files.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/files.html,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** files.html 20 Apr 2003 23:14:36 -0000 1.1.1.1 --- files.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.1 *************** *** 1,3 **** --- 1,4 ---- <html> + <!-- @(#)$Id$ --> <head> <title>Files and directories</title> Index: format.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/format.html,v retrieving revision 1.1.1.1.2.1 retrieving revision 1.1.1.1.2.2 diff -C2 -d -r1.1.1.1.2.1 -r1.1.1.1.2.2 *** format.html 10 Jul 2003 20:10:05 -0000 1.1.1.1.2.1 --- format.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.2 *************** *** 1,4 **** --- 1,5 ---- <!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en"> <html> + <!-- @(#)$Id$ --> <head> <title>AIM Question Syntax</title> *************** *** 353,358 **** <td>Specify the prompt for the student's answer (in LaTeX)</td> </tr> <tr><td>pp></td> ! <td><a href='#prompt'>postprompt></a></td> <td>Specify a string to go directly after the box in which the student's answer is entered. --- 354,364 ---- <td>Specify the prompt for the student's answer (in LaTeX)</td> </tr> + <tr><td>av></td> + <td><a href='#answervariable'>answervariable></a></td> + <td>Specify the name of a global variable in which to record the + student's answer.</td> + </tr> <tr><td>pp></td> ! <td><a href='#postprompt'>postprompt></a></td> <td>Specify a string to go directly after the box in which the student's answer is entered. *************** *** 473,477 **** The attached text should be the name of a global variable in which to ! record the students answer, so that other parts of the same question can refer to it. --- 479,483 ---- The attached text should be the name of a global variable in which to ! record the student's answer, so that other parts of the same question can refer to it. *************** *** 669,673 **** source file being compiled. Included files may also contain include> flags and so on. No ! attempt is made to check for circular chains of inclusions. <br><br> Example: --- 675,688 ---- source file being compiled. Included files may also contain include> flags and so on. No ! attempt is made to check for circular chains of inclusions. ! Filenames may also start with EXAMPLES, which is interpreted to mean the ! path to the examples directory (which is parallel to the doc directory in ! which this .html file resides). This provides a convenient shortcut for ! using some readymade questions that reside in this directory that are ! distributed with AIM. This also enables the possibility of having a ! subdirectory Site of the examples directory in which all local quiz files ! are put; this is convenient if, for example, quiz questions are shared ! among several subjects. Finally, (by using the operating system dir or ls ! command) the wildcards * and ? are supported in filenames. <br><br> Example: *************** *** 740,743 **** --- 755,769 ---- i> foo.aim # end of bar.aim + ########################################### + </font></pre> + + Suppose you have a subdirectory Site containing a variety of quiz + question files, but all those pertaining to trigonometry start with the + string trig. Then the following example demonstrates how to get all these + questions into a quiz with one include> command: + <pre><font color='green'> + ########################################### + # Revised question source file bar.aim + i> EXAMPLES/Site/trig* ########################################### </font></pre> Index: help.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/help.html,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** help.html 20 Apr 2003 23:14:44 -0000 1.1.1.1 --- help.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.1 *************** *** 1,3 **** --- 1,4 ---- <HTML> + <!-- @(#)$Id$ --> <HEAD> <TITLE>AIM help</TITLE> Index: index.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/index.html,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** index.html 20 Apr 2003 23:14:45 -0000 1.1.1.1 --- index.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.1 *************** *** 1,3 **** --- 1,4 ---- <html> + <!-- @(#)$Id$ --> <head><title>AIM System documentation</title></head> <body bgcolor='white'> Index: install.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/install.html,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** install.html 20 Apr 2003 23:14:47 -0000 1.1.1.1 --- install.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.1 *************** *** 1,3 **** --- 1,4 ---- <html> + <!-- @(#)$Id$ --> <head> <title>Installing AIM</title> Index: installwin.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/Attic/installwin.html,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -C2 -d -r1.1.2.1 -r1.1.2.2 *** installwin.html 15 Jul 2003 19:50:09 -0000 1.1.2.1 --- installwin.html 21 Jul 2003 04:14:29 -0000 1.1.2.2 *************** *** 1,3 **** --- 1,4 ---- <html> + <!-- @(#)$Id$ --> <head> <title>Installing AiM under Windows</title> Index: monitor.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/monitor.html,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** monitor.html 20 Apr 2003 23:14:47 -0000 1.1.1.1 --- monitor.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.1 *************** *** 1,5 **** ! <html><head> ! <title>AIM servlet monitor page</title> ! </head> <body> --- 1,6 ---- ! <html> ! <!-- @(#)$Id$ --> ! <head> ! <title>AIM servlet monitor page</title </head> <body> Index: packing.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/packing.html,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** packing.html 20 Apr 2003 23:14:47 -0000 1.1.1.1 --- packing.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.1 *************** *** 1,3 **** --- 1,4 ---- <html> + <!-- @(#)$Id$ --> <head><title>The AIM packaging system</title></head> <body bgcolor='white'> Index: tasks.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/tasks.html,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** tasks.html 20 Apr 2003 23:14:51 -0000 1.1.1.1 --- tasks.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.1 *************** *** 1,3 **** --- 1,4 ---- <html> + <!-- @(#)$Id$ --> <head> <title>AIM Help</title> Index: teacher.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/teacher.html,v retrieving revision 1.1.1.1 retrieving revision 1.1.1.1.2.1 diff -C2 -d -r1.1.1.1 -r1.1.1.1.2.1 *** teacher.html 20 Apr 2003 23:14:55 -0000 1.1.1.1 --- teacher.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.1 *************** *** 1,3 **** --- 1,4 ---- <html> + <!-- @(#)$Id$ --> <head><title>Documentation for teachers and administrators</title></head> <body bgcolor='white'> Index: todo.html =================================================================== RCS file: /cvsroot/aimmath/AIM/doc/todo.html,v retrieving revision 1.1.1.1.2.1 retrieving revision 1.1.1.1.2.2 diff -C2 -d -r1.1.1.1.2.1 -r1.1.1.1.2.2 *** todo.html 10 Jul 2003 20:10:05 -0000 1.1.1.1.2.1 --- todo.html 21 Jul 2003 04:14:29 -0000 1.1.1.1.2.2 *************** *** 2,5 **** --- 2,6 ---- "http://www.w3.org/TR/REC-html40/loose.dtd"> <html> + <!-- @(#)$Id$ --> <head> <title>AIM TODO list</title> |