Summary: Notes on modifying the jsMath for a skin (not a complete recipe)
Prerequisites: jsMath package
Maintainer: ArielBalter?
Categories: Markup Math

Questions answered by this recipe

Is there a simpler, more robust way to get jsMath features?


{Instead of using a plugin for jsMath which (1) doesn't always work and (2) requires using {} around math expressions, learn (1) to make a simple edit to your current skin template and (2) some little tricks to use jsMath. In retrospect, this recipe should really be called "Advanced jsMath"!}


Thanks to Ben Woodruff for creating the jsMath plugin recipe. However, I had some problems using it. Inline math didn't always render properly. Also, I discovered some little problems arising from the fact that PmWiki does some necessary text processing prior to generating html that messes up jsMath which works on the html.

My solution is brutish, but does work! If someone can figure out a way to package it in an actual recipe PHP file, that would be great. The brutishness of my solution probably stems from not learning enough about the jsMath package first.

The steps are:

  • Edit the jsMath/easy/load.js file for some necessary options (that's how you do it)
  • Edit the template file of the skin you are using
  • Remember to use escaped versions of & and \\] any time you need them, for instance equation arrays and arrays.

Step 1: Certain options for the load.js method are hard coded into that file. Make sure the appropriate lines near the top of the file look like:

processSlashParens: 1, // process \(...\) in text?
processSlashBrackets: 1, // process \[...\] in text?
processDoubleDollars: 1, // process $$...$$ in text?
processSingleDollars: 1, // process $...$ in text?
processLaTeXenvironments: 1, // process \begin{xxx}...\end{xxx} outside math mode?
fixEscapedDollars: 1, // convert \$ to $ outside of math mode?
doubleDollarsAreInLine: 0, // make $$...$$ be in-line math?
allowDisableTag: 1, // allow ID="tex2math_off" to disable tex2math?
Step 2: Edit the skin template file. The skin information goes in ./pub/skins/<skin folder>. Look in there for a file ending in .tmpl, probably called <skin name>.tmpl. Just before the </head> closing tag, paste the line\\
<script src="path-to-jsMath/easy/load.js"></script>\\
If you have put jsMath in ./pub, then the line should be\\
<script src="./pub/easy/load.js"></script>\\
Step 3: When using latex array environments such as \begin{eqnarray}...\end{eqnarray}, you separate array elements with an ampersand "&". For safety, pmWiki converts all ampersands to "&amp". This confuses jsMath. Also, pmWiki markup has a special purpose for "\\". So, if you are going to use array environments, best to enclose each line in "[= ... =]". For example:

[= $$ \begin{array} =]
[= 1 & 2 & \\ =]
[= 3 & 4 & \\ =]
[= \end{array} $$ =]
Good luck, and let me know how it goes!

A solution

{$$ [= \left( \begin{array} \\
1 & 2 \\
3 & 4 \\
\end{array} \right) =] $$}

{$$ \left( \begin{array} \\ 1 & 2 \\ 3 & 4 \\ \end{array} \right) $$}

Release Notes

If the recipe has multiple releases, then release notes can be placed here. Note that it's often easier for people to work with "release dates" instead of "version numbers".

See Also

Cookbook /
AMmathjax  Add markup to embed math using ASCII MATH by MathJax. (Stable)
ASCIIMath  Display MathML rendered ascii formula into PmWiki 2.x pages (Stable)
Formula  Lightweight rendering of mathematical formulas in wiki pages (Beta)
JsMath  Add markup to display and embed mathematical formulas in wiki pages using TeX. (Obsolete - use MathJax)
LaTeXMathJax  MathJax support for PmWiki (stable)
LaTeXMathML  Translating LaTeX math notation dynamically to Presentation MathML (Stable)
LinuxTex  Enable TeX markup
LuaExecute  Lets Lua scripts dynamically generate parts of your wiki page (Beta)
MathJax  Add markup to embed math using TeX syntax. (Stable)
Mathtex  Add markup to display and embed several lines of mathematical formulas in wiki pages (testing)
MimeTeX  Add markup to display and embed mathematical formulas in wiki pages (Stable)
SageCell  This allows you to embed an interactive SageCell into your webpage. Sage is an open source alternative to MathLab, Mathematica, and Maple. (Stable)
TrueLatex  Enables interpretation and rendering of real LaTeX markups in PmWiki. Support for XeLaTex included in v1.8. (Working perfectly. Very simple to use, customizable and comes with lots of options.)