[IPython-dev] mathjax not rendering in notebook

Matthias BUSSONNIER bussonniermatthias at gmail.com
Mon Aug 13 04:42:34 EDT 2012


Le 13 août 2012 à 08:28, Matthew Brett a écrit :

> Hi,
> 
> On Sat, Aug 11, 2012 at 12:04 PM, Matthias BUSSONNIER
> <bussonniermatthias at gmail.com> wrote:
>> 
>> Le 11 août 2012 à 20:53, Matthew Brett a écrit :
>> 
>>> Yo,
>>> 
>>> On Fri, Aug 10, 2012 at 8:06 PM, Fernando Perez <fperez.net at gmail.com> wrote:
>>>> On Fri, Aug 10, 2012 at 4:21 PM, Matthew Brett <matthew.brett at gmail.com> wrote:
>>>>> 
>>>>> In the notebook this renders as "$$ \begin{array}{c} y_{11} \cr y_{12}
>>>>> \mathtt{t}i \cr y{13} \end{array} $$" - i.e. somehow rejected by
>>>>> mathjax.   The following make it render correctly:
>>>>> 
>>>>> 1) y_3 instead of y_{3}
>>>>> 2) removing _i of \mathtt{t}_i
>>>> 
>>>> It seems the thing that confuses it most is the mathtt call.  If I
>>>> remove it altogether (and using \\\ for line separators), then I can
>>>> use y_{3, 4} and t_{i, j} no problem.  Or, if there are no complex
>>>> subscripts, the mathtt call by itself is OK.  But there's something
>>>> very brittle inside that is messing up mathjax's processing of this.
>>>> 
>>>> Filed it here, b/c I'm out of ideas:
>>>> https://github.com/ipython/ipython/issues/2289
>>> 
>>> As a matter of interest, and from great ignorance, where in ipython
>>> would I look for explanations of different behavior of mathjax in a
>>> markdown cell in the notebook to mathjax in a standalone html page
>>> like the one above?  Is there a good track to follow for debugging?
>> 
>> a quick grep in the source tell me that the 2 places that triggers mathjax rendering are
>> IPython/frontend/html/notebook/static/js
>> cell.js:            MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
>> outputarea.js:            MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
>> 
>> You could try to deactivate auto rendering and do it manually to check the source before/after rendering if you see an error in what is published.
> 
> I'm afraid I am not sure what you mean by the sentence above, is there
> any chance you could unpack it a little?  Sorry, I am completely
> unfamiliar with the notebook internals, but I'm happy to give it a go
> if someone can give me a few lines of orientation,

Sorry, I'm not a pro of mathjax either.
in sum up, you publish latex in a div with a special class, then call 

MathJax.Hub.Queue(["Typeset",MathJax.Hub]);

which will scan the page for theses div and 'render' it. 

MathJax.Hub.Queue(["Typeset",MathJax.Hub]); 
is called when a cell is rendered or, when something is pushed in an output area. 

commenting those line in 
in IPyhton/frontend/html/notebook/static/js/(cell | outputarea).js
 will publish the "raw" latex that you would have a chance to inspect/modify before calling 
MathJax.Hub.Queue(["Typeset",MathJax.Hub]); 
From the JS console yourself to render.

at least that where I would look first using firefox firebug, or Chrome/Safari development panel.

Does this make more sense ? 
-- 
Matthias





More information about the IPython-dev mailing list