Подтвердить что ты не робот

Как использовать Markdown с MathJax, как Math StackExchange

ОБНОВЛЕНО POST

Хорошо, мне удалось заставить Markdown и MathJax работать вместе, это было относительно просто на самом деле. Я использовал marked вместе с MathJax.

$(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
    })
});

Проблема теперь: я думаю, что уценка анализирует мою математику 1-го, прежде чем 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()) );
    });
});

OLD POST BELOW

В math stackexchange я могу использовать MathJax с Markdown. Интересно, что мне нужно сделать? Я могу использовать библиотеку типа marked для рендеринга Markdown, но для MathJax кажется, что он просто отображает на загрузке страницы. Как я могу вызвать его для повторной обработки или лучше всего сделать то, что нужно (указано мной)

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

UPDATE

Думаю, мне стоит взглянуть на 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 есть undefined, поэтому кажется, что var math = MathJax.Hub.getAllJax("preview") не работает. У меня есть div#preview btw.

4b9b3361

Ответ 1

Самый быстрый способ состоит в том, чтобы защитить математику от вашего синтаксического анализатора.

См. этот вопрос для подробного ответа Davide Cervone, включая ссылку на код, используемый математикой .SE.