Ejemplo n.º 1
0

accent = Group( Combine(bslash + accent) + Optional(lbrace) + symbol + Optional(rbrace)).setParseAction(handler.accent).setName("accent")


symgroup = font ^ group ^ symbol 

subscript << Group( Optional(symgroup) + Literal('_') + symgroup  )
superscript << Group( Optional(symgroup) + Literal('^') + symgroup  )
subsuperscript << Group( symgroup + Literal('_') + symgroup + Literal('^') + symgroup  )

font << Group( Combine(bslash + fontname) + group)



expression = OneOrMore(
    space ^ font ^ accent ^ symbol ^ subscript ^ superscript ^ subsuperscript ^ group ^ composite  ).setParseAction(handler.expression).setName("expression")
#~ expression = OneOrMore(
    #~ group | composite | space | font | subsuperscript | subscript | superscript | symbol ).setParseAction(handler.expression).setName("expression")

####




def math_parse_s_ft2font(s, dpi, fontsize, angle=0):
    """
    Parse the math expression s, return the (bbox, fonts) tuple needed
    to render it.

    fontsize must be in points
Ejemplo n.º 2
0
#~ symbol = (texsym ^ char ^ binop ^ relation ^ punctuation ^ misc ^ grouping  ).setParseAction(handler.symbol).leaveWhitespace()
_symbol = (texsym | char | binop | relation | punctuation | misc
           | grouping).setParseAction(handler.symbol).leaveWhitespace()

subscript = Forward().setParseAction(handler.subscript).setName("subscript")
superscript = Forward().setParseAction(
    handler.superscript).setName("superscript")
subsuperscript = Forward().setParseAction(
    handler.subsuperscript).setName("subsuperscript")

font = Forward().setParseAction(handler.font).setName("font")

accent = Group(
    Combine(bslash + accent) + Optional(lbrace) + symbol +
    Optional(rbrace)).setParseAction(handler.accent).setName("accent")
group = Group(lbrace + OneOrMore(symbol ^ subscript ^ superscript
                                 ^ subsuperscript ^ space ^ font ^ accent) +
              rbrace).setParseAction(handler.group).setName("group")
#~ group = Group( lbrace + OneOrMore(subsuperscript | subscript | superscript | symbol | space ) + rbrace).setParseAction(handler.group).setName("group")

#composite = Group( Combine(bslash + composite) + lbrace + symbol + rbrace + lbrace + symbol + rbrace).setParseAction(handler.composite).setName("composite")
#~ composite = Group( Combine(bslash + composite) + group + group).setParseAction(handler.composite).setName("composite")
composite = Group(Combine(bslash + overUnder) + group + group).setParseAction(
    handler.composite).setName("composite")

symgroup = font | group | symbol

subscript << Group(Optional(symgroup) + Literal('_') + symgroup)
superscript << Group(Optional(symgroup) + Literal('^') + symgroup)
subsuperscript << Group(symgroup + Literal('_') + symgroup + Literal('^') +
                        symgroup)