2013-07-26 9 views
1

수정 된 단락에서만 Markdown/Tex를 변환하여 부분 렌더링을 my Markdown editor에 구현하려고합니다. 기본적으로 변환 된 HTML 단락을 포함하는 .preview_section 요소를 여러 개 포함하는 #preview 요소가 있습니다. 하나 이상의 .preview_section 요소를 업데이트하면 MathJax에서 해당 요소 만 처리하도록하고 싶습니다. MathJax - 여러 유형 세트의 성능 최적화

  • 가 typset 매개 변수로 수정 ​​.preview_section 요소의 목록을 전달합니다

    나는 다른 접근을 시도했다. 이는 성능 측면에서 최악의 해결책입니다. 두 개 이상의 요소를 전달할 때 렌더링 시간은 거의 요소 수만큼 곱해집니다.
  • typeset 매개 변수로 #preview 요소를 전달하십시오. 이 솔루션의 문제점은 MathJax가 이미 렌더링 된 script[type="math/tex; mode=display"]을 다시 렌더링한다는 것입니다. 나는 tex2jax ignoreClass: "tex2jax_ignore" 설정을 설정하고 요소에 요소 모두에 .tex2jax_ignore을 추가하려고했지만 이미 tex2jax 전처리기에 의해 처리되지 않았으므로 아무런 효과가 없습니다 (가정합니다).
  • #preview 요소를 typeset 매개 변수로 전달하지만 미리보기에서 script[type="math/tex; mode=display"]을 모두 제거한 후 그게 가장 효율적이지만 미리보기에서이 스크립트를 제거하고 싶지는 않습니다.

script 요소를 처리하지 MathJax를 알려줄 수있는 방법이 있습니까? 또는 어떤 아이디어라도 내가 소스 코드에 뛰어 들기 전에 ... 고마워.

답변

1

좋아, 방금 내 문제를 발견했다. MathJax는 DOM의 모든 script[type="math/tex"] 요소에 JavaScript 객체를 저장합니다. 실제로 element.MathJax 저장이 객체는 포함 state 미리보기의 상태

checked: 1 
elementJax: Object 
preview: span.MathJax_Preview 
startNumber: 0 
state: 2 

(2 개 처리 수단). 따라서 TypeSet은 이미 렌더링 된 경우 미리보기를 다시 렌더링하지 않습니다. DOM에서 스크립트 태그를 다시 작성하지 않으면 (내가 한 일)이 경우 MathJax 객체와 미리보기 상태가 손실됩니다. 그래서 MathJax는 모든 스크립트를 다시 렌더링하고있었습니다.

+0

나는 똑같은 문제가 있습니다. mathjax 용 외부 자바 스크립트 파일 만 사용할 수 있으며 미리보기를 조정하기가 매우 어렵습니다. 나는 chatjax 코드를 사용하고있다. 내 jsfiddle은 다음과 같습니다. http://jsfiddle.net/Zky72/71/ chatjax를 사용하여 미리보기를 멋지게 사용할 수 있는지 알고 있습니까? – Kasper

+0

업데이트해야하는 각 요소에 대해'MathJax.Hub.Queue ([ "Typeset", MathJax.Hub, element]);를 호출 할 수 있습니다 ...? –

+0

이것이 첫 번째 접근법이지만 다소 느립니다. – benweet