test.py 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. #!/usr/bin/env/python
  2. # -*- coding:utf-8 -*-
  3. import datetime
  4. import pickle
  5. import random
  6. # import re
  7. import time
  8. import requests, os
  9. import shutil
  10. # html = """
  11. # <html><head><meta charset="utf-8" /></head><body>
  12. # <p>四校联考2017—2018学年度第一学期期中考试</p>
  13. # <p>高一物理试卷</p>
  14. # <p>考试时间: 60分钟 总分: 100分 </p>
  15. # <p>一.单项选择题(本大题共20小题,每小题3分,共60分)</p>
  16. # <p>请阅读下列材料,回答1 – 3 小题</p>
  17. # <p>在冬季的时候,由于路面结冰,极易造成交通事故。一辆质量为3t的汽车,以40km/h的速度沿平直公路行驶,已知橡胶轮胎与普通路面的动摩擦因数为μ<sub>1 </sub>= 0.6,与结冰地面的动摩擦因数为μ<sub>2 </sub>= 0.2(g = 10m/s<sup>2</sup>)</p>
  18. # <p>1.汽车的重力为</p>
  19. # <p>A.3×10<sup>2</sup>N B.3×10<sup>3</sup>N C.3×10<sup>4</sup>N D.3×10<sup>5</sup>N</p>
  20. # <p>2.在汽车正常行驶时,以汽车为参考系</p>
  21. # <p>A.路边的树是静止的</p>
  22. # <p>B.路边的树向后运动</p>
  23. # <p>C.汽车里的乘客是运动的</p>
  24. # <p>D.前方的汽车一定是运动的</p>
  25. # <p>3.甲、乙两辆相同的汽车分别在普通路面和结冰地面上,刹车滑行做匀减速直线运动。下图中x表示位移、v表示速度,能正确描述该过程的图像是</p>
  26. # <p><img src="files/image1.png" width="378pt" height="85.95pt" data-latex="$$" /></p>
  27. # <p> </p>
  28. # <p> </p>
  29. # <p> </p>
  30. # <p>4.在考察下列运动员的比赛成绩时,可视为质点的是 </p>
  31. # <p> A.马拉松 B.跳水 C.击剑 D.体操</p>
  32. # <p>5.在运动会上,甲、乙两位同学进行百米赛跑,假如起跑加速的时间忽略,把他<img src="files/image2.png" width="1.6pt" height="1.05pt" />们的运动近似当作匀速直线运动来处理.他们同时从起跑线起跑,经过一段时间后他们的位置如图所示,分别作出在这段时间内两人运动的位移x、速度v与时间t的关系图象如下,其中能正确反映他们运动的是</p>
  33. # <p> </p>
  34. # <p> </p>
  35. # <p> </p>
  36. # <p>6.下列物理量属于标量的是</p>
  37. # <p>A.速度   B.位移 C.加速度 D.质量</p>
  38. # """
  39. # path = r"F:\zwj\parse_2021\res_folder\13.html"
  40. # html = open(path,"r",encoding="utf-8").read()
  41. #
  42. # res = requests.post(url="http://192.168.1.140:11066/word_structure", json={"sci_html_data": html})
  43. # print(res.text)
  44. # # 发送
  45. # requests.get(url,params=data)
  46. # requests.post(url,files=files)
  47. # requests.post(url,data=data)
  48. # 接收get
  49. # request.args.get("user", "") 获取get请求参数
  50. # request.values.get("key") 获取所有参数(POST\GET通用)
  51. # 接收post
  52. # request.form.get() 获取表单数据
  53. # request.json.get()
  54. # request.files.get()
  55. # 如果请求体的数据不是表单格式的(如json格式,xml格式),可以通过request.data获取
  56. # print(request.data) # {"name": "zhangsan", "age": 18}
  57. # args是用来提取url中?后拼接的参数(查询字符串QueryString)
  58. # city = request.args.get("city") # 127.0.0.1:5000/index?city=shenzhen (类似字典的对象)
  59. # request的属性为data、form、args、cookies、headers、method、url、files
  60. import json
  61. # import random
  62. # ft_modify = str(random.random())
  63. # print(ft_modify)
  64. #
  65. #
  66. # resp = requests.post(url="http://192.168.1.145:10811/latex2img", data={"latex": "{ a > b {甲} }", "subfolder": "physical_formulas_imgs"}).text
  67. # print(resp)
  68. # bs = BeautifulSoup(html, 'lxml')
  69. # print(bs.prettify())
  70. # tags = bs.find(name='script')
  71. # print(bs.script.string)
  72. # log_dir = r"C:\Users\Python\Desktop\test"+ r"\5fc0a554e3e93cca5b9e2193"
  73. # if not os.path.exists(log_dir):
  74. # os.mkdir(log_dir)
  75. # aa = ".wmf"
  76. # print(not aa.endswith(".wmf"))
  77. # print("AKIDC9pETRbZfWBbmhoglkT4PUJGzRjmj3Ia"=="AKIDC9pETRbZfWBbmhoglkT4PUJGzRjmj3Ia")
  78. # print("C6jlX4LKfleGdmfQvGNgj74lESRpBIEJ"=="C6jlX4LKfleGdmfQvGNgj74lESRpBIEJ")
  79. # from utils.ruku_opera import ruku_upload_img
  80. #
  81. # data_dir = "F:/zwj/Text_Structure/img_folder/struct_items.pickle"
  82. # html_dir = "F:/zwj/Text_Structure/img_folder/html_data.pickle"
  83. # items_list = pickle.load(open(data_dir, 'rb'))
  84. # html_data = pickle.load(open(html_dir, 'rb'))
  85. # wordid = "5fc64a0a4994183dda7e74b9"
  86. # res = ruku_upload_img(items_list, html_data, str(wordid))
  87. # print(res)
  88. # qq=r'<img src="http://82.156.255.225:11086/ser_static\20/word/media/image1.png" width="145.5pt" height="117pt">'
  89. # new_imgs = re.findall(r'<img src=".*?/ser_static/.*?/(image[^"]*?)"', str(qq))
  90. # print(qq.replace("","66"))
  91. # print(datetime.datetime.strftime(datetime.datetime.now(),'%Y%m%d%H%M%S'))
  92. # print(time.time())
  93. # print(random.randint(100000,999999))
  94. # times = int(time.time() * 1000)
  95. # randnum = range(100000,999999)
  96. # print([str(int(time.time())) + str(i) for i in random.sample(randnum,5)])
  97. #
  98. # timeArray = time.localtime(int(time.time()))
  99. # otherStyleTime=time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
  100. # print("timeArray:",timeArray)
  101. # print("otherStyleTime:",otherStyleTime)
  102. # word解析
  103. # html = requests.post(url="http://82.156.255.225:11086/wordbin",
  104. # data={"word_id": "1111111"},
  105. # files={"mydata": open(r"C:\Users\Python\Desktop\test\1\358.docx", "rb")},
  106. # )
  107. # text_list = re.findall(r"<p>([\s\S]*?)</p>", html)
  108. # if len(text_list) - sum([1 for t in text_list if re.match(r"<img src.*?/>", t)]) <= 3:
  109. # pass
  110. # # imgs = re.findall(r'<img src="(.*?)"', html)
  111. # # res_dict = self.imgs2text(imgs) # no text,all imgs
  112. # # return res_dict
  113. # # text_list = [re.split(r"\n|<br />", t) for t in text_list]
  114. # # return sum(text_list, [])
  115. # else:
  116. # print(html.text)
  117. # with open(r"C:\Users\Python\Desktop\test\1\2_online.html", "w", encoding='utf-8') as file:
  118. # file.write(html.text)
  119. # for i in re.finditer("f","fjhfjkyhm"):
  120. # print(i.start(),i.end())
  121. # html2txt = "<p>14[答案] A [解析] 考查运动的合成与分解知识,橡皮参与两个分运动,即水平方向的匀速运动和竖直方向的匀速运动,故橡皮运动速度的大小"
  122. # a=re.sub(r"<p>\s*([1-9]|[1-4][0-9])\s*(【(解析?|答案?)】|(解析?|答案?)\s*[::]|\[(答案|解析)\])", r"<p>\1、\2", html2txt)
  123. #
  124. # print(a)
  125. from structure.danti_structure import single_parse
  126. s = '\\u2000'
  127. s = s.encode('ascii', 'ignore').decode('ascii')
  128. print(s)
  129. LATEX_SYMS = ['\\leftrightharpoondowndown', '\\barleftarrowrightarrowba', '\\shortrightarrowleftarrow', '\\leftarrowshortrightarrow', '\\rightarrowshortleftarrow', '\\concavediamondtickright', '\\smallblacktriangleright', '\\updownharpoonrightright', '\\downupharpoonsleftright', '\\updownharpoonsleftright', '\\invwhitelowerhalfcircle', '\\nvtwoheadrightarrowtail', '\\invwhiteupperhalfcircle', '\\smallblacktriangleleft', '\\updownharpoonleftright', '\\downtrianglerightblack', '\\leftrightarrowtriangle', '\\blackcircleulquadwhite', '\\nvtwoheadleftarrowtail', '\\leftrightharpoondownup', '\\leftrightharpoonupdown', '\\concavediamondtickleft', '\\partialmeetcontraction', '\\updownharpoonrightleft', '\\downharpoonsleftright', '\\leftrightharpoonsdown', '\\circlebottomhalfblack', '\\closedvarcupsmashprod', '\\underrightharpoondown', '\\barovernorthwestarrow', '\\twoheadrightarrowtail', '\\blackdiamonddownarrow', '\\rightleftharpoonsdown', '\\updownharpoonleftleft', '\\downtriangleleftblack', '\\rangledownzigzagarrow', '\\whiteinwhitetriangle', '\\leftrightarrowcircle', '\\CapitalDifferentialD', '\\curvearrowrightminus', '\\bigblacktriangledown', '\\dashrightharpoondown', '\\barrightarrowdiamond', '\\leftrightharpoondown', '\\underleftharpoondown', '\\rightarrowbackapprox', '\\twoheaduparrowcircle', '\\whitesquaretickright', '\\blackrighthalfcircle', '\\twoheadleftarrowtail', '\\blackcircledownarrow', '\\blackcircledrightdot', '\\leftrightharpoonupup', '\\NestedGreaterGreater', '\\downrightcurvedarrow', '\\circlerighthalfblack', '\\rightdowncurvedarrow', '\\nvtwoheadrightarrow', '\\leftrightharpoonsup', '\\downharpoonrightbar', '\\leftrightsquigarrow', '\\twoheadleftdbkarrow', '\\blockthreeqtrshaded', '\\mbfitsansvarepsilon', '\\dashleftharpoondown', '\\upharpoonsleftright', '\\longrightsquigarrow', '\\rightleftharpoonsup', '\\whitearrowupfrombar', '\\whitesquaretickleft', '\\diamondleftarrowbar', '\\blackcircledtwodots', '\\bardownharpoonright', '\\leftdowncurvedarrow', '\\circlelefthalfblack', '\\blackinwhitediamond', '\\rightharpoonsupdown', '\\leftarrowbackapprox', '\\rightharpoondownbar', '\\blacklefthalfcircle', '\\barrightharpoondown', '\\rightarrowbsimilar', '\\longleftrightarrow', '\\blackinwhitesquare', '\\circledwhitebullet', '\\smalltriangleright', '\\nvtwoheadleftarrow', '\\barleftharpoondown', '\\rightarrowtriangle', '\\leftrightharpoonup', '\\PrecedesSlantEqual', '\\longleftsquigarrow', '\\overleftrightarrow', '\\upharpoonrightdown', '\\curvearrowleftplus', '\\acwopencirclearrow', '\\DownRightTeeVector', '\\rightharpoonaccent', '\\measuredrightangle', '\\leftharpoondownbar', '\\leftharpoonsupdown', '\\RightDownVectorBar', '\\blacktriangleright', '\\circleonrightarrow', '\\parallelogramblack', '\\trianglerightblack', '\\RightDownTeeVector', '\\rightrightharpoons', '\\bsimilarrightarrow', '\\DownRightVectorBar', '\\rightpentagonblack', '\\rightupdownharpoon', '\\circletophalfblack', '\\ccwundercurvearrow', '\\SucceedsSlantEqual', '\\downharpoonleftbar', '\\bigblacktriangleup', '\\Longleftrightarrow', '\\inversewhitecircle', '\\errbarblackdiamond', '\\rightharpoonupdash', '\\bardownharpoonleft', '\\smalltriangledown', '\\varhexagonlrbonds', '\\circleonleftarrow', '\\leftharpoonaccent', '\\mbfitsansvartheta', '\\barupharpoonright', '\\measuredangleleft', '\\varcarriagereturn', '\\mbfitsansvarsigma', '\\rightarrowonoplus', '\\DownLeftTeeVector', '\\cwopencirclearrow', '\\mbfsansvarepsilon', '\\twoheadrightarrow', '\\rightleftharpoons', '\\bsimilarleftarrow', '\\triangleleftblack', '\\upharpoonrightbar', '\\LeftDownTeeVector', '\\vardoublebarwedge', '\\circleurquadblack', '\\blacktriangleleft', '\\kernelcontraction', '\\LeftDownVectorBar', '\\rightarrowsimilar', '\\blackpointerright', '\\rightarrowdiamond', '\\uprightcurvearrow', '\\leftarrowtriangle', '\\leftupdownharpoon', '\\cwundercurvearrow', '\\diamondrightblack', '\\mbfitsansvarkappa', '\\smalltriangleleft', '\\errbarblackcircle', '\\rightharpoonupbar', '\\barrightharpoonup', '\\errbarblacksquare', '\\blacktriangledown', '\\leftharpoonupdash', '\\DownLeftVectorBar', '\\whitepointerright', '\\upharpoonleftdown', '\\acwgapcirclearrow', '\\leftarrowbsimilar', '\\similarrightarrow', '\\leftrightharpoons', '\\mbfitsansomicron', '\\mbfitsansepsilon', '\\rightrightarrows', '\\nvrightarrowtail', '\\rightarrowsupset', '\\twoheadleftarrow', '\\leftarrowsimilar', '\\barleftharpoonup', '\\diamondleftarrow', '\\rightarrowapprox', '\\whitepointerleft', '\\mbfitsanspartial', '\\RightUpTeeVector', '\\downdownharpoons', '\\ointctrclockwise', '\\acwunderarcarrow', '\\RightTriangleBar', '\\blackpointerleft', '\\RightUpVectorBar', '\\leftrightharpoon', '\\squarerightblack', '\\upharpoonleftbar', '\\NotRightTriangle', '\\downarrowuparrow', '\\vartriangleright', '\\sphericalangleup', '\\leftharpoonupbar', '\\diamondleftblack', '\\leftleftharpoons', '\\rightharpoondown', '\\APLrightarrowbox', '\\rightcurvedarrow', '\\similarleftarrow', '\\varointclockwise', '\\upharpoonrightup', '\\twoheaddownarrow', '\\uparrowdownarrow', '\\ntrianglerighteq', '\\mbfitsansupsilon', '\\nvleftrightarrow', '\\leftarrowonoplus', '\\barupharpoonleft', '\\uprevequilibrium', '\\rightleftharpoon', '\\downharpoonright', '\\rightthreearrows', '\\circlearrowright', '\\cwgapcirclearrow', '\\rightsquigarrow', '\\mbfitsansvarphi', '\\ntrianglelefteq', '\\underrightarrow', '\\unicodeellipsis', '\\leftharpoondown', '\\ulblacktriangle', '\\diamondbotblack', '\\urblacktriangle', '\\leftthreearrows', '\\downzigzagarrow', '\\vrectangleblack', '\\LeftUpTeeVector', '\\lrblacktriangle', '\\APLleftarrowbox', '\\rightbarharpoon', '\\squarecrossfill', '\\blockhalfshaded', '\\vartriangleleft', '\\acwleftarcarrow', '\\mbfsansvartheta', '\\diamondtopblack', '\\measanglerdtose', '\\LeftUpVectorBar', '\\rightwhitearrow', '\\measangleultonw', '\\upharpoonleftup', '\\measangledltosw', '\\multimapdotboth', '\\blacktriangleup', '\\nvleftarrowtail', '\\varhexagonblack', '\\nleftrightarrow', '\\circlearrowleft', '\\rightthreetimes', '\\barrightharpoon', '\\LeftTriangleBar', '\\leftcurvedarrow', '\\measangleldtosw', '\\enleadertwodots', '\\cwrightarcarrow', '\\mbfitvarepsilon', '\\measanglerutone', '\\leftarrowapprox', '\\mbfitsanslambda', '\\mbfsansvarsigma', '\\measangleurtone', '\\twoheadmapsfrom', '\\squareleftblack', '\\APLdownarrowbox', '\\smalltriangleup', '\\hrectangleblack', '\\downharpoonleft', '\\measangledrtose', '\\APLnotbackslash', '\\enclosetriangle', '\\downarrowbarred', '\\circledownarrow', '\\llblacktriangle', '\\mbfitsansvarrho', '\\trianglerighteq', '\\mbfsansvarkappa', '\\rightleftarrows', '\\circledparallel', '\\bigtriangleleft', '\\leftrightarrows', '\\measanglelutonw', '\\leftarrowsubset', '\\equalrightarrow', '\\NotGreaterTilde', '\\bigtriangledown', '\\widebridgeabove', '\\circledrightdot', '\\acwoverarcarrow', '\\curvearrowright', '\\uparrowoncircle', '\\NotLeftTriangle', '\\leftwhitearrow', '\\mbfitsansdelta', '\\leftbarharpoon', '\\mbfitsanssigma', '\\trianglelefteq', '\\revequilibrium', '\\blockrighthalf', '\\squarebotblack', '\\lparenextender', '\\rbrackextender', '\\underleftarrow', '\\ocommatopright', '\\vardiamondsuit', '\\bigslopedwedge', '\\rightleftarrow', '\\mbfitsansnabla', '\\mdlgblkdiamond', '\\leftthreetimes', '\\rightdasharrow', '\\downupharpoons', '\\upharpoonright', '\\rightharpoonup', '\\rightwavearrow', '\\wedgedoublebar', '\\mbfsanspartial', '\\lbrackextender', '\\rightanglemdot', '\\rparenextender', '\\looparrowright', '\\hookrightarrow', '\\leftrightarrow', '\\RightVectorBar', '\\equalleftarrow', '\\downwhitearrow', '\\mbfsansomicron', '\\circlevertfill', '\\RightTeeVector', '\\acwcirclearrow', '\\mdlgblklozenge', '\\downdownarrows', '\\Longrightarrow', '\\longmappedfrom', '\\mdlgwhtdiamond', '\\Longmappedfrom', '\\blackhourglass', '\\blockqtrshaded', '\\triangleserifs', '\\rightarrowplus', '\\mbfitsansvarpi', '\\longrightarrow', '\\enclosediamond', '\\mbfitsansomega', '\\sphericalangle', '\\leftsquigarrow', '\\updownharpoons', '\\mbfsansepsilon', '\\fdiagovnearrow', '\\overrightarrow', '\\NestedLessLess', '\\concavediamond', '\\mbfitsanskappa', '\\squareneswfill', '\\updownarrowbar', '\\rightarrowtail', '\\leftleftarrows', '\\mbfitsanstheta', '\\doublebarwedge', '\\carriagereturn', '\\NotGreaterLess', '\\mbfsansupsilon', '\\ntriangleright', '\\mbfitsansgamma', '\\squaretopblack', '\\rightouterjoin', '\\circledtwodots', '\\vbraceextender', '\\APLboxquestion', '\\curvearrowleft', '\\Leftrightarrow', '\\twoheaduparrow', '\\barleftharpoon', '\\rdiagovsearrow', '\\squarenwsefill', '\\harrowextender', '\\dashrightarrow', '\\mdlgwhtlozenge', '\\mbfitsansalpha', '\\mdlgblkcircle', '\\blocklefthalf', '\\bigtalloblong', '\\rightfishtail', '\\ntriangleleft', '\\bdtriplevdash', '\\mbfsansvarrho', '\\triangleminus', '\\mbfsansvarphi', '\\longleftarrow', '\\biginterleave', '\\parallelogram', '\\mdsmblkcircle', '\\mbfitvarsigma', '\\rightpentagon', '\\leftarrowplus', '\\SucceedsTilde', '\\mbfitsanszeta', '\\botsemicircle', '\\vysmblkcircle', '\\equalparallel', '\\mdlgwhtcircle', '\\PrecedesTilde', '\\Hermaphrodite', '\\circledbslash', '\\squarelrblack', '\\dashleftarrow', '\\mdsmblksquare', '\\rightarrowgtr', '\\triangletimes', '\\LeftTeeVector', '\\rightarrowbar', '\\llparenthesis', '\\mbfvarepsilon', '\\shortlefttack', '\\emptysetoarrl', '\\varlrtriangle', '\\smallsetminus', '\\vysmblksquare', '\\threedotcolon', '\\wasytherefore', '\\blacktriangle', '\\vysmwhtcircle', '\\threeunderdot', '\\leftwavearrow', '\\mdlgblksquare', '\\divideontimes', '\\leftdasharrow', '\\mbfitsansiota', '\\vysmwhtsquare', '\\varsubsetneqq', '\\mbfitvartheta', '\\leftouterjoin', '\\fallingdotseq', '\\enclosesquare', '\\dotsminusdots', '\\draftingarrow', '\\shortdowntack', '\\Longleftarrow', '\\APLboxupcaret', '\\overleftarrow', '\\LeftVectorBar', '\\twoheadmapsto', '\\downdasharrow', '\\circledbullet', '\\upequilibrium', '\\emptysetocirc', '\\leftharpoonup', '\\mbfitsansbeta', '\\RightArrowBar', '\\upharpoonleft', '\\uparrowbarred', '\\mdlgwhtsquare', '\\upbackepsilon', '\\squareulblack', '\\DifferentialD', '\\errbardiamond', '\\enclosecircle', '\\wideangledown', '\\APLuparrowbox', '\\mbfsanslambda', '\\leftarrowtail', '\\mitvarepsilon', '\\inversebullet', '\\squarellblack', '\\mdsmwhtsquare', '\\rrparenthesis', '\\fullouterjoin', '\\triangleright', '\\mbfitvarkappa', '\\cwcirclearrow', '\\measuredangle', '\\mdsmwhtcircle', '\\hookleftarrow', '\\rightanglesqr', '\\pentagonblack', '\\looparrowleft', '\\bigtriangleup', '\\rightdotarrow', '\\leftarrowless', '\\squareurblack', '\\sixteenthnote', '\\topsemicircle', '\\RightTriangle', '\\mbfsansthree', '\\mbfitsansphi', '\\hexagonblack', '\\doublebarvee', '\\LeftTriangle', '\\squareulquad', '\\varsubsetneq', '\\triangleplus', '\\unicodecdots', '\\Longmapsfrom', '\\upvarepsilon', '\\ogreaterthan', '\\squareurquad', '\\leftdbkarrow', '\\mdblkdiamond', '\\squarehvfill', '\\NotLessTilde', '\\downarrowbar', '\\closedvarcap', '\\DownArrowBar', '\\barleftarrow', '\\longmapsfrom', '\\mbfitsanschi', '\\mbfsansgamma', '\\upwhitearrow', '\\varepsilonup', '\\mdwhtlozenge', '\\smwhtdiamond', '\\downfishtail', '\\dottedcircle', '\\wedgemidvert', '\\lozengeminus', '\\mbfsansdelta', '\\bigwhitestar', '\\mathsterling', '\\veedoublebar', '\\mbfitpartial', '\\mdblklozenge', '\\varspadesuit', '\\odotslashdot', '\\mbfsansalpha', '\\circledequal', '\\mbfitsanstau', '\\medblackstar', '\\cupleftarrow', '\\circlellquad', '\\rbracklrtick', '\\dottedsquare', '\\npreccurlyeq', '\\mbfitepsilon', '\\mbfsanskappa', '\\circleulquad', '\\lrtriangleeq', '\\squarellquad', '\\circlelrquad', '\\blacklozenge', '\\eqqslantless', '\\nsucccurlyeq', '\\mbfitupsilon', '\\notbackslash', '\\mbfsansseven', '\\blocklowhalf', '\\errbarcircle', '\\mbfitsansvar', '\\mbfitsanspsi', '\\smwhtlozenge', '\\rdiagovfdiag', '\\smblklozenge', '\\mdwhtdiamond', '\\lbracklltick', '\\PropertyLine', '\\medwhitestar', '\\revangleubar', '\\intclockwise', '\\risingdotseq', '\\longdivision', '\\LeftArrowBar', '\\varheartsuit', '\\triangleubar', '\\rbrackurtick', '\\leftfishtail', '\\multimapboth', '\\mbfsanstheta', '\\upupharpoons', '\\trianglecdot', '\\mbfitomicron', '\\fdiagovrdiag', '\\smblkdiamond', '\\lbrackultick', '\\invsmileface', '\\subsetapprox', '\\nvrightarrow', '\\triangledown', '\\mbfsanssigma', '\\hyphenbullet', '\\rightdbltail', '\\closedvarcup', '\\mbfsansvarpi', '\\errbarsquare', '\\Diamondblack', '\\leftdotarrow', '\\updownarrows', '\\wedgeonwedge', '\\squarelrquad', '\\bigslopedvee', '\\triangleleft', '\\triangleodot', '\\emptysetobar', '\\downuparrows', '\\rightbkarrow', '\\cntclockoint', '\\oturnedcomma', '\\circleurquad', '\\mbfitsansrho', '\\dingasterisk', '\\mbfsanseight', '\\hermitmatrix', '\\GreaterTilde', '\\supsetapprox', '\\mbfitsanseta', '\\mbfsansomega', '\\emptysetoarr', '\\underbracket', '\\mbfsansnabla', '\\sqsubsetneq', '\\circleddash', '\\mbfsansiota', '\\squarehfill', '\\corresponds', '\\approxident', '\\midbarwedge', '\\leftdbltail', '\\APLnotslash', '\\lgblksquare', '\\vertoverlay', '\\quarternote', '\\diamondcdot', '\\mbfsansfive', '\\mitvarsigma', '\\smwhtcircle', '\\circledless', '\\nvleftarrow', '\\mitvarkappa', '\\blacksquare', '\\blkvertoval', '\\ruledelayed', '\\circledvert', '\\succnapprox', '\\nwovnearrow', '\\otimesrhrim', '\\Rrightarrow', '\\mbfitsanspi', '\\RIGHTCIRCLE', '\\mbfvarsigma', '\\mbfitvarphi', '\\mdwhtsquare', '\\blacksmiley', '\\mbfsanszero', '\\curlyeqsucc', '\\mbfitsansnu', '\\neovsearrow', '\\smwhitestar', '\\whthorzoval', '\\mbfsansbeta', '\\wasylozenge', '\\mdwhtcircle', '\\mbfitsansxi', '\\wideangleup', '\\diamondsuit', '\\preccurlyeq', '\\mbfitlambda', '\\varclubsuit', '\\updownarrow', '\\lcurvyangle', '\\caretinsert', '\\smblksquare', '\\eqslantless', '\\varbarwedge', '\\capricornus', '\\smwhtsquare', '\\squarevfill', '\\mbfvartheta', '\\rightarrowx', '\\leftbkarrow', '\\vartriangle', '\\shortuptack', '\\backtrprime', '\\overbracket', '\\whtvertoval', '\\mbfitsansmu', '\\mitvartheta', '\\curlyeqprec', '\\smblkcircle', '\\restriction', '\\ballotcheck', '\\mbfsansfour', '\\seovnearrow', '\\nrightarrow', '\\asteraccent', '\\mbfvarkappa', '\\Planckconst', '\\succcurlyeq', '\\blkhorzoval', '\\RIGHTcircle', '\\mbfsansnine', '\\threedangle', '\\circledstar', '\\neovnwarrow', '\\blockuphalf', '\\multimapinv', '\\mdblksquare', '\\ExponetialE', '\\precnapprox', '\\sagittarius', '\\rcurvyangle', '\\nsqsubseteq', '\\lgwhtcircle', '\\lgblkcircle', '\\sqsupsetneq', '\\revemptyset', '\\equilibrium', '\\mbfitvarrho', '\\updasharrow', '\\circledcirc', '\\simminussim', '\\GreaterLess', '\\intextender', '\\mdblkcircle', '\\eqqslantgtr', '\\lgwhtsquare', '\\gleichstark', '\\backepsilon', '\\otimeslhrim', '\\mbfsanszeta', '\\Updownarrow', '\\RRightarrow', '\\nsqsupseteq', '\\varisinobar', '\\arrowbullet', '\\msansseven', '\\mbfitsansx', '\\eighthnote', '\\mbfitsansf', '\\mbfsanseta', '\\rparenlend', '\\minusrdots', '\\APLcomment', '\\mbfitsanss', '\\mbfdigamma', '\\gtreqqless', '\\plussubtwo', '\\lessapprox', '\\upoldkoppa', '\\lltriangle', '\\mitupsilon', '\\mbfittheta', '\\mbfitsansa', '\\baruparrow', '\\vrectangle', '\\varnothing', '\\mbfsanspsi', '\\mbfitsansl', '\\Diamonddot', '\\rparenuend', '\\mbfitsansq', '\\lblkbrbrak', '\\subsetcirc', '\\mbfsanstau', '\\supsetplus', '\\LEFTCIRCLE', '\\curlywedge', '\\rbracklend', '\\sqrtbottom', '\\mbfitsansw', '\\hrectangle', '\\backdprime', '\\mbfitsansp', '\\sqsupseteq', '\\mitpartial', '\\mbfsanstwo', '\\rbraceuend', '\\rblkbrbrak', '\\mbfitsanst', '\\postalmark', '\\oplusrhrim', '\\eqslantgtr', '\\mbfitsanso', '\\mbfitsansy', '\\commaminus', '\\upfishtail', '\\interleave', '\\Rparenless', '\\rightangle', '\\tripleplus', '\\upvarkappa', '\\DDownarrow', '\\mathdollar', '\\msanseight', '\\pointright', '\\nleftarrow', '\\mbfitsansn', '\\varthetaup', '\\LEFTcircle', '\\varhexagon', '\\conictaper', '\\circledgtr', '\\upvartheta', '\\turnediota', '\\underparen', '\\mbfsansvar', '\\mbfitsansi', '\\smashtimes', '\\rightslice', '\\doubleplus', '\\Rightarrow', '\\mathsfbfit', '\\mbfitsansb', '\\circlehbar', '\\varsigmaup', '\\lparenless', '\\precapprox', '\\mbfitsansk', '\\mbfsanssix', '\\mbfitgamma', '\\mbfitvarpi', '\\subsetplus', '\\mbfitomega', '\\mbfitsansv', '\\mbfpartial', '\\varepsilon', '\\underbrace', '\\ultriangle', '\\msansthree', '\\supsetcirc', '\\vardiamond', '\\Lleftarrow', '\\mbfepsilon', '\\mbfitkappa', '\\talloblong', '\\circledast', '\\twolowline', '\\octothorpe', '\\Proportion', '\\cupovercap', '\\urtriangle', '\\rightarrow', '\\mbfitsansz', '\\lbracklend', '\\succapprox', '\\rightimply', '\\mbfitdelta', '\\mbfomicron', '\\lparenlend', '\\veeonwedge', '\\subsetneqq', '\\rbrackuend', '\\lbrackubar', '\\lparenuend', '\\longmapsto', '\\wideutilde', '\\fourthroot', '\\opluslhrim', '\\mbfitnabla', '\\rbrackubar', '\\mappedfrom', '\\mitomicron', '\\mitepsilon', '\\mbfupsilon', '\\lmoustache', '\\upuparrows', '\\lbraceuend', '\\mbfsansrho', '\\supsetneqq', '\\mbfitsansh', '\\rbracelend', '\\SetDelayed', '\\lbracelend', '\\mbfitsansj', '\\LLeftarrow', '\\lrtriangle', '\\Longmapsto', '\\mbfsansphi', '\\mbfitsansm', '\\mbfsansone', '\\sqsubseteq', '\\mbfitalpha', '\\mbfitsansc', '\\minusfdots', '\\leftarrowx', '\\upvarsigma', '\\mbfitsigma', '\\mbfitsansd', '\\mbfitsansr', '\\mbfitsansg', '\\veemidvert', '\\mbfitsanse', '\\mbfsanschi', '\\UpArrowBar', '\\complement', '\\capovercup', '\\rmoustache', '\\Ddownarrow', '\\mbfitsansu', '\\Mappedfrom', '\\lesseqqgtr', '\\Eulerconst', '\\lbrackuend', '\\CheckedBox', '\\mbfitsans', '\\msansnine', '\\Lparengtr', '\\dasharrow', '\\backslash', '\\mathcolon', '\\trapezium', '\\turnednot', '\\modtwosum', '\\bigcupdot', '\\capbarcup', '\\LessTilde', '\\varveebar', '\\ngeqslant', '\\llbracket', '\\supsetneq', '\\underline', '\\rvboxline', '\\gtrapprox', '\\righttail', '\\nsubseteq', '\\lvboxline', '\\downarrow', '\\Downarrow', '\\hknwarrow', '\\medbullet', '\\mathslash', '\\supseteqq', '\\tieconcat', '\\therefore', '\\mbfsansxi', '\\rangledot', '\\fracslash', '\\typecolon', '\\hatapprox', '\\Leftarrow', '\\triangles', '\\subseteqq', '\\sumbottom', '\\boxcircle', '\\leftarrow', '\\neswarrow', '\\msansfour', '\\upupsilon', '\\angleubar', '\\overbrace', '\\subsetneq', '\\mbfsansmu', '\\mbfsansnu', '\\intbottom', '\\biohazard', '\\epsilonup', '\\lbracemid', '\\turnangle', '\\approxeqq', '\\nleqslant', '\\mbfitiota', '\\leftslice', '\\mitlambda', '\\bagmember', '\\spadesuit', '\\conjquant', '\\semicolon', '\\wedgeodot', '\\rparengtr', '\\checkmark', '\\accurrent', '\\lesseqgtr', '\\triangleq', '\\mbflambda', '\\nparallel', '\\overparen', '\\mbfitzeta', '\\rightmoon', '\\midbarvee', '\\upsilonup', '\\wideparen', '\\msansfive', '\\radiation', '\\supsetdot', '\\geqqslant', '\\upepsilon', '\\rightturn', '\\backsimeq', '\\mitvarrho', '\\boxbslash', '\\vlongdash', '\\hknearrow', '\\dashcolon', '\\updigamma', '\\ampersand', '\\nsupseteq', '\\bigotimes', '\\varniobar', '\\pitchfork', '\\DashVDash', '\\increment', '\\nwsearrow', '\\mathratio', '\\subsetdot', '\\cupbarcap', '\\Angstroem', '\\impliedby', '\\leqqslant', '\\olessthan', '\\upvarbeta', '\\blockfull', '\\heartsuit', '\\upomicron', '\\hourglass', '\\mbfsanspi', '\\rrbracket', '\\partialup', '\\clockoint', '\\rbracemid', '\\mbfvarrho', '\\backprime', '\\mbfvarphi', '\\fourvdots', '\\mitvarphi', '\\gtreqless', '\\langledot', '\\otimeshat', '\\smileface', '\\longdashv', '\\disjquant', '\\mbfitbeta', '\\lightning', '\\msanszero', '\\sqlozenge', '\\mbffrakw', '\\mathbfit', '\\mitsansf', '\\mbffrakr', '\\clubsuit', '\\emptyset', '\\mbfsansg', '\\forksnot', '\\vartheta', '\\BbbGamma', '\\mitsansr', '\\msansone', '\\upvarrho', '\\mitvarpi', '\\Bbbthree', '\\mbffraku', '\\mitalpha', '\\mbfitrho', '\\mitsanse', '\\mbfsansd', '\\twonotes', '\\Bbbeight', '\\mbfsigma', '\\leftturn', '\\hksearow', '\\Rvzigzag', '\\mbffrakm', '\\ComplexJ', '\\smeparsl', '\\mbffrakq', '\\mbfalpha', '\\mitsansz', '\\mitsansk', '\\upvarphi', '\\mbffrakk', '\\mitsansj', '\\mitsansp', '\\approxeq', '\\subseteq', '\\sterling', '\\biguplus', '\\mapsdown', '\\astrosun', '\\hkswarow', '\\eqvparsl', '\\gesdotol', '\\mbfitvar', '\\lefttail', '\\lnapprox', '\\mitsanss', '\\varphiup', '\\profsurf', '\\mitsansh', '\\llcorner', '\\mathsfit', '\\sqsubset', '\\msanssix', '\\mbfdelta', '\\bigsqcup', '\\mitsansa', '\\mitsanst', '\\succnsim', '\\mbfsansp', '\\UUparrow', '\\gnapprox', '\\pullback', '\\mbfsanse', '\\underbar', '\\ComplexI', '\\bigwedge', '\\mittheta', '\\bbrktbrk', '\\mitsansd', '\\linefeed', '\\curlyvee', '\\notasymp', '\\supseteq', '\\mbfitchi', '\\mbfnabla', '\\backcong', '\\mitdelta', '\\mathbold', '\\invlazys', '\\triangle', '\\ulcorner', '\\mathfrak', '\\diameter', '\\lesdotor', '\\mbffrako', '\\Bbbseven', '\\mitsansn', '\\Mapsfrom', '\\mitsansu', '\\mbfsansh', '\\mathring', '\\zproject', '\\divslash', '\\varkappa', '\\mitgamma', '\\mbffrakh', '\\MapsDown', '\\cuberoot', '\\barwedge', '\\mbffrakl', '\\mbffrakf', '\\mbfsansj', '\\varrhoup', '\\mbfsansf', '\\precnsim', '\\mbffrakv', '\\mbfsansv', '\\varheart', '\\APLinput', '\\geqslant', '\\profline', '\\mbfsansl', '\\mbfvarpi', '\\coloneqq', '\\strictfi', '\\Bbbgamma', '\\mitnabla', '\\Question', '\\notowner', '\\bullseye', '\\mbfsansc', '\\varspade', '\\mbfgamma', '\\wedgebar', '\\Coloneqq', '\\precneqq', '\\mbffrakj', '\\mtteight', '\\medspace', '\\mbffraks', '\\mbffraki', '\\mbffraka', '\\doteqdot', '\\mbffrake', '\\strictif', '\\boxtimes', '\\mitsansl', '\\upstigma', '\\ringplus', '\\ngtrless', '\\lfbowtie', '\\horizbar', '\\mbfsansx', '\\mbfsansy', '\\mitkappa', '\\Uuparrow', '\\lambdaup', '\\mathsfbf', '\\veeonvee', '\\drbkarow', '\\mbffrakx', '\\plustrif', '\\dotequiv', '\\scpolint', '\\mbfsansk', '\\rtriltri', '\\mitsansv', '\\mitsansb', '\\rppolint', '\\mitsansx', '\\mitsanso', '\\simrdots', '\\dottimes', '\\smallint', '\\mbfsanss', '\\parallel', '\\capwedge', '\\mbfsanst', '\\mitsansi', '\\boxonbox', '\\mitsansq', '\\rfbowtie', '\\lrcorner', '\\mbffraky', '\\mbffrakc', '\\mitsansc', '\\boxminus', '\\mbfsansb', '\\elinters', '\\mbfsansi', '\\mbftheta', '\\mbfsansu', '\\viewdata', '\\bsolhsub', '\\timesbar', '\\msanstwo', '\\nlessgtr', '\\mbfitphi', '\\mbffrakn', '\\isinobar', '\\mathcent', '\\intlarhk', '\\mttseven', '\\mbfitpsi', '\\mitsansg', '\\mttthree', '\\mbfsansr', '\\pointint', '\\overline', '\\dotminus', '\\mbffrakb', '\\varsigma', '\\mbfkappa', '\\mbfiteta', '\\mbffrakd', '\\bigtimes', '\\mbfsanso', '\\acidfree', '\\mitsansy', '\\mbfittau', '\\mbfomega', '\\mbffrakz', '\\mbffrakp', '\\wedgedot', '\\mbfsansz', '\\intprodr', '\\mbfsansa', '\\uplambda', '\\mbfsansq', '\\mbffrakt', '\\sinewave', '\\nlesssim', '\\rvzigzag', '\\pentagon', '\\minusdot', '\\mbfsansm', '\\bigsqcap', '\\mapsfrom', '\\multimap', '\\lvzigzag', '\\intercal', '\\leqslant', '\\sqsupset', '\\vectimes', '\\boxslash', '\\mitsansw', '\\question', '\\notslash', '\\mbffrakg', '\\bigoplus', '\\mitomega', '\\cirfnint', '\\succneqq', '\\tieinfty', '\\steaming', '\\mbfsansn', '\\setminus', '\\Angstrom', '\\eqqcolon', '\\varisins', '\\revangle', '\\mitsigma', '\\Lvzigzag', '\\aquarius', '\\leftmoon', '\\dotequal', '\\mbfsansw', '\\mitsansm', '\\urcorner', '\\mttfour', '\\plushat', '\\epsilon', '\\trslash', '\\varbeta', '\\lesdoto', '\\simneqq', '\\gesdoto', '\\preceqq', '\\Swarrow', '\\mbfitxi', '\\boxdiag', '\\upkoppa', '\\varprod', '\\isindot', '\\mitiota', '\\npolint', '\\upsilon', '\\mitbeta', '\\supmult', '\\bigstar', '\\ballotx', '\\dualmap', '\\suphsub', '\\Digamma', '\\mitsans', '\\ggcurly', '\\circled', '\\uparrow', '\\matheth', '\\rbrbrak', '\\imageof', '\\plusdot', '\\bigodot', '\\congdot', '\\diamond', '\\fisheye', '\\Bbbnine', '\\eqcolon', '\\mbfitnu', '\\dbloint', '\\intprod', '\\upsigma', '\\npreceq', '\\mbfscrd', '\\Rbrbrak', '\\percent', '\\mbfscrs', '\\mbfscrn', '\\Scorpio', '\\mbfscrx', '\\mttnine', '\\uptheta', '\\searrow', '\\smallin', '\\upgamma', '\\lesssim', '\\rsqhook', '\\mbfscrl', '\\rsolbar', '\\hexagon', '\\medcirc', '\\obrbrak', '\\kappaup', '\\succsim', '\\lbrbrak', '\\topfork', '\\sadface', '\\gammaup', '\\omegaup', '\\lrtimes', '\\mbfscry', '\\digamma', '\\recycle', '\\ubrbrak', '\\nexists', '\\upvarpi', '\\ddotseq', '\\mbfzeta', '\\ltquest', '\\mbfscrb', '\\pushout', '\\supdsub', '\\nsubset', '\\neptune', '\\upomega', '\\mbfsans', '\\upsampi', '\\vzigzag', '\\Lbrbrak', '\\mbfscre', '\\ngtrsim', '\\alphaup', '\\nearrow', '\\succneq', '\\shuffle', '\\nwarrow', '\\simplus', '\\mitzeta', '\\nsucceq', '\\hzigzag', '\\mbffrak', '\\Coloneq', '\\thetaup', '\\dotplus', '\\project', '\\Upsilon', '\\Nwarrow', '\\rftimes', '\\eqqplus', '\\simless', '\\nvinfty', '\\Bbbfive', '\\upkappa', '\\frownie', '\\questeq', '\\Nearrow', '\\because', '\\precsim', '\\implies', '\\Bbbzero', '\\lsqhook', '\\partial', '\\plussim', '\\precneq', '\\mbfscrp', '\\Diamond', '\\subrarr', '\\twocups', '\\mbfbeta', '\\lessdot', '\\rrangle', '\\fbowtie', '\\cirscir', '\\mbfiota', '\\upalpha', '\\mbfscrc', '\\eqqless', '\\thermod', '\\succeqq', '\\mbfscrw', '\\jupiter', '\\Neptune', '\\Jupiter', '\\deltaup', '\\mbfscrv', '\\lftimes', '\\gtrless', '\\olcross', '\\mbfscrj', '\\lllnest', '\\coloneq', '\\veeodot', '\\leadsto', '\\mbfscrh', '\\between', '\\ddagger', '\\gtquest', '\\varclub', '\\mbfscrr', '\\scorpio', '\\suphsol', '\\squoval', '\\sigmaup', '\\obslash', '\\mbfscrg', '\\boxplus', '\\smallni', '\\annuity', '\\overbar', '\\napprox', '\\notowns', '\\mbfitmu', '\\varpiup', '\\mbfscri', '\\Bbbfour', '\\mbfitpi', '\\warning', '\\mbfscro', '\\sptilde', '\\greater', '\\maltese', '\\Searrow', '\\mbfscrf', '\\mbfscrk', '\\llcurly', '\\mathcal', '\\nsupset', '\\swarrow', '\\natural', '\\varsdef', '\\closure', '\\bumpeqq', '\\Uparrow', '\\mbfscrt', '\\submult', '\\gggnest', '\\mbfscra', '\\twocaps', '\\dbkarow', '\\updelta', '\\lessgtr', '\\benzenr', '\\mbfscrm', '\\backsim', '\\mbfscru', '\\llangle', '\\suplarr', '\\supedot', '\\mbfscrq', '\\mbfscrz', '\\varstar', '\\lozenge', '\\Mercury', '\\fatsemi', '\\revnmid', '\\yinyang', '\\mttfive', '\\pluseqq', '\\mttzero', '\\diceiii', '\\mercury', '\\trprime', '\\subedot', '\\mapsup', '\\fourth', '\\mbfitm', '\\ltrivb', '\\origof', '\\inttop', '\\dotsim', '\\mbfith', '\\mfrakg', '\\ltimes', '\\iotaup', '\\apprge', '\\msanst', '\\msansh', '\\subset', '\\msansn', '\\mfrakc', '\\taurus', '\\mbfitz', '\\mfrakt', '\\sumint', '\\mapsto', '\\preceq', '\\mbfitd', '\\supsim', '\\sqrint', '\\msanse', '\\eqless', '\\gtrdot', '\\isinvb', '\\second', '\\APLlog', '\\stareq', '\\Lambda', '\\succeq', '\\subsup', '\\veedot', '\\Square', '\\stigma', '\\mbfitq', '\\mbfitx', '\\supset', '\\Rbrack', '\\elsdot', '\\varphi', '\\mfrakp', '\\APLinv', '\\bigvee', '\\anchor', '\\mitvar', '\\wedgeq', '\\dprime', '\\mfrakm', '\\mbfitr', '\\barcap', '\\mitpsi', '\\capdot', '\\mttone', '\\lfloor', '\\bigbot', '\\mbfito', '\\msansk', '\\cupdot', '\\mbfite', '\\rtimes', '\\ltlarr', '\\msansq', '\\mitrho', '\\btimes', '\\Uranus', '\\msansf', '\\gemini', '\\mfrake', '\\msansx', '\\msanso', '\\mbfrho', '\\lparen', '\\varrho', '\\models', '\\mbfitk', '\\oslash', '\\boxast', '\\bigcup', '\\mfrakj', '\\msansu', '\\sslash', '\\lambda', '\\mathrm', '\\Supset', '\\msansd', '\\hslash', '\\gesdot', '\\gtrarr', '\\mfraka', '\\Bbbsix', '\\mbfitc', '\\cancer', '\\mbfitn', '\\barcup', '\\mbfitb', '\\mfrako', '\\msansj', '\\msansa', '\\mathbb', '\\nvdash', '\\simgtr', '\\mfraks', '\\intcup', '\\laplac', '\\eqqsim', '\\iiiint', '\\msansp', '\\mfrakv', '\\egsdot', '\\supsub', '\\cirbot', '\\bigcap', '\\mbfitw', '\\danger', '\\oiiint', '\\tminus', '\\mfrakd', '\\iinfin', '\\pisces', '\\mbfchi', '\\mbfits', '\\subsub', '\\candra', '\\eqcirc', '\\eparsl', '\\mfrakz', '\\mathtt', '\\qprime', '\\msansm', '\\msanss', '\\angdnr', '\\mfrakf', '\\eqeqeq', '\\barvee', '\\CIRCLE', '\\iddots', '\\invnot', '\\diceiv', '\\Bbbsum', '\\intbar', '\\vbrtri', '\\mbfpsi', '\\betaup', '\\dagger', '\\mbfitp', '\\bigtop', '\\pounds', '\\upzeta', '\\invneg', '\\mfrakw', '\\zetaup', '\\intcap', '\\Bbbone', '\\boxbar', '\\spddot', '\\forall', '\\bowtie', '\\mfrakx', '\\mbfity', '\\MapsUp', '\\rbrace', '\\rfloor', '\\upbeta', '\\exclam', '\\lgroup', '\\rbrack', '\\veebar', '\\nsimeq', '\\mfraky', '\\mathit', '\\msansz', '\\saturn', '\\midcir', '\\mtttwo', '\\mfrakb', '\\circeq', '\\bullet', '\\coprod', '\\mbfitg', '\\assert', '\\mbfita', '\\apprle', '\\Bbbtwo', '\\Mapsto', '\\nunlhd', '\\smiley', '\\mfrakn', '\\angles', '\\mbfphi', '\\nasymp', '\\Circle', '\\square', '\\mbfitu', '\\msansl', '\\niobar', '\\pencil', '\\varnis', '\\mbfiti', '\\Stigma', '\\Taurus', '\\mfrakh', '\\lowint', '\\bumpeq', '\\mbfvar', '\\uminus', '\\lbrace', '\\scurel', '\\msansv', '\\rgroup', '\\ominus', '\\parsim', '\\prurel', '\\mfrakq', '\\msansg', '\\lbrack', '\\daleth', '\\supsup', '\\mbfitl', '\\mfrakl', '\\mitphi', '\\neuter', '\\uranus', '\\Gemini', '\\mbfitj', '\\gtlpar', '\\exists', '\\msansr', '\\topcir', '\\period', '\\mbfitf', '\\rparen', '\\Rparen', '\\msansc', '\\mitchi', '\\Subset', '\\mfrakr', '\\Otimes', '\\utilde', '\\propto', '\\otimes', '\\ovhook', '\\invamp', '\\mfraku', '\\approx', '\\nequiv', '\\mbfscr', '\\diceii', '\\mbfitv', '\\gesles', '\\mathbf', '\\subsim', '\\boxbox', '\\Lbrack', '\\mfraki', '\\upiota', '\\lesdot', '\\ddddot', '\\Vvdash', '\\nunrhd', '\\mbftau', '\\mathsf', '\\gtrsim', '\\swords', '\\lesges', '\\mbfeta', '\\atsign', '\\rangle', '\\dicevi', '\\msansb', '\\miteta', '\\sumtop', '\\topbot', '\\measeq', '\\Exclam', '\\mbfitt', '\\boxdot', '\\mittau', '\\msansy', '\\Lparen', '\\Bumpeq', '\\female', '\\cupvee', '\\eqqgtr', '\\droang', '\\mathds', '\\mfrakk', '\\msansi', '\\msansw', '\\Saturn', '\\mttsix', '\\cirmid', '\\langle', '\\mitnu', '\\cdotp', '\\Vdash', '\\oplus', '\\perps', '\\mbfpi', '\\hfill', '\\mbfxi', '\\vdots', '\\uplus', '\\uptau', '\\tplus', '\\Colon', '\\Sampi', '\\chiup', '\\skull', '\\Sqcap', '\\imath', '\\lsime', '\\breve', '\\operp', '\\upvar', '\\smile', '\\csupe', '\\sqint', '\\ularc', '\\virgo', '\\Venus', '\\upphi', '\\times', '\\mscrt', '\\nrres', '\\isins', '\\mscrx', '\\delta', '\\Omega', '\\adots', '\\Qoppa', '\\eqdot', '\\slash', '\\ndres', '\\Micro', '\\psurj', '\\sqcup', '\\mbfnu', '\\BbbPi', '\\libra', '\\lrarc', '\\check', '\\zpipe', '\\unrhd', '\\mscrr', '\\Equiv', '\\lceil', '\\mscrg', '\\house', '\\omega', '\\rhoup', '\\upint', '\\mscru', '\\upold', '\\mscrm', '\\zhide', '\\mscrj', '\\Libra', '\\gtcir', '\\tauup', '\\fltns', '\\cdots', '\\uprho', '\\alpha', '\\wedge', '\\mscrw', '\\Bbbpi', '\\qoppa', '\\mscrf', '\\jmath', '\\mbfit', '\\lnsim', '\\upeta', '\\pluto', '\\dddot', '\\kappa', '\\upchi', '\\varpi', '\\nsucc', '\\iiint', '\\forkv', '\\tcohm', '\\mscrs', '\\Theta', '\\mscrn', '\\arceq', '\\phiup', '\\mscri', '\\sqcap', '\\mscra', '\\eqdef', '\\Vvert', '\\sigma', '\\sampi', '\\mfrak', '\\mscrk', '\\psiup', '\\earth', '\\csube', '\\Equal', '\\theta', '\\oiint', '\\Sqcup', '\\awint', '\\Dashv', '\\unlhd', '\\sphat', '\\llarc', '\\lblot', '\\asymp', '\\nless', '\\doteq', '\\gsiml', '\\mscrv', '\\minus', '\\amalg', '\\Wedge', '\\Doteq', '\\DashV', '\\mscrb', '\\dicei', '\\grave', '\\asteq', '\\simeq', '\\mscre', '\\prime', '\\Gamma', '\\ldots', '\\mscrl', '\\equiv', '\\ncong', '\\VDash', '\\dashv', '\\Euler', '\\mscrp', '\\Koppa', '\\strns', '\\nabla', '\\mbfmu', '\\gimel', '\\sharp', '\\infty', '\\mitpi', '\\comma', '\\mscry', '\\ltcir', '\\tilde', '\\mitmu', '\\dicev', '\\xbsol', '\\uppsi', '\\Delta', '\\vdash', '\\gescc', '\\colon', '\\barin', '\\nhpar', '\\mscro', '\\lescc', '\\third', '\\veeeq', '\\upand', '\\DDDot', '\\mscrd', '\\notni', '\\mscrh', '\\angle', '\\gamma', '\\msans', '\\nprec', '\\Pluto', '\\mscrz', '\\nsime', '\\gnsim', '\\eqsim', '\\mscrq', '\\ocirc', '\\frown', '\\gneqq', '\\eqgtr', '\\forks', '\\lsimg', '\\Sigma', '\\notin', '\\lneqq', '\\equal', '\\Aries', '\\aleph', '\\etaup', '\\ddots', '\\rblot', '\\acute', '\\mitxi', '\\koppa', '\\rceil', '\\gsime', '\\aries', '\\urarc', '\\disin', '\\mscrc', '\\mttm', '\\fint', '\\dlsh', '\\eqeq', '\\mbfb', '\\lang', '\\leqq', '\\upxi', '\\Bbbl', '\\mbfn', '\\mitq', '\\mitr', '\\iint', '\\mbfu', '\\csup', '\\mitj', '\\mbfl', '\\geqq', '\\mttn', '\\Bbbw', '\\Bbbp', '\\piup', '\\mbfh', '\\Bbbc', '\\siml', '\\Bbbu', '\\mtty', '\\XBox', '\\sdef', '\\Bbbt', '\\BbbS', '\\tcmu', '\\Bbbk', '\\BbbO', '\\mitx', '\\Bbbz', '\\csub', '\\mbfq', '\\Game', '\\dres', '\\tosa', '\\circ', '\\Mars', '\\psur', '\\BbbU', '\\mitk', '\\xiup', '\\hash', '\\upmu', '\\rsub', '\\mttg', '\\mttx', '\\hide', '\\mitu', '\\semi', '\\intx', '\\rbag', '\\BbbG', '\\nisd', '\\nmid', '\\isin', '\\mbfi', '\\Bbbs', '\\mbfk', '\\mbfc', '\\plus', '\\mitm', '\\lnot', '\\flat', '\\tinj', '\\beta', '\\ring', '\\mbfv', '\\Rdsh', '\\gets', '\\Bbbh', '\\mtta', '\\BbbJ', '\\gtcc', '\\nuup', '\\BbbM', '\\mbfd', '\\mitn', '\\tsur', '\\BbbA', '\\prod', '\\Bbbv', '\\mbfj', '\\mits', '\\BbbT', '\\pinj', '\\mttj', '\\Ldsh', '\\Bbbn', '\\mite', '\\beth', '\\DDot', '\\obot', '\\ddot', '\\mita', '\\buni', '\\ffun', '\\mitp', '\\male', '\\zcmp', '\\mitg', '\\BbbW', '\\mitd', '\\Bbbd', '\\simg', '\\BbbI', '\\cong', '\\BbbP', '\\lneq', '\\lbag', '\\mbfx', '\\mttb', '\\Bbbj', '\\girl', '\\mbfs', '\\land', '\\Bbbb', '\\star', '\\mbff', '\\miti', '\\dint', '\\Bbby', '\\rimg', '\\quad', '\\BbbB', '\\BbbY', '\\mitl', '\\mito', '\\mitw', '\\limg', '\\mttp', '\\BbbQ', '\\sans', '\\Prec', '\\spot', '\\mttf', '\\BbbN', '\\rang', '\\BbbK', '\\mbfy', '\\upin', '\\pfun', '\\vert', '\\Bbbx', '\\Vbar', '\\mbfm', '\\BbbH', '\\mttz', '\\xsol', '\\mbfe', '\\mbfa', '\\mbfg', '\\VERT', '\\mbfz', '\\uppi', '\\BbbE', '\\mitf', '\\odiv', '\\lvec', '\\odot', '\\mity', '\\smte', '\\ltcc', '\\nleq', '\\Rbag', '\\mbfp', '\\zeta', '\\Bbbe', '\\prec', '\\mttk', '\\mttu', '\\sqrt', '\\tona', '\\BbbX', '\\duni', '\\dash', '\\owns', '\\Lbag', '\\Bbbo', '\\less', '\\nexi', '\\mitc', '\\fcmp', '\\cent', '\\Finv', '\\succ', '\\mttd', '\\iota', '\\dsub', '\\Bbbg', '\\surj', '\\Vert', '\\Bbbf', '\\BbbF', '\\mbfo', '\\Bbbm', '\\mttt', '\\Bbbq', '\\mitv', '\\Same', '\\Bbbr', '\\finj', '\\BbbR', '\\mbfr', '\\mitz', '\\ngeq', '\\mttl', '\\mtti', '\\cdot', '\\mlcp', '\\Perp', '\\mttw', '\\euro', '\\BbbV', '\\ngtr', '\\BbbC', '\\upnu', '\\Barv', '\\BbbZ', '\\mbfw', '\\mttr', '\\comp', '\\mtts', '\\Zbar', '\\Bbbi', '\\muup', '\\Join', '\\mttq', '\\LVec', '\\gneq', '\\rres', '\\mtte', '\\mtth', '\\obar', '\\dsol', '\\BbbD', '\\perp', '\\towa', '\\late', '\\tfun', '\\Bbba', '\\mttv', '\\drsh', '\\mtto', '\\mitb', '\\oint', '\\mbft', '\\mitt', '\\mscr', '\\mttc', '\\BbbL', '\\nsim', '\\Succ', '\\toea', '\\Bot', '\\mbf', '\\cup', '\\Lsh', '\\cos', '\\Mho', '\\Phi', '\\fun', '\\Top', '\\vee', '\\lll', '\\yen', '\\nis', '\\leo', '\\dot', '\\geq', '\\boy', '\\max', '\\Vec', '\\log', '\\int', '\\rel', '\\div', '\\lor', '\\Rsh', '\\ggg', '\\Not', '\\cat', '\\rhd', '\\QED', '\\bar', '\\glj', '\\RHD', '\\eth', '\\mho', '\\psi', '\\rho', '\\mit', '\\Leo', '\\top', '\\lhd', '\\var', '\\tau', '\\leq', '\\mtt', '\\LHD', '\\not', '\\sin', '\\min', '\\mid', '\\neq', '\\neg', '\\sun', '\\sim', '\\Psi', '\\cap', '\\Yup', '\\gla', '\\phi', '\\iff', '\\exi', '\\sum', '\\tan', '\\cir', '\\chi', '\\inj', '\\nni', '\\ell', '\\ast', '\\bij', '\\Sun', '\\vec', '\\smt', '\\Vee', '\\bot', '\\Cup', '\\Cap', '\\Dot', '\\eta', '\\lat', '\\nin', '\\hat']
  130. import re
  131. def latex_Standardize(ltx):
  132. """
  133. latex格式清洗规范化
  134. :return:
  135. """
  136. ltx = ltx.replace(":", ":").replace(",", ",").replace("。", ".").replace(";", ";").replace("?", "?") \
  137. .replace("!", "!").replace(".", ".").replace("、", "、").replace("∶", ":").replace("…", "...") \
  138. .replace(")", ")").replace("(", "(").replace("·", " \cdot ").replace("′", "'").replace("α", "\\alpha")
  139. LATEX_SYMS.sort(key=lambda i: len(i), reverse=True)
  140. sub2ltx = {}
  141. num = 1
  142. for syb in LATEX_SYMS:
  143. if syb in ltx:
  144. ltx = ltx.replace(syb, "【{}】".format(num))
  145. sub2ltx["【{}】".format(num)] = syb + " " # 加空格
  146. num += 1
  147. if "\\" in ltx:
  148. continue
  149. else:
  150. break
  151. for k1, v1 in sub2ltx.items():
  152. ltx = ltx.replace(k1, v1).replace(" ", " ")
  153. return ltx
  154. # aa=r"{\sqrt{5gR-\dfrac{5EqR}{m}}\leqv0<\sqrt{6gR-\frac{5EqR}{m}}}"
  155. # tt=latex_Standardize(aa)
  156. # print(int(80/1.27+1))
  157. ltx2url = {'1': '<img src="http://zxhx-1302712961.cos.ap-shanghai.myqcloud.com/zyk/uploadfiles/wording/612f60307ddb8b2765e50512/MJMATH-1630572300192641.png" width="7.0" height="12.5" data-latex="$1$" />', '{A\\cdot (-\\infty ,\\frac{1}{2}\\rbrack }': '<img src="http://zxhx-1302712961.cos.ap-shanghai.myqcloud.com/zyk/uploadfiles/wording/612f60307ddb8b2765e50512/MJMATH-1630572300336259.png" width="73.5" height="21.5" data-latex="${A\\cdot (-\\infty ,\\frac{1}{2}\\rbrack }$" />', '{(-\\infty ,\\frac{1}{2})}': '<img src="http://zxhx-1302712961.cos.ap-shanghai.myqcloud.com/zyk/uploadfiles/wording/612f60307ddb8b2765e50512/MJMATH-1630572300700852.png" width="54.0" height="21.5" data-latex="${(-\\infty ,\\frac{1}{2})}$" />', '{y=bx+a}': '<img src="http://zxhx-1302712961.cos.ap-shanghai.myqcloud.com/zyk/uploadfiles/wording/612f60307ddb8b2765e50512/MJMATH-1630572300642867.png" width="66.5" height="15.5" data-latex="${y=bx+a}$" />', '{X\\sim B(20,\\frac{1}{2}),}': '<img src="http://zxhx-1302712961.cos.ap-shanghai.myqcloud.com/zyk/uploadfiles/wording/612f60307ddb8b2765e50512/MJMATH-1630572300184091.png" width="89.5" height="21.5" data-latex="${X\\sim B(20,\\frac{1}{2}),}$" />', '{R^{2}}': '<img src="http://zxhx-1302712961.cos.ap-shanghai.myqcloud.com/zyk/uploadfiles/wording/612f60307ddb8b2765e50512/MJMATH-1630572300615124.png" width="17.5" height="15.5" data-latex="${R^{2}}$" />', '{AC_{1}\\perp }': '<img src="http://zxhx-1302712961.cos.ap-shanghai.myqcloud.com/zyk/uploadfiles/wording/612f60307ddb8b2765e50512/MJMATH-1630572300906466.png" width="42.5" height="15.5" data-latex="${AC_{1}\\perp }$" />', '{B_{1}CD_{1}}': '<img src="http://zxhx-1302712961.cos.ap-shanghai.myqcloud.com/zyk/uploadfiles/wording/612f60307ddb8b2765e50512/MJMATH-1630572300589222.png" width="46.5" height="14.5" data-latex="${B_{1}CD_{1}}$" />', '{2\\sqrt {2}}': '<img src="http://zxhx-1302712961.cos.ap-shanghai.myqcloud.com/zyk/uploadfiles/wording/612f60307ddb8b2765e50512/MJMATH-1630572300377309.png" width="27.0" height="17.5" data-latex="${2\\sqrt {2}}$" />', '{B_{1}D_{1}}': '<img src="http://zxhx-1302712961.cos.ap-shanghai.myqcloud.com/zyk/uploadfiles/wording/612f60307ddb8b2765e50512/MJMATH-1630572300826869.png" width="36.0" height="14.5" data-latex="${B_{1}D_{1}}$" />'}
  158. def sub2(s):
  159. if s:
  160. all_ltx = re.findall(r'\$.*?\$', s) # 查找试题结构中的公式
  161. all_ltx.extend(re.findall('\\\\\(.*?\\\\\)', s))
  162. all_ltx = list(set(all_ltx))
  163. for ltx in all_ltx:
  164. new_ltx = ltx.replace("$", "").replace("\\(", "").replace("\\)", "")
  165. if new_ltx in ltx2url: # 将latex换为其渲染图片的线上可访问地址
  166. s = s.replace(ltx, ltx2url[new_ltx])
  167. return s
  168. one_items = {"options_img": [
  169. "<img src=\"http://zxhx-1302712961.cos.ap-shanghai.myqcloud.com/imgpaper/lqy_upload/612f60307ddb8b2765e50512/img_0.png\" width=\"22\" height=\"14\">$1$",
  170. "<img src=\"http://zxhx-1302712961.cos.ap-shanghai.myqcloud.com/imgpaper/lqy_upload/612f60307ddb8b2765e50512/img_1.png\" width=\"26\" height=\"14\">",
  171. "<img src=\"http://zxhx-1302712961.cos.ap-shanghai.myqcloud.com/imgpaper/lqy_upload/612f60307ddb8b2765e50512/img_2.png\" width=\"25\" height=\"14\">",
  172. "<img src=\"http://zxhx-1302712961.cos.ap-shanghai.myqcloud.com/imgpaper/lqy_upload/612f60307ddb8b2765e50512/img_3.png\" width=\"10\" height=\"14\">"
  173. ],}
  174. # k = "options_img"
  175. # if k == "options_img":
  176. # one_items[k] = list(map(sub2, one_items[k]))
  177. # print(one_items)
  178. items_str = "<img src='http://zxhx-1302712961.cos.ap-shanghai.myqcloud.com/imgpaper/lqy_upload/612f60307ddb8b2765e50512/img_45.png'"
  179. rr=re.search(r'<img src=(["\']).*?/(imgpaper/lqy_upload/[^"\']*?)(\1)', items_str)
  180. print(rr.group(3))
  181. def sub2(ss):
  182. if re.search(r'^(img|/?h[123456]|/?su[bp]>|t0b>|br\s*/?>'
  183. r'|/?(p|span|font|article|ul|ol|div|table|t?body|html|head|t[drh])(\s*|\s+style=.*?")>'
  184. r'|/?[a-z]+ style=.*?">)', ss.group(1)) is None:
  185. print(ss.group(1))
  186. return "&lt;{}".format(ss.group(1))
  187. else:
  188. return "<{}".format(ss.group(1))
  189. aabb = """
  190. <p>2020-2021年福州高级中学高二上期末考试试卷</p>\n<p> </p>\n<p>物理试卷答案</p>\n<p>一、选择题</p>
  191. <t0b></p>\n<p>二、实验题</p>\n<p>21.【答案】0.772 ×1 12 <imgsrc50 data-latex="$$"/> 偏小</p>
  192. <p>22.【答案】如图 V<sub>1</sub> R<sub>1 </sub>0.11</p>
  193. """
  194. # html2txt = re.sub("<([^<]{1,30})", sub2, aabb)
  195. # print(html2txt)
  196. # import hashlib
  197. # name_list = random.sample(range(100000, 999999), 1)
  198. # word_id_temp = str(int(time.time())) + str(name_list[0])
  199. # print(word_id_temp)
  200. # md = hashlib.md5()
  201. # md.update(word_id_temp.encode("utf-8"))
  202. # word_id = str(md.hexdigest())
  203. # print(word_id)
  204. # html2txt = """
  205. # 6.超声波测速是一种常用的测速手段。如图所示,安装有超声波发射和接收装置的测速仪B
  206. # 固定在道路某处,A为测速仪B正前方的一辆小汽车,两者相距为338m。某时刻B发出超
  207. # 声波,同时A由静止开始做匀加速直线运动。当B接收到反射回来的超声波信号时,A、B相
  208. # 距为346m,已知声速为340m/s,则下列说法正确的是
  209. # A.A车加速度的大小为${2m//s^{2}}$
  210. # <img src='http://zxhx-1302712961.cos.ap-shanghai.myqcloud.com/imgpaper/lqy_upload/6195e6d034b3123bf9d1fbf7/img_31.png' width='174' height='64' />
  211. # B.超声波追上A车时,A车前进了4m
  212. # C.经过2s,测速仪B接收到返回的超声波
  213. # D.测速仪B接收到返回的超声波时,A车的速度为16m/s
  214. # """
  215. # html2txt = re.sub('w\s*w\s*w\..*?(\.\s*c\s*o\s*m|\.cn)+|(?<!["“=\'])http:.*?\.(com|cn|org)', "",
  216. # html2txt)
  217. # a = {"aa": 1}
  218. # b = {"bb":a}
  219. # def nn(ss):
  220. # ss["aa"]=2
  221. # return ss
  222. #
  223. # a = nn(a)
  224. # print(b)
  225. from bisect import bisect_left
  226. f1 = open(r"F:\zwj\Text_Structure\new_tiku_structure_v3_sci\svg_data.pickle", 'rb')
  227. svg_html_data = pickle.load(f1)
  228. topicinfo = [[nm.end(),nm.group(1)] for nm in re.finditer('class="topic-number">(\d+)\.', str(svg_html_data))]
  229. topicidx = [i[0] for i in topicinfo]
  230. topicno = [i[1] for i in topicinfo]
  231. print(topicidx)
  232. time3 = time.time()
  233. all_mathjax1 = [[a.start(), a.group(1)] for a in
  234. re.finditer('(<span class="MathJax_Preview".*?</script>(</span>)*)', str(svg_html_data))]
  235. print("all_mathjax1:", len(all_mathjax1), all_mathjax1)
  236. for n, jax in enumerate(all_mathjax1):
  237. svgs = re.findall("<svg .*?</svg>", jax[1])
  238. latex = re.findall('<script .+?">(((?!(</)).)*?)</script>(</span>)*', jax[1])
  239. if latex and svgs:
  240. print('+++++++++++++++++++++++:',latex[0][0])
  241. else:
  242. id_idx = bisect_left(topicidx, jax[0])
  243. # logger.info("----【word_id:{}】存在mathjax公式信息有问题:latex:{}\nsvg:{}".format(self.wordid, latex, svgs))
  244. # return "第{}题的latex:{}不规范".format(topicno[id_idx-1],latex[0][0]))