# [LON-CAPA-users] math rendering engine

Stefan Bisitz lon-capa-users@mail.lon-capa.org
Tue, 19 Jan 2010 11:13:13 +0100

And again... ;-)

Much better (the best?):

Don't use two variables, one for calculations and one for display. It's
simpler, shorter and less error-prone to have only one variable:

<script type="loncapa/perl">
$function1 = "(x^2 - 1)^2";$function2 = "sqrt(x^2 - 1)";
$function3 = "3/(2 + x^2)";$function4 = "2/(3 + sqrt(1 + x))";
$example1=[...] </script> <startouttext /> <p>Give an example of two nontrivial functions <m>$ f $</m> and <m>$ g
$</m> such that <m eval="on">$ (f \circ g)(x) = $</m> <algebra>$displayfunction</algebra>.</p>
[...]
<endouttext />

In general, store or calculate your formula in one variable using the
1-dimensional "pocket calculator" notation. Reuse the same variable to
display it by using the <algebra> tag (without any "$") which automatically renders in the preferred method. Stefan Bisitz On 19.01.2010 11:04, Stefan Bisitz wrote: > Hi again, > > Why "pre-parse" anyway? > > Even better: > > 1) > <script type="loncapa/perl"> > [...] >$displayfunction1 = '(x^2 - 1)^2';
> [...]
>
> and 2)
> [...]
> such that <m eval="on">$(f \circ g)(x) =$displayfunction $</m>. > [...] > > > Stefan Bisitz > > > On 19.01.2010 10:32, Stefan Bisitz wrote: >> Hi Justin, >> >> It's quite simple to solve your display issues. You parse the formula >> twice: >> 1)$displayfunction1 = &xmlparse('<m>$(x^2 - 1)^2$</m>');
>> [...]
>>
>> 2) <m eval="on">$(f \circ g)(x) =$displayfunction $</m> >> >> Just change to >> <m>$ (f \circ g)(x) = $</m>$displayfunction
>>
>> $displayfunction is already parsed and must not be included again in >> the <m> tag. >> >> tth as well as mimetex works now (tested on bleeding edge machine). >> >> And yes, please avoid to use jsmath hardcoded in the problem. Let the >> CCs or students decide. >> >> Stefan Bisitz >> >> >> >> On 19.01.2010 09:59, Justin Gray wrote: >>> When displaying equations, setting the display attribute within the >>> <m> tag to "jsMath" is generally discouraged as it requires users to >>> have >>> installed jsmath software on their computer and will override their >>> preferences on how math equations are displayed. >>> >>> I have tried viewing the problem below on several computers and >>> jsMath seems to be the only math rendering engine that lets me view >>> the equations properly. (With tth the equations do not show up at all >>> and with mimetex the equations are incomprehensible.) I am reluctant >>> to force users to jsMath for this problem. Perhaps there is another >>> way to remedy this problem? >>> >>> Any suggestions are appreciated. >>> >>> Thanks, >>> Justin >>> >>> Justin Gray | Senior Lecturer >>> Department of Mathematics | Simon Fraser University >>> 8888 University Drive, Burnaby | V5A 1S6 | Canada >>> Tel: +1 778.782.4237 >>> >>> <problem> >>> <script type="loncapa/perl"> >>>$function1 = "(x^2 - 1)^2";
>>> $function2 = "sqrt(x^2 - 1)"; >>>$function3 = "3/(2 + x^2)";
>>> $function4 = "2/(3 + sqrt(1 + x))"; >>>$displayfunction1 = &xmlparse('<m>$(x^2 - 1)^2$</m>');
>>> $displayfunction2 = &xmlparse('<m>$\sqrt{x^2 - 1}$</m>'); >>>$displayfunction3 = &xmlparse('<m>$\displaystyle \frac{3}{2 + >>> x^2}$</m>');
>>> $displayfunction4 = &xmlparse('<m>$\displaystyle \frac{2}{3 + \sqrt{1
>>> + x}}$</m>'); >>>$example1=&xmlparse('Many answers are possible. One example would be
>>> <m>$f(x) = x^2, \quad g(x) = x^2 - 1$</m>');
>>> $example2=&xmlparse('Many answers are possible. One example would be >>> <m>$f(x) = \sqrt{x}, \quad g(x) = x^2 - 1$</m>'); >>>$example3=&xmlparse('Many answers are possible. One example would be
>>> <m>$f(x) = 3/x, \quad g(x) = 2 + x^2$</m>');
>>> $example4=&xmlparse('Many answers are possible. One example would be >>> <m>$f(x) = 2/(3 + x), \quad g(x) = \sqrt{1 + x}$</m>'); >>>$n = &random(1,4,1);
>>> $function = >>> &choose($n,"$function1","$function2","$function3","$function4");
>>> $displayfunction = >>> &choose($n,"$displayfunction1","$displayfunction2","$displayfunction3","$displayfunction4");
>>>
>>> $example = &choose($n,"$example1","$example2","$example3","$example4");
>>> </script>
>>>
>>> <startouttext /><p>Give an example of two nontrivial functions
>>> <m>$f$</m> and <m>$g$</m> such that <m eval="on">$(f \circ g)(x) = >>>$displayfunction $</m>.</p>Enter your answer in the form >>> <p><b>expression1,expression2</b></p> where <m>$f(x) = $</m> >>> <b>expression1</b> and <m>$g(x) = $</m> >>> <b>expression2</b>.<p></p><endouttext /> >>> >>> <mathresponse answerdisplay="$example" cas="maxima" args="$function" >>> id="11"> >>> <answer>f(x) := RESPONSE; >>> g(x) := RESPONSE; >>> h(x) := LONCAPALIST; >>> composition:is(trigsimp(f(g(x)) - h(x)) = 0); >>> fnottrivial:is(not(f(x) = x)); >>> gnottrivial:is(not(g(x) = x)); >>> composition and fnottrivial and gnottrivial;</answer> >>> <textline readonly="no" size="20" /> >>> <hintgroup showoncorrect="no"> >>> <mathhint name="composition not equal" cas="maxima" >>> args="$function" id="12">
>>> g(x) := RESPONSE;
>>> h(x) := LONCAPALIST;
>>>         </mathhint>
>>> <hintpart on="composition not equal">
>>>     <startouttext /><p>Your example does not satisfy <m eval="on">$(f >>> \circ g)(x) = f(g(x)) =$displayfunction $</m>.</p><endouttext /> >>> </hintpart> >>> </hintgroup> >>> <hintgroup showoncorrect="no"> >>> <mathhint name="f trivial" cas="maxima" id="13"> >>> <answer>f(x) := RESPONSE; >>> is(f(x) = x);</answer> >>> </mathhint> >>> <hintpart on="f trivial"> >>> <startouttext /><p>The question asks for nontrivial functions, >>> and so you cannot use <m>$f(x) = x$</m>.</p><endouttext /> >>> </hintpart> >>> </hintgroup> >>> <hintgroup showoncorrect="no"> >>> <mathhint name="g trivial" cas="maxima" id="14"> >>> <answer>g(x) := RESPONSE; >>> is(g(x) = x);</answer> >>> </mathhint> >>> <hintpart on="g trivial"> >>> <startouttext /><p>The question asks for nontrivial functions, >>> and so you cannot use <m>$g(x) = x\$</m>.</p><endouttext />
>>> </hintpart>
>>>     </hintgroup>
>>> </mathresponse>
>>> </problem>
>>>
>>>
>>>
>>
>> _______________________________________________
>> LON-CAPA-users mailing list
>> LON-CAPA-users@mail.lon-capa.org
>> http://mail.lon-capa.org/mailman/listinfo/lon-capa-users
>
>