Esempio n. 1
0
 def postTokenize(self, ast, page, meta, reader):  #pylint: disable=unused-argument
     if ast.is_root:
         shortcuts = self.get('shortcuts', dict())
         for key, value in shortcuts.iteritems():
             if isinstance(value, dict):
                 for k, v in value.iteritems():
                     core.Shortcut(ast,
                                   key=unicode(k),
                                   link=unicode(v),
                                   string=unicode(k))
             else:
                 core.Shortcut(ast,
                               key=unicode(key),
                               link=unicode(value),
                               string=unicode(key))
Esempio n. 2
0
 def postTokenize(self, ast, page, meta, reader):
     count = 0
     func = lambda n: (n.name == 'LatexBlockEquation') and n['numbered']
     for node in anytree.PreOrderIter(ast, filter_=func):
         count += 1
         node.set('number', count)
         if node['label']:
             core.Shortcut(ast,
                           key=node['label'],
                           string='{} ({})'.format(self.get('prefix'), count),
                           link=u'#{}'.format(node['bookmark']))
Esempio n. 3
0
def create_float(parent, extension, reader, page, settings, **kwargs):
    """Helper for optionally creating a float based on the existence of caption and/or id."""
    cap = _add_caption(None, extension, reader, page, settings)
    if cap:
        flt = Float(parent, **kwargs)
        cap.parent = flt
        key = cap.get('key')
        if key:
            core.Shortcut(parent.root, key=key, link=u'#{}'.format(key),
                          string=u'{} {}'.format(cap['prefix'].title(), cap['number']))
        return flt
    return parent
Esempio n. 4
0
 def postTokenize(self, ast, page, meta, reader):
     """Set float number for each counter."""
     for node in anytree.PreOrderIter(
             ast, filter_=lambda n: n.name == 'Caption'):
         prefix = node.get('prefix', None)
         if prefix is not None:
             meta.getData('counts')[prefix] += 1
             node['number'] = meta.getData('counts')[prefix]
         key = node.get('key')
         if key:
             core.Shortcut(ast.root,
                           key=key,
                           link=u'#{}'.format(key),
                           string=u'{} {}'.format(prefix.title(),
                                                  node['number']))
Esempio n. 5
0
    def postTokenize(self, ast, page, meta, reader):
        labels = set()
        count = 0
        func = lambda n: (n.name == 'LatexBlockEquation') and n['numbered']
        for node in anytree.PreOrderIter(ast, filter_=func):
            count += 1
            node.set('number', count)
            if node['label']:
                if isinstance(self.translator.renderer,
                              renderers.LatexRenderer):
                    labels.add(node['label'])
                else:
                    core.Shortcut(ast,
                                  key=node['label'],
                                  string='{} ({})'.format(
                                      self.get('prefix'), count),
                                  link=u'#{}'.format(node['bookmark']))

        meta.setData('labels', labels)
Esempio n. 6
0
    def postTokenize(self, ast, page, meta, reader):
        labels = set()
        count = 0
        func = lambda n: (n.name == 'LatexBlockEquation') and (n['label'] is
                                                               not None)
        for node in moosetree.iterate(ast, func):
            count += 1
            node['number'] = count
            if node['label']:
                if isinstance(self.translator.renderer,
                              renderers.LatexRenderer):
                    labels.add(node['label'])
                else:
                    core.Shortcut(ast,
                                  key=node['label'],
                                  string='{} ({})'.format(
                                      self.get('prefix'), count),
                                  link='#{}'.format(node['bookmark']))

        meta.setData('labels', labels)
Esempio n. 7
0
    def postTokenize(self, ast, page, meta, reader):
        """Set float number for each counter."""
        for node in moosetree.iterate(ast, lambda n: n.name == 'FloatCaption'):
            prefix = node.get('prefix', None)
            if prefix is not None:
                meta.getData('counts')[prefix] += 1
                node['number'] = meta.getData('counts')[prefix]
            key = node.get('key')
            if key:
                shortcut = core.Shortcut(ast.root,
                                         key=key,
                                         link='#{}'.format(key))

                # TODO: This is a bit of a hack to get Figure~\ref{} etc. working in general
                if isinstance(self.translator.renderer, LatexRenderer):
                    shortcut['prefix'] = prefix.title()
                else:
                    tokens.String(shortcut,
                                  content='{} {}'.format(
                                      prefix.title(), node['number']))