Commit 49f85211 by Peter Baratta

More documentation for the javascript

parent c6545eb0
/* This file defines a processor in between the student's math input
(AsciiMath) and what is read by MathJax. It allows for our own
customizations, such as use of the syntax "a_b__x" in superscripts, or
possibly coloring certain variables, etc&.
It is used in the <textline> definition like the following:
<symbolicresponse expect="a_b^c + b_x__d" size="30">
<textline math="1"
preprocessorClassName="SymbolicMathjaxPreprocessor"
preprocessorSrc="/static/js/capa/symbolic_mathjax_preprocessor.js"/>
</symbolicresponse>
*/
window.SymbolicMathjaxPreprocessor = function () { window.SymbolicMathjaxPreprocessor = function () {
this.fn = function (eqn) { this.fn = function (eqn) {
// flags and config // flags and config
var superscriptsOn = true; var superscriptsOn = true;
if (superscriptsOn) { if (superscriptsOn) {
// find instances of "__" and make them superscripts ("^") and tag them // find instances of "__" and make them superscripts ("^") and tag them
// as such. Specifcally replace instances of "__X" or "__{XYZ}" with // as such. Specifcally replace instances of "__X" or "__{XYZ}" with
// "^{CHAR$1}", marking superscripts as different from powers // "^{CHAR$1}", marking superscripts as different from powers
// a zero width space--this is an invisible character that no one would // a zero width space--this is an invisible character that no one would
// use, that gets passed through MathJax and to the server // use, that gets passed through MathJax and to the server
var c = "\u200b"; var c = "\u200b";
eqn = eqn.replace(/__(?:([^\{])|\{([^\}]+)\})/g, '^{' + c + '$1$2}'); eqn = eqn.replace(/__(?:([^\{])|\{([^\}]+)\})/g, '^{' + c + '$1$2}');
// NOTE: MathJax supports '\class{name}{mathcode}' but not for asciimath // NOTE: MathJax supports '\class{name}{mathcode}' but not for asciimath
// input, which is too bad. This would be preferable to the char tag // input, which is too bad. This would be preferable to this char tag
} }
return eqn; return eqn;
}; };
}; };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment