如何解析LaTex文件 [英] How to Parse LaTex file
问题描述
我刚刚写完了Latex中的微积分摘要.
I just finished to write the summary for calculus in Latex.
现在的主要问题是文件包含许多我现在不需要的东西.
The main problem now is that the files contains many things I don't really need now.
.tex文件包含许多我需要认真研究的定义和定理.
The .tex files contains many definitions and theorems that i need to study by heart.
这些定义在tex文件中有其自己的定义,因此文件中的任何定义都将以:
The definitions have their own definition in the tex file, so any definition in the file will start with:
\begin{definition}
以
\end{definition}
定理也一样.
我需要写点东西来取出\begin{}...\end{}
内部的任何东西.
I need to write something to take out whatever is inside the \begin{}...\end{}
.
例如在名为A的列表中:
For example in a list called A:
\begin{document}
\begin{center}
\begin{definition} Hello WOrld! \end{definition}
\begin{example}A+B \end{example}
\begin{theorem} Tre Capre \end{theorem}
\begin{definition} Hello WOrld2! \end{definition}
\end{center}
\end{document}
应包含:[[\begin{definition} Hello WOrld! \end{definition}],[\begin{theorem} Tre Capre \end{theorem}],[\begin{definition} Hello WOrld2! \end{definition}]]
在这个站点上,我发现我可以使用正则表达式:
Looking in this site i found that i can use Regular Expressions:
for i in range(5):
x = i+1
raw = open('tex/chapter' + str(x) + '.tex')
A = []
for line in raw:
A.append(re.match(r'(\begin{definition})://.*\.(\end{definition})$', line))
print(A)
但是输出只是None
,我真的不知道为什么
but the output is just None
and i don't really know why
import re
for i in range(5):
x = i+1
raw = open('tex/chapter' + str(x) + '.tex')
A = re.findall(r'\\begin{definition}(.*?)\\end{definition}', raw.read())
print(A)
输出如下:
[]
[]
[]
[]
[]
推荐答案
从我从问题中得到的结果来看,您只需要Latex文件中的定义.您可以使用findall
直接获取您的定义:
From what I get from the question you just want the definitions from the Latex file. You can use findall
to directly get your definitions:
A = re.findall(r'{definition}(.*?)\\end{definition}', raw.read())
Note the usage to .*?
in order to tackle the greedy regex matching
这篇关于如何解析LaTex文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!