Разбор латексного файла в Perl - PullRequest
2 голосов
/ 11 мая 2011

Извиняюсь за очень простой вопрос!

Я просто хочу прочитать в латексном файле (так текст в основном) и вывести все (скажем) теоремы, которые всегда в формате

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

Я всегда считал, что Perl был правильным языком для этого!

Конечно, я знаю только самые базовые программы на C ++ и Java, и практически не знаю Perl.

Тем не менее яв настоящее время могу читать в текстовом файле и обрабатывать его построчно.

Кажется, что самый простой способ сделать это:

($string =~ /pattern/) 

Я начал сбиваться с толку, читая о контролетакие коды, как?, * +, $ и т. д.

Какие-нибудь простые ссылки или ссылки, которые помогут мне начать?

(я поставил это здесь, а не на сайт Tex, так как это может быть полезнообычно для чтения текстовых файлов, а не только для LaTeX!)

Ответы [ 2 ]

8 голосов
/ 11 мая 2011

Если вы работаете на Unix-машине (включая Mac), для такой маленькой задачи вы должны сначала достичь sed:

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

Однако, если вы работаете в Windows, вы не получаете sed в комплекте с ОС, и Perl довольно прост в установке AIUI, поэтому вот эквивалент:

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

Вы можете заметить явное сходство между этими двумя командами. Это не случайность; Perl позаимствовал идеи у многих старых утилит для работы с текстом Unix, включая sed.

0 голосов
/ 11 мая 2011

думаю шаблон \ Начать {теорема} (. *) \ Конец {теорема}

и после сопоставления ваша теорема будет находиться в переменной $ 1.

Примечание: я предполагаю самую базовую структуру здесь. Если теорема может быть многострочной, то я могу дать вам лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...