LaTeX와 Markdown을 어떻게 혼합 할 수 있습니까? [닫은]


181

나는 수업 노트에 Markdown을 사용하고 있으며 훌륭합니다. Markdown에서 전처리를 수행하여 테이블과 같은 작업을 수행 할 수도 있습니다. 그러나이 용어는 많은 수학 수업을 가르치고 있으며 MarkT를 사용하여 LaTeX 수식을 넣을 수 있기를 바랍니다.

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의 각 조각을 가져 와서 앤티 앨리어싱 처리 된 PNG 파일로 사전 처리하여 HTML <img>태그 를 통해 마크 다운에 포함시킬 수 있기를 원합니다 . 그러나 LaTeX의 조각을 가져 와서 멋진 이미지를 얻는 방법을 전혀 모릅니다.

  • 오른쪽 경계 상자가 있습니다
  • 앤티 앨리어싱

내가 아는 방법은 DVI, PostScript 또는 PDF 형식의 전체 페이지를 얻는 것입니다.

이 문제가 해결되었다고 확신하지만 올바른 검색어를 추측 할 수 없습니다. 해결 방법 또는 기존 솔루션을 어디에서 찾을 수 있습니까?


편집 : mathTeX를 설치하면 코드가 융통성이 없으며 Linux Filesystem Hierarchy 표준을 위반하며 해당 단어의 좋은 의미와 나쁜 의미에서 아마추어 작업이라고 말할 수 있습니다. 이 코드는 너무 복잡하여 명백한 결함이 없습니다. 대안을 찾고 있습니다.

또한 솔루션은 기본적으로에 기반을두고 있습니다 dvipng.


1 년 후 : 나는 내가 원했던 완벽한 통합을 얻지 못했지만, 내 자신의 고안의 대본을 따라 가고 있습니다. 그것은 대신 밝혀 dvipng조금 쉽게 사용할 수 dvips -EconvertImageMagick이의 프로그램. 이점은 스케일링과 같은 것들을 약간 더 제어하고 투명한 배경을 쉽게 만들 수 있다는 것입니다. 궁금한 점이이 예제를 검사 할 수 있습니다 .

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


좋은 질문입니다. LaTeX에서 직접 준비를했지만, 오 텍스를 사용하더라도 그 목적을 위해 조금 어려워요 ...
dmckee --- 전 운영자 고양이

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

@ShreevatsaR 아마 이번 여름에 pandoc과 multimarkdown을 모두 시도 할 것입니다.
Norman Ramsey

4
너무 복잡해서 명백한 결함은 없습니다 . 처음 읽을 때이 유쾌한 참조를 놓쳤습니다.
찰스 스튜어트

6
누군가이 질문이 주제와 다른 점을 설명 할 수 있습니까?
AnnanFay

답변:



41

아마도 mathJAX 가 티켓 일 것입니다. 2004 년 빈티지 JavaScript 라이브러리 인 jsMath를 기반으로 합니다.

2015 년 5 월 5 일 현재 칸 아카데미에서 가장 성능이 뛰어난 자바 스크립트 LaTeX 라이브러리 인 KaTeX 를 추천 합니다.



25

MathJax 렌더링 지원을 받으려면 Markdown 파일 맨 위에 다음 코드를 추가하십시오.

<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="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-AMS_HTML-full"></script>

`$ x ^ 2 $`또는`$$ x ^ 2 $$`는 예상대로 렌더링됩니다 :-)

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

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


미래에서 참고 : cdn.mathjax.org 확인, 수명 종료에 가까워 mathjax.org/cdn-shutting-down 마이그레이션 팁 (그리고 아마도 미래의 리더에 대한 게시물을 업데이트)에 대한.
피터 크라우 츠 버거

12

반대 질문으로 귀하의 질문에 대답하겠습니다 ...

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

추신

org-mode를 보지 않았다면 Markdown보다 일반적인 "자연적인 마크 업 언어", 즉 테이블 처리와 같은 강력한 장점이 있습니다. 출처 :

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

당신이 생각하는 것을 나타냅니다 ...

그리고 라텍스는 tex-mode의 preview-latex를 사용하여 조각으로 렌더링됩니다.


1
나는 org-mode를 보았고, 내장 된 LaTeX는 잘 수행 된 것처럼 보이지만, 내가 원하는 것 (일반적인 emacs)에 대한 총체적인 오버 킬처럼 보인다. 흥미롭게도 기본 렌더링 엔진은 다시 그렇습니다 dvipng. 테이블 문제는 중요한 일이다 그러나 나는 이미 그것을 해결하기 위해 전처리를 작성했습니다 :-) 일
노먼 램지

8

당신은 멀티 마크 다운을 봐야합니다 http://fletcherpenney.net/multimarkdown/을

메타 데이터 (헤더, 키워드, 날짜, 작성자 등), 테이블, asciimath, mathml, 지옥을 지원합니다. 라텍스 수학 코드를 거기에 넣을 수 있다고 확신합니다. 기본적으로 이러한 다른 유용한 기능을 모두 추가하기 위해 markdown을 확장 한 것입니다. XSLT를 사용하므로 자신 만의 LaTeX 스타일을 쉽게 채울 수 있으며 직접 변환 할 수 있습니다. 나는 항상 그것을 사용하고 많이 좋아합니다.

마크 다운에 멀티 마크 다운이 포함되기를 바랍니다. 오히려 좋을 것입니다.

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


내가 원하는 것보다 더 복잡해 보이며 표현력이 무엇인지 명확하지 않습니다 (MathML이 reference0에 통합되지 않음).
노먼 램지


6

kramdown은 당신이 묘사 한 것을 정확하게 수행합니다 :

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

그리고 Markdown보다 더 안정적이고 잘 정의되어 있습니다.


이 페이지는 현재 아래에있는 것처럼 보이지만, 여기에이 페이지가 Wayback Machine에 따라 301 리디렉션하는 데 사용 된 페이지가 있습니다. kramdown.gettalong.org:80/
Derwent


3

이봐, 이것이 가장 이상적인 해결책은 아니지만 그것은 나를 위해 작동합니다. 결국 Python-Markdown LaTeX 확장을 만들었습니다.

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

$ math $ 및 % text % 구문을 사용하여 인라인 수학 및 텍스트 표현식에 대한 지원을 추가합니다. 확장 기능은 라텍스 / 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을 사용하고 있기 때문에 실제로는 문제가되지 않습니다. :)


2

예,하지만 조금 해킹해야합니다. 라텍스 태그 $\some\inline\latex$또는 $$\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)

물론 .block 및 .inline 이미지에 적합한 CSS를 직접 정의해야합니다 ...


2

나는 지금이 토론을 만났으므로 내 의견이 여전히 유용하기를 바랍니다. 저는 MathJax에 참여하고 있으며, 귀하의 상황을 이해하는 방법을 통해 문제를 해결하는 좋은 방법이라고 생각합니다. LaTeX 코드를 그대로두고 MathJax가 수학을 렌더링하도록합니다.

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


1
특정 스택 교환 사이트 Math.Se, Physics.SE 등 현재 MathJax를 사용하지만 관리 위치는 MathJax가 너무 무겁기 때문에 필요한 경우를 제외하고는 배포 할 수 없습니다. 그러나 프레젠테이션을 브라우저에서 실행해야하므로 프레젠테이션에는 적용되지 않습니다.
dmckee --- 전 운영자 고양이

1

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

루비를 사용할 수 있다면 다양한 라텍스-> MathML 변환기를 사용하여 수학을 처리하도록 maruku 를 구성 할 수 있습니다. Instiki 는 이것을 사용합니다. itex2MML을 사용하고 수학을 변환하기 위해 PHPMarkdown을 확장 할 수도 있습니다. 기본적으로 마크 다운 엔진에 적절한 단계에서 추가 단계를 삽입합니다.

루비와 PHP에서는 이렇게됩니다. 나는이 솔루션이 다른 언어에도 적용될 수 있다고 생각합니다 .perex 바인딩을 생성하기 위해 itex2MML 확장을 얻었습니다.


1

teqhtml을 찾았을 때 정확히 같은 것을 찾고 있었습니다 . 결과 이미지를 주변 텍스트와 수직으로 정렬하면 보너스로 $ 및 $$ 방정식을 이미지로 변환합니다. 많은 문서는 아니지만 매우 간단합니다.

미래의 독자들에게 도움이 되길 바랍니다.



1

Lunamark 코드를 사용하여 Lua에서 Markdown을 구문 분석 할 수 있습니다 ( Github repo 참조 ). 에서 사용하려면 lualatex, context, Metafun, 일반 Luatex하고,texlua 스크립트).

이 프로젝트는 Pandoc의 저자 인 John MacFarlane에 의해 시작 되었으며이 도구의 개발은 Pandoc의 개발 과정을 매우 밀접하게 추적하며 품질이 비슷합니다.

Khaled Hosny 는 편리한 매크로 지원을 제공하는 컨텍스트 모듈을 작성했습니다. 받는 마이클의 대답은 마크 다운 지원하는 패키지가 있습니까? 질문 은 라텍스에 대한 유사한 지원을 제공하는 코드를 제공합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.