From 796aaed1ad3c99ddb63df0d952d6738eb979320e Mon Sep 17 00:00:00 2001 From: "weiye.wang" Date: Wed, 10 Jan 2024 21:38:00 +0800 Subject: [PATCH] =?UTF-8?q?database=20tools=E7=9A=84mathpix=E9=A2=84?= =?UTF-8?q?=E5=A4=84=E7=90=86=E4=B8=AD=E4=BF=AE=E6=94=B9=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=B8=AA$=E5=92=8C=E6=8B=AC=E5=8F=B7=E7=9A=84=E4=BD=8D?= =?UTF-8?q?=E7=BD=AE=E7=9A=84=E5=B0=8Fbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 工具v2/database_tools.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/工具v2/database_tools.py b/工具v2/database_tools.py index ab4ea995..085b4e9f 100644 --- a/工具v2/database_tools.py +++ b/工具v2/database_tools.py @@ -1120,10 +1120,37 @@ def RefineMathpix(raw_string): # 进一步修改mathpix得到的字符串 string = MergeMathComma(string) #判断非数学环境中的","是否需要合并在一个数学环境中, 如果需要则执行合并 string = RefineCasesEnv(string) #美化cases环境 string = RefineChineseComma(string) #改顿号 + string = RefineInterval(string) #改错误的dollars符号和括号的顺序 return string +def RefineInterval(string): + newstring = string + matches = re.finditer(r"\+\\infty\$\)",newstring) #先处理右括号 + poslist = [(match.start(),match.end()) for match in matches] + poslist.reverse() #从后往前逐一更改 + for s,e in poslist: + leftdollar = newstring[:s].rfind("$") + leftbracket = leftdollar-1 + lb = newstring[leftbracket] + if lb in ["[","("]: #如果上一个$前面是括号, 就交换这一对相应的$符号和括号 + print("$"+lb+newstring[leftbracket+2:e-2] + ")$") + newstring = newstring[:leftbracket] + "$"+lb+newstring[leftbracket+2:e-2] + ")$" + newstring[e:] + matches = re.finditer(r"\(\$-\\infty",newstring) + poslist = [(match.start(),match.end()) for match in matches] + poslist.reverse() #从后往前逐一更改 + for s,e in poslist: + print(s,e) + rightdollar = newstring[e:].find("$")+e + rightbracket = rightdollar+1 + rb = newstring[rightbracket] + if rb in ["]",")"]: + print("$("+newstring[s+2:rightbracket-1]+rb+"$") + newstring = newstring[:s]+"$("+newstring[s+2:rightbracket-1]+rb+"$"+newstring[rightbracket+1:] + newstring = newstring.replace("($-\\infty$, $+\\infty$)","$(-\\infty, +\\infty)$") + return newstring + def RefineChineseComma(string): #顿号如果在数学环境中, 则在两侧加上$符号 CommaPositions = [match.start() for match in re.finditer("、",string)] CommaPositions.reverse()