The message is generated by the MathJax.Hub.processMessage() routine,
which is
processMessage: function (state,type) {
var m = Math.floor(state.i/(state.scripts.length)*100);
var message = (type === "Output" ? "Typesetting" : "Processing");
if (this.config.showProcessingMessages) {MathJax.Message.Set(message
+" math: "+m+"%",0)}
}
You can override that function in your configuration script if you
want. Something like
<script type="text/x-mathjax-config">
MathJax.Hub.processMessage = function (state,type) {
... do your thing here...
}
</script>
should do it.
It gets called periodically, though not for every math expression that
is processed (it is based on elapsed time, so the number of
expressions between calls depends on how complex they are). The time
between message updates is given by MathJax.Hub.processUpdateTime, so
if you made that 0, your routine would get called for every expression
that is typeset (but this will slow down the processing). There is
also MathJax.Hub.processUpdateDelay which is the tie to wait after
putting up the message before restarting the typesetting (to allow the
UI to respond to user interaction during typesetting). You might want
to reduce that if you end up making processUpdateTime smaller.
Finally, the 100% message is put up by hand after the typesetting is
done (it doesn't go through processMessage(), but probably should).
If you want to prevent that one, then set showProcessingMessages to
false in your configuration.
Davide