# JsMath-Talk

## Hi, I'm using FixFlow

and nothing has happened, even though I've installed everything according to directions in both the PmWiki primary installation and the PmWiki farm where it will matter most.

I would be happy to pay an expert fifty dollars to debug my installation. My email is prinoer@aol.com.

Thank you very much!

Jagtig

## MathJAX

I have modified the suggestion on these pages for jsMath a bit to make it work for MathJaX. I have no experiece really with pmwiki, so I have no idea if that is the right thing to do: I added

<script type="text/javascript" src="path_to_wiki/pub/MathJax/MathJax.js"></script>

in the head of the template of my skin (notsosimple) and I added

Markup('double dollar sign', 'fulltext', '/\\$\\$(.*?)\\$\$/es', "Keep('\\$\\$'.PSS('$1').'\\$\\$')"); Markup('dollar sign', 'double dollar sign','/\\$(.*?)\\$/es',"Keep('\$$'.PSS('1').'\$$')"); to the config.php. Then I can type$x^2, $$x^3$$ and things like \begin{align*} directly on the page. Would it be saver to use {t^4$}, instead ? [Chris 31/08/2010] ## The tex isn't processing ... The classic problem: Even with the default skin jsMath didn't work -- it would just load as the tex. Using the test page in the jsMath installation, I was able to verify that jsMath itself worked, when called from a correct html page. What's happening? The short answer is that you will need to change the template file for your skin. It is located in /pub/skins/skinname/skinname.tmpl. You can use one of the following solutions. Don't try to use both, it will confuse jsMath. Solution 1: easyload with header This recipe adds a header to your skin template that tells pmwiki to follow the instructions in pmwiki/pub/jsMath/easy/load.js. 1. Go to the directory of your skin and open the skin template. For example, I use notsosimple, so I opened pmwiki/pub/skins/notsosimple/notsosimple.tmpl 2. Add the following script to the header: <SCRIPT SRC="pub/jsMath/easy/load.js"> </SCRIPT> So your skin.tmpl file should look like OTHER STUFF <head> OTHER STUFF <SCRIPT SRC="pub/jsMath/easy/load.js"> </SCRIPT> </head> If this doesn't work (it should), open the load.js file and make sure that root: is set to the root jsMath directory. (J Millar, 2/8/8) Solution 2: Autoload with footer The page code generated by my wiki was indeed lacking the footer code <!--HTMLFooter--> <script> jsMath.Autoload.Check(); jsMath.Process(document); </script> I just added all five lines right above the </body> tag in the skin template (I'm using notsosimple), and things work fine (Note: ust adding <!--HTMLFooter--> , a previous suggestion on this page, does nothing.) It seems that I set everything up correctly, and it is disturbing that not even with the default skin things worked. In my experience every little add-on (pmwiki and others as well) requires hours of fooling around to make it work. Kind of sad. On the other hand, it's great that people make the effort to write software like this, thanks! [GG, 15-July-2007] [(approve links) edit diff] ### Why doesn't jsmath work with the default skin!?? The original version of the code did not require the skin to load the HTMLFooter. This is a copy of the code that I used originally.$HTMLHeaderFmt['jsMathstuff'] =
'
<SCRIPT>
jsMath = {
Controls: {cookie: {scale: 133}},
},
Font: {Message: function () {}}
}
</SCRIPT>
<SCRIPT>
window.onload = function () {
jsMath.Process(document);
}
</SCRIPT>
';

Pm suggested to change the code as shown below.

$HTMLHeaderFmt['jsMath'] = ' <script> jsMath = {Controls: {cookie: {scale: 120}}} </script> <script src="$JSMathUrl/plugins/autoload.js"></script>
';
$HTMLFooterFmt['jsMath'] = ' <script> jsMath.Autoload.Check(); jsMath.Process(document); </script> '; The original code above is sloppy, and Pm's was in improvement. However it did require that the skin load the HTMLFooter. Sorry for this disadvantage. ### Config file -- remember to use jsMath instead of jsmath I was having trouble getting the tex to process until I changed include_once('cookbook/jsmath.php'); to include_once('cookbook/jsMath.php'); Now it seems to be working. This was on a FreeBSD 6.2 server. ## Maintaining math mode across lines There is an error in the jsmath cookbook that means displayed math doesn't process across lines. To fix this, open up jsmath.php from pmwiki/cookbook/jsmath.php. Replace the lines // This line gives you LaTeX  display equations in the center Markup('{$$', '<{', '/\\{\\\\(.*?)\\\\\}/e', "Keep('<div class=\"math\">'.PSS('1').'</div>')"); // This line gives you equations in line. You can then use // \displaystyle as normal to get pretty print equations inline. Markup('{', 'directives', '/\\{\\(.*?)\\\\}/e', "Keep('<span class=\"math\">'.PSS('1').'</span>')"); with // This line gives you LaTeX$$ $$display equations in the center Markup('{$$', '<{$',
'/\\{\\$\\$((.|\\n)*?)\\$\$\\}/e',
"Keep('<div class=\"math\">'.PSS('$1').'</div>')"); // This line gives you$ $equations in line. You can then use // \displaystyle as normal to get pretty print equations inline. Markup('{$', 'directives',
'/\\{\\$((.|\\n)*?)\\$\\}/e',
"Keep('<span class=\"math\">'.PSS('$1').'</span>')"); or equally well, replace with Markup('{$$', 'fulltext', '/\\{\\\\(.*?)\\\\\}/es', "Keep('<div class=\"math\">'.PSS('1').'</div>')"); Markup('{', '>{$$', '/\\{\\$(.*?)\\$\\}/es', "Keep('<span class=\"math\">'.PSS('$1').'</span>')");

This will cause the ... markups to be processed before the text is broken into separate lines.

## Preserving braces in formulae and allowing multi-line formulae

To have formula like x^{(n+1)} processed correctly (the braces were removed from the formula),
I had to apply the jsMath rules before variable substitution (hence the <{$var} below). I also added a backslash for the second closing$ in the {$$rule and use the s modifier for the regular expression as suggested above to allow for formulae spanning multiple lines. To summarize, the two Markup calls now write: Markup('{$$', '<{$var}', '/\\{\\$\\$(.*?)\\$\\$\\}/es', "Keep('<div class=\"math\">'.PSS('$1').'</div>')");

Markup('{\$', '>{$$', '/\\{\\(.*?)\\\\}/es', "Keep('<span class=\"math\">'.PSS('1').'</span>')"); I'm not sure the call to PSS is really needed. emmt January 18, 2010 at 07:58 UTC ## Print quality Make sure users install the TeX fonts The print quality is nicer if users install the TeX fonts on their computer. Details are available at http://www.math.union.edu/locate/jsMath. However, I did notice that onscreen readability is not quite as good if you use the TeX fonts and your website has small text. I wanted to use jsMath because I use PMWiki for classroom use, and I wanted a tool that could give students immediate access to notes, while at the same time being useable on a projector for presentations. MimeTeX did not work for classroom use because the graphics did not rescale. Perhaps it is possible to rescale the graphics in MimeTeX. I am also much happier with the print quality of jsMath. # Unanswered questions and older stuff ### Symbol for natural numbers I have installed everything and the Tex things looks really great, but how can I insert the symbol for the natural numbers like N=\{1,2,3,4,\ldots \}? So I want the symbol \N \N . comment Do you mean you want blackboard math for N, i.e ℕ ? ### TeX not processing I downloaded the jsMath packages (jsMath-3.4.zip and jsMath-fonts-1.3.zip), and unzipped them into /PmWiki/pub/jsMath/. I also downloaded the file jsMath.php into /PmWiki/cookbook/jsMath.php, and added the line 'include_once('cookbook/jsmath.php');' to /PmWiki/local/config.php. In the editor, I get the \sqrt{n} icon. However, when I insert an equation, I just get the TeX syntax for it. I can see the equation 5 \sqrt{n} - \alpha properly on my browser. Any idea what is going wrong? What skin are using? I had exactly the same problem using the beeblebrox skin. Using the default or for example monobook everything works fine... I have run into the same problem with other skins - getting just lines of tex. Is the source of this particular problem known yet? Is there an alternative solution? I have figured out the problem -- essentially, the jsMath package relies on the skin to include the HTMLFooter directive, but many skins don't do this (Beeblebrox among them). So the solution is to simply add the line <!--HTMLFooter--> to the skin's template file, somewhere near the end. "That's it"!? Well, it does not work with the TriadSkin from Hans. That's a pity! Yes, I've checked the procedure twice and the <!--HTMLFooter--> line does exist as well in the template file. Still, it's only the source code shown on the page. Has someone another hint? /VolkerM The original version of the code did not require the skin to load the HTMLFooter. This is a copy of the code that I used originally. HTMLHeaderFmt['jsMathstuff'] = ' <SCRIPT> jsMath = { Controls: {cookie: {scale: 133}}, Autoload: { loadFonts: ["msam10","msbm10"], loadFiles: "extensions/AMSsymbols.js" }, Font: {Message: function () {}} } </SCRIPT> <SCRIPT SRC="JSMathUrl/plugins/autoload.js"></SCRIPT> <SCRIPT> window.onload = function () { jsMath.Autoload.Check(); jsMath.Process(document); } </SCRIPT> '; Pm suggested to change the code as shown below. HTMLHeaderFmt['jsMath'] = ' <script> jsMath = {Controls: {cookie: {scale: 120}}} </script> <script src="JSMathUrl/plugins/autoload.js"></script> '; HTMLFooterFmt['jsMath'] = ' <script> jsMath.Autoload.Check(); jsMath.Process(document); </script> '; The original code above is sloppy, and Pm's was in improvement. However it did require that the skin load the HTMLFooter. Sorry for this disadvantage. Hello, could someone please explain to me how to get the boldsysmbol extension to work with this markup? I tried to follow the instructions, but I can't get it to work. Thanks a lot! June 6, 2007, MS ## Dollar sign I need to use a pair of dollar signs to indicate an excel cell. The usual markup [= ...put the dollars here... =] does not work in this instance. How can I do this without resorting to complex latex formulas involving a lot of \? Thank you ## Sandbox x^3 \int_i^k x^2 Equation: \sum_{i=0}^k x^2 Another: \sum_{i=0}^k x^2 \mathcal N \mathrm{corr}(X,Y)= \frac{\displaystyle \sum_{i=1}^n(x_i-\overline x)(y_i-\overline y)} {\displaystyle\biggl[\sum_{i=1}^n(x_i-\overline x)^2 \sum_{i=1}^n(y_i-\overline y)^2\biggr]^{1/2}} T_{sys} \propto \frac{T_{sys}}{\sqrt{\tau B}} \mathrm{corr}(X,Y)= \frac{\displaystyle \sum_{i=1}^n(x_i-\overline x)(y_i-\overline y)} {\displaystyle\biggl[\sum_{i=1}^n(x_i-\overline x)^2 \sum_{i=1}^n(y_i-\overline y)^2\biggr]^{1/2}} \mathrm{corr}(X) = \frac{1}{(2\pi)^{N/2}} f_X(x_1...x_N) = \frac {1}{(2\pi)^{N/2} {\left| \Sigma \right|} ^{1/2}} \exp \left(-\frac{1}{2}(x -\mu)^t \Sigma^{-1} (x-\mu) \right) f_X(x_1...x_N) = \frac {1}{(2\pi)^{N/2} {\left| \Sigma \right|} ^{1/2}} \exp \left(-\frac{1}{2}(x -\mu)^t \Sigma^{-1} (x-\mu) \right) ### Experimenting with eqnarray: \begin{eqnarray} f & = & g \\ & = & h + i \\ & & +j \end{eqnarray} ### Inline equations, does it get the vertical spacing correct? Here is x some x^2 text x^i_j and x^{h^3}_{e_f} some |x\rangle more. \frac{x}{y} ## Problems (9 Aug 07) 1. Thanks; this is quite a cool cookbook, apart from the software engineering problem of requiring other cookbooks (i.e., apparently most other skins) to be changed to make this work. However... 2. When I display this page, none of the above math is formatted; I see just the source. Since, this is on the pmwiki.org server, with the skin chosen by this page's author, what can I do differently to make it work? 3. On my own server, I changed jsMath.php to the former version as shown above. My own test page still fails. ## Tiny little detail ## Thanks Everything works fine now. See [(approve links) edit diff] ## ? All working apart from one little glitch... when I load up this page I can see the "sum" and "integral" symbols nice and large with the "i=0" underneath and the "n" on top. Yet in another tab on my offline instance of PmWiki, I still get small versions of all the LaTeX here, with the "i=0" and "n" as large subscript items... judging from the code above, it seems to be to do with the$$ not working! Any suggestions please?! promsan

Talk page for the JsMath recipe (users).