26

更新された投稿

OK、Markdown と MathJax を連携させることができました。実際には比較的簡単でした。markedMathJax と一緒に使用しました。

$(function() {
    var $text       = $("#text"), // the markdown textarea
        $preview    = $("#preview"); // the preview div

    $text.on("keyup", function() {
        $preview.html( marked($text.val()) ); // parse markdown
        MathJax.Hub.Queue(["Typeset", MathJax.Hub, "preview"]); // then let MathJax do its job
    })
});

問題は次のとおりです。MathJaxが変更する前に、マークダウンが最初に数学を解析していると思います。これを修正するにはどうすればよいですか? Math StackOverflowで修正されたと思いますが、どうですか?マークダウンが数学を解析するのを止める必要があります

更新 2

これは機能しますが、math.stackexchange が行う方法かどうかはわかりませんが、これまでにテストしたものと同様/同じ結果が得られるようです...

$(function() {
    var $text       = $("#text"),
        $preview    = $("#preview");

    $text.on("keyup", function() {
        $preview.html( $text.val() );
        MathJax.Hub.Queue(["Typeset", MathJax.Hub, "preview"]);
    });

    MathJax.Hub.Register.MessageHook("End Process", function (message) {
        $preview.html( marked($preview.html()) );
    });
});

以下の古い投稿

math stackexchange では、Markdown で MathJax を使用できます。私はそれをするために何が必要なのだろうか?Markdown をレンダリングするようなライブラリを使用できますmarkedが、MathJax の場合、ページの読み込み時にレンダリングするだけのようです。再レンダリングするか、必要なものだけをレンダリングするために呼び出すにはどうすればよいですか (私が指定)

html = marked("some markdown string") // a HTML string
// is there something like
html = MathJax.parse(html)

アップデート

http://www.mathjax.org/docs/1.1/typeset.html#manipulating-individual-math-elementsを見るべきだと思います。でもやってみると

$text.on("keyup", function() {
    $preview.html( marked($text.val()) );
    var math = MathJax.Hub.getAllJax("preview");
    console.log(math);
    MathJax.Hub.Queue(["Text", math, "a+b"]);
})

どこ:

  • $text: 私のテキストエリアの jQuery 要素です
  • $preview: プレビューですdiv

それmathは未定義であるため、機能してvar math = MathJax.Hub.getAllJax("preview")いないようです。私はところで持っていdiv#previewます。

4

2 に答える 2

5

最速の方法は、マークダウン パーサーから数学を保護することです。

math.SE で使用されるコードへのリンクを含む、Davide Cervone による詳細な回答については、この質問を参照してください。

于 2012-08-24T22:22:17.743 に答える