# PGLabs

On-line labs for rendering of PG code. These two labs allow you to experiment with PG syntax.

### Test your PG code fragments[edit]

Click on this link to go to PG calculator:

For example you could enter the code fragment below into the calculator:

Context("Numeric"); $f = Compute("x^2-3x+5"); $fp = $f->D; # calculate the derivative checkAnswer($fp, "2x-3"); # the first argument is a MathObject, the second the student's answer string

- On the last line
`TEXT`

prints the results of (reading from left to right)- Constructing the AnswerEvaluator for the contents of the Formula
`$fp`

- Evaluating the string
`"2x-3"`

using this AnswerEvaluator to produce an AnswerHash - Recursively representing the contents of the AnswerHash in a nice table.

- Constructing the AnswerEvaluator for the contents of the Formula

`checkAnswer()`

inserts its arguments into a more complicated command. e.g. last line above becomes:

TEXT($fp->cmp->evaluate("2x-3")->pretty_print);

### PGML markup lab[edit]

- Experiment with the new PG markup language syntax (PGML) which simplifies the graphical layout of the mathematics question.

https://courses1.webwork.maa.org/webwork2/cervone_course/PGML?login_practice_user=true

Several dozen questions illustrating the use of PGML:

https://courses1.webwork.maa.org/webwork2/cervone_course/PGML-examples/?login_practice_user=true

To use these commands in your own courses you will need to include `PGML.pl`

in your `loadMacros()`

segment. Start the display of your problem text with `BEGIN_PGML`

which expands to

TEXT(PGML::Format2(<<'END_PGML'));

and end with `END_PGML`

. These are used instead of the usual `BEGIN_TEXT/END_TEXT`

construction. You can use both `BEGIN_TEXT/END_TEXT`

and `BEGIN_PGML/END_PGML`

in the same problem, if you wish. See SampleProblem4 for an example (with explanation) that uses PGML.