2010-02-03 2 views
144

클래스 메모에 Markdown을 사용 해왔다. 훌륭하다. 테이블과 같은 일을 할 수 있도록 Markdown에서 일부 전처리 작업을 수행합니다. 그러나이 용어는 내가 수학의 많은 클래스를 가르치고, 나는 다음과 같이 마크 다운 뭔가를 LaTeX의 수식을 넣을 수있을 싶어요 :LaTeX을 Markdown과 어떻게 섞을 수 있습니까?

The refinement relation is written $a \sqsubseteq b$, which can be 
pronounced "$a$ approximates $b$" or "$b$ is at least as defined as $a$". 

내가 취할 수 있도록하고 싶습니다 LaTeX의 각 프래그먼트를 HTML 대신 <img> 태그를 통해 내 Markdown에 포함시킬 수있는 멋진 앤티 엘리 어싱 된 PNG 파일로 전처리합니다. 하지만 어떻게 유액의 조각을 가지고

  • 는 안티 앨리어싱되어
  • 권리 경계 상자를 가지고있는 좋은 이미지를 얻기 위해 절대적으로 아무 생각이

내가 할 방법을 알고 모두 풀 수있다 DVI, PostScript 또는 PDF 형식의 페이지

이 문제가 해결되었지만 적절한 검색어를 추측 할 수 없었습니다. 어떤 문제 해결 방법이나 기존 솔루션을 찾을 곳이 있습니까?


편집는 : mathTeX를 설치하는 데, 나는 코드가 리눅스 파일 시스템 계층 구조 표준을 위반 한 것으로, 유연성이며, 그 단어의 좋고 나쁜 감각 모두에서 아마추어 업무 —이라고 말할 수 있습니다 . 코드는 너무 복잡하여 명백한 오류가 없습니다. 나는 대안을 찾고있을 것이다.

또한 아래쪽의 솔루션은 dvipng을 기반으로합니다.


ONE 년 후 : 내가가 역전 원활한 통합을 얻을 결코하지 않았다,하지만 난 내 자신의 고안의 스크립트에 따라 절뚝 거리는입니다. dvipng 대신 ImageMagick 프로그램 dvips -Econvert 프로그램을 사용하는 것이 약간 쉽습니다. 이점은 스케일링 같은 것들을 약간 더 제어하고 투명한 배경을 만드는 것이 쉽다는 것입니다. 호기심이 this example을 검사 할 수 있습니다.

누구에게나이 솔루션을 권장 할 수 없습니다. 그러나 MathTeX도 추천 할 수 없습니다.

+0

좋은 질문입니다. 나는 LaTeX에서 직접 준비를 했었지만 그 목적을 위해 조금이라도 말하고 심지어 auctex를 사용해도 ... – dmckee

+5

Pandoc을 사용해 보셨습니까? Markdown + LaTeX는 Markdown + LaTeX를 (무엇이든) 변환 할뿐만 아니라 최신 릴리스로 파스 트리에서 작동하는 스크립트를 작성할 수 있으므로 원하는 작업을 쉽게 수행 할 수 있습니다. – ShreevatsaR

+0

@ShreevatsaR 이번 여름에 pandoc과 multimarkdown을 모두 시험해 보겠습니다. –

답변

57

Pandoc으로 해 보았습니까?

+0

참조 http://stackoverflow.com/questions/663532/lighweight-markup-wiki-language-for-documenting –

+0

또한 RMarkdown을 직접 사용할 수도 있습니다. 판독이 그것을 사용합니다. – felipecrp

4

mimeTeX이 유용 할 수 있습니다.

+2

후계자 mathTeX가 더 나아졌습니다 --- 그리고 'dvipng'이 중요한 것입니다. . 좋은 포인터 주셔서 감사합니다! +1 –

+0

이제 KaTeX를 추천합니다. Khan Academy의 가장 뛰어난 Javascript LaTeX 라이브러리입니다. – duffymo

+0

링크가 다음과 같이 변경되었습니다. http://www.forkosh.com/mimetex.html – quine

37

아마도 mathJAX 티켓입니다. 그것은 2004 년 빈티지 자바 스크립트 라이브러리 인 jsMath을 기반으로합니다.

2015 년 2 월 5 일부터 Khan Academy의 가장 뛰어난 Javascript LaTeX 라이브러리 인 KaTeX을 추천합니다.

2

네, 그렇지만 해킹해야 할 것입니다. 적절한 이미지 태그가있는 또는 $$\some\equation$$ 라텍스 태그를 mimetex.cgi 스크립트로 대체하는 필터를 작성했습니다. 그것은 5 분 모두 걸렸습니다.

경고 : 화려 추한 ... 물론

#!/usr/bin/env python 
import sys, markdown,re 

MIMETEX_LOC="http://some.server.com/cgi-bin/mimetex.cgi" 

def sanitizeLatex(text): 
    return re.sub(r"\\",r"%5C", text) 

def wrapLatexBlock(text): 
    return '<img alt="equation" class="block" src="%s?%s"></img>'%(MIMETEX_LOC,text) 

def wrapLatexInline(text): 
    return '<img alt="equation" class="inline" src="%s?%s"></img>'%(MIMETEX_LOC,text) 

def prepLatexBlock(matchobj): 
    return wrapLatexBlock(sanitizeLatex(matchobj.group()[2:-2])) 

def prepLatexInline(matchobj): 
    return wrapLatexInline(sanitizeLatex(matchobj.group()[1:-1])) 


if __name__ == "__main__": 
    # initialise markdown 
    md=markdown.Markdown() 
    raw_md=open(sys.argv[1],"r").read() 

    ## 
    # deal with embedded latex 
    ## 
    raw_md=re.sub(r'\$\$(.*?)\$\$',prepLatexBlock, raw_md) 
    raw_md=re.sub(r'\$(.*?)\$',prepLatexInline, raw_md) 

    ## 
    # once latex is parsed, convert md to html 
    ## 
    main_html=md.convert(raw_md) 

    # hey presto! 
    print(main_html) 

, 당신을 위해 자신 CSS 적절한를 정의해야합니다.블록과 .inline 이미지 ...

11

나는 카운터 질문 귀하의 질문에 대답거야 ...

당신이 조직 모드에 대해 어떻게 생각하십니까? Markdown만큼 순수하지는 않지만 Markdown과 비슷합니다. 작업하기 쉽고 라텍스를 임베딩 할 수 있습니다. Cf. http://www.gnu.org/software/emacs/manual/html_node/org/Embedded-LaTeX.html

포스트 스크립트는 경우

당신이 조직 모드에보고하지 않은, 그것은 마크 다운을 통해 범용 "자연 마크 업 언어"와 같은 하나의 큰 힘, 테이블, 즉 그것의 치료가 있습니다. 소스 :

 
| 1 | 0 | 0 | 
| -1 | 1 | 0 | 
| -1 | -1 | 1 | 

이 ... 당신이 그것을 것 생각 만 나타냅니다

그리고 라텍스 텍스 모드의 미리보기 - 라텍스를 사용하여 조각으로 렌더링됩니다.

+0

org-mode를 살펴 봤는데 임베디드 LaTeX가 잘 된 것 같지만 원하는만큼 과장된 것 같습니다 (일반적인 이맥스). 흥미롭게도, 나는 기본 렌더링 엔진이 다시'dvipng '이라는 것에 주목했다. 테이블 문제는 중요하지만 이미 그것을 해결하기 위해 전처리기를 작성했습니다 :-) +1 –

8

당신이 multimarkdown http://fletcherpenney.net/multimarkdown/

는 메타 데이터 (헤더, 키워드, 날짜, 작성자 등), 테이블, asciimath에 대한 지원을하고 보라, MathML을, 도대체 난 당신이 오른쪽 라텍스 수학 코드를 부착 할 수 확신 그곳에. 이것은 기본적으로 모든 다른 유용한 기능을 추가하기 위해 markdown을 확장 한 것입니다. XSLT를 사용하기 때문에 자신의 LaTeX 스타일을 쉽게 채찍질 할 수 있으며 직접 변환 할 수 있습니다. 나는 항상 그것을 사용하고, 나는 그것을 많이 좋아한다.

마크 다운이 멀티 마크 다운을 통합하기를 바랍니다. 그것은 오히려 좋을 것이다.

편집 : Multimarkdown은 html, latex 및 기타 몇 가지 형식을 생성합니다. html에는 원하는 스타일 시트가 있습니다. Firefox와 Safari/Chrome에 올바르게 표시되면 MathML로 변환됩니다.

+0

내가 원하는 것보다 더 복잡해 보입니다. 그리고 표현력이 무엇인지 명확하지 않습니다 (MathML이 reference0에 포함되어 있지 않습니다) . –

1

Lunamark 코드 (해당 Github repo 참조)를 사용하여 Markdown을 구문 분석 할 수 있습니다. Markdown은 Luatex의 매크로에 의해 직접 구문 분석 될 수 있으며 Pandoc에서 지원하는 여러 형식으로의 변환을 지원합니다 (즉 라이브러리는 다음과 같습니다. lualatex, context, Metafun, Plain Luatex 및 texlua 스크립트에서 사용하기에 적합합니다.

이 프로젝트는 Pandoc의 저자 John MacFarlane에 의해 시작되었으며이 도구의 개발은 Pandoc의 개발을 매우 밀접하게 추적하며 비슷한 (즉, 우수한) 품질을 제공합니다.

Khaled Hosny은 편리한 매크로 지원을 제공하는 컨텍스트 모듈을 작성했습니다. Michal's answer to the Is there any package with Markdown support? question은 라텍스에 대한 유사한 지원을 제공하는 코드를 제공합니다.

1

어떤 언어를 사용하고 있습니까?

ruby를 사용할 수 있다면 maruku을 구성하여 다양한 latex -> MathML 변환기를 사용하여 수학을 처리 할 수 ​​있습니다. Instiki이 이것을 사용합니다. itex2MML을 사용하여 수학을 변환하는 PHPMarkdown을 확장하는 것도 가능합니다. 기본적으로 적절한 단계에서 Markdown 엔진에 추가 단계를 삽입합니다.

그래서 루비와 PHP에서는이 작업이 수행됩니다. 나는이 솔루션이 다른 언어에도 적용될 수 있다고 생각한다. perl 바인딩을 생성하기 위해 itex2MML 확장을 얻었다.

1

나는이 토론을 지금 막 경험 했으므로 내 의견이 여전히 유용하기를 바랍니다. 저는 MathJax에 관여하고 있으며 상황을 어떻게 이해했는지에 따라 문제를 해결하는 좋은 방법이라고 생각합니다. LaTeX 코드를 그대로두고 MathJax에서 수학을 렌더링 할 수있게하십시오.

이미지를 선호하는 이유가 있습니까?

+1

특정 스택 교환 사이트 Math.Se, Physics.SE 등 ... * MathJax를 지금 사용합니다. 관리의 위치는 MathJax가 절대적으로 필요한 경우를 제외하고는 너무 무거워서 배포 할 수 없다는 것입니다. 그러나 이것은 프레젠테이션에는 적용되지 않습니다. 브라우저에서 작업을 실행해야하기 때문입니다. – dmckee

1

내가 정확히 teqhtml을 찾았을 때 똑같은 것을 찾고있었습니다. 결과 이미지를 주변 텍스트와 수직으로 정렬하는 좋은 보너스를 사용하여 $ 및 $$ 방정식을 이미지로 변환합니다. 많은 의사는 아니지만 매우 직설적입니다.

희망은 미래의 독자들에게 도움이되기를 바랍니다.

3

이 기능은 가장 이상적인 솔루션은 아니지만 나에게 적합합니다. 나는 Python-Markdown LaTeX 확장을 만들었습니다.

https://github.com/justinvh/Markdown-LaTeX

그것은 $ 수학 $와 % 텍스트 % 구문을 사용하여 인라인 수학 및 텍스트 표현에 대한 지원을 추가합니다. 확장은 latex/dvipng를 사용하여 각 방정식/텍스트에 대한 png를 생성 한 다음 외부 이미지가 아닌 직접 이미지를 인라인하도록 base64로 인코딩하는 전처리 기입니다.

데이터는 표현식을 base64 표현으로 인코딩하는 간단한 구분 된 캐시 파일에 저장됩니다. 이것은 라텍스가 실제로 실행되어야하는 횟수를 제한합니다. 여기

은 예입니다

%Hello, world!% This is regular text, but this: $y = mx + b$ is not. 

출력 : 당신이 그것을 볼 수 있듯이

$ markdown -x latex test.markdown 
<p><img class='latex-inline math-false' alt='Hello, world!' id='Helloworld' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFwAAAAQBAMAAABpWwV8AAAAMFBMVEX///8iIiK6urpUVFTu7u6YmJgQEBDc3NxERESqqqqIiIgyMjJ2dnZmZmbMzMwAAAAbX03YAAAAAXRSTlMAQObYZgAAAVpJREFUKM9jYICDOgb2BwzYAVji8AQg8fb/PZ79u4AMvv0Mrz/gUA6W8F7AmcLAsJuBYT7Y1PcMfLiUgyWYF/B8Z2DYAVReABKrZ2DHpZwdopzrA0nKOeHKj66CKOcKPQJWwJo2NVFhfwCQyymhYwCUYD0avIApgYFh2927/QUcE3gDwMpvMhRCDJzNMIPhKZg7UW8DUOIMg9sCPgGo6e8ZODeAlAP9xLEArNy/IIwhAMx9D3IM+3cgi70BqnxZaNQFkHJWAQbeBrByjgURExaAuc9AyjnB5hjAlEO9ygVXzrplpskEMPchQvkBmGMcGApgjjkAVs7yhyWVAcwFK2f/AlJeAI0m5gMsEK+aMhQ6aDuA1DcDIZirBg7IOwxlB5g2QBJBF8OZVUz95hqfC3hOXWGYrwBSHskwk4EByGXab8QAlOBaGizFKYAtUlgUGEgBTCSpZnDCLQUA+y6MXeYnPDgAAAAASUVORK5CYII='> This is regular text, but this: <img class='latex-inline math-true' alt='y = mx + b' id='ymxb' src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFIAAAAOBAMAAABOTlYkAAAAMFBMVEX///9ERETu7u4yMjK6urp2dnZUVFSIiIjMzMwQEBDc3NwiIiJmZmaYmJiqqqoAAADS00rKAAAAAXRSTlMAQObYZgAAAOtJREFUKM9jYCAACsCk4wYGgiABTLInEKuS+QGxKvkVGBj47jBwI8tcffI84e45BoZ7GVcLECo9751iWLeSoRPITBQEggMMDBy9sxj2MDgz8DIE8yCpPMxwjWFBGUMMkpFcbAEMvxjKGLgYxIE8NkHBiYIyQMY+hmoGhi0Mdsi2czawbGCQBTJ+ILvzE0MaA9MHIIWwnWE9A+sBpk8LGDgmMCnAVXJNYPgCJHhRQvUiA/cDXoECZx4DXoSZTBtYgaaEPw5AVnkOGBRc5xTcbsReQrL9+nWwyxbgC88DcJZ+QygDcYD1+QPiFAIAtLA8KPZOGFEAAAAASUVORK5CYII='> is not.</p> 

장황한 출력이지만, 이미 사용하고 있기 때문에 그것은 정말 문제가되지 않습니다 Markdown :)

1

정말 오래된 스레드를 불러 죄송하지만 몇 년 동안 jemdoc을 사용하고 있으며 정말 훌륭합니다.

18

는 MathJax 지원에게 다음

<style TYPE="text/css"> 
code.has-jax {font: inherit; font-size: 100%; background: inherit; border: inherit;} 
</style> 
<script type="text/x-mathjax-config"> 
MathJax.Hub.Config({ 
    tex2jax: { 
     inlineMath: [['$','$'], ['\\(','\\)']], 
     skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'] // removed 'code' entry 
    } 
}); 
MathJax.Hub.Queue(function() { 
    var all = MathJax.Hub.getAllJax(), i; 
    for(i = 0; i < all.length; i += 1) { 
     all[i].SourceElement().parentNode.className += ' has-jax'; 
    } 
}); 
</script> 
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script> 

및 렌더링 얻을 귀하의 마크 다운 파일의 맨 위에 다음 코드를 추가`$ X^2 $`또는`$$ X^예상대로 2 $$`렌더링 :-)

온라인 배포를 사용하지 않으려는 경우 MathJax의 로컬 버전을 설치할 수 있지만 로컬 웹 서버를 통해 호스트해야 할 수도 있습니다.

업데이트 : 요즘 표준형 마크 업 대신 pandoc을 사용하지만 위의 내용은 여전히 ​​유용합니다.

+0

미래의 메모 : cdn.mathjax.org의 수명이 다해 가고 있습니다. https://www.mathjax.org/cdn-shutting-down에서 마이그레이션에 대한 팁을 확인하고 향후 독자를 위해 게시물을 업데이트하십시오. –

6

RStudio에는 Markdown 및 LaTeX를 사용할 수있는 좋은 IDE가 있습니다.

https://kramdown.gettalong.org/syntax.html#math-blocks

을 그리고 그것은 방법이 더 신뢰할 수 있고 마크 다운보다 잘 정의입니다 :

+0

하지만 OP가 요청한 것처럼 동일한 문서/문장에서이를 결합 할 수 있습니까? – matt

+0

지수를 마크 다운 모드로 삽입 할 수 있습니다. http://www.rstudio.com/ide/docs/authoring/using_markdown_equations의 예제를 참조하십시오. –

4

kramdown 당신이 무엇을 설명 정확히 않습니다.

+0

현재이 페이지가 다운 된 것처럼 보입니다. 그러나 여기는 웨이 포인트 머신에 따라 리디렉션되는 페이지가 있습니다. kramdown .gettalong.org : 80 / – Derwent

관련 문제