You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python生成LaTeX闪卡时按关键词拆分内容异常问题

开发目标
  • 从LaTeX格式的数学类文档中,自动提取定义(Definition)、定理(Theorem)、命题(Proposition)、引理(Lemma)、推论(Corollary)、注记(Remark)、示例(Example/Examples)类结构化条目
  • 为每个提取到的条目生成对应闪卡
  • 将所有闪卡分别导出为独立的文本文件
当前实现情况
  • 已搭建基础流程:首先读取目标LaTeX文件的全量内容,再按照预设的条目关键词拆分内容
  • 现存问题:代码实际运行后拆分结果不符合预期,暂未定位到错误根源

测试所用LaTeX文件本地读取路径:C:/Users/MueidSamad/Automators/Desktop/AMD.txt

现有完整代码
from openpyxl import Workbook, load_workbook
import io

def read_file(filepath):
    with io.open(filepath, 'r') as tmp:
        inhalt = tmp.read()
    return inhalt


# 入参说明:content为待拆分的文档全文字符串,k为指定提取的条目类型对应的关键词索引
def seperated_by_Keyword(content,k):
    Keyword = ['Definition.','Theorem.','Proposition.', 'Lemma.', 'Corollary.','Remark.','Examples.', 'Example.']
    flashcards=[Keyword[k]+Karten for Karten in content.split(Keyword[k]) ]

    seperated_by_keyword=[]
    for i in range(len(Keyword)):
        if i==k:
            continue
        for x in flashcards:
            d=x.split(Keyword[i])
            flashcards.extend(d)
            flashcards.remove(x)

    # 拆分证明部分:将证明内容和所属定理/命题等条目拆分,后续单独存为文件
    for x in flashcards:
        # 匹配「条目内容 + Proof. + 证明内容」格式的拼接内容,跳过本身就是证明开头的片段
        if 'Proof.' in x and x.startswith('Proof.')==False:
            tmp=x.split('Proof.')
            flashcards.append(tmp[0])
            tmp[1]='Proof.'+tmp[1]
            flashcards.append(tmp[1])
            flashcards.remove(x)

    # 为所有闪卡内容前后添加LaTeX识别标记
    for j in range(len(flashcards)):
        flashcards[j] = '[latex]' + flashcards[j] + '[latex]'

    # 仅保留当前指定提取类型的闪卡
    for x in flashcards:
        if x.startswith('[latex]'+Keyword[k]):
            seperated_by_keyword.append(x)

    return seperated_by_keyword


def createNewFiles(Karteikarten):
    iterations_Array=[]
    for i in range(len(Karteikarten)):
        iterations_Array.append(i)
    for i in iterations_Array:
        if  Karteikarten[i].startswith('[latex]Proof.'):
            # 证明文件命名规则:所属条目序号 + Beweis.txt
            with open('{}Beweis.txt'.format(i-1), 'w') as f:
                f.write(Karteikarten[i])
        else:
            # 普通条目文件命名规则:条目序号.txt
            with open('{}.txt'.format(i), 'w') as f:
                f.write(Karteikarten[i])

if __name__ == '__main__':
    inhalt=read_file('C:/Users/MueidSamad/Automators/Desktop/AMD.txt')
    # 传入k=0时对应提取Definition类型的条目
    flashcards=seperated_by_Keyword(inhalt,0)
    createNewFiles(flashcards)

内容的提问来源于stack exchange,提问作者Mojed Samad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 13:33:25