10
0
mirror of https://github.com/LCPQ/QUESTDB_website.git synced 2024-10-02 06:20:58 +02:00

Update the fromXLSToLaTeX format to correctly handle double

This commit is contained in:
Mickaël Véril 2021-10-30 16:59:14 +02:00 committed by Anthony Scemama
parent 2d8ed7b9f7
commit 7fe13a7600
2 changed files with 67 additions and 45 deletions

View File

@ -9,7 +9,7 @@ class dfbOptions(object):
self.format="line"
self.suffix=None
self.initialStates=defaultdict(lambda : state(1,1,"A_1"))
self.isDouble=False
@staticmethod
def readFromEnv(lateEnv):
dfb_Opt=dfbOptions()
@ -42,4 +42,20 @@ class dfbOptions(object):
else:
mystate=state.fromString("1 "+vRArgs[0])
dfb_Opt.initialStates[vOArgs[0]]=mystate
return dfb_Opt
dfbIsDouble=lateEnv.isDouble
if dfbIsDouble!=None:
dfbIsDouble=dfbIsDouble.expr
if type(dfbIsDouble) is TexCmd:
if len(dfbIsDouble.args)==0:
dfb_Opt.isDouble = True
elif len(dfbIsDouble.args)==1 and dfbIsDouble.args[0].type=="optional":
isDoubleStr=dfbIsDouble.args[0].value
if isDoubleStr == "true":
dfb_Opt.isDouble = True
elif isDoubleStr == "false":
isDouble = False
else:
raise ValueError("\isDouble must be 'true' or 'false'.")
else:
raise ValueError("Arguments error on '\isDouble'. Only one optional argument is supported.")
return dfb_Opt

View File

@ -6,50 +6,56 @@ from ...LaTeX import newCommand,extractMath
import numpy as np
import json
import itertools
def GetTypeFromAcronym(acronym):
acroDict={
"npi":r"n \rightarrow \pi^\star",
"ppi":r"\pi \rightarrow \pi^\star",
"n3s":r"n \rightarrow 3s",
"n3p":r"n \rightarrow 3p",
"dou":"double",
"p3s":r"\pi \rightarrow 3s",
"p3p":r"\pi \rightarrow 3p",
"spi":r"\sigma \rightarrow \pi^\star",
"CT":r"CT",
"non-d":None,
"n.d.":None
}
try:
return acroDict[acronym]
except KeyError as ex:
raise ValueError(f"Unrecognized acronym: {acronym}") from ex
def GetFullState(TexState,defaultDatatype=DataType.ABS,VR=None,typeAcronym=None,Soup=True):
datatype=defaultDatatype
lst=list(TexState)
if len(lst)>1 and lst[1].value=="F":
datatype=DataType.FLUO
statemath=str(list(lst[0].contents)[0])
resultstr=statemath
fulltype=[]
if datatype==DataType.FLUO:
resultstr+=r"[\mathrm{F}]"
if VR!=None:
fulltype.append(r"\mathrm{"+VR+"}")
if typeAcronym!=None:
_type=GetTypeFromAcronym(typeAcronym)
if _type!=None:
fulltype.append(_type)
if len(fulltype)>0:
resultstr+=" ("+";".join(fulltype)+")"
resultstr="$"+resultstr+"$"
if Soup:
return TexSoup(resultstr)
else:
return resultstr
@formatName("fromXLSToLaTeX")
class fromXLSToLaTeXHandler(formatHandlerBase):
def GetTypeFromAcronym(self,acronym):
ra = r'\rightarrow'
acroDict={
"npi":rf'n {ra} \pi^\star',
"ppi":rf'\pi {ra} \pi^\star',
"n3s":rf'n {ra} 3s',
"n3p":rf'n {ra} 3p',
"dou":"double",
"p3s":rf'\pi {ra} 3s',
"p3p":rf'\pi {ra} 3p',
"spi":rf'\sigma {ra} \pi^\star',
"CT":r'CT',
"non-d":None,
"n.d.":None
}
try:
value = acroDict[acronym]
if self.TexOps.isDouble and ra in value:
lr = [i.strip() for i in value.split(ra)]
return f'{lr[0]},{lr[0]} {ra} {lr[1]},{lr[1]}'
else:
return value
except KeyError as ex:
raise ValueError(f"Unrecognized acronym: {acronym}") from ex
def GetFullState(self,TexState,defaultDatatype=DataType.ABS,VR=None,typeAcronym=None,Soup=True):
datatype=defaultDatatype
lst=list(TexState)
if len(lst)>1 and lst[1].value=="F":
datatype=DataType.FLUO
statemath=str(list(lst[0].contents)[0])
resultstr=statemath
fulltype=[]
if datatype==DataType.FLUO:
resultstr+=r"[\mathrm{F}]"
if VR!=None:
fulltype.append(r"\mathrm{"+VR+"}")
if typeAcronym!=None:
_type=self.GetTypeFromAcronym(typeAcronym)
if _type!=None:
fulltype.append(_type)
if len(fulltype)>0:
resultstr+=" ("+";".join(fulltype)+")"
resultstr="$"+resultstr+"$"
if Soup:
return TexSoup(resultstr)
else:
return resultstr
def readFromTable(self,table):
datalist=list()
subtablesRange=getSubtablesRange(table,firstindex=1,column=1)
@ -77,7 +83,7 @@ class fromXLSToLaTeXHandler(formatHandlerBase):
methodname=str(methtex)
mymethod=method(methodname,basis)
methkey=json.dumps(mymethod.__dict__)
mathstates=[GetFullState(table[i,4],VR=str(table[i,6]),typeAcronym=str(table[i,7]),Soup=True) for i in myrange]
mathstates=[self.GetFullState(table[i,4],VR=str(table[i,6]),typeAcronym=str(table[i,7]),Soup=True) for i in myrange]
finsts=dataFileBase.convertState(mathstates,initialState,default=self.TexOps.defaultType,commands=self.Commands)
for index,cell in enumerate(col[myrange]):
if str(cell)!="":