2011-01-25 9 views
5

LaTeX 형식 설명 및 레이블을 사용하여 LaTeX + pstricks로 만든 PDF 문서 또는 그래프를 생성하는 C++/Python의 코드 프로젝트가 있습니다. 그러나 HTML 버전의 문서 (이미 최소한의 마크 업을 작성하는 코드가 있음)와 TeX이 지원되지 않는 플롯 렌더러와 같은 일반 텍스트 출력도 있습니다.프로그래밍 방식으로 LaTeX 코드를 일반 텍스트로 변환/

예를 들어 필요한 경우 TeX 마크 업을 제거하고 싶습니다. 물리적 단위를 나타냅니다. 여기에는 \ text, \ mathrm 등의 구분이없는 (얇은) ​​공백이 포함됩니다. \ frac {# 1} {# 2}와 (와) 같은 내용을 # 1/# 2로 구문 분석하여 일반 텍스트 출력 HTML에 MathJax 사용). 우리가 지금 가지고있는 시스템으로 인해, 나는 파이썬에서 이것을 할 수 있어야한다. 즉, 이상적으로는 파이썬 패키지를 찾고 있는데 파이썬에서 호출 할 수있는 비 파이썬 실행 파일과 출력 문자열을 잡는 것도 괜찮을 것입니다.

나는 similar question on the TeX StackExchange site에 대해 알고 있지만 실제로 프로그래밍 방식의 솔루션은 없었습니다. detex, plasTeX 및 pytex를 보았습니다.이 모든 것들이 조금씩 죽어 보이지만 실제로는하지 않습니다. 필요 : TeX 문자열을 대표적인 일반 텍스트 문자열로 프로그래밍 방식으로 변환.

예를 들어 다음을 사용하여 기본 TeX 파서를 작성할 수 있습니다. pyparsing하지만 a) pitfall-laden이고 도움이 될 것입니다. b) 확실하게 누군가가 이전에 시도했거나 더 좋은 결과를 얻기 위해 TeX에 연결하는 방법을 알고 있습니까?

업데이트 : 모든 답변 주셔서 감사합니다 ... 실제로 조금 어색한 요청 인 것 같습니다! LaTeX의 일반 구문 분석보다 덜 할 수 있지만 루프에서 정규 표현식의로드가 아닌 파서를 고려해야하는 이유는 중첩 매크로와 다중 인수 매크로를 훌륭하게 처리하고 중괄호를 가져올 수 있기를 원한다는 것입니다. 일치가 제대로 작동합니다. 그런 다음 \ text와 \ mathrm과 같은 txt와 무관 한 매크로를 줄이고, \ frac last와 같은 txt 관련 함수를 처리하십시오. 적절한 괄호로도 가능합니다! 글쎄, 나는 꿈을 꿀 수있다. 왜냐하면 정규 표현식은 그렇게 끔찍한 일을하지 않기 때문이다.

+0

네가 맞다. TeX의 pyparsing은 잔인한 일이지만, 다른 사람들은 이것으로 어느 정도 진보했다. matplotlib에는 용도에 맞게 구부릴 수있는 pyparsing TeX 파서가 포함되어 있습니다. 또한 pyparsing 메일 목록에 게시하여 과거 TeX 작업을 수행 한 사람들 중 일부가 도움을 줄 수 있는지 확인할 수도 있습니다. – PaulMcG

+0

http://stackoverflow.com/questions/3610551/math-in-restructuredtext-with-latex를 참조하십시오. –

+0

고마워 : 나는 matplotlib를 처음부터 살펴볼 것이다 ... 그것은 내 패키지 중 하나에 대한 기존 종속성이기도하다. 그래서 나는 운이 좋다면 mpl API를 통해 사용할 수있다! 건배 : – andybuckley

답변

1

(대부분의 * 텍 배포판과 함께 제공) detex을 시도하거나 개선 된 버전 : http://code.google.com/p/opendetex/

편집 : 오, 당신이 이미 DETEX을 시도 참조하십시오. 그래도 opendetex가 도움이 될 수 있습니다.

+0

이전에 opendetex를 보지 못했습니다. 훨씬 더 좋아 보였습니다. 아마도 파서를 구부릴 수 있고 수학 모드 명령으로 구조화 된 것들을 확장 할 수 있습니다. 감사. – andybuckley

-1

라텍스 형식 설명 및 라벨이 당신의 실수

유액 + pstricks와를 사용하여 만든 PDF 문서 또는 그래프를 생성하는 데 사용됩니다. 너는 그렇게해서는 안된다.

RST 또는 다른 더 나은 마크 업 언어를 사용하십시오.

Docutils을 사용하면 RST 소스에서 LaTeX 및 HTML을 만들 수 있습니다.

+4

의견을 보내 주셔서 감사합니다! 이 소프트웨어는 학문적 인 물리학에서 사용하기위한 것이며, 수학 구문 분석/렌더링을 위해 LaTeX을 사용합니다. 아마도 인코딩 된 텍스트의 50 % 이상이 수학이며 출력이 원활하게 (LaTeX 준비) 간행물. 그래서 나는 다시 동의 할 수 있습니다. RST는 형식을 매우 세부적으로 제어 할 필요가없는 텍스트 중심의 경우에 사용되는 경우가 대부분이며, LaTeX는 응용 프로그램과 사용자 커뮤니티에 훨씬 적합합니다. 유연한 작업을하는 것은 어색합니다 ... – andybuckley

+0

@andybuckley : RST는 LaTeX 수학을 지원합니다. 나는 그것을 사용했다. 나는 sphinx (http://sphinx.pocoo.org/)에서 지원을 선호합니다. 보다 유용한 조언을 보려면 http://stackoverflow.com/questions/3610551/math-in-restructuredtext-with-latex 관련 질문을 참조하십시오. –

+0

@andybuckley : "실수가 아니에요". 작동하지 않으면 어딘가에서 실수가 있어야합니다. 실수가 없다면 완벽하게 작동해야합니다. 그것이 완벽하게 작동한다면, 왜 질문을합니까? –

1

TeX 자체를 사용하여 렌더링하는 것을 고려 중이므로 성능에 문제가 없다고 생각됩니다. 이 경우 두 가지 옵션을 사용할 수 있습니다 : 하나의 dvi 파일에서 텍스트를 가져 오는 dvi2txt (각 레이블에 하나 생성) 또는 dvi를 래스터 이미지로 렌더링 할 수 있습니다. latex2html은 수식을 처리합니다.

+0

댓글 주셔서 감사합니다. 사실, 우리는 수천 개의 레이블을 분석해야합니다 (이것은 플롯 생성을 위해 최적화되어 있으며 좀 더 속도를 높이기 원합니다). 하지만 매우 간단한 LaTeX 문서가 신속하게 처리 될 수 있으며 한 TeX 문서에서 여러 라벨을 일괄 처리하는 것이 불가능할 수도 있습니다. AFAIK LaTeX의 시작 시간이이 경우를 지배하게 될 것입니다. 그래서 PyTeX에서 작동했던 LaTeX 데몬과 같은 것이 유용 할 것입니다 ... 그 프로젝트가 아직 살아 있다면! – andybuckley

1

나는 pandoc [여기에 링크 설명 입력] [1]을 시도 할 것입니다. 하스켈로 작성되었지만 변환기가 무엇이든 정말 멋진 라텍스 2입니다.

[1] : http://johnmacfarlane.net/pandoc/index.html.

+1

나는 Haskell에있는 것이 문제가 아니 었으면 좋겠다.하지만 나는 비표준 프로그램과 Haskell 컴파일러를 사용하는 사용자에게 의존하는 코드를 실제로 배포 할 수 없다.내가 아는 한 실제 파이썬 - 하스켈 바인딩은 없다. 킬러가 아니지만 도움이되지 않는다. 나는 개인적으로 그것을 사용할 것이다. - 감사합니다! – andybuckley

3

주의 사항 : 당신이 생각하는 것보다 일반 TeX를위한 완벽한 파서를 작성하는 것이 훨씬 더 어렵습니다. TeX 수준 (LaTeX 아님) \def 명령은 실제로 TeX 구문을 확장합니다. 예를 들어 \def\foo #1.{{\bf #1}}\foo goo.으로 확장합니다. goo - 점이 foo 매크로의 구분 기호가되었습니다. 따라서 TeX 형식을 사용해야하는 경우 어떤 패키지를 사용할 수 있는지 제한하지 않고 간단한 구문 분석에만 의존하지 않는 것이 좋습니다. TeX 렌더링이 필요합니다. 비록 완벽하지는 않지만 catdvi이 제가 사용하는 것입니다.

+1

나는 그보다 덜 일반적인 파싱으로 할 수 있지만, 알림을 보내 주셔서 감사합니다! 사용법을 LaTeX의보다 합리적인 하위 집합으로 제한 할 수 있습니다. 루프에서 정규 표현식을로드하는 대신 파서를 고려해야하는 이유는 중첩 매크로와 다중 인수 매크로를 멋지게 처리 할 수 ​​있기를 원합니다. 적절하게 작동하는 중괄호. 그런 다음 \ text와 \ mathrm과 같은 txt와 무관 한 매크로를 줄이고, \ frac last와 같은 txt 관련 함수를 처리하십시오. 적절한 괄호로도 가능합니다! – andybuckley

0

다른 게시물을 빌드 Eduardo Leoni, 나는 pandoc을보고 있었고 독립 실행 형 실행 파일이 있다는 것을 알았지 만 this page에도 C 호출 가능한 시스템 라이브러리를 구축 할 것을 약속합니다. 아마도 이것은 당신이 함께 살 수있는 무언가입니까?

관련 문제