2011-05-11 5 views
2

매우 기본적인 질문에 사과드립니다!Perl에서 라텍스 파일 구문 분석

난 그냥 (그래서 기본적으로 텍스트) 및 출력 난 항상 종류의 펄을 생각

\begin{theorem} 
some lines of latex 
\end{theorem} 

형식으로 항상 올바른 언어로 된 수있는 모든 (예를 들어) 정리를, 라텍스 파일에 읽고 싶어 이것을 위해서!

물론 저는 C++과 Java에서 매우 기본적인 프로그래밍 만 알고 있으며 사실상 Perl은 없습니다.

그럼에도 불구하고 현재 텍스트 파일을 읽을 수 있으며 한 줄씩 처리 할 수 ​​있습니다.

그것은이 작업을 수행하는 가장 기본적인 방법을 보인다는 다음과 같습니다?

($string =~ /pattern/) 

난 후 $, * +, 같은 제어 코드에 대한 책을 읽은 혼란 시작 등

모든 간단한 참조 또는 나를 연결시키는 링크?

는 (난 그냥 라텍스가 도움이 될 수 있기 때문에 일반적으로 텍스트 파일을 읽기 위해, 여기하지에 텍스 사이트를이를 넣어하지!)

+0

그래서 Perl에서 기본 파싱 자습서를 찾고 계십니까? – Gabe

+0

@Gabe, 네, 좋을 것 같습니다. 이것은 단지 실용성만을 목적으로 한 것입니다. 누군가가 이것이 힘들다고 나에게 이야기하면 아마도 수작업으로 그 일을 계속할 것입니다. – Qwirk

답변

8

도달해야

> perl -ne 'print if /^\\begin\{theorem\}$/.../^\\end\{theorem\}$/;' doc.tex 

당신은이 두 명령 사이에 뚜렷한 유사성을 발견 할 수있다 '는 t가 OS와 함께 번들로 sed을 얻고, 펄이 AIUI를 설치하는 것이 오히려 더 쉽다, 그래서 여기에 해당합니다. 그것은 사고가 아닙니다. Perl은 유닉스 텍스트 변환 유틸리티 인 sed이 포함 된 많은 아이디어를 가지고 있습니다.

+0

완벽한 감사, sed 작품 – Qwirk

0

내가 생각 가 ({정리} 시작 \ 패턴. *) \ end {theorem}

그리고 당신의 정리는 당신이 매칭을 한 후에 변수 $ 1에있을 것입니다.

참고 : 여기서는 가장 기본적인 구조로 가정합니다. 정리가 여러 줄 수 있다면 더 나은 해결책을 줄 수 있습니다.

$ sed -ne '/^\\begin{theorem}$/,/^\\end{theorem}$/p' doc.tex 

Windows에서 인 경우에, 그러나, 당신 돈 : (이 맥 포함) 유닉스 - y를 시스템에 있다면,이 작은 작업에 대해 먼저 sed에 대한

+0

이것이 작동하면 정리는 다중 행이 될 수 있습니다. - 나는 원래의 질문을 편집하여 편집합니다. 그것은 – Qwirk

+0

일 수 있습니다. 탐욕스럽지 않은 캡처를 사용하고 싶을 것입니다 :'(. +?)' – friedo