1

我试图通过仅在修改后的段落中转换 Markdown/Tex 在我的 Markdown 编辑器中实现部分渲染。所以基本上,我有一个#preview包含多个.preview_section元素的元素,其中包含转换后的 HTML 段落。当我更新一个或多个.preview_section元素时,我希望 MathJax 只处理这些元素。

我尝试了不同的方法:

  • 将修改后的.preview_section元素列表作为 typset 参数传递。就性能而言,这是最糟糕的解决方案。当传递超过 1 个元素时,渲染时间几乎乘以元素数量。
  • #preview将元素作为排版参数传递。这个解决方案的问题是 MathJax 再次渲染已经渲染的script[type="math/tex; mode=display"]. 我尝试设置 tex2jaxignoreClass: "tex2jax_ignore"配置并添加.tex2jax_ignore到未修改.preview_section的元素和已渲染的script元素,但它没有效果,因为它没有被 tex2jax 预处理器处理(我想)。
  • #preview将元素作为排版参数传递,但在script[type="math/tex; mode=display"]从预览中删除所有元素之后。这是最有效的,但我真的不喜欢从预览中删除这些脚本。

有没有办法告诉 MathJax 不要处理这些script元素?或者在我投入源代码之前的任何想法......谢谢。

4

1 回答 1

1

好的,我刚刚发现了我的问题。MathJaxscript[type="math/tex"]在 DOM 的每个元素中存储一个 JavaScript 对象。这个对象,实际存储在 中element.MathJax,包含:

checked: 1
elementJax: Object
preview: span.MathJax_Preview
startNumber: 0
state: 2

预览的状态在哪里state(2 表示已处理)。因此,如果已经渲染,TypeSet 不会再次渲染预览,除非您在 DOM 中重写脚本标记(这就是我正在做的事情),这种情况下您会丢失 MathJax 对象和预览状态。这就是为什么 MathJax 一直在重新渲染我所有的脚本。

于 2013-07-27T00:36:07.500 回答