修改database_tools中的备课稿生成功能, 适配新的课时信息数据库

This commit is contained in:
weiye.wang 2023-07-24 20:51:11 +08:00
parent a360bd8304
commit 3412024432
2 changed files with 55 additions and 27 deletions

View File

@ -872,45 +872,73 @@ def GenerateLessonPreparationDraft(notetitle, outputdir, adict, prodict, objdict
print("编译失败") print("编译失败")
return latex_data # 返回有错误的latex源代码 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" output = "\\tableofcontents\n\\newpage\n\n"
outputfilepath = os.path.join(outputdir,notetitle+".tex") outputfilepath = os.path.join(outputdir,notetitle+".tex")
for lid in adict: for key in adict:
if all(elem in lessonsdict for elem in lid.split("&")): lessonid = key
lessons = lid.split("&") lessonname = adict[key]["name"]
lessonname = "\&".join([lessonsdict[lesson]["name"] for lesson in lessons]) objlist = adict[key]["objects"]
output += "\\section{%s \ %s}\n\n"%(lid.replace("&","\&"),lessonname) 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 += "\\subsection{课时目标}\n\n"
output += "\\begin{enumerate}\n\n" output += "\\begin{enumerate}\n\n"
for objid in objdict: for objid in objlist:
if objid[:5] in lid:
output += "\\item %s \\ %s \n\n"%(objid,objdict[objid]["content"]) output += "\\item %s \\ %s \n\n"%(objid,objdict[objid]["content"])
output += "\\end{enumerate}\n\n" output += "\\end{enumerate}\n\n" #生成学习目标
if not bnlist == []:
output += "\\subsection{双基梳理}\n\n" output += "\\subsection{双基梳理}\n\n"
basic_body = "" basic_body = ""
for bnid in basicknowledgedict: for bnid in bnlist:
if basicknowledgedict[bnid]["lesson"] in lid:
basic_body += "\\item %s\n\n"%basicknowledgedict[bnid]["content"] 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 暂无") output += "\\begin{enumerate}\n\n %s\n\n\\end{enumerate}\n\n"%basic_body #生成基础知识梳理
problems_list = adict[lid]
output += "\\subsection{知识体验}\n\n" output += "\\subsection{知识体验}\n\n"
output += "\\subsubsection{必讲例题}\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 += "\\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 += "\\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 += "\\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" output += "\\newpage\n\n"
else: else:
output += "\\section{%s}\n\n"%lid output += "\\section{%s \ %s}\n\n"%(lessonid,lessonname)
problems_list = adict[lid] output += "\\subsection{复习题}\n\n"
output += GenerateStudentBodyString([".".join(problems_list)],[],prodict,consecutivenumbering=False,answered = False) output += GenerateStudentBodyString(homeworklist,[],prodict,consecutivenumbering=False,answered = False)
output += "\\newpage\n\n" 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") latex_raw = ReadTextFile("模板文件/讲义模板.txt")

View File

@ -1,12 +1,12 @@
notetitle = "高一上学期教案集合与逻辑" # 文件名, 也是文件标题 notetitle = "高一上学期教案截至20230724" # 文件名, 也是文件标题
outputdir = "临时文件" # 输出文件夹, 不建议修改 outputdir = "临时文件" # 输出文件夹, 不建议修改
from database_tools import * from database_tools import *
preparationdict = load_dict("文本文件/备课稿题号.json") preparationdict = load_dict("../备课组/26届/lessons.json")
pro_dict = load_dict("../题库0.3/problems.json") pro_dict = load_dict("../题库0.3/problems.json")
obj_dict = load_dict("../题库0.3/LessonObj.json") obj_dict = load_dict("../题库0.3/LessonObj.json")
lessons_dict = load_dict("../题库0.3/LessonsCut.json") lessons_dict = load_dict("../题库0.3/LessonsCut.json")
basicknowledge_dict = load_dict("../题库0.3/BasicKnowledge.json") basicknowledge_dict = load_dict("../题库0.3/BasicKnowledge.json")
GenerateLessonPreparation(notetitle, outputdir, preparationdict, pro_dict, obj_dict, lessons_dict, basicknowledge_dict) GenerateLessonPreparation(notetitle, outputdir, preparationdict, pro_dict, obj_dict, basicknowledge_dict)