延迟特定元素的 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 处理的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 selenium 记录 mathjax 加载时间

mathJax基础语法-0基础开始,(这是网上抄来的如果有权限和版权问题联系本人处理,仅供学术参考)

MathJax基本的使用方式

MathJax的使用

MathJax 类型设置

五分钟上手MAthJax