延迟特定元素的 MathJax 处理
Posted
技术标签:
【中文标题】延迟特定元素的 MathJax 处理【英文标题】:Delay MathJax processing of specific elements 【发布时间】:2015-01-14 19:29:22 【问题描述】:我有一个带有简单文本的网站,其中混合了最初仅显示标题的部分。单击标题可展开该部分。这个页面的所有部分都可以包含我想用 MathJax 很好地排版的数学,但是这些部分可能很长并且包含很多数学。 我想推迟每个部分的处理,直到点击相应的标题。这可能吗?
我知道 MathJax 有 TypeSet
函数,我可以在显示该部分时调用它们,因此动态排版数学不是问题。我还找到了elements
配置选项,但这与我想要的相反:它只允许您处理某些元素,而我想排除某些元素。
示例页面:http://jsfiddle.net/pnbjh5tg/
【问题讨论】:
【参考方案1】:我想出了一个办法。本质上,我忽略了tex2jax pre-processor 的ignoreClass
选项。将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。
【讨论】:
【参考方案2】:在当前的 MathJax 版本 (v3.0.1
) 中,您可以通过添加
typeset: false
在您的配置脚本中。 (MathJax source code)
当你想排版文档时,你可以在 JS 中运行MathJax.typeset()
。
请参阅this jsFiddle 以获取演示。
【讨论】:
以上是关于延迟特定元素的 MathJax 处理的主要内容,如果未能解决你的问题,请参考以下文章