延迟特定元素的 MathJax 处理
Delay MathJax processing of specific elements
我有一个只有简单文本的网站,混合了最初只有 header 可见的部分。单击 header 展开该部分。这个页面的所有部分都可以包含我想用 MathJax 很好地排版的数学,但是这些部分可能很长并且包含很多数学。 我想推迟每个部分的处理,直到相应的 header 被点击。 这可能吗?
我知道 MathJax 有 TypeSet
函数,我可以在显示部分时调用这些函数,因此动态排版数学不是问题。我还找到了 elements
配置选项,但这与我想要的相反:它让你只处理某些元素,而我想排除某些元素。
我想出了一个方法来做到这一点。本质上,我忽略了 tex2jax pre-processor 的 ignoreClass
选项。将 class tex2jax_ignore
添加到所有部分可确保在页面加载时不处理它们。以下 JavaScript 然后在它们的 header 被点击时处理它们:
var section = $(this).parent().children('.section-container');
section.removeClass("tex2jax_ignore");
MathJax.Hub.Queue(["Typeset",MathJax.Hub,section.get(0)]);
结果见this jsFiddle。
在当前的 MathJax 版本 (v3.0.1
) 中,您可以通过添加
typeset: false
在您的配置脚本中。 (MathJax source code)
当你想排版文档时,你可以从 JS 运行 MathJax.typeset()
有关演示,请参阅 this jsFiddle。
我有一个只有简单文本的网站,混合了最初只有 header 可见的部分。单击 header 展开该部分。这个页面的所有部分都可以包含我想用 MathJax 很好地排版的数学,但是这些部分可能很长并且包含很多数学。 我想推迟每个部分的处理,直到相应的 header 被点击。 这可能吗?
我知道 MathJax 有 TypeSet
函数,我可以在显示部分时调用这些函数,因此动态排版数学不是问题。我还找到了 elements
配置选项,但这与我想要的相反:它让你只处理某些元素,而我想排除某些元素。
我想出了一个方法来做到这一点。本质上,我忽略了 tex2jax pre-processor 的 ignoreClass
选项。将 class tex2jax_ignore
添加到所有部分可确保在页面加载时不处理它们。以下 JavaScript 然后在它们的 header 被点击时处理它们:
var section = $(this).parent().children('.section-container');
section.removeClass("tex2jax_ignore");
MathJax.Hub.Queue(["Typeset",MathJax.Hub,section.get(0)]);
结果见this jsFiddle。
在当前的 MathJax 版本 (v3.0.1
) 中,您可以通过添加
typeset: false
在您的配置脚本中。 (MathJax source code)
当你想排版文档时,你可以从 JS 运行 MathJax.typeset()
有关演示,请参阅 this jsFiddle。