From 341202443224e091373156e328920062dbe18fd8 Mon Sep 17 00:00:00 2001 From: "weiye.wang" Date: Mon, 24 Jul 2023 20:51:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9database=5Ftools=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E5=A4=87=E8=AF=BE=E7=A8=BF=E7=94=9F=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E8=83=BD,=20=E9=80=82=E9=85=8D=E6=96=B0=E7=9A=84=E8=AF=BE?= =?UTF-8?q?=E6=97=B6=E4=BF=A1=E6=81=AF=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 工具v2/database_tools.py | 76 +++++++++++++++++++++++++++------------- 工具v2/新课备课稿生成.py | 6 ++-- 2 files changed, 55 insertions(+), 27 deletions(-) diff --git a/工具v2/database_tools.py b/工具v2/database_tools.py index 74627d80..a8d8cd74 100644 --- a/工具v2/database_tools.py +++ b/工具v2/database_tools.py @@ -872,45 +872,73 @@ def GenerateLessonPreparationDraft(notetitle, outputdir, adict, prodict, objdict print("编译失败") return latex_data # 返回有错误的latex源代码 -def GenerateLessonPreparation(notetitle, outputdir, adict, prodict, objdict, lessonsdict, basicknowledgedict): #根据adict中课时与例题, 课堂练习, 作业题的题号对应生成每一课时的教案 +def GenerateLessonPreparation(notetitle, outputdir, adict, prodict, objdict, basicknowledgedict): #根据adict生成每一课时的教案 output = "\\tableofcontents\n\\newpage\n\n" outputfilepath = os.path.join(outputdir,notetitle+".tex") - for lid in adict: - if all(elem in lessonsdict for elem in lid.split("&")): - lessons = lid.split("&") - lessonname = "\&".join([lessonsdict[lesson]["name"] for lesson in lessons]) - output += "\\section{%s \ %s}\n\n"%(lid.replace("&","\&"),lessonname) - output += "\\subsection{课时目标}\n\n" - output += "\\begin{enumerate}\n\n" - for objid in objdict: - if objid[:5] in lid: + for key in adict: + lessonid = key + lessonname = adict[key]["name"] + objlist = adict[key]["objects"] + bnlist = adict[key]["basicknowledges"] + eblist = adict[key]["examples_basic"] + ealist = adict[key]["examples_adv"] + worklist = adict[key]["work_inclass"] + homeworklist = adict[key]["homework"] + remarks = adict[key]["remarks"] + if not adict[key]["objects"] == []: + output += "\\section{%s \ %s}\n\n"%(lessonid,lessonname) + + if not objlist == []: + output += "\\subsection{课时目标}\n\n" + output += "\\begin{enumerate}\n\n" + for objid in objlist: output += "\\item %s \\ %s \n\n"%(objid,objdict[objid]["content"]) - output += "\\end{enumerate}\n\n" - output += "\\subsection{双基梳理}\n\n" - basic_body = "" - for bnid in basicknowledgedict: - if basicknowledgedict[bnid]["lesson"] in lid: + output += "\\end{enumerate}\n\n" #生成学习目标 + if not bnlist == []: + output += "\\subsection{双基梳理}\n\n" + basic_body = "" + for bnid in bnlist: basic_body += "\\item %s\n\n"%basicknowledgedict[bnid]["content"] - output += "\\begin{enumerate}\n\n %s\n\n\\end{enumerate}\n\n"%(basic_body if basic_body != "" else "\\item 暂无") - problems_list = adict[lid] + output += "\\begin{enumerate}\n\n %s\n\n\\end{enumerate}\n\n"%basic_body #生成基础知识梳理 output += "\\subsection{知识体验}\n\n" output += "\\subsubsection{必讲例题}\n\n" - output += GenerateStudentBodyString([problems_list[0]],[],prodict,consecutivenumbering=False,answered=False) + output += GenerateStudentBodyString(eblist,[],prodict,consecutivenumbering=False,answered=False) output += "\\subsubsection{选讲例题}\n\n" - output += GenerateStudentBodyString([problems_list[1]],[],prodict,consecutivenumbering=False,answered=False) + output += GenerateStudentBodyString(ealist,[],prodict,consecutivenumbering=False,answered=False) output += "\\subsection{巩固新知}\n\n" - output += GenerateStudentBodyString([problems_list[2]],[],prodict,consecutivenumbering=False,answered=False) + output += GenerateStudentBodyString(worklist,[],prodict,consecutivenumbering=False,answered=False) output += "\\newpage\n\n\\subsection{课后作业}\n\n" - output += GenerateStudentBodyString([problems_list[3]],[],prodict,consecutivenumbering=False,answered=False) + output += GenerateStudentBodyString(homeworklist,[],prodict,consecutivenumbering=False,answered=False) output += "\\newpage\n\n" else: - output += "\\section{%s}\n\n"%lid - problems_list = adict[lid] - output += GenerateStudentBodyString([".".join(problems_list)],[],prodict,consecutivenumbering=False,answered = False) + output += "\\section{%s \ %s}\n\n"%(lessonid,lessonname) + output += "\\subsection{复习题}\n\n" + output += GenerateStudentBodyString(homeworklist,[],prodict,consecutivenumbering=False,answered = False) output += "\\newpage\n\n" + if not remarks == "": + output += "\\subsection{备注}\n\n" + output += remarks + "\n\n" + + + latex_raw = ReadTextFile("模板文件/讲义模板.txt") + latex_raw = latex_raw.replace(r"学号\blank{50} \ 姓名\blank{80}","上海市控江中学") #替换掉模板中的姓名学号 + + if sys.platform != "win32": #非win系统用默认字体 + latex_raw = re.sub(r"fontset[\s]*=[\s]*none","fontset = fandol",latex_raw) + latex_raw = re.sub(r"\\setCJKmainfont",r"% \\setCJKmainfont",latex_raw) + + latex_data = StringSubstitute(r"<<[\s\S]*?待替换[\s\S]*?>>",latex_raw,(notetitle,output)) #替换标题和bodystring + SaveTextFile(latex_data,outputfilepath) #保存.tex文件 + + if XeLaTeXCompile(outputdir,notetitle+".tex"): + print("编译成功") + return 0 # 返回0 + else: + print("编译失败") + return latex_data # 返回有错误的latex源代码 latex_raw = ReadTextFile("模板文件/讲义模板.txt") diff --git a/工具v2/新课备课稿生成.py b/工具v2/新课备课稿生成.py index b736a419..5051f380 100644 --- a/工具v2/新课备课稿生成.py +++ b/工具v2/新课备课稿生成.py @@ -1,12 +1,12 @@ -notetitle = "高一上学期教案集合与逻辑" # 文件名, 也是文件标题 +notetitle = "高一上学期教案截至20230724" # 文件名, 也是文件标题 outputdir = "临时文件" # 输出文件夹, 不建议修改 from database_tools import * -preparationdict = load_dict("文本文件/备课稿题号.json") +preparationdict = load_dict("../备课组/26届/lessons.json") pro_dict = load_dict("../题库0.3/problems.json") obj_dict = load_dict("../题库0.3/LessonObj.json") lessons_dict = load_dict("../题库0.3/LessonsCut.json") basicknowledge_dict = load_dict("../题库0.3/BasicKnowledge.json") -GenerateLessonPreparation(notetitle, outputdir, preparationdict, pro_dict, obj_dict, lessons_dict, basicknowledge_dict) \ No newline at end of file +GenerateLessonPreparation(notetitle, outputdir, preparationdict, pro_dict, obj_dict, basicknowledge_dict) \ No newline at end of file