系列讲义生成 功能 完成
This commit is contained in:
parent
f4834f462d
commit
677b35bd3e
|
|
@ -1080,18 +1080,14 @@ def GenerateSectionBodyStringfromMariaDB(cursor,problems,sectiontitles,misc,cons
|
||||||
idlist = problems[i].split(",")
|
idlist = problems[i].split(",")
|
||||||
sectionstring = f"\\section{{{sectiontitles[i]}}}\n\\begin{{enumerate}}\n\n"
|
sectionstring = f"\\section{{{sectiontitles[i]}}}\n\\begin{{enumerate}}\n\n"
|
||||||
for objid in idlist:
|
for objid in idlist:
|
||||||
sectionstring += f"\\item {objid} \\ {(obj_dict[objid]['content'] if objid in obj_dict else '目标编号有误')}\n\n"
|
sectionstring += generateLaTeXobjsfromMariaDB(cursor,objid)
|
||||||
sectionstring += "\\end{enumerate}\n\n"
|
sectionstring += "\\end{enumerate}\n\n"
|
||||||
bodystring += sectionstring
|
bodystring += sectionstring
|
||||||
if problems[i][0] == "B":
|
if problems[i][0] == "B":
|
||||||
idlist = problems[i].split(",")
|
idlist = problems[i].split(",")
|
||||||
sectionstring = f"\\section{{{sectiontitles[i]}}}\n\\begin{{enumerate}}\n\n"
|
sectionstring = f"\\section{{{sectiontitles[i]}}}\n\\begin{{enumerate}}\n\n"
|
||||||
for bkid in idlist:
|
for bnid in idlist:
|
||||||
if bkid in bk_dict:
|
sectionstring += generateLaTeXbnsfromMariaDB(cursor,bnid)
|
||||||
bk = bk_dict[bkid]["content"]
|
|
||||||
else:
|
|
||||||
bk = bkid + " \\ 基础知识编号有误"
|
|
||||||
sectionstring += f"\\item {(bk)}\n\n"
|
|
||||||
sectionstring += "\\end{enumerate}\n\n"
|
sectionstring += "\\end{enumerate}\n\n"
|
||||||
bodystring += sectionstring
|
bodystring += sectionstring
|
||||||
return bodystring #返回主题内容字符串
|
return bodystring #返回主题内容字符串
|
||||||
|
|
@ -1188,11 +1184,14 @@ def GenerateUsageTexCode(usage_list_raw,misc): #根据topandbottomusagestuple的
|
||||||
grade = misc["字段显示设置"]["届别"]
|
grade = misc["字段显示设置"]["届别"]
|
||||||
topandbottomusagestuple = misc["字段显示设置"]["使用记录"]
|
topandbottomusagestuple = misc["字段显示设置"]["使用记录"]
|
||||||
usage_list = []
|
usage_list = []
|
||||||
for u in usage_list_raw:
|
if len(grade) == 0:
|
||||||
for g in grade:
|
usage_list = usage_list_raw.copy()
|
||||||
if re.findall(g,u[1]) != []:
|
else:
|
||||||
usage_list.append(u)
|
for u in usage_list_raw:
|
||||||
break
|
for g in grade:
|
||||||
|
if re.findall(g,u[1]) != []:
|
||||||
|
usage_list.append(u)
|
||||||
|
break
|
||||||
usages = ChooseUsage(usage_list,topandbottomusagestuple)
|
usages = ChooseUsage(usage_list,topandbottomusagestuple)
|
||||||
usages_str = ["\t".join((u[0],u[1],("\t".join(u[2])))) for u in usages]
|
usages_str = ["\t".join((u[0],u[1],("\t".join(u[2])))) for u in usages]
|
||||||
usagecode = re.sub("\\t([\d]\.[\d]{0,10})",GenerateValueColorCode,"\n\n".join(usages_str))
|
usagecode = re.sub("\\t([\d]\.[\d]{0,10})",GenerateValueColorCode,"\n\n".join(usages_str))
|
||||||
|
|
@ -1228,13 +1227,14 @@ def generateLaTeXBodyContentfromMariaDB(cursor,id,misc): #根据id,读取的json
|
||||||
#以下生成obj_list
|
#以下生成obj_list
|
||||||
sql = "SELECT obj_ID FROM objcorresp WHERE ID = %s;"
|
sql = "SELECT obj_ID FROM objcorresp WHERE ID = %s;"
|
||||||
cursor.execute(sql,val)
|
cursor.execute(sql,val)
|
||||||
|
ret_list = cursor.fetchall()
|
||||||
obj_list = []
|
obj_list = []
|
||||||
for id_raw in cursor.fetchall():
|
for id_raw in ret_list:
|
||||||
obj_id = id_raw[0]
|
obj_id = id_raw[0]
|
||||||
sql = "SELECT obj_content FROM lessonobj WHERE objid = %s;"
|
sql = "SELECT obj_content FROM lessonobj WHERE objid = %s;"
|
||||||
objval = (obj_id,)
|
objval = (obj_id,)
|
||||||
cursor.execute(sql,objval)
|
cursor.execute(sql,objval)
|
||||||
obj_list.append((obj_id,cursor.fetchall()[0][0]))
|
obj_list.append(f"{obj_id}\t{cursor.fetchall()[0][0]}")
|
||||||
sql = "SELECT tagname FROM tagcorresp WHERE ID = %s;"
|
sql = "SELECT tagname FROM tagcorresp WHERE ID = %s;"
|
||||||
cursor.execute(sql,val)
|
cursor.execute(sql,val)
|
||||||
tag_list = [t[0] for t in cursor.fetchall()]
|
tag_list = [t[0] for t in cursor.fetchall()]
|
||||||
|
|
@ -1243,7 +1243,8 @@ def generateLaTeXBodyContentfromMariaDB(cursor,id,misc): #根据id,读取的json
|
||||||
remark_list = sorted([f"{t[0]}\t{t[1]}" for t in cursor.fetchall()])
|
remark_list = sorted([f"{t[0]}\t{t[1]}" for t in cursor.fetchall()])
|
||||||
sql = "SELECT date,classname,diff FROM usages WHERE ID = %s;"
|
sql = "SELECT date,classname,diff FROM usages WHERE ID = %s;"
|
||||||
cursor.execute(sql,val)
|
cursor.execute(sql,val)
|
||||||
usages_raw = sorted([(t[0],t[1],json.loads(t[2])) for t in cursor.fetchall()])
|
usages_fetched = [(u[0] if not u[0] is None else "",u[1],json.loads(u[2])) for u in cursor.fetchall()]
|
||||||
|
usages_raw = sorted(usages_fetched)
|
||||||
if not "教师版" in misc or misc["教师版"] == False:
|
if not "教师版" in misc or misc["教师版"] == False:
|
||||||
output = f"\n\\item {{\\tiny ({id})}} {content}"
|
output = f"\n\\item {{\\tiny ({id})}} {content}"
|
||||||
if "字段显示设置" in misc and "答案" in misc["字段显示设置"] and misc["字段显示设置"]["答案"] == True:
|
if "字段显示设置" in misc and "答案" in misc["字段显示设置"] and misc["字段显示设置"]["答案"] == True:
|
||||||
|
|
@ -1258,9 +1259,10 @@ def generateLaTeXBodyContentfromMariaDB(cursor,id,misc): #根据id,读取的json
|
||||||
remark = r"\\".join(remark_list) if len(remark_list) > 0 else "暂无备注"
|
remark = r"\\".join(remark_list) if len(remark_list) > 0 else "暂无备注"
|
||||||
output += f"\n\n备注: \\textcolor[rgb]{{0,0.5,0.2}}{{{remark}}}\n\n"
|
output += f"\n\n备注: \\textcolor[rgb]{{0,0.5,0.2}}{{{remark}}}\n\n"
|
||||||
if "课时目标" in misc["字段显示设置"] and misc["字段显示设置"]["课时目标"] == True:
|
if "课时目标" in misc["字段显示设置"] and misc["字段显示设置"]["课时目标"] == True:
|
||||||
obj_string = '\n\n'.join(obj_list)
|
if len(obj_list) == 0:
|
||||||
if obj_string.strip() == "":
|
|
||||||
obj_string = "暂无目标"
|
obj_string = "暂无目标"
|
||||||
|
else:
|
||||||
|
obj_string = '\n\n'.join(obj_list)
|
||||||
objs = f"\n\n目标:\n\n{obj_string}\n\n"
|
objs = f"\n\n目标:\n\n{obj_string}\n\n"
|
||||||
output += objs
|
output += objs
|
||||||
if "题目标签" in misc["字段显示设置"] and misc["字段显示设置"]["题目标签"] == True:
|
if "题目标签" in misc["字段显示设置"] and misc["字段显示设置"]["题目标签"] == True:
|
||||||
|
|
@ -1285,46 +1287,29 @@ def generateLaTeXBodyContentfromMariaDB(cursor,id,misc): #根据id,读取的json
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def generateLaTeXobjsfromMariaDB(cursor,objid):
|
||||||
|
objid = str(objid).upper().strip()
|
||||||
|
if objid == "KNONE":
|
||||||
|
return ""
|
||||||
|
else:
|
||||||
|
sql = "SELECT obj_content FROM lessonobj WHERE objid = %s;"
|
||||||
|
val = (objid,)
|
||||||
|
cursor.execute(sql,val)
|
||||||
|
obj_content = cursor.fetchall()[0][0]
|
||||||
|
output = f"\\item {objid} {obj_content}\n\n"
|
||||||
|
return output
|
||||||
|
|
||||||
return content,ans,solution,origin,space,obj_list,tag_list,remark_list,usages_raw
|
def generateLaTeXbnsfromMariaDB(cursor,bnid):
|
||||||
|
bnid = str(bnid).upper().strip()
|
||||||
|
sql = "SELECT bn_content FROM basic_knowledges WHERE bn_id = %s;"
|
||||||
# if not "教师版" in misc or misc["教师版"] == False:
|
val = (bnid,)
|
||||||
# output = f"\n\\item {{\\tiny ({id})}} {adict[id]['content']}"
|
cursor.execute(sql,val)
|
||||||
# if "字段显示设置" in misc and "答案" in misc["字段显示设置"] and misc["字段显示设置"]["答案"] == True:
|
try:
|
||||||
# ans = adict[id]["ans"] if len(adict[id]["ans"]) > 0 else "暂无答案"
|
bn_content = cursor.fetchall()[0][0]
|
||||||
# output += f"\n\n答案: \\textcolor{{{('red' if ans != '暂无答案' else 'blue')}}}{{{ans}}}\n\n"
|
except:
|
||||||
# if "字段显示设置" in misc and "题后空间" in misc["字段显示设置"] and misc["字段显示设置"]["题后空间"] == True:
|
bn_content = "基础知识目标编号有误"
|
||||||
# space = f"\n\n\\vspace*{{{adict[id]['space']}}}\n\n" if len(adict[id]["space"]) > 0 else ""
|
output = f"\\item {bn_content}\n\n"
|
||||||
# output += space
|
return output
|
||||||
# else:
|
|
||||||
# output = f"\n\\item ({id}) {adict[id]['content']}"
|
|
||||||
# if "备注" in misc["字段显示设置"] and misc["字段显示设置"]["备注"] == True:
|
|
||||||
# remark = adict[id]["remark"] if len(adict[id]["remark"]) > 0 else "暂无备注"
|
|
||||||
# output += f"\n\n备注: \\textcolor[rgb]{{0,0.5,0.2}}{{{remark}}}\n\n"
|
|
||||||
# if "课时目标" in misc["字段显示设置"] and misc["字段显示设置"]["课时目标"] == True:
|
|
||||||
# objs = f"\n\n目标:\n\n{GenerateObjTexCode(id,adict,objdict)}\n\n"
|
|
||||||
# output += objs
|
|
||||||
# if "题目标签" in misc["字段显示设置"] and misc["字段显示设置"]["题目标签"] == True:
|
|
||||||
# tags_raw = adict[id]['tags']
|
|
||||||
# if len(tags_raw) == 0:
|
|
||||||
# tags = "暂无标签"
|
|
||||||
# else:
|
|
||||||
# tags = '; '.join(adict[id]['tags'])
|
|
||||||
# output += f"\n\n标签: \\textcolor[rgb]{{0.5,0.6,0.8}}{{{tags}}}\n\n"
|
|
||||||
# if "答案" in misc["字段显示设置"] and misc["字段显示设置"]["答案"] == True:
|
|
||||||
# ans = adict[id]["ans"] if len(adict[id]["ans"]) > 0 else "暂无答案"
|
|
||||||
# output += f"\n\n答案: \\textcolor{{{('red' if ans != '暂无答案' else 'blue')}}}{{{ans}}}\n\n"
|
|
||||||
# if "解答与提示" in misc["字段显示设置"] and misc["字段显示设置"]["解答与提示"] == True:
|
|
||||||
# solution = adict[id]["solution"] if len(adict[id]["solution"]) > 0 else "暂无解答或提示"
|
|
||||||
# output += f"\n\n解答或提示: \\textcolor{{magenta}}{{{solution}}}\n\n"
|
|
||||||
# if "使用记录" in misc["字段显示设置"] and type(misc["字段显示设置"]["使用记录"]) in (list,tuple) and not -2 in misc["字段显示设置"]["使用记录"]:
|
|
||||||
# usages = f"\n\n使用记录:\n\n{GenerateUsageTexCode(id,adict,misc['字段显示设置']['使用记录'])}\n\n"
|
|
||||||
# output += usages
|
|
||||||
# if "来源" in misc["字段显示设置"] and misc["字段显示设置"]["来源"] == True:
|
|
||||||
# origin = generate_origin(adict[id]["origin"]) if len(adict[id]["origin"]) > 0 else "未记录来源"
|
|
||||||
# output += f"\n\n来源: {origin}\n\n"
|
|
||||||
# return output
|
|
||||||
|
|
||||||
|
|
||||||
def GenerateTeacherBodyString(problems,sectiontitles,prodict,objdict,consecutivenumbering = True,topandbottomusagestuple = (3,3),sectionname = "section", showobjs = True, showtags = True, showans = True, showsolution = True, showusages = True, showorigin = True, showremark = True, colored = False): #生成教师版的.tex文件的主体内容, 各项是否显示为可选
|
def GenerateTeacherBodyString(problems,sectiontitles,prodict,objdict,consecutivenumbering = True,topandbottomusagestuple = (3,3),sectionname = "section", showobjs = True, showtags = True, showans = True, showsolution = True, showusages = True, showorigin = True, showremark = True, colored = False): #生成教师版的.tex文件的主体内容, 各项是否显示为可选
|
||||||
|
|
|
||||||
|
|
@ -124,10 +124,12 @@ class MyWindow(QWidget,Ui_Form):
|
||||||
consecutivenumbering = notes_dict["structures"][papertype]["consecutivenumbering"]
|
consecutivenumbering = notes_dict["structures"][papertype]["consecutivenumbering"]
|
||||||
texdata = GenerateSingleLessonNotefromMariaDB(cursor = mycursor, id = lessonid,notesdict=notes_dict,templatepath="./模板文件/讲义模板.txt",outputfilepath = os.path.join(self.outputpath,filename),misc=configjson,consecutivenumbering = consecutivenumbering)
|
texdata = GenerateSingleLessonNotefromMariaDB(cursor = mycursor, id = lessonid,notesdict=notes_dict,templatepath="./模板文件/讲义模板.txt",outputfilepath = os.path.join(self.outputpath,filename),misc=configjson,consecutivenumbering = consecutivenumbering)
|
||||||
papernames.append(notes_dict["notes"][lessonid]["id"]+" \\ "+notes_dict["notes"][lessonid]["name"])
|
papernames.append(notes_dict["notes"][lessonid]["id"]+" \\ "+notes_dict["notes"][lessonid]["name"])
|
||||||
|
print(f"已生成 {papernames[-1]} 文件")
|
||||||
multitexdata.append(re.findall(r"\\begin{center}\n{\\bf\\large \\papername}\n\\end{center}([\s\S]*\\end\{enumerate\})",texdata)[0])
|
multitexdata.append(re.findall(r"\\begin{center}\n{\\bf\\large \\papername}\n\\end{center}([\s\S]*\\end\{enumerate\})",texdata)[0])
|
||||||
# print(lessonid)
|
# print(lessonid)
|
||||||
# print(configjson)
|
# print(configjson)
|
||||||
# print("\n".join(patterns))
|
# print("\n".join(patterns))
|
||||||
|
mydb.close()
|
||||||
merged = ""
|
merged = ""
|
||||||
for i in range(len(papernames)):
|
for i in range(len(papernames)):
|
||||||
merged += "\n\n\\chapter{"+papernames[i]+"}\n\n\n"
|
merged += "\n\n\\chapter{"+papernames[i]+"}\n\n\n"
|
||||||
|
|
|
||||||
Reference in New Issue