Beispiel #1
0
    def createLatex(self, parent, token, page):

        fname = token['src']
        if fname.startswith('http'):
            fname, errcode = self.extension.getOnlineMedia(parent, fname)
            if errcode:
                return parent

        else:
            dest = os.path.join(os.path.dirname(page.destination),
                                token['src'])
            dest = os.path.dirname(os.path.abspath(dest))
            fname, errcode = self.extension.convertImage(
                token['media_source'], '.png', dest)
            if errcode:
                return parent

        img = self.extension.latexImage(latex.Environment(parent, 'center'),
                                        token, fname)
        img['args'] = [
            latex.Bracket(string=u'width=\\textwidth', escape=False)
        ]
        return parent
Beispiel #2
0
    def _processPages(self, root):
        """
        Build a main latex file that includes the others.
        """

        main = base.NodeBase()
        latex.Command(main, 'documentclass', string=u'report', end='')
        for package in self._packages:
            latex.Command(main,
                          'usepackage',
                          string=package,
                          start='\n',
                          end='')

        func = lambda n: isinstance(n, page.MarkdownNode)
        nodes = [n for n in anytree.PreOrderIter(root, filter_=func)]
        for node in nodes:

            # If the parallel implementation was better this would not be needed.
            node.tokenize()
            node.render(node.ast)

            if node.depth == 1:
                title = latex.Command(main, 'title', start='\n')
                for child in node.result.children[0]:  #[0].children:
                    child.parent = title
                node.result.children[0].parent = None

        doc = latex.Environment(main, 'document', end='\n')
        latex.Command(doc, 'maketitle')
        for node in nodes:
            node.write()
            cmd = latex.Command(doc, 'input', start='\n')
            latex.String(cmd, content=unicode(node.destination), escape=False)

        return main
Beispiel #3
0
    def latexImage(self, parent, token, page, src):

        args = []
        style = latex.parse_style(token)
        width = style.get('width', None)
        if width:
            if width.endswith('%'):
                width = '{}\\textwidth'.format(int(width[:-1]) / 100.)
            args.append(
                latex.Bracket(string='width={}'.format(width), escape=False))

        if style.get('text-align', None) == 'center':
            env = latex.Environment(parent, 'center')
        else:
            env = parent

        node = self.translator.findPage(src)
        fname = os.path.join(self.translator.destination, node.local)
        img = latex.Command(env,
                            'includegraphics',
                            string=fname,
                            args=args,
                            escape=False)
        return img
Beispiel #4
0
 def createLatex(self, parent, token, page):
     return latex.Environment(parent, 'enumerate', after_begin='', after_end='', info=token.info)
Beispiel #5
0
 def createLatex(self, parent, token, page):
     args = [latex.Brace(string=token['label'])]
     return latex.Environment(parent, 'Requirement', args=args)
Beispiel #6
0
 def createLatex(self, parent, token, page):  #pylint: disable=no-self-use,unused-argument
     return latex.Environment(parent,
                              'quote',
                              after_begin='',
                              info=token.info)
Beispiel #7
0
 def testEnvironment(self):
     env = latex.Environment(None, 'foo')
     self.assertEqual(env.write(), '\n\\begin{foo}\n\n\\end{foo}\n')
Beispiel #8
0
 def createLatex(self, token, parent):  #pylint: disable=no-self-use,unused-argument
     return latex.Environment(parent, 'quote')
Beispiel #9
0
 def createLatex(self, token, parent):  #pylint: disable=no-self-use,unused-argument
     return latex.Environment(parent, 'verbatim', string=token.code)
Beispiel #10
0
 def createLatex(self, token, parent):  #pylint: disable=no-self-use,unused-argument
     return latex.Environment(parent,
                              'verbatim',
                              string=token.code,
                              after_begin='',
                              before_end='')
Beispiel #11
0
    def createLatex(self, parent, token, page):

        args = [latex.Brace(string='\\textwidth', escape=False),
                latex.Brace(string="".join([f[0].upper() for f in token['form']]))]
        return latex.Environment(parent, 'tabulary', start='\\par', args=args)