延迟MathJax处理特定元素

时间:2015-01-14 19:29:23

标签: mathjax

我有一个简单文字的网站,混合了最初只能看到标题的部分。单击标题会展开该部分。这个页面的所有部分都可以包含我希望与MathJax很好地排版的数学,但是这些部分可能很长并且包含很多数学。 我想推迟每个部分的处理,直到点击相应的标题。这可能吗?

我知道MathJax具有TypeSet函数,我可以在显示该部分时调用它们,因此动态排版数学不是问题。我还找到了elements配置选项,但这与我想要的相反:它只允许您处理某些元素,而我想排除某些元素。

示例页面:http://jsfiddle.net/pnbjh5tg/

2 个答案:

答案 0 :(得分:1)

我找到了一种方法来做到这一点。从本质上讲,我忽略了tex2jax pre-processorignoreClass选项。将类tex2jax_ignore添加到所有部分可确保在页面加载时不处理它们。然后,以下JavaScript在单击其标题时处理它们:

var section = $(this).parent().children('.section-container');
section.removeClass("tex2jax_ignore");
MathJax.Hub.Queue(["Typeset",MathJax.Hub,section.get(0)]);

结果可以在this jsFiddle中找到。

答案 1 :(得分:1)

在当前的MathJax版本(v3.0.1)中,您可以通过添加

typeset: false

在您的配置脚本中。 (MathJax source code) 然后,当您要排版文档时,可以从JS运行MathJax.typeset()

有关演示,请参见this jsFiddle