Loading and Use - PGML

From WeBWorK_wiki
Jump to navigation Jump to search

Loading the macro file[edit]

If you are going to use PGML in your problem, you must include "PGML.pl" in the loadMacros() call at the beginning of your problem.

 loadMacros("PGML.pl");

If you don't, you'll get a message about PGML::Format2 not being defined.

Producing Text using PGML[edit]

The text that you want processed by PGML should be enclosed in BEGIN_PGML and END_PGML, each on a separate line. That is,

 BEGIN_PGML
 ... your PGML code here ...
 END_PGML

You can have as many such PGML sections as you like within one problem.

Producing Solutions using PGML[edit]

The text of the solution should be enclosed in BEGIN_PGML_SOLUTION and END_PGML_SOLUTION, each on a separate line. That is,

 BEGIN_PGML_SOLUTION
 ... your PGML code here ...
 END_PGML_SOLUTION

PGML's math formatting and command substitution commands are particularly useful here, as you can include intermediate computations directly within the PGML itself:

 BEGIN_PGML_SOLUTION
 If [:x = [$a]:], then [:x+1 = ([$a]+1) = [@ $a+1 @]:]
 END_PGML_SOLUTION

There is no need to use a separate variable for the value of $a+1, as the result of this computation will be inserted into the solution at that point.

Producing Hints using PGML[edit]

The text for the hint should be enclosed in BEGIN_PGML_HINT and END_PGML_HINT, each on a separate line. That is,

 BEGIN_PGML_HINT
 ... your PGML code here ...
 END_PGML_HINT

As with solutions, you can perform computations and mathematical typesetting within the PGML hint:

 BEGIN_PGML_HINT
 What happens when [:x = [@ $a - $b @]:]?
 END_PGML_HINT

There is no need for a separate variable for the value of $a-$b.