User:Malcolm/wip/Sage WW Notes

From WeBWorK_wiki
Jump to navigation Jump to search

Notes on embedding Sage into WW problems using the Sage cell server - May/June 2012

Passing Functions - Don't use Contexts

When passing functions to Sage, if the function is defined as a math object problems can occur since it can happen that none of <source lang="perl"> $f $f->string() $f->stringify() $f->TeX() </source> return the orginal string used to define the function.

For example with the set up: <source lang="perl"> Context("Numeric"); $f = Compute("(x-(-2))*(x-2)*(x-4)"); </source> then

  • $f->string() produces [x-(-2)]*(x-2)*(x-4)
  • $f->TeX() produces \left(x-\left(-2\right)\right)\!\left(x-2\right)\!\left(x-4\right)
  • $f->stringify() produces:
    • [x-(-2)]*(x-2)*(x-4) in normalStrings
    • \left(x-\left(-2\right)\right)\!\left(x-2\right)\!\left(x-4\right) in texStrings

None of theses are suitable for passing to Sage.

Possible solution:

  1. Use a construction like
    <source> $f_raw = "(x-(-2))*(x-2)*(x-4)";</source>
    <source> $f = Compute($f_raw); </source>

And use $f_raw to pass to Sage and $f to work with in WW.

  1. TODO investigate using string(), but setting some flags noparen
  • After
    <source> Context("Numeric"); </source>
    <source> $g = Compute("(x-(-2))*(x-2)*(x-4)"); </source>
    $g->with(showExtraParens=>0)->string() produces [x-(-2)]*(x-2)*(x-4)
    $g->with(showExtraParens=>0)->stringify() produces [x-(-2)]*(x-2)*(x-4) in normalStrings
  • But after
    <source>Context()->flags->set(showExtraParens=>0);</source>
    $g->stringify() produces (x--2)*(x-2)*(x-4) which is in the right direction.

Two problems with MathJax

The Sage Cell Server uses MathJax for pretty display, but configures MathJax to be compatible with jsMath. There are two problems with the way things work presently:

  1. When using display modes images or jsMath in WW, everything displays correctly, but the MathJax displayed math in the cell server output is not copy/pastable. (tested only in FF 12.0)
  2. When using display mode MathJax in WW, the WW page displays properly (using MathJax), but the MathJax in the cell server portion brreaks - it looks like close to raw TeX. (again tested only in FF 12.0)

The good news is that this problem will go away in about six months when the jsMath dependency is removed from the Cell Server so that the Cell Server can use a very vanilla version of the Math Jax config wich will work with the WW version.

To Do

  • Add a link to a Sage Cell Server to the WW configuration files to be used by WW problems
  • Find a way to obfuscate the Sage code passed to the SCS
  • Find a way to pass Sage answers into WW
    • TOTRY - Use a hidden form field to replace the webwork answer box.
    This works with some caveats. See here