Nantes Université

Skip to content
Extraits de code Groupes Projets
Valider 2261b047 rédigé par Richard Zanibbi's avatar Richard Zanibbi
Parcourir les fichiers

Modified lg2txt.py to support mapping arbitrary symbols with certain...

Modified lg2txt.py to support mapping arbitrary symbols with certain relationships; updated mathMLMap.csv mapping file.
parent a29fbb58
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -249,6 +249,7 @@ class Lg(object):
sstring = ''
for nstring in nlist:
sstring = sstring + nstring
sstring += "\n"
for estring in elist:
sstring = sstring + estring
......
......@@ -69,7 +69,7 @@ def readMapFile(fileName):
def translateStructure( lg, label, nodeRelationPairs, structureMap,\
segPrimMap, edgeMap, symbolMap, segId):
segPrimMap, edgeMap, symbolMap, segId, nodeString):
"""Generate a string for a given structure."""
strString = ""
byValue = lambda pair: pair[1]
......@@ -89,6 +89,8 @@ def translateStructure( lg, label, nodeRelationPairs, structureMap,\
# Obtain the replacement, provided as an ordered sequence of
# regions, giving the order in which to map subregions.
key = tuple(queryList)
anyKey = tuple(['ANY'] + queryList[1:])
#print("key: " + str(key))
#print(structureMap.keys())
if key in structureMap.keys():
......@@ -114,6 +116,37 @@ def translateStructure( lg, label, nodeRelationPairs, structureMap,\
if not match:
strString += replacementTuple[i].replace('_I_','\"' + \
primListString + '\"')
# HACK!!! Copying and modifying above conditional branch.
elif anyKey in structureMap.keys():
replacementTuple = structureMap[ anyKey ]
#print("replacement: " + str(replacementTuple))
# Find the node that matches each relation in the passed list,
# and generate the appropriate string.
for i in range(0,len(replacementTuple)):
nextRelation = replacementTuple[ i ]
match = False
for j in range(0,len(nodeRelationPairs)):
(childId, relation) = nodeRelationPairs[j]
if relation == nextRelation:
strString += translate(lg, childId, segPrimMap,\
edgeMap, symbolMap, structureMap)
match = True
break
elif nextRelation == 'PARENT':
strString += nodeString
match = True
break
# RZ, Jan 2013: allow other tags to be inserted (e.g. at end);
# add primitive ids as identifier for symbols with multiple
# subregions (e.g. fractions, roots)
if not match:
strString += replacementTuple[i].replace('_I_','\"' + \
primListString + '\"')
return strString
......@@ -209,13 +242,13 @@ def translate(lg, segId, segPrimMap, edgeMap, symbolMap, structureMap):
# CASE 1: all relations other than HOR/R are in a structure.
strString = translateStructure(lg, label, nodeRelationPairs, structureMap,\
segPrimMap, edgeMap, symbolMap, segId)
segPrimMap, edgeMap, symbolMap, segId, nodeString)
if not strString == "":
nodeString = strString
else:
# CASE 2: only non-SUP/SUB relations are in a structure.
strString = translateStructure(lg, label, noSubSupPairs, structureMap,\
segPrimMap, edgeMap, symbolMap, segId)
segPrimMap, edgeMap, symbolMap, segId, nodeString)
if not strString == "":
nodeString = strString
for (nextChildId, relation) in sorted(subSupPairs, key=byValue):
......@@ -230,18 +263,12 @@ def translate(lg, segId, segPrimMap, edgeMap, symbolMap, structureMap):
nodeString = translateRelation(lg, (relation, nextChildId),\
structureMap, segPrimMap, edgeMap, symbolMap, nodeString)
#nodeString += translateRelation(lg, (relation, nextChildId),\
# structureMap, segPrimMap, edgeMap, symbolMap)
# Lastly, generate string for adjacent symbols on the baseline.
# **if there are multiple 'HOR' symbols all will be mapped.
for (child, relation) in horRelation:
nodeString = translateRelation(lg, (relation, child),\
structureMap, segPrimMap, edgeMap, symbolMap, nodeString)
#nodeString += translateRelation(lg, (relation, child),\
# structureMap, segPrimMap, edgeMap, symbolMap )
return nodeString
def main():
......
......@@ -209,6 +209,7 @@ gt,->,<mo xml:id=_I_>\gt</mo>
# Punctuation and Elipsis
# NOTE: COMMA symbol id, and quoting used to avoid problems with using ','
COMMA,->,"<mo xml:id=_I_>,</mo>"
",",->,"<mo xml:id=_I_>,</mo>"
.,->,<mo xml:id=_I_>.</mo>
dot,->,<mo xml:id=_I_>.</mo>
cdot,->,<mo xml:id=_I_>.</mo>
......@@ -296,30 +297,16 @@ sqrt,CONTAINS,ABOVE,->,<mroot xml:id=_I_>,CONTAINS,A,</mroot>
\sqrt,CONTAINS,A,->,<mroot xml:id=_I_>,CONTAINS,A,</mroot>
\sqrt,CONTAINS,ABOVE,->,<mroot xml:id=_I_>,CONTAINS,A,</mroot>
#\int,SUP,SUB,->,<msubsup><mo xml:id=_I_>\int</mo>,SUB,SUP,</msubsup>
\int,A,B,->,<munderover><mo xml:id=_I_>\int</mo>,B,A,</munderover>
\int,ABOVE,BELOW,->,<munderover><mo xml:id=_I_>\int</mo>,B,A,</munderover>
\int,BELOW,ABOVE,->,<munderover><mo xml:id=_I_>\int</mo>,B,A,</munderover>
\sum,SUP,SUB,->,<msubsup><mo xml:id=_I_>\sum</mo>,SUB,SUP,</msubsup>
\sum,SUPER,SUBSC,->,<msubsup><mo xml:id=_I_>\sum</mo>,SUB,SUP,</msubsup>
\sum,Sup,Sub,->,<msubsup><mo xml:id=_I_>\sum</mo>,Sub,Sup,</msubsup>
\sum,A,B,->,<munderover><mo xml:id=_I_>\sum</mo>,B,A,</munderover>
\sum,ABOVE,BELOW,->,<munderover><mo xml:id=_I_>\sum</mo>,B,A,</munderover>
Integral,A,B,->,<munderover><mo xml:id=_I_>\int</mo>,B,A,</munderover>
Integral,ABOVE,BELOW,->,<munderover><mo xml:id=_I_>\int</mo>,ABOVE,BELOW,</munderover>
Integral,SUBSC,SUPER,->,<munderover><mo xml:id=_I_>\int</mo>,SUBSC,SUPER,</munderover>
Sigma,SUP,SUB,->,<msubsup><mo xml:id=_I_>\sum</mo>,SUB,SUP,</msubsup>
Sigma,SUPER,SUBSC,->,<msubsup><mo xml:id=_I_>\sum</mo>,SUB,SUP,</msubsup>
Sigma,Sup,Sub,->,<msubsup><mo xml:id=_I_>\sum</mo>,Sub,Sup,</msubsup>
Sigma,A,B,->,<munderover><mo xml:id=_I_>\sum</mo>,B,A,</munderover>
Sigma,ABOVE,BELOW,->,<munderover><mo xml:id=_I_>\sum</mo>,B,A,</munderover>
-,A,B,->,<mfrac xml:id=_I_>,A,B,</mfrac>
-,ABOVE,BELOW,->,<mfrac xml:id=_I_>,ABOVE,BELOW,</mfrac>
horizontal-line,ABOVE,BELOW,->,<mfrac xml:id=_I_>,ABOVE,BELOW,</mfrac>
ANY,A,B,->,<munderover>,PARENT,B,A,</munderover>
ANY,ABOVE,BELOW,->,<munderover>,PARENT,BELOW,ABOVE,</munderover>
ANY,Sub,Sup,->,<msubsup>,PARENT,Sub,Sup,</msubsup>
ANY,SUB,SUP,->,<msubsup>,PARENT,SUB,SUP,</msubsup>
ANY,SUBSC,SUPER,->,<msubsup>,PARENT,SUBSC,SUPER,</msubsup>
R,->,<mrow>,PARENT,CHILD,</mrow>
r,->,<mrow>,PARENT,CHILD,</mrow>
HOR,->,<mrow>,PARENT,CHILD,</mrow>
......@@ -333,24 +320,20 @@ SUP,->,<msup>,PARENT,CHILD,</msup>
Sup,->,<msup>,PARENT,CHILD,</msup>
sup,->,<msup>,PARENT,CHILD,</msup>
SUPER,->,<msup>,PARENT,CHILD,</msup>
A,->,<munder>,CHILD,PARENT,</munder>
ABOVE,->,<munder>,CHILD,PARENT,</munder>
a,->,<munder>,CHILD,PARENT,</munder>
B,->,<munder>,PARENT,CHILD,</munder>
BELOW,->,<munder>,PARENT,CHILD,</munder>
b,->,<munder>,PARENT,CHILD,</munder>
REL_DEFAULT,->,<mrow>,PARENT,CHILD,</mrow>
# This can work, but causes parse failure for CROHMELib tools.
#REL_DEFAULT,->,<mrow REL_ERROR=_L_>,PARENT,CHILD,</mrow>
# Accents
# ?? Overline handlined by 'below' mapping above for simplicity
#\overline,->,
# REMOVED from 'whitelist' of CROHME 2013 LaTeX symbols (formatting tags):
#\left,->,
#\right,->,
......
# For latex symbols, both versions with an initial backslash (\) and without
# are included in the symbol mapping table below.
#
# SYNONYMNS for SYMBOL NAMES:
#
# Note that some symbols have synonymns - these are being
# mapped to a single output representation:
# - <, \lt, \langle
# - Integral, \int
# - Sigma, \sum
SYMBOLS
# Letters
a,->,<mi xml:id=_I_>a</mi>
b,->,<mi xml:id=_I_>b</mi>
c,->,<mi xml:id=_I_>c</mi>
d,->,<mi xml:id=_I_>d</mi>
e,->,<mi xml:id=_I_>e</mi>
f,->,<mi xml:id=_I_>f</mi>
g,->,<mi xml:id=_I_>g</mi>
h,->,<mi xml:id=_I_>h</mi>
i,->,<mi xml:id=_I_>i</mi>
j,->,<mi xml:id=_I_>j</mi>
k,->,<mi xml:id=_I_>k</mi>
l,->,<mi xml:id=_I_>l</mi>
m,->,<mi xml:id=_I_>m</mi>
n,->,<mi xml:id=_I_>n</mi>
o,->,<mi xml:id=_I_>o</mi>
p,->,<mi xml:id=_I_>p</mi>
q,->,<mi xml:id=_I_>q</mi>
r,->,<mi xml:id=_I_>r</mi>
s,->,<mi xml:id=_I_>s</mi>
t,->,<mi xml:id=_I_>t</mi>
u,->,<mi xml:id=_I_>u</mi>
v,->,<mi xml:id=_I_>v</mi>
w,->,<mi xml:id=_I_>w</mi>
x,->,<mi xml:id=_I_>x</mi>
y,->,<mi xml:id=_I_>y</mi>
z,->,<mi xml:id=_I_>z</mi>
A,->,<mi xml:id=_I_>A</mi>
B,->,<mi xml:id=_I_>B</mi>
C,->,<mi xml:id=_I_>C</mi>
# NOTE: D is not included in CROHME 2013.
#D,->,<mi xml:id=_I_>D</mi>
E,->,<mi xml:id=_I_>E</mi>
F,->,<mi xml:id=_I_>F</mi>
G,->,<mi xml:id=_I_>G</mi>
H,->,<mi xml:id=_I_>H</mi>
I,->,<mi xml:id=_I_>I</mi>
# NOTE: J, K are not included in CROHME 2013.
L,->,<mi xml:id=_I_>L</mi>
M,->,<mi xml:id=_I_>M</mi>
N,->,<mi xml:id=_I_>N</mi>
P,->,<mi xml:id=_I_>P</mi>
# NOTE: Q is not included in CROHME 2013.
R,->,<mi xml:id=_I_>R</mi>
S,->,<mi xml:id=_I_>S</mi>
T,->,<mi xml:id=_I_>T</mi>
# NOTE: U is not inclided in CROHME 2013
#U,->,<mi xml:id=_I_>U</mi>
V,->,<mi xml:id=_I_>V</mi>
# NOTE: W is not included in CROHME 2013
#W,->,<mi xml:id=_I_>W</mi>
X,->,<mi xml:id=_I_>X</mi>
Y,->,<mi xml:id=_I_>Y</mi>
# NOTE: Z is not included in CROHME 2013
# Digits
0,->,<mn xml:id=_I_>0</mn>
1,->,<mn xml:id=_I_>1</mn>
2,->,<mn xml:id=_I_>2</mn>
3,->,<mn xml:id=_I_>3</mn>
4,->,<mn xml:id=_I_>4</mn>
5,->,<mn xml:id=_I_>5</mn>
6,->,<mn xml:id=_I_>6</mn>
7,->,<mn xml:id=_I_>7</mn>
8,->,<mn xml:id=_I_>8</mn>
9,->,<mn xml:id=_I_>9</mn>
# Greek Letters
\alpha,->,<mi xml:id=_I_>\alpha</mi>
\beta,->,<mi xml:id=_I_>\beta</mi>
\gamma,->,<mi xml:id=_I_>\gamma</mi>
\lambda,->,<mi xml:id=_I_>\lambda</mi>
\omega,->,<mi xml:id=_I_>\omega</mi>
\phi,->,<mi xml:id=_I_>\phi</mi>
# **Mapping upper and lower case pi to lower case.
\pi,->,<mi xml:id=_I_>\pi</mi>
\Pi,->,<mi xml:id=_I_>\pi</,mi>
\theta,->,<mi xml:id=_I_>\theta</mi>
\sigma,->,<mi xml:id=_I_>\sigma</mi>
\mu,->,<mi xml:id=_I_>\mu</mi>
\Delta,->,<mi xml:id=_I_>\Delta</mi>
alpha,->,<mi xml:id=_I_>\alpha</mi>
beta,->,<mi xml:id=_I_>\beta</mi>
gamma,->,<mi xml:id=_I_>\gamma</mi>
lambda,->,<mi xml:id=_I_>\lambda</mi>
omega,->,<mi xml:id=_I_>\omega</mi>
phi,->,<mi xml:id=_I_>\phi</mi>
pi,->,<mi xml:id=_I_>\pi</mi>
Pi,->,<mi xml:id=_I_>\pi</mi>
# NOTE: tau, psi, epsilon, Pi are not in CROHME 2013
#tau,->,<mi xml:id=_I_>\tau</mi>
#psi,->,<mi xml:id=_I_>\psi</mi>
#epsilon,->,<mi xml:id=_I_>\epsilon</mi>
#Pi,->,<mi xml:id=_I_>\Pi</mi>
theta,->,<mi xml:id=_I_>\theta</mi>
#Theta,->,<mi xml:id=_I_>\theta</mi>
sigma,->,<mi xml:id=_I_>\sigma</mi>
mu,->,<mi xml:id=_I_>\mu</mi>
Delta,->,<mi xml:id=_I_>\Delta</mi>
# Other quantities/spaces
\infty,->,<mi xml:id=_I_>\infty</mi>
infin,->,<mi xml:id=_I_>\infty</mi>
infinity,->,<mi xml:id=_I_>\infty</mi>
\Real,->,<mi xml:id=_I_>\Real</mi>
infty,->,<mi xml:id=_I_>\infty</mi>
Real,->,<mi xml:id=_I_>\Real</mi>
# Arithmetic Operators
+,->,<mo xml:id=_I_>+</mo>
-,->,<mo xml:id=_I_>-</mo>
horizontal-line,->,<mo xml:id=_I_>-</mo>
\pm,->,<mo xml:id=_I_>\pm</mo>
\div,->,<mo xml:id=_I_>\div</mo>
!,->,<mo xml:id=_I_>!</mo>
\times,->,<mo xml:id=_I_>\times</mo>
/,->,<mo xml:id=_I_>/</mo>
\ast,->,<mo xml:id=_I_>\ast</mo>
plus,->,<mo xml:id=_I_>+</mo>
minus,->,<mo xml:id=_I_>-</mo>
pm,->,<mo xml:id=_I_>\pm</mo>
div,->,<mo xml:id=_I_>\div</mo>
# **Disinguish 'times' from X? [Not initially.]
times,->,<mo xml:id=_I_>\times</mo>
ast,->,<mo xml:id=_I_>\ast</mo>
# Logical Operators
\wedge,->,<mo xml:id=_I_>\wedge</mo>
\vee,->,<mo xml:id=_I_>\vee</mo>
\rightarrow,->,<mo xml:id=_I_>\rightarrow</mo>
\supset,->,<mo xml:id=_I_>\supset</mo>
\subset,->,<mo xml:id=_I_>\subset</mo>
|,->,<mo xml:id=_I_>|</mo>
\forall,->,<mo xml:id=_I_>\forall</mo>
\exists,->,<mo xml:id=_I_>\exists</mo>
wedge,->,<mo xml:id=_I_>\wedge</mo>
vee,->,<mo xml:id=_I_>\vee</mo>
rightarrow,->,<mo xml:id=_I_>\rightarrow</mo>
supset,->,<mo xml:id=_I_>\supset</mo>
subset,->,<mo xml:id=_I_>\subset</mo>
forall,->,<mo xml:id=_I_>\forall</mo>
exists,->,<mo xml:id=_I_>\exists</mo>
# Misc
prime,->,<mo xml:id=_I_>\'</mo>
\',->,<mo xml:id=_I_>\'</mo>
# Calculus
\partial,->,<mo xml:id=_I_>\partial</mo>
partial,->,<mo xml:id=_I_>\partial</mo>
# Set operations
\cup,->,<mo xml:id=_I_>\cup</mo>
\cap,->,<mo xml:id=_I_>\cap</mo>
\in,->,<mo xml:id=_I_>\in</mo>
cup,->,<mo xml:id=_I_>\cup</mo>
cap,->,<mo xml:id=_I_>\cap</mo>
in,->,<mo xml:id=_I_>\in</mo>
# Functions and Relations
\log,->,<mi xml:id=_I_>\log</mi>
\sin,->,<mi xml:id=_I_>\sin</mi>
\cos,->,<mi xml:id=_I_>\cos</mi>
\tan,->,<mi xml:id=_I_>\tan</mi>
\neq,->,<mi xml:id=_I_>\neq</mi>
\leq,->,<mi xml:id=_I_>\leq</mi>
\geq,->,<mi xml:id=_I_>\geq</mi>
=,->,<mo xml:id=_I_>=</mo>
equals,->,<mo xml:id=_I_>=</mo>
# !! Note: we have synonymns here; mapping to same MathML objects.
<,->,<mo xml:id=_I_>\lt</mo>
>,->,<mo xml:id=_I_>\gt</mo>
\lt,->,<mo xml:id=_I_>\lt</mo>
&lt;,->,<mo xml:id=_I_>\lt</mo>
\gt,->,<mo xml:id=_I_>\gt</mo>
&gt;,->,<mo xml:id=_I_>\gt</mo>
log,->,<mi xml:id=_I_>\log</mi>
sin,->,<mi xml:id=_I_>\sin</mi>
cos,->,<mi xml:id=_I_>\cos</mi>
tan,->,<mi xml:id=_I_>\tan</mi>
eq,->,<mo xml:id=_I_>=</mo>
neq,->,<mi xml:id=_I_>\neq</mi>
leq,->,<mi xml:id=_I_>\leq</mi>
geq,->,<mi xml:id=_I_>\geq</mi>
lt,->,<mo xml:id=_I_>\lt</mo>
gt,->,<mo xml:id=_I_>\gt</mo>
# Punctuation and Elipsis
# NOTE: COMMA symbol id, and quoting used to avoid problems with using ','
COMMA,->,"<mo xml:id=_I_>,</mo>"
.,->,<mo xml:id=_I_>.</mo>
dot,->,<mo xml:id=_I_>.</mo>
cdot,->,<mo xml:id=_I_>.</mo>
ctdot,->,<mo xml:id=_I_>.</mo>
\cdot,->,<mo xml:id=_I_>.</mo>
\ldots,->,<mo xml:id=_I_>\ldots</mo>
\cdots,->,<mo xml:id=_I_>\cdots</mo>
ldots,->,<mo xml:id=_I_>\ldots</mo>
cdots,->,<mo xml:id=_I_>\cdots</mo>
# Fence symbols (square and angle brackets, parentheses, braces)
(,->,<mo xml:id=_I_>(</mo>
\(,->,<mo xml:id=_I_>(</mo>
lparen,->,<mo xml:id=_I_>(</mo>
left-paren,->,<mo xml:id=_I_>(</mo>
),->,<mo xml:id=_I_>)</mo>
\),->,<mo xml:id=_I_>)</mo>
rparen,->,<mo xml:id=_I_>)</mo>
right-paren,->,<mo xml:id=_I_>)</mo>
\{,->,<mo xml:id=_I_>\{</mo>
\},->,<mo xml:id=_I_>\}</mo>
{,->,<mo xml:id=_I_>\}</mo>
},->,<mo xml:id=_I_>\}</mo>
[,->,<mo xml:id=_I_>[</mo>
\[,->,<mo xml:id=_I_>[</mo>
lbracket,->,<mo xml:id=_I_>[</mo>
left-bracket,->,<mo xml:id=_I_>[</mo>
],->,<mo xml:id=_I_>]</mo>
\],->,<mo xml:id=_I_>]</mo>
rbracket,->,<mo xml:id=_I_>]</mo>
right-bracket,->,<mo xml:id=_I_>]</mo>
# **Distinguishing from < and > ? [Not initially (RZ)]
\langle,->,<mo xml:id=_I_>\lt</mo>
\rangle,->,<mo xml:id=_I_>\gt</mo>
# Operators with optional limits
\sum,->,<mo xml:id=_I_>\sum</mo>
\int,->,<mo xml:id=_I_>\int</mo>
\lim,->,<mi xml:id=_I_>\lim</mi>
sum,->,<mo xml:id=_I_>\sum</mo>
int,->,<mo xml:id=_I_>\int</mo>
lim,->,<mi xml:id=_I_>\lim</mi>
# RZ: Addition (March 13)
Sigma,->,<mo xml:id=_I_>\sum</mo>
Integral,->,<mo xml:id=_I_>\int</mo>
integral,->,<mo xml:id=_I_>\int</mo>
# ?? Treating prime (e.g. ' in a') as superscript relative to base.
\prime,->,<mo xml:id=_I_>\prime</mo>
prime,->,<mo xml:id=_I_>\prime</mo>
',->,<mo xml:id=_I_>\prime</mo>
# Empty square root.
\sqrt,->,<msqrt xml:id=_I_></msqrt>
sqrt,->,<msqrt xml:id=_I_></msqrt>
# Treat symbol by default as an identifier (_L_ holds symbol label).
OBJ_DEFAULT,->,<mi xml:id=_I_>_L_</mi>
STRUCTURE
# Need to define unique set of labels for the competition.
sqrt,I,->,<msqrt xml:id=_I_>,I,</msqrt>
sqrt,C,->,<msqrt xml:id=_I_>,C,</msqrt>
sqrt,CONTAINS,->,<msqrt xml:id=_I_>,CONTAINS,</msqrt>
\sqrt,I,->,<msqrt xml:id=_I_>,I,</msqrt>
\sqrt,C,->,<msqrt xml:id=_I_>,C,</msqrt>
\sqrt,CONTAINS,->,<msqrt xml:id=_I_>,CONTAINS,</msqrt>
# RZ: Addition for nth-roots (e.g. cube roots, March 25)
sqrt,I,A,->,<mroot xml:id=_I_>,I,A,</mroot>
sqrt,C,A,->,<mroot xml:id=_I_>,C,A,</mroot>
sqrt,CONTAINS,A,->,<mroot xml:id=_I_>,CONTAINS,A,</mroot>
sqrt,CONTAINS,ABOVE,->,<mroot xml:id=_I_>,CONTAINS,A,</mroot>
\sqrt,I,A,->,<mroot xml:id=_I_>,I,A,</mroot>
\sqrt,C,A,->,<mroot xml:id=_I_>,C,A,</mroot>
\sqrt,CONTAINS,A,->,<mroot xml:id=_I_>,CONTAINS,A,</mroot>
\sqrt,CONTAINS,ABOVE,->,<mroot xml:id=_I_>,CONTAINS,A,</mroot>
#\int,SUP,SUB,->,<msubsup><mo xml:id=_I_>\int</mo>,SUB,SUP,</msubsup>
\int,A,B,->,<munderover><mo xml:id=_I_>\int</mo>,B,A,</munderover>
\int,ABOVE,BELOW,->,<munderover><mo xml:id=_I_>\int</mo>,B,A,</munderover>
\int,Sub,Sup,->,<msubsup><mo xml:id=_I_>\int</mo>,Sub,Sup,</msubsup>
\sum,SUP,SUB,->,<msubsup><mo xml:id=_I_>\sum</mo>,SUB,SUP,</msubsup>
\sum,SUPER,SUBSC,->,<msubsup><mo xml:id=_I_>\sum</mo>,SUB,SUP,</msubsup>
\sum,Sub,Sup,->,<msubsup><mo xml:id=_I_>\sum</mo>,Sub,Sup,</msubsup>
\sum,A,B,->,<munderover><mo xml:id=_I_>\sum</mo>,B,A,</munderover>
\sum,ABOVE,BELOW,->,<munderover><mo xml:id=_I_>\sum</mo>,B,A,</munderover>
\int,Sub,Sup,->,<msubsup><mo xml:id=_I_>\int</mo>,Sub,Sup,</msubsup>
Integral,A,B,->,<munderover><mo xml:id=_I_>\int</mo>,B,A,</munderover>
Integral,ABOVE,BELOW,->,<munderover><mo xml:id=_I_>\int</mo>,ABOVE,BELOW,</munderover>
Integral,SUBSC,SUPER,->,<munderover><mo xml:id=_I_>\int</mo>,SUBSC,SUPER,</munderover>
Sigma,SUP,SUB,->,<msubsup><mo xml:id=_I_>\sum</mo>,SUB,SUP,</msubsup>
Sigma,SUPER,SUBSC,->,<msubsup><mo xml:id=_I_>\sum</mo>,SUB,SUP,</msubsup>
Sigma,Sup,Sub,->,<msubsup><mo xml:id=_I_>\sum</mo>,Sub,Sup,</msubsup>
Sigma,A,B,->,<munderover><mo xml:id=_I_>\sum</mo>,B,A,</munderover>
Sigma,ABOVE,BELOW,->,<munderover><mo xml:id=_I_>\sum</mo>,B,A,</munderover>
-,A,B,->,<mfrac xml:id=_I_>,A,B,</mfrac>
-,ABOVE,BELOW,->,<mfrac xml:id=_I_>,ABOVE,BELOW,</mfrac>
horizontal-line,ABOVE,BELOW,->,<mfrac xml:id=_I_>,ABOVE,BELOW,</mfrac>
R,->,<mrow>,PARENT,CHILD,</mrow>
r,->,<mrow>,PARENT,CHILD,</mrow>
HOR,->,<mrow>,PARENT,CHILD,</mrow>
^,->,<msup>,PARENT,CHILD,</msup>
_,->,<msub>,PARENT,CHILD,</msub>
SUB,->,<msub>,PARENT,CHILD,</msub>
Sub,->,<msub>,PARENT,CHILD,</msub>
sub,->,<msub>,PARENT,CHILD,</msub>
SUBSC,->,<msub>,PARENT,CHILD,</msub>
SUP,->,<msup>,PARENT,CHILD,</msup>
Sup,->,<msup>,PARENT,CHILD,</msup>
sup,->,<msup>,PARENT,CHILD,</msup>
SUPER,->,<msup>,PARENT,CHILD,</msup>
A,->,<munder>,CHILD,PARENT,</munder>
ABOVE,->,<munder>,CHILD,PARENT,</munder>
a,->,<munder>,CHILD,PARENT,</munder>
B,->,<munder>,PARENT,CHILD,</munder>
BELOW,->,<munder>,PARENT,CHILD,</munder>
b,->,<munder>,PARENT,CHILD,</munder>
REL_DEFAULT,->,<mrow>,PARENT,CHILD,</mrow>
# Accents
# ?? Overline handlined by 'below' mapping above for simplicity
#\overline,->,
# REMOVED from 'whitelist' of CROHME 2013 LaTeX symbols (formatting tags):
#\left,->,
#\right,->,
#\mathrm,->,
#\mbox,->,
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter