我刚刚写完关于Latex中微积分的总结。
现在的主要问题是文件包含许多我现在并不真正需要的东西。
.tex 文件包含许多我需要认真研究的定义和定理。
这些定义在 tex 文件中有自己的定义,因此文件中的任何定义都将以:

\begin{definition}
并以
\end{definition}
定理也一样。
我需要写一些东西来取出 \begin{}...\end{} 里面的任何东西。
例如在名为 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}]]查看此站点,我发现我可以使用正则表达式:
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,我真的不知道为什么。
编辑:
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 直接获取您的定义:

A = re.findall(r'{definition}(.*?)\\end{definition}', raw.read())

请注意 .*? 的用法,以解决 greedy 正则表达式匹配问题

关于python - 如何获取 LaTeX 文件中的所有 `\begin{definition}...\end{definition}` 块?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30752351/

10-12 17:49