首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何触发MathJax?

如何触发MathJax?
EN

Stack Overflow用户
提问于 2017-08-18 18:27:13
回答 2查看 2.2K关注 0票数 7

我在脚本中包括了MathJax

代码语言:javascript
复制
<script type="text/javascript" async
  src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML">
</script>

这将自动将所有数学代码替换为格式化的标记。

  1. 如何通过只单击javascript而不是在加载时触发MathJax
  2. 我如何告诉MathJax将格式化的元素放在页面的末尾而不是替换原始代码?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-18 18:41:51

1.如何通过只单击javascript而不是在加载时触发MathJax。

来自文档skipStartupTypeset: false

通常情况下,MathJax会在页面加载后立即在页面上排版数学。如果您想延迟这个过程,在这种情况下,您需要亲自调用MathJax.Hub.Typeset(),将这个值设置为true

起始排版

MathJax.Hub.Typeset()命令还接受一个参数,该参数是一个DOM元素,其内容将是类型集。这可能是一个段落、一个元素,甚至是一个MathJax数学标记。它也可能是这样一个对象的DOM id,在这种情况下,MathJax将为您查找DOM元素。所以 MathJax.Hub.Queue(“排版”,MathJax.Hub,"MathExample"); 将排版包含在id为MathExample的元素中的数学。这相当于 变量数学= document.getElementById("MathExample");MathJax.Hub.Queue(“排版”,MathJax.Hub,数学); 如果没有提供任何元素或元素id,则整个文档都是排版的。

代码语言:javascript
复制
MathJax.Hub.Config({
    skipStartupTypeset: true,
    extensions: ["tex2jax.js", "TeX/AMSmath.js"],
    jax: ["input/TeX", "output/HTML-CSS"],
    tex2jax: {
        inlineMath: [["$", "$"]],
        processEscapes: true
    }
});

function startTypeSetting() {
  var HUB = MathJax.Hub;
  HUB.Queue(["Typeset", HUB, "render-me"]);
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"></script>
<p id="render-me">$a+b=c$<p>

<button onClick="startTypeSetting()">Start typesetting</button>

2.我如何告诉MathJax将格式化的元素放在页面的末尾而不是替换原始代码?

更好的方法是知道您想要实现什么,但是这里有两种方法可以跳过某些标记或类的排版,来自tex2jax预处理器吐露

代码语言:javascript
复制
MathJax.Hub.Config({
     tex2jax: {
         skipTags: ["script","noscript","style","textarea","pre","code"],
         ignoreClass: "tex2jax_ignore_1|tex2jax_ignore_2"
    }
}

您可以将要呈现的元素的内容复制到另一个元素,然后在那里开始排字:

代码语言:javascript
复制
MathJax.Hub.Config({
    skipStartupTypeset: true,
    extensions: ["tex2jax.js", "TeX/AMSmath.js"],
    jax: ["input/TeX", "output/HTML-CSS"],
    tex2jax: {
        inlineMath: [["$", "$"]],
        processEscapes: true
    }
});

function startTypeSetting() {
  //copy content from '#code-to-render' to '#render-point'
  var text = $('#code-to-render').val()
  $('#render-point').text(text)
  
  //Start typesetting
  var HUB = MathJax.Hub;
  HUB.Queue(["Typeset", HUB, "render-point"]);
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML"></script>

<textarea id="code-to-render">$a+b=c$</textarea>
<p id="render-point"></p>

<button onClick="startTypeSetting()">Start typesetting</button>

票数 13
EN

Stack Overflow用户

发布于 2022-08-07 06:33:43

对于MathJax 3,它是:

代码语言:javascript
复制
MathJax.typeset()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45762920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档