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>
|