在元素附加到DOM之前排版MathJax

时间:2013-03-26 03:15:29

标签: backbone.js mathjax mathml

由于我使用BackboneJs框架来渲染html视图。 MathJax需要使用包含MathML代码的html元素进行排版,以便在附加到DOM之前获取HTML-CSS代码。

我曾尝试在附加到DOM的元素之前进行排版,但是效果不好。即使MathJax正在处理未附加的html元素,元素内的mathml也无法在DOM中出现后呈现。

目标元素附加到DOM后,是否必须为MathML执行Typeset? 或者有一些变通方法可以在附加到DOM之前进行排版?

1 个答案:

答案 0 :(得分:2)

必须将元素附加到DOM。 MathJax需要能够测量各种子表达式(因此它可以布置像分数等等),为了做到这一点,数学的容器元素必须在一个活动的DOM中。 (未附加到DOM的元素没有计算offsetWidth之类的内容,因此MathJax无法判断它们有多大。)

如果要在元素显示之前将数学排版设置在元素中,可以将其附加到DOM并设置visibility:noneposition:absolute,然后调用MathJax排版元素,然后删除可见性和位置设置。不要使用display:none,因为这也会阻止MathJax测量元素。

请参阅我在2013年1月举行的联合数学会议上发表的演讲中的examples