0

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

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

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

4

1 回答 1

2

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

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

请参阅我在 2013 年 1 月的联合数学会议上就此发表的演讲中的示例。

于 2013-03-26T12:52:57.283 回答