通过Mathjax渲染字符串

时间:2014-01-21 23:17:29

标签: mathjax

我有一个文本区域,我希望用户输入数学表达式。我不想立即渲染任何结果,就像它在SO上工作一样 类似的东西:

<div id="preview"></div>

function onkeyup(event) {
    var prev = document.getElementById("preview");
    Using just a HTML string:
    prev.innerHTML = MathJax.renderString(this.value);

    ... or get DOM object tree instead:
    //Remove previous children
    prev.innerHTML = "";
    //Append new DOM tree
    var tree = MathJax.createDOM(this.value);
    prev.appendChild(tree);
}

这可能吗?或者我是否必须将this.value放在某个div元素中,而不是让MathJax解析该元素? (那将是愚蠢的)

1 个答案:

答案 0 :(得分:5)

您尝试执行的任务记录为here,并且有一个实时示例here

基本上,方法是使用

<div id="preview">\(\)</div>

然后排版预览。完成后,使用getAllJax()方法获取空数学元素jax。像

这样的东西
var jax;
MathJax.Hub.Queue(
  ["Typeset",MathJax.Hub,"preview"],
  function () {jax = MathJax.Hub.getAllJax("preview")[0]}
);

然后使用元素jax的Text()方法更改它显示的数学。

function onkeyup(event) {
  MathJax.Hub.Queue(["Text",jax,this.value]);
}