It has been a difficult design decision, but I‚Äôm going to replace the LaTeXRender WordPress Plugin for mathML as the default TeX-interface for NeverEndingBooks. I will keep LaTeXRender on standby as I may have to use exotic packages or commands that iTeX does not deliver, but for most math-related posts, MathML will do the job nicely (as the n-category cafe shows every day (or even more often)). Not that I stopped being a dilettante but I’m going to do most of my writings (including blog-posts) using Scrivener (more on this another time) and Scrivener supports MultiMarkdown and allows exporting to LaTeX and XHTML (using MathML).

I could never have pulled this off in such a short time without Jacques Distler more or less on constant stand-by (thanks Jacques!). Looking at the times his emails were send I have no idea in which time zone he lives (let alone sleeps…). So, here a walk-through the changes :

As I’m on WP 2.0.5 I’ll start with Frederick’ post. He tells me I have to install first the itex2MML binary as explained by Jacques but I find that there is more recent material and therefore download the most recent imath2MML-package and follow the readme. There is a Mac OSX binary but it’s not clear for what processor (PPC/Intel/Binary) but a quick mail to Jacques learns me that it’s PPC which is fine by me but on the spot he puts a universal binary online, so whatever your Mac is you can just download the binary, copy it to /usr/local/bin and make sure its chmodded 755.

Back to Frederick’s post, download and install the plugin itexToMML.php in the usual way (fortunately I spot just in time that I have to change one line saying where my itex2MML binary is (in Frederick’s file it is NOT the default location)). You can verify whether the plugin and itex2MML do what they are supposed to do by typing a LaTeX-command in a post and save it. The output will not produce the desired formula but have a look at the source file and see whether there is some mathML code in it. If so, fine! If not, go back and check everything.

If this works, it is “merely” a problem of getting your mathML served. Frederick suggests to unpack wordpress_mathML.zip in the wp-includes directory (but you better make sure you have made a copy of the original class.php and functions-formatting.php files. In the end I decided against this approach (that is, to replace only the functions-formatting.php but NOT the class.php file). If you have two or more themes you want to maintain, it is probably better to change the headers (because this is what we have to do to get mathML served) only in those themes which are XML-sound. In my case, the Command Line Interface theme most certainly is NOT!!!).

Go to your theme-files and look for the header.php (or similar) file and replace the default header by the code in the addendum to this post within php-tags. If you can go to your blog-page then you are in good shape and things should work well (apart possibly from layout considerations, see below). Of course, in my case i was greeted by ” XML “yellow screen of death” (as Jacques calls it) and I was convinced I did something wrong, so I tried out several useless things for a couple of hours before it dawned on me that the reason might just be that my blog-files were not valid XHTML (and the new headers are very demanding on serving only well-form XHTML). I had to modify all changes I made to sidebars etc. as well as rewrite parts of my first posts (I used to take a rather liberal view on writing blog-posts, writing a mixture between Markdown and improvised HTML and in the process was very lax about closing IMG-tags and the likes). But after some time and numerous corrections to the files I got the main-page up and running (and even had the mathML served as a readable formula) apart from the fact that I barely recognized my own site.

I printed out source files of the page with and without changed headers and couldn’t find a difference. So, it had to do with the CSS-style files, but why on earth would the new headers be picky about CSS? But as a last resort, after narrowing the search down to one CSS-line, I asked Jacques whether he had an idea what went on. His reply will be remembered for quite some time :

A fascinating question. The answer is that it is following the CSS directive, but in XHTML, ‘body’ is not what you think it is. ‘body’ is just big enough to contain its content. It does not fill the viewport. ‘html’ fills the viewport. The solution (a solution) is described in
http://golem.ph.utexas.edu/~distler/blog/archives/000203.html

Many hours later, I still haven’t got a clue what this is all about, but I blindly followed the hint and surely all problems vanished. In short, another day wasted in front of a computer-screen.

At the moment I’m back to old headers and will not be writing mathML for some time as I have the vast job ahead to validate all my previous posts to XHTML-standards (if not you would see more yellows screens of death than anything else. So, here‚Äôs the strategy I’ll be taking in the weeks ahead (I’ll sleep on it tonight so if any of you think there is a better way, reply quickly)

  • rewrite each and every post in proper MultiMarkdown using iTeX for the most common math and only resorting to LaTeXRender for exotic things (such as Sudoku, Chess, Dvonn) and run these posts through Markdown (to get basic HTML and all links in place).
  • download these files to the WP-database (so that in the CLI-interface you will be able to follow all links, but will read all iTeX as TeX-commands (as the command line intended after all).
  • in the process change all broken links to the default permalink-structure (with index.php?p=231 or so).

Clearly, this is a work that will take a couple of weeks but it may be fun to reread these old posts and possibly add new information about the subjects. When I’m making these changes, I’ll use the new headers so if you are using a smart browser look out for the yellow screens. When they happen, either use a dumb browser (such as Safari) or go into CLI-interface mode where everything should still work. I plan to start with the oldest posts as this seems more fun to me.

dvonn, LaTeX, latexrender, mac, markdown, OSX, PPC, sudoku, wordpress