由于我使用BackboneJs框架来渲染html视图。 MathJax需要使用包含MathML代码的html元素进行排版,以便在附加到DOM之前获取HTML-CSS代码。
我曾尝试在附加到DOM的元素之前进行排版,但是效果不好。即使MathJax正在处理未附加的html元素,元素内的mathml也无法在DOM中出现后呈现。
目标元素附加到DOM后,是否必须为MathML执行Typeset? 或者有一些变通方法可以在附加到DOM之前进行排版?
答案 0 :(得分:2)
必须将元素附加到DOM。 MathJax需要能够测量各种子表达式(因此它可以布置像分数等等),为了做到这一点,数学的容器元素必须在一个活动的DOM中。 (未附加到DOM的元素没有计算offsetWidth
之类的内容,因此MathJax无法判断它们有多大。)
如果要在元素显示之前将数学排版设置在元素中,可以将其附加到DOM并设置visibility:none
和position:absolute
,然后调用MathJax排版元素,然后删除可见性和位置设置。不要使用display:none
,因为这也会阻止MathJax测量元素。
请参阅我在2013年1月举行的联合数学会议上发表的演讲中的examples。