2012-08-22 21 views
23

CẬP NHẬT POSTLàm thế nào để sử dụng Markdown với MathJax như Math StackExchange

Ok tôi đã quản lý để làm cho Markdown và MathJax làm việc cùng nhau, đó là tương đối đơn giản thực sự. Tôi đã sử dụng marked cùng với 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 
    }) 
}); 

Vấn đề bây giờ là: Tôi nghĩ markdown đang phân tích cú pháp toán 1 của tôi trước khi MathJax có thể thay đổi nó. Làm thế nào để tôi sửa lỗi này? Tôi nghĩ rằng nó cố định trên Math StackOverflow, nhưng làm thế nào? Tôi cần phải dừng lại markdown từ phân tích toán học

UPDATE 2

này hoạt động, nhưng không chắc chắn nếu đường math.stackexchange nó hiện nó, nhưng có vẻ như để sản xuất/kết quả tương tự cùng với những gì tôi đã kiểm tra để xa ...

$(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 DƯỚI

Trong stackexchange toán học, tôi có thể sử dụng MathJax với Markdown. Tôi tự hỏi tôi cần làm gì? Tôi có thể sử dụng một thư viện như marked để hiển thị Markdown, nhưng đối với MathJax, có vẻ như nó chỉ hiển thị khi tải trang. Làm thế nào tôi có thể gọi nó lại làm cho tốt hơn hoặc chỉ làm cho whats cần thiết (theo quy định của tôi)

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

CẬP NHẬT

Tôi nghĩ rằng tôi nên nhìn vào http://www.mathjax.org/docs/1.1/typeset.html#manipulating-individual-math-elements. Nhưng khi tôi cố gắng

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

đâu:

  • $text: là yếu tố jQuery cho textarea tôi
  • $preview: là bản xem trước div

Tôi thấy rằng math là undefined, vì vậy có vẻ như var math = MathJax.Hub.getAllJax("preview") không hoạt động. Tôi có div#preview btw.

+0

Làm MathJax trước khi đánh dấu là thông minh (đánh dấu vượt qua html thông qua) nhưng có nghĩa là toán học sẽ được hiển thị * ở mọi nơi *. Ví dụ, nó không rõ ràng rằng bạn muốn nó được hiển thị trong văn bản 'literal'. –

Trả lời

4

Cách nhanh nhất là bảo vệ toán học khỏi trình phân tích cú pháp đánh dấu của bạn.

Xem this question để có câu trả lời chi tiết của Davide Cervone, bao gồm liên kết tới mã được sử dụng bởi math.SE.

Các vấn đề liên quan